From e5ea4d5795bacca680d6a5038d5018ead7477fa6 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Tue, 16 Sep 2025 18:11:00 +0200 Subject: [PATCH 001/126] Backup script --- openrag/scripts/backup.py | 244 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 244 insertions(+) create mode 100644 openrag/scripts/backup.py diff --git a/openrag/scripts/backup.py b/openrag/scripts/backup.py new file mode 100644 index 000000000..8ea68dfec --- /dev/null +++ b/openrag/scripts/backup.py @@ -0,0 +1,244 @@ +#!/usr/bin/env python3 + +import sys +import os +import json + +from typing import Dict, Any, Tuple, Optional, List, IO + +from pymilvus import connections, Collection + +from utils.logger import get_logger +from components.indexer.vectordb.utils import PartitionFileManager + + +def dump_rdb_part( + out_fh: IO[str], + pfm: PartitionFileManager, + partitions: Dict[str, Dict[str, Any]], + logger: Any, + verbose: bool = False): + """ + Dumps relational DB data into the backup file: + - writes only requested partitions + - lines are groupped by partition + + Parameters: + out_fh: File handle opened for writing. + pfm: OpenRAG PartitionFileManager + partitions: Mapping of partition name -> partition metadata. + logger: Logger instance. + verbose: Be verbose. + + Returns: + None + """ + for part_name in sorted(partitions): + # Header + out_fh.write('rdb\n') + if verbose: + logger.info('Writting rdb data') + + # Partition details + out_fh.write(json.dumps({ 'name': part_name, 'created': partitions[part_name]['created_at'] }, ensure_ascii=False, sort_keys=True) + '\n') + + try: + files = pfm.list_partition_files(part_name) + except Exception as e: + logger.error(f'Failed while requesting the list of files in partition \'{part_name}\'\n{e}') + raise + + files['files'].sort(key=lambda v: v['file_id']) + + for f in files['files']: + f.pop('partition', None) + out_fh.write(json.dumps(f, ensure_ascii=False, sort_keys=True) + '\n') + + # Separator + out_fh.write('\n') + + if verbose: + logger.info(f'Partition \'{part_name}\' - {len(files["files"])} files') + + +def dump_vdb_part( + out_fh: IO[str], + collection: Collection, + partitions: Dict[str, Dict[str, Any]], + logger: Any, + batch_size: int = 1024, + verbose: bool = False): + """ + Dumps vector DB data into the backup file: + - writes one chunk per line + - writes only chunks belonging to partitions requested + - no particular order guaranteed + + Parameters: + out_fh: File handle opened for writing backup data. + collection: Milvus collection to query from. + partitions: Mapping of partition name -> partition metadata. + logger: Logger instance. + batch_size: Number of chunks per batch. + verbose: Be verbose. + + Returns: + None + """ + try: + collection.load() + except Exception as e: + logger.error(f'Failed while loading Milvus collection: {e}') + raise + + try: + iterator = collection.query_iterator( + batch_size=batch_size, # size of each batch + output_fields=["*"] # all fields + ) + except Exception as e: + logger.error(f'Failed while trying to obtain Milvus collection iterator: {e}') + raise + + out_fh.write('vdb\n') + if verbose: + logger.info('Writting vdb data') + cnt = 0 + + while True: + try: + batch = iterator.next() + except Exception as e: + logger.error(f'iterator.next() failed with: {e}') + raise + + if not batch: # no more data + break + + for entity in batch: + if entity['partition'] in partitions: + entity.pop('_id', None) + out_fh.write(json.dumps(entity, ensure_ascii=False, sort_keys=True) + '\n') + if verbose: + cnt += 1 + + if verbose: + logger.info(f'{cnt} chunks written') + + +def main(): + """ + Main entry point: + - Parses CLI arguments. + - Loads OpenRAG configuration. + - Connects to RDB (PostgreSQL) and VDB (Milvus). + - Retrieves and filters partitions. + - Dumps RDB and VDB data. + + Parameters: + None (arguments are parsed from sys.argv) + + Returns: + int: Exit code (0 on success, non-zero on failure). + """ + def load_openrag_config(logger): + """ + Loads OpenRAG configuration. + + Parameters: + logger: Logger instance. + + Returns: + tuple: + rdb (dict): Relational database configuration. + vdb (dict): Vector database configuration. + """ + from config import load_config + + try: + config = load_config() + except Exception as e: + logger.error(f'Failed while trying to obtain OpenRAG config: {e}') + raise + + return config['rdb'], config['vectordb'] + + + # Arguments and configs + import argparse + parser = argparse.ArgumentParser(description='OpenRAG backup tool') + parser.add_argument('-i', '--include-only', nargs='*', help='Include only listed partitions') + parser.add_argument('-o', '--output', required=True, help='Output file name') + parser.add_argument('-b', '--batch-size', default=1024, type=int, help='Batch size used to iterate Milvus') + parser.add_argument('-v', '--verbose', default=False, action='store_true', help='Be verbose') + + args = parser.parse_args() + + logger = get_logger() + + rdb, vdb = load_openrag_config(logger) + + if args.verbose: + logger.info(f'rdb @ {rdb["host"]}:{rdb["port"]} | vdb @ {vdb["host"]}:{vdb["port"]} | collection: {vdb["collection_name"]}') + + + # Open output file + if os.path.isfile(args.output): + logger.error(f'File \'{args.output}\' already exists.') + return -1 + + # List existing partitions + try: + pfm = PartitionFileManager( + database_url=f"postgresql://{rdb['user']}:{rdb['password']}@{rdb['host']}:{rdb['port']}/partitions_for_collection_{vdb['collection_name']}", + logger=logger, + ) + + partitions = pfm.list_partitions() + except Exception as e: + logger.error(f'Failed while accessing PartitionFileManager at {rdb["host"]}:{rdb["port"]}\n{e}') + raise + + if args.include_only: + partitions = [ item for item in partitions if item['partition'] in args.include_only ] + else: + partitions = [ item for item in partitions ] + + partitions = { item['partition']: item for item in partitions } + + if 0 == len(partitions): + logger.error(f'No paritions meet given conditions.') + return -1 + + if args.verbose: + partitions_str = ', '.join(partitions) + logger.info(f'partitions: {partitions_str}') + + + # Connect to Milvus + try: + connections.connect("default", host=vdb['host'], port=vdb['port']) + except Exception as e: + logger.error(f'Can\'t connect to Milvus at {vdb["host"]}:{vdb["port"]}\n{e}') + raise + + try: + vdb_collection = Collection(vdb['collection_name']) + except Exception as e: + logger.error(f'Can\'t access Milvus collection {vdb["collection_name"]} at {vdb["host"]}:{vdb["port"]}\n{e}') + raise + + with open(args.output, 'wt', encoding='utf-8') as out_fh: + # Dump data from RDB (one line per document) + dump_rdb_part(out_fh, pfm, partitions, logger, args.verbose) + + # Dump data from VDB (one line per chunk) + dump_vdb_part(out_fh, vdb_collection, partitions, logger, args.batch_size, args.verbose) + + + return 0 + + +if __name__ == '__main__': + sys.exit(main()) + From a7b580474bf61a54403e1a3baba7a3c8bec48da6 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Wed, 17 Sep 2025 12:13:34 +0200 Subject: [PATCH 002/126] Fix missprint --- openrag/scripts/backup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openrag/scripts/backup.py b/openrag/scripts/backup.py index 8ea68dfec..aef92ced0 100644 --- a/openrag/scripts/backup.py +++ b/openrag/scripts/backup.py @@ -207,7 +207,7 @@ def load_openrag_config(logger): partitions = { item['partition']: item for item in partitions } if 0 == len(partitions): - logger.error(f'No paritions meet given conditions.') + logger.error(f'No partitions meet given conditions.') return -1 if args.verbose: From fa8f9561ab9c6e240679dd3b81ab52925afa9cf2 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Fri, 19 Sep 2025 16:05:31 +0200 Subject: [PATCH 003/126] Fix 'include-only' logic --- openrag/scripts/backup.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/openrag/scripts/backup.py b/openrag/scripts/backup.py index aef92ced0..02359abe3 100644 --- a/openrag/scripts/backup.py +++ b/openrag/scripts/backup.py @@ -194,17 +194,20 @@ def load_openrag_config(logger): logger=logger, ) - partitions = pfm.list_partitions() + existing_partitions = { item['partition']: item for item in pfm.list_partitions() } except Exception as e: logger.error(f'Failed while accessing PartitionFileManager at {rdb["host"]}:{rdb["port"]}\n{e}') raise if args.include_only: - partitions = [ item for item in partitions if item['partition'] in args.include_only ] + partitions = {} + for part_name in args.include_only: + if part_name not in existing_partitions: + logger.error(f'Partition "{part_name}" has not been found.') + else: + partitions[part_name] = existing_partitions[part_name] else: - partitions = [ item for item in partitions ] - - partitions = { item['partition']: item for item in partitions } + partitions = existing_partitions if 0 == len(partitions): logger.error(f'No partitions meet given conditions.') From 466d50c6d2f5b56bdadbf8a7d89f3ee15aeb833a Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Fri, 19 Sep 2025 18:38:28 +0200 Subject: [PATCH 004/126] Script to restore backup --- openrag/scripts/restore.py | 193 +++++++++++++++++++++++++++++++++++++ 1 file changed, 193 insertions(+) create mode 100644 openrag/scripts/restore.py diff --git a/openrag/scripts/restore.py b/openrag/scripts/restore.py new file mode 100644 index 000000000..477964b8f --- /dev/null +++ b/openrag/scripts/restore.py @@ -0,0 +1,193 @@ +#!/usr/bin/env python3 + +import sys +import os +import json +import time + +from pymilvus import MilvusClient + +from config import load_config +from utils.logger import get_logger +from components.indexer.vectordb.utils import PartitionFileManager + + +def read_rdb_section(fh, pfm, include_only, added_documents, existing_partitions, logger, verbose=False, dry_run=False): + part = json.loads(next(fh)) + if part['name'] in existing_partitions: + raise Exception(f'Partition \"{part["name"]}\" already exists') + + if verbose: + logger.info(f'Read rdb section | partition=\"{part["name"]}\"') + + for line in fh: + line = line.strip() + + if 0 == len(line): + break + + if include_only is not None and len(include_only) > 0 and part['name'] not in include_only: + continue + + try: + doc = json.loads(line) + except Exception as e: + logger.exception(f'Failed while parsing the following json:\n{line}\n') + raise + + if not dry_run: + try: + res = pfm.add_file_to_partition(doc['file_id'], part['name'], doc) + except Exception as e: + logger.exception(f'{type(e)} in add_file_to_partition({doc["file_id"]}, {part["name"]}, ...)\n' + str(e)) + raise + else: + res = True + + if res: + if part['name'] not in added_documents: + added_documents[part['name']] = set() + added_documents[part['name']].add(doc['file_id']) + else: + logger.error(f'Can\'t add file {doc["file_id"]} to partition {part["name"]}') + + +def insert_into_vdb(client, collection_name, batch, logger, verbose=False, dry_run=False): + before = time.time() + try: + if not dry_run: + res = client.insert(collection_name=collection_name, data=batch) + except Exception as e: + logger.exception(f'{type(e)} in client.insert({collection_name}, {len(batch)} items)') + raise + elapsed = time.time() - before + if verbose: + logger.info(f'Inserting {len(batch)} items took {elapsed:.2f}s') + + +def read_vdb_section(fh, collection_name, added_documents, client, batch_size, logger, verbose=False, dry_run=False): + if verbose: + logger.info(f'Read vdb section') + + batch = [] + for line in fh: + # End of section + if 0 == len(line): + break + + if len(batch) >= batch_size: + insert_into_vdb(client, collection_name, batch, logger, verbose, dry_run) + batch = [] + + chunk = json.loads(line) + + if chunk['partition'] in added_documents and chunk['file_id'] in added_documents[chunk['partition']]: + chunk.pop('_id', None) + batch.append(chunk) + + if len(batch) > 0: + insert_into_vdb(client, collection_name, batch, logger, verbose, dry_run) + + +def main(): + """ + Main entry point: + - Parses CLI arguments. + - Loads OpenRAG configuration. + - Connects to RDB (PostgreSQL) and VDB (Milvus). + - Retrieves and filters partitions. + - Dumps RDB and VDB data. + + Parameters: + None (arguments are parsed from sys.argv) + + Returns: + int: Exit code (0 on success, non-zero on failure). + """ + def load_openrag_config(logger): + """ + Loads OpenRAG configuration. + + Parameters: + logger: Logger instance. + + Returns: + tuple: + rdb (dict): Relational database configuration. + vdb (dict): Vector database configuration. + """ + from config import load_config + + try: + config = load_config() + except Exception as e: + logger.error(f'Failed while trying to obtain OpenRAG config: {e}') + raise + + return config['rdb'], config['vectordb'] + + + # Arguments and configs + import argparse + parser = argparse.ArgumentParser(description='OpenRAG restore from backup tool') + parser.add_argument('-i', '--include-only', nargs='*', help='Include only listed partitions') + parser.add_argument('-b', '--batch-size', default=1024, type=int, help='Batch size used to iterate Milvus') + parser.add_argument('-v', '--verbose', default=False, action='store_true', help='Be verbose') + parser.add_argument('-d', '--dry-run', default=False, action='store_true', help='Don\'t change the target database') + parser.add_argument('input', help='input file name') + + + args = parser.parse_args() + + logger = get_logger() + + rdb, vdb = load_openrag_config(logger) + + if args.verbose: + logger.info(f'rdb @ {rdb["host"]}:{rdb["port"]} | vdb @ {vdb["host"]}:{vdb["port"]} | collection: {vdb["collection_name"]}') + + + # List existing partitions + try: + pfm = PartitionFileManager( + database_url=f"postgresql://{rdb['user']}:{rdb['password']}@{rdb['host']}:{rdb['port']}/partitions_for_collection_{vdb['collection_name']}", + logger=logger, + ) + + existing_partitions = { item['partition']: item for item in pfm.list_partitions() } + except Exception as e: + logger.error(f'Failed while accessing PartitionFileManager at {rdb["host"]}:{rdb["port"]}\n{e}') + raise + + + if args.include_only: + for part_name in args.include_only: + if part_name in existing_partitions: + logger.error(f'Partition "{part_name}" already exists') + return -1 + + + client = MilvusClient(uri=f"http://{vdb['host']}:{vdb['port']}") + + if args.input.endswith('.xz'): + import lzma + fh = lzma.open(args.input, 'rt', encoding='utf-8') + else: + fh = open(args.input, 'rt', encoding='utf-8') + + + added_documents = {} + + for line in fh: + line = line.strip() + + if line in [ 'rdb' ]: + read_rdb_section(fh, pfm, args.include_only, added_documents, existing_partitions, logger, args.verbose, args.dry_run) + + if line in [ 'vdb' ]: + read_vdb_section(fh, vdb['collection_name'], added_documents, client, args.batch_size, logger, args.verbose, args.dry_run) + + +if __name__ == '__main__': + sys.exit(main()) + From fd65b61e5ed7be4f88970e6a136027da91534f90 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Mon, 22 Sep 2025 17:07:54 +0200 Subject: [PATCH 005/126] Better error handling --- openrag/scripts/restore.py | 104 ++++++++++++++++++++++++++++++------- 1 file changed, 84 insertions(+), 20 deletions(-) diff --git a/openrag/scripts/restore.py b/openrag/scripts/restore.py index 477964b8f..36ab061b7 100644 --- a/openrag/scripts/restore.py +++ b/openrag/scripts/restore.py @@ -1,19 +1,36 @@ #!/usr/bin/env python3 import sys -import os import json import time from pymilvus import MilvusClient -from config import load_config from utils.logger import get_logger from components.indexer.vectordb.utils import PartitionFileManager def read_rdb_section(fh, pfm, include_only, added_documents, existing_partitions, logger, verbose=False, dry_run=False): - part = json.loads(next(fh)) + """ + Reads and restores a relational database (RDB) section from the backup file. + + Parameters: + fh: Backup file handle (already open for reading). + pfm: Manager for handling partition operations. + include_only: List of partitions to include; if None, all are processed. + added_documents: Dict mapping added partitions to sets of added file IDs. + existing_partitions: Dict of already existing partitions to avoid duplicates. + logger: Logger for status and error reporting. + verbose: If True, logs additional info. + dry_run: If True, no changes are made to the database. + """ + try: + line = next(fh) + part = json.loads(line) + except Exception as e: + logger.exception(f'Failed while parsing the following json:\n{line}\n' + str(e)) + raise + if part['name'] in existing_partitions: raise Exception(f'Partition \"{part["name"]}\" already exists') @@ -32,7 +49,7 @@ def read_rdb_section(fh, pfm, include_only, added_documents, existing_partitions try: doc = json.loads(line) except Exception as e: - logger.exception(f'Failed while parsing the following json:\n{line}\n') + logger.exception(f'Failed while parsing the following json:\n{line}\n' + str(e)) raise if not dry_run: @@ -53,10 +70,23 @@ def read_rdb_section(fh, pfm, include_only, added_documents, existing_partitions def insert_into_vdb(client, collection_name, batch, logger, verbose=False, dry_run=False): + """ + Inserts a batch of chunks into the vector database. + + Parameters: + client: Milvus client instance. + collection_name: Target collection name. + batch: List of chunks to insert. + logger: Logger for status and error reporting. + verbose: If True, logs additional info. + dry_run: If True, skips actual insertion. + """ before = time.time() try: if not dry_run: res = client.insert(collection_name=collection_name, data=batch) + if 'insert_count' not in res or res['insert_count'] != len(batch): + raise Exception(f'Unexpected number of items inserted: \'insert_count\'=={res["insert_count"]} with len(batch)=={len(batch)}') except Exception as e: logger.exception(f'{type(e)} in client.insert({collection_name}, {len(batch)} items)') raise @@ -66,6 +96,19 @@ def insert_into_vdb(client, collection_name, batch, logger, verbose=False, dry_r def read_vdb_section(fh, collection_name, added_documents, client, batch_size, logger, verbose=False, dry_run=False): + """ + Reads and restores a vector database (VDB) section from the backup file. + + Parameters: + fh: Backup file handle (already open for reading). + collection_name: Target VDB collection name. + added_documents: Dict mapping partitions to sets of file IDs that were successfully added in RDB. + client: Milvus client instance. + batch_size: Number of documents per batch insert. + logger: Logger for status and error reporting. + verbose: If True, logs additional info. + dry_run: If True, no changes are made to the database. + """ if verbose: logger.info(f'Read vdb section') @@ -89,14 +132,35 @@ def read_vdb_section(fh, collection_name, added_documents, client, batch_size, l insert_into_vdb(client, collection_name, batch, logger, verbose, dry_run) +def open_backup_file(file_name, logger): + """ + Opens a backup file for reading, with support for plain text and LZMA-compressed (.xz) files. + + Parameters: + file_name: Path to the backup file. + logger: Logger for status and error reporting. + + Returns: + file object: Opened file handle in text mode. + """ + try: + if file_name.endswith('.xz'): + import lzma + return lzma.open(file_name, 'rt', encoding='utf-8') + else: + return open(file_name, 'rt', encoding='utf-8') + except Exception as e: + logger.error(f'Failed while opening file \'{file_name}\' for reading:\n' + str(e)) + raise + + def main(): """ Main entry point: - Parses CLI arguments. - Loads OpenRAG configuration. - Connects to RDB (PostgreSQL) and VDB (Milvus). - - Retrieves and filters partitions. - - Dumps RDB and VDB data. + - Restores RDB and VDB data. Parameters: None (arguments are parsed from sys.argv) @@ -164,28 +228,28 @@ def load_openrag_config(logger): for part_name in args.include_only: if part_name in existing_partitions: logger.error(f'Partition "{part_name}" already exists') - return -1 + return 1 client = MilvusClient(uri=f"http://{vdb['host']}:{vdb['port']}") - if args.input.endswith('.xz'): - import lzma - fh = lzma.open(args.input, 'rt', encoding='utf-8') - else: - fh = open(args.input, 'rt', encoding='utf-8') - + try: + with open_backup_file(args.input, logger) as fh: + added_documents = {} - added_documents = {} + for line in fh: + line = line.strip() - for line in fh: - line = line.strip() + if line in [ 'rdb' ]: + read_rdb_section(fh, pfm, args.include_only, added_documents, existing_partitions, logger, args.verbose, args.dry_run) - if line in [ 'rdb' ]: - read_rdb_section(fh, pfm, args.include_only, added_documents, existing_partitions, logger, args.verbose, args.dry_run) + if line in [ 'vdb' ]: + read_vdb_section(fh, vdb['collection_name'], added_documents, client, args.batch_size, logger, args.verbose, args.dry_run) + except Exception as e: + client.close() + logger.error(f'Error: ' + str(e)) - if line in [ 'vdb' ]: - read_vdb_section(fh, vdb['collection_name'], added_documents, client, args.batch_size, logger, args.verbose, args.dry_run) + client.close() if __name__ == '__main__': From 289affc643c3dd33a401121153ce99855a3cdde7 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Mon, 22 Sep 2025 17:14:50 +0200 Subject: [PATCH 006/126] Add block --- openrag/scripts/restore.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openrag/scripts/restore.py b/openrag/scripts/restore.py index 36ab061b7..9d7e8c8f3 100644 --- a/openrag/scripts/restore.py +++ b/openrag/scripts/restore.py @@ -246,10 +246,10 @@ def load_openrag_config(logger): if line in [ 'vdb' ]: read_vdb_section(fh, vdb['collection_name'], added_documents, client, args.batch_size, logger, args.verbose, args.dry_run) except Exception as e: - client.close() logger.error(f'Error: ' + str(e)) - - client.close() + raise + finally: + client.close() if __name__ == '__main__': From fc6fd0ac087505dca58f344dfa78734bdd260707 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Mon, 22 Sep 2025 17:24:57 +0200 Subject: [PATCH 007/126] Add type annotation --- openrag/scripts/restore.py | 40 +++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/openrag/scripts/restore.py b/openrag/scripts/restore.py index 9d7e8c8f3..0be5771db 100644 --- a/openrag/scripts/restore.py +++ b/openrag/scripts/restore.py @@ -4,13 +4,24 @@ import json import time +from typing import IO, Any, Dict, List, Optional, Set, Tuple + from pymilvus import MilvusClient from utils.logger import get_logger from components.indexer.vectordb.utils import PartitionFileManager -def read_rdb_section(fh, pfm, include_only, added_documents, existing_partitions, logger, verbose=False, dry_run=False): +def read_rdb_section( + fh: IO[str], + pfm: PartitionFileManager, + include_only: Optional[List[str]], + added_documents: Dict[str, Set[str]], + existing_partitions: Dict[str, Any], + logger: Any, + verbose: bool = False, + dry_run: bool = False + ) -> None: """ Reads and restores a relational database (RDB) section from the backup file. @@ -69,7 +80,14 @@ def read_rdb_section(fh, pfm, include_only, added_documents, existing_partitions logger.error(f'Can\'t add file {doc["file_id"]} to partition {part["name"]}') -def insert_into_vdb(client, collection_name, batch, logger, verbose=False, dry_run=False): +def insert_into_vdb( + client: MilvusClient, + collection_name: str, + batch: list, + logger: Any, + verbose: bool = False, + dry_run: bool = False + ) -> None: """ Inserts a batch of chunks into the vector database. @@ -95,7 +113,16 @@ def insert_into_vdb(client, collection_name, batch, logger, verbose=False, dry_r logger.info(f'Inserting {len(batch)} items took {elapsed:.2f}s') -def read_vdb_section(fh, collection_name, added_documents, client, batch_size, logger, verbose=False, dry_run=False): +def read_vdb_section( + fh: IO[str], + collection_name: str, + added_documents: Dict[str, Set[str]], + client: MilvusClient, + batch_size int, + logger: Any, + verbose: bool = False, + dry_run: bool = False + ) -> None: """ Reads and restores a vector database (VDB) section from the backup file. @@ -132,7 +159,10 @@ def read_vdb_section(fh, collection_name, added_documents, client, batch_size, l insert_into_vdb(client, collection_name, batch, logger, verbose, dry_run) -def open_backup_file(file_name, logger): +def open_backup_file( + file_name: str, + logger: Any + ) -> IO[str]: """ Opens a backup file for reading, with support for plain text and LZMA-compressed (.xz) files. @@ -168,7 +198,7 @@ def main(): Returns: int: Exit code (0 on success, non-zero on failure). """ - def load_openrag_config(logger): + def load_openrag_config(logger: Any) -> Tuple[Dict[str, Any], Dict[str, Any]]: """ Loads OpenRAG configuration. From a619d2ed9725fa7ab275321722efc46314e10381 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Mon, 22 Sep 2025 17:27:45 +0200 Subject: [PATCH 008/126] fix missprint --- openrag/scripts/restore.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openrag/scripts/restore.py b/openrag/scripts/restore.py index 0be5771db..e9b951ec3 100644 --- a/openrag/scripts/restore.py +++ b/openrag/scripts/restore.py @@ -118,7 +118,7 @@ def read_vdb_section( collection_name: str, added_documents: Dict[str, Set[str]], client: MilvusClient, - batch_size int, + batch_size: int, logger: Any, verbose: bool = False, dry_run: bool = False From 6026e8dcd51259cd39be65fce06aff4f1e53d18b Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Mon, 22 Sep 2025 17:29:48 +0200 Subject: [PATCH 009/126] Check 'batch_size > 0' --- openrag/scripts/restore.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openrag/scripts/restore.py b/openrag/scripts/restore.py index e9b951ec3..bd3363463 100644 --- a/openrag/scripts/restore.py +++ b/openrag/scripts/restore.py @@ -136,6 +136,8 @@ def read_vdb_section( verbose: If True, logs additional info. dry_run: If True, no changes are made to the database. """ + assert(batch_size > 0) + if verbose: logger.info(f'Read vdb section') From 4ecb9e16bb2619565f606f071306193263620cec Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Tue, 23 Sep 2025 10:21:55 +0200 Subject: [PATCH 010/126] Fix missprint --- openrag/scripts/backup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openrag/scripts/backup.py b/openrag/scripts/backup.py index 02359abe3..f027cf3b9 100644 --- a/openrag/scripts/backup.py +++ b/openrag/scripts/backup.py @@ -37,7 +37,7 @@ def dump_rdb_part( # Header out_fh.write('rdb\n') if verbose: - logger.info('Writting rdb data') + logger.info('Writing rdb data') # Partition details out_fh.write(json.dumps({ 'name': part_name, 'created': partitions[part_name]['created_at'] }, ensure_ascii=False, sort_keys=True) + '\n') @@ -102,7 +102,7 @@ def dump_vdb_part( out_fh.write('vdb\n') if verbose: - logger.info('Writting vdb data') + logger.info('Writing vdb data') cnt = 0 while True: From 878ca8c3b0f0b3cb391be297d29f993e19ce6574 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Tue, 23 Sep 2025 18:01:17 +0200 Subject: [PATCH 011/126] Backup to .xz and to STDOUT --- openrag/scripts/backup.py | 57 ++++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 12 deletions(-) diff --git a/openrag/scripts/backup.py b/openrag/scripts/backup.py index f027cf3b9..07776d3e1 100644 --- a/openrag/scripts/backup.py +++ b/openrag/scripts/backup.py @@ -126,6 +126,37 @@ def dump_vdb_part( logger.info(f'{cnt} chunks written') +def open_output_file( + file_name: str, + logger: Any + ) -> IO[str]: + """ + Opens output file for writing + + Parameters: + file_name: Path to the output file or '-' for STDOUT + logger: Logger for status and error reporting. + + Returns: + file object: Opened file handle in text mode. + """ + if file_name in [ '-' ]: + return sys.stdout + + if os.path.isfile(file_name): + raise Exception(f'File \'{file_name}\' already exists.') + + try: + if file_name.endswith('.xz'): + import lzma + return lzma.open(file_name, 'wt', encoding='utf-8', preset=9 | lzma.PRESET_EXTREME) + else: + return open(file_name, 'wt', encoding='utf-8') + except Exception as e: + logger.error(f'Failed while opening file \'{file_name}\' for writing:\n' + str(e)) + raise + + def main(): """ Main entry point: @@ -168,7 +199,7 @@ def load_openrag_config(logger): import argparse parser = argparse.ArgumentParser(description='OpenRAG backup tool') parser.add_argument('-i', '--include-only', nargs='*', help='Include only listed partitions') - parser.add_argument('-o', '--output', required=True, help='Output file name') + parser.add_argument('-o', '--output', required=True, help='Output file name (- for STDOUT)') parser.add_argument('-b', '--batch-size', default=1024, type=int, help='Batch size used to iterate Milvus') parser.add_argument('-v', '--verbose', default=False, action='store_true', help='Be verbose') @@ -182,11 +213,6 @@ def load_openrag_config(logger): logger.info(f'rdb @ {rdb["host"]}:{rdb["port"]} | vdb @ {vdb["host"]}:{vdb["port"]} | collection: {vdb["collection_name"]}') - # Open output file - if os.path.isfile(args.output): - logger.error(f'File \'{args.output}\' already exists.') - return -1 - # List existing partitions try: pfm = PartitionFileManager( @@ -211,7 +237,7 @@ def load_openrag_config(logger): if 0 == len(partitions): logger.error(f'No partitions meet given conditions.') - return -1 + return 1 if args.verbose: partitions_str = ', '.join(partitions) @@ -231,12 +257,19 @@ def load_openrag_config(logger): logger.error(f'Can\'t access Milvus collection {vdb["collection_name"]} at {vdb["host"]}:{vdb["port"]}\n{e}') raise - with open(args.output, 'wt', encoding='utf-8') as out_fh: - # Dump data from RDB (one line per document) - dump_rdb_part(out_fh, pfm, partitions, logger, args.verbose) - # Dump data from VDB (one line per chunk) - dump_vdb_part(out_fh, vdb_collection, partitions, logger, args.batch_size, args.verbose) + try: + with open_output_file(args.output, logger) as out_fh: + # Dump data from RDB (one line per document) + dump_rdb_part(out_fh, pfm, partitions, logger, args.verbose) + + # Dump data from VDB (one line per chunk) + dump_vdb_part(out_fh, vdb_collection, partitions, logger, args.batch_size, args.verbose) + + out_fh.flush() + except Exception as e: + logger.exception(f'ERROR: ' + str(e)) + return 1 return 0 From fe55478500be710cb3f1fc4900e8fd311f47e825 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Tue, 23 Sep 2025 18:09:08 +0200 Subject: [PATCH 012/126] Backup scripts --- openrag/scripts/backup.sh.example | 13 +++++++++++++ openrag/scripts/entrypoint-backup-mt.sh | 12 ++++++++++++ openrag/scripts/entrypoint-backup.sh | 7 +++++++ openrag/scripts/entrypoint-restore-dry-run.sh | 7 +++++++ openrag/scripts/entrypoint-restore.sh | 7 +++++++ openrag/scripts/restore.sh.example | 14 ++++++++++++++ 6 files changed, 60 insertions(+) create mode 100644 openrag/scripts/backup.sh.example create mode 100755 openrag/scripts/entrypoint-backup-mt.sh create mode 100755 openrag/scripts/entrypoint-backup.sh create mode 100644 openrag/scripts/entrypoint-restore-dry-run.sh create mode 100644 openrag/scripts/entrypoint-restore.sh create mode 100644 openrag/scripts/restore.sh.example diff --git a/openrag/scripts/backup.sh.example b/openrag/scripts/backup.sh.example new file mode 100644 index 000000000..15107eb64 --- /dev/null +++ b/openrag/scripts/backup.sh.example @@ -0,0 +1,13 @@ +#!/bin/bash + +OUTPUT_DIR=$1 +PARTITION_NAME=$2 + +docker compose \ + run \ + --build \ + --rm \ + -v ${OUTPUT_DIR}:/backup:rw \ + --entrypoint "bash /app/openrag/scripts/entrypoint-backup.sh ${PARTITION_NAME}" \ + openrag-cpu + diff --git a/openrag/scripts/entrypoint-backup-mt.sh b/openrag/scripts/entrypoint-backup-mt.sh new file mode 100755 index 000000000..01dd81344 --- /dev/null +++ b/openrag/scripts/entrypoint-backup-mt.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +PARTITION_NAME=$1 +OUTPUT_FILE=/backup/${PARTITION_NAME}.openrag.mt.xz + +if [ -f ${OUTPUT_FILE} ]; then + echo "Error: File ${OUTPUT_FILE} already exists." > &2 + exit 1 +fi + +uv run /app/openrag/scripts/backup.py --include-only=${PARTITION_NAME} --output - | xz -9ec -T 0 --memlimit=20% > ${OUTPUT_FILE} + diff --git a/openrag/scripts/entrypoint-backup.sh b/openrag/scripts/entrypoint-backup.sh new file mode 100755 index 000000000..27eac9907 --- /dev/null +++ b/openrag/scripts/entrypoint-backup.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +PARTITION_NAME=$1 +OUTPUT_FILE=/backup/${PARTITION_NAME}.openrag + +uv run /app/openrag/scripts/backup.py --include-only=${PARTITION_NAME} --output ${OUTPUT_FILE} + diff --git a/openrag/scripts/entrypoint-restore-dry-run.sh b/openrag/scripts/entrypoint-restore-dry-run.sh new file mode 100644 index 000000000..7bb4c126e --- /dev/null +++ b/openrag/scripts/entrypoint-restore-dry-run.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +PARTITION_NAME=$1 +BACKUP_FILE=$2 + +uv run /app/openrag/scripts/restore.py --include-only=${PARTITION_NAME} --batch-size 8192 --dry-run ${BACKUP_FILE} + diff --git a/openrag/scripts/entrypoint-restore.sh b/openrag/scripts/entrypoint-restore.sh new file mode 100644 index 000000000..bf0975bde --- /dev/null +++ b/openrag/scripts/entrypoint-restore.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +PARTITION_NAME=$1 +BACKUP_FILE=$2 + +uv run /app/openrag/scripts/restore.py --include-only=${PARTITION_NAME} --batch-size 8192 ${BACKUP_FILE} + diff --git a/openrag/scripts/restore.sh.example b/openrag/scripts/restore.sh.example new file mode 100644 index 000000000..9d2f69a6a --- /dev/null +++ b/openrag/scripts/restore.sh.example @@ -0,0 +1,14 @@ +#!/bin/bash + +BACKUP_DIR=$1 +BACKUP_FILE=$2 +PARTITION_NAME=$3 + +docker compose \ + run \ + --build \ + --rm \ + -v ${BACKUP_DIR}:/backup:ro \ + --entrypoint "bash /app/openrag/scripts/entrypoint-restore.sh ${BACKUP_FILE} ${PARTITION_NAME}" \ + openrag-cpu + From af4abeb1e0bbd51c477ec46ab3f450f4e1f085b0 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Tue, 23 Sep 2025 21:23:02 +0200 Subject: [PATCH 013/126] Readme --- README-backup.md | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 README-backup.md diff --git a/README-backup.md b/README-backup.md new file mode 100644 index 000000000..cb28b61e9 --- /dev/null +++ b/README-backup.md @@ -0,0 +1,53 @@ + +# How to backup OpenRag partition ? + + +``` +docker compose \ + run \ + --build \ + --rm \ + -v /my-backup-dir/:/backup:rw \ + --entrypoint "bash /app/openrag/scripts/entrypoint-backup.sh ${PARTITION_NAME}" \ + openrag-cpu +``` +It's better to stop `openrag-cpu` (or `openrag`) service before starting backup. + +By default backup script creates plan text uncomressed file. To make things faster you can use multithread compressor the following way: + +``` +docker compose \ + run \ + --build \ + --rm \ + -v /my-backup-dir/:/backup:rw \ + --entrypoint "bash /app/openrag/scripts/entrypoint-backup-mt.sh ${PARTITION_NAME}" \ + openrag-cpu +``` + + +# How to restore OpenRag partition ? + +Start with dry run to ensure the backup file is correct: + +``` +docker compose \ + run \ + --build \ + --rm \ + -v /my-backup-dir/:/backup:ro \ + --entrypoint "bash /app/openrag/scripts/entrypoint-restore-dry-run.sh backup-file-without-path parition-name" \ + openrag-cpu +``` +Backup files are expected to be in `/my-backup-dir/`. If the dry run is successful, run the following script to insert the data : + +``` +docker compose \ + run \ + --build \ + --rm \ + -v /my-backup-dir/:/backup:ro \ + --entrypoint "bash /app/openrag/scripts/entrypoint-restore.sh backup-file-without-path parition-name" \ + openrag-cpu +``` + From 58cc585bbfa79043015b34592dfc56bd8c613d86 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Wed, 24 Sep 2025 09:03:07 +0000 Subject: [PATCH 014/126] Implementing Map & Reduce strategy --- .hydra_config/config.yaml | 4 +- openrag/components/grader.py | 88 -------------------------------- openrag/components/map_reduce.py | 24 +++++---- openrag/components/pipeline.py | 74 ++++++++++++--------------- openrag/models/openai.py | 6 +++ 5 files changed, 54 insertions(+), 142 deletions(-) delete mode 100644 openrag/components/grader.py diff --git a/.hydra_config/config.yaml b/.hydra_config/config.yaml index ffa03de78..812cc70d4 100644 --- a/.hydra_config/config.yaml +++ b/.hydra_config/config.yaml @@ -52,8 +52,8 @@ reranker: top_k: ${oc.decode:${oc.env:RERANKER_TOP_K, 5}} # Number of documents to return after reranking. upgrade to 8 for better results if your llm has a wider context window base_url: ${oc.env:RERANKER_BASE_URL, http://reranker:${oc.env:RERANKER_PORT, 7997}} -grader: - enable: false +map_reduce: + map_reduce_n_docs: ${oc.decode:${oc.env:MAP_REDUCE_N_DOCS, 10}} # Number of documents to use in map-reduce verbose: verbose: true diff --git a/openrag/components/grader.py b/openrag/components/grader.py deleted file mode 100644 index 5cb036e93..000000000 --- a/openrag/components/grader.py +++ /dev/null @@ -1,88 +0,0 @@ -import asyncio -from typing import Literal - -from langchain_core.documents.base import Document -from langchain_core.prompts import ChatPromptTemplate -from langchain_openai import ChatOpenAI -from pydantic import BaseModel, Field - -from .utils import get_llm_semaphore - -sys_prompt = """You are a seasoned expert in assessing document relevance. Your task is to evaluate documents carefully against a user's query by considering their semantics, context, and keyword significance. Your expert judgment ensures that only truly pertinent documents are flagged as relevant.""" - - -class DocumentGrade(BaseModel): - """ - Evaluates a document's relevance with respect to a user's query. - - This model guides you to assess whether a document is pertinent by analyzing: - - Semantic alignment with the query - - Contextual relevance - - Presence and significance of key terms - - The evaluation assigns one of two scores: - - "highly_relevant": The document meaningfully addresses the query. - - "irrelevant": The document does not adequately address the query. - - Use this framework to ensure that only documents with strong relevance pass the evaluation. - """ - - relevance_score: Literal["highly_relevant", "irrelevant"] = Field( - description="Classification of document relevance based on semantic and contextual analysis." - ) - - -class Grader: - def __init__(self, config, logger=None): - llm: ChatOpenAI = ChatOpenAI(**config.llm) - self.sllm = llm.with_structured_output(DocumentGrade) - self.logger = logger - - async def _grade_doc(self, user_input, doc: Document): - async with get_llm_semaphore(): - try: - query_template = ( - """User query: {user_input}\n""" - """Retrieved Document: {content}""" - ) - - template = ChatPromptTemplate.from_messages( - [("system", sys_prompt), ("user", query_template)] - ) - # Create a PromptValue from the template - prompt_value = template.invoke( - {"user_input": user_input, "content": doc.page_content} - ) - result: DocumentGrade = await self.sllm.ainvoke(prompt_value) - - return result.relevance_score - except Exception as e: - self.logger.debug( - f"An Exception occured. Couldn't grade this document: {e}" - ) - - async def grade_docs(self, user_input: str, docs: list[Document], batch_size=6): - """ - Grades a list of documents based on their relevancy to the user input. - - Args: - user_input (str): The input string provided by the user. - docs (list[Document]): A list of Document objects to be graded. - batch_size (int, optional): The number of documents to process in a batch. Defaults to 6. - - Returns: - list[Document]: A list of relevant Document objects. - """ - batch_size = min(batch_size, len(docs)) - self.logger.debug("Documents to assess relevancy", document_count=len(docs)) - - tasks = [self._grade_doc(user_input=user_input, doc=d) for d in docs] - grades: list[DocumentGrade] = await asyncio.gather(*tasks) - - # Filter out irrelevant documents - relevant_docs = list( - filter(lambda doc_grade: doc_grade[1] != "irrelevant", zip(docs, grades)) - ) - relevant_docs = [doc for doc, _ in relevant_docs] - self.logger.debug("Relevant documents found", document_count=len(relevant_docs)) - return relevant_docs diff --git a/openrag/components/map_reduce.py b/openrag/components/map_reduce.py index 1a64f8962..24121cfce 100644 --- a/openrag/components/map_reduce.py +++ b/openrag/components/map_reduce.py @@ -7,16 +7,17 @@ logger = get_logger() -system_prompt_map = """ -Vous êtes un modèle de langage spécialisé dans l’analyse et la synthèse d’informations. Ton rôle est d’examiner un texte fourni et d’en extraire les éléments nécessaires pour répondre à une question utilisateur. -Analyse le texte en profondeur. -Synthétise les informations essentielles qui peuvent aider à répondre à la requête. +system_prompt_map = """Vous êtes un modèle de langage spécialisé dans l’analyse et la synthèse d’informations. +Ton rôle est d’examiner un texte fourni et d’en extraire les éléments nécessaires pour répondre à une question de l'utilisateur en gardant des éléments de contexte. +Analyse le texte en profondeur, synthétise les informations essentielles qui peuvent aider à répondre à la requête. Si le texte ne contient aucune donnée pertinente pour répondre à la question, réponds simplement : "Not pertinent" et n'ajoute pas de commentaires. + +Les sections « Références » d’une page qui n’apportent aucune information utile à la question ne doivent pas être considérées comme pertinentes. """ -system_prompt_reduce = """ -Vous êtes un assistant conversationnel IA spécialisé dans la recherche et la synthèse d'informations. Votre objectif est de fournir des réponses précises, fiables et bien structurées en utilisant exclusivement les documents récupérés (Contexte). Priorisez la clarté et l'exactitude dans vos réponses. +system_prompt_reduce = """Vous êtes un assistant conversationnel IA spécialisé dans la recherche et la synthèse d'informations. Votre objectif est de fournir des réponses précises, fiables et bien structurées en utilisant exclusivement les documents récupérés (Contexte). +Priorisez la clarté et l'exactitude dans vos réponses. Voici les règles à suivre : - Répondez dans la langue de la requête de l'utilisateur. - Utilisez uniquement les informations contenues dans le Contexte. Ne faites jamais d'inférences, de suppositions ou ne vous basez pas sur des connaissances externes. @@ -40,6 +41,7 @@ def __init__(self, config): base_url=self.config.llm["base_url"], api_key=self.config.llm["api_key"] ) self.model = self.config.llm["model"] + self.map_reduce_n_docs = self.config.map_reduce["map_reduce_n_docs"] async def infer_llm_map(self, query, chunk: Document): async with get_llm_semaphore(): @@ -63,23 +65,23 @@ async def infer_llm_map(self, query, chunk: Document): return relevancy, resp async def map(self, query: str, chunks: list[Document]): + chunks = chunks[: self.map_reduce_n_docs] logger.debug("Running map reduce", chunk_count=len(chunks), query=query) tasks = [self.infer_llm_map(query, chunk) for chunk in chunks] output = await tqdm.gather( - *tasks, desc="MAP_REDUCE Processing chunks", total=len(chunks) + *tasks, desc="Map & Reduce processing chunks", total=len(chunks) ) - relevant_chunks_syntheses = [ + chunks_summaries = [ (synthesis, chunk) for chunk, (relevancy, synthesis) in zip(chunks, output) if relevancy ] logger.debug( "Map reduce completed", - relevant_chunk_count=len(relevant_chunks_syntheses), + relevant_chunks_count=len(chunks_summaries), query=query, ) - # final_response = await infer_llm_reduce("\n".join(syntheses)) - return relevant_chunks_syntheses + return chunks_summaries # async def infer_llm_reduce(text): diff --git a/openrag/components/pipeline.py b/openrag/components/pipeline.py index 3d47f6272..a2648c5f4 100644 --- a/openrag/components/pipeline.py +++ b/openrag/components/pipeline.py @@ -1,5 +1,4 @@ import copy -import os from enum import Enum from pathlib import Path @@ -7,7 +6,6 @@ from openai import AsyncOpenAI from utils.logger import get_logger -from .grader import Grader from .llm import LLM from .map_reduce import RAGMapReduce from .reranker import Reranker @@ -22,9 +20,6 @@ class RAGMODE(Enum): CHATBOTRAG = "ChatBotRag" -RAG_MAP_REDUCE = os.environ.get("RAG_MAP_REDUCE", "false").lower() == "true" - - class RetrieverPipeline: def __init__(self, config, logger=None) -> None: self.config = config @@ -38,37 +33,32 @@ def __init__(self, config, logger=None) -> None: # reranker self.reranker = None self.reranker_enabled = config.reranker["enable"] + self.logger.debug("Reranker", enabled=self.reranker_enabled) self.reranker_top_k = int(config.reranker["top_k"]) + # map reduce + self.map_reduce_n_docs = self.config.map_reduce["map_reduce_n_docs"] + if self.reranker_enabled: - self.logger.debug("Reranker enabled", reranker=self.reranker_enabled) self.reranker = Reranker(self.logger, config) - # grader - self.grader: Grader = None - self.grader_enabled = config.grader["enable"] - if self.grader_enabled: - self.grader = Grader(config, logger=self.logger) - - async def retrieve_docs(self, partition: list[str], query: str) -> list[Document]: + async def retrieve_docs( + self, partition: list[str], query: str, use_map_reduce: bool = False + ) -> list[Document]: docs = await self.retriever.retrieve(partition=partition, query=query) + top_k = ( + max(self.map_reduce_n_docs, self.reranker_top_k) + if use_map_reduce + else self.reranker_top_k + ) logger.debug("Documents retreived", document_count=len(docs)) if docs: - # grade and filter out irrelevant docs - if self.grader_enabled: - docs = await self.grader.grade_docs(user_input=query, docs=docs) - # rerank documents if self.reranker_enabled: - docs = await self.reranker.rerank( - query, documents=docs, top_k=self.reranker_top_k - ) - + docs = await self.reranker.rerank(query, documents=docs, top_k=top_k) + logger.debug("Documents after reranking", document_count=len(docs)) else: - docs = docs[: self.reranker_top_k] - - logger.debug("Documents after reranking", document_count=len(docs)) - + docs = docs[:top_k] return docs @@ -101,6 +91,7 @@ def __init__(self, config, logger=None) -> None: ) self.max_contextualized_query_len = config.rag["max_contextualized_query_len"] + # map reduce self.map_reduce: RAGMapReduce = RAGMapReduce(config=config) async def generate_query(self, messages: list[dict]) -> str: @@ -145,26 +136,29 @@ async def _prepare_for_chat_completion(self, partition: list[str], payload: dict query = await self.generate_query(messages) logger.debug("Prepared query for chat completion", query=query) + metadata = payload.get("metadata", {}) + use_map_reduce = metadata.get("use_map_reduce", False) + logger.info("Metadata parameters", use_map_reduce=use_map_reduce) + # 2. get docs docs = await self.retriever_pipeline.retrieve_docs( - partition=partition, query=query + partition=partition, query=query, use_map_reduce=use_map_reduce ) - # if RAG_MAP_REDUCE: - # context = "Extracted documents:\n" - # relevant_docs = [] - # res = await self.map_reduce.map(query=query, chunks=docs) - # for synthesis, doc in res: - # context += synthesis + "\n" - # context += "-" * 40 + "\n" - # relevant_docs.append(doc) + if use_map_reduce and docs: + context = "Extracted documents:\n" + summarized_docs = [] + res = await self.map_reduce.map(query=query, chunks=docs) - # logger.debug(context) - # docs = relevant_docs + for i, (synthesis, doc) in enumerate(res): + context += f"* {i}: {synthesis}" + context += "\n" + "-" * 10 + "\n" + summarized_docs.append( + Document(page_content=synthesis, metadata=doc.metadata) + ) - # else: - # # 3. Format the retrieved docs - # context = format_context(docs) + # logger.debug("Context after map-reduce", context=context) + docs = summarized_docs # 3. Format the retrieved docs context = format_context(docs) @@ -180,8 +174,6 @@ async def _prepare_for_chat_completion(self, partition: list[str], payload: dict "content": self.rag_sys_prompt.format(context=context), }, ) - # messages.append({"role": "tool", "name": "retriever", "content": f"Here are the retrieved documents: {context}"}) - payload["messages"] = messages return payload, docs diff --git a/openrag/models/openai.py b/openrag/models/openai.py index df433479c..6d4142cd8 100644 --- a/openrag/models/openai.py +++ b/openrag/models/openai.py @@ -21,6 +21,12 @@ class OpenAIChatCompletionRequest(BaseModel): stream: Optional[bool] = Field(False) max_tokens: Optional[int] = Field(1024) logprobs: Optional[int] = Field(None) + metadata: Optional[Dict[str, Any]] = Field( + { + "use_map_reduce": False, + }, + description="Extra parameters for OpenAI API", + ) class OpenAIChatCompletionChoice(BaseModel): From be33aa66200a740fbeda66401393c6ec148908f9 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Wed, 24 Sep 2025 09:04:14 +0000 Subject: [PATCH 015/126] Allowing Map & Reduce usage from Chainlit Interface --- openrag/app_front.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/openrag/app_front.py b/openrag/app_front.py index 401e1eb08..26b25cbde 100644 --- a/openrag/app_front.py +++ b/openrag/app_front.py @@ -6,9 +6,9 @@ import chainlit as cl import httpx from chainlit.context import get_context +from consts import PARTITION_PREFIX from dotenv import load_dotenv from openai import AsyncOpenAI -from consts import PARTITION_PREFIX from utils.logger import get_logger load_dotenv() @@ -22,6 +22,14 @@ CHAINLIT_USERNAME = os.environ.get("CHAINLIT_USERNAME", "OpenRAG") CHAINLIT_PASSWORD = os.environ.get("CHAINLIT_PASSWORD", "OpenRAG2025") +commands = [ + { + "id": "DeepSearch", + "icon": "brain-cog", + "description": "Use DeepSearch RAG to handle complex queries.\nSlower but more accurate answers.\nUse in an empty context as it consumes more tokens.", + }, +] + headers = { "accept": "application/json", "Content-Type": "application/json", @@ -107,6 +115,7 @@ async def on_chat_start(): url=f"{INTERNAL_BASE_URL}/health_check", headers=headers ) print(response.text) + await cl.context.emitter.set_commands(commands) except Exception as e: logger.exception("An error occured while checking the API health", error=str(e)) await cl.Message( @@ -191,6 +200,9 @@ async def on_message(message: cl.Message): "temperature": 0.2, "stream": True, "frequency_penalty": 0.4, + "metadata": { + "use_map_reduce": message.command == "DeepSearch", + }, } async with cl.Step(name="Searching for relevant documents..."): From a5b572069047451f5cf2be59b4595680cd924b91 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Wed, 24 Sep 2025 09:12:37 +0000 Subject: [PATCH 016/126] Updating 'Map & Reduce' description on Chainlit --- openrag/app_front.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openrag/app_front.py b/openrag/app_front.py index 26b25cbde..44d250cf2 100644 --- a/openrag/app_front.py +++ b/openrag/app_front.py @@ -26,7 +26,7 @@ { "id": "DeepSearch", "icon": "brain-cog", - "description": "Use DeepSearch RAG to handle complex queries.\nSlower but more accurate answers.\nUse in an empty context as it consumes more tokens.", + "description": "This uses a custom DeepSearch RAG mechanism (Map & Reduce) to handle complex queries.\nSlower but gives accurate answers.\nUse in an empty context as it consumes more tokens.", }, ] From 671aba013ab68544a10a5f506fbfc7b5d74d22f0 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Wed, 24 Sep 2025 11:12:57 +0200 Subject: [PATCH 017/126] Exit in case one of requested partitions hasn't been found --- openrag/scripts/backup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openrag/scripts/backup.py b/openrag/scripts/backup.py index 07776d3e1..c6a43c269 100644 --- a/openrag/scripts/backup.py +++ b/openrag/scripts/backup.py @@ -230,6 +230,7 @@ def load_openrag_config(logger): for part_name in args.include_only: if part_name not in existing_partitions: logger.error(f'Partition "{part_name}" has not been found.') + return 1 else: partitions[part_name] = existing_partitions[part_name] else: From e3f8f639c97bfad434bcf04e55a427889157e50f Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Wed, 24 Sep 2025 11:34:48 +0200 Subject: [PATCH 018/126] Backup file format --- README-backup.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/README-backup.md b/README-backup.md index cb28b61e9..7b40be398 100644 --- a/README-backup.md +++ b/README-backup.md @@ -51,3 +51,36 @@ docker compose \ openrag-cpu ``` +# Backup dump format + +Backups are stored in plain text, with optional xz compression. A backup file consists of multiple sections separated by an empty line. + +Each section begins with a single header line, followed by one or more non-empty content lines. Every content line is in JSON format. + +There are two types of sections: + +* `rdb` – Multiple sections are possible (one section per partition). The first line of an `rdb` section specifies the partition. Each subsequent line represents a single document. +* `vdb` – A single section covering all partitions. One line per chunk. + +All `rdb` sections must appear before the `vdb` section. + +Example: +``` +rdb +{"created": "2025-07-28T16:20:43.144796", "name": "frwiki-nocontext"} +{"created_at": "2025-07-28T16:20:39.612784", "file_id": "10", "file_size": "13.57 KB", "filename": "Algorithmique.txt", "revid": "2962", "source": "/app/data/Algorithmique.txt", "title": "Algorithmique", "url": "https://fr.wikipedia.org/wiki?curid=10"} +{"created_at": "2025-07-28T16:20:40.948772", "file_id": "100", "file_size": "3.79 KB", "filename": "Atoum.txt", "revid": "734387", "source": "/app/data/Atoum.txt", "title": "Atoum", "url": "https://fr.wikipedia.org/wiki?curid=100"} +... + +rdb +{"created": "2025-07-10T16:51:25.466016", "name": "enwiki-markdown_splitter-nocontext"} +{"created_at": "2025-07-10T16:51:40.416456", "file_id": "1000", "file_size": "42.03 KB", "filename": "Hercule Poirot.txt", "revid": "25695884", "source": "/app/data/Hercule Poirot.txt", "title": "Hercule Poirot", "url": "https://en.wikipedia.org/wiki?curid=1000"} +{"created_at": "2025-07-10T17:00:02.038049", "file_id": "10000", "file_size": "220.00 B", "filename": "Eiffel.txt", "revid": "5229428", "source": "/app/data/Eiffel.txt", "title": "Eiffel", "url": "https://en.wikipedia.org/wiki?curid=10000"} +... + +vdb +{"created_at": "2025-07-28T16:20:39.680783", "file_id": "7", "file_size": "11.01 KB", "filename": "Algèbre linéaire.txt", "page": 1, "partition": "frwiki-nocontext", "revid": "2523928", "source": "/app/data/Algèbre linéaire.txt", "text": "L’algèbre linéaire est ...", "title": "Algèbre linéaire", "url": "https://fr.wikipedia.org/wiki?curid=7", "vector": [0.00012493133544921875, -0.052978515625, ...]} +{"created_at": "2025-07-28T16:20:39.680783", "file_id": "7", "file_size": "11.01 KB", "filename": "Algèbre linéaire.txt", "page": 1, "partition": "frwiki-nocontext", "revid": "2523928", "source": "/app/data/Algèbre linéaire.txt", "text": "Ce n'est qu'au XIXsiècle que ...", "title": "Algèbre linéaire", "url": "https://fr.wikipedia.org/wiki?curid=7", "vector": [-0.0206298828125, -0.09765625, ...]} +... +``` + From b907cd7001d0833d981760df1f179ac2219d89ca Mon Sep 17 00:00:00 2001 From: htagourti Date: Wed, 24 Sep 2025 13:20:38 +0000 Subject: [PATCH 019/126] added user and partition members tables --- openrag/components/indexer/vectordb/utils.py | 174 ++++++++++++++++++- 1 file changed, 173 insertions(+), 1 deletion(-) diff --git a/openrag/components/indexer/vectordb/utils.py b/openrag/components/indexer/vectordb/utils.py index 1619360ce..3036282e1 100644 --- a/openrag/components/indexer/vectordb/utils.py +++ b/openrag/components/indexer/vectordb/utils.py @@ -1,8 +1,12 @@ +import os +import secrets from datetime import datetime from typing import Dict, Optional from sqlalchemy import ( JSON, + Boolean, + CheckConstraint, Column, DateTime, ForeignKey, @@ -75,6 +79,9 @@ class Partition(Base): files = relationship( "File", back_populates="partition", cascade="all, delete-orphan" ) + memberships = relationship( + "PartitionMembership", back_populates="partition", cascade="all, delete-orphan" + ) def to_dict(self): d = { @@ -87,6 +94,50 @@ def __repr__(self): return f"" +class User(Base): + __tablename__ = "users" + + id = Column(Integer, primary_key=True) + external_ref = Column(String, unique=True, nullable=True) # IdP/user id upstream + email = Column(String, unique=True, nullable=True, index=True) + display_name = Column(String, nullable=True) + token = Column(String, unique=True, nullable=True, index=True) + is_admin = Column(Boolean, default=False, nullable=False) + created_at = Column(DateTime, default=datetime.now, nullable=False, index=True) + + memberships = relationship( + "PartitionMembership", back_populates="user", cascade="all, delete-orphan" + ) + + +class PartitionMembership(Base): + __tablename__ = "partition_memberships" + + id = Column(Integer, primary_key=True) + partition_name = Column( + String, + ForeignKey("partitions.partition", ondelete="CASCADE"), + nullable=False, + index=True, + ) + user_id = Column( + Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True + ) + role = Column(String, nullable=False) # 'owner' | 'editor' | 'viewer' + added_at = Column(DateTime, default=datetime.now, nullable=False) + + __table_args__ = ( + UniqueConstraint("partition_name", "user_id", name="uix_partition_user"), + CheckConstraint( + "role IN ('owner','editor','viewer')", name="ck_membership_role" + ), + Index("ix_user_partition", "user_id", "partition_name"), + ) + + partition = relationship("Partition", back_populates="memberships") + user = relationship("User", back_populates="memberships") + + class PartitionFileManager: def __init__(self, database_url: str, logger=logger): try: @@ -95,8 +146,12 @@ def __init__(self, database_url: str, logger=logger): create_database(database_url) Base.metadata.create_all(self.engine) - self.Session = sessionmaker(bind=self.engine) self.logger = logger + AUTH_TOKEN = os.getenv("AUTH_TOKEN") + if AUTH_TOKEN: + self._ensure_admin_user(AUTH_TOKEN) + self.Session = sessionmaker(bind=self.engine) + except Exception as e: raise VDBConnectionError( f"Failed to connect to database: {str(e)}", @@ -104,6 +159,28 @@ def __init__(self, database_url: str, logger=logger): db_type="SQLAlchemy", ) + def _ensure_admin_user(self, admin_token: str): + if not admin_token: + return + with self.Session() as s: + admin = s.query(User).filter_by(token=admin_token).first() + if not admin: + admin = User( + email="admin@example.com", + display_name="Admin", + token=admin_token, + is_admin=True, + ) + s.add(admin) + s.commit() + self.logger.info("Created admin user with global AUTH_TOKEN") + elif not admin.is_admin: + admin.is_admin = True + s.commit() + self.logger.info( + "Upgraded existing user to admin with global AUTH_TOKEN" + ) + def list_partition_files(self, partition: str, limit: Optional[int] = None): """List files in a partition with optional limit - Optimized by querying File table directly""" log = self.logger.bind(partition=partition) @@ -263,3 +340,98 @@ def file_exists_in_partition(self, file_id: str, partition: str): .filter(File.file_id == file_id, File.partition_name == partition) .exists() ).scalar() + + # Users + + def create_user( + self, + email: Optional[str] = None, + display_name: Optional[str] = None, + external_ref: Optional[str] = None, + is_admin: bool = False, + ) -> dict: + """Create a user and generate an API token for them.""" + with self.Session() as s: + token = secrets.token_hex(32) # 64-char random token + + user = User( + email=email, + display_name=display_name, + external_ref=external_ref, + token=token, + is_admin=is_admin, + ) + s.add(user) + s.commit() + s.refresh(user) + + return { + "id": user.id, + "email": user.email, + "display_name": user.display_name, + "token": user.token, + "is_admin": user.is_admin, + } + + def get_user_by_email(self, email: str) -> Optional[User]: + with self.Session() as s: + return s.query(User).filter(User.email == email).first() + + # Memberships + def add_member(self, partition: str, user_id: int, role: str) -> bool: + with self.Session() as s: + if not s.query(Partition).filter(Partition.partition == partition).first(): + s.add(Partition(partition=partition)) + m = ( + s.query(PartitionMembership) + .filter_by(partition_name=partition, user_id=user_id) + .first() + ) + if m: + m.role = role # upgrade/downgrade role + else: + s.add( + PartitionMembership( + partition_name=partition, user_id=user_id, role=role + ) + ) + s.commit() + return True + + def remove_member(self, partition: str, user_id: int) -> bool: + with self.Session() as s: + m = ( + s.query(PartitionMembership) + .filter_by(partition_name=partition, user_id=user_id) + .first() + ) + if not m: + return False + s.delete(m) + s.commit() + return True + + def list_partition_members(self, partition: str): + with self.Session() as s: + ms = s.query(PartitionMembership).filter_by(partition_name=partition).all() + return [ + { + "user_id": m.user_id, + "role": m.role, + "added_at": m.added_at.isoformat(), + } + for m in ms + ] + + def list_user_partitions(self, user_id: int): + with self.Session() as s: + ms = s.query(PartitionMembership).filter_by(user_id=user_id).all() + return [{"partition": m.partition_name, "role": m.role} for m in ms] + + def user_can_access(self, partition: str, user_id: int) -> bool: + with self.Session() as s: + return s.query( + s.query(PartitionMembership) + .filter_by(partition_name=partition, user_id=user_id) + .exists() + ).scalar() From a9f2828997806b07dc022e9af3c3076467bf94dd Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Thu, 25 Sep 2025 15:14:41 +0000 Subject: [PATCH 020/126] remove qdrant --- vdb/qdrant.yaml | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 vdb/qdrant.yaml diff --git a/vdb/qdrant.yaml b/vdb/qdrant.yaml deleted file mode 100644 index 4d45480a8..000000000 --- a/vdb/qdrant.yaml +++ /dev/null @@ -1,8 +0,0 @@ -services: - qdrant: - image: qdrant/qdrant - volumes: - - ./qdrant_storage:/qdrant/storage:z - -volumes: - qdrant_storage: \ No newline at end of file From c4118a9ff0029c8d32542bb12a7e0b413f52ae95 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Thu, 25 Sep 2025 15:34:34 +0000 Subject: [PATCH 021/126] refactoring indexer-ui setting using docker image from dockerhub --- .env.example | 11 +++++------ docs/setup_indexerui.md | 7 +++---- extern/indexer-ui | 2 +- openrag/api.py | 21 +++++++++------------ 4 files changed, 18 insertions(+), 23 deletions(-) diff --git a/.env.example b/.env.example index 5ec1a776a..576c41545 100644 --- a/.env.example +++ b/.env.example @@ -40,11 +40,10 @@ RAY_ENABLE_UV_RUN_RUNTIME_ENV=0 # critical with the newest version of UV # Indexer UI ## 1. replace X.X.X.X with localhost if launching local or with your server IP -## 2. APP_PORT with your FastAPI port (8080 by default) -## 3. Base URL of the Indexer UI (required to prevent CORS issues). Replace INDEXERUI_PORT with its value -## 4. Base URL of your FastAPI backend. Used by the frondend. Replace APP_PORT with the actual port number of your FastAPI backend +## 2. Used by the frondend. Replace APP_PORT (8080 by default) with the actual port number of your FastAPI backend +## 3. Replace INDEXERUI_PORT with its value in the INDEXERUI_URL variable -VITE_INCLUDE_CREDENTIALS=false # set true if fastapi authentification is enabled -INDEXERUI_PORT=8060 # Port to expose the Indexer UI (default is 3042) +INCLUDE_CREDENTIALS=false # set true if fastapi authentification is enabled, i.e AUTH_TOKEN is set +INDEXERUI_PORT=8060 # Port to expose the Indexer UI (default is 3042) INDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT' -VITE_API_BASE_URL='http://X.X.X.X:APP_PORT' \ No newline at end of file +API_BASE_URL='http://X.X.X.X:APP_PORT' # Base URL of your FastAPI backend. \ No newline at end of file diff --git a/docs/setup_indexerui.md b/docs/setup_indexerui.md index f542d5fd9..61bf6c214 100644 --- a/docs/setup_indexerui.md +++ b/docs/setup_indexerui.md @@ -28,15 +28,14 @@ git submodule foreach 'git checkout main && git pull' To enable the Indexer UI, add the following environment variables to your configuration: -* Replace **`X.X.X.X`** with `localhost` (for local use) or your server IP +* Replace **`X.X.X.X`** with `localhost` (for local deployment) or your server IP * Replace **`APP_PORT`** with your FastAPI port (default: 8080) * Set the **base URL of the Indexer UI** (required to prevent CORS issues). Replace **`INDEXERUI_PORT`** accordingly * Set the **base URL of your FastAPI backend** (used by the frontend). Replace **`APP_PORT`** accordingly ```bash -INDEXERUI_COMPOSE_FILE=extern/indexer-ui/docker-compose.yaml # Path to the docker-compose file -VITE_INCLUDE_CREDENTIALS=false # Set to true if FastAPI authentication is enabled +INCLUDE_CREDENTIALS=false # Set to true if FastAPI authentication is enabled INDEXERUI_PORT=8060 # Port for the Indexer UI (default: 3042) INDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT' -VITE_API_BASE_URL='http://X.X.X.X:APP_PORT' +API_BASE_URL='http://X.X.X.X:APP_PORT' ``` \ No newline at end of file diff --git a/extern/indexer-ui b/extern/indexer-ui index 2c4cde5a6..e0fa5735e 160000 --- a/extern/indexer-ui +++ b/extern/indexer-ui @@ -1 +1 @@ -Subproject commit 2c4cde5a69c99dfe781d30fb4494a059f7366f08 +Subproject commit e0fa5735eb30f0524c494f1b1d5523f559d090ca diff --git a/openrag/api.py b/openrag/api.py index 5f9552519..8986070e8 100644 --- a/openrag/api.py +++ b/openrag/api.py @@ -58,10 +58,10 @@ def __init__(self, config): # Read the token from env (or None if not set) AUTH_TOKEN: Optional[str] = os.getenv("AUTH_TOKEN") - -INDEXERUI_URL: Optional[str] = os.getenv("INDEXERUI_URL", None) -INDEXERUI_COMPOSE_FILE = os.getenv("INDEXERUI_COMPOSE_FILE", None) INDEXERUI_PORT: Optional[str] = os.getenv("INDEXERUI_PORT", "3042") +INDEXERUI_URL: Optional[str] = os.getenv( + "INDEXERUI_URL", f"http://localhost:{INDEXERUI_PORT}" +) DISABLE_EXCEPTION_HANDLER: bool = ( os.getenv("DISABLE_EXCEPTION_HANDLER", "false").lower() == "true" @@ -96,15 +96,12 @@ async def openrag_exception_handler(request: Request, exc: OpenRAGError): # Add CORS middleware -if INDEXERUI_URL and INDEXERUI_COMPOSE_FILE: - allow_origins = [ - "http://localhost:3042", - "http://localhost:5173", - INDEXERUI_URL, - f"http://localhost:{INDEXERUI_PORT}", - ] -else: - allow_origins = ["*"] +allow_origins = [ + "http://localhost:3042", + "http://localhost:5173", + INDEXERUI_URL, + f"http://localhost:{INDEXERUI_PORT}", +] app.add_middleware( CORSMiddleware, From 12d8c0d0b99cb93609877765303414472564061d Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Fri, 26 Sep 2025 07:38:40 +0000 Subject: [PATCH 022/126] using indexer-ui's docker image --- docker-compose.yaml | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index e46b63024..5f3351dc5 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -2,20 +2,21 @@ include: - vdb/milvus.yaml - ${CHAINLIT_DATALAYER_COMPOSE:-extern/dummy.yaml} - extern/infinity.yaml - - ${INDEXERUI_COMPOSE_FILE:-extern/indexer-ui/docker-compose.yaml} + # - ${INDEXERUI_COMPOSE_FILE:-extern/indexer-ui/docker-compose.yaml} x-openrag: &openrag_template image: ghcr.io/linagora/openrag:dev-latest + # image: linagoraai/openrag:latest build: context: . dockerfile: Dockerfile volumes: - - ${CONFIG_VOLUME:-./.hydra_config}:/app/.hydra_config + - ${CONFIG_VOLUME:-./.hydra_config}:/app/.hydra_config # For dev mode - ${DATA_VOLUME:-./data}:/app/data - ${MODEL_WEIGHTS_VOLUME:-~/.cache/huggingface}:/app/model_weights # Model weights for RAG - ./openrag:/app/openrag # For dev mode - /$SHARED_ENV:/ray_mount/.env # Shared environment variables - - ./ray_mount/logs:/app/logs + - ./logs:/app/logs # For dev mode ports: - ${APP_PORT:-8080}:${APP_iPORT:-8080} - ${RAY_DASHBOARD_PORT:-8265}:8265 # Disable when in cluster mode @@ -44,18 +45,31 @@ x-vllm: &vllm_template --task embed --gpu_memory_utilization 0.3 # --max-num-seqs 1 - # --max-model-len ${MOX_MODEL_LEN:-2048} + # --max-model-len ${MAX_MODEL_LEN:-2048} # gpu_memory_utilization, max-num-seqs et max-model-len can be tuned depending on your GPU memory healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 15s timeout: 5s - retries: 3 + retries: 4 start_period: 60s # ports: # - ${VLLM_PORT:-8000}:8000 services: + # OpenRAG Indexer UI + indexer-ui: + image: linagoraai/indexer-ui:v1.1 + build: + context: ./extern/indexer-ui + dockerfile: Dockerfile + environment: + - API_BASE_URL=${API_BASE_URL:-http://localhost:${APP_PORT:-8080}} + - INCLUDE_CREDENTIALS=${INCLUDE_CREDENTIALS:-false} + ports: + - "${INDEXERUI_PORT:-3042}:3000" + restart: unless-stopped + # GPU - default openrag: <<: *openrag_template @@ -128,6 +142,5 @@ services: # max-num-batched-tokens is required for aarch64 because chunked prefill isn't supported by V1 vllm backend # for aarch64 yet. On aarch64 max-num-batched-tokens must be equal max-model-len for now (without chunked prefill). # For details see https://github.com/vllm-project/vllm/issues/21179 - profiles: - 'cpu' \ No newline at end of file From 16d320f6537047fee937e25ff6e5fb39dad9aa01 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Fri, 26 Sep 2025 08:11:28 +0000 Subject: [PATCH 023/126] Quick start deployment of OpenRAG using pre-built Docker images with only Docker Compose files. --- README.md | 40 +++++-- quick_start/docker-compose.yaml | 141 +++++++++++++++++++++++++ quick_start/extern/infinity.yaml | 41 +++++++ quick_start/extern/vllm/Dockerfile.cpu | 134 +++++++++++++++++++++++ quick_start/vdb/milvus.yaml | 52 +++++++++ 5 files changed, 398 insertions(+), 10 deletions(-) create mode 100644 quick_start/docker-compose.yaml create mode 100644 quick_start/extern/infinity.yaml create mode 100644 quick_start/extern/vllm/Dockerfile.cpu create mode 100644 quick_start/vdb/milvus.yaml diff --git a/README.md b/README.md index 0e140b304..e593bfd03 100644 --- a/README.md +++ b/README.md @@ -152,20 +152,40 @@ For CPU-only deployments or lightweight testing scenarios, you can consider swit #### 4.Deployment: Launch the app - >[!IMPORTANT] > In case **`Indexer UI` (A Web interface for intuitive document ingestion, indexing, and management.)** is not configured already in your `.env`, follow this dedicated guide: ➡ [Deploy with Indexer UI](docs/setup_indexerui.md) -You can run the application with either GPU or CPU support, depending on your system: - -```bash -# Start with GPU (recommended for better performance) -docker compose up --build -d # Use 'down' to stop - -# Start with CPU -docker compose --profile cpu up --build -d # Use '--profile cpu down' to stop it properly -``` +* Simple and quick launch + >[!IMPORTANT] + > For a **simple `quick deployment`** using only the docker-compose file, only the [quick_start **folder**](./quick_start/) is required. Follow these steps to launch the application: + + 1. Navigate to the **`quick_start`** directory or download only that folder + 2. Place your **`.env`** file inside the **`quick_start`** directory + 3. Run the appropriate command for your system: + + ```bash + # GPU deployment (recommended for optimal performance) + docker compose up -d + # docker compose down # to stop the application + + # CPU deployment + docker compose --profile cpu up -d + # docker compose --profile cpu down # to stop the application + ``` +* **Development Environment**: For development builds, use the **`--build`** flag to rebuild images: + >[!NOTE] + > Execute these commands from the project root directory + + ```bash + # GPU deployment with rebuild (recommended for optimal performance) + docker compose up --build -d + # docker compose down # to stop the application + + # CPU deployment with rebuild + docker compose --profile cpu up --build -d + # docker compose --profile cpu down # to stop the application + ``` >[!WARNING] > The initial launch is longer due to the installation of required dependencies. diff --git a/quick_start/docker-compose.yaml b/quick_start/docker-compose.yaml new file mode 100644 index 000000000..78c620255 --- /dev/null +++ b/quick_start/docker-compose.yaml @@ -0,0 +1,141 @@ +include: + - vdb/milvus.yaml + - extern/infinity.yaml + +x-openrag: &openrag_template + # image: ghcr.io/linagora/openrag:dev-latest + image: linagoraai/openrag:latest + # build: + # context: . + # dockerfile: Dockerfile + volumes: + # - ${CONFIG_VOLUME:-./.hydra_config}:/app/.hydra_config # For dev mode + - ${DATA_VOLUME:-./data}:/app/data + - ${MODEL_WEIGHTS_VOLUME:-~/.cache/huggingface}:/app/model_weights # Model weights for RAG + # - ./openrag:/app/openrag # For dev mode + - /$SHARED_ENV:/ray_mount/.env # Shared environment variables + # - ./logs:/app/logs # For dev mode + ports: + - ${APP_PORT:-8080}:${APP_iPORT:-8080} + - ${RAY_DASHBOARD_PORT:-8265}:8265 # Disable when in cluster mode + networks: + default: + aliases: + - openrag + env_file: + - ${SHARED_ENV:-.env} + shm_size: 10.24gb + restart: always + +x-vllm: &vllm_template + networks: + default: + aliases: + - vllm + restart: always + environment: + - HUGGING_FACE_HUB_TOKEN + ipc: "host" + volumes: + - ${VLLM_CACHE:-/root/.cache/huggingface}:/root/.cache/huggingface # put ./vllm_cache if you want to have the weights on the vllm_cache folder in your project + command: > + --model ${EMBEDDER_MODEL_NAME:-jinaai/jina-embeddings-v3} + --trust-remote-code + --task embed + --gpu_memory_utilization 0.3 + # --max-model-len ${MAX_MODEL_LEN:-2048} + # gpu_memory_utilization, max-num-seqs et max-model-len can be tuned depending on your GPU memory + + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/health"] + interval: 15s + timeout: 5s + retries: 4 + start_period: 60s + # ports: + # - ${VLLM_PORT:-8000}:8000 +services: + # Ragondin Indexer UI + indexer-ui: + image: linagoraai/indexer-ui:v1.1 + environment: + - API_BASE_URL=${API_BASE_URL:-http://localhost:${APP_PORT:-8080}} + - INCLUDE_CREDENTIALS=${INCLUDE_CREDENTIALS:-false} + ports: + - "${INDEXERUI_PORT:-3042}:3000" + restart: unless-stopped + + # GPU - default + openrag: + <<: *openrag_template + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [ gpu ] + profiles: + - '' + depends_on: + milvus: + condition: service_healthy + vllm-gpu: + condition: service_healthy + + # No GPU + openrag-cpu: + <<: *openrag_template + deploy: {} + profiles: + - 'cpu' + depends_on: + milvus: + condition: service_healthy + vllm-cpu: + condition: service_healthy + + rdb: + image: postgres:15 + environment: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-root_password} + - POSTGRES_USER=${POSTGRES_USER:-root} + volumes: + - ${DB_VOLUME:-./db}:/var/lib/postgresql/data + + vllm-gpu: + <<: *vllm_template + image: vllm/vllm-openai:v0.9.2 + runtime: nvidia + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [gpu] + profiles: + - '' # Empty string gives default behavior (but does not run when cpu requested) + + vllm-cpu: + <<: *vllm_template + build: + context: extern/vllm + dockerfile: Dockerfile.cpu + target: vllm-openai + image: openrag-vllm-openai-cpu + deploy: {} + environment: + - VLLM_CPU_KVCACHE_SPACE=8 + # Default value isn't sufficient for full context length + command: > + --model ${EMBEDDER_MODEL_NAME:-jinaai/jina-embeddings-v3} + --trust-remote-code + --dtype float32 + --max-num-batched-tokens 32768 + # dtype is required for aarch64 (https://github.com/vllm-project/vllm/issues/11327) and improves speed on amd64. + # max-num-batched-tokens is required for aarch64 because chunked prefill isn't supported by V1 vllm backend + # for aarch64 yet. On aarch64 max-num-batched-tokens must be equal max-model-len for now (without chunked prefill). + # For details see https://github.com/vllm-project/vllm/issues/21179 + profiles: + - 'cpu' \ No newline at end of file diff --git a/quick_start/extern/infinity.yaml b/quick_start/extern/infinity.yaml new file mode 100644 index 000000000..ba641a681 --- /dev/null +++ b/quick_start/extern/infinity.yaml @@ -0,0 +1,41 @@ +x-reranker: &reranker_template + networks: + default: + aliases: + - reranker + volumes: + - ${VLLM_CACHE:-/root/.cache/huggingface}:/app/.cache/huggingface # Model weights for RAG + # ports: + # - ${RERANKER_PORT:-7997}:${RERANKER_PORT:-7997} + +services: + reranker: + <<: *reranker_template + image: michaelf34/infinity + runtime: nvidia + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [gpu] + command: > + v2 + --model-id ${RERANKER_MODEL:-Alibaba-NLP/gte-multilingual-reranker-base} + --port ${RERANKER_PORT:-7997} + profiles: + - '' + + reranker-cpu: + <<: *reranker_template + image: michaelf34/infinity:latest-cpu + deploy: {} + command: > + v2 + --engine torch + --model-id ${RERANKER_MODEL:-Alibaba-NLP/gte-multilingual-reranker-base} + --port ${RERANKER_PORT:-7997} + profiles: + - 'cpu' + diff --git a/quick_start/extern/vllm/Dockerfile.cpu b/quick_start/extern/vllm/Dockerfile.cpu new file mode 100644 index 000000000..65be709e3 --- /dev/null +++ b/quick_start/extern/vllm/Dockerfile.cpu @@ -0,0 +1,134 @@ +# This file is the adaptation of https://github.com/vllm-project/vllm/blob/main/docker/Dockerfile.cpu + +# This vLLM Dockerfile is used to construct image that can build and run vLLM on x86 CPU platform. +# +# Build targets: +# vllm-openai (default): used for serving deployment +# vllm-test: used for CI tests +# vllm-dev: used for development +# +# Build arguments: +# PYTHON_VERSION=3.12 (default)|3.11|3.10|3.9 +# VLLM_CPU_DISABLE_AVX512=false (default)|true + +######################### BASE IMAGE ######################### +FROM ubuntu:22.04 AS base + +WORKDIR /workspace/ + +ARG PYTHON_VERSION=3.12 +ARG PIP_EXTRA_INDEX_URL="https://download.pytorch.org/whl/cpu" + +ENV LD_PRELOAD="" + +# Install minimal dependencies and uv +#RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ +# --mount=type=cache,target=/var/lib/apt,sharing=locked \ +RUN apt-get update -y \ + && apt-get install -y --no-install-recommends ccache git curl wget ca-certificates \ + gcc-12 g++-12 libtcmalloc-minimal4 libnuma-dev ffmpeg libsm6 libxext6 libgl1 \ + && update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 10 --slave /usr/bin/g++ g++ /usr/bin/g++-12 \ + && curl -LsSf https://astral.sh/uv/install.sh | sh + +ENV CCACHE_DIR=/root/.cache/ccache +ENV CMAKE_CXX_COMPILER_LAUNCHER=ccache + +ENV PATH="/root/.local/bin:$PATH" +ENV VIRTUAL_ENV="/opt/venv" +ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python +RUN uv venv --python ${PYTHON_VERSION} --seed ${VIRTUAL_ENV} +ENV PATH="$VIRTUAL_ENV/bin:$PATH" + +ENV UV_HTTP_TIMEOUT=500 + +RUN git clone https://github.com/vllm-project/vllm/ . && git checkout v0.10.1.1 + +# Install Python dependencies +ENV PIP_EXTRA_INDEX_URL=${PIP_EXTRA_INDEX_URL} +ENV UV_EXTRA_INDEX_URL=${PIP_EXTRA_INDEX_URL} +ENV UV_INDEX_STRATEGY="unsafe-best-match" +ENV UV_LINK_MODE="copy" +RUN --mount=type=cache,target=/root/.cache/uv \ + uv pip install --upgrade pip && \ + uv pip install -r requirements/cpu.txt + +RUN export TCMALLOC_SO_PATH=$(ldconfig -p | awk 'BEGIN {FS="=>"} /libtcmalloc_minimal.so/ { sub(/^[ \t]+/, "", $2); print $2 }') +ENV LD_PRELOAD="$TCMALLOC_SO_PATH:/opt/venv/lib/libiomp5.so:$LD_PRELOAD" + +RUN echo 'ulimit -c 0' >> ~/.bashrc + +######################### BUILD IMAGE ######################### +FROM base AS vllm-build + +ARG GIT_REPO_CHECK=0 +# Support for building with non-AVX512 vLLM: docker build --build-arg VLLM_CPU_DISABLE_AVX512="true" ... +ARG VLLM_CPU_DISABLE_AVX512 +ENV VLLM_CPU_DISABLE_AVX512=${VLLM_CPU_DISABLE_AVX512} + +WORKDIR /workspace/ + +RUN uv pip install -r requirements/cpu-build.txt --torch-backend auto +RUN uv pip install "transformers<4.54.0" # https://github.com/vllm-project/vllm-ascend/issues/2046 + +RUN if [ "$GIT_REPO_CHECK" != 0 ]; then bash tools/check_repo.sh ; fi + +RUN --mount=type=cache,target=/root/.cache/uv \ + --mount=type=cache,target=/root/.cache/ccache \ + VLLM_TARGET_DEVICE=cpu python3 setup.py bdist_wheel + +######################### DEV IMAGE ######################### +FROM vllm-build AS vllm-dev + +WORKDIR /workspace/vllm + +#RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ +# --mount=type=cache,target=/var/lib/apt,sharing=locked \ +RUN apt-get install -y --no-install-recommends vim numactl + +# install development dependencies (for testing) +RUN uv pip install -e tests/vllm_test_utils + +RUN VLLM_TARGET_DEVICE=cpu python3 setup.py develop + +RUN uv pip install -r requirements/dev.txt && \ + pre-commit install --hook-type pre-commit --hook-type commit-msg + +ENTRYPOINT ["bash"] + +######################### TEST IMAGE ######################### +FROM base AS vllm-test + +WORKDIR /workspace/ + +RUN uv pip install -r requirements/test.txt + +RUN --mount=type=bind,from=vllm-build,src=/workspace/vllm/dist,target=dist \ + uv pip install dist/*.whl + +ADD ./tests/ ./tests/ +ADD ./examples/ ./examples/ +ADD ./benchmarks/ ./benchmarks/ +ADD ./vllm/collect_env.py . + +# install development dependencies (for testing) +RUN uv pip install -e tests/vllm_test_utils + +ENTRYPOINT ["bash"] + +######################### RELEASE IMAGE ######################### +FROM base AS vllm-openai + +WORKDIR /workspace/ + +RUN --mount=type=cache,target=/root/.cache/uv \ + --mount=type=cache,target=/root/.cache/ccache \ + --mount=type=bind,from=vllm-build,src=/workspace/dist,target=dist \ + uv pip install dist/*.whl +RUN --mount=type=cache,target=/root/.cache/uv \ + --mount=type=cache,target=/root/.cache/ccache \ + --mount=type=bind,from=vllm-build,src=/workspace/dist,target=dist \ + uv pip install "transformers<4.54.0" # https://github.com/vllm-project/vllm-ascend/issues/2046 + +WORKDIR / + +ENTRYPOINT ["python3", "-m", "vllm.entrypoints.openai.api_server"] diff --git a/quick_start/vdb/milvus.yaml b/quick_start/vdb/milvus.yaml new file mode 100644 index 000000000..6a9f37e0c --- /dev/null +++ b/quick_start/vdb/milvus.yaml @@ -0,0 +1,52 @@ +services: + etcd: + image: quay.io/coreos/etcd:v3.5.16 + environment: + - ETCD_AUTO_COMPACTION_MODE=revision + - ETCD_AUTO_COMPACTION_RETENTION=1000 + - ETCD_QUOTA_BACKEND_BYTES=4294967296 + - ETCD_SNAPSHOT_COUNT=50000 + volumes: + - ${MILVUS_VOLUME_DIRECTORY:-./volumes}/etcd:/etcd + command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd + healthcheck: + test: ["CMD", "etcdctl", "endpoint", "health"] + interval: 30s + timeout: 20s + retries: 3 + + minio: + image: minio/minio:RELEASE.2023-03-20T20-16-18Z + environment: + MINIO_ACCESS_KEY: minioadmin + MINIO_SECRET_KEY: minioadmin + volumes: + - ${MILVUS_VOLUME_DIRECTORY:-./volumes}/minio:/minio_data + command: minio server /minio_data --console-address ":9001" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 30s + timeout: 20s + retries: 3 + + milvus: + image: milvusdb/milvus:v2.5.4 + command: ["milvus", "run", "standalone"] + security_opt: + - seccomp:unconfined + environment: + ETCD_ENDPOINTS: etcd:2379 + MINIO_ADDRESS: minio:9000 + volumes: + - ${MILVUS_VOLUME_DIRECTORY:-./volumes}/milvus:/var/lib/milvus + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"] + interval: 30s + start_period: 90s + timeout: 20s + retries: 3 + # ports: + # - "${VDB_PORT:-19530}:${VDB_iPORT:-19530}" + depends_on: + - "etcd" + - "minio" \ No newline at end of file From 106eca7fbc9d47845e0e97bf9a3b4179e3813022 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Fri, 26 Sep 2025 10:28:37 +0000 Subject: [PATCH 024/126] update doc --- .env.example | 8 ++++++-- README.md | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index 576c41545..e1b5d6f11 100644 --- a/.env.example +++ b/.env.example @@ -15,16 +15,20 @@ VLM_MODEL= ## To enable API HTTP authentication via HTTPBearer # AUTH_TOKEN=sk-openrag-1234 -# SAVE_UPLOADED_FILES=true # usefull for chainlit source viewing +# SAVE_UPLOADED_FILES=true # usefull for chainlit (chat interface) source viewing # Set to true, it will mount chainlit chat ui to the fastapi app (Default: true) ## WITH_CHAINLIT_UI=true # EMBEDDER -EMBEDDER_MODEL_NAME=jinaai/jina-embeddings-v3 # or any other embedder from huggingface compatible with vllm +EMBEDDER_MODEL_NAME=jinaai/jina-embeddings-v3 # or try 'Qwen/Qwen3-Embedding-0.6B' or other embedder from huggingface compatible with vllm # EMBEDDER_BASE_URL=http://vllm:8000/v1 # EMBEDDER_API_KEY=EMPTY + +# RETRIEVER +# RETRIEVER_TOP_K=20 # number of top documents to retrieve, before reranking (lower is faster on CPU | on GPU, you can try to increase the value ). + # RERANKER RERANKER_ENABLED=true RERANKER_MODEL=Alibaba-NLP/gte-multilingual-reranker-base # or jinaai/jina-reranker-v2-base-multilingual diff --git a/README.md b/README.md index e593bfd03..8d474b314 100644 --- a/README.md +++ b/README.md @@ -156,7 +156,7 @@ For CPU-only deployments or lightweight testing scenarios, you can consider swit > In case **`Indexer UI` (A Web interface for intuitive document ingestion, indexing, and management.)** is not configured already in your `.env`, follow this dedicated guide: ➡ [Deploy with Indexer UI](docs/setup_indexerui.md) -* Simple and quick launch +* **Simple and quick** launch for testing >[!IMPORTANT] > For a **simple `quick deployment`** using only the docker-compose file, only the [quick_start **folder**](./quick_start/) is required. Follow these steps to launch the application: From f7d102958e144662381217b314ab8a49f9bb14d3 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Fri, 26 Sep 2025 15:47:19 +0000 Subject: [PATCH 025/126] Configuration for running VLLM on CPU/GPU: parameter optimization and downgrading the VLLM CPU image version. --- .env.example | 6 +++--- README.md | 8 +++++++- docker-compose.yaml | 9 +++++---- extern/vllm/Dockerfile.cpu | 3 +-- quick_start/docker-compose.yaml | 15 ++++++++------- quick_start/extern/vllm/Dockerfile.cpu | 4 ++-- 6 files changed, 26 insertions(+), 19 deletions(-) diff --git a/.env.example b/.env.example index e1b5d6f11..afa441106 100644 --- a/.env.example +++ b/.env.example @@ -21,16 +21,16 @@ VLM_MODEL= ## WITH_CHAINLIT_UI=true # EMBEDDER -EMBEDDER_MODEL_NAME=jinaai/jina-embeddings-v3 # or try 'Qwen/Qwen3-Embedding-0.6B' or other embedder from huggingface compatible with vllm +EMBEDDER_MODEL_NAME=jinaai/jina-embeddings-v3 # or other embedder from huggingface compatible with vllm # EMBEDDER_BASE_URL=http://vllm:8000/v1 # EMBEDDER_API_KEY=EMPTY # RETRIEVER -# RETRIEVER_TOP_K=20 # number of top documents to retrieve, before reranking (lower is faster on CPU | on GPU, you can try to increase the value ). +# RETRIEVER_TOP_K=20 # number of top documents to retrieve, before reranking (lower (~10) is faster on CPU | on GPU, you can try to increase the value (~40) ). # RERANKER -RERANKER_ENABLED=true +RERANKER_ENABLED=true # deactivate the reranker if your CPU is not powerful enough RERANKER_MODEL=Alibaba-NLP/gte-multilingual-reranker-base # or jinaai/jina-reranker-v2-base-multilingual # Prompts diff --git a/README.md b/README.md index 8d474b314..4397b1e5d 100644 --- a/README.md +++ b/README.md @@ -188,7 +188,13 @@ For CPU-only deployments or lightweight testing scenarios, you can consider swit ``` >[!WARNING] -> The initial launch is longer due to the installation of required dependencies. +> The first startup may take longer as required dependencies are installed. + +>[!IMPORTANT] +> For CPU-only deployments, consider these performance optimizations: +> 1. Disable the reranker by setting **`RERANKER_ENABLED=false`** (reranking is computationally intensive on CPU) +> 2. If keeping the reranker enabled (recommended for better RAG accuracy), reduce the number of documents sent for reranking by lowering **`RETRIEVER_TOP_K`** to approximately 10 + Once the app is up and running, visit `http://localhost:APP_PORT` or `http:X.X.X.X:APP_PORT` to access via: diff --git a/docker-compose.yaml b/docker-compose.yaml index 5f3351dc5..662795f97 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -44,16 +44,16 @@ x-vllm: &vllm_template --trust-remote-code --task embed --gpu_memory_utilization 0.3 + --max-model-len ${MAX_MODEL_LEN:-8192} # --max-num-seqs 1 - # --max-model-len ${MAX_MODEL_LEN:-2048} # gpu_memory_utilization, max-num-seqs et max-model-len can be tuned depending on your GPU memory healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] - interval: 15s + interval: 20s timeout: 5s retries: 4 - start_period: 60s + start_period: 90s # ports: # - ${VLLM_PORT:-8000}:8000 services: @@ -137,7 +137,8 @@ services: --model ${EMBEDDER_MODEL_NAME:-jinaai/jina-embeddings-v3} --trust-remote-code --dtype float32 - --max-num-batched-tokens 32768 + --max_model_len 8192 + # --max-num-batched-tokens 32768 # dtype is required for aarch64 (https://github.com/vllm-project/vllm/issues/11327) and improves speed on amd64. # max-num-batched-tokens is required for aarch64 because chunked prefill isn't supported by V1 vllm backend # for aarch64 yet. On aarch64 max-num-batched-tokens must be equal max-model-len for now (without chunked prefill). diff --git a/extern/vllm/Dockerfile.cpu b/extern/vllm/Dockerfile.cpu index 03b3a19db..8dfee4bc0 100644 --- a/extern/vllm/Dockerfile.cpu +++ b/extern/vllm/Dockerfile.cpu @@ -10,7 +10,6 @@ # Build arguments: # PYTHON_VERSION=3.12 (default)|3.11|3.10|3.9 # VLLM_CPU_DISABLE_AVX512=false (default)|true -# ######################### BASE IMAGE ######################### FROM ubuntu:22.04 AS base @@ -42,7 +41,7 @@ ENV PATH="$VIRTUAL_ENV/bin:$PATH" ENV UV_HTTP_TIMEOUT=500 -RUN git clone https://github.com/vllm-project/vllm/ . && git checkout v0.10.1.1 +RUN git clone https://github.com/vllm-project/vllm/ . && git checkout v0.9.2 # Install Python dependencies ENV PIP_EXTRA_INDEX_URL=${PIP_EXTRA_INDEX_URL} diff --git a/quick_start/docker-compose.yaml b/quick_start/docker-compose.yaml index 78c620255..a44fdaa7c 100644 --- a/quick_start/docker-compose.yaml +++ b/quick_start/docker-compose.yaml @@ -9,12 +9,12 @@ x-openrag: &openrag_template # context: . # dockerfile: Dockerfile volumes: - # - ${CONFIG_VOLUME:-./.hydra_config}:/app/.hydra_config # For dev mode + # - ${CONFIG_VOLUME:-./.hydra_config}:/app/.hydra_config - ${DATA_VOLUME:-./data}:/app/data - ${MODEL_WEIGHTS_VOLUME:-~/.cache/huggingface}:/app/model_weights # Model weights for RAG # - ./openrag:/app/openrag # For dev mode - /$SHARED_ENV:/ray_mount/.env # Shared environment variables - # - ./logs:/app/logs # For dev mode + # - ./logs:/app/logs ports: - ${APP_PORT:-8080}:${APP_iPORT:-8080} - ${RAY_DASHBOARD_PORT:-8265}:8265 # Disable when in cluster mode @@ -43,15 +43,15 @@ x-vllm: &vllm_template --trust-remote-code --task embed --gpu_memory_utilization 0.3 - # --max-model-len ${MAX_MODEL_LEN:-2048} + --max-model-len ${MAX_MODEL_LEN:-8192} # gpu_memory_utilization, max-num-seqs et max-model-len can be tuned depending on your GPU memory healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] - interval: 15s + interval: 20s timeout: 5s retries: 4 - start_period: 60s + start_period: 90s # ports: # - ${VLLM_PORT:-8000}:8000 services: @@ -59,7 +59,7 @@ services: indexer-ui: image: linagoraai/indexer-ui:v1.1 environment: - - API_BASE_URL=${API_BASE_URL:-http://localhost:${APP_PORT:-8080}} + - API_BASE_URL=${API_BASE_URL:-http://localhost:${APP_iPORT:-8080}} - INCLUDE_CREDENTIALS=${INCLUDE_CREDENTIALS:-false} ports: - "${INDEXERUI_PORT:-3042}:3000" @@ -132,7 +132,8 @@ services: --model ${EMBEDDER_MODEL_NAME:-jinaai/jina-embeddings-v3} --trust-remote-code --dtype float32 - --max-num-batched-tokens 32768 + --max_model_len 8192 + # --max-num-batched-tokens 16384 # dtype is required for aarch64 (https://github.com/vllm-project/vllm/issues/11327) and improves speed on amd64. # max-num-batched-tokens is required for aarch64 because chunked prefill isn't supported by V1 vllm backend # for aarch64 yet. On aarch64 max-num-batched-tokens must be equal max-model-len for now (without chunked prefill). diff --git a/quick_start/extern/vllm/Dockerfile.cpu b/quick_start/extern/vllm/Dockerfile.cpu index 65be709e3..5f59e1563 100644 --- a/quick_start/extern/vllm/Dockerfile.cpu +++ b/quick_start/extern/vllm/Dockerfile.cpu @@ -41,7 +41,7 @@ ENV PATH="$VIRTUAL_ENV/bin:$PATH" ENV UV_HTTP_TIMEOUT=500 -RUN git clone https://github.com/vllm-project/vllm/ . && git checkout v0.10.1.1 +RUN git clone https://github.com/vllm-project/vllm/ . && git checkout v0.9.2 # Install Python dependencies ENV PIP_EXTRA_INDEX_URL=${PIP_EXTRA_INDEX_URL} @@ -131,4 +131,4 @@ RUN --mount=type=cache,target=/root/.cache/uv \ WORKDIR / -ENTRYPOINT ["python3", "-m", "vllm.entrypoints.openai.api_server"] +ENTRYPOINT ["python3", "-m", "vllm.entrypoints.openai.api_server"] \ No newline at end of file From 4510896d68e8e157aa0d416bd8344e07c8492ae5 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Tue, 30 Sep 2025 14:01:42 +0000 Subject: [PATCH 026/126] update pymypdf loaders --- .../indexer/loaders/pdf_loaders/pymupdf.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/openrag/components/indexer/loaders/pdf_loaders/pymupdf.py b/openrag/components/indexer/loaders/pdf_loaders/pymupdf.py index 1ebc5f944..dce8e93dd 100644 --- a/openrag/components/indexer/loaders/pdf_loaders/pymupdf.py +++ b/openrag/components/indexer/loaders/pdf_loaders/pymupdf.py @@ -1,8 +1,8 @@ -import asyncio from pathlib import Path + +import pymupdf4llm from langchain_community.document_loaders import PyMuPDFLoader as pymupdf_loader from langchain_core.documents.base import Document -import pymupdf4llm from ..base import BaseLoader @@ -21,7 +21,7 @@ async def aload_document( s = "" for page_num, segment in enumerate(pages, start=1): - s = segment.page_content.strip() + f"\n[PAGE_{page_num}]\n" + s += segment.page_content.strip() + f"\n[PAGE_{page_num}]\n" doc = Document(page_content=s, metadata=metadata) if save_markdown: @@ -36,16 +36,11 @@ def __init__(self, **kwargs) -> None: async def aload_document( self, file_path, metadata: dict = None, save_markdown=False ): - pages = await asyncio.to_thread( - pymupdf4llm.to_markdown, - file_path, - write_images=False, - page_chunks=True, - ) + pages = pymupdf4llm.to_markdown(file_path, write_images=False, page_chunks=True) s = "" for page_num, segment in enumerate(pages, start=1): - s = segment.page_content.strip() + f"\n[PAGE_{page_num}]\n" + s += segment.get("text").strip() + f"\n[PAGE_{page_num}]\n" doc = Document(page_content=s, metadata=metadata) if save_markdown: From 9af50e7c6e5ab4501c7c830e3877830e7670c245 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Tue, 30 Sep 2025 14:01:42 +0000 Subject: [PATCH 027/126] update pymypdf loaders --- .../indexer/loaders/pdf_loaders/pymupdf.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/openrag/components/indexer/loaders/pdf_loaders/pymupdf.py b/openrag/components/indexer/loaders/pdf_loaders/pymupdf.py index 1ebc5f944..dce8e93dd 100644 --- a/openrag/components/indexer/loaders/pdf_loaders/pymupdf.py +++ b/openrag/components/indexer/loaders/pdf_loaders/pymupdf.py @@ -1,8 +1,8 @@ -import asyncio from pathlib import Path + +import pymupdf4llm from langchain_community.document_loaders import PyMuPDFLoader as pymupdf_loader from langchain_core.documents.base import Document -import pymupdf4llm from ..base import BaseLoader @@ -21,7 +21,7 @@ async def aload_document( s = "" for page_num, segment in enumerate(pages, start=1): - s = segment.page_content.strip() + f"\n[PAGE_{page_num}]\n" + s += segment.page_content.strip() + f"\n[PAGE_{page_num}]\n" doc = Document(page_content=s, metadata=metadata) if save_markdown: @@ -36,16 +36,11 @@ def __init__(self, **kwargs) -> None: async def aload_document( self, file_path, metadata: dict = None, save_markdown=False ): - pages = await asyncio.to_thread( - pymupdf4llm.to_markdown, - file_path, - write_images=False, - page_chunks=True, - ) + pages = pymupdf4llm.to_markdown(file_path, write_images=False, page_chunks=True) s = "" for page_num, segment in enumerate(pages, start=1): - s = segment.page_content.strip() + f"\n[PAGE_{page_num}]\n" + s += segment.get("text").strip() + f"\n[PAGE_{page_num}]\n" doc = Document(page_content=s, metadata=metadata) if save_markdown: From c461def8ea7c7db0d575a3653aa16a9df549250e Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Thu, 2 Oct 2025 08:16:41 +0000 Subject: [PATCH 028/126] model max len modified --- docker-compose.yaml | 4 ++-- quick_start/docker-compose.yaml | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 662795f97..6633a301d 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -44,7 +44,7 @@ x-vllm: &vllm_template --trust-remote-code --task embed --gpu_memory_utilization 0.3 - --max-model-len ${MAX_MODEL_LEN:-8192} + --max-model-len ${MAX_MODEL_LEN:-16384} # --max-num-seqs 1 # gpu_memory_utilization, max-num-seqs et max-model-len can be tuned depending on your GPU memory @@ -137,7 +137,7 @@ services: --model ${EMBEDDER_MODEL_NAME:-jinaai/jina-embeddings-v3} --trust-remote-code --dtype float32 - --max_model_len 8192 + --max-model-len ${MAX_MODEL_LEN:-16384} # --max-num-batched-tokens 32768 # dtype is required for aarch64 (https://github.com/vllm-project/vllm/issues/11327) and improves speed on amd64. # max-num-batched-tokens is required for aarch64 because chunked prefill isn't supported by V1 vllm backend diff --git a/quick_start/docker-compose.yaml b/quick_start/docker-compose.yaml index a44fdaa7c..e6b9f7725 100644 --- a/quick_start/docker-compose.yaml +++ b/quick_start/docker-compose.yaml @@ -5,9 +5,9 @@ include: x-openrag: &openrag_template # image: ghcr.io/linagora/openrag:dev-latest image: linagoraai/openrag:latest - # build: - # context: . - # dockerfile: Dockerfile + build: + context: . + dockerfile: Dockerfile volumes: # - ${CONFIG_VOLUME:-./.hydra_config}:/app/.hydra_config - ${DATA_VOLUME:-./data}:/app/data @@ -132,7 +132,7 @@ services: --model ${EMBEDDER_MODEL_NAME:-jinaai/jina-embeddings-v3} --trust-remote-code --dtype float32 - --max_model_len 8192 + --max-model-len ${MAX_MODEL_LEN:-8192} # --max-num-batched-tokens 16384 # dtype is required for aarch64 (https://github.com/vllm-project/vllm/issues/11327) and improves speed on amd64. # max-num-batched-tokens is required for aarch64 because chunked prefill isn't supported by V1 vllm backend From 974c5bdbd5ea0009d43fdbd6bce9361c06a18016 Mon Sep 17 00:00:00 2001 From: htagourti Date: Thu, 2 Oct 2025 15:02:40 +0000 Subject: [PATCH 029/126] added user access to API --- openrag/api.py | 75 ++++- openrag/components/indexer/indexer.py | 27 +- openrag/components/indexer/vectordb/utils.py | 218 ++++++++++--- .../components/indexer/vectordb/vectordb.py | 181 +++++++---- openrag/routers/actors.py | 6 +- openrag/routers/extract.py | 22 +- openrag/routers/indexer.py | 136 ++++---- openrag/routers/openai.py | 89 ++---- openrag/routers/partition.py | 131 +++++++- openrag/routers/queue.py | 8 +- openrag/routers/search.py | 27 +- openrag/routers/users.py | 70 +++++ openrag/routers/utils.py | 294 ++++++++++++++++++ openrag/utils/exceptions/vectordb.py | 24 ++ 14 files changed, 1020 insertions(+), 288 deletions(-) create mode 100644 openrag/routers/users.py create mode 100644 openrag/routers/utils.py diff --git a/openrag/api.py b/openrag/api.py index 5f9552519..8169ad619 100644 --- a/openrag/api.py +++ b/openrag/api.py @@ -19,10 +19,11 @@ import uvicorn from config import load_config -from fastapi import Depends, FastAPI, HTTPException, Request, status +from fastapi import FastAPI, Request from fastapi.middleware.cors import CORSMiddleware +from fastapi.openapi.utils import get_openapi from fastapi.responses import JSONResponse -from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer +from fastapi.security import HTTPBearer from fastapi.staticfiles import StaticFiles from routers.actors import router as actors_router from routers.extract import router as extract_router @@ -31,6 +32,9 @@ from routers.partition import router as partition_router from routers.queue import router as queue_router from routers.search import router as search_router +from routers.users import router as users_router +from starlette.middleware.base import BaseHTTPMiddleware +from utils.dependencies import vectordb from utils.exceptions import OpenRAGError from utils.logger import get_logger @@ -70,20 +74,61 @@ def __init__(self, config): security = HTTPBearer() -# Dependency to verify token -def verify_token(credentials: HTTPAuthorizationCredentials = Depends(security)): - token = credentials.credentials - if AUTH_TOKEN is None: - return # Auth disabled - if token != AUTH_TOKEN: - raise HTTPException( - status_code=status.HTTP_403_FORBIDDEN, detail="Invalid or missing token" - ) +app = FastAPI() +bearer_scheme = HTTPBearer() + + +def custom_openapi(): + if app.openapi_schema: + return app.openapi_schema + openapi_schema = get_openapi( + title="Openrag API", + version="1.0.0", + routes=app.routes, + ) + # Add global security + openapi_schema["components"]["securitySchemes"] = { + "BearerAuth": {"type": "http", "scheme": "bearer"} + } + openapi_schema["security"] = [{"BearerAuth": []}] + app.openapi_schema = openapi_schema + return app.openapi_schema + + +app.openapi = custom_openapi + + +class AuthMiddleware(BaseHTTPMiddleware): + async def dispatch(self, request: Request, call_next): + # Skip if no AUTH_TOKEN configured + if AUTH_TOKEN is None: + return await call_next(request) + + if request.url.path in ["/docs", "/openapi.json", "/redoc"]: + return await call_next(request) + + # Extract Bearer token + auth = request.headers.get("authorization") + if not auth or not auth.lower().startswith("bearer "): + return JSONResponse(status_code=403, content={"detail": "Missing token"}) + token = auth.split(" ", 1)[1] + + # Lookup user in DB + user = await vectordb.get_user_by_token.remote(token) + if not user: + return JSONResponse(status_code=403, content={"detail": "Invalid token"}) + + # Load user partitions + user_partitions = await vectordb.list_user_partitions.remote(user["id"]) + + # Attach to request + request.state.user = user + request.state.user_partitions = user_partitions + return await call_next(request) -# Apply globally only if AUTH_TOKEN is set -dependencies = [Depends(verify_token)] if AUTH_TOKEN else [] -app = FastAPI(dependencies=dependencies) +# Register once +app.add_middleware(AuthMiddleware) # Exception handlers @@ -146,6 +191,8 @@ async def health_check(request: Request): app.include_router(queue_router, prefix="/queue", tags=[Tags.QUEUE]) # Mount the actors router app.include_router(actors_router, prefix="/actors", tags=[Tags.ACTORS]) +# Mount the users router +app.include_router(users_router, prefix="/users", tags=["Users"]) if WITH_OPENAI_API: # Mount the openai router diff --git a/openrag/components/indexer/indexer.py b/openrag/components/indexer/indexer.py index 2592f0bcc..593b9c370 100644 --- a/openrag/components/indexer/indexer.py +++ b/openrag/components/indexer/indexer.py @@ -100,6 +100,7 @@ async def add_file( path: Union[str, List[str]], metadata: Optional[Dict] = {}, partition: Optional[str] = None, + user: Optional[Dict] = None, ): task_state_manager = ray.get_actor("TaskStateManager", namespace="openrag") task_id = ray.get_runtime_context().get_task_id() @@ -117,6 +118,7 @@ async def add_file( file_id=metadata.get("file_id"), partition=partition, metadata=user_metadata, + user_id=user.get("id"), ) # Check/normalize partition @@ -132,7 +134,7 @@ async def add_file( if self.enable_insertion and chunks: await task_state_manager.set_state.remote(task_id, "INSERTING") - await self.handle.insert_documents.remote(chunks) + await self.handle.insert_documents.remote(chunks, user=user) log.info(f"Document {path} indexed successfully") else: log.info( @@ -164,9 +166,9 @@ async def add_file( return True @ray.method(concurrency_group="insert") - async def insert_documents(self, chunks): + async def insert_documents(self, chunks, user): vectordb = ray.get_actor("Vectordb", namespace="openrag") - await vectordb.async_add_documents.remote(chunks) + await vectordb.async_add_documents.remote(chunks, user) @ray.method(concurrency_group="delete") async def delete_file(self, file_id: str, partition: str) -> bool: @@ -187,7 +189,13 @@ async def delete_file(self, file_id: str, partition: str) -> bool: raise @ray.method(concurrency_group="update") - async def update_file_metadata(self, file_id: str, metadata: Dict, partition: str): + async def update_file_metadata( + self, + file_id: str, + metadata: Dict, + partition: str, + user: Optional[Dict] = None, + ): log = self.logger.bind(file_id=file_id, partition=partition) vectordb = ray.get_actor("Vectordb", namespace="openrag") if not self.enable_insertion: @@ -202,7 +210,7 @@ async def update_file_metadata(self, file_id: str, metadata: Dict, partition: st doc.metadata.update(metadata) await self.delete_file(file_id, partition) - await vectordb.async_add_documents.remote(docs) + await vectordb.async_add_documents.remote(docs, user=user) log.info("Metadata updated for file.") except Exception as e: @@ -283,7 +291,13 @@ async def set_error(self, task_id: str, tb_str: str): @ray.method(concurrency_group="set") async def set_details( - self, task_id: str, *, file_id: str, partition: int, metadata: dict + self, + task_id: str, + *, + file_id: str, + partition: int, + metadata: dict, + user_id: int, ): async with self.lock: info = await self._ensure_task(task_id) @@ -291,6 +305,7 @@ async def set_details( "file_id": file_id, "partition": partition, "metadata": metadata, + "user_id": user_id, } @ray.method(concurrency_group="set") diff --git a/openrag/components/indexer/vectordb/utils.py b/openrag/components/indexer/vectordb/utils.py index 3036282e1..1188679f2 100644 --- a/openrag/components/indexer/vectordb/utils.py +++ b/openrag/components/indexer/vectordb/utils.py @@ -98,7 +98,7 @@ class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True) - external_ref = Column(String, unique=True, nullable=True) # IdP/user id upstream + external_ref = Column(String, unique=True, nullable=True) email = Column(String, unique=True, nullable=True, index=True) display_name = Column(String, nullable=True) token = Column(String, unique=True, nullable=True, index=True) @@ -147,10 +147,10 @@ def __init__(self, database_url: str, logger=logger): Base.metadata.create_all(self.engine) self.logger = logger + self.Session = sessionmaker(bind=self.engine) AUTH_TOKEN = os.getenv("AUTH_TOKEN") if AUTH_TOKEN: self._ensure_admin_user(AUTH_TOKEN) - self.Session = sessionmaker(bind=self.engine) except Exception as e: raise VDBConnectionError( @@ -207,14 +207,18 @@ def list_partition_files(self, partition: str, limit: Optional[int] = None): return result def add_file_to_partition( - self, file_id: str, partition: str, file_metadata: Optional[Dict] = None + self, + file_id: str, + partition: str, + file_metadata: Optional[Dict] = None, + user_id: Optional[int] = None, ): """Add a file to a partition - Optimized with direct partition lookup""" log = self.logger.bind(file_id=file_id, partition=partition) with self.Session() as session: try: existing_file = ( - session.query(File.id) # Only select id, not entire object + session.query(File.id) .filter(File.file_id == file_id, File.partition_name == partition) .first() ) @@ -232,6 +236,11 @@ def add_file_to_partition( session.add(partition_obj) log.info("Created new partition") + membership = PartitionMembership( + partition_name=partition, user_id=user_id, role="owner" + ) + session.add(membership) + # Add file to partition file = File( file_id=file_id, @@ -263,24 +272,6 @@ def remove_file_from_partition(self, file_id: str, partition: str): session.delete(file) session.commit() log.info(f"Removed file {file_id} from partition {partition}") - - # Use count query instead of loading all files - file_count = ( - session.query(File) - .filter(File.partition_name == partition) - .count() - ) - if file_count == 0: - partition_obj = ( - session.query(Partition) - .filter(Partition.partition == partition) - .first() - ) - if partition_obj: - session.delete(partition_obj) - session.commit() - log.info("Deleted empty partition") - return True log.warning("File not found in partition") return False @@ -352,7 +343,7 @@ def create_user( ) -> dict: """Create a user and generate an API token for them.""" with self.Session() as s: - token = secrets.token_hex(32) # 64-char random token + token = f"or-{secrets.token_hex(16)}" user = User( email=email, @@ -373,12 +364,109 @@ def create_user( "is_admin": user.is_admin, } - def get_user_by_email(self, email: str) -> Optional[User]: + def list_users(self) -> list[dict]: + with self.Session() as s: + users = s.query(User).all() + return [ + { + "id": u.id, + "email": u.email, + "display_name": u.display_name, + "external_ref": u.external_ref, + "is_admin": u.is_admin, + "created_at": u.created_at.isoformat(), + } + for u in users + ] + + def get_user_by_token(self, token: str) -> Optional[dict]: + with self.Session() as s: + user = s.query(User).filter(User.token == token).first() + if not user: + return None + + memberships = [ + { + "partition": m.partition_name, + "role": m.role, + "added_at": m.added_at.isoformat(), + } + for m in user.memberships + ] + + return { + "id": user.id, + "email": user.email, + "display_name": user.display_name, + "is_admin": user.is_admin, + "memberships": memberships, + } + + def get_user_by_id(self, user_id: int) -> Optional[dict]: + with self.Session() as s: + user = s.query(User).filter(User.id == user_id).first() + if not user: + return None + + memberships = [ + { + "partition": m.partition_name, + "role": m.role, + "added_at": m.added_at.isoformat(), + } + for m in user.memberships + ] + + return { + "id": user.id, + "email": user.email, + "display_name": user.display_name, + "is_admin": user.is_admin, + "memberships": memberships, + } + + def delete_user(self, user_id: int) -> bool: with self.Session() as s: - return s.query(User).filter(User.email == email).first() + user = s.query(User).filter(User.id == user_id).first() + if not user: + return False + s.delete(user) + s.commit() + return True + + def regenerate_user_token(self, user_id: int) -> dict: + with self.Session() as s: + user = s.query(User).filter(User.id == user_id).first() + new_token = f"or-{secrets.token_hex(16)}" + user.token = new_token + s.commit() + s.refresh(user) + + return { + "id": user.id, + "email": user.email, + "display_name": user.display_name, + "token": user.token, + "is_admin": user.is_admin, + } # Memberships - def add_member(self, partition: str, user_id: int, role: str) -> bool: + def list_partition_members(self, partition: str) -> list[dict]: + with self.Session() as s: + if not s.query(Partition).filter(Partition.partition == partition).first(): + self.logger.warning(f"Partition '{partition}' does not exist.") + return [] + ms = s.query(PartitionMembership).filter_by(partition_name=partition).all() + return [ + { + "user_id": m.user_id, + "role": m.role, + "added_at": m.added_at.isoformat(), + } + for m in ms + ] + + def add_partition_member(self, partition: str, user_id: int, role: str) -> bool: with self.Session() as s: if not s.query(Partition).filter(Partition.partition == partition).first(): s.add(Partition(partition=partition)) @@ -388,7 +476,7 @@ def add_member(self, partition: str, user_id: int, role: str) -> bool: .first() ) if m: - m.role = role # upgrade/downgrade role + m.role = role else: s.add( PartitionMembership( @@ -398,7 +486,7 @@ def add_member(self, partition: str, user_id: int, role: str) -> bool: s.commit() return True - def remove_member(self, partition: str, user_id: int) -> bool: + def remove_partition_member(self, partition: str, user_id: int) -> bool: with self.Session() as s: m = ( s.query(PartitionMembership) @@ -411,27 +499,67 @@ def remove_member(self, partition: str, user_id: int) -> bool: s.commit() return True - def list_partition_members(self, partition: str): + def update_partition_member_role( + self, partition: str, user_id: int, new_role: str + ) -> bool: with self.Session() as s: - ms = s.query(PartitionMembership).filter_by(partition_name=partition).all() - return [ - { - "user_id": m.user_id, - "role": m.role, - "added_at": m.added_at.isoformat(), - } - for m in ms - ] + m = ( + s.query(PartitionMembership) + .filter_by(partition_name=partition, user_id=user_id) + .first() + ) + if not m: + return False + m.role = new_role + s.commit() + return True + + def create_partition(self, partition: str, user_id: int): + with self.Session() as s: + if s.query(Partition).filter(Partition.partition == partition).first(): + self.logger.warning(f"Partition '{partition}' already exists.") + return + p = Partition(partition=partition) + s.add(p) + # Add creator as owner + m = PartitionMembership( + partition_name=partition, user_id=user_id, role="owner" + ) + s.add(m) + s.commit() + self.logger.info(f"Partition '{partition}' created by user_id {user_id}.") def list_user_partitions(self, user_id: int): + """Return full partition objects (to_dict) with role for a given user.""" with self.Session() as s: - ms = s.query(PartitionMembership).filter_by(user_id=user_id).all() - return [{"partition": m.partition_name, "role": m.role} for m in ms] + # Join Partition and PartitionMembership + results = ( + s.query(Partition, PartitionMembership.role) + .join( + PartitionMembership, + Partition.partition == PartitionMembership.partition_name, + ) + .filter(PartitionMembership.user_id == user_id) + .all() + ) - def user_can_access(self, partition: str, user_id: int) -> bool: + partitions = [] + for partition_obj, role in results: + d = partition_obj.to_dict() + d["role"] = role + partitions.append(d) + + return partitions + + def user_exists(self, user_id: int) -> bool: with self.Session() as s: - return s.query( + return s.query(User).filter(User.id == user_id).first() is not None + + def user_is_partition_member(self, user_id: int, partition: str) -> bool: + with self.Session() as s: + return ( s.query(PartitionMembership) - .filter_by(partition_name=partition, user_id=user_id) - .exists() - ).scalar() + .filter_by(user_id=user_id, partition_name=partition) + .first() + is not None + ) diff --git a/openrag/components/indexer/vectordb/vectordb.py b/openrag/components/indexer/vectordb/vectordb.py index 0d61f2692..3d039e8dc 100644 --- a/openrag/components/indexer/vectordb/vectordb.py +++ b/openrag/components/indexer/vectordb/vectordb.py @@ -60,7 +60,7 @@ async def delete_file(self, file_id: str, partition: str): pass @abstractmethod - async def async_add_documents(self, chunks: list[Document]): + async def async_add_documents(self, chunks: list[Document], user: dict): pass @abstractmethod @@ -326,7 +326,7 @@ def _create_index(self): async def list_collections(self) -> list[str]: return self._client.list_collections() - async def async_add_documents(self, chunks: list[Document]) -> None: + async def async_add_documents(self, chunks: list[Document], user: dict) -> None: """Asynchronously add documents to the vector store.""" try: @@ -365,7 +365,10 @@ async def async_add_documents(self, chunks: list[Document]) -> None: # insert file_id and partition into partition_file_manager self.partition_file_manager.add_file_to_partition( - file_id=file_id, partition=partition, file_metadata=file_metadata + file_id=file_id, + partition=partition, + file_metadata=file_metadata, + user_id=user.get("id"), ) self.logger.info(f"File '{file_id}' added to partition '{partition}'") except EmbeddingError as e: @@ -502,19 +505,7 @@ async def async_search( async def delete_file(self, file_id: str, partition: str): log = self.logger.bind(file_id=file_id, partition=partition) try: - if not self.partition_file_manager.file_exists_in_partition( - file_id=file_id, partition=partition - ): - # raise VDB - log.exception( - f"File ID {file_id} does not exist in partition {partition}" - ) - raise VDBFileNotFoundError( - f"File ID '{file_id}' does not exist in partition {partition}", - collection_name=self.collection_name, - partition=partition, - file_id=file_id, - ) + self._check_file_exists(file_id, partition) res = await self._async_client.delete( collection_name=self.collection_name, filter=f"partition == '{partition}' and file_id == '{file_id}'", @@ -553,19 +544,7 @@ async def get_file_chunks( ): log = self.logger.bind(file_id=file_id, partition=partition) try: - if not self.partition_file_manager.file_exists_in_partition( - file_id=file_id, partition=partition - ): - log.exception( - f"File ID '{file_id}' does not exist in partition '{partition}'" - ) - raise VDBFileNotFoundError( - f"File ID '{file_id}' does not exist in partition '{partition}'", - collection_name=self.collection_name, - partition=partition, - file_id=file_id, - ) - + self._check_file_exists(file_id, partition) # Adjust filter expression based on the type of value filter_expression = "partition == {partition} and file_id == {file_id}" filter_params = {"partition": partition, "file_id": file_id} @@ -686,30 +665,11 @@ def file_exists(self, file_id: str, partition: str): def list_partition_files(self, partition: str, limit: Optional[int] = None): try: - partition_dict = self.partition_file_manager.list_partition_files( + self._check_partition_exists(partition) + return self.partition_file_manager.list_partition_files( partition=partition, limit=limit ) - if not partition_dict: - self.logger.warning( - f"Partition does exist or No files found in partition {partition}" - ) - raise VDBPartitionNotFound( - f"Partition `{partition}` does not exist or no files found.", - collection_name=self.collection_name, - partition=partition, - ) - return partition_dict - - except MilvusException as e: - self.logger.exception( - f"Failed to list files in partition {partition}", error=str(e) - ) - raise VDBPartitionNotFound( - f"Failed to list files in partition `{partition}`: {str(e)}", - collection_name=self.collection_name, - partition=partition, - ) except VDBError: raise @@ -786,16 +746,7 @@ async def list_all_chunk(self, partition: str, include_embedding: bool = True): List all chunk from a given partition. """ try: - if not self.partition_file_manager.partition_exists(partition): - self.logger.warning( - f"Partition '{partition}' does not exist or no files found." - ) - # Raise an exception if the partition does not exist - raise VDBPartitionNotFound( - f"Partition '{partition}' not found.", - collection_name=self.collection_name, - partition=partition, - ) + self._check_partition_exists(partition) # Create a filter expression for the query filter_expression = "partition == {partition}" @@ -861,6 +812,116 @@ def prepare_metadata(res: dict): partition=partition, ) + async def create_user( + self, + email: str | None = None, + display_name: str | None = None, + external_ref: str | None = None, + is_admin: bool = False, + ): + return self.partition_file_manager.create_user( + email, display_name, external_ref, is_admin + ) + + async def get_user(self, user_id: int): + self._check_user_exists(user_id) + return self.partition_file_manager.get_user_by_id(user_id) + + async def delete_user(self, user_id: int): + self._check_user_exists(user_id) + user_partitions = [ + p["partition"] + for p in self.partition_file_manager.list_user_partitions(user_id) + ] + for partition in user_partitions: + self.partition_file_manager.delete_partition(partition) + self.partition_file_manager.delete_user(user_id) + + async def list_users(self): + return self.partition_file_manager.list_users() + + async def get_user_by_token(self, token: str): + return self.partition_file_manager.get_user_by_token(token) + + async def regenerate_user_token(self, user_id: int): + self._check_user_exists(user_id) + return self.partition_file_manager.regenerate_user_token(user_id) + + async def list_user_partitions(self, user_id: int): + self._check_user_exists(user_id) + return self.partition_file_manager.list_user_partitions(user_id) + + async def list_partition_members(self, partition: str) -> List[dict]: + self._check_partition_exists(partition) + return self.partition_file_manager.list_partition_members(partition) + + async def update_partition_member_role( + self, partition: str, user_id: int, new_role: str + ): + self._check_membership_exists(partition, user_id) + self.partition_file_manager.update_partition_member_role( + partition, user_id, new_role + ) + self.logger.info( + f"User_id {user_id} role updated to '{new_role}' in partition '{partition}'." + ) + + async def create_partition(self, partition: str, user_id: int): + self._check_user_exists(user_id) + self.partition_file_manager.create_partition(partition, user_id) + self.logger.info(f"Partition '{partition}' created by user_id {user_id}.") + + async def add_partition_member(self, partition: str, user_id: int, role: str): + self._check_partition_exists(partition) + self._check_user_exists(user_id) + self.partition_file_manager.add_partition_member(partition, user_id, role) + self.logger.info(f"User_id {user_id} added to partition '{partition}'.") + + async def remove_partition_member(self, partition: str, user_id: int) -> bool: + self._check_membership_exists(partition, user_id) + self.partition_file_manager.remove_partition_member(partition, user_id) + self.logger.info(f"User_id {user_id} removed from partition '{partition}'.") + + def _check_user_exists(self, user_id: int): + if not self.partition_file_manager.user_exists(user_id): + self.logger.warning(f"User with ID {user_id} does not exist.") + raise VDBUserNotFound( + f"User with ID {user_id} does not exist.", + collection_name=self.collection_name, + user_id=user_id, + ) + + def _check_partition_exists(self, partition: str): + if not self.partition_file_manager.partition_exists(partition): + self.logger.warning(f"Partition '{partition}' does not exist.") + raise VDBPartitionNotFound( + f"Partition '{partition}' does not exist.", + collection_name=self.collection_name, + partition=partition, + ) + + def _check_membership_exists(self, partition: str, user_id: int): + self._check_partition_exists(partition) + self._check_user_exists(user_id) + if not self.partition_file_manager.user_is_partition_member(user_id, partition): + raise VDBMembershipNotFound( + f"User with ID {user_id} is not a member of partition '{partition}'.", + collection_name=self.collection_name, + user_id=user_id, + partition=partition, + ) + + def _check_file_exists(self, file_id, partition: str): + if not self.partition_file_manager.file_exists_in_partition( + file_id=file_id, partition=partition + ): + raise VDBFileNotFoundError( + f"File ID '{file_id}' does not exist in partition '{partition}'", + collection_name=self.collection_name, + partition=partition, + file_id=file_id, + ) + def _parse_documents_from_search_results(search_results): if not search_results: diff --git a/openrag/routers/actors.py b/openrag/routers/actors.py index ef9009fc6..5f289017a 100644 --- a/openrag/routers/actors.py +++ b/openrag/routers/actors.py @@ -1,6 +1,6 @@ import ray from components.utils import get_llm_semaphore, get_vlm_semaphore -from fastapi import APIRouter, HTTPException, status +from fastapi import APIRouter, Depends, HTTPException, status from fastapi.responses import JSONResponse from ray.util.state import list_actors from utils.dependencies import ( @@ -12,10 +12,12 @@ ) from utils.logger import get_logger +from .utils import require_admin + logger = get_logger() -router = APIRouter() +router = APIRouter(dependencies=[Depends(require_admin)]) actor_creation_map = { "TaskStateManager": get_task_state_manager, diff --git a/openrag/routers/extract.py b/openrag/routers/extract.py index 91c7dd100..74f1b5364 100644 --- a/openrag/routers/extract.py +++ b/openrag/routers/extract.py @@ -1,17 +1,23 @@ -from fastapi import APIRouter, Depends, HTTPException, status +from fastapi import APIRouter, Depends, HTTPException, Request, status from fastapi.responses import JSONResponse from utils.dependencies import get_vectordb from utils.logger import get_logger +from .utils import current_user_or_admin_partitions_list + logger = get_logger() # Create an APIRouter instance router = APIRouter() - @router.get("/{extract_id}") -async def get_extract(extract_id: str, vectordb=Depends(get_vectordb)): +async def get_extract( + request: Request, + extract_id: str, + vectordb=Depends(get_vectordb), + user_partitions=Depends(current_user_or_admin_partitions_list), +): log = logger.bind(extract_id=extract_id) try: chunk = await vectordb.get_chunk_by_id.remote(extract_id) @@ -21,6 +27,16 @@ async def get_extract(extract_id: str, vectordb=Depends(get_vectordb)): status_code=status.HTTP_404_NOT_FOUND, detail=f"Extract '{extract_id}' not found.", ) + chunk_partition = chunk.metadata["partition"] + log.info( + f"User partitions: {user_partitions}, Chunk partition: {chunk_partition}" + ) + if chunk_partition not in user_partitions and user_partitions != ["all"]: + log.warning("User does not have access to this extract.") + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail=f"User does not have access to extract '{extract_id}'.", + ) log.info("Extract successfully retrieved.") except Exception as e: log.exception("Failed to retrieve extract.", error=str(e)) diff --git a/openrag/routers/indexer.py b/openrag/routers/indexer.py index 2f5eefd3d..8639a25d0 100644 --- a/openrag/routers/indexer.py +++ b/openrag/routers/indexer.py @@ -8,7 +8,6 @@ from fastapi import ( APIRouter, Depends, - Form, HTTPException, Request, Response, @@ -19,6 +18,17 @@ from utils.dependencies import get_indexer, get_task_state_manager, get_vectordb from utils.logger import get_logger +from .utils import ( + current_user_partitions, + ensure_partition_role, + human_readable_size, + require_partition_editor, + require_task_owner, + validate_file_format, + validate_file_id, + validate_metadata, +) + # load logger logger = get_logger() @@ -37,68 +47,6 @@ router = APIRouter() -def is_file_id_valid(file_id: str) -> bool: - return not any(c in file_id for c in FORBIDDEN_CHARS_IN_FILE_ID) - - -async def validate_file_id(file_id: str): - if not is_file_id_valid(file_id): - raise HTTPException( - status_code=status.HTTP_400_BAD_REQUEST, - detail=f"File ID contains forbidden characters: {', '.join(FORBIDDEN_CHARS_IN_FILE_ID)}", - ) - if not file_id.strip(): - raise HTTPException( - status_code=status.HTTP_400_BAD_REQUEST, detail="File ID cannot be empty." - ) - return file_id - - -async def validate_metadata(metadata: Optional[Any] = Form(None)): - try: - processed_metadata = metadata or "{}" - processed_metadata = json.loads(processed_metadata) - return processed_metadata - except json.JSONDecodeError: - raise HTTPException( - status_code=status.HTTP_400_BAD_REQUEST, detail="Invalid JSON in metadata" - ) - - -async def validate_file_format( - file: UploadFile, - metadata: dict = Depends(validate_metadata), -): - file_extension = ( - file.filename.split(".")[-1].lower() if "." in file.filename else "" - ) - mimetype = metadata.get("mimetype", None) - - if ( - file_extension not in ACCEPTED_FILE_FORMATS - and mimetype not in DICT_MIMETYPES.keys() - ): - details = ( - f"Unsupported file format: {file_extension} or file mimetype.\n" - f"Supported formats: {', '.join(ACCEPTED_FILE_FORMATS)}\n" - f"Supported mimetypes: {', '.join(DICT_MIMETYPES.keys())}" - ) - raise HTTPException( - status_code=status.HTTP_415_UNSUPPORTED_MEDIA_TYPE, - detail=details, - ) - return file - - -def _human_readable_size(size_bytes: int) -> str: - """Convert bytes to a human-readable format (e.g., '2.4 MB').""" - for unit in ["B", "KB", "MB", "GB", "TB"]: - if size_bytes < 1024: - return f"{size_bytes:.2f} {unit}" - size_bytes /= 1024 - return f"{size_bytes:.2f} PB" - - @router.get( "/supported/types", description="Returns the list of supported file extensions and MIME types.", @@ -155,8 +103,14 @@ async def add_file( indexer=Depends(get_indexer), task_state_manager=Depends(get_task_state_manager), vectordb=Depends(get_vectordb), + user=Depends(require_partition_editor), ): - log = logger.bind(file_id=file_id, partition=partition, filename=file.filename) + log = logger.bind( + file_id=file_id, + partition=partition, + filename=file.filename, + user=user.get("display_name"), + ) if await vectordb.file_exists.remote(file_id, partition): raise HTTPException( @@ -182,16 +136,16 @@ async def add_file( file_stat = Path(file_path).stat() # Append extra metadata - metadata["file_size"] = _human_readable_size(file_stat.st_size) + metadata["file_size"] = human_readable_size(file_stat.st_size) metadata["created_at"] = datetime.fromtimestamp(file_stat.st_ctime).isoformat() metadata["file_id"] = file_id # Indexing the file task = indexer.add_file.remote( - path=file_path, metadata=metadata, partition=partition + path=file_path, metadata=metadata, partition=partition, user=user ) await task_state_manager.set_state.remote(task.task_id().hex(), "QUEUED") - + await task_state_manager.set_object_ref.remote(task.task_id().hex(), {"ref": task}) return JSONResponse( status_code=status.HTTP_201_CREATED, content={ @@ -203,8 +157,13 @@ async def add_file( @router.delete("/partition/{partition}/file/{file_id}") -async def delete_file(partition: str, file_id: str, indexer=Depends(get_indexer)): - await indexer.delete_file.remote(file_id, partition) +async def delete_file( + partition: str, + file_id: str, + indexer=Depends(get_indexer), + user=Depends(require_partition_editor), +): + await indexer.delete_file.remote(file_id, partition, user=user) return Response(status_code=status.HTTP_204_NO_CONTENT) @@ -218,6 +177,7 @@ async def put_file( indexer=Depends(get_indexer), task_state_manager=Depends(get_task_state_manager), vectordb=Depends(get_vectordb), + user=Depends(require_partition_editor), ): log = logger.bind(file_id=file_id, partition=partition, filename=file.filename) @@ -248,7 +208,7 @@ async def put_file( file_stat = Path(file_path).stat() # Append extra metadata - metadata["file_size"] = _human_readable_size(file_stat.st_size) + metadata["file_size"] = human_readable_size(file_stat.st_size) metadata["created_at"] = datetime.fromtimestamp(file_stat.st_ctime).isoformat() metadata["file_id"] = file_id @@ -257,6 +217,7 @@ async def put_file( path=file_path, metadata=metadata, partition=partition ) await task_state_manager.set_state.remote(task.task_id().hex(), "QUEUED") + await task_state_manager.set_object_ref.remote(task.task_id().hex(), {"ref": task}) return JSONResponse( status_code=status.HTTP_202_ACCEPTED, @@ -274,10 +235,21 @@ async def patch_file( file_id: str = Depends(validate_file_id), metadata: Optional[Any] = Depends(validate_metadata), indexer=Depends(get_indexer), - vectordb=Depends(get_vectordb), + user=Depends(require_partition_editor), + user_partitions=Depends(current_user_partitions), ): metadata["file_id"] = file_id - await indexer.update_file_metadata.remote(file_id, metadata, partition) + + # Make sure partition role is valid if partition is being changed + if "partition" in metadata: + await ensure_partition_role( + partition=metadata["partition"], + user=user, + user_partitions=user_partitions, + required_role="editor", + ) + + await indexer.update_file_metadata.remote(file_id, metadata, partition, user=user) return JSONResponse( status_code=status.HTTP_200_OK, content={"message": f"Metadata for file '{file_id}' successfully updated."}, @@ -289,6 +261,7 @@ async def get_task_status( request: Request, task_id: str, task_state_manager=Depends(get_task_state_manager), + task_details=Depends(require_task_owner), ): # fetch task state state = await task_state_manager.get_state.remote(task_id) @@ -298,14 +271,11 @@ async def get_task_status( detail=f"Task '{task_id}' not found.", ) - # fetch task details - details = await task_state_manager.get_details.remote(task_id) - # format the response content: dict[str, Any] = { "task_id": task_id, "task_state": state, - "details": details, + "details": task_details, } if state == "FAILED": @@ -316,7 +286,9 @@ async def get_task_status( @router.get("/task/{task_id}/error") async def get_task_error( - task_id: str, task_state_manager=Depends(get_task_state_manager) + task_id: str, + task_state_manager=Depends(get_task_state_manager), + task_details=Depends(require_task_owner), ): try: error = await task_state_manager.get_error.remote(task_id) @@ -336,7 +308,9 @@ async def get_task_error( @router.get("/task/{task_id}/logs") -async def get_task_logs(task_id: str, max_lines: int = 100): +async def get_task_logs( + task_id: str, max_lines: int = 100, task_details=Depends(require_task_owner) +): try: if not LOG_FILE.exists(): raise HTTPException(status_code=500, detail="Log file not found.") @@ -370,7 +344,11 @@ async def get_task_logs(task_id: str, max_lines: int = 100): @router.delete("/task/{task_id}", name="cancel_task") -async def cancel_task(task_id: str, task_state_manager=Depends(get_task_state_manager)): +async def cancel_task( + task_id: str, + task_state_manager=Depends(get_task_state_manager), + task_details=Depends(require_task_owner), +): try: obj_ref = await task_state_manager.get_object_ref.remote(task_id) if obj_ref is None: diff --git a/openrag/routers/openai.py b/openrag/routers/openai.py index b9ba7d3b5..3dabf6946 100644 --- a/openrag/routers/openai.py +++ b/openrag/routers/openai.py @@ -1,6 +1,7 @@ import json from urllib.parse import quote +import consts from components.pipeline import RagPipeline from config import load_config from fastapi import APIRouter, Body, Depends, HTTPException, Request, status @@ -10,10 +11,16 @@ OpenAIChatCompletionRequest, OpenAICompletionRequest, ) -from openai import AsyncOpenAI from utils.dependencies import get_vectordb from utils.logger import get_logger -import consts + +from .utils import ( + check_llm_model_availability, + current_user, + current_user_or_admin_partitions, + current_user_or_admin_partitions_list, + get_partition_name, +) logger = get_logger() config = load_config() @@ -22,30 +29,6 @@ ragpipe = RagPipeline(config=config, logger=logger) -def get_app_state(request: Request): - return request.app.state.app_state - - -async def check_llm_model_availability(request: Request): - models = {"VLM": config.vlm, "LLM": config.llm} - for model_type, param in models.items(): - try: - client = AsyncOpenAI(api_key=param["api_key"], base_url=param["base_url"]) - openai_models = await client.models.list() - available_models = {m.id for m in openai_models.data} - if param["model"] not in available_models: - raise HTTPException( - status_code=status.HTTP_404_NOT_FOUND, - detail=f"Only these models ({available_models}) are available for your `{model_type}`. Please check your configuration file.", - ) - except Exception as e: - logger.exception("Failed to validate model", model=model_type) - raise HTTPException( - status_code=status.HTTP_404_NOT_FOUND, - detail=f"Error while checking the `{model_type}` endpoint: {str(e)}", - ) - - @router.get( "/models", summary="OpenAI-compatible model listing endpoint", @@ -61,15 +44,16 @@ async def check_llm_model_availability(request: Request): response_description="A list of available models in OpenAI format", ) async def list_models( - app_state=Depends(get_app_state), _: None = Depends(check_llm_model_availability), vectordb=Depends(get_vectordb), + user_partitions=Depends(current_user_or_admin_partitions), ): - partitions = await vectordb.list_partitions.remote() - logger.debug("Listing models", partition_count=len(partitions)) + if [p["partition"] for p in user_partitions] == ["all"]: + user_partitions = await vectordb.list_partitions.remote() + logger.debug("Listing models", partition_count=len(user_partitions)) models = [] - for partition in partitions: + for partition in user_partitions: model_id = f"{consts.PARTITION_PREFIX}{partition['partition']}" models.append( { @@ -81,33 +65,16 @@ async def list_models( ) models.append( - {"id": f"{consts.PARTITION_PREFIX}all", "object": "model", "created": 0, "owned_by": "OpenRAG"} + { + "id": f"{consts.PARTITION_PREFIX}all", + "object": "model", + "created": 0, + "owned_by": "OpenRAG", + } ) return JSONResponse(content={"object": "list", "data": models}) -async def __get_partition_name(model_name, app_state): - vectordb = get_vectordb() - - partition_prefix = consts.PARTITION_PREFIX - if model_name.startswith(consts.LEGACY_PARTITION_PREFIX): - # XXX - This is for backward compatibility, but should eventually be removed - partition_prefix = consts.LEGACY_PARTITION_PREFIX - - if not model_name.startswith(partition_prefix): - raise HTTPException( - status_code=status.HTTP_404_NOT_FOUND, - detail=f"Model not found. Model should respect this format: {consts.PARTITION_PREFIX}partition_name", - ) - partition = model_name.split(partition_prefix)[1] - if partition != "all" and not await vectordb.partition_exists.remote(partition): - raise HTTPException( - status_code=status.HTTP_404_NOT_FOUND, - detail=f"Partition `{partition}` not found for given model `{model_name}`", - ) - return partition - - def __prepare_sources(request: Request, docs: list[Document]): links = [] for doc in docs: @@ -144,8 +111,9 @@ def __prepare_sources(request: Request, docs: list[Document]): async def openai_chat_completion( request2: Request, request: OpenAIChatCompletionRequest = Body(...), - app_state=Depends(get_app_state), _: None = Depends(check_llm_model_availability), + user=Depends(current_user), + user_partitions=Depends(current_user_or_admin_partitions_list), ): model_name = request.model log = logger.bind(model=model_name, endpoint="/chat/completions") @@ -162,14 +130,17 @@ async def openai_chat_completion( ) try: - partition = await __get_partition_name(model_name, app_state) + partitions = await get_partition_name( + model_name, user_partitions, is_admin=user["is_admin"] + ) + log.debug(f"Using partitions: {partitions}") except Exception as e: log.warning("Invalid model or partition", error=str(e)) raise try: llm_output, docs = await ragpipe.chat_completion( - partition=[partition], payload=request.model_dump() + partition=partitions, payload=request.model_dump() ) log.debug("RAG chat completion pipeline executed.") except Exception as e: @@ -236,8 +207,8 @@ async def stream_response(): async def openai_completion( request2: Request, request: OpenAICompletionRequest, - app_state=Depends(get_app_state), _: None = Depends(check_llm_model_availability), + user_partitions=Depends(current_user_or_admin_partitions_list), ): model_name = request.model log = logger.bind(model=model_name, endpoint="/completions") @@ -257,7 +228,7 @@ async def openai_completion( ) try: - partition = await __get_partition_name(model_name, app_state) + partitions = await get_partition_name(model_name, user_partitions) except Exception as e: log.warning(f"Invalid model or partition: {e}") @@ -265,7 +236,7 @@ async def openai_completion( try: llm_output, docs = await ragpipe.completions( - partition=[partition], payload=request.model_dump() + partition=partitions, payload=request.model_dump() ) log.debug("RAG completion pipeline executed.") except Exception as e: diff --git a/openrag/routers/partition.py b/openrag/routers/partition.py index 7417f0b91..d429185a0 100644 --- a/openrag/routers/partition.py +++ b/openrag/routers/partition.py @@ -5,6 +5,12 @@ from utils.dependencies import get_vectordb from utils.logger import get_logger +from .utils import ( + current_user_or_admin_partitions_list, + require_partition_owner, + require_partition_viewer, +) + logger = get_logger() router = APIRouter() @@ -14,25 +20,26 @@ def _quote_param_value(s: str) -> str: @router.get("/") -async def list_existant_partitions(vectordb=Depends(get_vectordb)): - try: +async def list_existant_partitions( + vectordb=Depends(get_vectordb), + partitions=Depends(current_user_or_admin_partitions_list), +): + if partitions == ["all"]: partitions = await vectordb.list_partitions.remote() - logger.debug( - "Returned list of existing partitions.", partition_count=len(partitions) - ) - return JSONResponse( - status_code=status.HTTP_200_OK, content={"partitions": partitions} - ) - except Exception as e: - logger.exception("Failed to list partitions") - raise HTTPException( - status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, - detail=f"Failed to list partitions: {str(e)}", - ) + logger.debug( + "Returned list of existing partitions.", partition_count=len(partitions) + ) + return JSONResponse( + status_code=status.HTTP_200_OK, content={"partitions": partitions} + ) @router.delete("/{partition}") -async def delete_partition(partition: str, vectordb=Depends(get_vectordb)): +async def delete_partition( + partition: str, + vectordb=Depends(get_vectordb), + partition_owner=Depends(require_partition_owner), +): await vectordb.delete_partition.remote(partition) logger.debug("Partition successfully deleted.") return Response(status_code=status.HTTP_204_NO_CONTENT) @@ -44,6 +51,7 @@ async def list_files( partition: str, limit: int | None = None, vectordb=Depends(get_vectordb), + partition_viewer=Depends(require_partition_viewer), ): log = logger.bind(partition=partition) file_obj_l = await vectordb.list_partition_files.remote( @@ -76,6 +84,7 @@ async def get_file( partition: str, file_id: str, vectordb=Depends(get_vectordb), + partition_viewer=Depends(require_partition_viewer), ): results = await vectordb.get_file_chunks.remote( partition=partition, file_id=file_id, include_id=True @@ -102,6 +111,7 @@ async def list_all_chunks( partition: str, include_embedding: bool = True, vectordb=Depends(get_vectordb), + partition_viewer=Depends(require_partition_viewer), ): chunks = await vectordb.list_all_chunk.remote( partition=partition, include_embedding=include_embedding @@ -117,3 +127,94 @@ async def list_all_chunks( for chunk in chunks ] return JSONResponse(status_code=status.HTTP_200_OK, content={"chunks": chunks}) + + +@router.post("/{partition}") +async def create_partition( + request: Request, partition: str, vectordb=Depends(get_vectordb) +): + if await vectordb.partition_exists.remote(partition): + raise HTTPException( + status_code=status.HTTP_409_CONFLICT, + detail=f"Partition '{partition}' already exists.", + ) + user_id = request.state.user["id"] + await vectordb.create_partition.remote(partition=partition, user_id=user_id) + return Response(status_code=status.HTTP_201_CREATED) + + +@router.get("/{partition}/users") +async def list_partition_users( + partition: str, + vectordb=Depends(get_vectordb), + partition_owner=Depends(require_partition_owner), +): + """ + List all users who are members of the given partition. + """ + log = logger.bind(partition=partition) + + members = await vectordb.list_partition_members.remote(partition=partition) + + log.debug("Returned list of partition members.", member_count=len(members)) + return JSONResponse(status_code=status.HTTP_200_OK, content={"members": members}) + + +@router.post("/{partition}/users") +async def add_partition_user( + partition: str, + user_id: int, + role: str = "viewer", + vectordb=Depends(get_vectordb), + partition_owner=Depends(require_partition_owner), +): + """ + Add a user as a member of the given partition. + """ + log = logger.bind(partition=partition, user_id=user_id) + + await vectordb.add_partition_member.remote( + partition=partition, user_id=user_id, role=role + ) + + log.debug("User added to partition successfully") + return Response(status_code=status.HTTP_201_CREATED) + + +@router.delete("/{partition}/users/{user_id}") +async def remove_partition_user( + partition: str, + user_id: int, + vectordb=Depends(get_vectordb), + partition_owner=Depends(require_partition_owner), +): + """ + Remove a user from the given partition. + """ + log = logger.bind(partition=partition, user_id=user_id) + + await vectordb.remove_partition_member.remote(partition=partition, user_id=user_id) + + log.debug("User removed from partition successfully") + return Response(status_code=status.HTTP_204_NO_CONTENT) + + +@router.patch("/{partition}/users/{user_id}") +async def update_partition_user_role( + partition: str, + user_id: int, + role: str, + vectordb=Depends(get_vectordb), + partition_owner=Depends(require_partition_owner), +): + """ + Update a user's role in the given partition. + """ + log = logger.bind(partition=partition, user_id=user_id, role=role) + + await vectordb.update_partition_member_role.remote( + partition=partition, user_id=user_id, new_role=role + ) + + log.debug("User role updated successfully") + return Response(status_code=status.HTTP_200_OK) diff --git a/openrag/routers/queue.py b/openrag/routers/queue.py index 52cb30232..ba507eaf6 100644 --- a/openrag/routers/queue.py +++ b/openrag/routers/queue.py @@ -1,15 +1,17 @@ from collections import Counter -from fastapi import APIRouter, Depends, Request, status + from config import load_config +from fastapi import APIRouter, Depends, Request, status from fastapi.responses import JSONResponse from utils.dependencies import get_task_state_manager +from .utils import require_admin + # load config config = load_config() # Create an APIRouter instance -router = APIRouter() - +router = APIRouter(dependencies=[Depends(require_admin)]) def _format_pool_info(worker_info: dict[str, int]) -> dict[str, int]: diff --git a/openrag/routers/search.py b/openrag/routers/search.py index ab679f822..7efd7e9fa 100644 --- a/openrag/routers/search.py +++ b/openrag/routers/search.py @@ -5,6 +5,12 @@ from utils.dependencies import get_indexer from utils.logger import get_logger +from .utils import ( + current_user_or_admin_partitions_list, + require_partition_viewer, + require_partitions_viewer, +) + logger = get_logger() router = APIRouter() @@ -19,8 +25,15 @@ async def search_multiple_partitions( text: str = Query(..., description="Text to search semantically"), top_k: int = Query(5, description="Number of top results to return"), indexer=Depends(get_indexer), + partition_viewer=Depends(require_partitions_viewer), + user_partitions=Depends(current_user_or_admin_partitions_list), ): + # Fetch user partitions if "all" is specified, or all partitions if super admin + if partitions == ["all"]: + partitions = user_partitions + log = logger.bind(partitions=partitions, query=text, top_k=top_k) + results = await indexer.asearch.remote( query=text, top_k=top_k, partition=partitions ) @@ -30,7 +43,11 @@ async def search_multiple_partitions( ) documents = [ - {"link": str(request.url_for("get_extract", extract_id=doc.metadata["_id"]))} + { + "link": str(request.url_for("get_extract", extract_id=doc.metadata["_id"])), + "metadata": doc.metadata, + "content": doc.page_content, + } for doc in results ] @@ -46,6 +63,7 @@ async def search_one_partition( text: str = Query(..., description="Text to search semantically"), top_k: int = Query(5, description="Number of top results to return"), indexer=Depends(get_indexer), + partition_viewer=Depends(require_partition_viewer), ): log = logger.bind(partition=partition, query=text, top_k=top_k) results = await indexer.asearch.remote(query=text, top_k=top_k, partition=partition) @@ -74,6 +92,7 @@ async def search_file( text: str = Query(..., description="Text to search semantically"), top_k: int = Query(5, description="Number of top results to return"), indexer=Depends(get_indexer), + partition_viewer=Depends(require_partition_viewer), ): log = logger.bind(partition=partition, file_id=file_id, query=text, top_k=top_k) results = await indexer.asearch.remote( @@ -82,7 +101,11 @@ async def search_file( log.info("Semantic search on specific file completed.", result_count=len(results)) documents = [ - {"link": str(request.url_for("get_extract", extract_id=doc.metadata["_id"]))} + { + "link": str(request.url_for("get_extract", extract_id=doc.metadata["_id"])), + "metadata": doc.metadata, + "content": doc.page_content, + } for doc in results ] diff --git a/openrag/routers/users.py b/openrag/routers/users.py new file mode 100644 index 000000000..bc3339440 --- /dev/null +++ b/openrag/routers/users.py @@ -0,0 +1,70 @@ +from fastapi import APIRouter, Depends, Response, status +from fastapi.responses import JSONResponse +from utils.dependencies import get_vectordb +from utils.logger import get_logger + +from .utils import require_admin + +logger = get_logger() +router = APIRouter() + + +@router.get("/") +async def list_users(vectordb=Depends(get_vectordb), admin_user=Depends(require_admin)): + users = await vectordb.list_users.remote() + logger.debug("Returned list of users.", user_count=len(users)) + return JSONResponse(status_code=status.HTTP_200_OK, content={"users": users}) + + +@router.post("/") +async def create_user( + email: str | None = None, + display_name: str | None = None, + external_ref: str | None = None, + is_admin: bool = False, + vectordb=Depends(get_vectordb), + admin_user=Depends(require_admin), +): + """ + Create a new user and generate a token. + """ + user = await vectordb.create_user.remote( + email=email, + display_name=display_name, + external_ref=external_ref, + is_admin=is_admin, + ) + logger.info("Created new user", user_id=user["id"]) + return JSONResponse(status_code=status.HTTP_201_CREATED, content=user) + + +@router.get("/{user_id}") +async def get_user( + user_id: int, vectordb=Depends(get_vectordb), admin_user=Depends(require_admin) +): + """ + Get details of a specific user (without exposing token). + """ + user = await vectordb.get_user.remote(user_id) + return JSONResponse(status_code=status.HTTP_200_OK, content=user) + + +@router.delete("/{user_id}") +async def delete_user( + user_id: int, vectordb=Depends(get_vectordb), admin_user=Depends(require_admin) +): + """ + Delete a user. + """ + await vectordb.delete_user.remote(user_id) + return Response(status_code=status.HTTP_204_NO_CONTENT) + + +@router.post("/{user_id}/regenerate_token") +async def regenerate_user_token(user_id: int, vectordb=Depends(get_vectordb)): + """ + Regenerate a user's token. + """ + user = await vectordb.regenerate_user_token.remote(user_id) + logger.info("Regenerated user token", user_id=user_id) + return JSONResponse(status_code=status.HTTP_200_OK, content=user) diff --git a/openrag/routers/utils.py b/openrag/routers/utils.py new file mode 100644 index 000000000..08080465d --- /dev/null +++ b/openrag/routers/utils.py @@ -0,0 +1,294 @@ +import json +import os +from pathlib import Path +from typing import Any, Optional + +import consts +from config import load_config +from fastapi import Depends, Form, HTTPException, Request, UploadFile, status +from openai import AsyncOpenAI +from utils.dependencies import get_task_state_manager, get_vectordb +from utils.logger import get_logger + +# load config +config = load_config() +logger = get_logger() +vectordb = get_vectordb() +task_state_manager = get_task_state_manager() + +SUPER_ADMIN_MODE = os.getenv("SUPER_ADMIN_MODE", "false").lower() == "true" +DATA_DIR = config.paths.data_dir + +FORBIDDEN_CHARS_IN_FILE_ID = set("/") # set('"<>#%{}|\\^`[]') +LOG_FILE = Path(config.paths.log_dir or "logs") / "app.json" + +# supported file formats or mimetypes +ACCEPTED_FILE_FORMATS = dict(config.loader["file_loaders"]).keys() +DICT_MIMETYPES = dict(config.loader["mimetypes"]) + +ROLE_HIERARCHY = { + "viewer": 1, + "editor": 2, + "owner": 3, +} + + +def current_user(request: Request): + """Return the authenticated user from request.state""" + return request.state.user + + +def current_user_partitions(request: Request): + """Return the authenticated user's partitions from request.state""" + return request.state.user_partitions + + +def current_user_or_admin_partitions(request: Request): + """Return the authenticated user's partitions from request.state, or all partitions if admin""" + user = request.state.user + if user.get("is_admin") and SUPER_ADMIN_MODE: + return [{"partition": "all", "created_at": 0, "role": "owner"}] + return request.state.user_partitions + + +def current_user_or_admin_partitions_list(request: Request): + """Return the authenticated user's partitions from request.state, or all partitions if admin""" + return [p["partition"] for p in current_user_or_admin_partitions(request)] + + +def request_partition(request: Request): + """Return the partition from path params""" + return request.path_params.get("partition", None) + + +def request_partitions(request: Request): + """Return the partitions from query params""" + partitions = request.query_params.getlist("partitions") + return partitions + + +def request_task_id(request: Request): + """Return the task_id from path params""" + return request.path_params.get("task_id", None) + + +async def ensure_partition_role( + partition: str, + user, + user_partitions, + required_role: str, +): + """Ensure the user has at least `required_role` for the partition.""" + # Super-admin bypass + if SUPER_ADMIN_MODE and user.get("is_admin"): + return True + + # Find membership + membership = next((p for p in user_partitions if p["partition"] == partition), None) + + if not membership: + # Partition exists but no membership + partition_exists = await vectordb.partition_exists.remote(partition) + if partition_exists: + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail=f"Access to partition '{partition}' forbidden", + ) + else: + return True + + user_role = membership.get("role") + if ROLE_HIERARCHY[user_role] < ROLE_HIERARCHY[required_role]: + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail=f"{required_role.capitalize()} role required for partition '{partition}'", + ) + + return True + + +async def require_partition_viewer( + partition=Depends(request_partition), + user=Depends(current_user), + user_partitions=Depends(current_user_partitions), +): + await ensure_partition_role(partition, user, user_partitions, "viewer") + return user + + +async def require_partition_editor( + partition=Depends(request_partition), + user=Depends(current_user), + user_partitions=Depends(current_user_partitions), +): + await ensure_partition_role(partition, user, user_partitions, "editor") + return user + + +async def require_partition_owner( + partition=Depends(request_partition), + user=Depends(current_user), + user_partitions=Depends(current_user_partitions), +): + await ensure_partition_role(partition, user, user_partitions, "owner") + return user + + +async def require_partitions_viewer( + partitions=Depends(request_partitions), + user=Depends(current_user), + user_partitions=Depends(current_user_partitions), +): + from utils.logger import get_logger + + logger = get_logger() + if SUPER_ADMIN_MODE and user.get("is_admin"): + return user + if isinstance(partitions, list) and len(partitions) == 1 and partitions[0] == "all": + return user + for partition in partitions: + await ensure_partition_role(partition, user, user_partitions, "viewer") + logger.info(f"User has viewer access to partition '{partition}'") + return user + + +async def require_task_owner( + task_id=Depends(request_task_id), user=Depends(current_user) +): + task_details = await task_state_manager.get_details.remote(task_id) + if not task_details: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"Task '{task_id}' not found", + ) + if task_details.get("user_id") != user.get("id"): + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail="You do not have permission to access this task", + ) + return task_details + + +def require_admin(user=Depends(current_user)): + """Ensure the user has admin privileges""" + if not user or not user.get("is_admin", False): + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail="Admin privileges required", + ) + return user + + +def is_file_id_valid(file_id: str) -> bool: + return not any(c in file_id for c in FORBIDDEN_CHARS_IN_FILE_ID) + + +async def validate_file_id(file_id: str): + if not is_file_id_valid(file_id): + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail=f"File ID contains forbidden characters: {', '.join(FORBIDDEN_CHARS_IN_FILE_ID)}", + ) + if not file_id.strip(): + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, detail="File ID cannot be empty." + ) + return file_id + + +async def validate_metadata(metadata: Optional[Any] = Form(None)): + try: + processed_metadata = metadata or "{}" + processed_metadata = json.loads(processed_metadata) + return processed_metadata + except json.JSONDecodeError: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, detail="Invalid JSON in metadata" + ) + + +async def validate_file_format( + file: UploadFile, + metadata: dict = Depends(validate_metadata), +): + file_extension = ( + file.filename.split(".")[-1].lower() if "." in file.filename else "" + ) + mimetype = metadata.get("mimetype", None) + + if ( + file_extension not in ACCEPTED_FILE_FORMATS + and mimetype not in DICT_MIMETYPES.keys() + ): + details = ( + f"Unsupported file format: {file_extension} or file mimetype.\n" + f"Supported formats: {', '.join(ACCEPTED_FILE_FORMATS)}\n" + f"Supported mimetypes: {', '.join(DICT_MIMETYPES.keys())}" + ) + raise HTTPException( + status_code=status.HTTP_415_UNSUPPORTED_MEDIA_TYPE, + detail=details, + ) + return file + + +def human_readable_size(size_bytes: int) -> str: + """Convert bytes to a human-readable format (e.g., '2.4 MB').""" + for unit in ["B", "KB", "MB", "GB", "TB"]: + if size_bytes < 1024: + return f"{size_bytes:.2f} {unit}" + size_bytes /= 1024 + return f"{size_bytes:.2f} PB" + + +def get_app_state(request: Request): + return request.app.state.app_state + + +async def check_llm_model_availability(request: Request): + models = {"VLM": config.vlm, "LLM": config.llm} + for model_type, param in models.items(): + try: + client = AsyncOpenAI(api_key=param["api_key"], base_url=param["base_url"]) + openai_models = await client.models.list() + available_models = {m.id for m in openai_models.data} + if param["model"] not in available_models: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"Only these models ({available_models}) are available for your `{model_type}`. Please check your configuration file.", + ) + except Exception as e: + logger.exception("Failed to validate model", model=model_type) + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"Error while checking the `{model_type}` endpoint: {str(e)}", + ) + + +async def get_partition_name(model_name, user_partitions, is_admin=False): + vectordb = get_vectordb() + + partition_prefix = consts.PARTITION_PREFIX + if model_name.startswith(consts.LEGACY_PARTITION_PREFIX): + # XXX - This is for backward compatibility, but should eventually be removed + partition_prefix = consts.LEGACY_PARTITION_PREFIX + + if not model_name.startswith(partition_prefix): + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"Model not found. Model should respect this format: {consts.PARTITION_PREFIX}partition_name", + ) + partition = model_name.split(partition_prefix)[1] + if partition != "all" and not await vectordb.partition_exists.remote(partition): + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"Partition `{partition}` not found for given model `{model_name}`", + ) + if partition != "all" and partition not in user_partitions: + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail=f"Access to model `{model_name}` is forbidden for the current user", + ) + if partition == "all" and not (is_admin and SUPER_ADMIN_MODE): + return user_partitions + return [partition] diff --git a/openrag/utils/exceptions/vectordb.py b/openrag/utils/exceptions/vectordb.py index 84a373a4f..84077e461 100644 --- a/openrag/utils/exceptions/vectordb.py +++ b/openrag/utils/exceptions/vectordb.py @@ -90,6 +90,30 @@ def __init__(self, message: str, **kwargs): ) +class VDBUserNotFound(VDBError): + """Raised when a user is not found in the vector database.""" + + def __init__(self, message: str, **kwargs): + super().__init__( + message=message, + code="VDB_USER_NOT_FOUND", + status_code=404, + **kwargs, + ) + + +class VDBMembershipNotFound(VDBError): + """Raised when a partition membership is not found in the vector database.""" + + def __init__(self, message: str, **kwargs): + super().__init__( + message=message, + code="VDB_MEMBERSHIP_NOT_FOUND", + status_code=404, + **kwargs, + ) + + class UnexpectedVDBError(VDBError): """Raised for unexpected errors in vector database operations.""" From 303baab450c5ccc45da0c6d314b521782802ef2d Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Fri, 3 Oct 2025 13:30:17 +0000 Subject: [PATCH 030/126] Add 'rdb' service dependency to 'openrag' service to ensure smooth execution of back.py --- docker-compose.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-compose.yaml b/docker-compose.yaml index ce711cb3a..bee96f76f 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -62,6 +62,7 @@ services: profiles: - '' depends_on: + - rdb - milvus - vllm-gpu @@ -72,6 +73,7 @@ services: profiles: - 'cpu' depends_on: + - rdb - milvus - vllm-cpu From 2455694bdf9e318abf669d3d67494223bd5d45c2 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Fri, 3 Oct 2025 14:19:08 +0000 Subject: [PATCH 031/126] Add documentation site to openrag --- .astro/collections/docs.schema.json | 646 ++ .astro/content-assets.mjs | 1 + .astro/content-modules.mjs | 11 + .astro/content.d.ts | 218 + .astro/data-store.json | 1 + .astro/settings.json | 5 + .astro/types.d.ts | 2 + .github/workflows/astro.yml | 93 + .gitignore | 2 +- README.md | 7 + astro.config.mjs | 59 + package-lock.json | 7410 +++++++++++++++++ package.json | 21 + src/assets/OpenRAG-title.svg | 1 + src/assets/RAG_architecture.png | Bin 0 -> 150685 bytes src/assets/compose_linux_gpu.yaml | 120 + src/assets/compose_ollama_cpu.yaml | 108 + src/assets/env_linux_gpu.env | 50 + src/assets/env_ollama_cpu.env | 102 + src/content.config.ts | 7 + src/content/docs/404.md | 8 + src/content/docs/documentation/API.mdx | 287 + .../chainlit_data_persistency.md | 53 + .../docs/documentation/deploy_ray_cluster.md | 155 + .../docs/documentation/features_in_details.md | 87 + .../documentation/setup_chainlit_ui_auth.md | 22 + .../docs/documentation/setup_glusterfs.md | 141 + .../docs/documentation/setup_indexerui.md | 49 + src/content/docs/documentation/setup_vpn.md | 126 + .../docs/getting_started/quickstart.mdx | 68 + src/content/docs/getting_started/usage.mdx | 18 + src/content/docs/index.mdx | 34 + .../docs/installation/ansible_setup.mdx | 259 + src/content/docs/installation/docker.mdx | 15 + src/content/docs/license.mdx | 7 + src/content/docs/minimum-specifications.md | 15 + src/content/docs/support-and-contribute.mdx | 12 + src/styles/custom.css | 3 + src/styles/global.css | 22 + tsconfig.json | 5 + 40 files changed, 10249 insertions(+), 1 deletion(-) create mode 100644 .astro/collections/docs.schema.json create mode 100644 .astro/content-assets.mjs create mode 100644 .astro/content-modules.mjs create mode 100644 .astro/content.d.ts create mode 100644 .astro/data-store.json create mode 100644 .astro/settings.json create mode 100644 .astro/types.d.ts create mode 100644 .github/workflows/astro.yml create mode 100644 astro.config.mjs create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/assets/OpenRAG-title.svg create mode 100644 src/assets/RAG_architecture.png create mode 100644 src/assets/compose_linux_gpu.yaml create mode 100644 src/assets/compose_ollama_cpu.yaml create mode 100644 src/assets/env_linux_gpu.env create mode 100644 src/assets/env_ollama_cpu.env create mode 100644 src/content.config.ts create mode 100644 src/content/docs/404.md create mode 100644 src/content/docs/documentation/API.mdx create mode 100644 src/content/docs/documentation/chainlit_data_persistency.md create mode 100644 src/content/docs/documentation/deploy_ray_cluster.md create mode 100644 src/content/docs/documentation/features_in_details.md create mode 100644 src/content/docs/documentation/setup_chainlit_ui_auth.md create mode 100644 src/content/docs/documentation/setup_glusterfs.md create mode 100644 src/content/docs/documentation/setup_indexerui.md create mode 100644 src/content/docs/documentation/setup_vpn.md create mode 100644 src/content/docs/getting_started/quickstart.mdx create mode 100644 src/content/docs/getting_started/usage.mdx create mode 100644 src/content/docs/index.mdx create mode 100644 src/content/docs/installation/ansible_setup.mdx create mode 100644 src/content/docs/installation/docker.mdx create mode 100644 src/content/docs/license.mdx create mode 100644 src/content/docs/minimum-specifications.md create mode 100644 src/content/docs/support-and-contribute.mdx create mode 100644 src/styles/custom.css create mode 100644 src/styles/global.css create mode 100644 tsconfig.json diff --git a/.astro/collections/docs.schema.json b/.astro/collections/docs.schema.json new file mode 100644 index 000000000..9500aa03f --- /dev/null +++ b/.astro/collections/docs.schema.json @@ -0,0 +1,646 @@ +{ + "$ref": "#/definitions/docs", + "definitions": { + "docs": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "editUrl": { + "anyOf": [ + { + "type": "string", + "format": "uri" + }, + { + "type": "boolean" + } + ], + "default": true + }, + "head": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "title", + "base", + "link", + "style", + "meta", + "script", + "noscript", + "template" + ] + }, + "attrs": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "boolean" + }, + { + "not": {} + } + ] + } + }, + "content": { + "type": "string" + } + }, + "required": [ + "tag" + ], + "additionalProperties": false + }, + "default": [] + }, + "tableOfContents": { + "anyOf": [ + { + "type": "object", + "properties": { + "minHeadingLevel": { + "type": "integer", + "minimum": 1, + "maximum": 6, + "default": 2 + }, + "maxHeadingLevel": { + "type": "integer", + "minimum": 1, + "maximum": 6, + "default": 3 + } + }, + "additionalProperties": false + }, + { + "type": "boolean" + } + ], + "default": { + "minHeadingLevel": 2, + "maxHeadingLevel": 3 + } + }, + "template": { + "type": "string", + "enum": [ + "doc", + "splash" + ], + "default": "doc" + }, + "hero": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "tagline": { + "type": "string" + }, + "image": { + "anyOf": [ + { + "type": "object", + "properties": { + "alt": { + "type": "string", + "default": "" + }, + "file": { + "type": "string" + } + }, + "required": [ + "file" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "alt": { + "type": "string", + "default": "" + }, + "dark": { + "type": "string" + }, + "light": { + "type": "string" + } + }, + "required": [ + "dark", + "light" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "html": { + "type": "string" + } + }, + "required": [ + "html" + ], + "additionalProperties": false + } + ] + }, + "actions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "text": { + "type": "string" + }, + "link": { + "type": "string" + }, + "variant": { + "type": "string", + "enum": [ + "primary", + "secondary", + "minimal" + ], + "default": "primary" + }, + "icon": { + "anyOf": [ + { + "type": "string", + "enum": [ + "up-caret", + "down-caret", + "right-caret", + "left-caret", + "up-arrow", + "down-arrow", + "right-arrow", + "left-arrow", + "bars", + "translate", + "pencil", + "pen", + "document", + "add-document", + "setting", + "external", + "download", + "cloud-download", + "moon", + "sun", + "laptop", + "open-book", + "information", + "magnifier", + "forward-slash", + "close", + "error", + "warning", + "approve-check-circle", + "approve-check", + "rocket", + "star", + "puzzle", + "list-format", + "random", + "comment", + "comment-alt", + "heart", + "github", + "gitlab", + "bitbucket", + "codePen", + "farcaster", + "discord", + "gitter", + "twitter", + "x.com", + "mastodon", + "codeberg", + "youtube", + "threads", + "linkedin", + "twitch", + "azureDevOps", + "microsoftTeams", + "instagram", + "stackOverflow", + "telegram", + "rss", + "facebook", + "email", + "phone", + "reddit", + "patreon", + "signal", + "slack", + "matrix", + "hackerOne", + "openCollective", + "blueSky", + "discourse", + "zulip", + "pinterest", + "tiktok", + "astro", + "alpine", + "pnpm", + "biome", + "bun", + "mdx", + "apple", + "linux", + "homebrew", + "nix", + "starlight", + "pkl", + "node", + "cloudflare", + "vercel", + "netlify", + "deno", + "jsr", + "nostr", + "backstage", + "confluence", + "jira", + "storybook", + "vscode", + "jetbrains", + "zed", + "vim", + "figma", + "sketch", + "npm", + "sourcehut", + "substack", + "seti:folder", + "seti:bsl", + "seti:mdo", + "seti:salesforce", + "seti:asm", + "seti:bicep", + "seti:bazel", + "seti:c", + "seti:c-sharp", + "seti:html", + "seti:cpp", + "seti:clojure", + "seti:coldfusion", + "seti:config", + "seti:crystal", + "seti:crystal_embedded", + "seti:json", + "seti:css", + "seti:csv", + "seti:xls", + "seti:cu", + "seti:cake", + "seti:cake_php", + "seti:d", + "seti:word", + "seti:elixir", + "seti:elixir_script", + "seti:hex", + "seti:elm", + "seti:favicon", + "seti:f-sharp", + "seti:git", + "seti:go", + "seti:godot", + "seti:gradle", + "seti:grails", + "seti:graphql", + "seti:hacklang", + "seti:haml", + "seti:mustache", + "seti:haskell", + "seti:haxe", + "seti:jade", + "seti:java", + "seti:javascript", + "seti:jinja", + "seti:julia", + "seti:karma", + "seti:kotlin", + "seti:dart", + "seti:liquid", + "seti:livescript", + "seti:lua", + "seti:markdown", + "seti:argdown", + "seti:info", + "seti:clock", + "seti:maven", + "seti:nim", + "seti:github", + "seti:notebook", + "seti:nunjucks", + "seti:npm", + "seti:ocaml", + "seti:odata", + "seti:perl", + "seti:php", + "seti:pipeline", + "seti:pddl", + "seti:plan", + "seti:happenings", + "seti:powershell", + "seti:prisma", + "seti:pug", + "seti:puppet", + "seti:purescript", + "seti:python", + "seti:react", + "seti:rescript", + "seti:R", + "seti:ruby", + "seti:rust", + "seti:sass", + "seti:spring", + "seti:slim", + "seti:smarty", + "seti:sbt", + "seti:scala", + "seti:ethereum", + "seti:stylus", + "seti:svelte", + "seti:swift", + "seti:db", + "seti:terraform", + "seti:tex", + "seti:default", + "seti:twig", + "seti:typescript", + "seti:tsconfig", + "seti:vala", + "seti:vite", + "seti:vue", + "seti:wasm", + "seti:wat", + "seti:xml", + "seti:yml", + "seti:prolog", + "seti:zig", + "seti:zip", + "seti:wgt", + "seti:illustrator", + "seti:photoshop", + "seti:pdf", + "seti:font", + "seti:image", + "seti:svg", + "seti:sublime", + "seti:code-search", + "seti:shell", + "seti:video", + "seti:audio", + "seti:windows", + "seti:jenkins", + "seti:babel", + "seti:bower", + "seti:docker", + "seti:code-climate", + "seti:eslint", + "seti:firebase", + "seti:firefox", + "seti:gitlab", + "seti:grunt", + "seti:gulp", + "seti:ionic", + "seti:platformio", + "seti:rollup", + "seti:stylelint", + "seti:yarn", + "seti:webpack", + "seti:lock", + "seti:license", + "seti:makefile", + "seti:heroku", + "seti:todo", + "seti:ignored" + ] + }, + { + "type": "string", + "pattern": "^\\ import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Findex.mdx&astroContentModuleFlag=true")], +["src/content/docs/license.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Flicense.mdx&astroContentModuleFlag=true")], +["src/content/docs/support-and-contribute.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fsupport-and-contribute.mdx&astroContentModuleFlag=true")], +["src/content/docs/documentation/API.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fdocumentation%2FAPI.mdx&astroContentModuleFlag=true")], +["src/content/docs/getting_started/quickstart.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting_started%2Fquickstart.mdx&astroContentModuleFlag=true")], +["src/content/docs/getting_started/usage.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting_started%2Fusage.mdx&astroContentModuleFlag=true")], +["src/content/docs/installation/ansible_setup.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Finstallation%2Fansible_setup.mdx&astroContentModuleFlag=true")], +["src/content/docs/installation/docker.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Finstallation%2Fdocker.mdx&astroContentModuleFlag=true")]]); + \ No newline at end of file diff --git a/.astro/content.d.ts b/.astro/content.d.ts new file mode 100644 index 000000000..1acaed618 --- /dev/null +++ b/.astro/content.d.ts @@ -0,0 +1,218 @@ +declare module 'astro:content' { + interface Render { + '.mdx': Promise<{ + Content: import('astro').MarkdownInstance<{}>['Content']; + headings: import('astro').MarkdownHeading[]; + remarkPluginFrontmatter: Record; + components: import('astro').MDXInstance<{}>['components']; + }>; + } +} + +declare module 'astro:content' { + export interface RenderResult { + Content: import('astro/runtime/server/index.js').AstroComponentFactory; + headings: import('astro').MarkdownHeading[]; + remarkPluginFrontmatter: Record; + } + interface Render { + '.md': Promise; + } + + export interface RenderedContent { + html: string; + metadata?: { + imagePaths: Array; + [key: string]: unknown; + }; + } +} + +declare module 'astro:content' { + type Flatten = T extends { [K: string]: infer U } ? U : never; + + export type CollectionKey = keyof AnyEntryMap; + export type CollectionEntry = Flatten; + + export type ContentCollectionKey = keyof ContentEntryMap; + export type DataCollectionKey = keyof DataEntryMap; + + type AllValuesOf = T extends any ? T[keyof T] : never; + type ValidContentEntrySlug = AllValuesOf< + ContentEntryMap[C] + >['slug']; + + export type ReferenceDataEntry< + C extends CollectionKey, + E extends keyof DataEntryMap[C] = string, + > = { + collection: C; + id: E; + }; + export type ReferenceContentEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}) = string, + > = { + collection: C; + slug: E; + }; + export type ReferenceLiveEntry = { + collection: C; + id: string; + }; + + /** @deprecated Use `getEntry` instead. */ + export function getEntryBySlug< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + // Note that this has to accept a regular string too, for SSR + entrySlug: E, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + + /** @deprecated Use `getEntry` instead. */ + export function getDataEntryById( + collection: C, + entryId: E, + ): Promise>; + + export function getCollection>( + collection: C, + filter?: (entry: CollectionEntry) => entry is E, + ): Promise; + export function getCollection( + collection: C, + filter?: (entry: CollectionEntry) => unknown, + ): Promise[]>; + + export function getLiveCollection( + collection: C, + filter?: LiveLoaderCollectionFilterType, + ): Promise< + import('astro').LiveDataCollectionResult, LiveLoaderErrorType> + >; + + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + entry: ReferenceContentEntry, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >( + entry: ReferenceDataEntry, + ): E extends keyof DataEntryMap[C] + ? Promise + : Promise | undefined>; + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + slug: E, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >( + collection: C, + id: E, + ): E extends keyof DataEntryMap[C] + ? string extends keyof DataEntryMap[C] + ? Promise | undefined + : Promise + : Promise | undefined>; + export function getLiveEntry( + collection: C, + filter: string | LiveLoaderEntryFilterType, + ): Promise, LiveLoaderErrorType>>; + + /** Resolve an array of entry references from the same collection */ + export function getEntries( + entries: ReferenceContentEntry>[], + ): Promise[]>; + export function getEntries( + entries: ReferenceDataEntry[], + ): Promise[]>; + + export function render( + entry: AnyEntryMap[C][string], + ): Promise; + + export function reference( + collection: C, + ): import('astro/zod').ZodEffects< + import('astro/zod').ZodString, + C extends keyof ContentEntryMap + ? ReferenceContentEntry> + : ReferenceDataEntry + >; + // Allow generic `string` to avoid excessive type errors in the config + // if `dev` is not running to update as you edit. + // Invalid collection names will be caught at build time. + export function reference( + collection: C, + ): import('astro/zod').ZodEffects; + + type ReturnTypeOrOriginal = T extends (...args: any[]) => infer R ? R : T; + type InferEntrySchema = import('astro/zod').infer< + ReturnTypeOrOriginal['schema']> + >; + + type ContentEntryMap = { + + }; + + type DataEntryMap = { + "docs": Record; + rendered?: RenderedContent; + filePath?: string; +}>; + + }; + + type AnyEntryMap = ContentEntryMap & DataEntryMap; + + type ExtractLoaderTypes = T extends import('astro/loaders').LiveLoader< + infer TData, + infer TEntryFilter, + infer TCollectionFilter, + infer TError + > + ? { data: TData; entryFilter: TEntryFilter; collectionFilter: TCollectionFilter; error: TError } + : { data: never; entryFilter: never; collectionFilter: never; error: never }; + type ExtractDataType = ExtractLoaderTypes['data']; + type ExtractEntryFilterType = ExtractLoaderTypes['entryFilter']; + type ExtractCollectionFilterType = ExtractLoaderTypes['collectionFilter']; + type ExtractErrorType = ExtractLoaderTypes['error']; + + type LiveLoaderDataType = + LiveContentConfig['collections'][C]['schema'] extends undefined + ? ExtractDataType + : import('astro/zod').infer< + Exclude + >; + type LiveLoaderEntryFilterType = + ExtractEntryFilterType; + type LiveLoaderCollectionFilterType = + ExtractCollectionFilterType; + type LiveLoaderErrorType = ExtractErrorType< + LiveContentConfig['collections'][C]['loader'] + >; + + export type ContentConfig = typeof import("../src/content.config.js"); + export type LiveContentConfig = never; +} diff --git a/.astro/data-store.json b/.astro/data-store.json new file mode 100644 index 000000000..bab8e817e --- /dev/null +++ b/.astro/data-store.json @@ -0,0 +1 @@ +[["Map",1,2,9,10],"meta::meta",["Map",3,4,5,6,7,8],"astro-version","5.13.3","content-config-digest","9a95ec2e8398aaca","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"where\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[],\"responsiveStyles\":false},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":false,\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[null,null,null],\"rehypePlugins\":[null,[null,{\"experimentalHeadingIdCompat\":false}],null,[null,{\"themes\":[{\"name\":\"Night Owl No Italics\",\"type\":\"dark\",\"colors\":{\"focusBorder\":\"#122d42\",\"foreground\":\"#d6deeb\",\"disabledForeground\":\"#cccccc80\",\"descriptionForeground\":\"#d6deebb3\",\"errorForeground\":\"#ef5350\",\"icon.foreground\":\"#c5c5c5\",\"contrastActiveBorder\":null,\"contrastBorder\":\"#122d42\",\"textBlockQuote.background\":\"#7f7f7f1a\",\"textBlockQuote.border\":\"#007acc80\",\"textCodeBlock.background\":\"#4f4f4f\",\"textLink.activeForeground\":\"#3794ff\",\"textLink.foreground\":\"#3794ff\",\"textPreformat.foreground\":\"#d7ba7d\",\"textSeparator.foreground\":\"#ffffff2e\",\"editor.background\":\"#23262f\",\"editor.foreground\":\"#d6deeb\",\"editorLineNumber.foreground\":\"#4b6479\",\"editorLineNumber.activeForeground\":\"#c5e4fd\",\"editorActiveLineNumber.foreground\":\"#c6c6c6\",\"editor.selectionBackground\":\"#1d3b53\",\"editor.inactiveSelectionBackground\":\"#7e57c25a\",\"editor.selectionHighlightBackground\":\"#5f7e9779\",\"editorError.foreground\":\"#ef5350\",\"editorWarning.foreground\":\"#b39554\",\"editorInfo.foreground\":\"#3794ff\",\"editorHint.foreground\":\"#eeeeeeb2\",\"problemsErrorIcon.foreground\":\"#ef5350\",\"problemsWarningIcon.foreground\":\"#b39554\",\"problemsInfoIcon.foreground\":\"#3794ff\",\"editor.findMatchBackground\":\"#5f7e9779\",\"editor.findMatchHighlightBackground\":\"#1085bb5d\",\"editor.findRangeHighlightBackground\":\"#3a3d4166\",\"editorLink.activeForeground\":\"#4e94ce\",\"editorLightBulb.foreground\":\"#ffcc00\",\"editorLightBulbAutoFix.foreground\":\"#75beff\",\"diffEditor.insertedTextBackground\":\"#99b76d23\",\"diffEditor.insertedTextBorder\":\"#c5e47833\",\"diffEditor.removedTextBackground\":\"#ef535033\",\"diffEditor.removedTextBorder\":\"#ef53504d\",\"diffEditor.insertedLineBackground\":\"#9bb95533\",\"diffEditor.removedLineBackground\":\"#ff000033\",\"editorStickyScroll.background\":\"#011627\",\"editorStickyScrollHover.background\":\"#2a2d2e\",\"editorInlayHint.background\":\"#5f7e97cc\",\"editorInlayHint.foreground\":\"#ffffff\",\"editorInlayHint.typeBackground\":\"#5f7e97cc\",\"editorInlayHint.typeForeground\":\"#ffffff\",\"editorInlayHint.parameterBackground\":\"#5f7e97cc\",\"editorInlayHint.parameterForeground\":\"#ffffff\",\"editorPane.background\":\"#011627\",\"editorGroup.emptyBackground\":\"#011627\",\"editorGroup.focusedEmptyBorder\":null,\"editorGroupHeader.tabsBackground\":\"var(--sl-color-black)\",\"editorGroupHeader.tabsBorder\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"editorGroupHeader.noTabsBackground\":\"#011627\",\"editorGroupHeader.border\":null,\"editorGroup.border\":\"#011627\",\"editorGroup.dropBackground\":\"#7e57c273\",\"editorGroup.dropIntoPromptForeground\":\"#d6deeb\",\"editorGroup.dropIntoPromptBackground\":\"#021320\",\"editorGroup.dropIntoPromptBorder\":null,\"sideBySideEditor.horizontalBorder\":\"#011627\",\"sideBySideEditor.verticalBorder\":\"#011627\",\"scrollbar.shadow\":\"#010b14\",\"scrollbarSlider.background\":\"#ffffff17\",\"scrollbarSlider.hoverBackground\":\"#ffffff40\",\"scrollbarSlider.activeBackground\":\"#084d8180\",\"panel.background\":\"#011627\",\"panel.border\":\"#5f7e97\",\"panelTitle.activeBorder\":\"#5f7e97\",\"panelTitle.activeForeground\":\"#ffffffcc\",\"panelTitle.inactiveForeground\":\"#d6deeb80\",\"panelSectionHeader.background\":\"#80808051\",\"terminal.background\":\"#011627\",\"widget.shadow\":\"#011627\",\"editorWidget.background\":\"#021320\",\"editorWidget.foreground\":\"#d6deeb\",\"editorWidget.border\":\"#5f7e97\",\"quickInput.background\":\"#021320\",\"quickInput.foreground\":\"#d6deeb\",\"quickInputTitle.background\":\"#ffffff1a\",\"pickerGroup.foreground\":\"#d1aaff\",\"pickerGroup.border\":\"#011627\",\"editor.hoverHighlightBackground\":\"#7e57c25a\",\"editorHoverWidget.background\":\"#011627\",\"editorHoverWidget.foreground\":\"#d6deeb\",\"editorHoverWidget.border\":\"#5f7e97\",\"editorHoverWidget.statusBarBackground\":\"#011a2f\",\"titleBar.activeBackground\":\"var(--sl-color-black)\",\"titleBar.activeForeground\":\"var(--sl-color-text)\",\"titleBar.inactiveBackground\":\"#010e1a\",\"titleBar.inactiveForeground\":\"#eeefff99\",\"titleBar.border\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"toolbar.hoverBackground\":\"#5a5d5e50\",\"toolbar.activeBackground\":\"#63666750\",\"tab.activeBackground\":\"#0b2942\",\"tab.unfocusedActiveBackground\":\"#0b2942\",\"tab.inactiveBackground\":\"#01111d\",\"tab.unfocusedInactiveBackground\":\"#01111d\",\"tab.activeForeground\":\"var(--sl-color-text)\",\"tab.inactiveForeground\":\"#5f7e97\",\"tab.unfocusedActiveForeground\":\"#5f7e97\",\"tab.unfocusedInactiveForeground\":\"#5f7e97\",\"tab.hoverBackground\":null,\"tab.unfocusedHoverBackground\":null,\"tab.hoverForeground\":null,\"tab.unfocusedHoverForeground\":null,\"tab.border\":\"#272b3b\",\"tab.lastPinnedBorder\":\"#585858\",\"tab.activeBorder\":\"transparent\",\"tab.unfocusedActiveBorder\":\"#262a39\",\"tab.activeBorderTop\":\"var(--sl-color-accent-high)\",\"tab.unfocusedActiveBorderTop\":null,\"tab.hoverBorder\":null,\"tab.unfocusedHoverBorder\":null,\"tab.activeModifiedBorder\":\"#3399cc\",\"tab.inactiveModifiedBorder\":\"#3399cc80\",\"tab.unfocusedActiveModifiedBorder\":\"#3399cc80\",\"tab.unfocusedInactiveModifiedBorder\":\"#3399cc40\",\"badge.background\":\"#5f7e97\",\"badge.foreground\":\"#ffffff\",\"button.background\":\"#7e57c2cc\",\"button.foreground\":\"#ffffffcc\",\"button.border\":\"#122d42\",\"button.separator\":\"#ffffff52\",\"button.hoverBackground\":\"#7e57c2\",\"button.secondaryBackground\":\"#3a3d41\",\"button.secondaryForeground\":\"#ffffff\",\"button.secondaryHoverBackground\":\"#46494e\",\"dropdown.background\":\"#011627\",\"dropdown.foreground\":\"#ffffffcc\",\"dropdown.border\":\"#5f7e97\",\"list.activeSelectionBackground\":\"#234d708c\",\"list.activeSelectionForeground\":\"#ffffff\",\"tree.indentGuidesStroke\":\"#585858\",\"input.background\":\"#0b253a\",\"input.foreground\":\"#ffffffcc\",\"input.placeholderForeground\":\"#5f7e97\",\"inputOption.activeBorder\":\"#ffffffcc\",\"inputOption.hoverBackground\":\"#5a5d5e80\",\"inputOption.activeBackground\":\"#122d4266\",\"inputOption.activeForeground\":\"#ffffff\",\"inputValidation.infoBackground\":\"#00589ef2\",\"inputValidation.infoBorder\":\"#64b5f6\",\"inputValidation.warningBackground\":\"#675700f2\",\"inputValidation.warningBorder\":\"#ffca28\",\"inputValidation.errorBackground\":\"#ab0300f2\",\"inputValidation.errorBorder\":\"#ef5350\",\"keybindingLabel.background\":\"#8080802b\",\"keybindingLabel.foreground\":\"#cccccc\",\"keybindingLabel.border\":\"#33333399\",\"keybindingLabel.bottomBorder\":\"#44444499\",\"menu.foreground\":\"#ffffffcc\",\"menu.background\":\"#011627\",\"menu.selectionForeground\":\"#ffffff\",\"menu.selectionBackground\":\"#234d708c\",\"menu.separatorBackground\":\"#606060\",\"editor.snippetTabstopHighlightBackground\":\"#7c7c74c\",\"editor.snippetFinalTabstopHighlightBorder\":\"#525252\",\"terminal.ansiBlack\":\"#011627\",\"terminal.ansiRed\":\"#ef5350\",\"terminal.ansiGreen\":\"#22da6e\",\"terminal.ansiYellow\":\"#c5e478\",\"terminal.ansiBlue\":\"#82aaff\",\"terminal.ansiMagenta\":\"#c792ea\",\"terminal.ansiCyan\":\"#21c7a8\",\"terminal.ansiWhite\":\"#ffffff\",\"terminal.ansiBrightBlack\":\"#575656\",\"terminal.ansiBrightRed\":\"#ef5350\",\"terminal.ansiBrightGreen\":\"#22da6e\",\"terminal.ansiBrightYellow\":\"#ffeb95\",\"terminal.ansiBrightBlue\":\"#82aaff\",\"terminal.ansiBrightMagenta\":\"#c792ea\",\"terminal.ansiBrightCyan\":\"#7fdbca\",\"terminal.ansiBrightWhite\":\"#ffffff\",\"selection.background\":\"#4373c2\",\"input.border\":\"#5f7e97\",\"punctuation.definition.generic.begin.html\":\"#ef5350f2\",\"progress.background\":\"#7e57c2\",\"breadcrumb.foreground\":\"#a599e9\",\"breadcrumb.focusForeground\":\"#ffffff\",\"breadcrumb.activeSelectionForeground\":\"#ffffff\",\"breadcrumbPicker.background\":\"#001122\",\"list.invalidItemForeground\":\"#975f94\",\"list.dropBackground\":\"#011627\",\"list.focusBackground\":\"#010d18\",\"list.focusForeground\":\"#ffffff\",\"list.highlightForeground\":\"#ffffff\",\"list.hoverBackground\":\"#011627\",\"list.hoverForeground\":\"#ffffff\",\"list.inactiveSelectionBackground\":\"#0e293f\",\"list.inactiveSelectionForeground\":\"#5f7e97\",\"activityBar.background\":\"#011627\",\"activityBar.dropBackground\":\"#5f7e97\",\"activityBar.foreground\":\"#5f7e97\",\"activityBar.border\":\"#011627\",\"activityBarBadge.background\":\"#44596b\",\"activityBarBadge.foreground\":\"#ffffff\",\"sideBar.background\":\"#011627\",\"sideBar.foreground\":\"#89a4bb\",\"sideBar.border\":\"#011627\",\"sideBarTitle.foreground\":\"#5f7e97\",\"sideBarSectionHeader.background\":\"#011627\",\"sideBarSectionHeader.foreground\":\"#5f7e97\",\"editorCursor.foreground\":\"#80a4c2\",\"editor.wordHighlightBackground\":\"#f6bbe533\",\"editor.wordHighlightStrongBackground\":\"#e2a2f433\",\"editor.lineHighlightBackground\":\"#0003\",\"editor.rangeHighlightBackground\":\"#7e57c25a\",\"editorIndentGuide.background\":\"#5e81ce52\",\"editorIndentGuide.activeBackground\":\"#7e97ac\",\"editorRuler.foreground\":\"#5e81ce52\",\"editorCodeLens.foreground\":\"#5e82ceb4\",\"editorBracketMatch.background\":\"#5f7e974d\",\"editorOverviewRuler.currentContentForeground\":\"#7e57c2\",\"editorOverviewRuler.incomingContentForeground\":\"#7e57c2\",\"editorOverviewRuler.commonContentForeground\":\"#7e57c2\",\"editorGutter.background\":\"#011627\",\"editorGutter.modifiedBackground\":\"#e2b93d\",\"editorGutter.addedBackground\":\"#9ccc65\",\"editorGutter.deletedBackground\":\"#ef5350\",\"editorSuggestWidget.background\":\"#2c3043\",\"editorSuggestWidget.border\":\"#2b2f40\",\"editorSuggestWidget.foreground\":\"#d6deeb\",\"editorSuggestWidget.highlightForeground\":\"#ffffff\",\"editorSuggestWidget.selectedBackground\":\"#5f7e97\",\"debugExceptionWidget.background\":\"#011627\",\"debugExceptionWidget.border\":\"#5f7e97\",\"editorMarkerNavigation.background\":\"#0b2942\",\"editorMarkerNavigationError.background\":\"#ef5350\",\"editorMarkerNavigationWarning.background\":\"#ffca28\",\"peekView.border\":\"#5f7e97\",\"peekViewEditor.background\":\"#011627\",\"peekViewEditor.matchHighlightBackground\":\"#7e57c25a\",\"peekViewResult.background\":\"#011627\",\"peekViewResult.fileForeground\":\"#5f7e97\",\"peekViewResult.lineForeground\":\"#5f7e97\",\"peekViewResult.matchHighlightBackground\":\"#ffffffcc\",\"peekViewResult.selectionBackground\":\"#2e3250\",\"peekViewResult.selectionForeground\":\"#5f7e97\",\"peekViewTitle.background\":\"#011627\",\"peekViewTitleDescription.foreground\":\"#697098\",\"peekViewTitleLabel.foreground\":\"#5f7e97\",\"merge.currentHeaderBackground\":\"#5f7e97\",\"merge.incomingHeaderBackground\":\"#7e57c25a\",\"statusBar.background\":\"#011627\",\"statusBar.foreground\":\"#5f7e97\",\"statusBar.border\":\"#262a39\",\"statusBar.debuggingBackground\":\"#202431\",\"statusBar.debuggingBorder\":\"#1f2330\",\"statusBar.noFolderBackground\":\"#011627\",\"statusBar.noFolderBorder\":\"#25293a\",\"statusBarItem.activeBackground\":\"#202431\",\"statusBarItem.hoverBackground\":\"#202431\",\"statusBarItem.prominentBackground\":\"#202431\",\"statusBarItem.prominentHoverBackground\":\"#202431\",\"notifications.background\":\"#01111d\",\"notifications.border\":\"#262a39\",\"notificationCenter.border\":\"#262a39\",\"notificationToast.border\":\"#262a39\",\"notifications.foreground\":\"#ffffffcc\",\"notificationLink.foreground\":\"#80cbc4\",\"extensionButton.prominentForeground\":\"#ffffffcc\",\"extensionButton.prominentBackground\":\"#7e57c2cc\",\"extensionButton.prominentHoverBackground\":\"#7e57c2\",\"terminal.selectionBackground\":\"#1b90dd4d\",\"terminalCursor.background\":\"#234d70\",\"debugToolBar.background\":\"#011627\",\"welcomePage.buttonBackground\":\"#011627\",\"welcomePage.buttonHoverBackground\":\"#011627\",\"walkThrough.embeddedEditorBackground\":\"#011627\",\"gitDecoration.modifiedResourceForeground\":\"#a2bffc\",\"gitDecoration.deletedResourceForeground\":\"#ef535090\",\"gitDecoration.untrackedResourceForeground\":\"#c5e478ff\",\"gitDecoration.ignoredResourceForeground\":\"#395a75\",\"gitDecoration.conflictingResourceForeground\":\"#ffeb95cc\",\"source.elm\":\"#5f7e97\",\"string.quoted.single.js\":\"#ffffff\",\"meta.objectliteral.js\":\"#82aaff\"},\"fg\":\"#d6deeb\",\"bg\":\"#23262f\",\"semanticHighlighting\":false,\"settings\":[{\"name\":\"Changed\",\"scope\":[\"markup.changed\",\"meta.diff.header.git\",\"meta.diff.header.from-file\",\"meta.diff.header.to-file\"],\"settings\":{\"foreground\":\"#a2bffc\"}},{\"name\":\"Deleted\",\"scope\":[\"markup.deleted.diff\"],\"settings\":{\"foreground\":\"#f27775fe\"}},{\"name\":\"Inserted\",\"scope\":[\"markup.inserted.diff\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Global settings\",\"settings\":{\"background\":\"#011627\",\"foreground\":\"#d6deeb\"}},{\"name\":\"Comment\",\"scope\":[\"comment\"],\"settings\":{\"foreground\":\"#919f9f\",\"fontStyle\":\"\"}},{\"name\":\"String\",\"scope\":[\"string\"],\"settings\":{\"foreground\":\"#ecc48d\"}},{\"name\":\"String Quoted\",\"scope\":[\"string.quoted\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#ecc48d\"}},{\"name\":\"Support Constant Math\",\"scope\":[\"support.constant.math\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Number\",\"scope\":[\"constant.numeric\",\"constant.character.numeric\"],\"settings\":{\"foreground\":\"#f78c6c\",\"fontStyle\":\"\"}},{\"name\":\"Built-in constant\",\"scope\":[\"constant.language\",\"punctuation.definition.constant\",\"variable.other.constant\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"User-defined constant\",\"scope\":[\"constant.character\",\"constant.other\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Constant Character Escape\",\"scope\":[\"constant.character.escape\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"RegExp String\",\"scope\":[\"string.regexp\",\"string.regexp keyword.other\"],\"settings\":{\"foreground\":\"#5ca7e4\"}},{\"name\":\"Comma in functions\",\"scope\":[\"meta.function punctuation.separator.comma\"],\"settings\":{\"foreground\":\"#889fb2\"}},{\"name\":\"Variable\",\"scope\":[\"variable\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Keyword\",\"scope\":[\"punctuation.accessor\",\"keyword\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Storage\",\"scope\":[\"storage\",\"meta.var.expr\",\"meta.class meta.method.declaration meta.var.expr storage.type.js\",\"storage.type.property.js\",\"storage.type.property.ts\",\"storage.type.property.tsx\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type.function.arrow.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Class name\",\"scope\":[\"entity.name.class\",\"meta.class entity.name.type.class\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Inherited class\",\"scope\":[\"entity.other.inherited-class\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Function name\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Meta Tag\",\"scope\":[\"punctuation.definition.tag\",\"meta.tag\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"HTML Tag names\",\"scope\":[\"entity.name.tag\",\"meta.tag.other.html\",\"meta.tag.other.js\",\"meta.tag.other.tsx\",\"entity.name.tag.tsx\",\"entity.name.tag.js\",\"entity.name.tag\",\"meta.tag.js\",\"meta.tag.tsx\",\"meta.tag.html\"],\"settings\":{\"foreground\":\"#caece6\",\"fontStyle\":\"\"}},{\"name\":\"Tag attribute\",\"scope\":[\"entity.other.attribute-name\"],\"settings\":{\"fontStyle\":\"\",\"foreground\":\"#c5e478\"}},{\"name\":\"Entity Name Tag Custom\",\"scope\":[\"entity.name.tag.custom\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Library (function & constant)\",\"scope\":[\"support.function\",\"support.constant\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Support Constant Property Value meta\",\"scope\":[\"support.constant.meta.property-value\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Library class/type\",\"scope\":[\"support.type\",\"support.class\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Support Variable DOM\",\"scope\":[\"support.variable.dom\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Invalid\",\"scope\":[\"invalid\"],\"settings\":{\"background\":\"#ff2c83\",\"foreground\":\"#ffffff\"}},{\"name\":\"Invalid deprecated\",\"scope\":[\"invalid.deprecated\"],\"settings\":{\"foreground\":\"#ffffff\",\"background\":\"#d3423e\"}},{\"name\":\"Keyword Operator\",\"scope\":[\"keyword.operator\"],\"settings\":{\"foreground\":\"#7fdbca\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Relational\",\"scope\":[\"keyword.operator.relational\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Assignment\",\"scope\":[\"keyword.operator.assignment\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Arithmetic\",\"scope\":[\"keyword.operator.arithmetic\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Bitwise\",\"scope\":[\"keyword.operator.bitwise\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Increment\",\"scope\":[\"keyword.operator.increment\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Ternary\",\"scope\":[\"keyword.operator.ternary\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Double-Slashed Comment\",\"scope\":[\"comment.line.double-slash\"],\"settings\":{\"foreground\":\"#919f9f\"}},{\"name\":\"Object\",\"scope\":[\"object\"],\"settings\":{\"foreground\":\"#cdebf7\"}},{\"name\":\"Null\",\"scope\":[\"constant.language.null\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Meta Brace\",\"scope\":[\"meta.brace\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Meta Delimiter Period\",\"scope\":[\"meta.delimiter.period\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Punctuation Definition String\",\"scope\":[\"punctuation.definition.string\"],\"settings\":{\"foreground\":\"#d9f5dd\"}},{\"name\":\"Punctuation Definition String Markdown\",\"scope\":[\"punctuation.definition.string.begin.markdown\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Boolean\",\"scope\":[\"constant.language.boolean\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Object Comma\",\"scope\":[\"object.comma\"],\"settings\":{\"foreground\":\"#ffffff\"}},{\"name\":\"Variable Parameter Function\",\"scope\":[\"variable.parameter.function\"],\"settings\":{\"foreground\":\"#7fdbca\",\"fontStyle\":\"\"}},{\"name\":\"Support Type Property Name & entity name tags\",\"scope\":[\"support.type.vendor.property-name\",\"support.constant.vendor.property-value\",\"support.type.property-name\",\"meta.property-list entity.name.tag\"],\"settings\":{\"foreground\":\"#80cbc4\",\"fontStyle\":\"\"}},{\"name\":\"Entity Name tag reference in stylesheets\",\"scope\":[\"meta.property-list entity.name.tag.reference\"],\"settings\":{\"foreground\":\"#57eaf1\"}},{\"name\":\"Constant Other Color RGB Value Punctuation Definition Constant\",\"scope\":[\"constant.other.color.rgb-value punctuation.definition.constant\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Constant Other Color\",\"scope\":[\"constant.other.color\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Keyword Other Unit\",\"scope\":[\"keyword.other.unit\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Meta Selector\",\"scope\":[\"meta.selector\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Entity Other Attribute Name Id\",\"scope\":[\"entity.other.attribute-name.id\"],\"settings\":{\"foreground\":\"#fad430\"}},{\"name\":\"Meta Property Name\",\"scope\":[\"meta.property-name\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"Doctypes\",\"scope\":[\"entity.name.tag.doctype\",\"meta.tag.sgml.doctype\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Punctuation Definition Parameters\",\"scope\":[\"punctuation.definition.parameters\"],\"settings\":{\"foreground\":\"#d9f5dd\"}},{\"name\":\"Keyword Control Operator\",\"scope\":[\"keyword.control.operator\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Keyword Operator Logical\",\"scope\":[\"keyword.operator.logical\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Variable Instances\",\"scope\":[\"variable.instance\",\"variable.other.instance\",\"variable.readwrite.instance\",\"variable.other.readwrite.instance\",\"variable.other.property\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Variable Property Other object property\",\"scope\":[\"variable.other.object.property\"],\"settings\":{\"foreground\":\"#faf39f\",\"fontStyle\":\"\"}},{\"name\":\"Variable Property Other object\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Entity Name Function\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#82aaff\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Comparison, returns, imports, and Keyword Operator Ruby\",\"scope\":[\"keyword.control.conditional.js\",\"keyword.operator.comparison\",\"keyword.control.flow.js\",\"keyword.control.flow.ts\",\"keyword.control.flow.tsx\",\"keyword.control.ruby\",\"keyword.control.def.ruby\",\"keyword.control.loop.js\",\"keyword.control.loop.ts\",\"keyword.control.import.js\",\"keyword.control.import.ts\",\"keyword.control.import.tsx\",\"keyword.control.from.js\",\"keyword.control.from.ts\",\"keyword.control.from.tsx\",\"keyword.control.conditional.js\",\"keyword.control.conditional.ts\",\"keyword.control.switch.js\",\"keyword.control.switch.ts\",\"keyword.operator.instanceof.js\",\"keyword.operator.expression.instanceof.ts\",\"keyword.operator.expression.instanceof.tsx\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Support Constant, `new` keyword, Special Method Keyword, `debugger`, other keywords\",\"scope\":[\"support.constant\",\"keyword.other.special-method\",\"keyword.other.new\",\"keyword.other.debugger\",\"keyword.control\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Support Function\",\"scope\":[\"support.function\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Invalid Broken\",\"scope\":[\"invalid.broken\"],\"settings\":{\"foreground\":\"#989da0\",\"background\":\"#F78C6C\"}},{\"name\":\"Invalid Unimplemented\",\"scope\":[\"invalid.unimplemented\"],\"settings\":{\"background\":\"#8BD649\",\"foreground\":\"#ffffff\"}},{\"name\":\"Invalid Illegal\",\"scope\":[\"invalid.illegal\"],\"settings\":{\"foreground\":\"#ffffff\",\"background\":\"#ec5f67\"}},{\"name\":\"Language Variable\",\"scope\":[\"variable.language\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Support Variable Property\",\"scope\":[\"support.variable.property\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Variable Function\",\"scope\":[\"variable.function\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Variable Interpolation\",\"scope\":[\"variable.interpolation\"],\"settings\":{\"foreground\":\"#ef787f\"}},{\"name\":\"Meta Function Call\",\"scope\":[\"meta.function-call\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Punctuation Section Embedded\",\"scope\":[\"punctuation.section.embedded\"],\"settings\":{\"foreground\":\"#e2817f\"}},{\"name\":\"Punctuation Tweaks\",\"scope\":[\"punctuation.terminator.expression\",\"punctuation.definition.arguments\",\"punctuation.definition.array\",\"punctuation.section.array\",\"meta.array\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"More Punctuation Tweaks\",\"scope\":[\"punctuation.definition.list.begin\",\"punctuation.definition.list.end\",\"punctuation.separator.arguments\",\"punctuation.definition.list\"],\"settings\":{\"foreground\":\"#d9f5dd\"}},{\"name\":\"Template Strings\",\"scope\":[\"string.template meta.template.expression\"],\"settings\":{\"foreground\":\"#e2817f\"}},{\"name\":\"Backtics(``) in Template Strings\",\"scope\":[\"string.template punctuation.definition.string\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Italics\",\"scope\":[\"italic\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"italic\"}},{\"name\":\"Bold\",\"scope\":[\"bold\"],\"settings\":{\"foreground\":\"#c5e478\",\"fontStyle\":\"bold\"}},{\"name\":\"Quote\",\"scope\":[\"quote\"],\"settings\":{\"foreground\":\"#969bb7\",\"fontStyle\":\"\"}},{\"name\":\"Raw Code\",\"scope\":[\"raw\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"CoffeScript Variable Assignment\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#31e1eb\"}},{\"name\":\"CoffeScript Parameter Function\",\"scope\":[\"variable.parameter.function.coffee\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"CoffeeScript Assignments\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"C# Readwrite Variables\",\"scope\":[\"variable.other.readwrite.cs\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"C# Classes & Storage types\",\"scope\":[\"entity.name.type.class.cs\",\"storage.type.cs\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"C# Namespaces\",\"scope\":[\"entity.name.type.namespace.cs\"],\"settings\":{\"foreground\":\"#b2ccd6\"}},{\"name\":\"C# Unquoted String Zone\",\"scope\":[\"string.unquoted.preprocessor.message.cs\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"C# Region\",\"scope\":[\"punctuation.separator.hash.cs\",\"keyword.preprocessor.region.cs\",\"keyword.preprocessor.endregion.cs\"],\"settings\":{\"foreground\":\"#ffcb8b\",\"fontStyle\":\"bold\"}},{\"name\":\"C# Other Variables\",\"scope\":[\"variable.other.object.cs\"],\"settings\":{\"foreground\":\"#b2ccd6\"}},{\"name\":\"C# Enum\",\"scope\":[\"entity.name.type.enum.cs\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Dart String\",\"scope\":[\"string.interpolated.single.dart\",\"string.interpolated.double.dart\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Dart Class\",\"scope\":[\"support.class.dart\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Tag names in Stylesheets\",\"scope\":[\"entity.name.tag.css\",\"entity.name.tag.less\",\"entity.name.tag.custom.css\",\"support.constant.property-value.css\"],\"settings\":{\"foreground\":\"#ff6d6d\",\"fontStyle\":\"\"}},{\"name\":\"Wildcard(*) selector in Stylesheets\",\"scope\":[\"entity.name.tag.wildcard.css\",\"entity.name.tag.wildcard.less\",\"entity.name.tag.wildcard.scss\",\"entity.name.tag.wildcard.sass\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"CSS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Attribute Name for CSS\",\"scope\":[\"meta.attribute-selector.css entity.other.attribute-name.attribute\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Elixir Classes\",\"scope\":[\"source.elixir support.type.elixir\",\"source.elixir meta.module.elixir entity.name.class.elixir\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Elixir Functions\",\"scope\":[\"source.elixir entity.name.function\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Elixir Constants\",\"scope\":[\"source.elixir constant.other.symbol.elixir\",\"source.elixir constant.other.keywords.elixir\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Elixir String Punctuations\",\"scope\":[\"source.elixir punctuation.definition.string\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Elixir\",\"scope\":[\"source.elixir variable.other.readwrite.module.elixir\",\"source.elixir variable.other.readwrite.module.elixir punctuation.definition.variable.elixir\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Elixir Binary Punctuations\",\"scope\":[\"source.elixir .punctuation.binary.elixir\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Closure Constant Keyword\",\"scope\":[\"constant.keyword.clojure\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Go Function Calls\",\"scope\":[\"source.go meta.function-call.go\"],\"settings\":{\"foreground\":\"#dddddd\"}},{\"name\":\"Go Keywords\",\"scope\":[\"source.go keyword.package.go\",\"source.go keyword.import.go\",\"source.go keyword.function.go\",\"source.go keyword.type.go\",\"source.go keyword.struct.go\",\"source.go keyword.interface.go\",\"source.go keyword.const.go\",\"source.go keyword.var.go\",\"source.go keyword.map.go\",\"source.go keyword.channel.go\",\"source.go keyword.control.go\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Go Constants e.g. nil, string format (%s, %d, etc.)\",\"scope\":[\"source.go constant.language.go\",\"source.go constant.other.placeholder.go\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"C++ Functions\",\"scope\":[\"entity.name.function.preprocessor.cpp\",\"entity.scope.name.cpp\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"C++ Meta Namespace\",\"scope\":[\"meta.namespace-block.cpp\"],\"settings\":{\"foreground\":\"#e0dec6\"}},{\"name\":\"C++ Language Primitive Storage\",\"scope\":[\"storage.type.language.primitive.cpp\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"C++ Preprocessor Macro\",\"scope\":[\"meta.preprocessor.macro.cpp\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"C++ Variable Parameter\",\"scope\":[\"variable.parameter\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Powershell Variables\",\"scope\":[\"variable.other.readwrite.powershell\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Powershell Function\",\"scope\":[\"support.function.powershell\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"ID Attribute Name in HTML\",\"scope\":[\"entity.other.attribute-name.id.html\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"HTML Punctuation Definition Tag\",\"scope\":[\"punctuation.definition.tag.html\"],\"settings\":{\"foreground\":\"#6ae9f0\"}},{\"name\":\"HTML Doctype\",\"scope\":[\"meta.tag.sgml.doctype.html\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"JavaScript Classes\",\"scope\":[\"meta.class entity.name.type.class.js\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"JavaScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.js\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"JavaScript Terminator\",\"scope\":[\"terminator.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Meta Punctuation Definition\",\"scope\":[\"meta.js punctuation.definition.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Entity Names in Code Documentations\",\"scope\":[\"entity.name.type.instance.jsdoc\",\"entity.name.type.instance.phpdoc\"],\"settings\":{\"foreground\":\"#889fb2\"}},{\"name\":\"Other Variables in Code Documentations\",\"scope\":[\"variable.other.jsdoc\",\"variable.other.phpdoc\"],\"settings\":{\"foreground\":\"#78ccf0\"}},{\"name\":\"JavaScript module imports and exports\",\"scope\":[\"variable.other.meta.import.js\",\"meta.import.js variable.other\",\"variable.other.meta.export.js\",\"meta.export.js variable.other\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Variable Parameter Function\",\"scope\":[\"variable.parameter.function.js\"],\"settings\":{\"foreground\":\"#8b96ea\"}},{\"name\":\"JavaScript[React] Variable Other Object\",\"scope\":[\"variable.other.object.js\",\"variable.other.object.jsx\",\"variable.object.property.js\",\"variable.object.property.jsx\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Variables\",\"scope\":[\"variable.js\",\"variable.other.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Entity Name Type\",\"scope\":[\"entity.name.type.js\",\"entity.name.type.module.js\"],\"settings\":{\"foreground\":\"#ffcb8b\",\"fontStyle\":\"\"}},{\"name\":\"JavaScript Support Classes\",\"scope\":[\"support.class.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JSON Property Names\",\"scope\":[\"support.type.property-name.json\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"JSON Support Constants\",\"scope\":[\"support.constant.json\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"JSON Property values (string)\",\"scope\":[\"meta.structure.dictionary.value.json string.quoted.double\"],\"settings\":{\"foreground\":\"#c789d6\"}},{\"name\":\"Strings in JSON values\",\"scope\":[\"string.quoted.double.json punctuation.definition.string.json\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"Specific JSON Property values like null\",\"scope\":[\"meta.structure.dictionary.json meta.structure.dictionary.value constant.language\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"JavaScript Other Variable\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Ruby Variables\",\"scope\":[\"variable.other.ruby\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Ruby Class\",\"scope\":[\"entity.name.type.class.ruby\"],\"settings\":{\"foreground\":\"#ecc48d\"}},{\"name\":\"Ruby Hashkeys\",\"scope\":[\"constant.language.symbol.hashkey.ruby\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"LESS Tag names\",\"scope\":[\"entity.name.tag.less\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"LESS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Attribute Name for LESS\",\"scope\":[\"meta.attribute-selector.less entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Markdown Headings\",\"scope\":[\"markup.heading.markdown\",\"markup.heading.setext.1.markdown\",\"markup.heading.setext.2.markdown\"],\"settings\":{\"foreground\":\"#82b1ff\"}},{\"name\":\"Markdown Italics\",\"scope\":[\"markup.italic.markdown\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"italic\"}},{\"name\":\"Markdown Bold\",\"scope\":[\"markup.bold.markdown\"],\"settings\":{\"foreground\":\"#c5e478\",\"fontStyle\":\"bold\"}},{\"name\":\"Markdown Quote + others\",\"scope\":[\"markup.quote.markdown\"],\"settings\":{\"foreground\":\"#969bb7\",\"fontStyle\":\"\"}},{\"name\":\"Markdown Raw Code + others\",\"scope\":[\"markup.inline.raw.markdown\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"Markdown Links\",\"scope\":[\"markup.underline.link.markdown\",\"markup.underline.link.image.markdown\"],\"settings\":{\"foreground\":\"#ff869a\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Link Title and Description\",\"scope\":[\"string.other.link.title.markdown\",\"string.other.link.description.markdown\"],\"settings\":{\"foreground\":\"#d6deeb\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Punctuation\",\"scope\":[\"punctuation.definition.string.markdown\",\"punctuation.definition.string.begin.markdown\",\"punctuation.definition.string.end.markdown\",\"meta.link.inline.markdown punctuation.definition.string\"],\"settings\":{\"foreground\":\"#82b1ff\"}},{\"name\":\"Markdown MetaData Punctuation\",\"scope\":[\"punctuation.definition.metadata.markdown\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Markdown List Punctuation\",\"scope\":[\"beginning.punctuation.definition.list.markdown\"],\"settings\":{\"foreground\":\"#82b1ff\"}},{\"name\":\"Markdown Inline Raw String\",\"scope\":[\"markup.inline.raw.string.markdown\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"PHP Variables\",\"scope\":[\"variable.other.php\"],\"settings\":{\"foreground\":\"#bec5d4\"}},{\"name\":\"Support Classes in PHP\",\"scope\":[\"support.class.php\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Punctuations in PHP function calls\",\"scope\":[\"meta.function-call.php punctuation\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"PHP Global Variables\",\"scope\":[\"variable.other.global.php\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Declaration Punctuation in PHP Global Variables\",\"scope\":[\"variable.other.global.php punctuation.definition.variable\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Language Constants in Python\",\"scope\":[\"constant.language.python\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Python Function Parameter and Arguments\",\"scope\":[\"variable.parameter.function.python\",\"meta.function-call.arguments.python\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Python Function Call\",\"scope\":[\"meta.function-call.python\",\"meta.function-call.generic.python\"],\"settings\":{\"foreground\":\"#b2ccd6\"}},{\"name\":\"Punctuations in Python\",\"scope\":[\"punctuation.python\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Decorator Functions in Python\",\"scope\":[\"entity.name.function.decorator.python\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Python Language Variable\",\"scope\":[\"source.python variable.language.special\"],\"settings\":{\"foreground\":\"#8eace3\"}},{\"name\":\"Python import control keyword\",\"scope\":[\"keyword.control\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"SCSS Variable\",\"scope\":[\"variable.scss\",\"variable.sass\",\"variable.parameter.url.scss\",\"variable.parameter.url.sass\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#bec5d4\"}},{\"name\":\"Attribute Name for SASS\",\"scope\":[\"meta.attribute-selector.scss entity.other.attribute-name.attribute\",\"meta.attribute-selector.sass entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Tag names in SASS\",\"scope\":[\"entity.name.tag.scss\",\"entity.name.tag.sass\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"SASS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.scss\",\"keyword.other.unit.sass\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"TypeScript[React] Variables and Object Properties\",\"scope\":[\"variable.other.readwrite.alias.ts\",\"variable.other.readwrite.alias.tsx\",\"variable.other.readwrite.ts\",\"variable.other.readwrite.tsx\",\"variable.other.object.ts\",\"variable.other.object.tsx\",\"variable.object.property.ts\",\"variable.object.property.tsx\",\"variable.other.ts\",\"variable.other.tsx\",\"variable.tsx\",\"variable.ts\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"TypeScript[React] Entity Name Types\",\"scope\":[\"entity.name.type.ts\",\"entity.name.type.tsx\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"TypeScript[React] Node Classes\",\"scope\":[\"support.class.node.ts\",\"support.class.node.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"TypeScript[React] Entity Name Types as Parameters\",\"scope\":[\"meta.type.parameters.ts entity.name.type\",\"meta.type.parameters.tsx entity.name.type\"],\"settings\":{\"foreground\":\"#889fb2\"}},{\"name\":\"TypeScript[React] Import/Export Punctuations\",\"scope\":[\"meta.import.ts punctuation.definition.block\",\"meta.import.tsx punctuation.definition.block\",\"meta.export.ts punctuation.definition.block\",\"meta.export.tsx punctuation.definition.block\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.decorator punctuation.decorator.ts\",\"meta.decorator punctuation.decorator.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.tag.js meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"YAML Entity Name Tags\",\"scope\":[\"entity.name.tag.yaml\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"JavaScript Variable Other ReadWrite\",\"scope\":[\"variable.other.readwrite.js\",\"variable.parameter\"],\"settings\":{\"foreground\":\"#d7dbe0\"}},{\"name\":\"Support Class Component\",\"scope\":[\"support.class.component.js\",\"support.class.component.tsx\"],\"settings\":{\"foreground\":\"#f78c6c\",\"fontStyle\":\"\"}},{\"name\":\"Text nested in React tags\",\"scope\":[\"meta.jsx.children\",\"meta.jsx.children.js\",\"meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"TypeScript Classes\",\"scope\":[\"meta.class entity.name.type.class.tsx\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"TypeScript Entity Name Type\",\"scope\":[\"entity.name.type.tsx\",\"entity.name.type.module.tsx\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"TypeScript Class Variable Keyword\",\"scope\":[\"meta.class.ts meta.var.expr.ts storage.type.ts\",\"meta.class.tsx meta.var.expr.tsx storage.type.tsx\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"TypeScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.ts\",\"meta.method.declaration storage.type.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"normalize font style of certain components\",\"scope\":[\"meta.property-list.css meta.property-value.css variable.other.less\",\"meta.property-list.scss variable.scss\",\"meta.property-list.sass variable.sass\",\"meta.brace\",\"keyword.operator.operator\",\"keyword.operator.or.regexp\",\"keyword.operator.expression.in\",\"keyword.operator.relational\",\"keyword.operator.assignment\",\"keyword.operator.comparison\",\"keyword.operator.type\",\"keyword.operator\",\"keyword\",\"punctuation.definintion.string\",\"punctuation\",\"variable.other.readwrite.js\",\"storage.type\",\"source.css\",\"string.quoted\"],\"settings\":{\"fontStyle\":\"\"}}],\"styleOverrides\":{\"frames\":{\"editorBackground\":\"var(--sl-color-gray-6)\",\"terminalBackground\":\"var(--sl-color-gray-6)\",\"editorActiveTabBackground\":\"var(--sl-color-gray-6)\",\"terminalTitlebarDotsForeground\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"terminalTitlebarDotsOpacity\":\"0.75\",\"inlineButtonForeground\":\"var(--sl-color-text)\",\"frameBoxShadowCssValue\":\"none\"},\"textMarkers\":{\"markBackground\":\"#ffffff17\",\"markBorderColor\":\"#ffffff40\"}}},{\"name\":\"Night Owl Light\",\"type\":\"light\",\"colors\":{\"focusBorder\":\"#93a1a1\",\"foreground\":\"#403f53\",\"disabledForeground\":\"#61616180\",\"descriptionForeground\":\"#403f53\",\"errorForeground\":\"#403f53\",\"icon.foreground\":\"#424242\",\"contrastActiveBorder\":null,\"contrastBorder\":null,\"textBlockQuote.background\":\"#7f7f7f1a\",\"textBlockQuote.border\":\"#007acc80\",\"textCodeBlock.background\":\"#dcdcdc66\",\"textLink.activeForeground\":\"#006ab1\",\"textLink.foreground\":\"#006ab1\",\"textPreformat.foreground\":\"#a31515\",\"textSeparator.foreground\":\"#0000002e\",\"editor.background\":\"#f6f7f9\",\"editor.foreground\":\"#403f53\",\"editorLineNumber.foreground\":\"#90a7b2\",\"editorLineNumber.activeForeground\":\"#403f53\",\"editorActiveLineNumber.foreground\":\"#0b216f\",\"editor.selectionBackground\":\"#e0e0e0\",\"editor.inactiveSelectionBackground\":\"#e0e0e080\",\"editor.selectionHighlightBackground\":\"#339cec33\",\"editorError.foreground\":\"#e64d49\",\"editorWarning.foreground\":\"#daaa01\",\"editorInfo.foreground\":\"#1a85ff\",\"editorHint.foreground\":\"#6c6c6c\",\"problemsErrorIcon.foreground\":\"#e64d49\",\"problemsWarningIcon.foreground\":\"#daaa01\",\"problemsInfoIcon.foreground\":\"#1a85ff\",\"editor.findMatchBackground\":\"#93a1a16c\",\"editor.findMatchHighlightBackground\":\"#93a1a16c\",\"editor.findRangeHighlightBackground\":\"#7497a633\",\"editorLink.activeForeground\":\"#0000ff\",\"editorLightBulb.foreground\":\"#ddb100\",\"editorLightBulbAutoFix.foreground\":\"#007acc\",\"diffEditor.insertedTextBackground\":\"#9ccc2c40\",\"diffEditor.insertedTextBorder\":null,\"diffEditor.removedTextBackground\":\"#ff000033\",\"diffEditor.removedTextBorder\":null,\"diffEditor.insertedLineBackground\":\"#9bb95533\",\"diffEditor.removedLineBackground\":\"#ff000033\",\"editorStickyScroll.background\":\"#fbfbfb\",\"editorStickyScrollHover.background\":\"#f0f0f0\",\"editorInlayHint.background\":\"#2aa29899\",\"editorInlayHint.foreground\":\"#f0f0f0\",\"editorInlayHint.typeBackground\":\"#2aa29899\",\"editorInlayHint.typeForeground\":\"#f0f0f0\",\"editorInlayHint.parameterBackground\":\"#2aa29899\",\"editorInlayHint.parameterForeground\":\"#f0f0f0\",\"editorPane.background\":\"#fbfbfb\",\"editorGroup.emptyBackground\":null,\"editorGroup.focusedEmptyBorder\":null,\"editorGroupHeader.tabsBackground\":\"var(--sl-color-gray-6)\",\"editorGroupHeader.tabsBorder\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"editorGroupHeader.noTabsBackground\":\"#f0f0f0\",\"editorGroupHeader.border\":null,\"editorGroup.border\":\"#f0f0f0\",\"editorGroup.dropBackground\":\"#2677cb2d\",\"editorGroup.dropIntoPromptForeground\":\"#403f53\",\"editorGroup.dropIntoPromptBackground\":\"#f0f0f0\",\"editorGroup.dropIntoPromptBorder\":null,\"sideBySideEditor.horizontalBorder\":\"#f0f0f0\",\"sideBySideEditor.verticalBorder\":\"#f0f0f0\",\"scrollbar.shadow\":\"#cccccc\",\"scrollbarSlider.background\":\"#0000001a\",\"scrollbarSlider.hoverBackground\":\"#00000055\",\"scrollbarSlider.activeBackground\":\"#00000099\",\"panel.background\":\"#f0f0f0\",\"panel.border\":\"#d9d9d9\",\"panelTitle.activeBorder\":\"#424242\",\"panelTitle.activeForeground\":\"#424242\",\"panelTitle.inactiveForeground\":\"#424242bf\",\"panelSectionHeader.background\":\"#80808051\",\"terminal.background\":\"#f6f6f6\",\"widget.shadow\":\"#d9d9d9\",\"editorWidget.background\":\"#f0f0f0\",\"editorWidget.foreground\":\"#403f53\",\"editorWidget.border\":\"#d9d9d9\",\"quickInput.background\":\"#f0f0f0\",\"quickInput.foreground\":\"#403f53\",\"quickInputTitle.background\":\"#0000000f\",\"pickerGroup.foreground\":\"#403f53\",\"pickerGroup.border\":\"#d9d9d9\",\"editor.hoverHighlightBackground\":\"#339cec33\",\"editorHoverWidget.background\":\"#f0f0f0\",\"editorHoverWidget.foreground\":\"#403f53\",\"editorHoverWidget.border\":\"#d9d9d9\",\"editorHoverWidget.statusBarBackground\":\"#e4e4e4\",\"titleBar.activeBackground\":\"var(--sl-color-gray-6)\",\"titleBar.activeForeground\":\"var(--sl-color-text)\",\"titleBar.inactiveBackground\":\"#f0f0f099\",\"titleBar.inactiveForeground\":\"#33333399\",\"titleBar.border\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"toolbar.hoverBackground\":\"#b8b8b850\",\"toolbar.activeBackground\":\"#a6a6a650\",\"tab.activeBackground\":\"#f6f6f6\",\"tab.unfocusedActiveBackground\":\"#f6f6f6\",\"tab.inactiveBackground\":\"#f0f0f0\",\"tab.unfocusedInactiveBackground\":\"#f0f0f0\",\"tab.activeForeground\":\"var(--sl-color-text)\",\"tab.inactiveForeground\":\"#403f53\",\"tab.unfocusedActiveForeground\":\"#403f53b3\",\"tab.unfocusedInactiveForeground\":\"#403f5380\",\"tab.hoverBackground\":null,\"tab.unfocusedHoverBackground\":null,\"tab.hoverForeground\":null,\"tab.unfocusedHoverForeground\":null,\"tab.border\":\"#f0f0f0\",\"tab.lastPinnedBorder\":\"#a9a9a9\",\"tab.activeBorder\":\"transparent\",\"tab.unfocusedActiveBorder\":null,\"tab.activeBorderTop\":\"var(--sl-color-accent)\",\"tab.unfocusedActiveBorderTop\":null,\"tab.hoverBorder\":null,\"tab.unfocusedHoverBorder\":null,\"tab.activeModifiedBorder\":\"#2aa298\",\"tab.inactiveModifiedBorder\":\"#93a1a1\",\"tab.unfocusedActiveModifiedBorder\":\"#93a1a1\",\"tab.unfocusedInactiveModifiedBorder\":\"#93a1a1\",\"badge.background\":\"#2aa298\",\"badge.foreground\":\"#f0f0f0\",\"button.background\":\"#2aa298\",\"button.foreground\":\"#f0f0f0\",\"button.border\":null,\"button.separator\":\"#f0f0f066\",\"button.hoverBackground\":\"#22827a\",\"button.secondaryBackground\":\"#5f6a79\",\"button.secondaryForeground\":\"#ffffff\",\"button.secondaryHoverBackground\":\"#4c5561\",\"dropdown.background\":\"#f0f0f0\",\"dropdown.foreground\":\"#403f53\",\"dropdown.border\":\"#d9d9d9\",\"list.activeSelectionBackground\":\"#d3e8f8\",\"list.activeSelectionForeground\":\"#403f53\",\"tree.indentGuidesStroke\":\"#a9a9a9\",\"input.background\":\"#f0f0f0\",\"input.foreground\":\"#403f53\",\"input.placeholderForeground\":\"#93a1a1\",\"inputOption.activeBorder\":\"#2aa298\",\"inputOption.hoverBackground\":\"#b8b8b850\",\"inputOption.activeBackground\":\"#93a1a133\",\"inputOption.activeForeground\":\"#000000\",\"inputValidation.infoBackground\":\"#f0f0f0\",\"inputValidation.infoBorder\":\"#d0d0d0\",\"inputValidation.warningBackground\":\"#daaa01\",\"inputValidation.warningBorder\":\"#e0af02\",\"inputValidation.errorBackground\":\"#f76e6e\",\"inputValidation.errorBorder\":\"#de3d3b\",\"keybindingLabel.background\":\"#dddddd66\",\"keybindingLabel.foreground\":\"#555555\",\"keybindingLabel.border\":\"#cccccc66\",\"keybindingLabel.bottomBorder\":\"#bbbbbb66\",\"menu.foreground\":\"#403f53\",\"menu.background\":\"#f0f0f0\",\"menu.selectionForeground\":\"#403f53\",\"menu.selectionBackground\":\"#d3e8f8\",\"menu.separatorBackground\":\"#d4d4d4\",\"editor.snippetTabstopHighlightBackground\":\"#0a326433\",\"editor.snippetFinalTabstopHighlightBorder\":\"#0a326480\",\"terminal.ansiBlack\":\"#403f53\",\"terminal.ansiRed\":\"#de3d3b\",\"terminal.ansiGreen\":\"#08916a\",\"terminal.ansiYellow\":\"#e0af02\",\"terminal.ansiBlue\":\"#288ed7\",\"terminal.ansiMagenta\":\"#d6438a\",\"terminal.ansiCyan\":\"#2aa298\",\"terminal.ansiWhite\":\"#f0f0f0\",\"terminal.ansiBrightBlack\":\"#403f53\",\"terminal.ansiBrightRed\":\"#de3d3b\",\"terminal.ansiBrightGreen\":\"#08916a\",\"terminal.ansiBrightYellow\":\"#daaa01\",\"terminal.ansiBrightBlue\":\"#288ed7\",\"terminal.ansiBrightMagenta\":\"#d6438a\",\"terminal.ansiBrightCyan\":\"#2aa298\",\"terminal.ansiBrightWhite\":\"#f0f0f0\",\"selection.background\":\"#7a8181ad\",\"notifications.background\":\"#f0f0f0\",\"notifications.foreground\":\"#403f53\",\"notificationLink.foreground\":\"#994cc3\",\"notifications.border\":\"#cccccc\",\"notificationCenter.border\":\"#cccccc\",\"notificationToast.border\":\"#cccccc\",\"notificationCenterHeader.foreground\":\"#403f53\",\"notificationCenterHeader.background\":\"#f0f0f0\",\"input.border\":\"#d9d9d9\",\"progressBar.background\":\"#2aa298\",\"list.inactiveSelectionBackground\":\"#e0e7ea\",\"list.inactiveSelectionForeground\":\"#403f53\",\"list.focusBackground\":\"#d3e8f8\",\"list.hoverBackground\":\"#d3e8f8\",\"list.focusForeground\":\"#403f53\",\"list.hoverForeground\":\"#403f53\",\"list.highlightForeground\":\"#403f53\",\"list.errorForeground\":\"#e64d49\",\"list.warningForeground\":\"#daaa01\",\"activityBar.background\":\"#f0f0f0\",\"activityBar.foreground\":\"#403f53\",\"activityBar.dropBackground\":\"#d0d0d0\",\"activityBarBadge.background\":\"#403f53\",\"activityBarBadge.foreground\":\"#f0f0f0\",\"activityBar.border\":\"#f0f0f0\",\"sideBar.background\":\"#f0f0f0\",\"sideBar.foreground\":\"#403f53\",\"sideBarTitle.foreground\":\"#403f53\",\"sideBar.border\":\"#f0f0f0\",\"editorGroup.background\":\"#f6f6f6\",\"editorCursor.foreground\":\"#90a7b2\",\"editor.wordHighlightBackground\":\"#339cec33\",\"editor.wordHighlightStrongBackground\":\"#007dd659\",\"editor.lineHighlightBackground\":\"#f0f0f0\",\"editor.rangeHighlightBackground\":\"#7497a633\",\"editorWhitespace.foreground\":\"#d9d9d9\",\"editorIndentGuide.background\":\"#d9d9d9\",\"editorCodeLens.foreground\":\"#403f53\",\"editorBracketMatch.background\":\"#d3e8f8\",\"editorBracketMatch.border\":\"#2aa298\",\"editorError.border\":\"#fbfbfb\",\"editorWarning.border\":\"#daaa01\",\"editorGutter.addedBackground\":\"#49d0c5\",\"editorGutter.modifiedBackground\":\"#6fbef6\",\"editorGutter.deletedBackground\":\"#f76e6e\",\"editorRuler.foreground\":\"#d9d9d9\",\"editorOverviewRuler.errorForeground\":\"#e64d49\",\"editorOverviewRuler.warningForeground\":\"#daaa01\",\"editorSuggestWidget.background\":\"#f0f0f0\",\"editorSuggestWidget.foreground\":\"#403f53\",\"editorSuggestWidget.highlightForeground\":\"#403f53\",\"editorSuggestWidget.selectedBackground\":\"#d3e8f8\",\"editorSuggestWidget.border\":\"#d9d9d9\",\"debugExceptionWidget.background\":\"#f0f0f0\",\"debugExceptionWidget.border\":\"#d9d9d9\",\"editorMarkerNavigation.background\":\"#d0d0d0\",\"editorMarkerNavigationError.background\":\"#f76e6e\",\"editorMarkerNavigationWarning.background\":\"#daaa01\",\"debugToolBar.background\":\"#f0f0f0\",\"extensionButton.prominentBackground\":\"#2aa298\",\"extensionButton.prominentForeground\":\"#f0f0f0\",\"statusBar.background\":\"#f0f0f0\",\"statusBar.border\":\"#f0f0f0\",\"statusBar.debuggingBackground\":\"#f0f0f0\",\"statusBar.debuggingForeground\":\"#403f53\",\"statusBar.foreground\":\"#403f53\",\"statusBar.noFolderBackground\":\"#f0f0f0\",\"statusBar.noFolderForeground\":\"#403f53\",\"peekView.border\":\"#d9d9d9\",\"peekViewEditor.background\":\"#f6f6f6\",\"peekViewEditorGutter.background\":\"#f6f6f6\",\"peekViewEditor.matchHighlightBackground\":\"#49d0c5\",\"peekViewResult.background\":\"#f0f0f0\",\"peekViewResult.fileForeground\":\"#403f53\",\"peekViewResult.lineForeground\":\"#403f53\",\"peekViewResult.matchHighlightBackground\":\"#49d0c5\",\"peekViewResult.selectionBackground\":\"#e0e7ea\",\"peekViewResult.selectionForeground\":\"#403f53\",\"peekViewTitle.background\":\"#f0f0f0\",\"peekViewTitleLabel.foreground\":\"#403f53\",\"peekViewTitleDescription.foreground\":\"#403f53\",\"terminal.foreground\":\"#403f53\"},\"fg\":\"#403f53\",\"bg\":\"#f6f7f9\",\"semanticHighlighting\":false,\"settings\":[{\"name\":\"Changed\",\"scope\":[\"markup.changed\",\"meta.diff.header.git\",\"meta.diff.header.from-file\",\"meta.diff.header.to-file\"],\"settings\":{\"foreground\":\"#556484\"}},{\"name\":\"Deleted\",\"scope\":[\"markup.deleted.diff\"],\"settings\":{\"foreground\":\"#ae3c3afd\"}},{\"name\":\"Inserted\",\"scope\":[\"markup.inserted.diff\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Global settings\",\"settings\":{\"background\":\"#011627\",\"foreground\":\"#403f53\"}},{\"name\":\"Comment\",\"scope\":[\"comment\"],\"settings\":{\"foreground\":\"#5f636f\"}},{\"name\":\"String\",\"scope\":[\"string\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"String Quoted\",\"scope\":[\"string.quoted\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#984e4d\"}},{\"name\":\"Support Constant Math\",\"scope\":[\"support.constant.math\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Number\",\"scope\":[\"constant.numeric\",\"constant.character.numeric\"],\"settings\":{\"foreground\":\"#aa0982\",\"fontStyle\":\"\"}},{\"name\":\"Built-in constant\",\"scope\":[\"constant.language\",\"punctuation.definition.constant\",\"variable.other.constant\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"User-defined constant\",\"scope\":[\"constant.character\",\"constant.other\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Constant Character Escape\",\"scope\":[\"constant.character.escape\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"RegExp String\",\"scope\":[\"string.regexp\",\"string.regexp keyword.other\"],\"settings\":{\"foreground\":\"#3a688f\"}},{\"name\":\"Comma in functions\",\"scope\":[\"meta.function punctuation.separator.comma\"],\"settings\":{\"foreground\":\"#4d667b\"}},{\"name\":\"Variable\",\"scope\":[\"variable\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Keyword\",\"scope\":[\"punctuation.accessor\",\"keyword\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Storage\",\"scope\":[\"storage\",\"meta.var.expr\",\"meta.class meta.method.declaration meta.var.expr storage.type.js\",\"storage.type.property.js\",\"storage.type.property.ts\",\"storage.type.property.tsx\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type.function.arrow.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Class name\",\"scope\":[\"entity.name.class\",\"meta.class entity.name.type.class\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Inherited class\",\"scope\":[\"entity.other.inherited-class\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Function name\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Meta Tag\",\"scope\":[\"punctuation.definition.tag\",\"meta.tag\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"HTML Tag names\",\"scope\":[\"entity.name.tag\",\"meta.tag.other.html\",\"meta.tag.other.js\",\"meta.tag.other.tsx\",\"entity.name.tag.tsx\",\"entity.name.tag.js\",\"entity.name.tag\",\"meta.tag.js\",\"meta.tag.tsx\",\"meta.tag.html\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Tag attribute\",\"scope\":[\"entity.other.attribute-name\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Entity Name Tag Custom\",\"scope\":[\"entity.name.tag.custom\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Library (function & constant)\",\"scope\":[\"support.function\",\"support.constant\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Support Constant Property Value meta\",\"scope\":[\"support.constant.meta.property-value\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Library class/type\",\"scope\":[\"support.type\",\"support.class\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Support Variable DOM\",\"scope\":[\"support.variable.dom\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Invalid\",\"scope\":[\"invalid\"],\"settings\":{\"foreground\":\"#bb2060\"}},{\"name\":\"Invalid deprecated\",\"scope\":[\"invalid.deprecated\"],\"settings\":{\"foreground\":\"#b23834\"}},{\"name\":\"Keyword Operator\",\"scope\":[\"keyword.operator\"],\"settings\":{\"foreground\":\"#096e72\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Relational\",\"scope\":[\"keyword.operator.relational\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Assignment\",\"scope\":[\"keyword.operator.assignment\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Arithmetic\",\"scope\":[\"keyword.operator.arithmetic\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Bitwise\",\"scope\":[\"keyword.operator.bitwise\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Increment\",\"scope\":[\"keyword.operator.increment\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Ternary\",\"scope\":[\"keyword.operator.ternary\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Double-Slashed Comment\",\"scope\":[\"comment.line.double-slash\"],\"settings\":{\"foreground\":\"#5d6376\"}},{\"name\":\"Object\",\"scope\":[\"object\"],\"settings\":{\"foreground\":\"#58656a\"}},{\"name\":\"Null\",\"scope\":[\"constant.language.null\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Meta Brace\",\"scope\":[\"meta.brace\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Meta Delimiter Period\",\"scope\":[\"meta.delimiter.period\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Punctuation Definition String\",\"scope\":[\"punctuation.definition.string\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Punctuation Definition String Markdown\",\"scope\":[\"punctuation.definition.string.begin.markdown\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Boolean\",\"scope\":[\"constant.language.boolean\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Object Comma\",\"scope\":[\"object.comma\"],\"settings\":{\"foreground\":\"#646464\"}},{\"name\":\"Variable Parameter Function\",\"scope\":[\"variable.parameter.function\"],\"settings\":{\"foreground\":\"#096e72\",\"fontStyle\":\"\"}},{\"name\":\"Support Type Property Name & entity name tags\",\"scope\":[\"support.type.vendor.property-name\",\"support.constant.vendor.property-value\",\"support.type.property-name\",\"meta.property-list entity.name.tag\"],\"settings\":{\"foreground\":\"#096e72\",\"fontStyle\":\"\"}},{\"name\":\"Entity Name tag reference in stylesheets\",\"scope\":[\"meta.property-list entity.name.tag.reference\"],\"settings\":{\"foreground\":\"#286d70\"}},{\"name\":\"Constant Other Color RGB Value Punctuation Definition Constant\",\"scope\":[\"constant.other.color.rgb-value punctuation.definition.constant\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Constant Other Color\",\"scope\":[\"constant.other.color\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Keyword Other Unit\",\"scope\":[\"keyword.other.unit\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Meta Selector\",\"scope\":[\"meta.selector\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Entity Other Attribute Name Id\",\"scope\":[\"entity.other.attribute-name.id\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Meta Property Name\",\"scope\":[\"meta.property-name\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Doctypes\",\"scope\":[\"entity.name.tag.doctype\",\"meta.tag.sgml.doctype\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Punctuation Definition Parameters\",\"scope\":[\"punctuation.definition.parameters\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Keyword Control Operator\",\"scope\":[\"keyword.control.operator\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Keyword Operator Logical\",\"scope\":[\"keyword.operator.logical\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"\"}},{\"name\":\"Variable Instances\",\"scope\":[\"variable.instance\",\"variable.other.instance\",\"variable.readwrite.instance\",\"variable.other.readwrite.instance\",\"variable.other.property\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Variable Property Other object property\",\"scope\":[\"variable.other.object.property\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Variable Property Other object\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Entity Name Function\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Keyword Operator Comparison, imports, returns and Keyword Operator Ruby\",\"scope\":[\"keyword.operator.comparison\",\"keyword.control.flow.js\",\"keyword.control.flow.ts\",\"keyword.control.flow.tsx\",\"keyword.control.ruby\",\"keyword.control.module.ruby\",\"keyword.control.class.ruby\",\"keyword.control.def.ruby\",\"keyword.control.loop.js\",\"keyword.control.loop.ts\",\"keyword.control.import.js\",\"keyword.control.import.ts\",\"keyword.control.import.tsx\",\"keyword.control.from.js\",\"keyword.control.from.ts\",\"keyword.control.from.tsx\",\"keyword.operator.instanceof.js\",\"keyword.operator.expression.instanceof.ts\",\"keyword.operator.expression.instanceof.tsx\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Control Conditional\",\"scope\":[\"keyword.control.conditional.js\",\"keyword.control.conditional.ts\",\"keyword.control.switch.js\",\"keyword.control.switch.ts\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"\"}},{\"name\":\"Support Constant, `new` keyword, Special Method Keyword, `debugger`, other keywords\",\"scope\":[\"support.constant\",\"keyword.other.special-method\",\"keyword.other.new\",\"keyword.other.debugger\",\"keyword.control\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Support Function\",\"scope\":[\"support.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Invalid Broken\",\"scope\":[\"invalid.broken\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Invalid Unimplemented\",\"scope\":[\"invalid.unimplemented\"],\"settings\":{\"foreground\":\"#486e26\"}},{\"name\":\"Invalid Illegal\",\"scope\":[\"invalid.illegal\"],\"settings\":{\"foreground\":\"#984e4d\"}},{\"name\":\"Language Variable\",\"scope\":[\"variable.language\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Support Variable Property\",\"scope\":[\"support.variable.property\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Variable Function\",\"scope\":[\"variable.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Variable Interpolation\",\"scope\":[\"variable.interpolation\"],\"settings\":{\"foreground\":\"#a64348\"}},{\"name\":\"Meta Function Call\",\"scope\":[\"meta.function-call\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Punctuation Section Embedded\",\"scope\":[\"punctuation.section.embedded\"],\"settings\":{\"foreground\":\"#b23834\"}},{\"name\":\"Punctuation Tweaks\",\"scope\":[\"punctuation.terminator.expression\",\"punctuation.definition.arguments\",\"punctuation.definition.array\",\"punctuation.section.array\",\"meta.array\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"More Punctuation Tweaks\",\"scope\":[\"punctuation.definition.list.begin\",\"punctuation.definition.list.end\",\"punctuation.separator.arguments\",\"punctuation.definition.list\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Template Strings\",\"scope\":[\"string.template meta.template.expression\"],\"settings\":{\"foreground\":\"#b23834\"}},{\"name\":\"Backtics(``) in Template Strings\",\"scope\":[\"string.template punctuation.definition.string\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Italics\",\"scope\":[\"italic\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"italic\"}},{\"name\":\"Bold\",\"scope\":[\"bold\"],\"settings\":{\"foreground\":\"#3b61b0\",\"fontStyle\":\"bold\"}},{\"name\":\"Quote\",\"scope\":[\"quote\"],\"settings\":{\"foreground\":\"#5c6285\"}},{\"name\":\"Raw Code\",\"scope\":[\"raw\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"CoffeScript Variable Assignment\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#186e73\"}},{\"name\":\"CoffeScript Parameter Function\",\"scope\":[\"variable.parameter.function.coffee\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"CoffeeScript Assignments\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"C# Readwrite Variables\",\"scope\":[\"variable.other.readwrite.cs\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"C# Classes & Storage types\",\"scope\":[\"entity.name.type.class.cs\",\"storage.type.cs\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"C# Namespaces\",\"scope\":[\"entity.name.type.namespace.cs\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Tag names in Stylesheets\",\"scope\":[\"entity.name.tag.css\",\"entity.name.tag.less\",\"entity.name.tag.custom.css\",\"support.constant.property-value.css\"],\"settings\":{\"foreground\":\"#984e4d\",\"fontStyle\":\"\"}},{\"name\":\"Wildcard(*) selector in Stylesheets\",\"scope\":[\"entity.name.tag.wildcard.css\",\"entity.name.tag.wildcard.less\",\"entity.name.tag.wildcard.scss\",\"entity.name.tag.wildcard.sass\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"CSS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Attribute Name for CSS\",\"scope\":[\"meta.attribute-selector.css entity.other.attribute-name.attribute\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Elixir Classes\",\"scope\":[\"source.elixir support.type.elixir\",\"source.elixir meta.module.elixir entity.name.class.elixir\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir Functions\",\"scope\":[\"source.elixir entity.name.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir Constants\",\"scope\":[\"source.elixir constant.other.symbol.elixir\",\"source.elixir constant.other.keywords.elixir\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir String Punctuations\",\"scope\":[\"source.elixir punctuation.definition.string\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir\",\"scope\":[\"source.elixir variable.other.readwrite.module.elixir\",\"source.elixir variable.other.readwrite.module.elixir punctuation.definition.variable.elixir\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir Binary Punctuations\",\"scope\":[\"source.elixir .punctuation.binary.elixir\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Closure Constant Keyword\",\"scope\":[\"constant.keyword.clojure\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Go Function Calls\",\"scope\":[\"source.go meta.function-call.go\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Go Keywords\",\"scope\":[\"source.go keyword.package.go\",\"source.go keyword.import.go\",\"source.go keyword.function.go\",\"source.go keyword.type.go\",\"source.go keyword.struct.go\",\"source.go keyword.interface.go\",\"source.go keyword.const.go\",\"source.go keyword.var.go\",\"source.go keyword.map.go\",\"source.go keyword.channel.go\",\"source.go keyword.control.go\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Go Constants e.g. nil, string format (%s, %d, etc.)\",\"scope\":[\"source.go constant.language.go\",\"source.go constant.other.placeholder.go\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"C++ Functions\",\"scope\":[\"entity.name.function.preprocessor.cpp\",\"entity.scope.name.cpp\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"C++ Meta Namespace\",\"scope\":[\"meta.namespace-block.cpp\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"C++ Language Primitive Storage\",\"scope\":[\"storage.type.language.primitive.cpp\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"C++ Preprocessor Macro\",\"scope\":[\"meta.preprocessor.macro.cpp\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"C++ Variable Parameter\",\"scope\":[\"variable.parameter\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Powershell Variables\",\"scope\":[\"variable.other.readwrite.powershell\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Powershell Function\",\"scope\":[\"support.function.powershell\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"ID Attribute Name in HTML\",\"scope\":[\"entity.other.attribute-name.id.html\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"HTML Punctuation Definition Tag\",\"scope\":[\"punctuation.definition.tag.html\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"HTML Doctype\",\"scope\":[\"meta.tag.sgml.doctype.html\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"JavaScript Classes\",\"scope\":[\"meta.class entity.name.type.class.js\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"JavaScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.js\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"JavaScript Terminator\",\"scope\":[\"terminator.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Meta Punctuation Definition\",\"scope\":[\"meta.js punctuation.definition.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Entity Names in Code Documentations\",\"scope\":[\"entity.name.type.instance.jsdoc\",\"entity.name.type.instance.phpdoc\"],\"settings\":{\"foreground\":\"#4d667b\"}},{\"name\":\"Other Variables in Code Documentations\",\"scope\":[\"variable.other.jsdoc\",\"variable.other.phpdoc\"],\"settings\":{\"foreground\":\"#3e697c\"}},{\"name\":\"JavaScript module imports and exports\",\"scope\":[\"variable.other.meta.import.js\",\"meta.import.js variable.other\",\"variable.other.meta.export.js\",\"meta.export.js variable.other\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Variable Parameter Function\",\"scope\":[\"variable.parameter.function.js\"],\"settings\":{\"foreground\":\"#555ea2\"}},{\"name\":\"JavaScript[React] Variable Other Object\",\"scope\":[\"variable.other.object.js\",\"variable.other.object.jsx\",\"variable.object.property.js\",\"variable.object.property.jsx\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Variables\",\"scope\":[\"variable.js\",\"variable.other.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Entity Name Type\",\"scope\":[\"entity.name.type.js\",\"entity.name.type.module.js\"],\"settings\":{\"foreground\":\"#111111\",\"fontStyle\":\"\"}},{\"name\":\"JavaScript Support Classes\",\"scope\":[\"support.class.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JSON Property Names\",\"scope\":[\"support.type.property-name.json\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"JSON Support Constants\",\"scope\":[\"support.constant.json\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"JSON Property values (string)\",\"scope\":[\"meta.structure.dictionary.value.json string.quoted.double\"],\"settings\":{\"foreground\":\"#7c5686\"}},{\"name\":\"Strings in JSON values\",\"scope\":[\"string.quoted.double.json punctuation.definition.string.json\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Specific JSON Property values like null\",\"scope\":[\"meta.structure.dictionary.json meta.structure.dictionary.value constant.language\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"JavaScript Other Variable\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Ruby Variables\",\"scope\":[\"variable.other.ruby\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Ruby Class\",\"scope\":[\"entity.name.type.class.ruby\"],\"settings\":{\"foreground\":\"#984e4d\"}},{\"name\":\"Ruby Hashkeys\",\"scope\":[\"constant.language.symbol.hashkey.ruby\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Ruby Symbols\",\"scope\":[\"constant.language.symbol.ruby\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"LESS Tag names\",\"scope\":[\"entity.name.tag.less\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"LESS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Attribute Name for LESS\",\"scope\":[\"meta.attribute-selector.less entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Markdown Headings\",\"scope\":[\"markup.heading.markdown\",\"markup.heading.setext.1.markdown\",\"markup.heading.setext.2.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Markdown Italics\",\"scope\":[\"markup.italic.markdown\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"italic\"}},{\"name\":\"Markdown Bold\",\"scope\":[\"markup.bold.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\",\"fontStyle\":\"bold\"}},{\"name\":\"Markdown Quote + others\",\"scope\":[\"markup.quote.markdown\"],\"settings\":{\"foreground\":\"#5c6285\"}},{\"name\":\"Markdown Raw Code + others\",\"scope\":[\"markup.inline.raw.markdown\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Markdown Links\",\"scope\":[\"markup.underline.link.markdown\",\"markup.underline.link.image.markdown\"],\"settings\":{\"foreground\":\"#954f5a\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Link Title and Description\",\"scope\":[\"string.other.link.title.markdown\",\"string.other.link.description.markdown\"],\"settings\":{\"foreground\":\"#403f53\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Punctuation\",\"scope\":[\"punctuation.definition.string.markdown\",\"punctuation.definition.string.begin.markdown\",\"punctuation.definition.string.end.markdown\",\"meta.link.inline.markdown punctuation.definition.string\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Markdown MetaData Punctuation\",\"scope\":[\"punctuation.definition.metadata.markdown\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Markdown List Punctuation\",\"scope\":[\"beginning.punctuation.definition.list.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Markdown Inline Raw String\",\"scope\":[\"markup.inline.raw.string.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"PHP Variables\",\"scope\":[\"variable.other.php\",\"variable.other.property.php\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Support Classes in PHP\",\"scope\":[\"support.class.php\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Punctuations in PHP function calls\",\"scope\":[\"meta.function-call.php punctuation\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"PHP Global Variables\",\"scope\":[\"variable.other.global.php\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Declaration Punctuation in PHP Global Variables\",\"scope\":[\"variable.other.global.php punctuation.definition.variable\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Language Constants in Python\",\"scope\":[\"constant.language.python\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Python Function Parameter and Arguments\",\"scope\":[\"variable.parameter.function.python\",\"meta.function-call.arguments.python\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Python Function Call\",\"scope\":[\"meta.function-call.python\",\"meta.function-call.generic.python\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Punctuations in Python\",\"scope\":[\"punctuation.python\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Decorator Functions in Python\",\"scope\":[\"entity.name.function.decorator.python\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Python Language Variable\",\"scope\":[\"source.python variable.language.special\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Python import control keyword\",\"scope\":[\"keyword.control\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"SCSS Variable\",\"scope\":[\"variable.scss\",\"variable.sass\",\"variable.parameter.url.scss\",\"variable.parameter.url.sass\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Attribute Name for SASS\",\"scope\":[\"meta.attribute-selector.scss entity.other.attribute-name.attribute\",\"meta.attribute-selector.sass entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Tag names in SASS\",\"scope\":[\"entity.name.tag.scss\",\"entity.name.tag.sass\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"SASS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.scss\",\"keyword.other.unit.sass\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"TypeScript[React] Variables and Object Properties\",\"scope\":[\"variable.other.readwrite.alias.ts\",\"variable.other.readwrite.alias.tsx\",\"variable.other.readwrite.ts\",\"variable.other.readwrite.tsx\",\"variable.other.object.ts\",\"variable.other.object.tsx\",\"variable.object.property.ts\",\"variable.object.property.tsx\",\"variable.other.ts\",\"variable.other.tsx\",\"variable.tsx\",\"variable.ts\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"TypeScript[React] Entity Name Types\",\"scope\":[\"entity.name.type.ts\",\"entity.name.type.tsx\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"TypeScript[React] Node Classes\",\"scope\":[\"support.class.node.ts\",\"support.class.node.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"TypeScript[React] Entity Name Types as Parameters\",\"scope\":[\"meta.type.parameters.ts entity.name.type\",\"meta.type.parameters.tsx entity.name.type\"],\"settings\":{\"foreground\":\"#4d667b\"}},{\"name\":\"TypeScript[React] Import/Export Punctuations\",\"scope\":[\"meta.import.ts punctuation.definition.block\",\"meta.import.tsx punctuation.definition.block\",\"meta.export.ts punctuation.definition.block\",\"meta.export.tsx punctuation.definition.block\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.decorator punctuation.decorator.ts\",\"meta.decorator punctuation.decorator.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.tag.js meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"YAML Entity Name Tags\",\"scope\":[\"entity.name.tag.yaml\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"JavaScript Variable Other ReadWrite\",\"scope\":[\"variable.other.readwrite.js\",\"variable.parameter\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Support Class Component\",\"scope\":[\"support.class.component.js\",\"support.class.component.tsx\"],\"settings\":{\"foreground\":\"#aa0982\",\"fontStyle\":\"\"}},{\"name\":\"Text nested in React tags\",\"scope\":[\"meta.jsx.children\",\"meta.jsx.children.js\",\"meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"TypeScript Classes\",\"scope\":[\"meta.class entity.name.type.class.tsx\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"TypeScript Entity Name Type\",\"scope\":[\"entity.name.type.tsx\",\"entity.name.type.module.tsx\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"TypeScript Class Variable Keyword\",\"scope\":[\"meta.class.ts meta.var.expr.ts storage.type.ts\",\"meta.class.tsx meta.var.expr.tsx storage.type.tsx\"],\"settings\":{\"foreground\":\"#76578b\"}},{\"name\":\"TypeScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.ts\",\"meta.method.declaration storage.type.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"normalize font style of certain components\",\"scope\":[\"meta.property-list.css meta.property-value.css variable.other.less\",\"meta.property-list.scss variable.scss\",\"meta.property-list.sass variable.sass\",\"meta.brace\",\"keyword.operator.operator\",\"keyword.operator.or.regexp\",\"keyword.operator.expression.in\",\"keyword.operator.relational\",\"keyword.operator.assignment\",\"keyword.operator.comparison\",\"keyword.operator.type\",\"keyword.operator\",\"keyword\",\"punctuation.definintion.string\",\"punctuation\",\"variable.other.readwrite.js\",\"storage.type\",\"source.css\",\"string.quoted\"],\"settings\":{\"fontStyle\":\"\"}}],\"styleOverrides\":{\"frames\":{\"editorBackground\":\"var(--sl-color-gray-7)\",\"terminalBackground\":\"var(--sl-color-gray-7)\",\"editorActiveTabBackground\":\"var(--sl-color-gray-7)\",\"terminalTitlebarDotsForeground\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"terminalTitlebarDotsOpacity\":\"0.75\",\"inlineButtonForeground\":\"var(--sl-color-text)\",\"frameBoxShadowCssValue\":\"none\"},\"textMarkers\":{\"markBackground\":\"#0000001a\",\"markBorderColor\":\"#00000055\"}}}],\"defaultLocale\":\"en\",\"cascadeLayer\":\"starlight.components\",\"styleOverrides\":{\"borderRadius\":\"0px\",\"borderWidth\":\"1px\",\"codePaddingBlock\":\"0.75rem\",\"codePaddingInline\":\"1rem\",\"codeFontFamily\":\"var(--__sl-font-mono)\",\"codeFontSize\":\"var(--sl-text-code)\",\"codeLineHeight\":\"var(--sl-line-height)\",\"uiFontFamily\":\"var(--__sl-font)\",\"textMarkers\":{\"lineDiffIndicatorMarginLeft\":\"0.25rem\",\"defaultChroma\":\"45\",\"backgroundOpacity\":\"60%\"}},\"plugins\":[{\"name\":\"Starlight Plugin\",\"hooks\":{}},{\"name\":\"astro-expressive-code\",\"hooks\":{}}]}]],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"headingIdCompat\":false,\"preserveScriptOrder\":false,\"liveContentCollections\":false,\"csp\":false,\"staticImportMetaEnv\":false,\"chromeDevtoolsWorkspace\":false},\"legacy\":{\"collections\":false},\"prefetch\":{\"prefetchAll\":true},\"i18n\":{\"defaultLocale\":\"en\",\"locales\":[\"en\"],\"routing\":{\"prefixDefaultLocale\":false,\"redirectToDefaultLocale\":false,\"fallbackType\":\"redirect\"}}}","docs",["Map",11,12,34,35,45,46,56,57,81,82,91,92,102,103,127,128,166,167,212,213,239,240,275,276,285,286,295,296,305,306,315,316,357,358],"404",{"id":11,"data":13,"filePath":23,"digest":24,"rendered":25},{"title":11,"editUrl":14,"head":15,"template":16,"hero":17,"sidebar":20,"pagefind":22,"draft":14},false,[],"splash",{"title":11,"tagline":18,"actions":19},"Page not found. Check the URL or try using the search bar.",[],{"hidden":14,"attrs":21},{},true,"src/content/docs/404.md","bb57d46babfd3e01",{"html":26,"metadata":27},"",{"headings":28,"localImagePaths":29,"remoteImagePaths":30,"frontmatter":31,"imagePaths":33},[],[],[],{"title":11,"template":16,"editUrl":14,"hero":32},{"title":11,"tagline":18},[],"index",{"id":34,"data":36,"body":42,"filePath":43,"digest":44,"deferredRender":22},{"title":37,"description":38,"editUrl":22,"head":39,"tableOfContents":14,"template":16,"next":14,"sidebar":40,"pagefind":22,"draft":14},"🦫 OpenRag — The Open RAG Experimentation Playground","This is a page in my Starlight-powered site",[],{"hidden":14,"attrs":41},{},"import { LinkCard, CardGrid, Card } from '@astrojs/starlight/components';\nimport { Image } from 'astro:assets';\nimport myImage from \"/src/assets/RAG_architecture.png\";\n\n\u003CImage src={myImage} alt=\"RAG Architecture\" width={600} height={350} />\n\n[OpenRag](https://open-rag.ai/) is a lightweight, modular and extensible Retrieval-Augmented Generation (RAG) framework designed to explore and test advanced RAG techniques — 100% open source and focused on experimentation, not lock-in.\n\n> Built by Linagora, OpenRag offers a sovereign-by-design alternative to mainstream RAG stacks.\n\n## Getting Started\n\n\u003CCardGrid>\n \u003CLinkCard \n title=\"Quick Start\"\n icon=\"open-book\"\n href=\"getting_started/quickstart\" \n description='Step-by-step guide to get OpenRAG up and running quickly.'\n />\n \u003CLinkCard\n title=\"Other features\" \n icon=\"information\"\n href=\"documentation/features_in_details\"\n description=\"More information you want to share.\"\n />\n\u003C/CardGrid>","src/content/docs/index.mdx","32a9ed798a41db89","license",{"id":45,"data":47,"body":53,"filePath":54,"digest":55,"deferredRender":22},{"title":48,"editUrl":22,"head":49,"template":50,"sidebar":51,"pagefind":22,"draft":14},"License",[],"doc",{"hidden":14,"attrs":52},{},"OpenRag is licensed under [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.en.html). You are free to use, modify, and distribute this software in compliance with the terms of the license.\n\nFor more details, refer to the [LICENSE](https://github.com/linagora/openrag/blob/main/LICENSE) file in the repository.","src/content/docs/license.mdx","d3d5a30e5289a73a","minimum-specifications",{"id":56,"data":58,"body":63,"filePath":64,"digest":65,"rendered":66},{"title":59,"editUrl":22,"head":60,"template":50,"sidebar":61,"pagefind":22,"draft":14},"Minimum Specifications",[],{"hidden":14,"attrs":62},{},"OpenRAG can be run on a variety of hardware configurations, but still requires a minimum set of specifications.\n\n## Memory\n- Minimum: 16 GB RAM\n- Recommended: 32 GB RAM or more for better performance.\n\n## GPU\n- Minimum: NVIDIA GPU with at least 16 GB VRAM\n\n:::note\nMachines with unified memory (like Apple M-series Macs) work with at least 16 GB of RAM. However considering performance, 32 GB of RAM is recommended.","src/content/docs/minimum-specifications.md","1c6c7b709739d7c7",{"html":67,"metadata":68},"\u003Cp>OpenRAG can be run on a variety of hardware configurations, but still requires a minimum set of specifications.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"memory\">Memory\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#memory\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Memory”\u003C/span>\u003C/a>\u003C/div>\n\u003Cul>\n\u003Cli>Minimum: 16 GB RAM\u003C/li>\n\u003Cli>Recommended: 32 GB RAM or more for better performance.\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"gpu\">GPU\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#gpu\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “GPU”\u003C/span>\u003C/a>\u003C/div>\n\u003Cul>\n\u003Cli>Minimum: NVIDIA GPU with at least 16 GB VRAM\u003C/li>\n\u003C/ul>\n\u003Caside aria-label=\"Note\" class=\"starlight-aside starlight-aside--note\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z\">\u003C/path>\u003C/svg>Note\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Machines with unified memory (like Apple M-series Macs) work with at least 16 GB of RAM. However considering performance, 32 GB of RAM is recommended.\u003C/p>\u003C/div>\u003C/aside>",{"headings":69,"localImagePaths":77,"remoteImagePaths":78,"frontmatter":79,"imagePaths":80},[70,74],{"depth":71,"slug":72,"text":73},2,"memory","Memory",{"depth":71,"slug":75,"text":76},"gpu","GPU",[],[],{"title":59},[],"support-and-contribute",{"id":81,"data":83,"body":88,"filePath":89,"digest":90,"deferredRender":22},{"title":84,"editUrl":22,"head":85,"template":50,"sidebar":86,"pagefind":22,"draft":14},"Support and Contribute",[],{"hidden":14,"attrs":87},{},"We ❤️ your contributions!\n\nWe encourage you to contribute to OpenRag! Here's how you can get involved:\n1. Fork the repository on [GitHub](https://github.com/linagora/openrag).\n2. Create a new branch for your feature or fix.\n3. Submit a pull request for review.\n\nFeel free to ask **questions, suggest features, or report bugs** via the GitHub Issues page. Your feedback helps us improve!","src/content/docs/support-and-contribute.mdx","db3f67ab7f507b52","documentation/api",{"id":91,"data":93,"body":99,"filePath":100,"digest":101,"deferredRender":22},{"title":94,"description":95,"editUrl":22,"head":96,"template":50,"sidebar":97,"pagefind":22,"draft":14},"API","Use the FastAPI RAG Backend API for document-based question answering.",[],{"hidden":14,"attrs":98},{},"The FastAPI-powered backend provides a comprehensive document-based question answering system using Retrieval-Augmented Generation (RAG). The API supports semantic search, document indexing, and chat completions across multiple data partitions with full OpenAI compatibility.\n\n## 🔐 Authentication\n\nAll endpoints require authentication when **enabled** (by adding a authorization token `AUTH_TOKEN` in your **`.env`**). Include your **`AUTH_TOKEN`** in the HTTP request header:\n\n```http\nAuthorization: Bearer YOUR_AUTH_TOKEN\n```\n\nFor OpenAI-compatible endpoints, `AUTH_TOKEN` serves as the `api_key` parameter. Use a placeholder like `'sk-1234'` when authentication is disabled (necessary for when using OpenAI client).\n\n---\n\n## 📡 API Serving Modes\nThis API can be served using **Uvicorn** (default) or **Ray Serve** for distributed deployments.\n\nBy default, the backend uses `uvicorn` to serve the FastAPI app.\n\nTo enable **Ray Serve**, set the following environment variable:\n\n```bash\n// .env\nENABLE_RAY_SERVE=true\n```\n\nAdditional optional environment variables for configuring Ray Serve:\n\n```bash\n// .env\nRAY_SERVE_NUM_REPLICAS=1 # Number of deployment replicas\nRAY_SERVE_HOST=0.0.0.0 # Host address for Ray Serve HTTP proxy\nRAY_SERVE_PORT=8080 # Port for Ray Serve HTTP proxy\n```\n\nWhen using Ray Serve with a **remote cluster**, the HTTP server will be started on the **head node** of the cluster.\n\n:::caution\nWhen using Ray Serve, you must disable the **FastAPI `exception handler`** by setting `DISABLE_EXCEPTION_HANDLER=true` in your environment variables. Ray Serve is currently incompatible with FastAPI's exception handling middleware. Additionally, the Chainlit UI is disabled when using Ray Serve deployment.\n:::\n\n## 🚀 API Endpoints\n### ℹ️ System Health\nVerify server status and availability.\n```http\nGET /health_check\n```\n\n---\n\n### 📦 Document Indexing\n\n#### Upload New File\n```http\nPOST /indexer/partition/{partition}/file/{file_id}\n```\n\nUpload a new file to a specific partition for indexing.\n\n**Parameters:**\n- `partition` (path): Target partition name\n- `file_id` (path): Unique identifier for the file\n\n**Request Body (form-data):**\n- `file` (binary): File to upload\n- `metadata` (JSON string): File metadata (e.g., `{\"owner\": \"user1\"}`)\n\n**Responses:**\n- `201 Created`: Returns task status URL\n- `409 Conflict`: File already exists in partition\n\n#### Replace Existing File\n```http\nPUT /indexer/partition/{partition}/file/{file_id}\n```\n\nReplace an existing file in the partition. Deletes the current entry and creates a new indexing task.\n\n**Parameters:** Same as POST endpoint\n**Request Body:** Same as POST endpoint\n**Response:** `202 Accepted` with task status URL\n\n#### Update File Metadata\n```http\nPATCH /indexer/partition/{partition}/file/{file_id}\n```\n\nUpdate file metadata without reindexing the document.\n\n**Request Body (form-data):**\n- `metadata` (JSON string): Updated metadata\n\n**Response:** `200 OK` on successful update\n\n#### Delete File\n```http\nDELETE /indexer/partition/{partition}/file/{file_id}\n```\n\nRemove a file from the specified partition.\n\n**Responses:**\n- `204 No Content`: Successfully deleted\n- `404 Not Found`: File not found in partition\n\n#### Check Indexing Status\n```http\nGET /indexer/task/{task_id}\n```\n\nMonitor the progress of an asynchronous indexing task.\n\n**Response:** Task status information\n\n---\n\n#### See logs of a given task\n```http\nGET /indexer/task/{task_id}/logs\n```\n\n#### Get error details of a failed task \n```http\nGET /indexer/task/{task_id}/error\n```\n\n\n### 🔍 Semantic Search\n\n#### Search Across Multiple Partitions\n```http\nGET /search/\n```\n\nPerform semantic search across specified partitions.\n\n**Query Parameters:**\n- `partitions` (optional): List of partition names (default: `[\"all\"]`)\n- `text` (required): Search query text\n- `top_k` (optional): Number of results to return (default: `5`)\n\n**Responses:**\n- `200 OK`: JSON list of document links (HATEOAS format)\n- `400 Bad Request`: Invalid partitions parameter\n\n#### Search Within Single Partition\n```http\nGET /search/partition/{partition}\n```\n\nSearch within a specific partition only.\n\n**Query Parameters:**\n- `text` (required): Search query text\n- `top_k` (optional): Number of results (default: `5`)\n\n**Response:** Same as multi-partition search\n\n#### Search Within Specific File\n```http\nGET /search/partition/{partition}/file/{file_id}\n```\n\nSearch within a particular file in a partition.\n\n**Query Parameters:** Same as partition search\n**Response:** Same as other search endpoints\n\n---\n\n### 📄 Document Extraction\n\n#### Get Extract Details\n```http\nGET /extract/{extract_id}\n```\n\nRetrieve specific document extract (chunk) by ID.\n\n**Response:** JSON containing extract content and metadata\n\n---\n\n### 💬 OpenAI-Compatible Chat\n\nThese endpoints provide full OpenAI API compatibility for seamless integration with existing tools and workflows. For detailed example of openai usage [see this section](#openai-client-integration)\n\n* List Available Models\n```http\nGET /v1/models\n```\n\nList all available RAG models (partitions).\n\n**Model Naming Convention:**\n- Pattern: `openrag-{partition_name}` => This model allows to chat specifically with the partition `{partition_name}`\n- Special model: `partition-all` (queries entire vector database)\n\n* Chat Completions\n```http\nPOST /v1/chat/completions\n```\n\nOpenAI-compatible chat completion using **`RAG` pipeline**.\n\n**Request Body:**\n```bash frame=\"none\" title=\"Testing the openai OpenRAG chat completions endpoint with curl\"\ncurl -X POST http://localhost:8080/v1/chat/completions \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer YOUR_AUTH_TOKEN\" \\\n -d '{\n \"model\": \"openrag-{partition_name}\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Your question here\"\n }\n ],\n \"temperature\": 0.7,\n \"stream\": false\n }'\n```\n\n* Text Completions\n```http\nPOST /v1/completions\n```\n\nOpenAI-compatible text completion endpoint.\n\n## 💡 Usage Examples\n\n### Bulk File Indexing\n\nFor indexing multiple files programmatically, you can use this script [`data_indexer.py`](../utility/data_indexer.py) utility script in the [`📁 utility`](../utility/) folder or simply use **`indexer ui`**.\n\n### OpenAI Client Integration\n\nFor detailed examples of using OpenAI clients with this API, see the [`openai_compatibility_guide.ipynb`](./utility/openai_compatibility_guide.ipynb) notebook in the [`📁 utility`](./utility/) folder or simply use **`IndexerUI`**.\n\n#### Example OpenAI Client Usage\n\n```python {9-10}\nfrom openai import OpenAI, AsyncOpenAI\n\napi_base_url = \"http://localhost:8080\" # fastapi base url \nbase_url = f\"{api_base_url}/v1\"\n\nauth_key = ... # your api authentification key AUTH_TOKEN in your .env. Is authentification is disabled, use a placeholder like 'sk-1234'\nclient = OpenAI(api_key=auth_key, base_url=base_url)\n\nyour_partition= 'my_partition' # name of your partition\nmodel = f\"openrag-{your_partition}\"\nsettings = {\n 'model': model,\n 'temperature': 0.3,\n 'stream': False\n}\n\nresponse = client.chat.completions.create(\n **settings,\n messages=[\n {\"role\": \"user\", \"content\": \"What information do you have about...?\"}\n ]\n)\n```\n\n---\n\n## ⚠️ Error Handling\n\nThe API uses standard HTTP status codes:\n\n- `200 OK`: Successful request\n- `201 Created`: Resource created successfully\n- `202 Accepted`: Request accepted for processing\n- `204 No Content`: Successful deletion\n- `400 Bad Request`: Invalid request parameters\n- `404 Not Found`: Resource not found\n- `409 Conflict`: Resource already exists\n\nError responses include detailed JSON messages to help with debugging and integration.","src/content/docs/documentation/API.mdx","ce1c7841c62aaecb","documentation/chainlit_data_persistency",{"id":102,"data":104,"body":109,"filePath":110,"digest":111,"rendered":112},{"title":105,"editUrl":22,"head":106,"template":50,"sidebar":107,"pagefind":22,"draft":14},"Chainlit Data Persistency",[],{"hidden":14,"attrs":108},{},"The [Chainlit data layer](https://docs.chainlit.io/data-layers/overview) allows you to persist conversations in chainlit.\nThis project uses a [dockerized fork](https://github.com/Chainlit/chainlit-datalayer) for easier deployment and setup.\n\nIn OpenRAG, one can activate **`Chainlit data layer`** following these steps:\n\n### Step 1: Set up authentication\nIn fact, chainlit authentication is necessary for data persistency. Set chainlit authentication if not already done (refer to the [chainlit auth guide](./setup_chainlit_ui_auth.md))\n\n### Step 2: Add the following variables\nTo deploy the Chainlit data layer service, add the following variable:\n```bash\n// .env\n# Persistency services: postgres (localstack (AWS emulator deployed locally)\nCHAINLIT_DATALAYER_COMPOSE=extern/chainlit-datalayer/compose.yaml\n```\nThis provides 2 services:\n- a postgres database to store users, feedback, chat history, etc\n- \"s3 bucket\" emulator to store elements (files attached in the chat). \n\n:::note\nChainlit datalayer is cloud-compatible, and the same applies for local data persistency. So for local storage, a cloud/s3 service emulator that runs in a container is deployed as well.\n:::\n\n* Variables for the postgres data\n\n:::tip{icon=\"heart\"}\nKnowing that OpenRAG already has a running postgres service (**`rdb`**) (refer to the [docker-compose.yaml](../docker-compose.yaml) file), there is no need to deploy another postgres service. In that case, comment out the postgres service definition in the [compose.yaml file](../extern/chainlit-datalayer/compose.yaml) and add the following variable to your .env\n:::\n\n```bash\n// .env\nDATABASE_URL=postgresql://root:root_password@rdb:5432/chainlit\n```\n* Variables for chainlit to use the **`S3 Bucket`**\nAdd the following variables to your `.env` so that chainlit can use them to connect to the locally deployed S3 bucket\n\n```bash\n// .env\n## S3 bucket configuration.\nBUCKET_NAME=my-bucket\nAPP_AWS_ACCESS_KEY=random-key\nAPP_AWS_SECRET_KEY=random-key\nAPP_AWS_REGION=eu-central-1\nDEV_AWS_ENDPOINT=http://localstack:4566\n```\n\n:::tip{icon=\"seti:info\"}\nIf you want to deactivate the service, comment out these variables, especially **`CHAINLIT_DATALAYER_COMPOSE`**.\n:::","src/content/docs/documentation/chainlit_data_persistency.md","89e2a599d914734f",{"html":113,"metadata":114},"\u003Cp>The \u003Ca href=\"https://docs.chainlit.io/data-layers/overview\">Chainlit data layer\u003C/a> allows you to persist conversations in chainlit.\nThis project uses a \u003Ca href=\"https://github.com/Chainlit/chainlit-datalayer\">dockerized fork\u003C/a> for easier deployment and setup.\u003C/p>\n\u003Cp>In OpenRAG, one can activate \u003Cstrong>\u003Ccode dir=\"auto\">Chainlit data layer\u003C/code>\u003C/strong> following these steps:\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"step-1-set-up-authentication\">Step 1: Set up authentication\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#step-1-set-up-authentication\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 1: Set up authentication”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>In fact, chainlit authentication is necessary for data persistency. Set chainlit authentication if not already done (refer to the \u003Ca href=\"./setup_chainlit_ui_auth.md\">chainlit auth guide\u003C/a>)\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"step-2-add-the-following-variables\">Step 2: Add the following variables\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#step-2-add-the-following-variables\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 2: Add the following variables”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>To deploy the Chainlit data layer service, add the following variable:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Persistency services: postgres (localstack (AWS emulator deployed locally)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_DATALAYER_COMPOSE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">extern/chainlit-datalayer/compose.yaml\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"# Persistency services: postgres (localstack (AWS emulator deployed locally)CHAINLIT_DATALAYER_COMPOSE=extern/chainlit-datalayer/compose.yaml\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>This provides 2 services:\u003C/p>\n\u003Cul>\n\u003Cli>a postgres database to store users, feedback, chat history, etc\u003C/li>\n\u003Cli>“s3 bucket” emulator to store elements (files attached in the chat).\u003C/li>\n\u003C/ul>\n\u003Caside aria-label=\"Note\" class=\"starlight-aside starlight-aside--note\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z\">\u003C/path>\u003C/svg>Note\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Chainlit datalayer is cloud-compatible, and the same applies for local data persistency. So for local storage, a cloud/s3 service emulator that runs in a container is deployed as well.\u003C/p>\u003C/div>\u003C/aside>\n\u003Cul>\n\u003Cli>Variables for the postgres data\u003C/li>\n\u003C/ul>\n\u003Caside aria-label=\"Tip\" class=\"starlight-aside starlight-aside--tip\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M20.16 5A6.29 6.29 0 0 0 12 4.36a6.27 6.27 0 0 0-8.16 9.48l6.21 6.22a2.78 2.78 0 0 0 3.9 0l6.21-6.22a6.27 6.27 0 0 0 0-8.84m-1.41 7.46-6.21 6.21a.76.76 0 0 1-1.08 0l-6.21-6.24a4.29 4.29 0 0 1 0-6 4.27 4.27 0 0 1 6 0 1 1 0 0 0 1.42 0 4.27 4.27 0 0 1 6 0 4.29 4.29 0 0 1 .08 6Z\">\u003C/path>\u003C/svg>Tip\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Knowing that OpenRAG already has a running postgres service (\u003Cstrong>\u003Ccode dir=\"auto\">rdb\u003C/code>\u003C/strong>) (refer to the \u003Ca href=\"../docker-compose.yaml\">docker-compose.yaml\u003C/a> file), there is no need to deploy another postgres service. In that case, comment out the postgres service definition in the \u003Ca href=\"../extern/chainlit-datalayer/compose.yaml\">compose.yaml file\u003C/a> and add the following variable to your .env\u003C/p>\u003C/div>\u003C/aside>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">DATABASE_URL\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">postgresql://root:root_password@rdb:5432/chainlit\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"DATABASE_URL=postgresql://root:root_password@rdb:5432/chainlit\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cul>\n\u003Cli>Variables for chainlit to use the \u003Cstrong>\u003Ccode dir=\"auto\">S3 Bucket\u003C/code>\u003C/strong>\nAdd the following variables to your \u003Ccode dir=\"auto\">.env\u003C/code> so that chainlit can use them to connect to the locally deployed S3 bucket\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\">## S3 bucket configuration.\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">BUCKET_NAME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">my-bucket\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">APP_AWS_ACCESS_KEY\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">random-key\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">APP_AWS_SECRET_KEY\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">random-key\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">APP_AWS_REGION\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">eu-central-1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">DEV_AWS_ENDPOINT\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">http://localstack:4566\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"## S3 bucket configuration.BUCKET_NAME=my-bucketAPP_AWS_ACCESS_KEY=random-keyAPP_AWS_SECRET_KEY=random-keyAPP_AWS_REGION=eu-central-1DEV_AWS_ENDPOINT=http://localstack:4566\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Caside aria-label=\"Tip\" class=\"starlight-aside starlight-aside--tip\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M23.780 10.803L23.818 10.803Q23.628 8.029 21.918 5.331L21.918 5.331Q20.664 3.469 18.916 2.234Q17.168 0.999 15.002 0.467L15.002 0.467Q13.748 0.125 12.646 0.125L12.646 0.125L10.746 0.125Q7.326 0.467 4.438 2.595L4.438 2.595Q1.132 5.369 0.296 9.245L0.296 9.245Q0.068 10.423 0.068 11.145L0.068 11.145L0.068 13.045Q0.448 16.351 2.082 18.631L2.082 18.631Q4.172 21.709 7.288 22.925L7.288 22.925Q9.454 23.685 11.202 23.875L11.202 23.875L13.102 23.875Q17.434 23.495 20.474 20.303L20.474 20.303Q22.944 17.833 23.666 14.375L23.666 14.375Q23.742 14.071 23.799 13.539Q23.856 13.007 23.932 12.703L23.932 12.703L23.932 11.411Q23.780 11.145 23.780 10.803L23.780 10.803ZM11.924 21.975L11.924 21.975Q9.188 21.975 6.870 20.569L6.870 20.569Q4.590 19.239 3.279 16.921Q1.968 14.603 1.968 11.867Q1.968 9.131 3.317 6.813Q4.666 4.495 6.984 3.165L6.984 3.165Q9.378 1.759 12.152 1.759L12.152 1.759Q14.850 1.835 17.149 3.184Q19.448 4.533 20.778 6.813L20.778 6.813Q22.146 9.131 22.108 11.867Q22.070 14.603 20.683 16.921Q19.296 19.239 17.016 20.569L17.016 20.569Q14.660 21.975 11.924 21.975ZM15.496 18.289L14.774 18.289Q14.432 18.289 14.166 18.175L14.166 18.175Q14.014 18.175 13.900 17.947L13.900 17.947Q13.862 17.833 13.824 17.795L13.824 17.795L13.824 10.081Q12.874 10.157 11.031 10.214Q9.188 10.271 8.238 10.309L8.238 10.309L8.238 11.259L9.416 11.259Q9.758 11.259 9.948 11.487Q10.138 11.715 10.138 12.095L10.138 12.095L10.138 17.567Q10.138 18.289 9.416 18.289L9.416 18.289L8.352 18.289L8.352 19.239L15.496 19.239L15.496 18.289ZM11.696 8.675L11.696 8.675Q12.570 8.675 13.140 8.067Q13.710 7.459 13.710 6.642Q13.710 5.825 13.102 5.217Q12.494 4.609 11.658 4.609Q10.822 4.609 10.252 5.217Q9.682 5.825 9.682 6.642Q9.682 7.459 10.290 8.067Q10.898 8.675 11.696 8.675Z\">\u003C/path>\u003C/svg>Tip\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>If you want to deactivate the service, comment out these variables, especially \u003Cstrong>\u003Ccode dir=\"auto\">CHAINLIT_DATALAYER_COMPOSE\u003C/code>\u003C/strong>.\u003C/p>\u003C/div>\u003C/aside>",{"headings":115,"localImagePaths":123,"remoteImagePaths":124,"frontmatter":125,"imagePaths":126},[116,120],{"depth":117,"slug":118,"text":119},3,"step-1-set-up-authentication","Step 1: Set up authentication",{"depth":117,"slug":121,"text":122},"step-2-add-the-following-variables","Step 2: Add the following variables",[],[],{"title":105},[],"documentation/features_in_details",{"id":127,"data":129,"body":134,"filePath":135,"digest":136,"rendered":137},{"title":130,"editUrl":22,"head":131,"template":50,"sidebar":132,"pagefind":22,"draft":14},"✨ Features",[],{"hidden":14,"attrs":133},{},"### 📁 Rich File Format Support\n[OpenRag](https://open-rag.ai/) supports a comprehensive range of file formats for seamless document ingestion:\n\n* **Text Files**: `txt`, `md`\n* **Document Files**: `pdf`, `docx`, `doc`, `pptx` - Advanced PDF parsing with OCR support and Office document processing\n* **Audio Files**: `wav`, `mp3`, `mp4`, `ogg`, `flv`, `wma`, `aac` - Audio transcription and content extraction\n* **Images**: `png`, `jpeg`, `jpg`, `svg` - Vision Language Model (VLM) powered image captioning and analysis\n\nAll files are intelligently converted to **Markdown format** with images replaced by AI-generated captions, ensuring consistent processing across all document types.\n\n### 🎛️ Native Web-Based Indexer UI\nExperience intuitive document management through our built-in web interface.\n\n\u003Cdetails>\n\n\u003Csummary>Indexer UI Features\u003C/summary>\n\n* **Drag-and-drop file upload** with batch processing capabilities\n* **Real-time indexing progress** monitoring and status updates\n* **Admin Dashboard** to monitor RAG components (Indexer, VectorDB, TaskStateManager, etc)\n* **Partition management** - organize documents into logical collections\n* **Visual document preview** and metadata inspection\n* **Search and filtering** capabilities for indexed content\n\n\u003C/details>\n\n### 🗂️ Partition-Based Architecture\nOrganize your knowledge base with flexible partition management:\n* **Multi-tenant support** - isolate different document collections\n\n### 💬 Interactive Chat UI with Source Attribution\nEngage with your documents through our sophisticated chat interface:\n\n\u003Cdetails>\n\n\u003Csummary>Chat UI Features\u003C/summary>\n\n* **Chainlit-powered UI** - modern, responsive chat experience\n* **Source transparency** - every response includes relevant document references\n\u003C/details>\n\n\n### 🔌 OpenAI API Compatibility\n[OpenRag](https://open-rag.ai/) API is tailored to be compatible with the OpenAI format (see the [openai-compatibility section](/documentation/api/#-openai-compatible-chat) for more details), enabling seamless integration of your deployed RAG into popular frontends and workflows such as OpenWebUI, LangChain, N8N, and more. This ensures flexibility and ease of adoption without requiring custom adapters.\n\n\u003Cdetails>\n\n\u003Csummary>Summary of features\u003C/summary>\n\n* **Drop-in replacement** for OpenAI API endpoints\n* **Compatible with popular frontends** like OpenWebUI, LangChain, N8N, and more\n* **Authentication support** - secure your API with token-based auth\n\n\u003C/details>\n\n\n### ⚡ Distributed Ray Deployment\nScale your RAG pipeline across multiple machines and GPUs.\n\u003Cdetails>\n\n\u003Csummary>Distributed Ray Deployment\u003C/summary>\n\n* **Horizontal scaling** - distribute processing across worker nodes\n* **GPU acceleration** - optimize inference across available hardware\n* **Resource management** - intelligent allocation of compute resources\n* **Monitoring dashboard** - real-time cluster health and performance metrics\n\nSee the section on [distributed deployment in a ray cluster](#5-distributed-deployment-in-a-ray-cluster) for more details\n\n\u003C/details>\n\n### 🔍 Advanced Retrieval & Reranking\n[OpenRag](https://open-rag.ai/) Leverages state-of-the-art retrieval techniques for superior accuracy.\n\n\u003Cdetails>\n\n\u003Csummary>Implemented advanced retrieval techniques\u003C/summary>\n\n* **Hybrid search** - combines semantic similarity with **`BM25` keyword** matching\n* **Contextual retrieval** - Anthropic's technique for enhanced chunk relevance\n* **Multilingual reranking** - using `Alibaba-NLP/gte-multilingual-reranker-base`\n\n\u003C/details>","src/content/docs/documentation/features_in_details.md","87e037dc8bb5a2ac",{"html":138,"metadata":139},"\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-rich-file-format-support\">📁 Rich File Format Support\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-rich-file-format-support\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📁 Rich File Format Support”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>\u003Ca href=\"https://open-rag.ai/\">OpenRag\u003C/a> supports a comprehensive range of file formats for seamless document ingestion:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Text Files\u003C/strong>: \u003Ccode dir=\"auto\">txt\u003C/code>, \u003Ccode dir=\"auto\">md\u003C/code>\u003C/li>\n\u003Cli>\u003Cstrong>Document Files\u003C/strong>: \u003Ccode dir=\"auto\">pdf\u003C/code>, \u003Ccode dir=\"auto\">docx\u003C/code>, \u003Ccode dir=\"auto\">doc\u003C/code>, \u003Ccode dir=\"auto\">pptx\u003C/code> - Advanced PDF parsing with OCR support and Office document processing\u003C/li>\n\u003Cli>\u003Cstrong>Audio Files\u003C/strong>: \u003Ccode dir=\"auto\">wav\u003C/code>, \u003Ccode dir=\"auto\">mp3\u003C/code>, \u003Ccode dir=\"auto\">mp4\u003C/code>, \u003Ccode dir=\"auto\">ogg\u003C/code>, \u003Ccode dir=\"auto\">flv\u003C/code>, \u003Ccode dir=\"auto\">wma\u003C/code>, \u003Ccode dir=\"auto\">aac\u003C/code> - Audio transcription and content extraction\u003C/li>\n\u003Cli>\u003Cstrong>Images\u003C/strong>: \u003Ccode dir=\"auto\">png\u003C/code>, \u003Ccode dir=\"auto\">jpeg\u003C/code>, \u003Ccode dir=\"auto\">jpg\u003C/code>, \u003Ccode dir=\"auto\">svg\u003C/code> - Vision Language Model (VLM) powered image captioning and analysis\u003C/li>\n\u003C/ul>\n\u003Cp>All files are intelligently converted to \u003Cstrong>Markdown format\u003C/strong> with images replaced by AI-generated captions, ensuring consistent processing across all document types.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"️-native-web-based-indexer-ui\">🎛️ Native Web-Based Indexer UI\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#️-native-web-based-indexer-ui\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🎛️ Native Web-Based Indexer UI”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Experience intuitive document management through our built-in web interface.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Indexer UI Features\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Drag-and-drop file upload\u003C/strong> with batch processing capabilities\u003C/li>\n\u003Cli>\u003Cstrong>Real-time indexing progress\u003C/strong> monitoring and status updates\u003C/li>\n\u003Cli>\u003Cstrong>Admin Dashboard\u003C/strong> to monitor RAG components (Indexer, VectorDB, TaskStateManager, etc)\u003C/li>\n\u003Cli>\u003Cstrong>Partition management\u003C/strong> - organize documents into logical collections\u003C/li>\n\u003Cli>\u003Cstrong>Visual document preview\u003C/strong> and metadata inspection\u003C/li>\n\u003Cli>\u003Cstrong>Search and filtering\u003C/strong> capabilities for indexed content\u003C/li>\n\u003C/ul>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"️-partition-based-architecture\">🗂️ Partition-Based Architecture\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#️-partition-based-architecture\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🗂️ Partition-Based Architecture”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Organize your knowledge base with flexible partition management:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Multi-tenant support\u003C/strong> - isolate different document collections\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-interactive-chat-ui-with-source-attribution\">💬 Interactive Chat UI with Source Attribution\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-interactive-chat-ui-with-source-attribution\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “💬 Interactive Chat UI with Source Attribution”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Engage with your documents through our sophisticated chat interface:\u003C/p>\n\u003Cdetails>\n\u003Csummary>Chat UI Features\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Chainlit-powered UI\u003C/strong> - modern, responsive chat experience\u003C/li>\n\u003Cli>\u003Cstrong>Source transparency\u003C/strong> - every response includes relevant document references\u003C/li>\n\u003C/ul>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-openai-api-compatibility\">🔌 OpenAI API Compatibility\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-openai-api-compatibility\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔌 OpenAI API Compatibility”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>\u003Ca href=\"https://open-rag.ai/\">OpenRag\u003C/a> API is tailored to be compatible with the OpenAI format (see the \u003Ca href=\"/documentation/api/#-openai-compatible-chat\">openai-compatibility section\u003C/a> for more details), enabling seamless integration of your deployed RAG into popular frontends and workflows such as OpenWebUI, LangChain, N8N, and more. This ensures flexibility and ease of adoption without requiring custom adapters.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Summary of features\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Drop-in replacement\u003C/strong> for OpenAI API endpoints\u003C/li>\n\u003Cli>\u003Cstrong>Compatible with popular frontends\u003C/strong> like OpenWebUI, LangChain, N8N, and more\u003C/li>\n\u003Cli>\u003Cstrong>Authentication support\u003C/strong> - secure your API with token-based auth\u003C/li>\n\u003C/ul>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-distributed-ray-deployment\">⚡ Distributed Ray Deployment\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-distributed-ray-deployment\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “⚡ Distributed Ray Deployment”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Scale your RAG pipeline across multiple machines and GPUs.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Distributed Ray Deployment\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Horizontal scaling\u003C/strong> - distribute processing across worker nodes\u003C/li>\n\u003Cli>\u003Cstrong>GPU acceleration\u003C/strong> - optimize inference across available hardware\u003C/li>\n\u003Cli>\u003Cstrong>Resource management\u003C/strong> - intelligent allocation of compute resources\u003C/li>\n\u003Cli>\u003Cstrong>Monitoring dashboard\u003C/strong> - real-time cluster health and performance metrics\u003C/li>\n\u003C/ul>\n\u003Cp>See the section on \u003Ca href=\"#5-distributed-deployment-in-a-ray-cluster\">distributed deployment in a ray cluster\u003C/a> for more details\u003C/p>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-advanced-retrieval--reranking\">🔍 Advanced Retrieval & Reranking\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-advanced-retrieval--reranking\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔍 Advanced Retrieval & Reranking”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>\u003Ca href=\"https://open-rag.ai/\">OpenRag\u003C/a> Leverages state-of-the-art retrieval techniques for superior accuracy.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Implemented advanced retrieval techniques\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Hybrid search\u003C/strong> - combines semantic similarity with \u003Cstrong>\u003Ccode dir=\"auto\">BM25\u003C/code> keyword\u003C/strong> matching\u003C/li>\n\u003Cli>\u003Cstrong>Contextual retrieval\u003C/strong> - Anthropic’s technique for enhanced chunk relevance\u003C/li>\n\u003Cli>\u003Cstrong>Multilingual reranking\u003C/strong> - using \u003Ccode dir=\"auto\">Alibaba-NLP/gte-multilingual-reranker-base\u003C/code>\u003C/li>\n\u003C/ul>\n\u003C/details>",{"headings":140,"localImagePaths":162,"remoteImagePaths":163,"frontmatter":164,"imagePaths":165},[141,144,147,150,153,156,159],{"depth":117,"slug":142,"text":143},"-rich-file-format-support","📁 Rich File Format Support",{"depth":117,"slug":145,"text":146},"️-native-web-based-indexer-ui","🎛️ Native Web-Based Indexer UI",{"depth":117,"slug":148,"text":149},"️-partition-based-architecture","🗂️ Partition-Based Architecture",{"depth":117,"slug":151,"text":152},"-interactive-chat-ui-with-source-attribution","💬 Interactive Chat UI with Source Attribution",{"depth":117,"slug":154,"text":155},"-openai-api-compatibility","🔌 OpenAI API Compatibility",{"depth":117,"slug":157,"text":158},"-distributed-ray-deployment","⚡ Distributed Ray Deployment",{"depth":117,"slug":160,"text":161},"-advanced-retrieval--reranking","🔍 Advanced Retrieval & Reranking",[],[],{"title":130},[],"documentation/setup_glusterfs",{"id":166,"data":168,"body":173,"filePath":174,"digest":175,"rendered":176},{"title":169,"editUrl":22,"head":170,"template":50,"sidebar":171,"pagefind":22,"draft":14},"GlusterFS",[],{"hidden":14,"attrs":172},{},"# 🪵 GlusterFS Setup for Shared Storage (Ray Cluster)\n\nIn a Ray distributed setup, **all worker nodes need access to certain shared resources** used by the application. \nThis includes:\n\n- `.env` (environment variables for models and settings)\n- `.hydra_config` (application configuration)\n- Uploaded files (`/data`)\n- Model weights (e.g. `/model_weights` if using HF local cache)\n\n---\n\n## 1️⃣ Setup VPN (if required)\n\nIf your Ray nodes are **not on the same local network**, set up a VPN between them first. \n➡ Refer to the dedicated [VPN setup guide](/documentation/setup_vpn/). \nYou can skip this step if your nodes are already on the same LAN.\n\n---\n\n## 2️⃣ Setup GlusterFS (Distributed Filesystem)\n\nGlusterFS allows you to **share and replicate storage across multiple nodes** with redundancy and better fault tolerance.\n\nThis guide assumes:\n- You have 4 machines on the same private network\n- You want all of them to share `/ray_mount`\n\n---\n\n### 🔧 Install GlusterFS and start the GlusterFS\n\nRun this on **all 4 machines**:\n\n```bash title=\"installing and starting glusterfs...\"\nsudo apt update\nsudo apt install -y glusterfs-server\nsudo systemctl enable --now glusterd\n```\n\n---\n\n### 🤝 Connect all nodes into a trusted pool\n\nFrom one node (e.g. the Ray head), run:\n\n```bash title:\"connecting nodes...\"\ngluster peer probe \u003CIP_OF_NODE_2>\ngluster peer probe \u003CIP_OF_NODE_3>\ngluster peer probe \u003CIP_OF_NODE_4>\n```\n\nConfirm with:\n\n```bash title=\"shows the status of nodes\"\ngluster peer status\n```\n\n---\n\n### 📁 Create bricks on each node\n\nOn **each node**, run:\n\n```bash\nsudo mkdir -p /gluster/bricks/ray_mount\n```\n\n---\n\n### 📦 Create the replicated GlusterFS volume\n\nFrom one node (e.g. the Ray head):\n\n```bash\ngluster volume create rayvol replica 4 \\\n \u003CIP1>:/gluster/bricks/ray_mount \\\n \u003CIP2>:/gluster/bricks/ray_mount \\\n \u003CIP3>:/gluster/bricks/ray_mount \\\n \u003CIP4>:/gluster/bricks/ray_mount \\\n force\n```\n\nStart the volume:\n\n```bash\ngluster volume start rayvol\n```\n\n---\n\n### 🔗 Mount the volume on all nodes\n\nInstall the client tools:\n\n```bash\nsudo apt install -y glusterfs-client\n```\n\nCreate the mount point:\n\n```bash\nsudo mkdir -p /ray_mount\n```\n\nMount it (on each node):\n\n```bash\nsudo mount -t glusterfs \u003CANY_NODE_IP>:/rayvol /ray_mount\n```\n\nTo make this permanent across reboots:\n\n```bash\necho \"\u003CANY_NODE_IP>:/rayvol /ray_mount glusterfs defaults,_netdev 0 0\" | sudo tee -a /etc/fstab\n```\n\n> ✅ Replace `\u003CANY_NODE_IP>` with one of your node IPs in the GlusterFS cluster.\n\n---\n\n### 📂 Copy required data to the shared folder\n\nFrom any node:\n\n```bash\nsudo cp -r .hydra_config /ray_mount/\nsudo cp .env /ray_mount/\nsudo mkdir /ray_mount/data /ray_mount/model_weights\nsudo chown -R ubuntu:ubuntu /ray_mount\n```\n\n> ✅ Ensure that the ownership is set to the user running Ray workers (e.g. `ubuntu`) so that all nodes can read/write.\n\n---\n\nNow, all Ray nodes will have **consistent access to required data and configurations** via `/ray_mount`, backed by a fault-tolerant and distributed filesystem.","src/content/docs/documentation/setup_glusterfs.md","a0b1fd932b56b526",{"html":177,"metadata":178},"\u003Cdiv class=\"sl-heading-wrapper level-h1\">\u003Ch1 id=\"-glusterfs-setup-for-shared-storage-ray-cluster\">🪵 GlusterFS Setup for Shared Storage (Ray Cluster)\u003C/h1>\u003Ca class=\"sl-anchor-link\" href=\"#-glusterfs-setup-for-shared-storage-ray-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🪵 GlusterFS Setup for Shared Storage (Ray Cluster)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>In a Ray distributed setup, \u003Cstrong>all worker nodes need access to certain shared resources\u003C/strong> used by the application.\u003Cbr>\nThis includes:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode dir=\"auto\">.env\u003C/code> (environment variables for models and settings)\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">.hydra_config\u003C/code> (application configuration)\u003C/li>\n\u003Cli>Uploaded files (\u003Ccode dir=\"auto\">/data\u003C/code>)\u003C/li>\n\u003Cli>Model weights (e.g. \u003Ccode dir=\"auto\">/model_weights\u003C/code> if using HF local cache)\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"1️⃣-setup-vpn-if-required\">1️⃣ Setup VPN (if required)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#1️⃣-setup-vpn-if-required\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “1️⃣ Setup VPN (if required)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>If your Ray nodes are \u003Cstrong>not on the same local network\u003C/strong>, set up a VPN between them first.\u003Cbr>\n➡ Refer to the dedicated \u003Ca href=\"/documentation/setup_vpn/\">VPN setup guide\u003C/a>.\u003Cbr>\nYou can skip this step if your nodes are already on the same LAN.\u003C/p>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"2️⃣-setup-glusterfs-distributed-filesystem\">2️⃣ Setup GlusterFS (Distributed Filesystem)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#2️⃣-setup-glusterfs-distributed-filesystem\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “2️⃣ Setup GlusterFS (Distributed Filesystem)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>GlusterFS allows you to \u003Cstrong>share and replicate storage across multiple nodes\u003C/strong> with redundancy and better fault tolerance.\u003C/p>\n\u003Cp>This guide assumes:\u003C/p>\n\u003Cul>\n\u003Cli>You have 4 machines on the same private network\u003C/li>\n\u003Cli>You want all of them to share \u003Ccode dir=\"auto\">/ray_mount\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-install-glusterfs-and-start-the-glusterfs\">🔧 Install GlusterFS and start the GlusterFS\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-install-glusterfs-and-start-the-glusterfs\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔧 Install GlusterFS and start the GlusterFS”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Run this on \u003Cstrong>all 4 machines\u003C/strong>:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame is-terminal has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">installing and starting glusterfs...\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">update\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">install\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterfs-server\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">systemctl\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">enable\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--now\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterd\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo apt updatesudo apt install -y glusterfs-serversudo systemctl enable --now glusterd\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-connect-all-nodes-into-a-trusted-pool\">🤝 Connect all nodes into a trusted pool\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-connect-all-nodes-into-a-trusted-pool\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🤝 Connect all nodes into a trusted pool”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>From one node (e.g. the Ray head), run:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">probe\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP_OF_NODE_2>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">probe\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP_OF_NODE_3>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">probe\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP_OF_NODE_4>\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster peer probe \u003CIP_OF_NODE_2>gluster peer probe \u003CIP_OF_NODE_3>gluster peer probe \u003CIP_OF_NODE_4>\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Confirm with:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">shows the status of nodes\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">status\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster peer status\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-create-bricks-on-each-node\">📁 Create bricks on each node\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-create-bricks-on-each-node\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📁 Create bricks on each node”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>On \u003Cstrong>each node\u003C/strong>, run:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mkdir\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-p\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/gluster/bricks/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo mkdir -p /gluster/bricks/ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-create-the-replicated-glusterfs-volume\">📦 Create the replicated GlusterFS volume\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-create-the-replicated-glusterfs-volume\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📦 Create the replicated GlusterFS volume”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>From one node (e.g. the Ray head):\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">volume\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">create\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">rayvol\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">replica\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">4\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP1>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP2>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP3>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP4>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">force\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster volume create rayvol replica 4 \\ \u003CIP1>:/gluster/bricks/ray_mount \\ \u003CIP2>:/gluster/bricks/ray_mount \\ \u003CIP3>:/gluster/bricks/ray_mount \\ \u003CIP4>:/gluster/bricks/ray_mount \\ force\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Start the volume:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">volume\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">start\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">rayvol\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster volume start rayvol\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-mount-the-volume-on-all-nodes\">🔗 Mount the volume on all nodes\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-mount-the-volume-on-all-nodes\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔗 Mount the volume on all nodes”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Install the client tools:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">install\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterfs-client\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo apt install -y glusterfs-client\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Create the mount point:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mkdir\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-p\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo mkdir -p /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Mount it (on each node):\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-t\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterfs\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><ANY_NODE_IP>:/rayvol\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo mount -t glusterfs \u003CANY_NODE_IP>:/rayvol /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>To make this permanent across reboots:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">echo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">\"\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\"><ANY_NODE_IP>:/rayvol /ray_mount glusterfs defaults,_netdev 0 0\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">\"\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">|\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">tee\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-a\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/etc/fstab\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"echo "\u003CANY_NODE_IP>:/rayvol /ray_mount glusterfs defaults,_netdev 0 0" | sudo tee -a /etc/fstab\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cblockquote>\n\u003Cp>✅ Replace \u003Ccode dir=\"auto\"><ANY_NODE_IP>\u003C/code> with one of your node IPs in the GlusterFS cluster.\u003C/p>\n\u003C/blockquote>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-copy-required-data-to-the-shared-folder\">📂 Copy required data to the shared folder\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-copy-required-data-to-the-shared-folder\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📂 Copy required data to the shared folder”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>From any node:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">cp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-r\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">.hydra_config\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">cp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">.env\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mkdir\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/data\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/model_weights\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">chown\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-R\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ubuntu:ubuntu\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo cp -r .hydra_config /ray_mount/sudo cp .env /ray_mount/sudo mkdir /ray_mount/data /ray_mount/model_weightssudo chown -R ubuntu:ubuntu /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cblockquote>\n\u003Cp>✅ Ensure that the ownership is set to the user running Ray workers (e.g. \u003Ccode dir=\"auto\">ubuntu\u003C/code>) so that all nodes can read/write.\u003C/p>\n\u003C/blockquote>\n\u003Chr>\n\u003Cp>Now, all Ray nodes will have \u003Cstrong>consistent access to required data and configurations\u003C/strong> via \u003Ccode dir=\"auto\">/ray_mount\u003C/code>, backed by a fault-tolerant and distributed filesystem.\u003C/p>",{"headings":179,"localImagePaths":208,"remoteImagePaths":209,"frontmatter":210,"imagePaths":211},[180,184,187,190,193,196,199,202,205],{"depth":181,"slug":182,"text":183},1,"-glusterfs-setup-for-shared-storage-ray-cluster","🪵 GlusterFS Setup for Shared Storage (Ray Cluster)",{"depth":71,"slug":185,"text":186},"1️⃣-setup-vpn-if-required","1️⃣ Setup VPN (if required)",{"depth":71,"slug":188,"text":189},"2️⃣-setup-glusterfs-distributed-filesystem","2️⃣ Setup GlusterFS (Distributed Filesystem)",{"depth":117,"slug":191,"text":192},"-install-glusterfs-and-start-the-glusterfs","🔧 Install GlusterFS and start the GlusterFS",{"depth":117,"slug":194,"text":195},"-connect-all-nodes-into-a-trusted-pool","🤝 Connect all nodes into a trusted pool",{"depth":117,"slug":197,"text":198},"-create-bricks-on-each-node","📁 Create bricks on each node",{"depth":117,"slug":200,"text":201},"-create-the-replicated-glusterfs-volume","📦 Create the replicated GlusterFS volume",{"depth":117,"slug":203,"text":204},"-mount-the-volume-on-all-nodes","🔗 Mount the volume on all nodes",{"depth":117,"slug":206,"text":207},"-copy-required-data-to-the-shared-folder","📂 Copy required data to the shared folder",[],[],{"title":169},[],"documentation/setup_indexerui",{"id":212,"data":214,"body":219,"filePath":220,"digest":221,"rendered":222},{"title":215,"editUrl":22,"head":216,"template":50,"sidebar":217,"pagefind":22,"draft":14},"Indexer UI",[],{"hidden":14,"attrs":218},{},"## Configuring the Indexer UI\n\n### 1. Download the `indexer-ui` Submodule\n\n> Ensure the `indexer-ui` submodule is initialized and downloaded. If not, run the following command from the root of your `openrag` project:\n\n```bash\n// .env\ncd \u003Cproject-name> # openrag project\ngit submodule update --init --recursive\n```\n\n:::note\nThe `--init --recursive` flags will:\n\n* Initialize all submodules defined in the `.gitmodules` file\n* Clone the content of each submodule\n* Recursively initialize and update nested submodules\n:::\n\n:::caution\nEach version of **`openrag`** ships with a specific compatible commit of [indexer-ui](https://github.com/linagora/openrag-admin-ui). The above command is sufficient.\nIn development mode, to fetch the latest version of `indexer-ui`, run:\n```bash title=\"fetching the latest version of submodules...\"\ngit submodule foreach 'git checkout main && git pull'\n```\n:::\n\n### 2. Set Environment Variables\n\nTo enable the Indexer UI, add the following environment variables to your configuration:\n\n* Replace **`X.X.X.X`** with `localhost` (for local use) or your server IP\n* Replace **`APP_PORT`** with your FastAPI port (default: 8080)\n* Set the **base URL of the Indexer UI** (required to prevent CORS issues). Replace **`INDEXERUI_PORT`** accordingly\n* Set the **base URL of your FastAPI backend** (used by the frontend). Replace **`APP_PORT`** accordingly\n\n```bash\n// .env\nINDEXERUI_COMPOSE_FILE=extern/indexer-ui/docker-compose.yaml # Path to the docker-compose file\nVITE_INCLUDE_CREDENTIALS=false # Set to true if FastAPI authentication is enabled\nINDEXERUI_PORT=8060 # Port for the Indexer UI (default: 3042)\nINDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT'\nVITE_API_BASE_URL='http://X.X.X.X:APP_PORT'\n```","src/content/docs/documentation/setup_indexerui.md","f61cee2ff322674a",{"html":223,"metadata":224},"\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"configuring-the-indexer-ui\">Configuring the Indexer UI\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#configuring-the-indexer-ui\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Configuring the Indexer UI”\u003C/span>\u003C/a>\u003C/div>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"1-download-the-indexer-ui-submodule\">1. Download the \u003Ccode dir=\"auto\">indexer-ui\u003C/code> Submodule\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#1-download-the-indexer-ui-submodule\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “1. Download the indexer-ui Submodule”\u003C/span>\u003C/a>\u003C/div>\n\u003Cblockquote>\n\u003Cp>Ensure the \u003Ccode dir=\"auto\">indexer-ui\u003C/code> submodule is initialized and downloaded. If not, run the following command from the root of your \u003Ccode dir=\"auto\">openrag\u003C/code> project:\u003C/p>\n\u003C/blockquote>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">cd\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><project-name>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># openrag project\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">git\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">submodule\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">update\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--init\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--recursive\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"cd \u003Cproject-name> # openrag projectgit submodule update --init --recursive\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Caside aria-label=\"Note\" class=\"starlight-aside starlight-aside--note\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z\">\u003C/path>\u003C/svg>Note\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>The \u003Ccode dir=\"auto\">--init --recursive\u003C/code> flags will:\u003C/p>\u003Cul>\n\u003Cli>Initialize all submodules defined in the \u003Ccode dir=\"auto\">.gitmodules\u003C/code> file\u003C/li>\n\u003Cli>Clone the content of each submodule\u003C/li>\n\u003Cli>Recursively initialize and update nested submodules\u003C/li>\n\u003C/ul>\u003C/div>\u003C/aside>\n\u003Caside aria-label=\"Caution\" class=\"starlight-aside starlight-aside--caution\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 16C11.8022 16 11.6089 16.0587 11.4444 16.1686C11.28 16.2784 11.1518 16.4346 11.0761 16.6173C11.0004 16.8001 10.9806 17.0011 11.0192 17.1951C11.0578 17.3891 11.153 17.5673 11.2929 17.7071C11.4327 17.847 11.6109 17.9422 11.8049 17.9808C11.9989 18.0194 12.2 17.9996 12.3827 17.9239C12.5654 17.8482 12.7216 17.72 12.8315 17.5556C12.9413 17.3911 13 17.1978 13 17C13 16.7348 12.8946 16.4805 12.7071 16.2929C12.5196 16.1054 12.2652 16 12 16ZM22.67 17.47L14.62 3.47003C14.3598 3.00354 13.9798 2.61498 13.5192 2.3445C13.0586 2.07401 12.5341 1.9314 12 1.9314C11.4659 1.9314 10.9414 2.07401 10.4808 2.3445C10.0202 2.61498 9.64019 3.00354 9.38 3.47003L1.38 17.47C1.11079 17.924 0.966141 18.441 0.960643 18.9688C0.955144 19.4966 1.089 20.0166 1.34868 20.4761C1.60837 20.9356 1.9847 21.3185 2.43968 21.5861C2.89466 21.8536 3.41218 21.9964 3.94 22H20.06C20.5921 22.0053 21.1159 21.8689 21.5779 21.6049C22.0399 21.341 22.4234 20.9589 22.689 20.4978C22.9546 20.0368 23.0928 19.5134 23.0895 18.9814C23.0862 18.4493 22.9414 17.9277 22.67 17.47ZM20.94 19.47C20.8523 19.626 20.7245 19.7556 20.5697 19.8453C20.4149 19.935 20.2389 19.9815 20.06 19.98H3.94C3.76111 19.9815 3.5851 19.935 3.43032 19.8453C3.27553 19.7556 3.14765 19.626 3.06 19.47C2.97223 19.318 2.92602 19.1456 2.92602 18.97C2.92602 18.7945 2.97223 18.622 3.06 18.47L11.06 4.47003C11.1439 4.30623 11.2714 4.16876 11.4284 4.07277C11.5855 3.97678 11.766 3.92599 11.95 3.92599C12.134 3.92599 12.3145 3.97678 12.4716 4.07277C12.6286 4.16876 12.7561 4.30623 12.84 4.47003L20.89 18.47C20.9892 18.6199 21.0462 18.7937 21.055 18.9732C21.0638 19.1527 21.0241 19.3312 20.94 19.49V19.47ZM12 8.00003C11.7348 8.00003 11.4804 8.10538 11.2929 8.29292C11.1054 8.48046 11 8.73481 11 9.00003V13C11 13.2652 11.1054 13.5196 11.2929 13.7071C11.4804 13.8947 11.7348 14 12 14C12.2652 14 12.5196 13.8947 12.7071 13.7071C12.8946 13.5196 13 13.2652 13 13V9.00003C13 8.73481 12.8946 8.48046 12.7071 8.29292C12.5196 8.10538 12.2652 8.00003 12 8.00003Z\">\u003C/path>\u003C/svg>Caution\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Each version of \u003Cstrong>\u003Ccode dir=\"auto\">openrag\u003C/code>\u003C/strong> ships with a specific compatible commit of \u003Ca href=\"https://github.com/linagora/openrag-admin-ui\">indexer-ui\u003C/a>. The above command is sufficient.\nIn development mode, to fetch the latest version of \u003Ccode dir=\"auto\">indexer-ui\u003C/code>, run:\u003C/p>\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">fetching the latest version of submodules...\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">git\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">submodule\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">foreach\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\">git checkout main && git pull\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"git submodule foreach 'git checkout main && git pull'\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\u003C/div>\u003C/aside>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"2-set-environment-variables\">2. Set Environment Variables\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#2-set-environment-variables\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “2. Set Environment Variables”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>To enable the Indexer UI, add the following environment variables to your configuration:\u003C/p>\n\u003Cul>\n\u003Cli>Replace \u003Cstrong>\u003Ccode dir=\"auto\">X.X.X.X\u003C/code>\u003C/strong> with \u003Ccode dir=\"auto\">localhost\u003C/code> (for local use) or your server IP\u003C/li>\n\u003Cli>Replace \u003Cstrong>\u003Ccode dir=\"auto\">APP_PORT\u003C/code>\u003C/strong> with your FastAPI port (default: 8080)\u003C/li>\n\u003Cli>Set the \u003Cstrong>base URL of the Indexer UI\u003C/strong> (required to prevent CORS issues). Replace \u003Cstrong>\u003Ccode dir=\"auto\">INDEXERUI_PORT\u003C/code>\u003C/strong> accordingly\u003C/li>\n\u003Cli>Set the \u003Cstrong>base URL of your FastAPI backend\u003C/strong> (used by the frontend). Replace \u003Cstrong>\u003Ccode dir=\"auto\">APP_PORT\u003C/code>\u003C/strong> accordingly\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">INDEXERUI_COMPOSE_FILE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">extern/indexer-ui/docker-compose.yaml\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Path to the docker-compose file\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">VITE_INCLUDE_CREDENTIALS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">false\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Set to true if FastAPI authentication is enabled\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">INDEXERUI_PORT\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">8060\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Port for the Indexer UI (default: 3042)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">INDEXERUI_URL\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\">http://X.X.X.X:INDEXERUI_PORT\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">VITE_API_BASE_URL\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\">http://X.X.X.X:APP_PORT\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"INDEXERUI_COMPOSE_FILE=extern/indexer-ui/docker-compose.yaml # Path to the docker-compose fileVITE_INCLUDE_CREDENTIALS=false # Set to true if FastAPI authentication is enabledINDEXERUI_PORT=8060 # Port for the Indexer UI (default: 3042)INDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT'VITE_API_BASE_URL='http://X.X.X.X:APP_PORT'\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>",{"headings":225,"localImagePaths":235,"remoteImagePaths":236,"frontmatter":237,"imagePaths":238},[226,229,232],{"depth":71,"slug":227,"text":228},"configuring-the-indexer-ui","Configuring the Indexer UI",{"depth":117,"slug":230,"text":231},"1-download-the-indexer-ui-submodule","1. Download the indexer-ui Submodule",{"depth":117,"slug":233,"text":234},"2-set-environment-variables","2. Set Environment Variables",[],[],{"title":215},[],"documentation/setup_vpn",{"id":239,"data":241,"body":246,"filePath":247,"digest":248,"rendered":249},{"title":242,"editUrl":22,"head":243,"template":50,"sidebar":244,"pagefind":22,"draft":14},"🌐 VPN Setup for Remote Machines with WireGuard",[],{"hidden":14,"attrs":245},{},"This guide helps you securely connect your remote machines using **WireGuard VPN**, allowing you to share files (NFS, etc.) as if they were on the same private network.\n\n---\n\n## 1️⃣ Install WireGuard on all machines\n\nRun the following on **each machine** (server and clients):\n\n```bash\nsudo apt update\nsudo apt install -y wireguard\n```\n\n---\n\n## 2️⃣ Configure the VPN Server (Main machine `X.X.X.X`)\n\nCreate the configuration file:\n\n```bash\nsudo nano /etc/wireguard/wg0.conf\n```\n\nPaste the following:\n\n```ini\n// /etc/wireguard/wg0.conf\n...\n[Interface]\nAddress = 10.0.0.1/24\nPrivateKey = \u003CSERVER_PRIVATE_KEY>\nListenPort = 51820\n\n# Allow forwarding and NAT\nPostUp = sysctl -w net.ipv4.ip_forward=1\nPostUp = iptables -A FORWARD -i wg0 -j ACCEPT\nPostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\nPostDown = iptables -D FORWARD -i wg0 -j ACCEPT\nPostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE\n\n[Peer]\n# Client machine\nPublicKey = \u003CCLIENT_PUBLIC_KEY>\nAllowedIPs = 10.0.0.2/32\n```\n\n---\n\n## 3️⃣ Configure the VPN Client (Other machine `X.X.X.X`)\n\nCreate the configuration file:\n\n```bash\nsudo nano /etc/wireguard/wg0.conf\n```\n\nPaste the following:\n\n```ini\n// /etc/wireguard/wg0.conf\n...\n[Interface]\nAddress = 10.0.0.2/24\nPrivateKey = \u003CCLIENT_PRIVATE_KEY>\n\n[Peer]\n# VPN Server\nPublicKey = \u003CSERVER_PUBLIC_KEY>\nEndpoint = X.X.X.X:51820 # Replace with your VPN server IP\nAllowedIPs = 10.0.0.0/24\nPersistentKeepalive = 25\n```\n\n---\n\n## 🔑 Generate Keys on Each Machine\n\nOn **each machine**, run:\n\n```bash\nwg genkey | tee privatekey | wg pubkey > publickey\n```\n\nUse the generated keys in your configurations:\n- `privatekey` → `\u003CPRIVATE_KEY>`\n- `publickey` → to give to the peer\n\n---\n\n## 🚀 Start and Enable VPN on Both Machines\n\nTo start the VPN connection:\n```bash\nsudo wg-quick up wg0\n```\n\nTo enable the VPN automatically on boot:\n```bash\nsudo systemctl enable wg-quick@wg0\n```\n\n---\n\n## ✅ Verification\n\nTest the VPN connection:\n- From **client**:\n ```bash\n ping 10.0.0.1\n ```\n- From **server**:\n ```bash\n ping 10.0.0.2\n ```\n\n---\n\n:::caution{icon=\"approve-check\"}\n- After the VPN is up, you can configure services like **NFS** using the **10.0.0.0/24 private network**.\n- Make sure your firewall allows `UDP 51820`.\n- Adjust the `AllowedIPs` and network according to your needs.\n:::","src/content/docs/documentation/setup_vpn.md","b0c5587658196dbc",{"html":250,"metadata":251},"\u003Cp>This guide helps you securely connect your remote machines using \u003Cstrong>WireGuard VPN\u003C/strong>, allowing you to share files (NFS, etc.) as if they were on the same private network.\u003C/p>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"1️⃣-install-wireguard-on-all-machines\">1️⃣ Install WireGuard on all machines\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#1️⃣-install-wireguard-on-all-machines\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “1️⃣ Install WireGuard on all machines”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Run the following on \u003Cstrong>each machine\u003C/strong> (server and clients):\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">update\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">install\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wireguard\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo apt updatesudo apt install -y wireguard\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"2️⃣-configure-the-vpn-server-main-machine-xxxx\">2️⃣ Configure the VPN Server (Main machine \u003Ccode dir=\"auto\">X.X.X.X\u003C/code>)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#2️⃣-configure-the-vpn-server-main-machine-xxxx\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “2️⃣ Configure the VPN Server (Main machine X.X.X.X)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Create the configuration file:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">nano\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/etc/wireguard/wg0.conf\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo nano /etc/wireguard/wg0.conf\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Paste the following:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">/etc/wireguard/wg0.conf\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"ini\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">...\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Interface]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">Address\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.1/24\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PrivateKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <SERVER_PRIVATE_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">ListenPort\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 51820\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Allow forwarding and NAT\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostUp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = sysctl -w \u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">net.ipv4.ip_forward\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">=1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostUp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -A FORWARD -i wg0 -j ACCEPT\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostUp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostDown\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -D FORWARD -i wg0 -j ACCEPT\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostDown\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Peer]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Client machine\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PublicKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <CLIENT_PUBLIC_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">AllowedIPs\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.2/32\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"...[Interface]Address = 10.0.0.1/24PrivateKey = \u003CSERVER_PRIVATE_KEY>ListenPort = 51820# Allow forwarding and NATPostUp = sysctl -w net.ipv4.ip_forward=1PostUp = iptables -A FORWARD -i wg0 -j ACCEPTPostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEPostDown = iptables -D FORWARD -i wg0 -j ACCEPTPostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE[Peer]# Client machinePublicKey = \u003CCLIENT_PUBLIC_KEY>AllowedIPs = 10.0.0.2/32\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"3️⃣-configure-the-vpn-client-other-machine-xxxx\">3️⃣ Configure the VPN Client (Other machine \u003Ccode dir=\"auto\">X.X.X.X\u003C/code>)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#3️⃣-configure-the-vpn-client-other-machine-xxxx\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “3️⃣ Configure the VPN Client (Other machine X.X.X.X)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Create the configuration file:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">nano\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/etc/wireguard/wg0.conf\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo nano /etc/wireguard/wg0.conf\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Paste the following:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">/etc/wireguard/wg0.conf\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"ini\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">...\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Interface]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">Address\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.2/24\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PrivateKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <CLIENT_PRIVATE_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Peer]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># VPN Server\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PublicKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <SERVER_PUBLIC_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">Endpoint\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = X.X.X.X:51820 \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Replace with your VPN server IP\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">AllowedIPs\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.0/24\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PersistentKeepalive\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 25\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"...[Interface]Address = 10.0.0.2/24PrivateKey = \u003CCLIENT_PRIVATE_KEY>[Peer]# VPN ServerPublicKey = \u003CSERVER_PUBLIC_KEY>Endpoint = X.X.X.X:51820 # Replace with your VPN server IPAllowedIPs = 10.0.0.0/24PersistentKeepalive = 25\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-generate-keys-on-each-machine\">🔑 Generate Keys on Each Machine\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-generate-keys-on-each-machine\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔑 Generate Keys on Each Machine”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>On \u003Cstrong>each machine\u003C/strong>, run:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">wg\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">genkey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">|\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">tee\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">privatekey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">|\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">wg\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">pubkey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">publickey\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"wg genkey | tee privatekey | wg pubkey > publickey\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Use the generated keys in your configurations:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode dir=\"auto\">privatekey\u003C/code> → \u003Ccode dir=\"auto\"><PRIVATE_KEY>\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">publickey\u003C/code> → to give to the peer\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-start-and-enable-vpn-on-both-machines\">🚀 Start and Enable VPN on Both Machines\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-start-and-enable-vpn-on-both-machines\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🚀 Start and Enable VPN on Both Machines”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>To start the VPN connection:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wg-quick\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">up\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wg0\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo wg-quick up wg0\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>To enable the VPN automatically on boot:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">systemctl\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">enable\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wg-quick@wg0\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo systemctl enable wg-quick@wg0\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-verification\">✅ Verification\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-verification\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “✅ Verification”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Test the VPN connection:\u003C/p>\n\u003Cul>\n\u003Cli>From \u003Cstrong>client\u003C/strong>:\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">ping\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.1\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"ping 10.0.0.1\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003C/li>\n\u003Cli>From \u003Cstrong>server\u003C/strong>:\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">ping\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.2\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"ping 10.0.0.2\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Caside aria-label=\"Caution\" class=\"starlight-aside starlight-aside--caution\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M18.71 7.21a1 1 0 0 0-1.42 0l-7.45 7.46-3.13-3.14A1.02 1.02 0 1 0 5.29 13l3.84 3.84a1.001 1.001 0 0 0 1.42 0l8.16-8.16a1 1 0 0 0 0-1.47Z\">\u003C/path>\u003C/svg>Caution\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cul>\n\u003Cli>After the VPN is up, you can configure services like \u003Cstrong>NFS\u003C/strong> using the \u003Cstrong>10.0.0.0/24 private network\u003C/strong>.\u003C/li>\n\u003Cli>Make sure your firewall allows \u003Ccode dir=\"auto\">UDP 51820\u003C/code>.\u003C/li>\n\u003Cli>Adjust the \u003Ccode dir=\"auto\">AllowedIPs\u003C/code> and network according to your needs.\u003C/li>\n\u003C/ul>\u003C/div>\u003C/aside>",{"headings":252,"localImagePaths":271,"remoteImagePaths":272,"frontmatter":273,"imagePaths":274},[253,256,259,262,265,268],{"depth":71,"slug":254,"text":255},"1️⃣-install-wireguard-on-all-machines","1️⃣ Install WireGuard on all machines",{"depth":71,"slug":257,"text":258},"2️⃣-configure-the-vpn-server-main-machine-xxxx","2️⃣ Configure the VPN Server (Main machine X.X.X.X)",{"depth":71,"slug":260,"text":261},"3️⃣-configure-the-vpn-client-other-machine-xxxx","3️⃣ Configure the VPN Client (Other machine X.X.X.X)",{"depth":71,"slug":263,"text":264},"-generate-keys-on-each-machine","🔑 Generate Keys on Each Machine",{"depth":71,"slug":266,"text":267},"-start-and-enable-vpn-on-both-machines","🚀 Start and Enable VPN on Both Machines",{"depth":71,"slug":269,"text":270},"-verification","✅ Verification",[],[],{"title":242},[],"getting_started/quickstart",{"id":275,"data":277,"body":282,"filePath":283,"digest":284,"deferredRender":22},{"title":278,"editUrl":22,"head":279,"template":50,"sidebar":280,"pagefind":22,"draft":14},"Quick Start",[],{"hidden":14,"attrs":281},{},"import { Tabs, TabItem, Code } from '@astrojs/starlight/components';\nimport compose_ollama_cpu from '/src/assets/compose_ollama_cpu.yaml?raw';\nimport env_ollama_cpu from '/src/assets/env_ollama_cpu.env?raw';\nimport compose_linux_gpu from '/src/assets/compose_linux_gpu.yaml?raw';\nimport env_linux_gpu from '/src/assets/env_linux_gpu.env?raw';\n\nOpenRAG is an open source Retrieval Augmented Generation (RAG) solution. This guide is a step-by-step walkthrough to help you get started with OpenRAG.\n\n- Before proceeding, ensure your hardware meets the [recommended specifications](/minimum-specifications).\n- Install [Docker](https://www.docker.com/get-started).\n\n## Docker\n\nUse the following `docker-compose.yml` file to set up a simple OpenRAG environment:\n\n\u003CTabs>\n \u003CTabItem label=\"Linux\">\n \u003CTabs>\n \u003CTabItem label=\"Nvidia GPU\">\n \u003Cdetails>\n \u003Csummary>Click to expand the docker-compose.yml content\u003C/summary>\n \u003CCode code={compose_linux_gpu} lang=\"yaml\" />\n \u003C/details>\n You will also need to provide some environment variables. Create a `.env` file in the same directory as your `docker-compose.yml` file with the following content:\n \u003Cdetails>\n \u003Csummary>Click to expand the .env content\u003C/summary>\n \u003CCode code={env_linux_gpu} lang=\"bash\" />\n \u003C/details>\n\n \u003C/TabItem>\n \u003CTabItem label=\"CPU\">\n ```yaml\n Nothing here\n ```\n \u003C/TabItem>\n \u003C/Tabs>\n \u003C/TabItem>\n \u003CTabItem label=\"MacOS\">\n The simplest way to run OpenRAG on MacOS is to use the ollama model inference server. For more in-depth deployment options, refer to the [Docker installation guide](/installation/docker).\n \u003Cdetails>\n \u003Csummary>Click to expand the docker-compose.yml content\u003C/summary>\n \u003CCode code={compose_ollama_cpu} lang=\"yaml\" />\n \u003C/details>\n\n You will also need to provide some environment variables. Create a `.env` file in the same directory as your `docker-compose.yml` file with the following content:\n \u003Cdetails>\n \u003Csummary>Click to expand the .env content\u003C/summary>\n \u003CCode code={env_ollama_cpu} lang=\"bash\" /> \n \u003C/details>\n \u003C/TabItem>\n\u003C/Tabs>\n\n## Ansible\n\nClone the OpenRAG repository:\n```bash\ngit clone https://github.com/linagora/openrag.git\ncd openrag\n```\n\nRun the provided deployment script and follow the instructions:\n```bash\n./ansible/deploy.sh\n```","src/content/docs/getting_started/quickstart.mdx","7f0f5c9ea67f6cfb","getting_started/usage",{"id":285,"data":287,"body":292,"filePath":293,"digest":294,"deferredRender":22},{"title":288,"editUrl":22,"head":289,"template":50,"sidebar":290,"pagefind":22,"draft":14},"Usage",[],{"hidden":14,"attrs":291},{},"Once you have installed your OpenRAG instance, you can start using it to upload and query your documents.\n\n## Default ports\n\nBy default, OpenRAG services are exposed on the following ports:\n\n| Service | Port | Description |\n|-------------------|---------------|----------------------------------------------------------------|\n| API Documentation | 8080/docs | Main API for document ingestion and querying |\n| Chainlit UI | 8080/chainlit | User interface for interacting with the RAG system |\n| Ray Dashboard | 8265 | Ray dashboard for monitoring and managing tasks |\n| Indexer UI | 3043 | Main user interface for indexing and viewing indexed documents |\n\nMore information about the different services can be found in their respective documentation pages.","src/content/docs/getting_started/usage.mdx","a9e6b5eb5c8789fb","installation/ansible_setup",{"id":295,"data":297,"body":302,"filePath":303,"digest":304,"deferredRender":22},{"title":298,"editUrl":22,"head":299,"template":50,"sidebar":300,"pagefind":22,"draft":14},"Ansible",[],{"hidden":14,"attrs":301},{},"The Ansible playbooks and scripts provided help automatically set up the OpenRAG environment on one or more servers.\n\nThese scripts are designed for installation on fresh production machines.\n\n### Prerequisites\n\nEnsure the hardware hosting OpenRAG meets the [recommended specifications](/minimum-specifications).\n\n- Ansible installed on your control machine (automatically installed by `deploy.sh` if missing)\n- SSH access to target servers (if deploying remotely)\n- Ubuntu 20.04+ or similar Linux distribution on target servers\n- For remote deployment: `inventory.ini.example` file from the OpenRAG repository\n\n### Local Deployment (Easiest)\n\n```bash\ncd ansible/\n./deploy.sh\n# Choose option 1: \"Deploy to local machine\"\n# Select CPU-only or GPU-enabled deployment when prompted\n```\n\nThe local deployment will:\n- Prompt you to choose between CPU-only or GPU-enabled deployment\n- Handle all necessary configurations and installs automatically\n- Start all services\n\n### Remote Deployment\n\n1. **Create the inventory file (on the control machine):**\n ```bash\n # Rename the example inventory file\n cp inventory.ini.example inventory.ini\n \n # Edit the inventory file\n nano inventory.ini\n ```\n\n2. **Configure your servers:**\n ```ini\n [gpu_servers]\n gpu-server1 ansible_host=192.168.1.100 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa\n gpu-server2 ansible_host=192.168.1.101 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa\n\n [cpu_servers]\n cpu-server1 ansible_host=192.168.1.102 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa\n\n [all:vars]\n ansible_python_interpreter=/usr/bin/python3\n ```\n\n3. **Run the deployment:**\n ```bash\n ./deploy.sh\n # Choose option 2: \"Deploy remotely\"\n ```\n\n## Files Overview\n\n### Playbooks\n\n- **`playbook.yml`** - Main deployment playbook with separate GPU-enabled and CPU-only server configurations\n\n### Inventory Files\n\n- **`inventory.ini.example`** - Example inventory template for remote deployment\n- **`inventory.ini`** - Generated automatically for local deployment or manually created for remote deployment\n\n### Configuration\n\n- **`ansible.cfg`** - Ansible configuration settings\n\n### Scripts\n\n- **`deploy.sh`** - Interactive deployment and management\n\n## Manual Deployment\n\nIf you prefer to run Ansible commands directly:\n\n### Local/Remote Deployment\n```bash\n# Create inventory first\nansible-playbook -i inventory.ini playbook.yml --ask-become-pass\n```\n\n### Check Status\n```bash\nansible all -i inventory.ini -m shell -a \"docker ps\" --become\n```\n\n## Service Management\n\nThe deployment script provides several management options:\n\n### Interactive Mode\n```bash\n./deploy.sh\n```\n\n### Command Line Mode\n```bash\n# Deploy locally\n./deploy.sh deploy-local\n\n# Deploy remotely \n./deploy.sh deploy-remote\n\n# Check status\n./deploy.sh status\n\n# Stop services\n./deploy.sh stop\n\n# Start services\n./deploy.sh start\n\n# View logs\n./deploy.sh logs [service_name]\n\n# Update deployment\n./deploy.sh update\n\n# Complete removal\n./deploy.sh remove-all\n```\n\n## What Gets Installed\n\n### System Packages\n- Docker CE with Compose plugin\n- NVIDIA drivers (if GPU detected and GPU server group is used)\n- NVIDIA Container Toolkit (for GPU servers)\n- Python 3 with pip and uv package manager\n- Essential development tools\n\n### OpenRAG Components\n- Complete OpenRAG codebase from GitHub\n- All required Python dependencies installed via `uv`\n- Docker containers for OpenRAG services with appropriate profiles:\n - GPU servers: Default profile (includes GPU-accelerated services)\n - CPU servers: CPU profile (CPU-only services)\n\n### Directory Structure\n```\n/home/[user]/openrag/\n├── data/ # Document storage\n├── db/ # Database files\n├── logs/ # Application logs\n├── .hydra_config/ # Hydra configuration cache\n├── model_weights/ # Cached model files\n├── vdb/volumes/ # Vector database volumes\n├── .env # Environment configuration\n└── ... # OpenRAG source code\n```\n\n## Configuration\n\n### Environment Variables\n\nThe deployment automatically creates a `.env` file from `.env.example` or copies a local `.env` file if present. Key variables to customize:\n\n```bash\n# LLM Configuration\nBASE_URL=http://your-llm-endpoint\nAPI_KEY=your-api-key\nMODEL=your-model-name\n\n# Application Settings\nAPP_PORT=8080\nRETRIEVER_TOP_K=20\n\n# Embedder Settings\nEMBEDDER_MODEL_NAME=Qwen/Qwen3-Embedding-0.6B\n```\n\n### Version Configuration\n\nThe playbook uses these default versions (configurable via inventory variables):\n\n```yaml\n# Docker and NVIDIA versions\ndocker_compose_version: \"2.21.0\"\nnvidia_driver_version: \"535\"\ndocker_ce_version: \"latest\"\nnvidia_container_toolkit_version: \"1.17.8-1\"\n```\n\n### Inventory Variables\n\nYou can set variables in your inventory file:\n\n```ini\n[gpu_servers:vars]\nnvidia_driver_version=535\nproject_user=ubuntu\nproject_path=/home/ubuntu/openrag\n\n[cpu_servers:vars]\nproject_user=ubuntu\nproject_path=/home/ubuntu/openrag\n\n[all:vars]\nansible_python_interpreter=/usr/bin/python3\n```\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Docker permission denied**\n ```bash\n # Re-login to apply docker group membership\n sudo su - $USER\n ```\n\n2. **NVIDIA driver installation fails**\n ```bash\n # Check GPU compatibility\n lspci | grep -i nvidia\n ```\n\n3. **Services not starting**\n ```bash\n # Check logs\n docker compose logs\n ```\n\n### Manual Recovery\n\nIf something goes wrong, you can manually clean up:\n\n```bash\n# Stop all containers\ndocker compose down\n\n# Remove containers and images\ndocker system prune -a\n\n# Re-run deployment\n./deploy.sh\n```\n\n### Complete System Reset\n\nFor a complete removal of all components (Docker, NVIDIA drivers, OpenRAG):\n\n```bash\n# Use the deployment script's removal option\n./deploy.sh remove-all\n```\n\n**Warning**: This will remove Docker, NVIDIA drivers, and all related components. Use with caution!\n\nFor OpenRAG application issues, refer to the [main project documentation](/documentation/api_documentation).","src/content/docs/installation/ansible_setup.mdx","64f2a20df5132959","installation/docker",{"id":305,"data":307,"body":312,"filePath":313,"digest":314,"deferredRender":22},{"title":308,"editUrl":22,"head":309,"template":50,"sidebar":310,"pagefind":22,"draft":14},"Docker",[],{"hidden":14,"attrs":311},{},"OpenRAG is most comprehensively deployed using Docker.\n\n- Before proceeding, ensure your hardware meets the [recommended specifications](/minimum-specifications).\n- Install [Docker](https://www.docker.com/get-started).\n\nThe OpenRAG docker image is available on [DockerHub](https://hub.docker.com/r/rcordier/openrag) and the [GitHub Container Registry](https://github.com/linagora/openrag/pkgs/container/openrag).\n\n## Docker Compose\n\nOpenRAG requires several services to run, which can be orchestrated using Docker Compose.","src/content/docs/installation/docker.mdx","7ea95b6e50954f61","documentation/deploy_ray_cluster",{"id":315,"data":317,"body":322,"filePath":323,"digest":324,"rendered":325},{"title":318,"editUrl":22,"head":319,"template":50,"sidebar":320,"pagefind":22,"draft":14},"Ray Cluster",[],{"hidden":14,"attrs":321},{},"# ⚡ Distributed Deployment in a Ray Cluster\n\nThis guide explains how to deploy **OpenRAG** across multiple machines using **Ray** for distributed indexing and processing.\n\n---\n\n## ✅ 1. Set Environment Variables\n\nEnsure your `.env` file includes the standard app variables **plus Ray-specific ones** listed below:\n\n```bash \n// .env\n# Ray\n# Resources for all files\nRAY_NUM_GPUS=0.1\nRAY_POOL_SIZE=1\nRAY_MAX_TASKS_PER_WORKER=5\n\n# PDF specific resources when using marker\nMARKER_MAX_TASKS_PER_CHILD=10\nMARKER_MAX_PROCESSES=5 # Number of subprocesses \u003C-> Number of concurrent pdfs per worker\nMARKER_MIN_PROCESSES=3 # Minimum number of subprocesses available before triggering a process pool reset.\nMARKER_POOL_SIZE=1 # Number of workers (typically 1 worker per cluster node)\nMARKER_NUM_GPUS=0.6\n\nSHARED_ENV=/ray_mount/.env\nRAY_DASHBOARD_PORT=8265\nRAY_ADDRESS=ray://X.X.X.X:10001\nHEAD_NODE_IP=X.X.X.X\nRAY_HEAD_ADDRESS=X.X.X.X:6379\n# RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # to enable logs at task level in ray dashboard\nRAY_task_retry_delay_ms=3000\n\n# Ray volumes\nDATA_VOLUME=/ray_mount/data\nMODEL_WEIGHTS_VOLUME=/ray_mount/model_weights\nCONFIG_VOLUME=/ray_mount/.hydra_config\nUV_LINK_MODE=copy\nUV_CACHE_DIR=/tmp/uv-cache \n```\n\n✅ Use host IPs instead of Docker service names :\n\n```diff lang=\"bash\"\n// .env\n- EMBEDDER_BASE_URL=http://vllm:8000/v1\n+ EMBEDDER_BASE_URL=http://\u003CHOST-IP>:8000/v1 # ✅ instead of http://vllm:8000/v1\n\n- VDB_HOST=milvus\n+ VDB_HOST=\u003CHOST-IP> # ✅ instead of VDB_HOST=milvus\n```\n\n:::tip[🧠 **Tips**]\n- `RAY_NUM_GPUS` defines **per-actor resource requirements**. Ray will not start a task until these resources are available on one of the nodes. \nFor example, if one indexation consumes ~1GB of VRAM and your GPU has 4GB, setting `RAY_NUM_GPUS=0.25` allows you to run **4 indexers per node**. In a 2-node cluster, that means up to **8 concurrent indexation tasks**. \n\n- `RAY_POOL_SIZE` defines the number of worker actors that will be created to handle indexation tasks. It acts like a **maximum concurrency limit**. \nUsing the previous example, you can set `POOL_SIZE=8` to fully utilize your cluster capacity.\n:::\n\n:::caution\nIf other GPU-intensive services are running on your nodes (e.g. vLLM, the RAG API), make sure to **reserve enough GPU memory** for them and subtract that from your total when calculating the safe pool size.\n:::\n\n---\n\n## 📁 2. Set Up Shared Storage\n\nAll nodes need to access shared configuration and data folders. \nWe recommend using **GlusterFS** for this.\n\n➡ Follow the [GlusterFS Setup Guide](/documentation/setup_glusterfs/) to configure:\n\n- Shared access to:\n - `.env`\n - `.hydra_config`\n - `/data` (uploaded files)\n - `/model_weights` (embedding model cache)\n\n---\n\n## 🚀 3. Start the Ray Cluster\n\nFirst, prepare your `cluster.yaml` file. Here's an example for a **local provider**:\n\n```yaml\n// cluster.yaml\ncluster_name: rag-cluster\nprovider:\n type: local\n head_ip: 10.0.0.1\n worker_ips: [10.0.0.2] # Static IPs of other nodes (does not auto-start workers)\n\ndocker:\n image: ghcr.io/linagora/openrag-ray\n pull_before_run: true\n container_name: ray_node\n run_options:\n - --gpus all\n - -v /ray_mount/model_weights:/app/model_weights\n - -v /ray_mount/data:/app/data\n - -v /ray_mount/.hydra_config:/app/.hydra_config\n - -v /ray_mount/logs:/app/logs\n - --env-file /ray_mount/.env\n\nauth:\n ssh_user: ubuntu\n ssh_private_key: path/to/private/key # Replace with your actual ssh key path\n\nhead_start_ray_commands:\n - uv run ray stop\n - uv run ray start --head --dashboard-host 0.0.0.0 --dashboard-port ${RAY_DASHBOARD_PORT:-8265} --node-ip-address ${HEAD_NODE_IP} --autoscaling-config=~/ray_bootstrap_config.yaml\nworker_start_ray_commands:\n - uv run ray stop\n - uv run ray start --address ${HEAD_NODE_IP:-10.0.0.1}:6379\n```\n\n> 🛠️ The base image (`ghcr.io/linagora/openrag-ray`) must be built from `Dockerfile.ray` and pushed to a container registry before use.\n\n### ⬆️ Launch the cluster\n\n```bash\nuv run ray up -y cluster.yaml\n```\n\n## 🐳 4. Launch the OpenRAG App\n\nUse the Docker Compose setup:\n\n```bash\ndocker compose up -d\n```\n\nOnce running, **OpenRAG will auto-connect** to the Ray cluster using `RAY_ADDRESS` from `.env`.\n\n---\n\nWith this setup, your app is now fully distributed and ready to handle concurrent tasks across your Ray cluster.\n\n\n## 🛠️ Troubleshooting\n\n### ❌ Permission Denied Errors\n\nIf you encounter errors like `Permission denied` when Ray or Docker tries to access shared folders (SQL database, model files, ...), it's likely due to insufficient permissions on the host system.\n\n👉 To resolve this, you can set full read/write/execute permissions on the shared directory:\n\n```bash\nsudo chmod -R 777 /ray_mount\n```","src/content/docs/documentation/deploy_ray_cluster.md","941894a362fee25d",{"html":326,"metadata":327},"\u003Cdiv class=\"sl-heading-wrapper level-h1\">\u003Ch1 id=\"-distributed-deployment-in-a-ray-cluster\">⚡ Distributed Deployment in a Ray Cluster\u003C/h1>\u003Ca class=\"sl-anchor-link\" href=\"#-distributed-deployment-in-a-ray-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “⚡ Distributed Deployment in a Ray Cluster”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>This guide explains how to deploy \u003Cstrong>OpenRAG\u003C/strong> across multiple machines using \u003Cstrong>Ray\u003C/strong> for distributed indexing and processing.\u003C/p>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-1-set-environment-variables\">✅ 1. Set Environment Variables\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-1-set-environment-variables\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “✅ 1. Set Environment Variables”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Ensure your \u003Ccode dir=\"auto\">.env\u003C/code> file includes the standard app variables \u003Cstrong>plus Ray-specific ones\u003C/strong> listed below:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Ray\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Resources for all files\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_NUM_GPUS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">0.1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_POOL_SIZE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_MAX_TASKS_PER_WORKER\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">5\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># PDF specific resources when using marker\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_MAX_TASKS_PER_CHILD\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">10\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_MAX_PROCESSES\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">5\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Number of subprocesses <-> Number of concurrent pdfs per worker\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_MIN_PROCESSES\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">3\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Minimum number of subprocesses available before triggering a process pool reset.\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_POOL_SIZE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">1\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Number of workers (typically 1 worker per cluster node)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_NUM_GPUS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">0.6\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">SHARED_ENV\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/.env\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_DASHBOARD_PORT\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">8265\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_ADDRESS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ray://X.X.X.X:10001\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">HEAD_NODE_IP\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">X.X.X.X\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_HEAD_ADDRESS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">X.X.X.X:6379\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # to enable logs at task level in ray dashboard\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_task_retry_delay_ms\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">3000\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Ray volumes\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">DATA_VOLUME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/data\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MODEL_WEIGHTS_VOLUME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/model_weights\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CONFIG_VOLUME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/.hydra_config\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">UV_LINK_MODE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">copy\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">UV_CACHE_DIR\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/tmp/uv-cache\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"# Ray# Resources for all filesRAY_NUM_GPUS=0.1RAY_POOL_SIZE=1RAY_MAX_TASKS_PER_WORKER=5# PDF specific resources when using markerMARKER_MAX_TASKS_PER_CHILD=10MARKER_MAX_PROCESSES=5 # Number of subprocesses \u003C-> Number of concurrent pdfs per workerMARKER_MIN_PROCESSES=3 # Minimum number of subprocesses available before triggering a process pool reset.MARKER_POOL_SIZE=1 # Number of workers (typically 1 worker per cluster node)MARKER_NUM_GPUS=0.6SHARED_ENV=/ray_mount/.envRAY_DASHBOARD_PORT=8265RAY_ADDRESS=ray://X.X.X.X:10001HEAD_NODE_IP=X.X.X.XRAY_HEAD_ADDRESS=X.X.X.X:6379# RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # to enable logs at task level in ray dashboardRAY_task_retry_delay_ms=3000# Ray volumesDATA_VOLUME=/ray_mount/dataMODEL_WEIGHTS_VOLUME=/ray_mount/model_weightsCONFIG_VOLUME=/ray_mount/.hydra_configUV_LINK_MODE=copyUV_CACHE_DIR=/tmp/uv-cache\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>✅ Use host IPs instead of Docker service names :\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line highlight del\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2c4984\">EMBEDDER_BASE_URL\u003C/span>\u003Cspan style=\"--0:#d0a3ed;--1:#663383\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2c4984\">http://vllm:8000/v1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line highlight ins\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2d4a87\">EMBEDDER_BASE_URL\u003C/span>\u003Cspan style=\"--0:#d2a6ee;--1:#6a3588\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2d4a87\">http://<HOST-IP>:8000/v1\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#aeb8b8;--1:#494c55\"># ✅ instead of http://vllm:8000/v1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line highlight del\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2c4984\">VDB_HOST\u003C/span>\u003Cspan style=\"--0:#d0a3ed;--1:#663383\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2c4984\">milvus\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line highlight ins\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2d4a87\">VDB_HOST\u003C/span>\u003Cspan style=\"--0:#d2a6ee;--1:#6a3588\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2d4a87\"><HOST-IP>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#aeb8b8;--1:#494c55\"># ✅ instead of VDB_HOST=milvus\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\" EMBEDDER_BASE_URL=http://vllm:8000/v1 EMBEDDER_BASE_URL=http://\u003CHOST-IP>:8000/v1 # ✅ instead of http://vllm:8000/v1 VDB_HOST=milvus VDB_HOST=\u003CHOST-IP> # ✅ instead of VDB_HOST=milvus\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Caside aria-label=\"🧠 Tips\" class=\"starlight-aside starlight-aside--tip\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.43909 8.85483L1.44039 8.85354L4.96668 5.33815C5.30653 4.99386 5.7685 4.79662 6.2524 4.78972L6.26553 4.78963L12.9014 4.78962L13.8479 3.84308C16.9187 0.772319 20.0546 0.770617 21.4678 0.975145C21.8617 1.02914 22.2271 1.21053 22.5083 1.4917C22.7894 1.77284 22.9708 2.13821 23.0248 2.53199C23.2294 3.94517 23.2278 7.08119 20.1569 10.1521L19.2107 11.0983V17.7338L19.2106 17.7469C19.2037 18.2308 19.0067 18.6933 18.6624 19.0331L15.1456 22.5608C14.9095 22.7966 14.6137 22.964 14.29 23.0449C13.9663 23.1259 13.6267 23.1174 13.3074 23.0204C12.9881 22.9235 12.7011 22.7417 12.4771 22.4944C12.2533 22.2473 12.1006 21.9441 12.0355 21.6171L11.1783 17.3417L6.65869 12.822L4.34847 12.3589L2.38351 11.965C2.05664 11.8998 1.75272 11.747 1.50564 11.5232C1.25835 11.2992 1.07653 11.0122 0.979561 10.6929C0.882595 10.3736 0.874125 10.034 0.955057 9.7103C1.03599 9.38659 1.20328 9.09092 1.43909 8.85483ZM6.8186 10.8724L2.94619 10.096L6.32006 6.73268H10.9583L6.8186 10.8724ZM15.2219 5.21703C17.681 2.75787 20.0783 2.75376 21.1124 2.8876C21.2462 3.92172 21.2421 6.31895 18.783 8.77812L12.0728 15.4883L8.51172 11.9272L15.2219 5.21703ZM13.9042 21.0538L13.1279 17.1811L17.2676 13.0414V17.68L13.9042 21.0538Z\">\u003C/path>\u003Cpath d=\"M9.31827 18.3446C9.45046 17.8529 9.17864 17.3369 8.68945 17.1724C8.56178 17.1294 8.43145 17.1145 8.30512 17.1243C8.10513 17.1398 7.91519 17.2172 7.76181 17.3434C7.62613 17.455 7.51905 17.6048 7.45893 17.7835C6.97634 19.2186 5.77062 19.9878 4.52406 20.4029C4.08525 20.549 3.6605 20.644 3.29471 20.7053C3.35607 20.3395 3.45098 19.9148 3.59711 19.476C4.01221 18.2294 4.78141 17.0237 6.21648 16.5411C6.39528 16.481 6.54504 16.3739 6.65665 16.2382C6.85126 16.0016 6.92988 15.678 6.84417 15.3647C6.83922 15.3466 6.83373 15.3286 6.82767 15.3106C6.74106 15.053 6.55701 14.8557 6.33037 14.7459C6.10949 14.6389 5.84816 14.615 5.59715 14.6994C5.47743 14.7397 5.36103 14.7831 5.24786 14.8294C3.22626 15.6569 2.2347 17.4173 1.75357 18.8621C1.49662 19.6337 1.36993 20.3554 1.30679 20.8818C1.27505 21.1464 1.25893 21.3654 1.25072 21.5213C1.24662 21.5993 1.24448 21.6618 1.24337 21.7066L1.243 21.7226L1.24235 21.7605L1.2422 21.7771L1.24217 21.7827L1.24217 21.7856C1.24217 22.3221 1.67703 22.7579 2.2137 22.7579L2.2155 22.7579L2.22337 22.7578L2.23956 22.7577C2.25293 22.7575 2.27096 22.7572 2.29338 22.7567C2.33821 22.7555 2.40073 22.7534 2.47876 22.7493C2.63466 22.7411 2.85361 22.725 3.11822 22.6932C3.64462 22.6301 4.36636 22.5034 5.13797 22.2464C6.58274 21.7653 8.3431 20.7738 9.17063 18.7522C9.21696 18.639 9.26037 18.5226 9.30064 18.4029C9.30716 18.3835 9.31304 18.364 9.31827 18.3446Z\">\u003C/path>\u003C/svg>🧠 \u003Cstrong>Tips\u003C/strong>\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cul>\n\u003Cli>\n\u003Cp>\u003Ccode dir=\"auto\">RAY_NUM_GPUS\u003C/code> defines \u003Cstrong>per-actor resource requirements\u003C/strong>. Ray will not start a task until these resources are available on one of the nodes.\u003Cbr>\nFor example, if one indexation consumes ~1GB of VRAM and your GPU has 4GB, setting \u003Ccode dir=\"auto\">RAY_NUM_GPUS=0.25\u003C/code> allows you to run \u003Cstrong>4 indexers per node\u003C/strong>. In a 2-node cluster, that means up to \u003Cstrong>8 concurrent indexation tasks\u003C/strong>.\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Ccode dir=\"auto\">RAY_POOL_SIZE\u003C/code> defines the number of worker actors that will be created to handle indexation tasks. It acts like a \u003Cstrong>maximum concurrency limit\u003C/strong>.\u003Cbr>\nUsing the previous example, you can set \u003Ccode dir=\"auto\">POOL_SIZE=8\u003C/code> to fully utilize your cluster capacity.\u003C/p>\n\u003C/li>\n\u003C/ul>\u003C/div>\u003C/aside>\n\u003Caside aria-label=\"Caution\" class=\"starlight-aside starlight-aside--caution\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 16C11.8022 16 11.6089 16.0587 11.4444 16.1686C11.28 16.2784 11.1518 16.4346 11.0761 16.6173C11.0004 16.8001 10.9806 17.0011 11.0192 17.1951C11.0578 17.3891 11.153 17.5673 11.2929 17.7071C11.4327 17.847 11.6109 17.9422 11.8049 17.9808C11.9989 18.0194 12.2 17.9996 12.3827 17.9239C12.5654 17.8482 12.7216 17.72 12.8315 17.5556C12.9413 17.3911 13 17.1978 13 17C13 16.7348 12.8946 16.4805 12.7071 16.2929C12.5196 16.1054 12.2652 16 12 16ZM22.67 17.47L14.62 3.47003C14.3598 3.00354 13.9798 2.61498 13.5192 2.3445C13.0586 2.07401 12.5341 1.9314 12 1.9314C11.4659 1.9314 10.9414 2.07401 10.4808 2.3445C10.0202 2.61498 9.64019 3.00354 9.38 3.47003L1.38 17.47C1.11079 17.924 0.966141 18.441 0.960643 18.9688C0.955144 19.4966 1.089 20.0166 1.34868 20.4761C1.60837 20.9356 1.9847 21.3185 2.43968 21.5861C2.89466 21.8536 3.41218 21.9964 3.94 22H20.06C20.5921 22.0053 21.1159 21.8689 21.5779 21.6049C22.0399 21.341 22.4234 20.9589 22.689 20.4978C22.9546 20.0368 23.0928 19.5134 23.0895 18.9814C23.0862 18.4493 22.9414 17.9277 22.67 17.47ZM20.94 19.47C20.8523 19.626 20.7245 19.7556 20.5697 19.8453C20.4149 19.935 20.2389 19.9815 20.06 19.98H3.94C3.76111 19.9815 3.5851 19.935 3.43032 19.8453C3.27553 19.7556 3.14765 19.626 3.06 19.47C2.97223 19.318 2.92602 19.1456 2.92602 18.97C2.92602 18.7945 2.97223 18.622 3.06 18.47L11.06 4.47003C11.1439 4.30623 11.2714 4.16876 11.4284 4.07277C11.5855 3.97678 11.766 3.92599 11.95 3.92599C12.134 3.92599 12.3145 3.97678 12.4716 4.07277C12.6286 4.16876 12.7561 4.30623 12.84 4.47003L20.89 18.47C20.9892 18.6199 21.0462 18.7937 21.055 18.9732C21.0638 19.1527 21.0241 19.3312 20.94 19.49V19.47ZM12 8.00003C11.7348 8.00003 11.4804 8.10538 11.2929 8.29292C11.1054 8.48046 11 8.73481 11 9.00003V13C11 13.2652 11.1054 13.5196 11.2929 13.7071C11.4804 13.8947 11.7348 14 12 14C12.2652 14 12.5196 13.8947 12.7071 13.7071C12.8946 13.5196 13 13.2652 13 13V9.00003C13 8.73481 12.8946 8.48046 12.7071 8.29292C12.5196 8.10538 12.2652 8.00003 12 8.00003Z\">\u003C/path>\u003C/svg>Caution\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>If other GPU-intensive services are running on your nodes (e.g. vLLM, the RAG API), make sure to \u003Cstrong>reserve enough GPU memory\u003C/strong> for them and subtract that from your total when calculating the safe pool size.\u003C/p>\u003C/div>\u003C/aside>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-2-set-up-shared-storage\">📁 2. Set Up Shared Storage\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-2-set-up-shared-storage\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📁 2. Set Up Shared Storage”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>All nodes need to access shared configuration and data folders.\u003Cbr>\nWe recommend using \u003Cstrong>GlusterFS\u003C/strong> for this.\u003C/p>\n\u003Cp>➡ Follow the \u003Ca href=\"/documentation/setup_glusterfs/\">GlusterFS Setup Guide\u003C/a> to configure:\u003C/p>\n\u003Cul>\n\u003Cli>Shared access to:\n\u003Cul>\n\u003Cli>\u003Ccode dir=\"auto\">.env\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">.hydra_config\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">/data\u003C/code> (uploaded files)\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">/model_weights\u003C/code> (embedding model cache)\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-3-start-the-ray-cluster\">🚀 3. Start the Ray Cluster\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-3-start-the-ray-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🚀 3. Start the Ray Cluster”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>First, prepare your \u003Ccode dir=\"auto\">cluster.yaml\u003C/code> file. Here’s an example for a \u003Cstrong>local provider\u003C/strong>:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">cluster.yaml\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"yaml\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">cluster_name\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">rag-cluster\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">provider\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">type\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">local\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">head_ip\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">worker_ips\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: [\u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.2\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">] \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Static IPs of other nodes (does not auto-start workers)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">docker\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">image\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ghcr.io/linagora/openrag-ray\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">pull_before_run\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#FF6A83;--1:#A24848\">true\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">container_name\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ray_node\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">run_options\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">--gpus all\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/model_weights:/app/model_weights\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/data:/app/data\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/.hydra_config:/app/.hydra_config\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/logs:/app/logs\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">--env-file /ray_mount/.env\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">auth\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">ssh_user\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ubuntu\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">ssh_private_key\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">path/to/private/key\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Replace with your actual ssh key path\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">head_start_ray_commands\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray stop\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray start --head --dashboard-host 0.0.0.0 --dashboard-port ${RAY_DASHBOARD_PORT:-8265} --node-ip-address ${HEAD_NODE_IP} --autoscaling-config=~/ray_bootstrap_config.yaml\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">worker_start_ray_commands\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray stop\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray start --address ${HEAD_NODE_IP:-10.0.0.1}:6379\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"cluster_name: rag-clusterprovider: type: local head_ip: 10.0.0.1 worker_ips: [10.0.0.2] # Static IPs of other nodes (does not auto-start workers)docker: image: ghcr.io/linagora/openrag-ray pull_before_run: true container_name: ray_node run_options: - --gpus all - -v /ray_mount/model_weights:/app/model_weights - -v /ray_mount/data:/app/data - -v /ray_mount/.hydra_config:/app/.hydra_config - -v /ray_mount/logs:/app/logs - --env-file /ray_mount/.envauth: ssh_user: ubuntu ssh_private_key: path/to/private/key # Replace with your actual ssh key pathhead_start_ray_commands: - uv run ray stop - uv run ray start --head --dashboard-host 0.0.0.0 --dashboard-port ${RAY_DASHBOARD_PORT:-8265} --node-ip-address ${HEAD_NODE_IP} --autoscaling-config=~/ray_bootstrap_config.yamlworker_start_ray_commands: - uv run ray stop - uv run ray start --address ${HEAD_NODE_IP:-10.0.0.1}:6379\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cblockquote>\n\u003Cp>🛠️ The base image (\u003Ccode dir=\"auto\">ghcr.io/linagora/openrag-ray\u003C/code>) must be built from \u003Ccode dir=\"auto\">Dockerfile.ray\u003C/code> and pushed to a container registry before use.\u003C/p>\n\u003C/blockquote>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"️-launch-the-cluster\">⬆️ Launch the cluster\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#️-launch-the-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “⬆️ Launch the cluster”\u003C/span>\u003C/a>\u003C/div>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">uv\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">run\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ray\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">up\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">cluster.yaml\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"uv run ray up -y cluster.yaml\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-4-launch-the-openrag-app\">🐳 4. Launch the OpenRAG App\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-4-launch-the-openrag-app\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🐳 4. Launch the OpenRAG App”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Use the Docker Compose setup:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">docker\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">compose\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">up\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-d\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"docker compose up -d\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Once running, \u003Cstrong>OpenRAG will auto-connect\u003C/strong> to the Ray cluster using \u003Ccode dir=\"auto\">RAY_ADDRESS\u003C/code> from \u003Ccode dir=\"auto\">.env\u003C/code>.\u003C/p>\n\u003Chr>\n\u003Cp>With this setup, your app is now fully distributed and ready to handle concurrent tasks across your Ray cluster.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"️-troubleshooting\">🛠️ Troubleshooting\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#️-troubleshooting\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🛠️ Troubleshooting”\u003C/span>\u003C/a>\u003C/div>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-permission-denied-errors\">❌ Permission Denied Errors\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-permission-denied-errors\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “❌ Permission Denied Errors”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>If you encounter errors like \u003Ccode dir=\"auto\">Permission denied\u003C/code> when Ray or Docker tries to access shared folders (SQL database, model files, …), it’s likely due to insufficient permissions on the host system.\u003C/p>\n\u003Cp>👉 To resolve this, you can set full read/write/execute permissions on the shared directory:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">chmod\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-R\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">777\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo chmod -R 777 /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>",{"headings":328,"localImagePaths":353,"remoteImagePaths":354,"frontmatter":355,"imagePaths":356},[329,332,335,338,341,344,347,350],{"depth":181,"slug":330,"text":331},"-distributed-deployment-in-a-ray-cluster","⚡ Distributed Deployment in a Ray Cluster",{"depth":71,"slug":333,"text":334},"-1-set-environment-variables","✅ 1. Set Environment Variables",{"depth":71,"slug":336,"text":337},"-2-set-up-shared-storage","📁 2. Set Up Shared Storage",{"depth":71,"slug":339,"text":340},"-3-start-the-ray-cluster","🚀 3. Start the Ray Cluster",{"depth":117,"slug":342,"text":343},"️-launch-the-cluster","⬆️ Launch the cluster",{"depth":71,"slug":345,"text":346},"-4-launch-the-openrag-app","🐳 4. Launch the OpenRAG App",{"depth":71,"slug":348,"text":349},"️-troubleshooting","🛠️ Troubleshooting",{"depth":117,"slug":351,"text":352},"-permission-denied-errors","❌ Permission Denied Errors",[],[],{"title":318},[],"documentation/setup_chainlit_ui_auth",{"id":357,"data":359,"body":364,"filePath":365,"digest":366,"rendered":367},{"title":360,"editUrl":22,"head":361,"template":50,"sidebar":362,"pagefind":22,"draft":14},"Chainlit Authentification",[],{"hidden":14,"attrs":363},{},"To configure password-based authentication for your Chainlit UI, add the following environment variables to your `.env` file:\n## Step 1: Set up the authentication secret\n\nFirst, define a **`CHAINLIT_AUTH_SECRET`** environment variable. You can generate one automatically using the command `chainlit create-secret` (or `uv run chainlit create-secret` if using uv). Alternatively, you can provide your own **custom value**.\n\nFor detailed information about this variable, see the [Chainlit authentication documentation](https://docs.chainlit.io/authentication/overview).\n\n## Step 2: Configure username and password\n\nFor password-based authentication (see [Chainlit password authentication docs](https://docs.chainlit.io/authentication/password)), add your desired username and password to the `.env` file:\n\n```bash\n// .env\nCHAINLIT_AUTH_SECRET=...\nCHAINLIT_USERNAME=OpenRAG\nCHAINLIT_PASSWORD=OpenRAG2025\n```\n\nThis configuration will enable secure access to your Chainlit application using the specified credentials.","src/content/docs/documentation/setup_chainlit_ui_auth.md","1462d16f7e5c096c",{"html":368,"metadata":369},"\u003Cp>To configure password-based authentication for your Chainlit UI, add the following environment variables to your \u003Ccode dir=\"auto\">.env\u003C/code> file:\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"step-1-set-up-the-authentication-secret\">Step 1: Set up the authentication secret\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#step-1-set-up-the-authentication-secret\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 1: Set up the authentication secret”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>First, define a \u003Cstrong>\u003Ccode dir=\"auto\">CHAINLIT_AUTH_SECRET\u003C/code>\u003C/strong> environment variable. You can generate one automatically using the command \u003Ccode dir=\"auto\">chainlit create-secret\u003C/code> (or \u003Ccode dir=\"auto\">uv run chainlit create-secret\u003C/code> if using uv). Alternatively, you can provide your own \u003Cstrong>custom value\u003C/strong>.\u003C/p>\n\u003Cp>For detailed information about this variable, see the \u003Ca href=\"https://docs.chainlit.io/authentication/overview\">Chainlit authentication documentation\u003C/a>.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"step-2-configure-username-and-password\">Step 2: Configure username and password\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#step-2-configure-username-and-password\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 2: Configure username and password”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>For password-based authentication (see \u003Ca href=\"https://docs.chainlit.io/authentication/password\">Chainlit password authentication docs\u003C/a>), add your desired username and password to the \u003Ccode dir=\"auto\">.env\u003C/code> file:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_AUTH_SECRET\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">...\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_USERNAME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">OpenRAG\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_PASSWORD\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">OpenRAG2025\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"CHAINLIT_AUTH_SECRET=...CHAINLIT_USERNAME=OpenRAGCHAINLIT_PASSWORD=OpenRAG2025\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>This configuration will enable secure access to your Chainlit application using the specified credentials.\u003C/p>",{"headings":370,"localImagePaths":377,"remoteImagePaths":378,"frontmatter":379,"imagePaths":380},[371,374],{"depth":71,"slug":372,"text":373},"step-1-set-up-the-authentication-secret","Step 1: Set up the authentication secret",{"depth":71,"slug":375,"text":376},"step-2-configure-username-and-password","Step 2: Configure username and password",[],[],{"title":360},[]] \ No newline at end of file diff --git a/.astro/settings.json b/.astro/settings.json new file mode 100644 index 000000000..f8398da4a --- /dev/null +++ b/.astro/settings.json @@ -0,0 +1,5 @@ +{ + "_variables": { + "lastUpdateCheck": 1759148335699 + } +} \ No newline at end of file diff --git a/.astro/types.d.ts b/.astro/types.d.ts new file mode 100644 index 000000000..03d7cc43f --- /dev/null +++ b/.astro/types.d.ts @@ -0,0 +1,2 @@ +/// +/// \ No newline at end of file diff --git a/.github/workflows/astro.yml b/.github/workflows/astro.yml new file mode 100644 index 000000000..db30b3557 --- /dev/null +++ b/.github/workflows/astro.yml @@ -0,0 +1,93 @@ +# Sample workflow for building and deploying an Astro site to GitHub Pages +# +# To get started with Astro see: https://docs.astro.build/en/getting-started/ +# +name: Deploy Astro site to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +env: + BUILD_PATH: "." # default value when not using subfolders + # BUILD_PATH: subfolder + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Detect package manager + id: detect-package-manager + run: | + if [ -f "${{ github.workspace }}/yarn.lock" ]; then + echo "manager=yarn" >> $GITHUB_OUTPUT + echo "command=install" >> $GITHUB_OUTPUT + echo "runner=yarn" >> $GITHUB_OUTPUT + echo "lockfile=yarn.lock" >> $GITHUB_OUTPUT + exit 0 + elif [ -f "${{ github.workspace }}/package.json" ]; then + echo "manager=npm" >> $GITHUB_OUTPUT + echo "command=ci" >> $GITHUB_OUTPUT + echo "runner=npx --no-install" >> $GITHUB_OUTPUT + echo "lockfile=package-lock.json" >> $GITHUB_OUTPUT + exit 0 + else + echo "Unable to determine package manager" + exit 1 + fi + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: ${{ steps.detect-package-manager.outputs.manager }} + cache-dependency-path: ${{ env.BUILD_PATH }}/${{ steps.detect-package-manager.outputs.lockfile }} + - name: Setup Pages + id: pages + uses: actions/configure-pages@v5 + - name: Install dependencies + run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} + working-directory: ${{ env.BUILD_PATH }} + - name: Build with Astro + run: | + ${{ steps.detect-package-manager.outputs.runner }} astro build \ + --site "${{ steps.pages.outputs.origin }}" \ + --base "${{ steps.pages.outputs.base_path }}" + working-directory: ${{ env.BUILD_PATH }} + - name: Ignore underscore CSS + run: | + touch dist/.nojekyll + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ${{ env.BUILD_PATH }}/dist + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + needs: build + runs-on: ubuntu-latest + name: Deploy + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index ad803d074..9fc893f70 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Ignore environment files .env +node_modules # generate files and folders .files/ @@ -64,7 +65,6 @@ services/ services/* !services/.gitkeep # Keep the placeholder -*.json *.csv *.pkl diff --git a/README.md b/README.md index 0e140b304..07334c134 100644 --- a/README.md +++ b/README.md @@ -120,6 +120,13 @@ For more details, [see this file](docs/features_in_details.md) * **Enhanced Security**: Ensures data encryption both during transit and at rest. ## 🚀 Installation +For comprehensive documentation and troubleshooting guidance, visit our [documentation site](https://linagora.github.io/openrag/). + +To run the documentation site locally for development: +```bash +npm i # Install dependencies (it's like `uv init`) +npm run dev # Start the development server (like `uv run`) +``` ### Prerequisites - **Python 3.12** or higher recommended diff --git a/astro.config.mjs b/astro.config.mjs new file mode 100644 index 000000000..28822fbb0 --- /dev/null +++ b/astro.config.mjs @@ -0,0 +1,59 @@ +// @ts-check +import { defineConfig } from 'astro/config'; +import starlight from '@astrojs/starlight'; +import tailwindcss from '@tailwindcss/vite'; + +// https://astro.build/config +export default defineConfig({ + integrations: [ + starlight({ + title: 'Docs', + customCss:[ + './src/styles/global.css', + './src/styles/custom.css', + '@fontsource-variable/space-grotesk', + ], + logo: { + src: './src/assets/OpenRAG-title.svg', + }, + editLink:{ + baseUrl: 'https://github.com/linagora/openrag/edit/main', + }, + tableOfContents:{ + minHeadingLevel:2, + maxHeadingLevel:4, + }, + social: [{ icon: 'github', label: 'GitHub', href: 'https://github.com/linagora/openrag' }], + sidebar: [ + { + label: 'Home', + slug: 'index' + }, + { + label: 'Getting Started', + autogenerate: { directory: 'getting_started' } + }, + { + label: 'Installation', + autogenerate: { directory: 'installation' } + }, + { + label: 'Docs', + autogenerate: { directory: 'documentation' } + }, + { + label: 'Support and Contribute', + slug: 'support-and-contribute' + }, + { + label: 'License', + slug: 'license' + } + ], + }), + ], + + vite: { + plugins: [tailwindcss()], + }, +}); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..a3eb44d51 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7410 @@ +{ + "name": "openrag", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "openrag", + "version": "0.0.1", + "dependencies": { + "@astrojs/starlight": "^0.35.2", + "@astrojs/starlight-tailwind": "^4.0.1", + "@fontsource-variable/space-grotesk": "^5.2.10", + "@tailwindcss/vite": "^4.1.13", + "astro": "^5.6.1", + "sharp": "^0.34.2", + "tailwindcss": "^4.1.13" + } + }, + "node_modules/@astrojs/compiler": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.12.2.tgz", + "integrity": "sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw==", + "license": "MIT" + }, + "node_modules/@astrojs/internal-helpers": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.2.tgz", + "integrity": "sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g==", + "license": "MIT" + }, + "node_modules/@astrojs/markdown-remark": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.6.tgz", + "integrity": "sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.7.2", + "@astrojs/prism": "3.3.0", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-to-text": "^4.0.2", + "import-meta-resolve": "^4.1.0", + "js-yaml": "^4.1.0", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", + "remark-smartypants": "^3.0.2", + "shiki": "^3.2.1", + "smol-toml": "^1.3.4", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.1", + "vfile": "^6.0.3" + } + }, + "node_modules/@astrojs/mdx": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.4.tgz", + "integrity": "sha512-Ew3iP+6zuzzJWNEH5Qr1iknrue1heEfgmfuMpuwLaSwqlUiJQ0NDb2oxKosgWU1ROYmVf1H4KCmS6QdMWKyFjw==", + "license": "MIT", + "dependencies": { + "@astrojs/markdown-remark": "6.3.6", + "@mdx-js/mdx": "^3.1.0", + "acorn": "^8.14.1", + "es-module-lexer": "^1.6.0", + "estree-util-visit": "^2.0.0", + "hast-util-to-html": "^9.0.5", + "kleur": "^4.1.5", + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.1", + "remark-smartypants": "^3.0.2", + "source-map": "^0.7.4", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.3" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + }, + "peerDependencies": { + "astro": "^5.0.0" + } + }, + "node_modules/@astrojs/prism": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.3.0.tgz", + "integrity": "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==", + "license": "MIT", + "dependencies": { + "prismjs": "^1.30.0" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/@astrojs/sitemap": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.5.1.tgz", + "integrity": "sha512-uX5z52GLtQTgOe8r3jeGmFRYrFe52mdpLYJzqjvL1cdy5Kg3MLOZEvaZ/OCH0fSq0t7e50uJQ6oBMZG0ffszBg==", + "license": "MIT", + "dependencies": { + "sitemap": "^8.0.0", + "stream-replace-string": "^2.0.0", + "zod": "^3.24.4" + } + }, + "node_modules/@astrojs/starlight": { + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.35.2.tgz", + "integrity": "sha512-curGghoW4s5pCbW2tINsJPoxEYPan87ptCOv7GZ+S24N3J6AyaOu/OsjZDEMaIpo3ZlObM5DQn+w7iXl3drDhQ==", + "license": "MIT", + "dependencies": { + "@astrojs/markdown-remark": "^6.3.1", + "@astrojs/mdx": "^4.2.3", + "@astrojs/sitemap": "^3.3.0", + "@pagefind/default-ui": "^1.3.0", + "@types/hast": "^3.0.4", + "@types/js-yaml": "^4.0.9", + "@types/mdast": "^4.0.4", + "astro-expressive-code": "^0.41.1", + "bcp-47": "^2.1.0", + "hast-util-from-html": "^2.0.1", + "hast-util-select": "^6.0.2", + "hast-util-to-string": "^3.0.0", + "hastscript": "^9.0.0", + "i18next": "^23.11.5", + "js-yaml": "^4.1.0", + "klona": "^2.0.6", + "mdast-util-directive": "^3.0.0", + "mdast-util-to-markdown": "^2.1.0", + "mdast-util-to-string": "^4.0.0", + "pagefind": "^1.3.0", + "rehype": "^13.0.1", + "rehype-format": "^5.0.0", + "remark-directive": "^3.0.0", + "ultrahtml": "^1.6.0", + "unified": "^11.0.5", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.2" + }, + "peerDependencies": { + "astro": "^5.5.0" + } + }, + "node_modules/@astrojs/starlight-tailwind": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@astrojs/starlight-tailwind/-/starlight-tailwind-4.0.1.tgz", + "integrity": "sha512-AOOEWTGqJ7fG66U04xTmZQZ40oZnUYe4Qljpr+No88ozKywtsD1DiXOrGTeHCnZu0hRtMbRtBGB1fZsf0L62iw==", + "license": "MIT", + "peerDependencies": { + "@astrojs/starlight": ">=0.34.0", + "tailwindcss": "^4.0.0" + } + }, + "node_modules/@astrojs/telemetry": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", + "integrity": "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==", + "license": "MIT", + "dependencies": { + "ci-info": "^4.2.0", + "debug": "^4.4.0", + "dlv": "^1.1.3", + "dset": "^3.1.4", + "is-docker": "^3.0.0", + "is-wsl": "^3.1.0", + "which-pm-runs": "^1.1.0" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz", + "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz", + "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@capsizecss/unpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-2.4.0.tgz", + "integrity": "sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==", + "license": "MIT", + "dependencies": { + "blob-to-buffer": "^1.2.8", + "cross-fetch": "^3.0.4", + "fontkit": "^2.0.2" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.1.0.tgz", + "integrity": "sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz", + "integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", + "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", + "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", + "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", + "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", + "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", + "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", + "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", + "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", + "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", + "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", + "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", + "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", + "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", + "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", + "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", + "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", + "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", + "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", + "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", + "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", + "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", + "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", + "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", + "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", + "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", + "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@expressive-code/core": { + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.41.3.tgz", + "integrity": "sha512-9qzohqU7O0+JwMEEgQhnBPOw5DtsQRBXhW++5fvEywsuX44vCGGof1SL5OvPElvNgaWZ4pFZAFSlkNOkGyLwSQ==", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^4.0.4", + "hast-util-select": "^6.0.2", + "hast-util-to-html": "^9.0.1", + "hast-util-to-text": "^4.0.1", + "hastscript": "^9.0.0", + "postcss": "^8.4.38", + "postcss-nested": "^6.0.1", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.1" + } + }, + "node_modules/@expressive-code/plugin-frames": { + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.41.3.tgz", + "integrity": "sha512-rFQtmf/3N2CK3Cq/uERweMTYZnBu+CwxBdHuOftEmfA9iBE7gTVvwpbh82P9ZxkPLvc40UMhYt7uNuAZexycRQ==", + "license": "MIT", + "dependencies": { + "@expressive-code/core": "^0.41.3" + } + }, + "node_modules/@expressive-code/plugin-shiki": { + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.41.3.tgz", + "integrity": "sha512-RlTARoopzhFJIOVHLGvuXJ8DCEme/hjV+ZnRJBIxzxsKVpGPW4Oshqg9xGhWTYdHstTsxO663s0cdBLzZj9TQA==", + "license": "MIT", + "dependencies": { + "@expressive-code/core": "^0.41.3", + "shiki": "^3.2.2" + } + }, + "node_modules/@expressive-code/plugin-text-markers": { + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.41.3.tgz", + "integrity": "sha512-SN8tkIzDpA0HLAscEYD2IVrfLiid6qEdE9QLlGVSxO1KEw7qYvjpbNBQjUjMr5/jvTJ7ys6zysU2vLPHE0sb2g==", + "license": "MIT", + "dependencies": { + "@expressive-code/core": "^0.41.3" + } + }, + "node_modules/@fontsource-variable/space-grotesk": { + "version": "5.2.10", + "resolved": "https://registry.npmjs.org/@fontsource-variable/space-grotesk/-/space-grotesk-5.2.10.tgz", + "integrity": "sha512-yJQO/o35/hAP3CFnpdFTwQku2yzJOae2HIpBmqkOVoxhhXJaQP3g+b6Jrz7u+eI7A5ZdCIf88uMWpBJdFiGr5w==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.3.tgz", + "integrity": "sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.0" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.3.tgz", + "integrity": "sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.0" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.0.tgz", + "integrity": "sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.0.tgz", + "integrity": "sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.0.tgz", + "integrity": "sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.0.tgz", + "integrity": "sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.0.tgz", + "integrity": "sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.0.tgz", + "integrity": "sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.0.tgz", + "integrity": "sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.0.tgz", + "integrity": "sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.0.tgz", + "integrity": "sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.3.tgz", + "integrity": "sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.3.tgz", + "integrity": "sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.3.tgz", + "integrity": "sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.3.tgz", + "integrity": "sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.3.tgz", + "integrity": "sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.0" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.3.tgz", + "integrity": "sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.0" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.3.tgz", + "integrity": "sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.0" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.3.tgz", + "integrity": "sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.4.4" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.3.tgz", + "integrity": "sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.3.tgz", + "integrity": "sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.3.tgz", + "integrity": "sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", + "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@oslojs/encoding": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", + "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", + "license": "MIT" + }, + "node_modules/@pagefind/darwin-arm64": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-arm64/-/darwin-arm64-1.3.0.tgz", + "integrity": "sha512-365BEGl6ChOsauRjyVpBjXybflXAOvoMROw3TucAROHIcdBvXk9/2AmEvGFU0r75+vdQI4LJdJdpH4Y6Yqaj4A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@pagefind/darwin-x64": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-x64/-/darwin-x64-1.3.0.tgz", + "integrity": "sha512-zlGHA23uuXmS8z3XxEGmbHpWDxXfPZ47QS06tGUq0HDcZjXjXHeLG+cboOy828QIV5FXsm9MjfkP5e4ZNbOkow==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@pagefind/default-ui": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@pagefind/default-ui/-/default-ui-1.3.0.tgz", + "integrity": "sha512-CGKT9ccd3+oRK6STXGgfH+m0DbOKayX6QGlq38TfE1ZfUcPc5+ulTuzDbZUnMo+bubsEOIypm4Pl2iEyzZ1cNg==", + "license": "MIT" + }, + "node_modules/@pagefind/linux-arm64": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@pagefind/linux-arm64/-/linux-arm64-1.3.0.tgz", + "integrity": "sha512-8lsxNAiBRUk72JvetSBXs4WRpYrQrVJXjlRRnOL6UCdBN9Nlsz0t7hWstRk36+JqHpGWOKYiuHLzGYqYAqoOnQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@pagefind/linux-x64": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@pagefind/linux-x64/-/linux-x64-1.3.0.tgz", + "integrity": "sha512-hAvqdPJv7A20Ucb6FQGE6jhjqy+vZ6pf+s2tFMNtMBG+fzcdc91uTw7aP/1Vo5plD0dAOHwdxfkyw0ugal4kcQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@pagefind/windows-x64": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@pagefind/windows-x64/-/windows-x64-1.3.0.tgz", + "integrity": "sha512-BR1bIRWOMqkf8IoU576YDhij1Wd/Zf2kX/kCI0b2qzCKC8wcc2GQJaaRMCpzvCCrmliO4vtJ6RITp/AnoYUUmQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/pluginutils": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz", + "integrity": "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.48.1.tgz", + "integrity": "sha512-rGmb8qoG/zdmKoYELCBwu7vt+9HxZ7Koos3pD0+sH5fR3u3Wb/jGcpnqxcnWsPEKDUyzeLSqksN8LJtgXjqBYw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.48.1.tgz", + "integrity": "sha512-4e9WtTxrk3gu1DFE+imNJr4WsL13nWbD/Y6wQcyku5qadlKHY3OQ3LJ/INrrjngv2BJIHnIzbqMk1GTAC2P8yQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.48.1.tgz", + "integrity": "sha512-+XjmyChHfc4TSs6WUQGmVf7Hkg8ferMAE2aNYYWjiLzAS/T62uOsdfnqv+GHRjq7rKRnYh4mwWb4Hz7h/alp8A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.48.1.tgz", + "integrity": "sha512-upGEY7Ftw8M6BAJyGwnwMw91rSqXTcOKZnnveKrVWsMTF8/k5mleKSuh7D4v4IV1pLxKAk3Tbs0Lo9qYmii5mQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.48.1.tgz", + "integrity": "sha512-P9ViWakdoynYFUOZhqq97vBrhuvRLAbN/p2tAVJvhLb8SvN7rbBnJQcBu8e/rQts42pXGLVhfsAP0k9KXWa3nQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.48.1.tgz", + "integrity": "sha512-VLKIwIpnBya5/saccM8JshpbxfyJt0Dsli0PjXozHwbSVaHTvWXJH1bbCwPXxnMzU4zVEfgD1HpW3VQHomi2AQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.48.1.tgz", + "integrity": "sha512-3zEuZsXfKaw8n/yF7t8N6NNdhyFw3s8xJTqjbTDXlipwrEHo4GtIKcMJr5Ed29leLpB9AugtAQpAHW0jvtKKaQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.48.1.tgz", + "integrity": "sha512-leo9tOIlKrcBmmEypzunV/2w946JeLbTdDlwEZ7OnnsUyelZ72NMnT4B2vsikSgwQifjnJUbdXzuW4ToN1wV+Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.48.1.tgz", + "integrity": "sha512-Vy/WS4z4jEyvnJm+CnPfExIv5sSKqZrUr98h03hpAMbE2aI0aD2wvK6GiSe8Gx2wGp3eD81cYDpLLBqNb2ydwQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.48.1.tgz", + "integrity": "sha512-x5Kzn7XTwIssU9UYqWDB9VpLpfHYuXw5c6bJr4Mzv9kIv242vmJHbI5PJJEnmBYitUIfoMCODDhR7KoZLot2VQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.48.1.tgz", + "integrity": "sha512-yzCaBbwkkWt/EcgJOKDUdUpMHjhiZT/eDktOPWvSRpqrVE04p0Nd6EGV4/g7MARXXeOqstflqsKuXVM3H9wOIQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.48.1.tgz", + "integrity": "sha512-UK0WzWUjMAJccHIeOpPhPcKBqax7QFg47hwZTp6kiMhQHeOYJeaMwzeRZe1q5IiTKsaLnHu9s6toSYVUlZ2QtQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.48.1.tgz", + "integrity": "sha512-3NADEIlt+aCdCbWVZ7D3tBjBX1lHpXxcvrLt/kdXTiBrOds8APTdtk2yRL2GgmnSVeX4YS1JIf0imFujg78vpw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.48.1.tgz", + "integrity": "sha512-euuwm/QTXAMOcyiFCcrx0/S2jGvFlKJ2Iro8rsmYL53dlblp3LkUQVFzEidHhvIPPvcIsxDhl2wkBE+I6YVGzA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.48.1.tgz", + "integrity": "sha512-w8mULUjmPdWLJgmTYJx/W6Qhln1a+yqvgwmGXcQl2vFBkWsKGUBRbtLRuKJUln8Uaimf07zgJNxOhHOvjSQmBQ==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.48.1.tgz", + "integrity": "sha512-90taWXCWxTbClWuMZD0DKYohY1EovA+W5iytpE89oUPmT5O1HFdf8cuuVIylE6vCbrGdIGv85lVRzTcpTRZ+kA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.48.1.tgz", + "integrity": "sha512-2Gu29SkFh1FfTRuN1GR1afMuND2GKzlORQUP3mNMJbqdndOg7gNsa81JnORctazHRokiDzQ5+MLE5XYmZW5VWg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.48.1.tgz", + "integrity": "sha512-6kQFR1WuAO50bxkIlAVeIYsz3RUx+xymwhTo9j94dJ+kmHe9ly7muH23sdfWduD0BA8pD9/yhonUvAjxGh34jQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.48.1.tgz", + "integrity": "sha512-RUyZZ/mga88lMI3RlXFs4WQ7n3VyU07sPXmMG7/C1NOi8qisUg57Y7LRarqoGoAiopmGmChUhSwfpvQ3H5iGSQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.48.1.tgz", + "integrity": "sha512-8a/caCUN4vkTChxkaIJcMtwIVcBhi4X2PQRoT+yCK3qRYaZ7cURrmJFL5Ux9H9RaMIXj9RuihckdmkBX3zZsgg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.11.0.tgz", + "integrity": "sha512-oJwU+DxGqp6lUZpvtQgVOXNZcVsirN76tihOLBmwILkKuRuwHteApP8oTXmL4tF5vS5FbOY0+8seXmiCoslk4g==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.11.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.11.0.tgz", + "integrity": "sha512-6/ov6pxrSvew13k9ztIOnSBOytXeKs5kfIR7vbhdtVRg+KPzvp2HctYGeWkqv7V6YIoLicnig/QF3iajqyElZA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.11.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.3" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.11.0.tgz", + "integrity": "sha512-4DwIjIgETK04VneKbfOE4WNm4Q7WC1wo95wv82PoHKdqX4/9qLRUwrfKlmhf0gAuvT6GHy0uc7t9cailk6Tbhw==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.11.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.11.0.tgz", + "integrity": "sha512-Njg/nFL4HDcf/ObxcK2VeyidIq61EeLmocrwTHGGpOQx0BzrPWM1j55XtKQ1LvvDWH15cjQy7rg96aJ1/l63uw==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.11.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.11.0.tgz", + "integrity": "sha512-BhhWRzCTEk2CtWt4S4bgsOqPJRkapvxdsifAwqP+6mk5uxboAQchc0etiJ0iIasxnMsb764qGD24DK9albcU9Q==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.11.0" + } + }, + "node_modules/@shikijs/types": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.11.0.tgz", + "integrity": "sha512-RB7IMo2E7NZHyfkqAuaf4CofyY8bPzjWPjJRzn6SEak3b46fIQyG6Vx5fG/obqkfppQ+g8vEsiD7Uc6lqQt32Q==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" + }, + "node_modules/@swc/helpers": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", + "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.13.tgz", + "integrity": "sha512-eq3ouolC1oEFOAvOMOBAmfCIqZBJuvWvvYWh5h5iOYfe1HFC6+GZ6EIL0JdM3/niGRJmnrOc+8gl9/HGUaaptw==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.5.1", + "lightningcss": "1.30.1", + "magic-string": "^0.30.18", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.13" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.13.tgz", + "integrity": "sha512-CPgsM1IpGRa880sMbYmG1s4xhAy3xEt1QULgTJGQmZUeNgXFR7s1YxYygmJyBGtou4SyEosGAGEeYqY7R53bIA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.13", + "@tailwindcss/oxide-darwin-arm64": "4.1.13", + "@tailwindcss/oxide-darwin-x64": "4.1.13", + "@tailwindcss/oxide-freebsd-x64": "4.1.13", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.13", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.13", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.13", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.13", + "@tailwindcss/oxide-linux-x64-musl": "4.1.13", + "@tailwindcss/oxide-wasm32-wasi": "4.1.13", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.13", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.13" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.13.tgz", + "integrity": "sha512-BrpTrVYyejbgGo57yc8ieE+D6VT9GOgnNdmh5Sac6+t0m+v+sKQevpFVpwX3pBrM2qKrQwJ0c5eDbtjouY/+ew==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.13.tgz", + "integrity": "sha512-YP+Jksc4U0KHcu76UhRDHq9bx4qtBftp9ShK/7UGfq0wpaP96YVnnjFnj3ZFrUAjc5iECzODl/Ts0AN7ZPOANQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.13.tgz", + "integrity": "sha512-aAJ3bbwrn/PQHDxCto9sxwQfT30PzyYJFG0u/BWZGeVXi5Hx6uuUOQEI2Fa43qvmUjTRQNZnGqe9t0Zntexeuw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.13.tgz", + "integrity": "sha512-Wt8KvASHwSXhKE/dJLCCWcTSVmBj3xhVhp/aF3RpAhGeZ3sVo7+NTfgiN8Vey/Fi8prRClDs6/f0KXPDTZE6nQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.13.tgz", + "integrity": "sha512-mbVbcAsW3Gkm2MGwA93eLtWrwajz91aXZCNSkGTx/R5eb6KpKD5q8Ueckkh9YNboU8RH7jiv+ol/I7ZyQ9H7Bw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.13.tgz", + "integrity": "sha512-wdtfkmpXiwej/yoAkrCP2DNzRXCALq9NVLgLELgLim1QpSfhQM5+ZxQQF8fkOiEpuNoKLp4nKZ6RC4kmeFH0HQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.13.tgz", + "integrity": "sha512-hZQrmtLdhyqzXHB7mkXfq0IYbxegaqTmfa1p9MBj72WPoDD3oNOh1Lnxf6xZLY9C3OV6qiCYkO1i/LrzEdW2mg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.13.tgz", + "integrity": "sha512-uaZTYWxSXyMWDJZNY1Ul7XkJTCBRFZ5Fo6wtjrgBKzZLoJNrG+WderJwAjPzuNZOnmdrVg260DKwXCFtJ/hWRQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.13.tgz", + "integrity": "sha512-oXiPj5mi4Hdn50v5RdnuuIms0PVPI/EG4fxAfFiIKQh5TgQgX7oSuDWntHW7WNIi/yVLAiS+CRGW4RkoGSSgVQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.13.tgz", + "integrity": "sha512-+LC2nNtPovtrDwBc/nqnIKYh/W2+R69FA0hgoeOn64BdCX522u19ryLh3Vf3F8W49XBcMIxSe665kwy21FkhvA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.5", + "@emnapi/runtime": "^1.4.5", + "@emnapi/wasi-threads": "^1.0.4", + "@napi-rs/wasm-runtime": "^0.2.12", + "@tybys/wasm-util": "^0.10.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.13.tgz", + "integrity": "sha512-dziTNeQXtoQ2KBXmrjCxsuPk3F3CQ/yb7ZNZNA+UkNTeiTGgfeh+gH5Pi7mRncVgcPD2xgHvkFCh/MhZWSgyQg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.13.tgz", + "integrity": "sha512-3+LKesjXydTkHk5zXX01b5KMzLV1xl2mcktBJkje7rhFUpUlYJy7IMOLqjIRQncLTa1WZZiFY/foAeB5nmaiTw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.13.tgz", + "integrity": "sha512-0PmqLQ010N58SbMTJ7BVJ4I2xopiQn/5i6nlb4JmxzQf8zcS5+m2Cv6tqh+sfDwtIdjoEnOvwsGQ1hkUi8QEHQ==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.13", + "@tailwindcss/oxide": "4.1.13", + "tailwindcss": "4.1.13" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/fontkit": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/fontkit/-/fontkit-2.0.8.tgz", + "integrity": "sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/js-yaml": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/nlcst": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", + "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/node": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.0.tgz", + "integrity": "sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.10.0" + } + }, + "node_modules/@types/sax": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", + "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz", + "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-iterate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", + "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/astro": { + "version": "5.13.3", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.13.3.tgz", + "integrity": "sha512-V0mUOUK70UZ7xqXp5Noqse/SREU0P756KgFufBEluq5LkmBejzC2GENMUA2Na+PFwUjemElJtRlpKyrnKpFhSQ==", + "license": "MIT", + "dependencies": { + "@astrojs/compiler": "^2.12.2", + "@astrojs/internal-helpers": "0.7.2", + "@astrojs/markdown-remark": "6.3.6", + "@astrojs/telemetry": "3.3.0", + "@capsizecss/unpack": "^2.4.0", + "@oslojs/encoding": "^1.1.0", + "@rollup/pluginutils": "^5.1.4", + "acorn": "^8.14.1", + "aria-query": "^5.3.2", + "axobject-query": "^4.1.0", + "boxen": "8.0.1", + "ci-info": "^4.2.0", + "clsx": "^2.1.1", + "common-ancestor-path": "^1.0.1", + "cookie": "^1.0.2", + "cssesc": "^3.0.0", + "debug": "^4.4.0", + "deterministic-object-hash": "^2.0.2", + "devalue": "^5.1.1", + "diff": "^5.2.0", + "dlv": "^1.1.3", + "dset": "^3.1.4", + "es-module-lexer": "^1.6.0", + "esbuild": "^0.25.0", + "estree-walker": "^3.0.3", + "flattie": "^1.1.1", + "fontace": "~0.3.0", + "github-slugger": "^2.0.0", + "html-escaper": "3.0.3", + "http-cache-semantics": "^4.1.1", + "import-meta-resolve": "^4.1.0", + "js-yaml": "^4.1.0", + "kleur": "^4.1.5", + "magic-string": "^0.30.17", + "magicast": "^0.3.5", + "mrmime": "^2.0.1", + "neotraverse": "^0.6.18", + "p-limit": "^6.2.0", + "p-queue": "^8.1.0", + "package-manager-detector": "^1.1.0", + "picomatch": "^4.0.2", + "prompts": "^2.4.2", + "rehype": "^13.0.2", + "semver": "^7.7.1", + "shiki": "^3.2.1", + "smol-toml": "^1.3.4", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.12", + "tsconfck": "^3.1.5", + "ultrahtml": "^1.6.0", + "unifont": "~0.5.0", + "unist-util-visit": "^5.0.0", + "unstorage": "^1.15.0", + "vfile": "^6.0.3", + "vite": "^6.3.4", + "vitefu": "^1.0.6", + "xxhash-wasm": "^1.1.0", + "yargs-parser": "^21.1.1", + "yocto-spinner": "^0.2.1", + "zod": "^3.24.4", + "zod-to-json-schema": "^3.24.5", + "zod-to-ts": "^1.2.0" + }, + "bin": { + "astro": "astro.js" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/astrodotbuild" + }, + "optionalDependencies": { + "sharp": "^0.33.3" + } + }, + "node_modules/astro-expressive-code": { + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.41.3.tgz", + "integrity": "sha512-u+zHMqo/QNLE2eqYRCrK3+XMlKakv33Bzuz+56V1gs8H0y6TZ0hIi3VNbIxeTn51NLn+mJfUV/A0kMNfE4rANw==", + "license": "MIT", + "dependencies": { + "rehype-expressive-code": "^0.41.3" + }, + "peerDependencies": { + "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0" + } + }, + "node_modules/astro/node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/astro/node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/astro/node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/astro/node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/astro/node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/astro/node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/astro/node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/astro/node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/base-64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", + "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bcp-47": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.0.tgz", + "integrity": "sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/bcp-47-match": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", + "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/blob-to-buffer": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/blob-to-buffer/-/blob-to-buffer-1.2.9.tgz", + "integrity": "sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/boxen": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", + "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^8.0.0", + "chalk": "^5.3.0", + "cli-boxes": "^3.0.0", + "string-width": "^7.2.0", + "type-fest": "^4.21.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/camelcase": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.0.tgz", + "integrity": "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/ci-info": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", + "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "license": "ISC" + }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/cookie-es": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", + "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", + "license": "MIT" + }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/crossws": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", + "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "license": "MIT", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/css-selector-parser": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.1.3.tgz", + "integrity": "sha512-gJMigczVZqYAk0hPVzx/M4Hm1D9QOtqkdQk9005TNzDIUGzo5cnHEDiKUT7jGPximL/oYb+LIitcHFQ4aKupxg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", + "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "license": "MIT" + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/deterministic-object-hash": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", + "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==", + "license": "MIT", + "dependencies": { + "base-64": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/devalue": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" + }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/direction": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", + "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", + "license": "MIT", + "bin": { + "direction": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" + }, + "node_modules/dset": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "license": "MIT" + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esbuild": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", + "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.9", + "@esbuild/android-arm": "0.25.9", + "@esbuild/android-arm64": "0.25.9", + "@esbuild/android-x64": "0.25.9", + "@esbuild/darwin-arm64": "0.25.9", + "@esbuild/darwin-x64": "0.25.9", + "@esbuild/freebsd-arm64": "0.25.9", + "@esbuild/freebsd-x64": "0.25.9", + "@esbuild/linux-arm": "0.25.9", + "@esbuild/linux-arm64": "0.25.9", + "@esbuild/linux-ia32": "0.25.9", + "@esbuild/linux-loong64": "0.25.9", + "@esbuild/linux-mips64el": "0.25.9", + "@esbuild/linux-ppc64": "0.25.9", + "@esbuild/linux-riscv64": "0.25.9", + "@esbuild/linux-s390x": "0.25.9", + "@esbuild/linux-x64": "0.25.9", + "@esbuild/netbsd-arm64": "0.25.9", + "@esbuild/netbsd-x64": "0.25.9", + "@esbuild/openbsd-arm64": "0.25.9", + "@esbuild/openbsd-x64": "0.25.9", + "@esbuild/openharmony-arm64": "0.25.9", + "@esbuild/sunos-x64": "0.25.9", + "@esbuild/win32-arm64": "0.25.9", + "@esbuild/win32-ia32": "0.25.9", + "@esbuild/win32-x64": "0.25.9" + } + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/expressive-code": { + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.41.3.tgz", + "integrity": "sha512-YLnD62jfgBZYrXIPQcJ0a51Afv9h8VlWqEGK9uU2T5nL/5rb8SnA86+7+mgCZe5D34Tff5RNEA5hjNVJYHzrFg==", + "license": "MIT", + "dependencies": { + "@expressive-code/core": "^0.41.3", + "@expressive-code/plugin-frames": "^0.41.3", + "@expressive-code/plugin-shiki": "^0.41.3", + "@expressive-code/plugin-text-markers": "^0.41.3" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/flattie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", + "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/fontace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.3.0.tgz", + "integrity": "sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg==", + "license": "MIT", + "dependencies": { + "@types/fontkit": "^2.0.8", + "fontkit": "^2.0.4" + } + }, + "node_modules/fontkit": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", + "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.12", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/h3": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.4.tgz", + "integrity": "sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==", + "license": "MIT", + "dependencies": { + "cookie-es": "^1.2.2", + "crossws": "^0.3.5", + "defu": "^6.1.4", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.2", + "radix3": "^1.1.2", + "ufo": "^1.6.1", + "uncrypto": "^0.1.3" + } + }, + "node_modules/hast-util-embedded": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz", + "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-is-element": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-format": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hast-util-format/-/hast-util-format-1.1.0.tgz", + "integrity": "sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-minify-whitespace": "^1.0.0", + "hast-util-phrasing": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "html-whitespace-sensitive-tag-names": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-has-property": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-body-ok-link": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.1.tgz", + "integrity": "sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-minify-whitespace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hast-util-minify-whitespace/-/hast-util-minify-whitespace-1.0.1.tgz", + "integrity": "sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-is-body-ok-link": "^3.0.0", + "hast-util-is-element": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.4.tgz", + "integrity": "sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "bcp-47-match": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "css-selector-parser": "^3.0.0", + "devlop": "^1.0.0", + "direction": "^2.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "nth-check": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5/node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-escaper": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", + "license": "MIT" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-whitespace-sensitive-tag-names": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-3.0.1.tgz", + "integrity": "sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" + }, + "node_modules/i18next": { + "version": "23.16.8", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.8.tgz", + "integrity": "sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", + "license": "MIT" + }, + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jiti": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz", + "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/magic-string": { + "version": "0.30.18", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.18.tgz", + "integrity": "sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", + "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", + "source-map-js": "^1.2.0" + } + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-definitions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", + "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-directive": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", + "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "license": "CC0-1.0" + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", + "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neotraverse": { + "version": "0.6.18", + "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", + "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/nlcst-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", + "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "license": "MIT" + }, + "node_modules/node-mock-http": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.2.tgz", + "integrity": "sha512-zWaamgDUdo9SSLw47we78+zYw/bDr5gH8pH7oRRs8V3KmBtu8GLgGIbV2p/gRPd3LWpEOpjQj7X1FOU3VFMJ8g==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/ofetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz", + "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==", + "license": "MIT", + "dependencies": { + "destr": "^2.0.3", + "node-fetch-native": "^1.6.4", + "ufo": "^1.5.4" + } + }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" + }, + "node_modules/oniguruma-parser": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", + "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==", + "license": "MIT" + }, + "node_modules/oniguruma-to-es": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.3.tgz", + "integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==", + "license": "MIT", + "dependencies": { + "oniguruma-parser": "^0.12.1", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/p-limit": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", + "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.0.tgz", + "integrity": "sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^5.0.1", + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", + "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-manager-detector": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz", + "integrity": "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==", + "license": "MIT" + }, + "node_modules/pagefind": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pagefind/-/pagefind-1.3.0.tgz", + "integrity": "sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==", + "license": "MIT", + "bin": { + "pagefind": "lib/runner/bin.cjs" + }, + "optionalDependencies": { + "@pagefind/darwin-arm64": "1.3.0", + "@pagefind/darwin-x64": "1.3.0", + "@pagefind/linux-arm64": "1.3.0", + "@pagefind/linux-x64": "1.3.0", + "@pagefind/windows-x64": "1.3.0" + } + }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/parse-latin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", + "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "@types/unist": "^3.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-modify-children": "^4.0.0", + "unist-util-visit-children": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/radix3": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "license": "MIT" + }, + "node_modules/rehype": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", + "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "rehype-parse": "^9.0.0", + "rehype-stringify": "^10.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-expressive-code": { + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.41.3.tgz", + "integrity": "sha512-8d9Py4c/V6I/Od2VIXFAdpiO2kc0SV2qTJsRAaqSIcM9aruW4ASLNe2kOEo1inXAAkIhpFzAHTc358HKbvpNUg==", + "license": "MIT", + "dependencies": { + "expressive-code": "^0.41.3" + } + }, + "node_modules/rehype-format": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rehype-format/-/rehype-format-5.0.1.tgz", + "integrity": "sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-format": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", + "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-stringify": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", + "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-directive": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz", + "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "micromark-extension-directive": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", + "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-smartypants": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", + "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", + "license": "MIT", + "dependencies": { + "retext": "^9.0.0", + "retext-smartypants": "^6.0.0", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", + "license": "MIT" + }, + "node_modules/retext": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", + "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "retext-latin": "^4.0.0", + "retext-stringify": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-latin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", + "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "parse-latin": "^7.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-smartypants": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", + "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-stringify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", + "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rollup": { + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.48.1.tgz", + "integrity": "sha512-jVG20NvbhTYDkGAty2/Yh7HK6/q3DGSRH4o8ALKGArmMuaauM9kLfoMZ+WliPwA5+JHr2lTn3g557FxBV87ifg==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.48.1", + "@rollup/rollup-android-arm64": "4.48.1", + "@rollup/rollup-darwin-arm64": "4.48.1", + "@rollup/rollup-darwin-x64": "4.48.1", + "@rollup/rollup-freebsd-arm64": "4.48.1", + "@rollup/rollup-freebsd-x64": "4.48.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.48.1", + "@rollup/rollup-linux-arm-musleabihf": "4.48.1", + "@rollup/rollup-linux-arm64-gnu": "4.48.1", + "@rollup/rollup-linux-arm64-musl": "4.48.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.48.1", + "@rollup/rollup-linux-ppc64-gnu": "4.48.1", + "@rollup/rollup-linux-riscv64-gnu": "4.48.1", + "@rollup/rollup-linux-riscv64-musl": "4.48.1", + "@rollup/rollup-linux-s390x-gnu": "4.48.1", + "@rollup/rollup-linux-x64-gnu": "4.48.1", + "@rollup/rollup-linux-x64-musl": "4.48.1", + "@rollup/rollup-win32-arm64-msvc": "4.48.1", + "@rollup/rollup-win32-ia32-msvc": "4.48.1", + "@rollup/rollup-win32-x64-msvc": "4.48.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.3.tgz", + "integrity": "sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.4", + "semver": "^7.7.2" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.3", + "@img/sharp-darwin-x64": "0.34.3", + "@img/sharp-libvips-darwin-arm64": "1.2.0", + "@img/sharp-libvips-darwin-x64": "1.2.0", + "@img/sharp-libvips-linux-arm": "1.2.0", + "@img/sharp-libvips-linux-arm64": "1.2.0", + "@img/sharp-libvips-linux-ppc64": "1.2.0", + "@img/sharp-libvips-linux-s390x": "1.2.0", + "@img/sharp-libvips-linux-x64": "1.2.0", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.0", + "@img/sharp-libvips-linuxmusl-x64": "1.2.0", + "@img/sharp-linux-arm": "0.34.3", + "@img/sharp-linux-arm64": "0.34.3", + "@img/sharp-linux-ppc64": "0.34.3", + "@img/sharp-linux-s390x": "0.34.3", + "@img/sharp-linux-x64": "0.34.3", + "@img/sharp-linuxmusl-arm64": "0.34.3", + "@img/sharp-linuxmusl-x64": "0.34.3", + "@img/sharp-wasm32": "0.34.3", + "@img/sharp-win32-arm64": "0.34.3", + "@img/sharp-win32-ia32": "0.34.3", + "@img/sharp-win32-x64": "0.34.3" + } + }, + "node_modules/shiki": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.11.0.tgz", + "integrity": "sha512-VgKumh/ib38I1i3QkMn6mAQA6XjjQubqaAYhfge71glAll0/4xnt8L2oSuC45Qcr/G5Kbskj4RliMQddGmy/Og==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "3.11.0", + "@shikijs/engine-javascript": "3.11.0", + "@shikijs/engine-oniguruma": "3.11.0", + "@shikijs/langs": "3.11.0", + "@shikijs/themes": "3.11.0", + "@shikijs/types": "3.11.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/sitemap": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-8.0.0.tgz", + "integrity": "sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==", + "license": "MIT", + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6.0.0" + } + }, + "node_modules/sitemap/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "license": "MIT" + }, + "node_modules/smol-toml": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.4.2.tgz", + "integrity": "sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stream-replace-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz", + "integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/style-to-js": { + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.17.tgz", + "integrity": "sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.9" + } + }, + "node_modules/style-to-object": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz", + "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.4" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.13.tgz", + "integrity": "sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.3.tgz", + "integrity": "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tsconfck": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", + "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", + "license": "MIT", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "license": "MIT" + }, + "node_modules/ultrahtml": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", + "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==", + "license": "MIT" + }, + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", + "license": "MIT" + }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unifont": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.5.2.tgz", + "integrity": "sha512-LzR4WUqzH9ILFvjLAUU7dK3Lnou/qd5kD+IakBtBK4S15/+x2y9VX+DcWQv6s551R6W+vzwgVS6tFg3XggGBgg==", + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.0", + "ofetch": "^1.4.1", + "ohash": "^2.0.0" + } + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-modify-children": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", + "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "array-iterate": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-children": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", + "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unstorage": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.0.tgz", + "integrity": "sha512-l9Z7lBiwtNp8ZmcoZ/dmPkFXFdtEdZtTZafCSnEIj3YvtkXeGAtL2rN8MQFy/0cs4eOLpuRJMp9ivdug7TCvww==", + "license": "MIT", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^4.0.3", + "destr": "^2.0.5", + "h3": "^1.15.4", + "lru-cache": "^10.4.3", + "node-fetch-native": "^1.6.7", + "ofetch": "^1.4.1", + "ufo": "^1.6.1" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6.0.3 || ^7.0.0", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12", + "@vercel/kv": "^1.0.1", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/functions": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", + "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", + "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*", + "tests/projects/workspace/packages/*" + ], + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/widest-line": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", + "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", + "license": "MIT", + "dependencies": { + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/xxhash-wasm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", + "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==", + "license": "MIT" + }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yocto-spinner": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.2.3.tgz", + "integrity": "sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==", + "license": "MIT", + "dependencies": { + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": ">=18.19" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.24.6", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", + "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.24.1" + } + }, + "node_modules/zod-to-ts": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zod-to-ts/-/zod-to-ts-1.2.0.tgz", + "integrity": "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==", + "peerDependencies": { + "typescript": "^4.9.4 || ^5.0.2", + "zod": "^3" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..65a850784 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "openrag", + "type": "module", + "version": "0.0.1", + "scripts": { + "dev": "astro dev", + "start": "astro dev", + "build": "astro build", + "preview": "astro preview", + "astro": "astro" + }, + "dependencies": { + "@astrojs/starlight": "^0.35.2", + "@astrojs/starlight-tailwind": "^4.0.1", + "@fontsource-variable/space-grotesk": "^5.2.10", + "@tailwindcss/vite": "^4.1.13", + "astro": "^5.6.1", + "sharp": "^0.34.2", + "tailwindcss": "^4.1.13" + } +} diff --git a/src/assets/OpenRAG-title.svg b/src/assets/OpenRAG-title.svg new file mode 100644 index 000000000..6cfb092fb --- /dev/null +++ b/src/assets/OpenRAG-title.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/RAG_architecture.png b/src/assets/RAG_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..867231fd67d7fbead4fdf224877a46093a303bdf GIT binary patch literal 150685 zcmeFZWn9!<7dASCfFOv1B8>u~lp+#R10o6Rc6CW!1k33U&{)p0@(N{z;rjY-?{FH?;DeS=x9 zAPr^V#IoeHn(FGxMjZUBg$63cO*S~*lJ!Ue_DKAD zp~NM6O0Io%iB%SlHUHje%+j#y`_IdHr4+{q?pm5;%c3-1*4H|$6RhxXW+vmbLJ{*; zElbWz_934x5KcZg7hq0|`EKA-azUM*S9VJYBr#qU2xv zAvq!@Wuw62wc51=Rb76S9tQs|lZNA!*A=nu+w;fDlXqq}>RznXtgdmO+Ml!x3bFcgQZemznKa$^bzki>_v*0U|qh4e{M6IB_&k3x*X)A;Nsuc0OXBf#JC zWO{w-YMS}k;El_+&zRzT+uGuv=(i7hP^9*7b8fSr#(3JCKJ}GI=8| zk~z7MSkq7SaY;C|I9F&PArFsCOg~?@av%qK+&2@vwX+iOCJOp6>u7g2B1Kq9PHvz# zXhMCShwXFWnP_HZ!oZGr0jr%H=ni_@=(gMT{W&tm99Y=pV})3@B}&y21!ayN?QkuXA|v(jqMlRYD4{ujcDm?9y#6so0&QclrF4*l9*8Kx?RllVh!-?`31 z*sK?5-6y37)bQb9Htnm}oork$%1xVOu`?<^0O%XvgHzP}grx|a(i+XC$1OAzkwJ~S z7fMGk7_4peb_p3pK)0-Yh*kJ-&yinBL`B=zuivs8D-v_8xFt&s%aAsv&iJ=EV6;hi z`oaA+26NfOH5g|^jYWG$o2#;?3Ky#)?o?RGZFy-9Gpp>->(QL(g^YaGwJX`aPrHvI zRRTF}8eTgTn~N}*#wD7?8E~1dHO^T|BXiM$cZn`p5d(n|{t{^aDFV41WPHe3=$-qP z$qtj3=#ET6;IvwugItwkc}}y9Cyy8L!G90e5?ag$Q|3bF`U~Rd{H%glfypK^lANm93&? zT?@Tr6%x<(b%xnHU%%3^XM1Wd42V1mGtV1+Ldp|!N2O=)oObHNmt2Rh`dr$BuxuH? zfxkLws7Job=qkKhjyJVWHy1x(HC#98+Ih#)=F7_qerhhz%uEK_-N(Keb9DIn%s=<# zyB1qR5M&jM=o>@OYKv4`{J*I2_GK>b_pEE05++q+4pom?t;7+s#V)0wMcTf2kHYh4zut9UPaND{VacuFw4_V2j_8 z(D5lt905iQa6a7Q*FRAD^LCXs=?ABK%M3Ws*;jXjSA_#7{Y@hoJb#!pp02R!zB}vx zHrJw~X%DS@I55wNpTMnbXjrhWBV&W)Y&6;}Z}U^_SyL=b-v7htkc%_<1PYP`tSKla zF4&E~4-sQOTRwXYAMS6j_OM*kOxC{K-CAQnJu*pDT{<&(GWz9fBkylM^+KGN=KKle z>Dh`ysM5^W*mMwbLY#d|G3{sC-nbZsR5R0Vw;fZAnDJMNa2Z9WzhfBJMnI}cjvD=W z-XF-e>KmOspWLO@;GXH3Y8fKr-bTMj)o;3PoJkImA%a<97dggk3?=@IICuTHdj9IT z*PtZn#B{SOM|A&^a=w0bk3#{~#O{4IGgq6R2M+?oMM!)$Ka!6-+a$xe4h(x!V`n@Y z`@;X}!U1WCe<1$s3E|Wk=!lc5Msoak!VpFe(YvK&;jv|N5WM%PFTvI{PN+_A_)PoH z`N@YGBBFw~WPq!bgt;nxALcxqkuNC`>gY6}iR)))nD#AAONsb$w9+|3KnRa^y_jY` zDsXmK;9Ri3HqASoD6Lu3>Xyp2$5Ab_ag;}CeBpr9$ys`_u|buL@q2bgiBfYVMt@O7 zLORNW*!~!9owPf=mXD@Cd9rhm?we6T;|`{iZN@574;uzD5s5WNF z6;WN$=u~?fv-4EtJ8D&$6LNI*@aaIugKrOHg@g4PdA==cCkW(JYy?}~p$L6oVK@6} zHvuAehUFP{&n)5a3fO@9c){VL`Rlz@?APxMD^1rrZ1Mf*m!N^VMfo&5I~>pIbu!pq zt~Fu_za=ci^i&+RO13}ij-I^g*P;T;2zd5~LLs>8#A>BRw_^&3 zGta{OI)2X6({+yb2QS@Opf#N!ah`bh>>NY}^7{I3;778zA}SYDdy(J2BK-C&Ly+Sy z@EHBY3mbQ#)D&@SA6Cn@xM@&_bf{}36!^>69W@Z8d~Vxc;ia{5IZe#3ma7FbFaHSz zadrH$a}fFFESZ*>x(M8E8eRy}GjCS7ql2DSF|}cM?`cd&rEHvK+Q9o}y=EbSR6*3N zaxzthg^?|%=+&jk%gvW`Xf)?}21niRQDw|0m~w74q@_*Gb~MFJ9C+L0_}{he%r0qH zh;hkFi()rjbEoiM--?Fn_SU+vt;O|L)U~%q_SJo>mcX0()W?mcZBtvb$486EYksWY z(oH1i#OJ=>v3$90pG~l!n6X(uPAB15PEa)d@#k~b)7#wNa#*1pn+I<`gH#0uBw+1& ziaXGkWf(zsxbUbEVYs_^vz(dTS9Uu;q? z&t4N=ZlzJA=oQ7vd&7SRWK2`|u*L%gY zMKfI@=v!GH4$M{U`71~3X99>UW%rDWX_ip#RGLXXee;R*TVA>`4Erm-wF-ChDlcatr;~uT&2kFP9zG097tZxzxD82)Oe!rjZ+Cb< z$ZKiowFM+mRUKT4^Rq*F45Y zdKqHR#FU8*?5gBbnjs!vZGv_d@urUw*?iuk$cojq*@^jrvh z+%-~t#WYY~?o-8|-oY_ZoQ?pFL{ExH(3)&Nv~Zf>(}3EPL56zL6u9IcgA-{?OBbRdv|R>>?z)sv(W8VjYNt{T!#_Ix3-*#>8? zRr>fvG>~bA@C=yJzjDqc=)TZItmYj4vo)coSg_D&%F}ezee_OxS-W4OOKA~T&RG_S zJ%l0i3dR1_`>U{%IrStC z^_SEGf931hGm2x6+x*UKAYa!h`if0orT;@pIF+YA>p^TocY;MMQp~p%zT}$VkufXS^nciyj*c+44}}cfKkK?ZKTcJJ zj1l%(3n*!iwJl$|E$nVJ_4b#49t$YE(X~ClMz=b`{-ABi)QljwZk^NjS}WOe8)#@j zOy4({<^^v(M4u#MG+{P^$dnpQ@6&H!pDYpJq@a z+1&ZbMYT_=q^Q_kg|N)sK?*+=CY>dBOoy{BB<8)KXeL}_Og10o#7zgYCLB5w6GN1Io;fNW@NP8JFp}*eC(9+&kDk%vz$hC60wI*}sRg9~% zg~~b{&V#fo3AP&UWm!XYS;qLaa()vQ9Aeduj5&OfR(jVUDMrSCcYgj9!8Zv^OgAdw zRKq!EesOLNpLQEHUQ|=jFi94}(_%rnpykbo*e&CZWAMCc8z=AxA~N@!S+%`nz>Z^( zTd8M1T2?_bQN+fhT&7PW-{Gz<@`o;?mYvIke&HsLt{V@!?o3`%+X%9dpWiv-aOD4F zt^Ot-TF-Q;%BzMPGDs2L`^yPlC%*-0SX`x3NL1fL1vd&z9tXc4L6D<&(#jd<%+qUj zN)oIi{KX2Kwd%KH4&B+w@Xu=*_kA^~S>Ggig5&b~wvdzg(4Aj--v5Yxo#Oc*#6y4i z`Y4-TdN1o%A(O%N;%}}+hgDNw3E>0B=3dT+2=>=z+X0z3U4342Y7o4IntN@Lk-B|R zZ_FM127sq2#xRVCdQ!G}SN5|1qD~=1dwv{fKu5 z<67~0$H~_^>K;U2Nl+16-*C(Xmbly3DPxUnpFDIET|7L!@4lR5B3rky>PxeKB;ViM zaOB?<<+=L8q~jwK{@69;+mKR$-4L1r<&M=2{ZqJ*Cb)S~Srb*$&d9^|p=frgPhCjO*Ad%7D7JYsCvl}jpg6==k;5@qiUudNE3?wb=U#ICmQT5p4Bfa2!sq-zud04I`^lKzU=5mb9Y=1r~RI1rT2>rQh6owe@6TPA@XXu5o4esj`-VFRrm^T&(cL zIYQqKEnw*EXwi>54d22H+c`UHul_tpcI&Vzejle}>0kdI=cm9DTbaED%;9z3v7B5% zwWiHR@^#szj||KPZ)1E5U+?cF8#Rp&We-=j^~~-RU4|48(q#V1L9~EFJXpl5v;jfF zpTMBRT?1Ee@rCy2<^Q}i} ztF;IRgrz6ZzuIJO6#Ppg*RWw{HS|Q2SW$Zo^I(v9!T*SUk6`=8z$9 zLv*O>Nsfe5B+kz109N0`r4C`%U9Vvz+FQ6EC0A)?5I^0qbNn$s?S<7H?_IO`p{-}c z0c*9kZ`AbEw>RF-6l&^7B;5mc=GzwYy`s6+?>Kw1grS}Dn=jLlAK-i=8#`Y!_b=pa zY(|@%90=&+eb%W?NQ!tYl8k}<;jhqlgtZ(5nVodO*BY@@<5ZhOh80! zcwN`;w^cB@C)l^PfBiX6=-cHWafocvUM^SQrv6!N6K68SA0vm*icVdBKns;n{oZmdWLat)*VtJp zL*V%JePsDfKDJTqjG082_v_phP{7kPTsr-TXQvI?(Le;&@7>KI`cChn%VaFNpIbw> z;;Ou3>3v%n(49Z%mm9RU?7=V}j2AAXnM1jj=3k~u*5OrILu^C(XzR@hld^cs1GoAq zceUtk(kg|$w!Hd%8Q*ukjT+erc-)41RUanQE)UTsi;zP76`hWk>}N32O0i(T3-0vSr%SS9&3kslx>(#pO zbusImh=>?{zlmXzufo0UYXCF|)pgYn+0*|Fd-^UxMn@Tiz0&NLd*x{d3f&tCgzqs4 z;UXP0#5M-emiw|Jl!>f5e@4$Z_zzjX!yz7CB^!yFdTa4-9(c}~2C}7D8ktkqUs|PW z%W{x*GW?R7!1k-8hu1=F>f2o`hzd1czyvGqixV1pzzc-Xf_hG&rN`DW#d@79H8Aqt zmak_@7-v^yH|d8=IlW1B9sWGIJm2K|op4|Fy(l znzA#ofP^ceP_KDR1xgri^H6u-x|oiUrr$+32q%}d%EL9+udp#|=mC9ll5bYaSF$f} zB(+09bU?2bYxq>SBIVm`UXw@&MDW42XV_Gn<(YUsPEp5A=Vq62M{}hM9dXf@*jLX7 zHlHg>W<5MIYGk!Jmb|_Qy-j1OV}T96|5;KF)F!@t6GB$Goetn?u=X*G8sh)P?{29@ zLsYW4RiPs>i2wxYArj*DR(LbhaXxS5t%IA`d-GB|)p>bqR(VE?i*t!o*5L@`9pBL( zurOcW9=@0|y+|j+HtpnAO9D%5s!%=2oWdbi#{F%3zJb=d{*!2lbEs06?1=E^OUbOh zQ^j%)WIIXYT<*u=Z~BTKhdbg;HMZ!XEWDf<$tsSXmL;%p#pwkNShRb_ec59iC}*4w zJ@!_jIErjfnhuS<2cf%4*@UIb^O8(?kfDrgH#mCVb~A79$sA|K@n%?kta}(89lR6X z`#I7qmPnmSo7w84QH1A_Vb3MmWI5f_*mIzNd0&>8fOuTvTIXOZ1Et%WVZ;la{WtNZ zcz}pf5R+WCZ|Y-ZVTX@qN7i9Gt#Tv0L&EMH)`}g}k2re={g#W(4D{8m*+d+pySsJJ z-`evxXu!qLFb=a?Xh35KP;Lc|~eI2Stozi|Ec zZ{+ImFr1%H`3>BQU_QO98X|5&ednYh`nS7AYkZ4PKm4+s-;8ABZ_15`w#(a?yr{g* zHDr*D+&j9QtHaUeECtdZLX%GVfg(_(o3tbYUT&O*6aPqfu`K4kwXW~$@9&XSZaUem za|2I}#azh((mPt4D<@UHq|W1yK9aB=K$qlwld*Kzj@lb>)4pjfRa6XWHj^~+Ey1U* zMtgkovAf%$0pd3(1G?ts{1pfp-iyoFmA_yXha?ErTV%RYGC>NMFE#z`xv~Oi@r=Dw zf0qJtv)9T`!DC!(KviieMdG0@vQ>INhdVa9IFABo=%u>fF^k?Y{yV8hl zPcsDXBSCPUJLK1l^u{`i<+o9OpBld@yrkcCxS>;M=H*;?#+vSkxwbONUPr+4;v9i* z-~LYWe*@SyT01CAm@Kb9n>7`x2^Dkg}V@2g>B-%}t3=4kQ!OM%K7aKL``ElgEDLoAwR)xk59_h!V-pqVVg-VkVhAQCAJZ+Nopu3{>UT*xn(yW~*%{O0Q8~k+TKrn)+6p zTOYbC>Bp=L3l0sZtYyX-h7Y@z8qGbn$cT2HuYw(*H+qpa!`4DX0XB`hm$2vIk>a@c z@Y8*^6}kdAxKlNrJT!mBY)?oi)6Bcx^kvMbaacvPe>f)<$lQ{iRN^an@J(bz!8~%` z6>YCjIlel4b;!piewRN%#Af#@y7Uurynuwm=R^Ft?!|u1RZ(VE^DDl~=MPMmt8wBGj^!CnH_P+Jf`VzI%Y}u=^Z?YQ+9(@Hf_a6EgyDRaJ}l zo?GaRu8#W zE7578_;4KQ+#`ChW_yKO975-$de!9>1gA((s8tN>%>ME6JYO8xn^beps9w&cHy|tF zskrdP-W7LhXt>tPylwk3#LYEim=3!%dW@wIHUIn%_o@B0G_|Qr183bl2MY_`9{UR` z+5>yw%!={${5!?Oc*sz8;)|6U&6v2WYo`NdYeFa^Fk&M&0pKGFx|Qe+Ha^}f@Al*m zVT$JgS(e^-tumLIJV@K-uGsQHh54a@R@opMB)q}{H_x)26gcm$a}YN1!r?2}l@0-9 zo2c>J>;_{}Iq4rUN0RWS5xm>I+1Y4F#AbX%f7hki@!gJJfxe7|;BHD5|( zzqIbT-kA?&RpwDwu4I<`@ab92!3;fz|GE_DaVL_e-R!5aWiQFA9zMR&vopq@kOBK6Ia1 z+X){YZcY6Kn|^=R4uA+YlNx(20Iw%pDWLxM*%k)F8o)jZ2!ElY0zB!=$3%WN0P`vFf4nh=C%})BtQ{bBvzgCo5VLl8b2RhNG z0i8-rkolf}hM@nQj!6uRI-9Dbjx|+sdLZ3J!BROou(%eJ-fPtVeei#Y4AW%*cZ!lV zTP!UyJ%xZ43J6jOviBse$|#>0l9d_ z!mGX;!)!a7TT0n^dAGB?dovWut$MGr?L5^be@=yiM(zo-lEQwxiv5sHae{>4zCiBl zE7ygwHQ%hp02{oiXpWfNE_2cCUeufA!lpQ2-{J6^vQ+nHJeQ{*@nG8n{wHGWZ%i{_ zlyhw6cd@Dzyy$2Sv27eheJFJ{gYH*XFtf5srKf*HkdcX0dT!Z8^`yz#scqiDEjTw+ zWg=M>p^$v-`YU(5+KinOdN9bJa{!%GSyO$%>g0AwzzXgZ>B?a4U^Sc7$PFld`l$Kf zxQk}QD_5V`f)V%QpuW64{>?ofcJ6nnva?%!+iy^}U6=b(7Ot{oE=IeHX-Q|!(pGal zhzM}TAIR6sU1~hYQeh5R+KM<X#rw9^a~N?l z>EjHZf}fq}*FrQNT9+RRSoNs;?jLE@7gi~DyyH8&q}E`Se>IH0K!(BdUa6&4W6%&; zWaEKFPQ|!etz#H2ZID3gVCG(AlONkp(}Llfv=V=a8T0lz2}T-^ zD5QQNR2Hs*^E2wjEXVp0U-Rz9T2*f+%|Ww_(C&BUribN{Q+)ETT)ITvZMGM?`#Y-_ zdvaaf8#6z>dnG|srDD9g__`)r>Bg}87$IFe3q9x3S%LL<(Gy~QB0;qP$WWZ`dv>gX zhlr}!Ar+HoVb>mfXzN8Tz2(FR=W+y&+tmx0KBg6|cD2a{ft-{SIO20u)K!{0>uhTk z-lIR+%vf-_DK3FC_kwlb@NeI8>Lt+zvQ*W!wYG#OVe=zE6`4I*I(9|(4B&h?Kb0nx zdiKVJweWm)TP1|h2NOF_xF*XKNi2@@oV!G2YzFc+;%7^8?fdLdBC3U+cTVF}5{W=l z{J${2$0I}2!>wQ!tIU&EPa-k+Fqp1${cQiQ>9jD@F{8$F+$TJ`l^l+P$ogB1!rqwo zA48Abhz@3s8M?Q+pbG+(hul-$6#iPOs;Vx+&DKPM_l>va6_&l)KkC+H=?-}3re)Hr zv!`RZ_m7tJp|{Nen*tyv&){5XZ6s|%m#b1A&73z{An0VS^rR)LkwcpClHeS&q-P_Vg;UJiDw zGkWBMqlFI#U{`IHurm+cli|E`M~cEfvCvMpEGt7BbnvtWPi8;re88nsrffcEUM?3w zD|(mLFL_;H{XJXK;2kP`)s^Zq;_wb!DQAo9(TxxSd#C6$dKSCG3>RKp?>}23vB1rS z;5a_m)1kv?8g7DHKopR9yqVewYI0Crbf-R=Y&=KCQzy>Qd&A$$;VZ{S1|7YHfrQbm z^E=)LdqT-Ar-`a$;YVLykr7sOkMQNsIA#E!$&0?LflUdD&pAp# z^aYRf47`r6`#ou)OHS9C*gHrr%-3#E7cl6}o#~u>M%UWfT7qDzki3DWZ%XzVFWRF~ zC0V#KMH#53ByzXZvV(}z(m|FtQI*;C4?SYvR%rnfsjmk$YRp?#Dlnr6=*KkZN82`z zyLXC71sNWv%-F09=J$GLCZ`PZ`WMzJlUnM3Um+exeT6^oY&9eLoEmUQ^a!o;9j7G; zc3{*_9}%Bwfiby1t)qnm`0fTN%I8?!N?{y|!+NiLQ;08((}0bAm88I!o5SY?K*%$) z@P)0VMZ6<}jaL_OLJrBMptDvt`dz$l; zhH`H*mOW;ytSeCx))fk`bX}po=sR3Gi#xQaA$V;6VM0=QQX2$+j1yC8N=$NfnYtJ& zJMyIiZQ+2G$R97AAo+Gvype^aSSBQH!P$UhpI!UAt=eYUE*k2S__tcT}{pI-)g;JiAge3#QJmDOA zO04%KH^ppgA<^xL-;vWxM(5;XGG*iv)iZ_TX5-BW)e7+Cg!THG(viAN$ z+gfI~z38(u#|EPnBVwGJ7v!mypOHlLKHIT5Y&HUQkD8@$!cXsl055AyEy*BybAt%+ z?YkN@#58&yR<6hUp2*7b0CGBqDKx)WnYc;}B4%5dsG(Z2!Dx;SA3xhn$-$Z~o4=VJ zFR;`=+u4nPDs9q^mRXg)to3&vcCFN1FoxjTU%0f_zfe=HbYst_0nXKMdFj^wBjJ58n* zuh4KXlbZ%c93e<|YS9+a(R+($Ek9FJ8v{EEsjts4I@>nU3h|5~C#ma)e7fn#bP z;-S7CTeA*b&{DH&M7$S5^~CpI^}S)IT`4Vp(UWgBHk+MpD?NrwhrEmgnVL-4coaw` z^5glU+lzkk=K=8jos~I`8@as?7$RiA(dhf7#-l8iY9p($w<6K8!3ndHAi&B&K3Eju z`eu9*i1C*}EUhnd^VzQ^8(koXB6`h4pHC+2$WB*RW{}_UT)f1+^guTLp*~^TpFP%? z?Xjc)2FB%2q4WaEW?I%aGhaiwz zS!mY5%6*;k{#(e9{p6|+uggk#>>_HZv8ptFl{j#bsQvYJXqpy_T`1^RK6#`^m}KSm z8FK|Oi#kNVdM*3S)kWYM`^JX-AFU_E?K^*Y>?tBEX9fFkRpDK>=hplM|9NpZDefz( z4lOGyt0~RZ7QXnK$V%lNIaxzlHP$(K_A|30zgh_Y0Sqio$oT*&vs6mSvDpqC5sMjw zj?nl0J^U+I9hYCosE-{oIIeP8S$w`|f;E*t=^OtcCNYxqiNP|hV*>D1v$}UBi0)~E z+^i(2{iKv^N(5|jVdv>fEFvGWfdPcQHKm!@0coq4Se!daQCZtL?09BF2b;^m zoxoSZZBC!MOs)fT@zv|r-)F!e@!A3qOB|$N$7VOr6Ttwht2)$ySwx`UH#klTE6P7! z{(sf{e?>I`9Jo{Gn#B4Qe7*Lj-F`(_aHlDNyfT2iRIX01laSYa5rDr!a0Lr~K^>-b zys6^JAImW|-ZtYS<@j*LhMp`g3k;%DElo}`s%rq?GN<2}V{tQcm#F|G;Rp4|k}Y*j zO~e24&56yT?a~E$RNpLVmBETm``U`QuyESgJ`N`D_QNd$@Niab%Auf8RMB27_rB z8qN5#Emy~ouXxB#<@mQFv)G+Q)nlYp(Y14>{no4jkmkN zcokFbFoSNs1EbMsFlqJNfer94vp@K=jUO8%J7M(k=GNt3)KBu+9CC0pTDbhNc3-o| z$h+6Tx^b`plT|nJgVXaQ{oTZZy4?rSQMP#-=SMwb{WW|Vmb)&nb8+SGJhtuSub=6( z0v%*h#%m+}y2U=(1A~6C2l%qXFn*Sor05f*IK~86{26x%wlo)b|1_9i5AJ4;TB9S9mq4h;F3(;l91wjqv~E__{t2`e1So&bg-%O&R&RvP5WDiA6t7liIZuv zYV{jOT0#d|q4y1B+JgdSPpzUJjZSJ+H$ex{l7{^~tgr6&AH=bsU*k4!#D5S!$tH+_ zZ{o)P^+^RWMke1y1y+tHysDeUnw=r~hME~$weACjP=6!4h}ue7wMMoiwH8z1!K&j; zg_Z5CG>5*z$)Np1)MRd$g2Jez(GMlnQj3l~KXImM{MFiJBOm1H`u$Jh!;=mY;VUep za)OumL;oGIVeIBJCdW+R4==$wJQ^vC=Gho(Ic_sG1FRLGdJ?_p>QrN8OsugV_)y^;SCwdmf@$&YjX2=52ptJSdu%XZLW*OhaH zI6t55tVEA5LGtyB#~h&E>*a+LXrHKx@dAy+eLGNDiSc$_EBD<#L>;+PR@zqQZ<1te ziA@Q;xHV*lJNd&me}x+g9h&V~o4i%sZHG38p0FZXz>VWW8px*@@qsInU`37lGt8LS z?Sl8ZpQ2Kt&&Y7W=>Vw50-va3rvH3YLc)iLh67DBgQH{pzHJEH*+2dRgJ`FQtn7

WuZMXOr`@JP_{d!&%IzQH42kb3bote(Ms@ zkYq$rL8WR7;~$G2&oaj5PDh>C~lN#_YB9oL~A(b!oZT#$D>!+;Rl;0rz(p>#M`&`pwP-q50iB-7a&G z>RC1w0qJBz)mObTnJJ?Xc>~Kz{D-Y_{e0 z_cvYj6DfOw)L?6LBYtdlBkHQI9LTMn`1_mw+_kj)Z44)ffeLdlloe--?G{S;i0ecT z(ON%>{)l&bsvCW96Es8nEre0+eD$r|UrR+@7+h*ZiE3_?gKmvhLYJ2eL*ziK=20f!{4gq5R)b8~YV@|8hG!jOsmnN^R`OFP(F?!U2l8t{AqM8V<} zRv;!MRaYPkpu4GH*|%acWBei{Hp;e-`VRGGXCl3ua})jU?;6ZBnI#==0i|}Cagvbb zDpggbIn2#z?%D9)O)N}PS1{P;dy|iy_%=8es`~i!b$m*Oa6pJJGSI$p8rpwx)V#9d z+mc`LQMq>wXYPFC{3X+EpW_Dh;i``gNoN}mGzsY+-}}M;3EXsf4)sxNU@w9uO-j&J$D`y6 zTx~th#{!DAnQI!R7kK>=KeVjZspo2P=JVUbrz-o_%1W8*NHQeB>7E?F{r5xniLCd@ zbyRs%IxsSr`gz9M_i}%4n5h`}4~p93RR)Y&;ot~=NJ8tL0s_+TGmq03TK&Cn1dnVb z3r$d$c~v1^V>Fn4*KZS9y1zd=IJXt8g+8e2G}!6UOBQ^Dih3gMf*;EBjgjYp(oUlc zsJuVnvi5JHW3#&J!v65W-*ZC(pMk7eKs|B`8)S^JfOss$et;6lyNm;+;S3I z?(5x8_O{HHw{;EWYY%I~Vz>-GB>TV3tDBZAH*Prenv85IhY<`Kk}{v54g3URF+AT9{2i{bw<~)6%d4(Cvfx6J^}$1JoWRfLwb_>BWF?G<60|8-FaA~MAb$=8 z=Dxc^eF1Bmw=pTk?C^l+{0JEBlY>myce_EOjB=a7K2JYIa0;A)TMa9SxlMHf$iW#i zI4}HHZR#yZ*&r2c-0yhhQ4@ao84u`;3S9+34g>zxhNG;KJWa^& zJNN(Eskjd)ptramXJG-vR07cZddK#=?KA;A`c-?PF$Uo^X;_-#xj@IE3B-n z**aTxWgYxneRX^Mq&XpP&N;&1+eZFTJV+a_!*EiQzDLQoRY2{?nMEPywpUwnlVIYn zW~_fr48c{zG%b0BWSzw_(mOD7cVB^dehmSfj6G46{E0;cB(8^3fJyY_ul?EC07h~Q1>9t+EAeY_ zWZ=BrO`L*V9{f<|z4qn5WtBeyCGa*JQ?Y-*aSdAng5!XNlRd)4OecOl9K*7`4+>y9V7I~*e3U0t*FNim!rMGo z3IuEKgqRXm7WEj;YKn#O%UNJc^n>S#|GX6ia%MWvp|Sc_Q<(^Z$N)UdgWsQiI}d*J zoso0;Z&~l(o*nb3Ddy2$Vqz>|I|cxa;Jw4}$W`T+rhwY$M`?&pI754g=>*!ksEid? zKoDk(zBB9pSBkr9ej4b{njl?J5eV9e>pj!oOb6!yIu5rw6^vcKpg4FCM**Whifdnr zF(28H2A@zuyT`Bu)O>T7Y;v0E6iSF7dCZA`(0p^zL<*J0vzX)+WilK=ZKruCqm_GRVYq z%O?zlSF7Fx)kt11zF1W<7{|`RLBh!_1AF0Wr=sr5wo=D3Fm&pu zq!V@xDwq=4Ef0k@R#ixy#SS|ui20>`cH;bwOiK9k*xDX{PrrY?lj>URZG#?VS%lnv z#~!O1wjlCvL;mgolpki<){Y%@gAIf5B-Xo-I*^^!BR`4PZ#9$XHrgi!ZC^hXSaqQY z5l|5{<;{9{zOpvO@ozk)U^s^qKC6!X2-CbJoRw~WHlQVfKHb~CR`V5A=h^Irako(` z(0M_&Oq|X{E`Xa3V;J6q_9sQt3)H44pD-u`7<5N`mh#u27>dX$wt8~j|Hn-e_fIMZvzw7R%|hR_`QE>0J7Wv5pR1t71e*OepXSK zqkh~FQ{~a*G|Et5r7Z`i5Hy{|WvB+UO-rJ?lQJQYL-U23&FW(kM*6oiD~vKOv0ax@ zm7Uf6{Of<;{0kxhynq1`y9slCq2n1)A@9DjN-!uK)Wk+O6R@MZ(a-ioNA))laiB2**JBi zUwxOkVgG?c!*(brSxR#4Hl&fzG}35dC;a!z!yAB`&JW-V6SJe-5j3FWFG)fN_ zKrQ71d1PN5TY>tzwD?A}&Tc$ScL;&o#8NFK)gpeCc$^mwBXS4l2A}a!1(7?Z!ohvL zn(3EG?AM1cRn$Qmp5O^Sa41(M^GjFq|Nf9^1gxR^Vxftsz$y6QdV?&2)boo&!eK$Ww!Vfv4qS&*? zPA=R49{^hDeiu^oFrLbVuZk7)0!ev|ycy1KM}ot195Dw+i&c;OVS(ACI#>KY$l91KrYpL%F=x+zQylgD{6@(Ix1mo zYA+5F=y8!~V|^{;xCU=`!efG}{DhhK0HZkj{z6uf21boqL3+4TN)!I_s4=(vWZT#T zwVeYSgjO$qbJovV9vWWjs`(34R>QC_A16$7*Xr(+`VBUR(H=G&%`ILZaW3?w?^6LF z-p7@MdMdeZ*I#j*o`xxg`|;&r`!@a^V%?JgA&5|C9yV|xX9W5rTYdwkr%LjC&?RO* z=~%V1*o#s$@NXOUGb#<5L?3(C1EXZ_2|ljh4X;UhEPZeO;d%TS4dZ5q#$|vz_@+P1 zs1?@&)XVz=fTC5HraE@ zv8T^HXTw2^4GS$*N#e?bE6+z8WoNBVILlZD$&fx3*RNjhDg%rv=@p-XYX@V_sJv7S z)tTd?iTh>Khc~2GBAX(@KdZL~ijNV8(!R;$xFN<{bcA4`r>%_taFP$Y2qFdU--oT3 zzF6T!>-$e3yV*ym<#H+lO*JTIYH3YUx4iJ$CPG)Z#G;>gr*;pw(Fq*;zscZIe-*=J zBbtmuRHZZJuOyNco8*1V@zo8vk^M7n0(eCNfBC2T_d#I))K)kids0kv8H0cMrZt?O zr|Ju`JOq|NasHsMRH^a);MhhKCr4dl2I=t+*ZPC)L_g=UNpC1AE#I)jcp4@ChZ~@r z(6?44X*Oxa=%~LxC>$^u>L+zF5}E3fIi)i%YGT7v@!#hu;?X`+2k@gTk4KGlG&FDEAM?9->i zR`ph5Wg4$&o^ZDD0ff_Z^p?M-#kArY6YjKvy&e%Vd?4vuoMCI2yiDH*?&F)dPd5!F z4|o@fO$$r_Lyt|(w2lx(5qmQbTmfAk7usT%LKDt_PF)s98>E1?d*xc};Rzl?0}xpC z@A}_=s0BAd;>JT=r3v3^&}GuNVW4zJ^4NPLv1s0y z9M_&wyV5@YsCUcd@Idl=ONyl&yUT3DFa^dB{yQ8}zK%Kn`t?V+CT4dAq#%5$O?0ae zVt~!FB_+T%my(cH>P{?^uZ(98!KOOwMmm1~jS!dY)HV#S~D zOvJDMy#~%npi`@HpT_*&mbXHmI#jiowq^itBEU_ zeqXy=RytcIRC_Ht4jb$V8yo$g4KuI18V_&tJjz@}9gQH4=fs)1@ihyy3o4Ch^8}1M z6Mi zU+L4qfNIQ1uEc`%!Zy!`a6Y=(spje;rK{J z?~8G-uM1mNd$2v-3Xg`D77D$~P_3t{(;q|Vv*in_3}fbAkcgAr1<^Vd@Ka168;EJap{#4ydJ4ea0OL#EbK)si12tfsux-)@e*ppfKQK&3L&mClh=I;3k55Ty-5N)+kt zh5l}4T{)T`4BFA_weX=-hHcDkUNJ zh!-K%y7>};{u!5*Jp}C|D?1wdt>H&r)>U*y=pl6*IX<(?J!ba)z6d0#np-9WAtCbT6CT|I;O z5fQl^E92>>%Lw6pZfTj>P`2(Hii7As2U`4qY%nilP2WWLKoRKf@TR)j!2gy9YO^9` z5IQ^~*@!R#e2VD9BY`>K${5{Z6v`U zZ0g-mwQ7TC&erXfo$eyDt_shgIx(9Y)e?Q7Fozh=@*1EmYq=xDn5zs(FhRa-^X7ki zyEa&P6|ba|?*ULZ2X6la2ycn->(~&Tv66B4YjciwH@|b`kehA|Kk^)M-58+bsoP>k zhrhwFb-scQ9}_7d#T&j4)~TBt;r@43z0le&Zm{x*W!!8kP~>R?v`Dn!SH5=&>V$D^ zYozSA?kp-FU+P#;?XB@`(@*VL%1XY3P}b@^#HWB3Yx(q35R#Z+di~*h+lT+h7Fee{ z(Jmp9JX}SEP?plgQb;UgIq@i(^&##Xzf-Cz=bCpnM_-74SiUsfwmIfGqxuD3)v zoJ-{!H)Olr4Z5fKYiQw=Fs;&dTda1xp~mR_`^RIr5B-c*)n>ug)%sex9w2RCSV)UE zzp(y?J7I;t2DbAi&i%^on|mySq(S;j_*PbVO;_Z_hS{Bao1MFQZz-rsxNjnVtS@#L zUlu2#B8=e5zZqElEws)LSr~ck2XEHZNKuO8`Wz7nl`tErz!r(Y1`M{p_WoZd z#+pI{wlw+V=y9yJQ`>!Pj>QzNaQYoyw972g5$5mwax$u8iFPNnx7O_$*#3oK+gneez#+pcw`!`@A@t^|JqYwe$gpGlFU zag2LS_28n`R=Nk-{^g7RuIylhT28!zn&S6zByEMU+p7%`47`2}0jA-Rp)Ch9Jkvj= z#W~9#kEEmf#+}x*?2pYV0Dq&_J-pDs5;?Qvs(i`yIjm4<;YD3x0l1OlqY{_@ab1bp zz|OY2xD*wD_eWA-euNH|30Eh&(`SnYRn5f)r#luelT#(lP|`I(bM3oR#zEWZzR#2N zwU!Nq-GA1&ThFl&ntz3K#QT_Fg&2)X_~`Jp&MRIf(%=AlC6*okF2oB>6{!H*Sxh#L z`0ZRvaH%oWwB6JqB?igploIWCMK->)K2odjd=b(!W=;tdFN|f>wYb_>Ukg}O%;>uc z!Ifb9&4GhReuK|oUFXlq!>Zs6r>i6U|I1f!fqzxC7@PXrSJ@=$soIpf7kAG<+Xw9U_;-=0W!Lb!1oD`Us%I^+T!bHx%yh>Ir5)!zS8s*ID7;le^<#HmJWA@>(mmM0b$)*}Y= z&t#X1=f7pE;*$$NgH4<#L%}egYWUC|muHd*l$$4NV!z4=zE^79Ci;IJ5#_^9oI9`l z_U=M3Rp=2^+eei9sKoW!Uhn?qF8<9YoyA*jOetoQ{`&GF zQvK6o$6$F0k5%4u)zf8`@~-R3uX~50r{xk`l@j*32k5-6$)OV5-IiLk5Ki~p zvl_@mz(Wd8=2_SFKJ0eJ2`w)D6{IA@C))j$?5{gP86G?dSl!BryYTPB4r{}?5x#qC z&rD0ZfGTf){;kitV?ZKhlG3X*;LJT}S&y=e?_FC-AWm+-!oJ1SnCl%Yqvac8Yrpl= zdx$_kjnEA$E{o`AWD?B$X8lu#EI3A>V4GOz{!h;LoZE_2Gb)T6Z);hR8_{#;*l{2r>_KoqHw>;!Fb|S$4_uJ?MF5iZXoF^TeKn6yD z=Y6sn9^DH$Sr^*JFA)Q;ri=+*MoP?W@p+-ay^}&WfY&B4ZbW?}qJQ5NyS}kii&3Z> zROLzqQFUE`;YKoDirFB>$#~wJC0i8u)$KvO-O34PWZGHs$nqlf(oK%E-wXYAl!fn6 zZWDa>?{{rd{_&6&j5WzeQ%qYKcy8hM;Ki~#rVMx(ow4oaNnr3=xNUf&a%{$!#W+uy zehv`0A4-L5?$nB2h3URZ)Vz~>T#M1lplg$(?C@`{I2>=&kMpJ&-zwSflk42r>}+;! znL`YRuq{UDYP=MfMBPqF`~SJ3C|Q}Vd}RWwP#9}+vD{EkH}P3}`BzR72P_zFgo`#Q zHhN_;F>}WG;k|aDp)Ov#2>*YKS)>%4EjU@qHTn0S!f@IK-JOIS^da*HTN*JOHKe{9=LM;#S5#E|uy}@;>T19-t`mv9G{$mZW0Hy4ex>_w>hE+10dpX1EY|xY zcLWWlSh~&2q(Mv&r4k7KgsM^CxpUVJA8oKs-$o-|NPk|lRcCXrC*dd#qgF)|IBsOe zn0`YtKxx4)^ z(!=YxX`-2icAa)}?=GRUkN4^H0&|UFjYXB0Fs<9{tmZXp3byxLm_KHJIBZNB-e6|F z&U`OoJ_s*$V@g#VVdb%h@PcBXm`VPcR`<;GtVS^fQGisKu>@940bq8cNu5b3%=F8 z+#xN4Sw{Tb)6*jdq1B{&X!uN5o5-BTEdJYiIz}@w&ix*0a;ltXCb)5?CLc8roD7b) zKhxZP9?ZypoqA@*?J`?~Vj!bjebYu};Yedhq9W%b2P=B-D@a`^gKmBADJ{ZA`5Q=L z|H3`^Z3K+hnDS!#i&s(G7d8Ly?aQp7dB8L<)d*zf-}2!4%;z8m#d!4T7kSih4)IAe zjK9L{oC=SP<2V}E{Ti@8VbtqU;UCXRpcRLg;RQC&uej=oa7NzM;bbTZZ23AguAuXi zYrLA`qt*@U!nVC$;!F4Gy_x5a??PKl`by4`b_6PvHMcMJh_FRv7J~_SsMrsjt_>-n%@2t&;%;c z+}ZWytZF!zc%%xA&w>UvwhVn^k;2Aj&$#OZom9TTR>~p~xkB|<$+DZK#~yvC^bsfd zAZ$<1xvI4_TVY4PI;gxmo;3F1&b{K}-uhyfQjEq{m->$G;%9L||G0q4Fkr>8@2m*l z{{E8zu#m#%%n7KM0K?w5;6r6)Z1Gz#FPt|25*L^H>d7{0}h75z(!)c`y!kSzshoA9V8Ff z^Nnk=>w|+POR>{z*nI9RuE6ifB*G)R3YGu4=%_v*C}+L6-HQy(1_g5V78LYR`R#w` zDt!j#js9pv#mg@3phP>3cG!i2ZC*aLaa^^0Lgkmt5}5`=J-#jZhm9_ z$CJo(;qgLUy2gVSrIf;8ASbU(swZ#$TW$s_w;#A!2Yvv00`D^>xU3&xbQpOA65ca7S6ji1|4B=|mg_smw% zb|tMh6H7%r;a%JSH)uGX_%h4Frh~5JKe4jS6#(uLm3F)fb9V(8&1RqNpa30UoSPJ@ zA?YAxw6+o(rohwTm_FrYee!OL=|cfV{fMiDeZE1J+D9{rw*?xQ(d^m}{q5g5k*cTL zc#yDZp>0WkfIKaRw!c2n5`CZC;a8KcLA^UIdH4I4kv?apoZ zA8zSCf^aS@J~CNd_K>gp%(lpy}Yj zjoL>V_b5p8{{?l}fVmw$_?w=gU=P7Jw*MoD=NR`OcN!!dI_zX(*RQ`$Dd zz;k8w+(1rRiw{5mDTe-^12M`Bch2g>i`*84R>!WIExl_BhIymI84zBhG<;sDOcUiF z5duIBTo*>>hksuSQWH2&>&FWe;DvvfR2dfly8fqy0wg`8tXOcH_7G#DhfhLCxFQzv zMnC*YjZ9VVTVOS~o&5;4>~tmC-Me=W_CKqyj?o0tj0xwciAYW68YUN@U&Eeefp8-@ z8k7Ild!}E2^U^pD4qN`&h|B_bFSvvE=)b*-491OB9|B|sbfV0VrIy96SGM*d##Sul zj8Qp?gM7+_w4k!*2+ew1P$bF@5G|~V6~X=@GRj?v48v;JP$hG z=+u*)RK3u;yruOBZ!=^j|)=C*q zi+Z`_D*q6*v>?rDm^I#<3a%ej23!HL_roD>8(g(t4^ z0LU`W5^!G!|ED~2d~<)X3@^f@nr5{pO&m~=bLOQ=>`_`ttuj6M?ebHvVzwqZ^Q$a% zTLg#-8atU)-hb9YAvA{cmr1Ddi42VV^3N@Ym4zTSeG$uJhtO!&AW+Y@@TwElWvD=O z-8CFkhF!$2LTqjx2Q-L7voo?^r4$-0_2aZ^0sxD%!yCZ=Hn(wC9B zHuj06{}hS+6TMU4RbQ-%7k7gf4_Von-)UUP+OD02Y1|+aI8`4si|zK~?9_|GE^GhJ z)tirZSo0045iU6~OOoAODa!Go)KxF^WfpNbI9$+x(W&shq<)r)Zv*u(m&lgd4N(-- z@}YrfkH)?Rg;Y_ zTlXqIx4K0Dy*K1r{xeHXx{qT<0cEh?d^}8YibW{D;+izQu)a<#LVW{u-_97od;ZwR zEGdGoKOL`ioaoo5fD+hSR={V!Z;MwSIGPc&+KbFNiVGN~96{2de!84sEuSY|yJq&2 z(huT~gf~Y^l&{cbG$aj=PYu#bamT+>qX~ZP^%#4AQ2Zc znE&CXS%%%u(K_K}>F*d-PQSP?gA-g_-!-G86pS6DW#{Hs!E6!sThPlt;a3;B3L&uP9Zyui}F?djO!PM+_P77z7!iTuV) zK}MH-~)JST(om>o3Sd}4CH{?oxDWP|fUcKxNI#Kh~S-`b^l-M)}eOMCXLHhx{6 zR#2u>oK<|&fJe%0)zrl=O-E)vc*&?(QAAf_k104zEl+U4Rb0cq@F7D6_(Y0D9oqbm#cvn2~b+ z$I!UT2F>ZW>;2Z_>>bPNQw_l>1RcEFV?6vB{erGHljhJ*m*M#SX zNyhM39I-PMdK8d;OJ~Agyih0uT_~P^I&OEIR5thWs0v+XDR(Ev*VGAqRaVuc+Ej(GljJ|h zV`kUNe~uTO^YQjqeg$;WR=5QZ*snhRcpX(FzNP9ccw~p;QNLs2>z@6CDuiSH#Yl9AyV$_I9l@&lo);aeZ~bepsxY&(z1ee1=Uvp&eDv#hY%??asOUS zUf>2f21T9q$O&7V@R~r5!Mt*Rbi$slW^kUp1!QCGSgr_K;o$o7g!NMqFjy$ivufh2 z#18N&Zj949^`v(mt8LOzt;IR+9>*ziE$r-<@^!M<*)_65isv~#m@V-~MStc5_q2l7 z7Ocu`BoZ3B*!^R5>5Yin5lL5~l)tq$w{F>eSx@zIgv?Ew@k`-!*8adf;EFDek2gWX z27E>r@H+)j2H;H|>D=i>FxtjALW|4rx<5}zu-OtepkRHtvo> z@f257R#knt4ay~k009wh>>H>9oiC7rT>+fk!I|6wsKSgsB%QWo|xS)l}`zKYro49U6o- z0xE(cH8*sLFgeNEUO^&0_BT$V8&pAeFbH7T9|x}jMBEnMwj>GdD&RWYi{=iNlMnd_ zY#XF1ocCh5gCCf;e^i_KxZE+Uo0MMOh>EEzm^Y^DoDR_drg)JcoS$PGUyy#{d-(m( zX2e9Q#Hc;^?i~6JL8~EDPN})6UvEO1gFdxm%MX>Gl{HcR4J*8=z{)&~YU3}$N}h}+ z#Nxv7_07;#e4*rkgoK%rR1?#WyiayGL<+4_TWlLd+^;Ek-<RH6tzcl-&USTy zUx#?>8sIC4@KIfaAvJnb1E>DRg%HZgqXK@7KTV+7Z+@R?lyNs*@?~VGyj)Y=rJ>3i zFJxZ_%i6Df^64c0lV7O++xcIWBit4P#R>kct%s~aekDu`M2}Kj;Crk#%m7UU6hO^g5u~Ws=Q5 zImEB?K(DY5W)80ZP;r@#E`vf+w^zT~#^WuU_LX@KErphQnwmd3WDB^ocH_}OahRIR z=pw;Pk#WTV87HCqpzH+#RfWG^&CKx%O{l@HPiP=zx~F}!ApNPfpX8A_hOI&V{^M}H z-9ocn*PP|DR^XV{KIBgUF3o?PneYlkRr2=o^7kO;<&~`#=gLf9sZeWeo}3hRK3O4y zUb|P$ikhs{aYUfLe}*5dsg_7|=KuAPBfNe49JB3^eoVVWjb2km>fjyq^u4GYx*uoc z>u380?(SQHuRtN6h9=G94v+mvejN$0{7~ShvkNP1M(|h-^Cdz^d7{@WcNa)-(5Dk$ zo7epX{?|Z3qH_rABH-_#9m2+6PkaTx(e+^aN?1}g^*Svr+3w@+a>2OG$#ed3anEt# zpA+^`@-Cy>%%EY@uWAQs)u)TdcU~a!zq5=rb-oM>CPWAb#B6HIO;1nfRJzVT*cwS~ z)E;odeGyP#C<{6#0ZMOX?Aq~6bZ36f&l5BtAa@T>hJp<8lX*)XI(JXcrq*scsrvfO zotM+m-`D z0Z!{C^Vx!Gsjfb4>}<{E>Mb4_vzEx(Cp>FfnHrdy*#m)z1o^v7kj{$0=d&sVq7Pv8PQ!zwG4{)Zg!Rv+ zbGBS4h60#a>z^kuG+G_&AKI7akcx^A2+wca!wr{|*rKn{w>vmuK0jsiFFx^^pILuZ zPCU{&WPED4HZud$&0~{4tB6X`D z%^;hXlpBA`FGxxhp#S;H=uhDQF^{%or;UTSbf1gzrftBG^a&yC5HDWixISeUaK@}D znvAOsbJ$9H0ppE%Ahj$MB*cCSO1KD9QdA0fNG(JF3Z-*Re_ZTOss>Pf$w*(Uaky(b;Rb4Z$_ z&Dq#^TEo!z^ys?1iQCUn8b;|O>O*|9v&EIEH?6z?v<^2|2J2cX)$c7FyPqZz@t1Ph z(|0Ed;ci@MBGb^}57TwgKI;qLa@baQG0H8xw)mp|eZlNt zIMp(`V*WL<1d}%FL{%9y{lkjqc&?!&ryGk+@_n>#w(~DVay30-HF7Qq7#hlTnwTWi%w!`z1PnPy*!eOyVnpVk1WbB)nMknzBK{ZQ6{>)6?c!UT@E74BZ$br>IiDF-jrudkNaopx0t@`; z=ag!|j~~r^ekEDyJ73#dK7aMF&dB|)tN$tMiuYov(*C<+O?316b!;ue!W&DA?)nEzaKEAHlu=_=u9wl5J*XE1Huk?COM zRJJWFxL)#J-WHcyVHBRVIsPJ#G*ysKO+f$d;TAb^K{8{fJZ^CJjbqI0+k)D~;pSGN zZVMzvRGXaK#!6=b2eXMxk9(`@8kgSE*Vsqyi9CfzdY--d5;?QB|0PA`R3TgCP@wL~ zDZBTtk>e*mUM|CTE>WGSKR+`1IZ24Ux2_S{ac@QT)}()22H8@Hjdq>gfYa)5IWC9L zx@MOi7a;qH2@p>3jIgJ`pu>RT$q$Mq30;8X5nj@$HP@`N)kt#~5{1xddbI0Ysb`zG z=Ulz`G4=YulsYFUSVx)Cd7qxVzBP{UUfwvHdyhU-aO`}vh_;o*Ri|r%D&h)t+5ByE z`JaQle0$)ctX9~7G=NT5rwGfAUFd<6aFQ z@tFclF=o_PG5TY&$Q`ebY)f`;IU&YcVX(s2uML zA&R(*UcD{Ec5ck!m2#Xx^}`k_CaRuI4vs2u{sM_u`p}fS;=Z20rH_k?%gz~doxvHD zU5MAGv}H?3aKq-?un&(_(4Mdn-;};{uc^+I6ps^NHd;9V@}}`46h*s;3o`$VUhE(#cpY? zNxr6{Yw~G<%|sZQfCTZ{O=KCMXr0-{xcFvtQ8AYga0BLD6v*?`mY{B??&rLpL>-1%G+wqkQ* zKfunxC*ibSK8eRPA%I}2jM;v7eny)CrBhgTd{THo))YyOfBYe1O|K};|}%I zJvR(sMb=WHlz3_~&ESRwB}7*#FY=kYAfkyceRk6M4dJIr(28lEibF|eveV6sYTM{{ z+z+tIS2M`*rm+w;Dtr%`1ES{NdLD0pO2?W_0u|KZ+FqRJWFf!LsgKL!cWP>yK4e_~ z6s9Vala~LauRcfYmT=B>ef8wi{Tl$yV~hy#Uq2z7lXx^z{6K3pS;X^><|9^!R;ZFl zC|CDG^10I%=hLOV#Kr})ns&vNx9X4baz9V_?C{SiNlk3+S)UeJ%s<#w+wcuglbCSr zd(NKBXZu>LL_H)?J+~&WG;qepO9EGyAW_e1FhA1B$5<{S!_(riGzW{9bT>3SDKM?E zmOu<;5bC&&MwR#nB;7+6H-dZa40l7-cmJ!0A_L<9veCzF8~a-|ZR7JFqI*91#>Lta zN;DnB;t&#sVg`zft%OQGQbEGDlX%iRQJi1g`2?XD0UT}67Ve1UM%Ek3F0VG_hJ1kB zXGclhebne&a>6Wo-|P1u)-82_UoQAuVH}}Ol z81uzQ>tMD&PSmrTxYW4#J`7o{+41U=bIeDZ)YH{%^v$Nwf|NVGKgcScbWnj3*@LmA zF@6?^EDQ%?tfagKF8(YM3;PZX@3B0HU|JT>PA}>-l@UPYhu&F7{GnB`PCo{ku_j@< zfQ1~e8f>Jqb~PJaNyI^zr)~83*Eud9yechcy3D0nO>L&>^oyA370Ruj!G;T6nIfpi zGx7yUp!-o0DQ=daAz*08X!)xi6tmd1b8zYCqyZ6!aAoM^rF1MOG60(>szFB9<;?!& zYjggv8n0H1CpqDvWIVV;ZeKH%c$~=!s?l z?ui4Z4Ohmgx%H=7;Q#}XhMV^*_4NxokOg-==JA7?0gACrs*xPQAbxQ#Yb=Ft(%1eH zV6yi^b91xJRAW8B%}CQfi^LRGD8Vu_w>>eI zwE^gG@(&(d2knbU??e2Qdu8#DC-MbG-8`^7w&ny!2fgeGv^av&I^!Cszv=y?d6JY@ z!Z9XmZ%{)#D@_|g#qc$hLSK3W^PzPNbYTGrH8mq8d~0Lf zzd+8`?^95BC}rfwBAVItl^7JVlkJ8u)YV^EVea@pWB?t>uCL5o`Jiai^0byORVE!) zXh2Ixm8ONhF;;rVcFOKk<){@L3whFqqEjLjfZ5n$e6#qQ65K(Ri^$Rcs1*WD5AY>y z7T-CdhQZ6jQT+?1GOG^h z7jWF!gh`B51yyTz;TVxW{rsc4a|yXQggsp_-;kw0h)E;A#6RCzHDNIXEP3mFrF zTKaHT-#n1qpWn@B}TP78iY0~tjLmA zz7s1FG7T|sAk3K@RAOU~-CE1PtweEXbC;nFcZ{)QB$Q_Q5?~__IVmsO7iS>YgE5M4+!0acV<(K_?GF|gY5~lv6M>-X4t_2O9@y~gryo`fB0>;kr z6JP=BLcJ(*Si+v6dJ3GOvg)*g;AwKLN0hXmtVX`x)k&!@=z{^rZmIT>ESd@5_c)pr zendZN4o{|`_FWVb%00YVwk-85d%!x4;Fgx?dEFDPYS)c$(88ulavUM_f=^||=C0>$^Fspj9ThlPw)PJ^t=trdko6k>?s$nCCI6OI{Il0NPSf(JhZYR1_z|fTJz7 z>4R<5p0l;b6g=KMGG06h1jHR>aW@S#gQ^Vgpmty+a^Bt&cF!?p4~lLLH+W%#zVU4E zNJEbGgN{kVvEK6$LM!~G=gJAGvdxMEu0z0MgYm2YDuy9P_y%E_OIhGI;%Da~ZcoxV zK9*1$5E`cxLBks}F%3gdn;RL+WnLyI=280yGG`&8<&3MrQpie|;6$a}3Z9CMBTi3+ z4#!Ts=?cc09F%}yB1G+1FOVDHgabUYwOX`sAsEz{lg;9xOCY54LW^5J3_L1S6SMwH zh|Qvebt4{Wico>Etf2)fh~rJgK3mT`1p3_`hJrr%!dW@ifc1c&dq;fqeLjo+gcmps zrVpZ}d30W;f74GhJnpWaa6fw|#5@7YhoOJfY@KcRRytJN@@wqY zQI2)?P;RK3qEF1yE{bG{a^FM!exKN$*Gslf?-pCR?Ww*gG96;u*x z`W{OD8plWP-+1txU_IdHPgX$R`6#w1T-Ii~Q73vWVK7gF=q@z&ao`QB#wS*%Mc4Z^ z+}zw)s8;&n506~qI%-(ze7ulygYkNC@+@e!dG)B3- zTy31+v;%k*2>%^x?ks=Zat!c$e{mlQ5JhbRsXI>&v*|~1y}i0V6`T=Up*!mZz?zLg zja<@zIOswy*G}Yy1b#Er6IQ}E6gF8T{_8n@ zefR3wE>Q(RY>7XQe*X(0J23JP?g8fkp@kgGK&+y@>14PdN!?@yQxK+Co7OK96xJy4 zhd3Ur1YAHE4;xg@$=Rdzsui?2JIeTK+i=*9A2sm(!2*wABvv@B;GvOry&BlnJNDgQ z?UwfqJVFdSSKVem79GWQ7uolH%+*4V^sRhx?scdXjQ$Li9Z{? zSV4a{ow3eE00TU5T!L_YDm8yad|ES%l5vD66h&!PR{tTWM_lRdL>F_yi}r{imVYIN zF%QcE%1tA`b_@nf{$tD^Xlu${uvmN|nQO?OI*AMn0`y1z!YpKPb1;1AV^y}Y?zb^e zP%X8cB9#w`mhpcU1V~UpFE+&w_5o#Qq>8{=i(B5?JF&VRG;|MKmOKH6VYswAV*DC9 zTrpX4Xzlp4#&NiG&dWxhZ-PP#I4swRSbjxt(Zf1G$l;A6)PGG01$X|;=L1=w;7;zq zJIC+76M(frH049!$94W~?n-r4)yxuYcTRM}q|_xp<>y}RgZ$`l=Ti5)K@24W0_wL; zLYowMyV7aWAU*vvVm9p!M3ZE%B6|HIybprwxAu8HEPe5Q1%(eMsw!66_SZ)vK-~wf z-J=yaS^eq*PqF;dH1>g>Tyy=WtKZSh+cgWV{bY`D}+D!wfA#bKmxRLBZAHs)D@2^f&FJA23>E^91@- zx4{cQ9E&$3vImouQ@*DZ*4kVGdLIBpkdUlX1AGdNObt@d^`Qoh%Tm0N@CHOcjaM4RhlD`59) zpK^QdqIUoFw$rtH(^{JzoTra4xKEE&Ev|dPN+I}7nsUC3W(;IQ*CDQ{w5Q^)r)!f` z#@^!1HrZ*R3qP7?ZuR@*jk&?E(cQ#siXBl;Id;mrlgq|X#6CWBuu%wcHP$|Y3g zp$nX>d@eaQbX`b{|CX`X)1?UJ$TCEtW4UJwaowT^mV=5C&B`Z)4>-wKYf_#?0U~j~ z#=h@*ZoD|*{`wcn90^>c5@ZkK^;F;6>-;oI%?#DkkcE&%YRG|U!h?gO>p$Ob1E?wV zBr1!%ZaC+v>&Aipso0ZIgSH0YQUgFh>?yGH!oXT+eXAQmDqakaf=l#Pvft2%whgMFlPD-B z8*~zNdMu4fyS6qyy2vV)T}a@5+)-zV55XW49W-1aj?>}$KGHT}NLI?7fywv`EpB%O zPa{XS^@o&>lWA+rE{giisZ)Msm-dOtT~e~CW@y+%tY)eW8eV^hB)kZ32BvfE^lS4M0q^K^_;km$? z#J?uJr1)l|Y$!-t=?v`+i!UgdPhe1wH&8J?C-@8szykuHY|-*vPwo*b&Qu@~R5cC7yk?9af6q;0s~FjhCr^G7ihk_M2MO`wgA}W0af!v@@H^(N z%^0B}pT`keLgx@j+URAINxZO;ped9Bs60Xx!c;{@KvN)?5&Yg9LD$5yF=FR8{-DmkGYxsB*|Xl;7fn>&WM%P1gPR;Nx~*ceh^E*o}8SZ za_`-v(FPVAhM|C0ad9bHw}oxKU&2`!nE~RoRiWw6txp4fIw6 zSp`RNXSo)pr;^(nxF?{ppz>ZUqNgWenIDu?-?AH$f&5fHlqES3P(hNOJy?krodhMv zqu0`J_{qW3W0cPXM)FI(bw3hXk zI&*7tLg+WNAUNj4*aa8!@)BWgTT142H3cF=jkRw%_l*|IeG} zdY)I$??u=3&3Dc@pY441bG|LrwR5Y1(1p1$Vzn{S$`m$f*0xrwJ}Mqvq9N2=7D`*@T{K0a1n_Lr@~BGI?P&qy8m)YRWUm>#y;{e&Zom_~|B^6_vH$>WHIfFt~Z@ zW99ACaZ3p|(J95C{o03DLD#XJrqvaOy0tzoKd(_oB^j>{VlT(syCW=8o~4j$ri{wp zOW*JM&A-&0Klfr_qI;e$88(&FrQ0j)*WHt>ZZ@NJZDBc0xfD*!d#`Rf*6H^1uYm#O zXR6w!mot>j&;eqN(8^;V8T3?_5{W}RB37@QpYoTLmHkV^Y8P;zJ|`>KmIhD^uLmPs zltXvLzJKTSIGy`U!6y?fa6`kMyqw^vTypzkyZ)0GhqPPZU#Iei4`K>_lm#@EpEk^4 zny#$_d&ukdAyQ?|i)6IT{qG)cch-1LeQcAR9r?+T?>?~Gq~xgvqtO}LSF#`GW(1a4 zm=YH>YI-1kAe&tIv!c+k5VX5Fn!Ed3zLk*VkmSvxlk8Tw%0=?h(Cw zsh)z!(U>Zad~0%QDoC1sYM~;hFPs(gCM53Q&w+tu5nrbcmr#%s%I>;<8PoXXg@N1q zy0-|>P#EBx>Kp1?71A?9Ij3|IM{ z;f7=`sd(PM>31$mxtI;SD+?J>>=aLWf<`np=gX&q`lX{!GZBPnJ+i5Ujt)etextvr#z%+^p*yp-%@7=ff6m|Qv$80;jae{IfTny(6?RY_R^#xM;j-NkSDY(EeI`-k+uxck` zeN&FbfC)BGn$@ekF=TbOtHHFS#oNy~Hz+3dA;~R#fVMO1nH2hpjr5J5+CQs?+!k7m zl$LEi$+qq36v{S)`Mm#&ZNlT$yfcLt;}P%HDuwX>+`|#fbrpeW4okY z;DQwf#eQ3?)k8Z)9jdICX?at7^>1*{XMQ@iBR@4{Cax#WOsnva%UN1HZ0B90e#jE& zj-^c6s>T7qG5=uXEFoE1o&K(b^ zK;KmN;U9Mh?evDq$N)Sn$2vKPUlXM0V;{Xbi9*I=4`pXwRoZcFg4kUq*8`u90F6Pf zz#RwyCfEytL6V&8h=eR2lm&Vxy)VDchML8YU#VMFRk@#+H}d%#6%7E!{HW^0%Z1Of zOLT(A1g?i<8)_Ywqd|M1v%6EISC~Auav@QdTlBoV4QR)qNwN zZTf)l*)B2880`u}kPF{Kkwu~0YLk(}J{aE-USWt#yHK}%g+}J+!zbYeE>Dlm38Vyv zgbplDabCeF%wL|w6{?|yX!Q9f#HQe*J(B@DYh>Qot8IqkZ-E~-s=ehAX)_I5HbKi} z<3RlxC&4Ot-OTT&PLR~7^l_zqcHY{ba^!yy)A{^Xqa_N;uNt+0Tcp;GY9Hfl4S?kE z3HyG%ie$X3HFW=%%Bx%B!uA7fihj@TB|DAY=>LRrU(NfTdwrzU0Qy@5KvOdq?% z(MsJr&CR(yAAyJ3K8Hc|JOJeYf~AP9b%nijo9V9%SE6(Cy&T#XKzaBwNHa@$8-ThqFYm)C0d%WAF{+;0qdBMeA z?C96mn+*rNR^ES?iY=V@f~8ety6}nhdcp~mJ0H#M2IPz0Wts|M!^Glpd(*q6Kq=Ni znh>;pi_d9QaOng%f!6;zXXC`(;4#LVkf)v8jze_{gH>!^Pa{HphuzKhn%kA_J*=bT z@73~r7f4JciY<1;fdI-SYbwAcHqU|=6=8X!v!>%cj#qu~x8@M?WN6!&>=1aONtuj< z?>ES`(-lRoFMI{xF)0_AxGbL(Ic9!7=WTIk?2PA7^U!J2*TxSB;H+m_@uRp_G)RP9 zE0_N^==igp3&w5-y(sdvHR01*1n0op5HXmMYV@+&2vo;8xd%2k2mF$ zWP`bqWOF_}W2nb}(t0Rn>$?oP0kB>LzoDke4rcWc5WiM-y;Ebv@b}u*x+$?E(2|4& zT6lb_o;kCqh&xQcbveq2A;0Ji)lD6W6cu^icDNr>YMQ)rX$m!baJ=?$4wEbST5i!) z66|1Q&V!PoZ*m_!^U!~(;q_Je^B&2o^|q)$Dk81UE%V)L?1}Hda6Zt^vPAJ6Lj8=o z4IjD7L1JJ%gQ`?!bbH!Lwf;*xEOCkqLVjOEQ_vOgC%#iX1ZYa(+)RMga56wCZ%eFy z4e9yTne!6dd~(cZvz53`4fkBu?$N5qG;hJ53;Ch9bt>oOl-%RcTE;a}+|&fL zYD(q6kvZ Ep4N*&)$}rnHc;!R!zpo#Qf)lyeJCXzmX&@mBr^h#}7^KN*y)9o4)` z^)=#*syEMo7#D-)WvJV)P%J)3dEB)|sGa zwvE10i+8vhz&&AQ=L!+cj)xsAi~%Ne}(?f-Sm3=3`u3OWo5il?g^2Q*-fo8h6#}MVfrHb$8Yjpv#;+ z#778OUMK2azm+Iwa5pti%N)qA;H2Nx!x)-JnP2xV0bdKuT$LU3se13N<}LR_fVMcA zQIs7RvN$%2dkx1S69#;z8!=-mfA8?o0cQd`!Y&kD`$rlN^c?w4Q%1%%d^S0OnflM< z#%P?s&Y3+)=+EyY5a)UZhFh%a;-oRqj#S&vDu(!GIYV2>U3?)qye`YTbQG`m5;`JTiK8gtoOEw8u zEXsAWlUHdTG+C`RTkUS{Ge<3c?ZHH~1jfcbDENK0@TB=dXVx=bQh!SeZ=fC%!E)fO z>6yRp;S91L!jG4~@YT(eli&iqQT=JApWNBL>YORJ9fhmV9{X~q{;1F?v64IBKVLdr zXjzzTrvVY=!`!18=2*TG{L+riKfO|6LaK7!k>t44e$v5? zW2|3psx-bX)z2`wtv}7yC^{)7cD&${WkUg4!2qp3b(I)v((EI0$k^r3>1(VY_<+y5&S25b%i6rk5zXSCN(-`#xv8#Xf(Ri#dN9I>lT?|{bOH~Q2St(g19N42f= zBuWE^4fOiG0LY$sB76c0vKdd*Si&8W znw<|ShomD0Zr!?NimB}3gf^e-r?<$V1#(}#=6a`jCAO|j3aerm2zLo{J|{LZm|zZ0 zjTowc6I8Da7Jg6QLu-N@*)6mmmoenK=AVakp7hz7f9A66AZE@HsRtNl`YUFa9EjpCFN7R1ld%2*E`56V^r=3|==N$YxONnzozZSu5NGG4iFrua z-pPx^O!Mq8nECB)tDb9`S4t!AQps!AZIt@`68%KH$9Gck_=gYYp3!l;%OdhYMC_{u zT3N(<-$t(bF}=-eKiPYmJR!@fr_{zZpsbuwt>}ZF2hGSIPwA0Xx$I0ACzs5FPyDUS z>N(u!0-E<6e4aF=g6PT1Q)WXYy8EwXnpZhbY@8ykImv*4)DxeL$7DV6eeE~C>yXL2 zK%-AIs^14~oxfL8tEiCZ?DwlIE6?>gPu$~FeJjgwaNouESIjOlU%tGW_B!<7erASP zVV!hslYKG551E&KkAuVDfvEYQjgFJzg+yS7>S=>D9{kJ6`;N zdEP|U<3Q}hrymqj4I753rFc%kG`mZ`WTpXBREH(p)x~k>yx|VQ`1i%S3lr zM$~_vN!fK_9FEb2@{}I8oJ#JIgU~4#G4&4BXG2CEsv?j(Yrft_bBLcmcYexMWsHT0 zkqzT6g}Y>pao$)QdFKFG89op>@=Yz|d11?i+(V0tBV*c-pkEy&K4qwd;VGO?U2eB~ z|3N35)uNinXuFie%h&fLooHj9IliUpDZG-oTP2|ZXK*iDTr_uUejc`>csPYh?s2BD z)rr2b&kcT2D5^%A_8*-h$q@2LbVbt4j^Hz|uwL?r(>LF99lgiSTyr<{y(S|Q>%J4J zX&MX+`7HOq$HBmVUtC9WLgG*O{hsZXKuB2Art^$?2fh%*6^JOgTVzeLkO)@P%43L@ zkazRJOsJdW-+Nd?!&rM+3`}9OS1z{2N*?5l;V#i>!_9%Ut z!@*%BGN(I}n&Q`I&Gx@XKgr~fWZ#}~&ncHk-Q!Q# z$Q4T~2>Xg$Ok9^0_v(;^y?s0^`moh}m48d+9IUwvUoTqt^nKG`5L(k37qMK{G{i0EJ;7bq_+6Q!eA|Rz% z57f@-@SlLVzW#WNW*D$1v}t+D^O?CkL|jQY@Ohk)Ce~xv1JQV$;G)l-U`ieQbOw=n z+SZ!wLE!StHR!Pt(dXt71@SY1qvkg65hoj>O0c4mfi4n1y75OWdw2LbM$mWGsPs?w z9=MBD3kfzmpQ^*S%v9cf1&}x0~pIPBgP}3169R zpQYC7UeL<7zSB}L@6{bm;WBr#Wp3p~p;Iq+IXwSbix^DH98&4Bij{Dyw3>?XQTbrIS79{f zQD!`ce$e7j_V7RjF(=rqYC*Pfn#vO;r{2;5i$+kfS>3mLa~)9&0+5u}D@X52tp;i7 zDo%gXwC{tXOXl%1OIKX0C>XRhwuLw*ho8=UA~stNDHV92`Fwqcg4-Pjwf1B-gWVbm zLGm5ErdZFd=|cSas7_KOC#8R{vh?Q%I{gFYb>If5<_naEXXFjzvPH0+=pH_ZD|){X zQJ)QLQ>}8b={6ULbEjM65RSw!Ls?xmFQ(LHpmkm6DLO{>St%aN^^|&F-1}hS6YBxV zz?Dkpp+1^Hp2Sql8&s61Px}Be_ zOdbx?t;}eYr++NLSWszEL~B8WJoN_;xkYK=3vSdwg?4djh0auS!1dbVxDthosh1$H zc(~ji<7`aznC>_e$fS3n8co4_j^D?(hnU-o#6z(r7no{Hj$962BQgVHt^g3~+*w1h zKYH<&46*?EyCM28x^t&>W2cJTI~?CknM2A8YhsC-%ji}7O>|^lG%iIkAsDYCdRUlgt+`gq)Mre?WPmgFT%_}h^kgFkYce|0`W$P3{pJ@`2i zRsuFaIn?NHMn}nf&d+=^M}G(F?)8$u$iY%Ovy>u~S3-}kU}pozOclvd?+^-FPd-`jYr2o8DZz+?o}yKgB+5{C z{8f(-shu?f$5$6#VH#htOe%dCnEv!bM;Wc|T0N_Ro}hV`JCwf`A2D?d|u0O^~{MpGh#H8e1bP|Xj^{rM#EEnPj<;1Og=rOP5g0x^A4 z`m>KRecZym8Hz?xrIN@=))Z&)ic)v})V?ux^o+~Td|M-Fae;f5@D7glPraU#@Uah+ zd51cdT$)^``NEDffj{HkFm=y0Ve}*8SC{i?q-@$^PIBRLB4Okkj&`n1*F5BWhN9ND z((YPw&8JI`<8ZcJL3pZykHUlG z7BL}U6~yt}9(}i=fmO4Gm zO{jv^0fnwa+-m+1DXYaNQuFDJLjnR=^wa@m|>}Q%d2^h%!M!lAOUK%1^ z7{Z}v*m=OE3yMijP0(VhfvMkO)8_SGLiRZ0*m|$L4E}{E82cS;t~89KPS@jQm#(;s zy33hDgL5Z~2rWi*9!ZKpTvGL5U*R08kZ#DnP@ZUVeKA=~n*jJ%kLwM=J1?T$9EQI^ z1#eG(WSPd|T2^kFTKR;FmVA1v;5a#d*KODhL06kv;hf?28zxExEj@HajABIxB|-w4 zVxAQpcgm{>2`Q)xf!ch$FH|;~v1%3H5AU)6?JpooZ(>7?duGh*@2nXiswb<}#9Ie^ zC@vyL>nW!sxt5BrR+FM0VWsrOT34wJrrrLi9Tj^BtL~r9b$j7?J9SeL$oo#TNku9; zX!R8f5nEkBeDS1Z)nPONPLEMZYFOLQ{-YD`pbpqGh^iA$L>C9d>(b{$2?bYu%2rw8 zD6RZ><%QuPxfy)LNTW)!WIZjAJyiS1^%U}c;G3mTxl{Cl9EUV(^Be8xO|~p=MLn!S z1RK1reZp~wV}9_HC8XYBua0{@ec_RDe74ufsRe-_x{puIMtlAC&=~0_Cb+#eFk_fG zENdZ>9b%Vz{Z_@`rzgJSo)iH*J`6|Kn!>w`CTNVVWV`Bom<;Ok>f-JmZsTprMpYV8 zef@Re!08gL{zA>TRoHH}I7`Pv5%m!j(+c$=pZe)F=LeY?+;_D0NBt49qOwp(X%jD` zU+9mT_xWonII4;8(+UO-B$@f%^2y-^Y9z!)4lRqUW~#BL>1JJf1S$2-o=bT(LMECo z-=)l{h!dyE5{4HFBBwjeT_w-C3robo-fG)ii@O&xo_=@^1Vy92ScrPiT_wjeQ~Yh? zXswTp`ZAeZ72H;nR~F`@1*=ULGcDa;U6!Pd$<2*&xedQ!nbwB-mL3n|3D)W~M|{@o zp%4*t%cO3_UsmaHBW4!qGTG$s8ocktB$Oy2xv<)qxFpvL9*+hJj(f8m$0s2^_WY=Y zjSsLfc$7h*mrCzN6*ehr#G9%eg^(Tc8wzR^rWT(B{WeOSnk_K13X$VNVJ7%_1e_(X zH!-udTxHbeUe7rMD*GsEbv(R~Vv57Y%UrMMvAUq6w6vcrf~)QCPm8v4vH+T-k; zlq!x3lDy_F<2_|n%rzq`dt~W`zTLJf!g5~C3)7-=9}hYP+Nw||+sc3;GraSiO@mFZ zWT~^*G9VaFuztrpcp!pw6$7s)JM`FoCe_f$qsxT6yrx^$q+o4)iBM{S*m;@W&0YYs zsYSt}qR&AH>cgks2T}>7#%i~5m{h>LMS}g$e8t(Nn`Ojl1;L(!kp+|UhcOn1>|T&g zU-W>g2Yzy1_Eb+`vknmqi#&2})`9dqjOWFY7bzZL^*miU-x(V zV`BAY1*e5}{V_tJs!Gho5=3Y$o5X^1k)sP+XtvDjWhrSOQ&|RHIJp*5pOLDGj(?Z2@BowM%7hnLZ(9`F9Pv< za-p7ZM#>4>qL%Qyx8K12_w*7?%e%8-NfEzQwMgvoH~7ZQhy?hpYe6|rZ-V<> z$!Nc@Wb(A<_-ym#m}k|KMnO#`@eA?;uv$6_v6|TEENd?s^RFB2S}^v6!nu6n}nl>7qx&IQ#6X#FMb`Q*5F)Vu`UTrMKI^{b4>qi}DP+ao}gGIteV`4OeG@ zpH|kHdHJyUNvGVBi!Q5!Y#Nl%zu7SH(CN=;=*MW@k!}%fSbXXmNvDucEJqry&iUi5 zPxD&cM)$Pn`wLP7Vj!ypPnwgLq@cU8lLV3!)ZQ3XzI+{>nrW{L1Vd5YaoyGL0A7fh zm&L;4b-}o++I<1lxKo_#kq_p!rIfM!7ikcy9_gD(Gz2N7n9n~NE(beUK!W~;!lX45 z7Oz!{2ht*Nsz1KRs-`pAs9gmCu{{tq*}1WI;eTc{HUghJZSv?4`IFvib!MCsq*z3K zjcSY=ZsL~^^1o2e-el^WOz7sXmrw5f3(^I><|TFp1bg+iPK&SO3D<&uH}IFp1b)!b zPlc4S?Yzjw#99;v%$QOwRD$hK>>>ri>7?7|+b^waBx8fYXZ*dpLbERvEuY`V0Fq4e z7TRgzKnsBOz#1i@27Bpt>&YI}Nz!3(zXTULgqmq0TKH0QlU~ z`&xgZL|_P^H2 zteVCS5}S2*R1Y&U+C(xV9{^Cfl$my&P))N0uuMt*Sl0Z*fkX`exZ=%MoPPvHH7yY= z;24o@wMQSQCsoz>14jUT{01LfUkh7P!O-9vo}3%31i4dp?sL+YH&{7#39$0R|5*7y zR{lTOm9d9FUN1w_R8LYP>S$Eu_gTUR{+s3FG%d|TV=FzI(N_8g?+8^lAff~JDs^pI zfym$0o!kj_z!3?snfd>u2pJgF#DFSr^dPURT&C-qHa+}Q0g6`C_XS}Kh=qjaR8axg z^syRxQwPERGqXG4a~Faf1sP%4)gxK!8DV1`pfu3?JHXes|I`Vr7*(zoxJCV1aCE<< zpt3w})lE`J_h&&a9t0bh_>M2`mSlc zhCCW=5o?$5QTS#dDp;gq(r3^{8fD2S2K15ZBU?ke?c`9}Be3Cg&L7cQS3xcy%yf-L zcIs@vq{leNPqB{brg|?LrxanWSnR-rfx;-?qew>pP4>BnfbTyT9Rw)Gc%I|l!)(yi zHm(xy%)j*3%*J0!198?3%=i=~|Jz9da_L72CI>bkTm}U0yJgNE-GD zgmgL76#eK~n~_JQ16+P*rdf?E6PjyOKeeM=Q*L{fy4YLw$M!1Pzw_=puNzwMsC*)ZNm8v>se89 z3Y$`PL@ouJS_V(WO~$+i=B`zg(XC2aFl@5KA%eQVXL%pPAqc%t-`iw}lHb(Pz#L{v zrv#|2Yr(6@HIY%1DwOm#U0KWGm;qEivCf;RZ?wpzU^mETC(0~ zO)&f*M6drv>HFURxyKy&)9A-FxM=5AlMibly6=D&q7Z2g@aewX4UgpZ zA}5#ln00kUuT*C}Hr>6>HT^RHpY#Vt4jXV~?Rz0ukJVK7uJ$b-&uD3;rpCa`L=U_T zP$}-8eB(b;tsp2jOFV3u+NQgl3n_&wI~2VFn_>@(Wqgu>%|OJ61{RTd!TyDyV$P0U->@uVluEm7bm7|ry=!J(_f0NJ?8I4N&4lNR^#hLF(gbI) zvr@5{%G9r-B`aD9_K5}09^3_sP6^CRh@gg7yqX)J2svpp%MgRw2<~34niu@N0&8=<;sO$KrY1v$5r_o7mLyqpn)5@Pw^=Xwg=QZ-rx0U7tIND>y{iAF>Rp2RS4k z3WY~uSE%{IxIQ@zI0`JWW4wkht$f78kiIq#HL7}81kk|{OU zc#7(o-~~jaHHr~9(yDo-!*?va=_+0$>4!&~K+4!jMf?isE`PN6;r6cVWQ`5*UhD!6 zh;drkruX%i`{W7Ud&L>DVFK1^uE}z?;DBhzH|` z8?fRH{qTWK+%XhyNegjWvw50$zj;0T0*ZXbz@^c@*!3qL2x=UnGfDi>{2xS6l={gc zqDTMY_+nCCy##zfvPETX*q9s$g3)jG*3?B~YvLtF6W}$P+5WZg>NleRE8Q`QSJ2-L zL6vW7lyaaPG|RsK5i5rA94MJDII0}zf6FtOxp@hiyaOB{MguW4L^FE;ZVlJIv+637vKX ziQGgD-bx2m`=sD0^KKYw2TS{dCu~LKsf@uGU)sIz z^iKh`-hyFjTyp{MvU?neX`sGk91h6)hk#-lad~to;82WKnk1uJ%`kg{r?7hj--amyXa424$_TAz5`76_P%fW7klx9cXmp78WAC7+N zxKN#ys(PQf;je)fe#(uy)Kpm9j4>~)Wl&(C#5*ovRT4^~VTXf>)-q4TJ{V^txh`k9 zw%rGmdtouSmf*WzRni||uq!x2ac0OLPiIS?zjdItD%4X?#LHHBI zfW5h}=As)JnQ!Q+Y_^wicG1n3-DW6abKz5qQ^ma0$(a!g_*efO6Znf7DbE&EECmhZ zSc_0KLm-3&NuL{@pE2O#f(aO&j`##no3H+RZKqy8QaN@* zyR+KL{nuqfD=*-pq$wcdtpd)G`-3&6%ZEDq0?El}r9fi&Tyczv#)NmwNHR*t)3i>q zMYc1`vT4JoVVVFzL!Ls`&UN^ahd6&q)bC9u1h2A~)emUI#lEUgwh9@iy!0C$D8ol2 z1x$`Mo~qNkv4Y!U2Aed$DJVyNi+LG8qEe~Fe(p@HDvepZYUX8-(_D+rzzilj$6~eO z_H$5P-RFmhLf20Dm)S>2M?KBMD`9g6nGahP9oj2VI&%Y!!Xge|_xs*>E+8*pKnoD> z{0G$pH1!)uL(-|!%{$2b(Ja#y3gmt-vuTi#i{Xgh^U1@h&Z_!wI2F++pqX;)Uf`|u z?C8D|`fy;f`ZcAmtZSK~XR2(8c@q}I{M(sWVsp71DE-R}x+>DY(J0e`BKTzZK*G!SHPN%-9WI!yn+nK-+AGq>M1$#8}xSXZ}HssdVmjR>qcetAGV7d-X6a8M=+@KA# zu=R^dE|}(Gn|Ya=qmXKvIkGG|r+xprE(q|&lJPvHEoo~}scl|gy|0Lu}@m=5J?T1eC13X zi5y+%vP%9kC=@suk8-8-o4OmELS8&@!3JmPHEF=2H$d0c)KZ=AN$bD%8AwTzYQn*l zj}g`a`^2rgU=qLR-bIsQisTAhG#ukF(5SF_2aVE*Oc5z;Iw$Yd4DOkH;g#2@TsPJz zLmj&+)pVYAyQhq)M}06{)~dy;MKL)uCE#R>;(}dD@Zz{4ZTNuy=(y0_Ew&)+(}6mk zW+^>cJLVC|!V=LD3wyFJeIclK_p^vUi3A2lmo@KyR@Pb@+RYAFwU)G&uCmwsc36qA z3zX_6#-CC(MD=R6RB!-EwigWwWlvSTSSv{+>{>U*T%(lU2q>~Q80jfLcS!XYZc(1| zP6_%w+e6lBrM4f4#E-;d@ukN?V$#TY5&7g|{u2H(t5r&x(1p5-8)o|!7uaCEyV0Ad zE3wANhBYKLMjs~xkyb|(RFqGE-icm^N=`aYc}sEG{7V%*kEW86?sL71na(cNj2{x^!*<3KY_0Zui{QyN9OcePW){B z_PntD&M&BXQ=GvYdmZTG@|8rN&Tc8t-GJd)rF9F2SSs_&+)xiZ)a7xcr#cHh;4ie+ zhhpXTi&DAt$!iD`Qa#tzqO;t?-hwZ4NX=>*6)Ox#nm>)OK7G-R;sdWkXn!*gvA$%( zvhMn-rcHr}%Vm`nvf(~Oi6#y=^Bd(5O6S8&u`(6M6XkG9)+l{FmDwwM`<;^df`XwY z0Y7dcnGZJ~#am73^jjTF*1wD-jn18^<4vZK2g)jBqf4|Uzb3Yt6txO5GVQ!P*snRz zJBz2>(QH5!#LP2tuW~D&hI7AF&jgle7U?d=Psh0Xt&r_o9_~Noh~nT?J}I@E_c_%5 zXzYHe=4({i)l(Yw842p0)hQl=7fC1fe19fw{;8+SDp1<3k{)0cFn+&sxj_Wfok4|- z^u&J(-R0ODUb*y}-TxPbbK3V_89KD&UiHup+#$sj9g=<&OSEF^ERL$cTrE*zlNxh% zgXc#K*R+sl#nE-zw0>b!(J9a~ThLMYJOdo=_`>N-*``ZRVolBnDNR=mWmqglwt3Q_ zLiq5m%)aU(Q3eXNjsASZ^jg-V3eXWbEcW zcT%cJQ4;*~%HWo9(ORkS;iK?78tgTj(xj7Idg{oS1oC*|pD#jZWFc;o6 z7f^>|7rK{^!q5Z6^2HF!)r*d7Ue;I%iaAl9eW2k-_lO@M_X8S&t{6%`TpRYml3Tz%c&;h0C5^wuaC5Ivrbi5s4WQXjBXT8LZ-3DBLQ{SSaAH7e&Hx?uC`Ib~7!N@e9-h=ftC!D^iZEtKCr518aHYTW4c7^2q1IYdX29&wZ7|(r-5y zvm)dEI$apj5Q0$<@_!=`n05;co7b_4;4g&V`zmlYWyK7R3ZFEeYd+a3ge2iz**t_+ zO_W1BI>8wa^DdFZtW?2mVsHUivgFAus}K0;`Aca`Uj&YbBR$w6uw7CDXOhNrSs#NZ z@0IHIYa!P3YNJJUaeVw6ChW**j08>s6^VNY4^kLezAgW0Onu%fpD4%oRE&HE=}e)$ z;Fo~+l}^G`WHh^3N|?|ir$0JTyz+B=&)EvPu(@F6M#?>#?m^(Bvn55}7j}NV+ix_r z;Ri6W8egj6dJ%g>eJxG1MpQt+#&1xC`jgyluj7KhH*opF^ormQ-t8>mYu&{-f`26{ z=C4=B)t9SZcx=sIO$%WZuuI8j@x;6PlN7x7Mpcvt;(eEmEZIyedhOG^Ui6wI9k|m= zN<2}lGSR#lVC=hf44ALB-S;nTIw&>&kGAQaT`c@4C!qc;cVb17US_%rJ+V#q0si zLz<+CeYmcv?G1ZA8RX2yAN+mspIa3fcj$t0y%|^Q-HvFBflz9>z}Cdb3{W+b?QlQ+ z;GbHgmBa{JbW31XY_BWV6hAVNRL;9S${r{M+1`im!u~aCGqb&=D~s0ZiC z@W6|ckO6mWD(n$QoUE;9Qz5kvx$g8fe*xCS6pIe=4TTp<9L_M3w z5Wm8yh;J;WRv6bXt(E!giminzd7r~TFo~z zqj>wxJSedD>7C8|7XYmDr$GrSbaNyqV5b4JkV~%rGE48)Ufj9+UVCf(+*5!F$sY{Q z{1eo)g8p^D}e(3Hcac>`R~-% znv5(1Jg0?Tv~4EGw#Nj3G+ChP_7vwqUARv*sAR*H+J0dSURZp**degRfX=nrcJsBY zn14y(t~L2SBCzRa0tW+d&!YQP$GOeHn}kqR0|eM(3pd(+F$7}06sGO}Z{i;Sa^Qrl zEV1o3GypsKK;!r}Hk;rof!`{f*#7%5z&qCy)#m@=sxWwwH<&iDQSw#|RV4s2n>*wf zYyC^GnSo%hb@pr#QCI{Fo@|{svWd+mA=3B&0UqR6Z1WpA3+nWGjQ{-MT8|e~%|d(o zp{+N_5CA)sZPa@k&rJ&OfZy`$+y46=fWPcMT<#V?o9G_|FU;KaeI9KAmjl8zo!H>sa@cO$c1<1+j>+U zEYo>ZBz7a7*&cEIB9P);Z{DhJ0)}i@8>~!ACSAArZBq$)RiZaH zU_H3$D@d~0w47~HToH)3n>rh+>L z%#bTyy&caoL_?Yz@y;8{N%n(dL}2`^G^3&?Lh~7Z3od6?Egc z@0jgh?wn<&dvARX#LMz{m)$e&s_b#Z>}U53;B)@22kj^e2B*W*6<`@8 z*_}Tmy0#VIEp?z)who?cs?ar)-Nbj+EJ|qS^#(JzqP%u){`fL1R!vm~~WwMtDk(U`FXQ zsW7q$r}xt#ZHha_j*67|9k8tpn*@QzF5Yjz@h=Ne#-#l0?bVXx!t4SqaHOE94Gx`k z_G*gPb1pVIWIcMyXX<u5~fk?DP4TPj>bTqX3gQ_F~I9N-)=cMs`G)-+cdi`#JzE zEekjjI!cOh|ddQYae@Y?+tM8x{nq_-W(4afPGInq^a z5H3+_SKKo-+<4xzIAn+wLDd;$+*(v-t;=w{h9L6~>{M;`F)POmSMnQ)vM5ROx$}O) z?TM;9|B&|m{MIj#acgl{qyCv~zkEXtv>Gz@Kd6}#Ej2Fgn|iDK2iNu&B5|8qB8?5` zEuFKhTHA8A!F6Nfw0kvpp@bVvcuqz)bgyQ@hp>^f`y^TH)n!63z9-C-v zf~4BZE{gkbd_IP6<`NNWT9NV-#wxnvLdEagTsgGH82ICvoXxN;4sSgK9~v_QKc6bh zKCsQct9&5%*59J_*2C`mHNu+oSi87-HyORm1h5HT9oa?R!sp#uA85myY`3l1Hy)6q zoMSRfDe&hU!*94kq%wIws0|#OQ#UiQPPDtrk2-G_Z@kg)2bM}J19WPV=6S#EBW}{k zGOc%CX;_5yzZZ++ z`+JL;#{_^K(sxRsGnwGjqfHe$m|{*%iPWI0<-%gfijjk=4`ngf@}k~MU%9({F-AVYGB(@-(ueOL+k(M+K{3D(Q8w5 z{y&h3NxtccdCfyt3$8?!MK?aT^RDX}!ASY62;+64?b`Qs;eDBwMP^K+;^oByr0cmf zQ#47&QJD&~fYbF=nmk0}o|pfz*;U)v8>OakC>9|o-y^bdVo0g5wG9P64tjsIJ@rNc zvw?9dO04-YG_cyQQvW;Gv^0Qi-w|(QSoF)p;TQZP!SK2htV?wbC(??c(NaQCnR-vn zIL(4v8e@m+unLdv2{(=jZy&CGW)U18Iy#ZCz1enFO3hcE_^TveP zV@@o!@>BW!Uo~)d$TBirSGRc(LH;u8lJNMTR;cPJCRgnO%P0gmz-EHUgp^L4vRI|Z zLaPV@P?7qusLGO?JKbo+x0e|^{_+#357*4o@f;|XjTF~4tj2F|Q=llB8M8`~I$0unS2SCL8N&~sCUUK2&cfb-bk3puOZd_b*%CcNMq7VBk}hXvCQGe|&xgA-Ym3rVljX%Ac?aw+C!Se-(Jxs~ zjuusXrmO=Ro)QR3bN2N6hwByRB%VR>N0Pfok0i^DCMpz$^CUliW8d^tDt_v2^ihXI zxi%d$!D9-n=Syn9A?25Ay%AF%ZqEH+ml&pi21_q)ObTLoTyf#ckpDcAI@cOZ9!)=- z!h6eMK-V)QYKOc%3rCR>@bb@kGmf;hMG8>dqhQgEv38xWDykIrpU~$+k`6yEc$7m+)*0j(#z9ydR3_|rfStC_r4LN3?bd_inW+t+VLLTDul#jMZSJif zN%|5f_D~kqYtON`WV>E|+%%D^U0}@8{liz#;*W*Z!{V`lD*4`{=C__VRt#QB2zgMT zwAN*@t8%8V(0{2qaIQuPj$cfoC-u5k@|CQTA1G4ijf{2}4$O;PoXHxBt2wQ0djZ5V zx=3kxx}v2@{miJSfeF}er8NX@tUq12UO;T%@W_E%m)9URc%wd2&PDHf9BklqnJFcJ zRDXOq`>y9QuU^y74>toRI;1ogwLD8{ND;}U@{2&m!7UDEOEZrtpKl{vr{9}sgw{M` zv+(~4>vn4C_aa-u7kpbJH61JXWy!v;yM)$UJMsa8jDGrwde@;(>9cJffpQOY6kOu0 zY`^A|HwQrdoBl7V-ZCz#s9hi4!w{0A(v5UTx3nnTT>{b#(hUP5ASI1}h;(=7APUmm zDc#-q-#+I&=l#83_%zI(wb#1qy080MZZ;iY@8-f@fLIYevKGFak@~q}RdhpPXP>S?;W#Jd5-4_kOhKsDfpab2UBsghQX6UzH z4>XjkO$e4pdU;iQU($}bPL;mz{A7L}6{|HD|xeGfLbZx?YfO(p|!szzo%>O(i> z;}>pa!55bcAAB4&MU&P}S1*WLtNugjM`S)p5F_df4Sy+Sp&M+ zW2!5d#sAMFAnOYbi~f{!=TUUQwPh$s{A0h=aJi-$Q6)comgu)h4rXx$$zXd0{M%}s+&o>+cI&t4LC|34Y|kuZonOaAHSM~idyCyBmRp|M z`=?wJ>ejTno+XLLKS|I)GTo+kzh}n-L>yHG<%+DADJZ>c8*xlXg z>5>hY=j@u_P2Ns-pO$%C+fIIo3`=`zg$qA{RALT_mDll)+Sf0RzANv`|K6Ukw$Jx| zMDhP7$%-Sy#V*j;uM9lGh16?EDpKRv^Z@tAn5lod@|E2--o zd5Us7G;){ zopt5{w;16+Kt}>At#6*t&D?{vTpId-N)MEKrR!BBIFqwVPG@M4Meb~zye;9b$I9=9*}IdNvjNV`*t85DE@yFL*g#z zXQlzm&95FFMlWumn1N}##1xS>y=fEmbi^Z#$HbNyg6%h*MpZkn%+okPE@&w=2gvw8 zIi<8u6C?98)24gm?m;abC3JgkB>`WJ^KErm0OwQ`S?}(z81A-empz%kf=^5L8Em(C zaWv9F2!}++5c74#s-w_{CO~H$Jv=i_F3@&7tsFd zoL%=;om8{^(pv^>hM3E4Q952Hru*&mygPTerk&ERm}`2IIfAqf)m+E@IOfK-R%|p! z-F$FSEj6|A03L%%#L(pocQ?6D{~D5G)Lgl5_=guqt@aApyU3`LpnE4Onzbtc&n0Q^ z;RbRM*yJxe+1eq6qhco9!yjF5tOd6M@6|-dCp%R|S>G+bc~p&KAT_x7vSbJdudPXX zcXG9vcMdncS~{N-Tcn%YtDE{luwntmYwcxlEM%yQg*ELq|1M_?BI{moxKJY%h!B8_ z#O*EWnw)KoG#;(6aG7)wL%^af^F5L|`j*?2p@_2R@vk-By>DhypYS)j{%@RG^Z6~* z2Mcs`)u5vr%uJ;bHyqhqu>T$DE)79R9ok!Kz)$!d!a13Na^KoX>GjYRbUhgb&Tg1+hML{{-8Ef2PC4hDe{2MhC+ zPfB~;4Z)U^6*gS4{p{MnXP}*d{o+*iVV*=pg$|zdulM$ggQ?08sebXKeXsg*$a$c> z{GhaFPUvFt*5^ONb?~}>0MmfVE+dGVREQltMuh?mjTr;p+Uko(f~_vuq`rUUXCAM_ z#&1PuX~Z)j;A&7ao6Vas_R@3qas`jCZU~nCD0|G5z7si11K{*{SHIhQ)~A;!M7+$+ z4^NmTKRNt7Nqm#335JSNF14MKV(?(^_7-x2K?}6fT9faN#9d=AX=TkmsV z3SEsGITdW&%|~Wu<$cB=8?SuX|Lb7C={DnfXG49jnT>bz* zJu`_3eDk{xTPV4^jFRZ_RV2AkU4FCJTqVZuXR>+IIsRdN?m}Ra2ljJ?&o&NZ0>xoS z`we0hK*Oxq^Zx-;YX2)tL@5XQMFp+}k4Gr1$5QmR@kdEVE0`?~XCr1TzkQ{2xNYqj z66EaB9svshelXxIF!GM?{3lLF)6Oweia8a-nr_g~l)?8U#%>7~5y(jDm10LYvKd4{ zqp0fyNXruM?Ng;t5Q^M*7%x-;z^}Mhtd+?G2NNo!LA%TQH*|gfl&ON`AI=k*Z8)y_ zFM16biuDD_z%1`A#w{62TQgGgfyj}hQG%iC)1q4nNv&p z8iH0#`9!MN8f>iE|GLpG2O0tl2kAkO6Qm50lxZ5hRXhaVnXd8o?o!@w&{Cm5<7-7o`h zH`ZPv{a0>dGHXiC`LEgUccYbu`yvB+XHO^T0E*Xk_0%8%8Qg01&5a^96mVwPEnmBr z{ySRKt?{&jtf8X|H^`q71Dckq#lig;#uIIF$`kOCY1bGs{gplIcvmu zFwbrdE<6Y7JE(TSL5?S&=kNPW@3E-sUbc12c=+8Rd973Sxi*BUn2a@I11s zRrp^G4v9pJY14TzagW0+$#PfUrqY&Y^MloJ6ojVt?0JazTM+fbC!g+eEq*z4^T6id z=L0hQ3?@>lQdi25mh*^E-|{qrRoGIZ9~h>R4V^zY<|cXQ_A$S){8#j#*Q6k@R(~!| z#krm@-o7QLtSh^*Gln=th}87b4Id!=Bl(X#dg|ebIz0;C?s1EJNVt?yRvJC~mj)Ey zYk+@5+PtSggnXGV0N9zk_j?tzc%au>wTiuDD2A%NRF#^?`(N(xmJ-;%pDD-|zdn6v zU8vDs+`F>x&R^_9`#rl4n(tiL?qT3RS4$;ISYL-wSQVXDvAA>hNN~Ecl)WfF3N1xJ zl-^?%XNb>%1?Epo!5e;QEt3H7*Va;+f`7WT4`)FUllcvpxL@;3rO-FZ&2QxMQUW*TD z)1*JBt~R@x?~U|71SdBld|41rON&q~)`Dr5B(8ACLLt zPt#dDKF~!d1~9t%EdR&A8)@5X#EuXHwZkg#Hn6$)r)UtB0N_7+=IR0>FLeJ-c;E9! zF}u8b@KBt4W29D-L!4ZqBZ|PuP_TnTC>0e+xTOrrH&Pa$(Gt(0g8fZCBC~h2!#m)v zX;F6M6}6XxYQ9;0CAnNag;N8fX+_EE+L3_g&b+}}<1Em{i(uJP4}S+dkz{o>vwf#; z20s&_2eNQ|0mm}LM~nXFD4c=HGyngi09Nd|+A~x!3jwwn{(BD@2d;0sPhvE$(QG{Y zK%V5K*BA*n>IPC}D3Hf5?43bAWvwzeT0JO42TqZ+3ME$YACzTo5U2i$v^cO5e@mBe_G zzqu(a`Zv#ox8Wug7oGgGiRSw^TkLQGkg`?3oXP9h1O5UbGCqIj!|wt2tMfj66C#?1 z=l`~L!_Pr;G6?Ac&7ng=-P!0L3=ujcz}5Wt&?W5DeSSR_E3~%VeXv_t%0=oKL9pa4 z3(QaD|Mmj2$#jI@l!z%}GKi4G?czAfQ9ysJ8R&XMk z*$?U(nwy32JVFWbFDN!G;=j>y_s}-?(9hi7ThBD!EcEox`?MXBQMx1{2m0Abth)+# zLe(gzxhEx}sWn70(Sd40E*p+%@5dWJe+IEgVaEztR%y*OGaZGFLNm4?JJ4Gg@kiUK zJ&I5@FxUf@3xY6opm}WW;7}e3ad6qVr|ONcr}zR?%o&hVysAP6SojOvtKhQMTtHyC zIaD4H5Wd4$Bg;i=nTI|HE>2L+O8(j+A-dkTd3!4>^Kq!B6=3&w;uvwF1Gl|$yB`(L9Ib2O=p2=BAJ-LMoQ!iLX@$U7Gli5G3v$O6Te8^lk| zXMhIM7sL8hGYREmgtk!|9F+;pbR3u@p<2rJ{eIGF(}{!Hs=O~H?HNcz3(~zJs6wg! zJ>DOtLg_i5qB>pWmEAgc=qJd%k7*2V4H`5Amsy>08to14c(hwwb^?V{FO&imu!J}* z%b%&a=F`)#c%`G+K@eRXpY4_l-M5Q;U;Nt>3XjlUh%8J7rsIw11eP;^yLIO4=zkwf zUw?eKWXEy*8e=any;?q$@KU2T0HOdv+y<*2E?R*P>e7riy|96Obn#nW2W-5~k$OAQ zgpFZ80rDGF%rzQCo9^F22w(!4uogmbOYJT2#7?uy zlUsa~0R;LD*oBfPoLbR@v49NB%*tI$Rv)Kiv@-x<63ko$@BTZSCswRLgW{z$DKo&G0*sX94wUZiur;k^ijh_CS^@qGdfS~#ij*v}uLPOpIR zS4kT*6vI$}G~au3NA?Hy-O4e!ezh200`^|vWjJW+Ym13vN7yj%re30E_X9+}^7k(< zBvID}w1LO#n2%`hTAQT&mXA%PSJ(Rp>zYi(hfDx}Amig?!x~0t5`#$fHz!Qs@pMS6 z!Q&M5V4(>PJ6!y`6!0KXL&W*zrKU}e+$A~no5-!NEE^%&P5#%^c{t=@A7$fKlHm_w z&!e~)M(6)RV9-E*2;*k7SD)zoDxAb#irPoDP3ml>b=MMW1_ATRE4J=OrN3Xr_bc^Q zU_u9c`qloxt-J!$8g{1wI^(-zj{kOoI)M|~VZ_`7YWcFkw6bw>-62qz=TpEg*NYHm z{%}nF?l6ER^Kef+jEps}%!`Zk>d$1zbe$RA!=0TvY03;jq~+zmgVl5pRKZ%~KEQnC zw*S(#C~9(`oI$V7fwT^Knz=|ic}pxE{Zt5}4(HpeY}0%r5vzn9$q(X`p4uvWQT01e z!Y3v(Cs(|&(D6;UXSiDCE-k&+Ha99L8vlwUbk7ociQbEP!Lv<=4(#gN=*oE`)+q%1 zZfHryOQXad@5aWpYj=1#P4G^6avD3K;EVTivG`gVEVuNd2nPBuj}nLJ^JfRZGPg9& zduxQo-dxqQ!^IZWbKmi;5!D$qarzojarFXt& z78zpL;M;p3@!EaT$Z0QT0wwyf7j}OSD$`^8I<4CI%pmUD%|1mPXW1E-Lj#3sY@Z4WoLp>whL2AdG6xHA1_R9o%x zpU11x9e@BY4Pa2_i^AhDOBRmH@L?g)tndBKKSx`5>(_KTPq&*T7x4mTNYxCgyc<22 z95Yko!vcET$MA+u8uST__ox87e$^8QWQ>Qw6zeV=AMY++NZD}h&sS1T(;eu6uhC%@r-u5X4Z1=-ZCFMr7`f zx$C{(&?1t{Tz{~bjg3Oz@4}yThMH(0T&pFHd^hKR+lD=bJD-luuS3wz;D-U%YwrV< z!_Gi=zE_rro#y`&8@RhIP9_>|!*?%vxBewxUb{FP5^qUmu_u5taeDsqaH$P{Sus+l za$l)dYSFI2`5=;Us!5vCb&G%6fn1l$Rd{(DaLQ|0f5!0sWcX`|-EVt}Fno4SF2aJ3 z1ta^954EVj?Upswn^$K#N$a{49sbZ8@szSP+dB_>thoV4gXD7~dH6HD@D{IA(~cE$ zoFV_&aakfE@0)ip+aD7ehhEUYO~W{;iiXK^m>QcyKi6JI?m39@YS!KH?O}?*2QmV70|2#areX?^0*D^phTc^t zzbwKB$b|gW%m$5m>i?wpcaj9v&lF(V}HGX!8$MmddUk?uG8|>;HOm2R1XRW_{fLc-`i687-TI zYKjm&e6P>v`bV7ORKq%!`t8qa`SurCW^&l^=fb{MRCj2wU$wT{`{$I@|FVoZmvRpy z7$I=9dV7g@IgaKLMDusl>4;>&$~f=n1A`olNPey+ut7}d=#_@ivR$xcy}%!NI(kLKFB z%1K~86rt!dB;C}HB57S$MeKMARKq>WQUal*7PGym4=gf-DbKF&0+e|{1An~PWnUZk zhAoV@DrNlGVJed#P$~Jqs@>F(iI>N!SB2D1dtyd|;yh?4_QLS)YP$I`i~+{`%ajJO zROx5y^v&8})%O}RQ{^wUOgufgNq2M3ER-^@x(|Pf2OsfL^Ah;|lfY z7Q_e=7**U8*zjHw&Gc|_;esHAvc5m>_>+bh3n1XuC2Tbk5Z)@-yDPc}VUIUFVFVg% za-ADIRnwj=miw^RSWR?=9#RPMS_&hm>UEEXR;-h_$(H2hDl9^n3SvwssKrNGMB(YX$)%-q4t=!k9E4b5E!!2iQ+P*t zkpumOm%DSA^1(O;K4&`-76bY_7k?7_l2r;{6RT#NbwqxuBUCMF{y>OtmIveZ_x!Wp z2OM3ySRT8S+Rz_ec2frYtcW!gw~=S1QKZiH>y9EfA5FC$uHd}E{!&8D)y!}th&v{Vmm)pF#(?es(LyTICA{^rDu zn3?wL6Ei}HHID}b(K2;$FcT7t23!8#{wOtQ;H8phCs;qY@Qy#H`u>UpusegE!$Yx1 zj4@1V{!*f*svKRlRExSwih!ATN6+GP$e{7Ave5<~fY{>bN4+2dt}aT`7&WuP2G%!x zoICUE7d_?wa5fJ^cc)4vk_X8ZMLdxJgGyg(gVyK1U3qB02J&FKXo$T&|7vG<%+-rd zSbJDx~mS42j;HI|MG@w5>>4?6UNqi7`SNyyG zFDe~I&|~g|b5Y2{(fsbow=N>Su^)bm83g79S(a$u`*?Ap^1G@=oAr`4BxI((A^ zylD)UP#-$L_hb!yyiilIqyt7A@T&=1-*qWg&MyVL{V^-eNO{4nvuL^EM=*!wg~E5# zz^}*pbsC)W*cirr$>ji&#n4#kK#S=uU#y^l_?6h>HEd(hDDn=4R$WqOq58)H_~Iq! zva3Y2y~Hi~jutZQj9p%6Yh%j=G*h4e-Ji)xS@r9lNl26%w*QRS9Qv>|48dKt5iCWI z&&x8n{(NIe`ZG?S&+$$7MaPWB0aBo(z@C%pf;PmMjiTKJNt=yOjlSHdy{a}NqYO+> zmYt4mUH#);x~5nzrQ0=$dEz3GG@^&;%N|51Mw1}Si{Z6sxiY@ z{MKG*6v;SBa6}}*Bv8Snvm`*@3RGwdil*aS41SwixeZwwcJD8MDWsC44%?(62ktkH zHkaS>0C&q5tO-LWt(nXlFDwvErGK=u5+qsNPnP{9CZH?DYzM>} zi2%oU`0vka-NCnaY{+0BisG>zn>lC91wP~TM|8(fhF6i+?;$*v{2c2uD#fkDe9r4E zb4qZcu#8*%cHBQ_8OzMlhtL=DSff9uMQoHdlTEtj_|v-4T4P}u^XXXmItr{}_Pu&> z9HsSGX2s33vGbV^EH*I8d->k2L)ZsV!T6MtFxY%a!KF`cvB0J$K#3JuRl}@VY&uSK z3Uw;wr4PGUJ2w57yE`u4!I9B%(Y3x@9k1@TvFh>IzU2B4MUV<`z*||g*;YGmVJqKK z1m(3BR;#p+PB(`g~ubvZ+>5Nb?qYGIW9ItTMlKwn?BYEd|07& z+u@N(VT{e7_l-umQw|1+q3wFHgRTZU8|SfsX{o&j!6e<(NhP z>rxWUeuvDu{a2YTgkmvGg(<|I;AQSDzQ?bT8#u0Z(;VB-d0S1|)G34;Vs0-F&?n2U z(4SMiYdT9UA;vmtcRy#&5cQ*`4S7zl5aznw?viRAeCXoucy#x|`;18D3&)E%I(eL( zu}`1wA8vRlgng-Q!U#l2)bi!B^(i7uS7x3J$wY3v1o~^6-FE3SM7@GM4zXzY4dmOJ zucLlUjo0`tK>oLGxx}Fm@uqFVH0_EEG3$w^@jAi#(M2FlsoJ#jw-fE^?3m_CXy8b) zOQo6c>}DFbSC!Ip`in$^_k_dVpepbUa@1Z#;OyFiD@@&;xefu1wEKKFTsQkV3J33{ zCc)U0gZqxs)|m_MoQ3 z$Zo06nZykx_e_ao)QUNGp2=ZSRD=6pvWJ^fBVdB!E}#esx~w6v@1Px>RpYlZ2ws`S;x%3Ka#X z8ZBPA)x(Ql?#z>gFv?|nH3jOHQEt>0CMFgjwZ^FW zh0ER>k5LoVO}|!h#jI!lW>_CX2AI~@l8aW~hM-l$nZ_^j(L9G)AjUWL^C__@ugv5A z5|_Gg``k^dju)%Xh*{W=Xw` zrT$&=s#v{T^kie8{8bo?a*@Vq9b<344Lh0L2$_F|$3cM0d@$&9B6GIEHHJH{OTEL) z$AL6HYLIh6v?BJpri0VjxBt!G_pGqE#*wsF_Vmu{gV{q&61ly}Oz@>3Gj>!glF#1f zq^~r-hX_vnL^%y2eLp*jUmQy#tyJvZ6-n~Gmxn^wwV_P%u+7i=b4fL*d}Olc+39E5 zC!=5MdHkA8(Dmu%!2&P2fRnmmo`KhRfv)~=hz)V!d{-1*G5K(-rK9huBG>WbIDe{` zBcIYYVWtgvy<)!oSDzmCiuj`CO1$jpuwV^FCk$ zu_zB8g9}0uimUr;$sgFht3iTc)+2Qc=1?DDF#eL8KfAh9Bl&*mdoahMeivHKCbx!ME*EGq$@8{BWAp*Wz znX)z=I`9rPvHJw{a}pjTxU0N%q-blC={1*&{bT}D`|m-K4qZu`Z`C-v%u$CU!O}`$ zhflLb0v^b0wb4EwX1i<-h8<$^uHKA4G_sNKIoO<%@AMHPlKjD{{pyC$x3wN^`yZ6E z*ePkq@3s7JUi~C}C)5(=IDLXamrP{0&$dk$0|X9z7Yp6dWKOxx-67nW`%BYJWpuFT zd3_SHO#)#>)tbTl!fKckINi<|wXa#ODnIdPtA+NnoP{&hxEjBq-(#}~fv?l(`_*&f zbbj)gkn36w6V)HCV7H?$@2?si{J@$FHJ(1Ya|eOH@|f6_nboUV{NuFz-7{Vro)6)- zEyt@;rk$VMv=nIOA14dvfc;mlqj!8NbwlFC=JEvLmmBB12^ReP{ziCAdSqra*=w;$ zrG~Z77n)-SmW*erH-A+nemW%c?^Z~Ag`S{N#gpMuV?DP>&w^3yk9M{jJXh~H<0djh zHE6{1N1b_pqBvOxykOh?a27t6ucYUvPtvG%b-XU>g8f->knnT zJs2+Je&vpF5yh1k~rc`(Ido{``825iNwC4`YQc+Mz*D_t{bj@sLZl`#i-Gp%W?uRZZ-PTfgd_sk0fC{+mAgLTka`4@M=!0{LP~~tD9!e?D8gnYl1faspKQ42fDTW+iTre4ycQKYJ2iR-)JOCLEW>c*7vp-lmVp zOJQgGE#}6|!t%ww*ptYX{rN(XC*IqYKRTtdwDwB@?9)T9p6iD|8_8FkFLtaM)1KtDW|suZjEH`er?huws__O zl^GjFDl@FjvaT)>7O$9i5BC*(`=+`Tiyaj`l4yfnT+f`R)_ksC_&cX<8Txc>i~r4; z?0A`~=AGBym31T)N}f!10(L!P-hM;Bn-{8CzqZDIls0IUc*^#tSmWSW4V3D}qf#T_ z8xA)b(gYw-7wsvZbWRKN)a3(F0K~Z8_g7w7Gis-SABNgGi~5G#Qn;*<=#^8A<*Pb1 zl9%wooTSbK{V%-s@e5oF&9m-6&}&^a2KZp*tgsE;(3%|e{2?yv5QJ+)UX-1`qi(d2eUocS zyK&*hdpl30z^Jz4*Z->j-D`Tb)Z%* zE6gC+ZpL}KrP=@;X!p6qVNK=z*@N5tt*zM}f}oR2`kC3$sZ#F1%8@yllq>fQl|{Q0 zm$;a>Si9@ga>y=;L8sYFH}gsFBo|WK{%lRn9RDu&bdlTK#Z|70_Jj)-*jjo0@ri)@ z%F8_E??Jkdy5P2HQD_mdPASh#yE40&-E4zI{o@2+j7q^@piTN+R5e=vJExP~Vh|m5 zwU#y3)~W}FuI`zh6@Wkry!XuH}!BZ z%lz7IrQ48W#lR?PdV|-W#@)AAzkExz;9;SV>L3ihl=}%!OTq6bf#1R8Z)ICOO!IH& zJ)+ez44$=CLkCkL z{O!{)5mfRAEq~NYke|~kQQvvp&T87}Rce@_VJ^K14?=Y2$M!;AspmVq*7J0GB`2u%8 z;FquXo#L@0;LU{^qQt8yD?93*k;XkSc3|*MrV(ytL8QpCGo=Y|v_qR*55ll_r#?Rr zs~XnoxtaB(D$Yxv4HO{~^PrGX@3OfD#bF=4)aSs)i^1O!n~J1<7EsHfSX_`*{yUyQ zdAP<4bL~$oCd%phb7QgXUK}#fve~jKN(+NZobTHG^P;|I2?LSLmXkC!J7Bw}Mwn?1 zodqWF1-svBp8P$JQaL1WLR_USbjoqQXs0Qb=8n^)izjrx7wd+31m1iuvo%XP@C-=tk?{{Eg8H3Be}%kf(JJEL9l0xruCPxt+oX;R1oO5^!{H6Oq!Bg4wAwU72IlOY3EV7^n7$N+u255~g@XwD4w0i_C7wts|1YtCN7lfB^L%!6Im_(h>TLxM79MxQ*zWz0K% z>O7HpUc}QY_f9XU#I#HC&4>wI$?WP6a$c2jtIW}S*%w{e+RzjYsYI3}6qx3@Tr< zXYJ?OXkI;%^mqNWY8G}Hj33KP{IgtznOv@KpJjjoxZtE?MiIAFZ?IL23a>~g9%lIG zS@{NC#^(=Kq~<*bEb8zMjTXhAXfWJo_cr79y-_b=YhE0VeF^Q9BB2t|WpAyLk^v_x zZ}mESEsABAyQ{(6=_)HC(Ezij%|)^5DJC1_5afueM$2JC2*5p;qtKH@T_9zhGfXNn z`LrdsCK&A^TQ=KUD_~Qo)~*qQnkb^lZFjP)GAksnM%sXB$NQ9iGRPio@7lcze>0ipm>C z2>GQ}3KW5iL^{E530G^YZ=5VrJE=*&^b9 zA7>r#4`Hlv92@=Iu`^ZXU!YZ*rwP=PjD4)~L)HBqjVmp~zWpP0!;`Tz`*-Hs!0WAW zZmo_%;pQ^cT52`}suBH)5A23@23~hp>J~57>s`9}Cb;_FQBGCd29iTmC>dcqKHrA{cgnI zLG-Xznag3_6LS$|o*J7xF}>KU`uZu%ZU;}jeA=oXkL}Ff}OL4DfoinMCn$@i1%PMBQE22S{C9aLF!B?kT(P}b@Mco%cb+f1+lYSAK zuaN*$woAu^t~Vi;lsjDm(z{6mzy2~u;c1NXSN+EuS&!!Z z{)}*=ZW7Mv3ihHH9z(^x&>nDh&xzU71O4YV_o^}C-EiBJG}W{73@y+*YWQH5qfMXi}~ zqTIR@QyA;7EoF<$Xi~A6mz{}U(Zr@oEZnw88@yX5n$tqnqev%t^(lOwL%M$2xPI&X z~3Zuarv$5R0s9b9Z0@;QsUIT2XAGfWxrH}U~EkV03oYujOpE#$HbX)Uq@0}L( zJ&MpX8gYu8I|DxPY;vMJ^a-Cu8rFu*Qe7hR1c%%AL_7K}(N}ej!K`Wgspqmx%&0ND zoCnrv{PrL3t}&mG>-U;6MKysqMM8b=^SXo}j!CbpWyoi|m7(7G3v%JlIkN4Qg0!t9 zh%?P=F1iw~Hm~+GQVto8_76(~htC&_J43N6F~0N}WoBkp)$y^Q7KU+sRD6_-XT+RY}M91{4INxi|C z0`mEEI4QJ#-glOZq9B=F|26V+&fROok5#Qha(N)dxQ^9nJ~lj#xvzk(BynI>#%Er@ z87fQTmk$=_U>qFP;`G*?kN;0Abr*`UPL`mnn}nzJ(h?o8g`6h&zb6QcB~aK^$#6@d zGt5hn@c8Wa*IZStkt?ynCLIZy&0?@pB~+jIT%MlTM;sCBX<^H8a6P=<(h8!!MZA3j_e zn#??&Dih6@+P!;@Sdk`(qJNe;@8R-T%2VrzwCd(BsZ-_3lpB(;Ur<}hhr{|6IYSn& z|9f8~b86;l_!wdT#l9ZEak<>5RZ=%wUXEiBe&FA(cP)c?1Y-h9HW_$41{FAt6s_-Y zmM;Ty8=-)x+s?-)7u7sLWynUXiuQL3c++(*>@w12pcUy1JPH>xsg_Vt%(pvEewy@% zqA~Bg)1nKUK6^5% zxjpRfMkWFhbltQ8#BTD-H$xkrBA1fAy7>I_T|R(}9))qGZN0n-^JguS#cs3<*Go9flH4XFM;8fS$xWsCDD4p)~RO)*#AGSaIDnp=8w~HdQP><+=Niz2` zkNhbpV!U_%ruc=aCichmrNp#+=XDm7pR`rBdUFk&G@NdqA-^VOkr{0{i+H8^p!b~H z@s|_=CX)rvr#0s0citIFgNchlv1WPrv+OhYAbwwR*91%Q?=Rz35@64dH$c0TH-=zR zh_KeVtHjnYd+^0Mj-<)D93lVPb2h`K=Z(&roVJ7bz!5w7oXMD!#^a+3Y7G1wnqB;8R1C#uGIM4PGO6-`CGr6`43|PEKBlTe0C_=_H#|TW-z7!wIm7R zD~p%ido&iCjC3gktm!fE`+;DJuXOzgT1&<2R!h6!(DFGCU9>O|4qtx3HLJqBKCPNI zlqv>!n&_eMXJjS>tBe7%{NXUt{M%_ToMN<{W;J^yfku|_vfc?n`QPOAep3FK$E9)X|}x#~pg zQq(rRs@I^!C3Wa_iGHn3-IhK*H8&h%KEwfZ6hl+12t#A^7}lGifCUvXv^SwE5Fsh8 zTu5*DtYqjL4W_6sN3w(JoLDggQK**Raq-PZlTwW46Lv?**NsXhy(L~YPk%4hc(Y;s z7AH}9MG{A4LSK+IDdNo}DJ%d2Se7xw@Jc^yyg!;GJYB=Yld=8Lo{lQrd^#XzRPb}p z$O6IwW>gi=T`8KaLWb9BEqPBYIul(!Iacj!JFKQ9ETtCN88%}1NA0ExoQ#3Va^Nby z&6Ffa=iBGCZ=#q5jzBQ0!m3CjCVcnT`KYO%9{=xDluvHo8ho)oYv-Ig0@xX=QFPJLNAS$!@V#k??O4x~g@{x`EUMC0)}H!i{5 zz99@aHBC>`bMVZ16ZJW}TUpAZWMUSR1kkty zjY*q_fQz%jVW}3k(@$Hg_qUhS%~9>-qaR416OnGLwb)SsutR`@sk%FcJOq*0w{LC8 zm77OrO1E&GiM|7}=-)598g0jsAcV9cyF0L}k3bf%m14xt`gWk=yXxO`)1P>N7WA+t zCtzo))Exf_m%~pyjRGB6w+%3kCUU*)iY87O0PJ&*?>jETMhmdpwJcFNg2Rb5N-S)u zo}NMPe^}VGZH*MOr}A!Qj~VC8F_c#1-W$}no5p#l-;|$!#bw?;qAzp!jE>Br=F_C5o7}uy^*%zfsww_ z@x`3wlyaE_J3k`)UYBm5;b{+|BLXiz{h0#+SrfTT-rQIk`Age-z3Dpd+=8E2nifU> zN*Sl}q^L@V5nt&~)>`f}52ja4p^X_oXG2aoO7t08)Q8jF#1P{q?(pFmJN4FF6y|_i zeK31uX@_pW)+Oq=OR@IStW+>}<6}7V*0}45q?T)Y_?Sv_qaY}b3Q+JmqW4Y|nNB4? z2kLgSzTg>KDcH>GhwDB?rK$7BAkG zNxN+Bm>hbF01A(;+w&u?R)QAuZ#0S&=!Jrrte>p@3XkaQRlIhCK*KcjnUQlr0n%A~EPQTwQq{BAhDUHW(v0bVlHB;5iRC}f z9;klvC}Q_BOe+n4%gf`(f4osK}S!*b6Z2< zORRCwo=~Ydsd|zM$-RYkBd{0an%mD3`&Qd-G@=D`Dc4iSVD zY<%rGn8L^{F8c4)>RhD z#EL@FqvoKguEreF8_SvyU4w==-J1z9mL&@~8z`Tx$%7$3&eVGD#5`rnQN-@%rvYgY zHz}2vozi3=iPK|!#^DthWl0C}uJBuoUy$Ck^-n2AJEZjyuBI^W&A>zYk88kOrYH@! zI$LszG6l9cQ)6uqcYAMps%dndr9H@}gzb3-$~G7uh`9V`W1L#gBb<3~->Zum4}Mw2 zC}d=%(5MISwB@5E|BRk9df#UnzibyxxIwHfDu`+?q$!Fjh3W6Ew1Q5l~=SKev|CEc12u(I|&?>bpN2u#f)P5?D_gbAvua9 zey4d$01u0U;o({iS={x&yA3|IKNciVVdncG?K9K!d15A2s0W-MD0O4JYFkmSC{re@ za1$S1tQ<-?T=2j4dDR%_JiRKjwkM<(`qCs3K<=czQq5(FU0&|B;6x~xc`jJbmn)f0 zSj3afWy$Hq1(#jFl3AztX1I`fgC}ncNcmhXFZS|QDnJW&fHp5OIQsJ=#s~Ofu3tLlPu*uShK+lU%jc{Dj`*f1!BaHZ1P~QOg z?-KvEAcEk%bR7?TT8)2y4Bn09^u!7!PMVV9Z+{J02>p==ies-&f6m5)7wI)xdeS|J zpu#@CMTeNdDmtk?uH4^{^lHEuzWdvn?axnMUZG)?I$cs#(1ZJ&yq|;71Q-sX8%2&d znUZ0FZ@wLg9lp&J@LpElI?W9ZUupf-`;Eay^h&#eOfFgQgKDR1e|h>HG^Xc?g?`*t zWQ(}Oy+!(v&buKlAO;aGmXADvaAzCsC~sb3_>!7BZ)++QtoO&$A9Y0MphJg(3oHF(e5DviaaFGau{dRO zCXzwI24m_GteX9;LQo%9BN*No0#=>tad0qEf}}L5F%EmrpFAVL zkP^E1b6WgQ6bEu34gMkT%RsOjLi`xcotKte24I5e8gBmh66H2ZA7)myRQvf+A(vbg zcmrQCp%qA2{z6s1%Hz>De|9rXq?@`q>0p_xebfjdt?kR@K`CpTA1Qe#h*#=O`iU2s z&D21>LjdBMwU+;W_MS1$er$YJ^318juN!^%9GvYHGT-7zF2o6pl3VM~UP=$Jx67U964%SOCxR-i4LtN1(V{G|o%N=In>7-MAnD!`GX zzg0SPiDZH;7O0h^8Pq9e*iiMQ3Ofv^x4Eq*VHyzj<#0^LyswE_!-XvSvJ_DfQ=%13 z@yAwatM#M?3Ord5yFc^@S6s4`9R}`l$6DIiFBDIo;vUr`yV}hmH`jM%T}O z?3O|77;o{^jjh=uUYoT^g-aZhRVl|tz$9Xn?W=RCj^{DvAxOz2#r;sa!s%X~%Pw=x z$AcF~1O|8<<98Ec&1!R0^mmLKsicTXkG;nQdu-^ktNqa`Xipf!5PRQOecvP;kyo@7 zG-0%I0WQ(jL>#x7FbP|djr{s4kKw6b<*$Ap;c#a6zp>Gf?cd9>bnO zPxt031mGy2W_vZv(U_QkYgC)M=)j;fa}};c9Kxspy^H=05f*X~^v~tyD)vfq z7PRr8!)v*Cj2@9^VZOg)0Q|sLOIiutg#4BYjC2*N>71$mMBCWwIYULpO*=rTh`VGWr9vuF_0MIO3?njak@b-Ec?x59{p6;*J~CE2gH zIc9!rGlSxLh|9JVNGa$)RU4DjC%GeLCTPyXHF2f1RjYbKQR~=|_AM7wely!cHtd?G z>_5IansYioFVbp+yfk_4C-!%}&osE*VNi`91)+S9iVMZ?^5h;{wf4*0alB{ChN++Pwh$iJMj4?IcYp?lVKF`G+T!A@y4 zcpq{dZasfAxv)QPHC+gIKiU0J&_E(f{=p`q@Mn@+h(c+EK*1-_YQ^2~egNZ&#|NrP?d z4=(9CbD1!GIn{GkPPvr&^2F-hSKptYldxnTkRujQq&fU>s)E`3`mdMQorzZ89-iT#gChr?5)~yQ-UX{_hPR3<6>WQhj zxGbj+8LIgz@Y>K74M90{PA}NL=jlx(>T*Qo^3v@;#E;oeavJn5rq||m9Pgk-&@wjI z7x%gp^4J1E0f-*uN0bpnZCRTUx_iq~8dDE6Wplf^ozIGLY-+ec(r&qU;!831K9h2@hv#+q>{*T)XsyK zByB%4bsM~Pp69Q2``tmR13up`J6^_nBKvJ5|6+txi9O4~FSb_s%UR2v#7U^QQDa3 z%~9AK?AT`Ffv*Fe#;gC}7+?2oCW*K|Iu0h)^&Df)aV`_dyv5FXLt|R^HpuSiV9#$v z+Uzd0mo{C#(LKclAh!#nEV2skLHCZ_BFQB#h}}dr|JD83W+$b;7?fg8x(XbWLgqtM z)6Evt0DWTRKpI8L(wAg}ZuO>6Cy`{bxnEquvQOGMr)h5_hX^Lu7dYh-u}(1!GzqV7 zE^#MI-5Tat#e8m<%WZR0Wv-hE!N~w)Q`&(CDjYMvIhj#5mA6Hv9) zf1DY5Xf~eZ`{lXaN(|-MZo{6{h3REAi|Is8_Onbl1bPdY4#wooq;CWyH_IZ_-@x=w zWX)OWR>$+J$iInRyLA0mkI?mNpGG;Y?eRqf?r@P4pmeIb^bRELBm6a5{?L1Fz2Yk_ zUOs@>D}3VNeW*{ezp=XRUj0(l$icNVKtztXE;d=OsP0p46eja~<2w1QeS1|}HU}UQ zA*TT>N}MW>dh7g9-2a=5Ii;}N{)Gu&fMwxe;7o#4q5a~0#w!VbN!fesB5|AvqEk(K z5ovbSm6=lbnG#LYsy-72`eoZ+iQCAbzED!m`Po|Ux%uyI!2=~lc7WS5|2%MXOZQ0u z(Nm~Y6P;<}bf%IgY0G@7<@QGY8%{P7wW0%k4glX?A76hypAl2{3keldfoMp%4+ zFIr+ve5a~mS!uq5{Kw&{2iY2wdu~uq7uaJ^e2}=ik!=uw%+BExG$wRQ>*3e_lf)Kg|(l) zvFOcLejX(AknJ;V#X9S&^wu@lyBMeFdf9C0*k4g*KNIZ@H2~s(TFg`Y+@4-mS%0i& zX)RKtz&(_7@px+-WhPxVk%OFGn#?qtrKn+{ByA19-{V(bjuAwWZC*;E=!F`rpZ)w7fv_p{=An?A;RW9uyUIPY#Y;3_}vRE5zfyrs55 z^%VmlpuUNrNDw#3o1G^z(G`e96_9!U2e7EHk?JfKaaNo!zi2dfhEq!Li5(Uy>HgR? zk5~LvXkBDSn3MM6wZl1`ac_t6w$L0LQbNysRrW%aJN;7#5nMwq7o*UaTFkpWd`Ih- zi&R_3ctT)@AR3+9esLv*fJ3~IZ=Ts7(%wjvDE(%Tn*tVSr87Mxf}D#AbHm$kpuS71 zxLbWDZ0YFZOO`k5E|~?X9_d5PfGqd(OY?XDsz!?^zd%U|p|i z$8@vN3o6za!I9L;Zzg8kXYt;cjXu@q9Ojp6fECaSzf_GWT>GL|jE?x-EY%hIT9tU! z1*Zka^#@XV-%E6t%n-@;JVzduwgL5$9fN zfEZXH{sMh^FuA2`dpl@>QI_mC>YhXP`=^#$Cvz_@-hyCVeM1}+17gFvfAc7xy~=XP7nLPt3cc+WnRq^m7^u6*p=7{%L>nHM{>^?x|-o9z-JX1D}<}!?@4;;tXa-_@vTp5NHtS(XO1YMfctv*u#ZAjd)D_mcg;* z;ZCUDgU{bpEVpQX$?=$TiuUF7*wL4 zj>I&j-hfWQA#CxTTQ8kl>z@zT6j9ege|`U!EkCwcGXG3M7w*sFA0k%ob)V^nV_T#L zZ`E@-$P@*cLsL5Hk2x1C3Wp-U=eiD~7>pwOs0@i%tNe2@3Ob|WlS0W>VRjkqn}be< z9-&z`3qXiNdMwvihh6E*Scjw+opm1u0i|`7hJxzyB#VSRRfIk2i_r`o)#{&xhQ`#R zZ-iv67-U#P4Bb$EgprTkpK6(HFT~VlDu2n+4`2Y7hOewM(VgDi|1;*1F|S-W`Evno zZqbE1N9C>4PGRb_#e+ot{HUYGw`!blibWSwg*fLaKwX-MF6TlAfz>UHbUpMz4u^CK zjiY1O9-E=ZY$G@;{g&q9=Z5r8K8#h}9CW7cdj(S8tF^D|Din1*ikj-s9kiii?sesa zC^$ycy7c78pJ2(fbT?OtASb`KGjh==HUB#s^ywq8J-T4w-*N%qJI@~~Vb4|_ff5Ke z&c@E@uhm8rD2Jfl=^Sn`@hC1eR8rhwG=@^u9;Y{!MIu#qu1NbKi>4!BV5u}7#sSLb z0N@uc_pJ8vd!D61;^(uorDlmLbEkU?kEO;_Uq!@^xQc70=|6t*CgL7jidbiM@5A@$ zFN}^h3Exd@utISwWJ4u<|3wzK3Hb6L-TXJ%+3w}ueGY?HjXt+j;4*EiGO@PXe?KgR znDdw$w7;>yVl*_w4b0hYZA&}EuJUl$K6{(1o)^4nB}2W|7t_6|A9s{mG*kI<+HvFH zXoC>6S7nGl>t{COLzf7!U8G|EM_a&#N_=VAB*jvcNElgBq%8JFayqrp?87nd?WvxR zf!ZS4wjMRY=XO~6-31zgKuI)CSVFaX2P!42Ks~j=_?m>qqrMYAemTV1rWj_QYE@Cv zc>WJZ6+<+&yV5BBy(NV|36w;)^)-Kb@9p;|Kh^Z4cx4|Ov}5`e(XQ6y1!T$Z3cIPG z`isD!r)`RLBlOA(UjV)5RriQd1h<(YJ7Hqf@JANIm}9`gY@hl>Un?h7O9tt(+l1>! zmvYa`;4UuLK611@Sa!SrB;u)+;K9J!DZzR{rFxk`y3-84pT-sdSNmC6jCLHW>a%VE zBwu4r)R1De{5gJkK$GYBgNYKomkHb(><%ZwO7{UEgQ-xj2EEU_n%le02*9zi2%kPU zJE?2WZ2_EPJ1~+w5q|dr+bXNpo!qy{oKvEwBWBwVBe;(jyhk>XQ zt|``)IK-wuI2wLgrs?^JxI|e6ip>fLPo(j6h27lzqc7Is4@%ye(3e@XzlWQB-!-|x zh!5x}{9H4yDN==9R$D(XdO&}T-qa!YB7J1_-B>%?7d}?4P{g+zzZdZ|+?SbPNIZM5 zy5xQL7^{=pR@DX#ci5;`nW^?1zg{f>o!f`nJuPTOK= zMfInuIu8LFKoqh(#Gq$$uf$k>@+J_Uj*mvVQXM}m@}jvxO}3-CYP67(kqFNVo&6p% zm(5*kjlmE9cx}8D1g%krm`e3AVnN5FfFZ&W!`Z&EeBED1={?K?BrIAXmWtNmbqA}) zpNC6gS#^*A(^}>+A=jr<`bK3XD5y)8oQHjmZ?=)!Vjer5(@4@U0PELdCIX$j#8+WS zPh}IejG9A9c~C}w$da_JcLc=?Nrq`y*Do}?(M>CoNyzxcE+@zGV@+4>eFjb9L{n0St)*j_RK1b?_qH&i_} z0p6X+YmEdTj$oUv-1nKmRcjxF309lBg-M~4r(!*2njSP#WtzG3?zL^j=hwgJ3R8v& zCk81?RZj7toVh*cTL03#MIMN~YEn9uIatj5cCJrJm`1nMG+rZ(cwwr=(K4t%ahuCm zyBLO@Wtmj1OH%3ZU5{)#7vsT zli!=k;{8!fk?GbZxTPk*Q-g|J?Ttd(w8Ud%a9KF6<~!AE54`I@Ik(sJ)wG&%LCcE^ z>sTb*Y$Wry*x?zVF-3pL^i!V&njH6NQx%IkCFS#e5a*T0Ee}HoxP$Mut0V zQJz{X!z0oi1))YZb91zjiFL%IYq2pQ128z1G5yUo$-$B~f!5`KrEb6_qLc04oHi930E8rHbq2rQybD+zut4CEU zNerzyp)~X<7)h3jByt-G_C)ba{C-@jUT2_D@lqaT`aa$3_JUY8coUnGNp#0wZAJYG zo9z1v*Ow(NKl{kDdCW&}o7_)F`{bM-LVXzv5X{t z0N$155!TU$L#5v0dC(g5`!$UlAi!D9HDVQ@s7<0FrtqE46ZkBip`b-cLNOX0=I{SW z$tT&7f{Hp#d_IY$scv|UO`A5OzNs4s8ORo_>KKC8fiDRBaKs3_|4z8hLx7iMzb5ur zi0;|e1YwnT6-l=Rq%Vh%c-Q1X=I0STUb7(1v}quUb9ubMsD6)vLknUj<=!02H$I&M z%|rI}o_Cq}JDMTySfl_YqwuvhQ;u2J-`iJIYGN|==r8C@M zHcns1P!BYb#?G&gWv&{|JM-y6D5{O_RQ7HNj^|gNO8Z(zo@`pjYP2+<0<`u8=}EbF ze8!t1K6$V}1A|2ndwfwYmxY;5y_3`yZ}qWHw3E4VL4bqFU>r}R@N4YtX@{Zh(CfN^zI}lW9ct&;q*6WAcqU?@oNi!*OU|LmRm#$cij+*&LpgIEXo@41 zn&XvR{66*g)l=Bwy}H2_rXX@?vi3nAyAH2ILK?d&N=ghljs;VHf1B@OUHlmM$^1feRKC6MA(@oFngv^5E@^pakAc~h&TtNnT(gmm93<` zTFp0IognX4%;qJgBR;7W6?tWRn7E*4G5(d9fpxQH=W|DLz3GTf1!qOR2e$=6#zan| zN~Olh;|HYA+x|5UPlm*xX9$K;saEk$z+nYw#C7SkYqCje=mKIa1~iCHQ%5OsQ6(5d{|rvkizq^?4c3P5 zQXIRVurvN$j+G|{dqHp^g;B4{5OXaUk{|7^nq+fW79w4g)ml=PDUG;Y6vfFe|L8_5 zf3GmC@O&c{tVG*IwtH{I6;} z2DH$Yk&|v>7gKO<{DwQ>HbHXS0}L2kzxmt260V@S4mXF`ui@=rEsln(r!7;KHA)Lw7N+}ytIHZO@J!JO~KInp!Gb#gb2-2t!U2l zDdR5}-c^2A$#mnsu@h?E2LkqM4=h>E57&_EgHQS@WMTbVxUG9RcDp~faIcD$YD9tj zgZbw4eQeWJSJJ=ic30{JeeOo271h%U-(1`n0w<2}0yg~S_O1ggiwGspNb0f{)fwD+u&7y5Z zkKTb$O~1auRAG|%ma^rJ*MZDaXseZFvQ*k)_&ph6sr+BM0!IvMd>R59_`KVIAla)E zwu;ca*h{O6J+vb33d71!FI^EI5*P1=r)vXl72bul2NA3*U!Av@W>!D^T;=*GoI&_PW(iPE|zpw02U#3Q3Da9;Xrm9?W{zy4 z9EIXcBHczSt1kanwG!RO1_79#Q)ytJy=9&8w3-h?(y{q`h2TB2bz^Osb4EkxmK$K` za5x(a-yWDm|;ozUhc zys>%BpD6BYgfT|Km{1ORoV9$ukD2H)46xT9Z@IvESsrbMfI+(oE~qFAu>eekw;}Tm zlFbTrum1sb8K{-7`#X-8ItyLIn|#Uf^~*Cb!T(G}hrZk%PWOkZ+-R`)vaWXz#W+Wo z-$(9a;r?}3n_{?c&~l9CepZKvrCl5qpSAGsMYgH~CBC8WkLj!%&z74qIx)F*Yi)JA zh=tuQUNxScSxZN;e@h$xGfU~#xzOT5aJq-VWod_dn=bcJ_u4(pGgZj~s0^*R9$dv^ zR!c{)-!C`recG%NWkQY{L5un@Z2jI;`D$qbFG1GrSz8hnkTiM0p#&t z^XkGA6kg-O7~NZH26{$j3pvtO==-E4oV!tmxxQB?1<$C+yy{0pOF4JrvuHgwW-*XL8hd7L`+dxd{8m^=ISg29=^fA0va zZLkfE^t*$Z<<3;jJamG?%d@_CrDgKZhO2I`uFkO9MFq7^D2$y3QiYhNvtI`v5kCtt z>aG1M>hv$m^cEnmY1I=vs$I^bU_mfZ9{ptE3>~r%D z8b@2pgC_~OP!S$iHA%6yFp2q$?0Hn#sC#T#*x>Fq%hhq+{zN_gd-a{l?;E+vOOH?h zF0%USuIjNw0;y^R_L|6Ne&~MjG=J$oz<+<$H0}+U%@HC9hID-VE1k(Fooe}K9QWQo zaWm+3^vi0{(R}GJnBP6wV4N=kYU6s8a_10-3E-{2=RX1WjUbigtPt8aMzxb@wMnF zGB4ocn_IZ}T;yK-81eVOk2*CThy}4(g2X;5=xTrbbz#y7F*tSgU5HR+9RsrF-;+FZ z=fA4Zq(jcm*&9rv7}oc%O#R8iB*t(^Sfu>Wu(-*=D}G==8^{bD`F+l?(>ihCV>p4r z_?Dh<%t)P9YUhbvEm;SQ9=V=eR`LQ!K z$M_bBD!#fqf@)tJQfCc4bw@O^H$}BgpdeCb8v>)1>U|Shc(*+x#!KpK!%r`yP>}Nt z&P(2Zye^O0%jw@y`F_s9kK>uxs9eeus~<6-}==FhsdcH$R`Puw|(^d&=?J*6s8g@y{p#f010T;uRL;p7q)qY zPs%MGd7`;Qt=P?F*rDa*-FB&X`S0qj(y5#Ppxeg5#xeK?TEkaY#J|wvt-z`DPvB`9 zU2PQ4Vfx89FKBAsNYpb;9`$gmFzacS+L4A$WoH${JpGTJbi_!K^3m@2c@>WmmOcJfwNi*QOPm1`gpq1JY1v!@2$(2SCR-AcS|#tB$pDR?#<>=@>;92nad>! z_vgf96ZSV01*0M6);9NtzUe?`J6k5|TonYxNtN+KTTCDv^8nJa>lwUDATS=|jl6*6 zU;XX5hMD+Qc{H`u>xpb6T`3E9=>uqdvg@+AlC`dudcbdzB zRr&GJRNRx)PMbWXQz&`)1uA(oj^<&iEfRF;Ld>%6;_gT-+YT$B$w9cnbs@vs5xB?>KaJHpQ@Iy+0__gMGMnfB@84lcGlbEM6emmvCI5 zeaE=@Da#y`yWdxi-p%lgBU6 z){jfuMgR~RUuN%8dx00GZ+u;xJcU6$AHNm!ym8S2m;nxk!-I3X_AgQvVGNGmov3Hq zScb8N5mZC_cN*D6yXO_JHensAuGZS-8PBejsqZ}|F9_xN$bV97jI1z|E$c5 zL^h=i-&`)-8XQlDbv-+E6BJaXMTDNaU-&dH)?CIJGT-dJO2@w~pIv;;jfi0pCCj_knAlM)n z?rsVxRPWgnM5q=TS4jgvFilt|>Zf15s9Xm!CZl>Cxg0-WcK_9&GYAa6SH9c zdNp+xfDxzjQkE)t&_ClBjn0)e6IZ!?K$H*EeX(aTVMOB6NC*Ef~ z_NmL6tZ^obgB5=0v!uqVzqKLv+{@LbD@=zoGGBEo>aW>sa+~cC$4+E}7Yw{ugvsB|QPf+06o@eH@!93H68he<9k9$V{FwgBVhoC* z^K9gqEu^?U;bIfC&&~xHa)t;V#)0$OW&_|V_VhkJ*JKz3yPZ`9YH)|)AM(_%Wq^X6 zM4@`wzE%F%n^;kia+AR?CCwK--MSxn?u6}|sQB&w+yiRJW0{8@xJWiAeA8;?_bTud zbAlkNOJIJj+ur$X4DCBf@P@Ibr6M~}^ru4V)^T60q>l@$&=AM2Z)3jQy|O_GtRnxr zxjl>IEf``C)f8X9p+t6m!1D=2F+id%$M=WIR($uhb&7lTn3|lZN89}wa3yyQkYx^T# zM4&jbmasMraPr&%{UTj&Ec=uZRNZZGw;o`EGC#BfLoR`0v+f13ZsVm&c$dG(B4S|A z8fZdBSOK&ig6&Ssf4cw#!YTk`W1H=^#~(pm8bY1VIRuzQTh~Z*Ss-$> zo&}#|%1em?4dJL1(;>SNaTlA9K7spjVe3h`djUn#(VZ7KCKcwa`N}}v3U$cB1rn(G zlVJ@YK2WeVC)IlsU?wl5`S~-Ir5-M~F^$kVB~& zxaavx%OPGZ+$+nWoTDT@xo1(GK>Ss~IoDDSgYBgW2i5GzKg=U;_zw%}}Kc*oY&!`;tWneXfm^dXzV>dJ-9hT^G3#g~4AGRloe4 zpo6X`@hQONY)iZBgGW%Cmti(wdsLwVgGUP~dr^V^caEbgaMrKP z+~SGUU#`3Np$sx-Cw)Fb?A@8SxuM$LnCdPyd5qb2{dD!i$UPKt+!wz(@j2N=72c%v zT0Dylz^CmG*HKnb-i9ArPRj2Ii-^dJG-W*Vn|#kq^j_k9*{ORB;b7n-6XxVS*!%n0 z{%>OCXwFUk5onh`Nt7*bnEIEzzEtN?ewgUCFnIN9X)ZqgUNOPf>BjXM+Q(vQG!@&s@L-IHx%&+J zDO^DjI2G(hm-9&L5^wRVk06go1&2ADsOycdn%+5EtR9&h3G?q1XrR9F!*;maI*pf0~rVu4(w10j-tt@=+XV#JQ$j`xoIT!0B2qmvi`43a!i<{@?l_-oX;E%FnI~O@+Xef^DHM*nR zwO#1eleF@mCTWl+hM{0*B_oyOg(dfN`CfH+F$}TneCN=IE2@F#-7F6KMz5~lpYXf! zEcIb-yGV-~R6$4))5er0zKN|4$<0-9aKg)_(;l2&$zc@B)_8blvgE)Q`@Da%Kqe;_ z2|6)2>d?TyhsdKy#(Os_CGy=^FAw;Le66sbrHSWb9_@^VbW(fpb0%&1&gVVIw0jl- z1NP(6zb~8q4<#C`L)$VNm6y`FhUW_yobw&Hr9hV4jb{TWv!h5qfremP&} z`*9);=s|l!&pBuG5dGx=NN(acF~}I?*!RfQwKY!1vxkKi!BF#C`4IYyFA6 z5|?}Z2|O0GmzGMd82dyUL<%(4z&b0E8{&D)iy|#~je;FH;?sAxk(kY?0OypVA>TU> zt9Az#T%TiQiloHhL%mY?=Z_vncCaMRHJR2O7@u4>#TWrcVG}ucHlcU+wdO6{uQ_Ac02 zk;WJ-I)~B}#~fO#NXwGwIkh+D0(J2J#1L^`8hzO0sW=S&fc4&u@YQ}B!Tu2HX_@_M zkLjV&wn)qH_i89rflP_)w7S+(9T#XDXz{9&OJf1HIxA>X)-g(iRu0djjv@8T%e*ptd^d=5D?csg7 zFkMr~_A)l92708dO~>Taq}A#tlkUp`{TMQM@+@lq;rP;4VwiNeUW){(wa*3I+hz6( zR>JrPVg;J}C~l0Ko>c9qtVuaeW%A-tkSkpd(&y=Vy4C(A(9k)`yPT-KDS8XAyr*YS;$6OiStWazaEF;bHO9t zg$*aTmo5z6Lv&{O2h)0UG;*)QN9)_rLlB|%g9VK@L4@LRGLl($Vzl-6m@gn8pzYd^ zr#*Bn*s7;L1Dw1HzBX`^ZMwdfyVTZ$?RdYG?_P7Xm6Et`J7xfz$|uSb@)(L{pskEs zduSalx>noXx0!o)yQC<4&4;{m^}5RA9BLuHwzOSDOW<<5cY8)|6VXkg?lHKRjB0H- z-&i-CL$JVl!DkC+7n-sYOa(!(2?1ZM)O$e)J|E4vKcO2jbKy2F+s1LCMH$%`-)nA0e!383Q_bU{oy)w`9kD7NLOxs2^+19vJouBB&Y_#*gC##j%mrbC~!|_?S%4TP^Z>|RAl6-zwRnC4K?FqBA`7e)B zOU2LjIqfCATwNbttHrEk`yjzzih>* zx69BFc`Ud)V4lucCq#OZg>@myAPFodH6 zN|Ww_xE7KU8Q;`w{6oAIo^Ly7!(Y`NSt?x^3SSIp$zkM?FkIwV9Q&7%uT?_DkaD1Q zGrr1MJyRzu4Yy&({um;D7CUoU($u%>*_M`ZYAhxz=aHZ`nY(dOz+5N*;~ELswM( z@cTN zzHbS=7sGCad$$Hf+K%3esYSJMFA~vc8`}UM|ARBecJuF-S$FC*DKSU|$7txpdZ*>u zw-% zh;lO!LWly)bwlirnZTG&jY09i(7~f4S%jypeibW8-toXuP7dG7*=EpJ%K2lz=G5?VT^dgdvyMM+LvJk6+QeLA@9(wrmQ)z4cC7ZcX4tH^u26~<^u0V$ z5%&$isf6#Mg-f5kle^3NSMrOfX-w>LM8LKQz_wZMh29&%pUS7SgUx@i7V(ot8Lr`IbXkmQ8pJi4uRdEq8g&kaNTRjk?3T?bJ~6@R~1E<7y@&{|_m4 za}DwCL!s6nn`P;DG*ZgOdwr~Uf zsz0N_f){RP;Fp^3)5FQ2b)wtV#UXri4b7 z0`+D`#sbx1{iQ}X<~Y7sx0V6ci-mKCHFmFmgRf6di?z!#>KRL5t!gzk7=fxT?5S#? zuEGxRNu_#!Hn=~Jq(XLx^Rv=5+`wa%?HQD4=-~gbZyP)%mcEFzkWdej-VBjDU$gdh zS%Mn+=pL{J)m9Yod-p*bRpyGf&m#uFE**6{4%P8R!*(6CL9wF?1X*2p%Q4Z6dXWv8 z>f8UF*mHD^Mv64Q;G(Sa9EVQ9oo22eth?QPn~Uu=m!dd$?FGXtw9Eg& z0tB#$oT6S_!vAh!X+gy)dc4BPI9J8{1H*>C;o=Ri7@9s*ta%EXsdnt5;R|`&w46xm zdT-j{w0!Z7A2GaIMKU0TJ_*6~VBT_HOT!dlAPayZ=5Fs55`yPbi}zy&+!~XjX~W*-#oyz!P{l#USEY1!J>5nZ#pcH~)vJ{$V^Lt3 zC-h;r6HK&he%%;UG<<-KjU61^jOwnf;;3E9VgV;XS(=$xderIS`$4>FFl0bemQd|K zcW`$bG;S!zzWZ>wM3lVerM3Ih-9W3TZlM6@!|K@ zu+OQ#My5o|u+*XO{%+k>oH3>=)sEs{zZOe{TrZdPW>A(Yq-!W$=E82hc@s3NIM#MJ2Ok)^R;y48~IdQN< z7Dap;LPCN!Qfo>7+nxWHWB(stjm3fJNR~Oc`NidVGisH@+fP=Ys+6E>&hhqF6q6Im zo#HaF?In)gALw0b{%5bnKd?wjL)6-~`~GgJ|F`Y(e_ZwM2fx9ILEGvDMsAik{yxW0 z`X2{S4+@_TbZ)!p=TWQK|4rCwHa<2_@!Ho#KiU3SPA`)I=SttNT@1m-n=hF9oUHS| zcEJDTE1J=}R>5>|j<={9N{wXT`Dt(Q^2mHmmiN)>D}M7ccHl?tUspO`_kIw#H&D|| zsvck6O;-E=d(+}QcPVWuySoeNj4nw`f{>xUZX6wG!zkr1dcdvzzq{mrN16X+W8X?*;A+(}v8uj7 znW-)4(#Z#na|2e7xILApDXtq0rZ}mZGN}npTjD_;$Y4RniZjq$m4Nfn{{*c6+gH9> zAP&fpIgQIHlVfTb$s`{nX*KW;dh;jgoK7>a=!=s56Xerz=ivGw_l0B+C5^$B@80o? z#mYC+G@w}ezg_Xazc(TWQuj2A#x&d$&sOQ<*t(t*i;nf*$ba2^DFXgl#kB!0x>Q6g z<0y-yi}s5XQSv?i4`tsS)#SIVorK!Mkkq#m#9h4%{ zdy@##5kz_qHT2%=_vV~??>YCLbMo_BD}S(Dalf-?o_S{W%oW@Gp7Z8TTxS3KkAKdT@J^4bz6fIAun_LI%RYx8uoFmB{b_ zHKvfNDg_^`==gaz#;~?WhvQZ-E#vLupb?~FjrUJv`|mcK@e(*Ln!mn7U_$iOyKN80 z@CZ4#=Fel_Yadzv?0djweLhd0q6^u{iEi;WGqDM=M$zy~Ma-zofTjQk{dR`I*|*r^ z5OWoli-y4Ds)pkg!@&Y`rO!z~gz(uI%dIUuTkJ`f<1u3)Zck!P)=gbV90tVbp* zY61Ul>;Lp`a85LiC_QL3-I;&g5S!5&G0{e`DCmVgX)Uvs_fu73*$fu&aD zK%Xr3o$(Dur-wlnfjZ0K(3@O@6M_yp6&JEO=;Uoie=6g-`u@~a9#uH_h?T@QHCd=J z>4RSG9e*bAIu35i)h%|Y^dK7)JK&_N=&11ABG{$H&977d7KAA(68>0gntA*LQ1 zktRNl$9YTRs}1sL{>zI0L#$%p8gieer7TYyj7|#1`66Tiu37a`JW+yA!Ta=fmQlru z%<9ELsY%CE)&0W`48NL0F2A7#H1+t4r5-#6;Ll&I<@e)#oT`$rkx05+(OPdtJ8Mn` zTgs}56C)a4~uBLJPuG7r%#6PU2dbhM5f%)Qtg(f3|gS7LqJSgde%^P>1$ z1kT>lUH>55UnD-IzvGWF5+)Fw`1pa+sR|vpW-}q+k>Ei-hOOTEjqgOtO1WOCK-}|D zr)rDLv`y5CV3Cm@Hz|Oh!B`M;FYy+!|C!YPP59%~1vX7tD*pTnK=ZbUG_JibdeuT# z42L*!K)dJnZ`0D}4AIm5(XY>DG^W4g86J~j$%5zOXj7>8{>^ItbqxDLZD{dA#XYs!_@SYjufD@jESRwGb!Lq z-+Z}yYVfvw7yA3qC$YWsfcNjR(}5}D-k*jh&Gp3%)IZBXJ~`WYsBW0d2aq%AU+CZt zkgl$u={|z2-g;_Py2#&x(7y=WAbYT3Yn62pE@f8eOr%h~Q-W zOoM;5u+Yy%M9mt!W!PVc`Y8j@CAG;rYGONW3oEqgk4EEBiY#gyvYvCayKk+#efFb*(10ba33 zDdoA=!{baACTRxVCU#*E;Sr*e`zzjO;08#bh4yCe$~s;E;lg_+@9MzA`441@TvFA8 z(Ki$h{uhg)qpEShr2Cszbe-&yi*7eLcGwWAdD&n0hM^#cRatyYOe3Lbe|ofChrRsmyQ2hm|CbO@a*0C3&fY9 zn=S7JeIi!g`|j^;o^AFGY>^fG?(fSSJsU6A9=KZVek9`TR3TymN(6;GjTmymyxaeY z_75^9v(xcNSX&Pr#|@0uUzg7OD!9*cH(2uec)2g)0#S($8#kC?WEhnP9I?58m|1R> zc_Vho5n&yBQQWZT)w|+m#}x|P>3YAj%zWXKXKrqQdUfhl>&WZEE>iS>YV`>~tj{_YAD_v>C3*?|+HHYJ}Cp0}_FXCT8aN z!UKd#zn~BM9@3{kZwD~5-@)46T&{U*!2TXk{6ll{Ugv~z))+OYk9zB7TD;nuC7{8F zNt;kj-~>{nb}{(z%*&!tJgvCS6J%>XS=fB9g`%%d!Gjgc|IlJA4u~63U|Dd>jlbqh zUL8JwJrd@+MtkuU`;T>1})e7o?R9@CZqg;)WN5M+eOusW9~o{QQ7mEloSe7Vr7 z(Gv9kK(f;Y^du&cpC&f-ue>Hh9l%h*kN2Wv%=iIi)BSyCtQ`YeBwRc^wvBg!>CZ?S z>ww(TmLrRO0epltf_BATdNnFt%)ZEm0~|VY5!VNG@PWj(ADSh zHk!%TG#wOwG5gS?!`We6GEl4hkKV(nW`T$FvY=z@KPXv55Fs?7L2PS4dot??^e1q3fW5>0xr98Sn0)u|oRB&#SEVN&Hv*CzLx|TG;N5jh%6NQ5;aqui?&JL{x zN#aQ2-PSFC>}qoWr-8DReA-T$ce%MEfTXh^6yfQff!7mxuX;t@M7MQPTrX7uWY($t zJU4!5&%6?D1BMB}7w~V0F9Jt512K5|Jwdq3`d-a7{FRnwsz+qSaNpDi@CT55Gf)x9 zI;jWfkWXHzQFEslcj!^Oi^fiMtMQd8s0F4rL@%7mBDlAV3M5mA2#UT+1}hZJ9iY-O zGuT#XzJ-Jnbz~+v>HTLNgK-|9`_x|w-|TSev(XSCj3GQA9ta**WIUS~mJc3&>(A|` zCn%Sk%Daf=gQy^zNlikfHds&O}%r)3Pd;=Cesu*}oOx>apvfXC9j*u}_ zqO9i3y}B8S+FYlUNt1)kbFV{(DDEXdT*8~nNBgjWcLIOWy6x)Y#YNuxEV#jCWQVa; zRjvKW=rz{4wC4F@;kOZ428Bj68^zj2N&0cZFI$hpdsv2LHt zI{mn!b0+Y6h}5}^n+OqNXV&wbJ>j4SSei*~lIB=Jr}$$n=iH8q`F1=4YGHJp``+)Q z*EE|sL9BV}eq=bZG^`&|Kk202#jsiGy!Qaj*zcUU)Db@b|?4Ogj=`-zIuf36U z+3gmT(vW1`J@U}HOCG5Ny=oq9%I^Y69BW9Q%KT^uINAJq&T*;w>FQjxSbi^e*7{+<2I>4#apq-7#=GC3ha-|plDMB8~}@tK>DdBlglT^dokSIVOMI2m}`diqcE;I^B1LT_BBV`jt=pAnPv>7^K} zb}?wu)U%U_;97xn@`I{zHX%_FTrG_g67w%xq)1vge*E zuICR@X7p%0zry=06;5RyHnj8)2g3Cw$aD4nxuE|q>fZr6flS((?do#yJG8JPVMQ(J z)v5Bc&FPfxt5T|9c|RgIcPa+0#bNGAj&nr0lIV6P>xYB2w{Ka3n2+(c9aNa(k9`GH zm71_k9?+ldbG9u${LkbJbg{1kwHBTSBc*y~Y!oyjlXJ{XQjp4SD*U60@UoxMPuNF*VP5TjyCWPm>#JWATq^YQQ;wD%%u+Z@EWPfs978mji$4w$i} z;UK*b1&Au^{F`~{-3eFYVVkMr!22Y98TIsL_7Y`o)a(w6svKdf+BrjPLE-ki*`RZr z65Fs7C4Tv=)7!}UYi~O-#!$EwdPpX;%>C0>Xagaloo4IY(ZnE!`OvA8>f-3hSz*_? zw6$v%j^uI3VytnqCAE%`>`qms6)fd)V)B5 zjRgl8|2Dko;JR)1&%)NltI@FO#Le5O<16)R)$*+}dxpD51x*VFN4D=rxSmrf5+0W} zCzOO>h}!@(g#}8TUM9Z;u1d01)YyHp9Q634^NEOPxLbG zu7=>1Y8KpOxM$#{?i{#FWb47)**vq`wJL%qjeV@>0M&Siky9Cf1V&mdc*-9Xd9CP3_wA>Y8j)`oJ5sV~dj#UP!om)5`A|Fyqq*xYRv03$ z4%-^wFt!&rVx~a)d>~fr2C}c-s4c$sin%elqimONT7Rh|0s3fX9WZU_0P#!zEBIi3 zYNK2*hbFhCao6|Y%NPc0R=hw)7ZpvR2KO8PdWigoMH$e=DrLIiil7Y6CYlD4}j%@;~5*T0~+ z=+QuAt3>5noTq#sXK)1gVn4Tk7g&89OEhQJMYcy3vu|)M%r0x zda`W$h&^>7#fUE=bPMVG_2j1~5E>d-G*0Lp#h@sR96i@LrGvWzP3Fcl)h9COugF+4136U2z`*OKBSOq;nIgf&wimL)zKW3e|vYzyD z4u3r{xAsUJ*7UJK1g-Z=?syX`oy>H4Y)E`m3Evz3JoL$xd2_i`4wYKx*ziE`8fx-J z6EZB3TQ%wfS%vU72brQhnIufS6JrgCQU3h9W_1PB7YAvBxRc@Ax!KNC#^kwGJ{HSsm7QYp#5*EAZA zW*ja>kuDZ$2k}Xm?JfPZo2U|O2~7|pMlB7`<&s5P0=&@Xc)9B}o8~hYM$96g^y0N7Or7{$V0?^{P;@MwX==}N zrh9h{_?hOu#nN_`dGo7NIx?kmm;62;Q)IUc^@!+O(0S*d9OW$jG)nEQ-*PR|K!PWbgX6Q>OQ+`YR7ks zBCexni)8EKt)G!@bI{0yBx?L$?uqcV`(ZGWSc!kxe)J< zdm+GhB5n&E4+6jWEZ#eG8u{uMPp23-Z#wha9eMmU zSRH5_=-qE@Fs(#IGi7{b?nE%g;+)iIuVZX(K$n0@Z*PNyM7BEqS3%J0ZtvIc0-VA% zuZe67Q039g45WwWNbg5PA200bIA5Bd9nVM0EW})y`qvL=$%#I>y<%E7)8tPq=U9D< z>-UX%htUg0FL2`XL^D6W>Y1RkI#yHHR+>q#3CGW;lYT=^CMU(IUlf8DK-u3+5oS%n z!n^I=aGgMNh9d%I9Zcy=hY7$nAL^@YXhRU=yPKNOd?M#7-%~Gnj{!4LV%-xVThl|C zz6P<+gCSVB#2LobPAW=(S!bRNe`Pp1IaxbhSQ>shyBrVjxYr_2gwNAo$pbQ#dv6{n zk+h<8UYbor$?x8q4!*j05SUi)5Ui#2q}#raRR($sTp{~RMBMiEN9TMmauNAWD%lK- zal96Yf^BY1Lt8nqcPHxqPUIUKBw*aCEP(|I~YC7iajmDae#W99dQ zz@XD*>A$5!Pv0;tL=Yj?aP#aKVF$^ml29uvdzx4LZ9u(g+()zFK$ zK6JdSvP(#MiW-@xD?^2Cy(bjq;dw1;+4if-aUv@_<24DR!Rj8-Wtqa!(X@D51^;H% z!FOj7&!w^l%x8xi_m4KG!lQynRiTN`lO0XcKX7P$^+EC<@)q!tHbBlZ-zuMCPJtrP zDUj>XPv2B1FQ^*a##27Zur&TR$7soVaKH3yvz{u-OvsmRYn+q=m$~S6i zvEPgyzvH!=&!Fjwfi;(>YaWJ)K#O*~{55R;J_<=6-e<&5e;?HB;SR`Ixn9uxmw2rWX-3xQ@V8 zhX0&`{Bt_S3o-|;eenH0a4xLft5cwS`>t9x{o-<4aaMZynIN^fQqZP1Q-xu7O}qOP z%yqx^sGhLBarHd4cCqWn#-%AEbggB^YVI9Z?9NN~;``=FCQp8N{pTkGSy35!re|2F zF$@o`0}7&+F6L~<3Ot-U7q7Zs^Q(p+d~_>%tNi)NM>mxELVtI`?yk)8Alb3o`U^MI zOtz!m-ESV)K!VCSIsYS=)N&iI{5tA{W81Bn#~Xri%i?IYx5<7~p}_&vu8B;F>ucJ1 zh8J}nW!wWJ}oM>FJR@E(2m`{_Xp=12*DT(0`V>f~)*u*(h zFWRA1S!zRbfZLPurvJ*5me|qRXX|ggC|t}R0P_YIg}4CH;M}WgA8$!u-?o!r5;j?F zKoy(G#VL5(8ALw0arCU_>abBe*m^Y4{eyTg7vARB3l6gJmxa~O9@WCX^q+-`?wu@` z%S2o}p{U=iVSl|@PjR-<-*An?;IcmrtKA(4dv_H_bB~iYyU3QQ{`ENck0cp-h-T(* z5>oS&kW7#~$us>2)~DN4qfg^;Z*x6H{&ynOd&=f=D^A%}7UQ-|(c4<NrAnn7V zV_&eA<*b#XHow5+&y*-2W)&0MB%9D=cKX;#QX7o2y7x9G^BtCGcX|1eR%u1gD zTlw(mtbScgm`T4qB`d?n?8A+FG*fNs()Fr^L(iW=T99f_f(N5?=*wpAVt3wnLKM6ebTqLkDccEv<1vvLE$8pjw`j&Y2{?gp@sV`492o}K(lLlcUo1Z~gREC#o8v^}qv1a`9XGz1G2 zR@*T(J!azLhRd-eBR)$7QjHx6A>)#8OX4vFEnvFAVg~+|79R)cva)`Qi$>A+QiOCm z*V>?E@XoFw@Y|I@DUDp_USR-uRpLF}72G*z=rns*I=xhs$)|rd+)0+Eguab+OwGYv)rwoZm z#0I<`P+S-&Ub?F_RqFEku>Sv3I6CmrJEq-rrRP86t2Y?`t~Xl$#;)^M1=r79k+0XihHL(-iZ-~6viCxK#itlqR?z#VTfWmh4Lm`g=t zZf}*rzY=Gd7M6~sB`h;uXt>b^6sq&bsicAXdq4@0UAZZVaqL6`IW~H?BoQO%K)}@F z2wMSqF*z*n#COa86=NSq#(!O)6E^*M*T1Q&OaCNR&xuGw%Ydmj`(JtJAIE|Jns~XR zmsf`vhin72__&tA!uXaH;b86fHqS4Lb=qy5BFjHlQpSDnSk34hli*lj?C<<@B^aF< z4+cdENME8hv7`@b3>cEU>_2-9Tc_{!+|auoLMT^O|H!4uvm=-ZVv6brIz0@O**F#~p!w}yti33l z7(gr2cH4r=LcbFC=m|!+oT0<{%*SL`0(cw_(u8eN&Um#41(&Ko&6RuSQH}%M6zRq0 z*@lBo;kC3Gmk`;8gX8b(Gv8Da+P-$a_9Lcm*E|ZU7J4~3X(T^tD|{JbG*rB*aO#}C z-TP}S)=mLC#XP=Nwi*+}Vse1MGT<>wET@P*Qa}0e4SE!(yj3xU8xef=%+2k3y#W)# z*D&z=e8_FhS`Q)>q)WxVE^{;Y$e{Bq{#v;6`A5983%f=OhoKihy`t@wf8|$?>r~u= zIhyU&oqfV@0uG@TcRu6oV`MNkcbw+f%E+hpoNX<9I)joOr$U7;X5P&9kJf2iZW6IH z%=X2mz6Li%J7UxR80~W+d}zd0_NAUc&$Amx#U@+ zZOi7EoZq_c;#6w_Y0g_R0iaSUUKh0xNoJcM(@b+U85U%?W$?Mbuj%jxi{B-x!!{Vy z?5u&Y#S8`KnfiDxUA*EMyNtZLx=L_T;|CdX7o9*2ksrF`t;}(rQt&z$Z;>NMb9#Y_CwKs{AiGNNo6Hr~!W74wIi7rY`I5Bh=T`ags(xc)?C!0AOC46MG2oJ=38Wn)!!GraAJ{wF_ z&u1l@7xt2WPD?$Uf3{hF7`;QkMUUL@Azq*-{7S>?Jh8!>5vY~}B#>>1#Vl$ydsX~` zOrOsa@81NO_|58kOxOjp8!(Dcs)V@+%Ga9K64GG<~2hF4crY402 z0g2RGpfsv#1k*iuM}5%!H!0W+lzjU=unXzEPbIf1?H$pSw4(6QKi$k3wN?jiF>RT> zx6EASWKya2<@n((Fi;KVM`s5sO#;I1?`#-{t$#J*xg3KT4PD<~1+N3#vIDf8Iok1U zt(?hv3WkxGC+vYMN;O!=FUo#@(ZBKflthYGe16<>t+ZQF)pc@gtD#jRDz8>%v%88LtEO{ALs(Z3 zQ4{Yk81D(}y;R%^lueF81>9z6A~PY{kMv|Z!y6+7HdWY%*YR^Z`d;s2rR}2620$PEUDhE>L2x&kHPq+tf zDHJfDbrhp^M(!)2a`T^f`;Qg+4%Dfr-u71X$EzCsbgL2-!Gye+ZE{1+Q_=7C3ooD& zO(RJA&NtpU()%d;H;WDp*#TabIaRtP;@agW^V+@C*#F4c(<9IT18IqwunE3J&<2a2 z3u=Vy^Vjts$sqURd>0l5=caN=^AANkp7d~a8_;bu1nw)vXFV9oPi@I>ul!qAFpo4@ zr^(DI!7djlVcgj2U5KR%vgtXR9bDWs4$txQ-Og#0UQ9C3Pb*#sNj$g+1xIV~I(#iB ziVhBv6^fU}IENZj3(2hV6#m60)_OHV5TJm^;;$8H?YvXnwwzk?5~_lO)P!%ra=37`|R$!_1!X;(##I6lsWvRDdUs=e!V}3ufE#OXj8O*Hfd39 zAW_Wk{Pwp?FR*jaIT28x(iz_AUi(Y|-1;k?3Hdo+v3ET6q+DicGShnF<|Vx}F>f%D zn|utjG6qFbcM!wh2|$d`e?}zUpeoDD12MS~&t%jHi;cxcO{OHWO208GjUW$sD9s|X z9@ThqxfSk(YnbCWnZ*KNR)4&;}DQ{+1)AT&g;eGdX5SMmpu3 zt*$^Y5Uv8vt+W_4Zr__$ognq-WIp1!!23DaB^b;ou1vI=s~X#tkq zr!M`vb>=0N+$}Dgr-dF)#1UXgKAE7=i?egnGxzZwV*|JGxAnqCDeY9knoEbO+~k`Z znh)ik6~FhmFm|}~*{5AtYU`r#zj;*$1iqk4R2hp8qx5igx@C1mE~Zq0oSpow+z}Q^ zwTpTKTg!!Fbgp>IlArKl&YZ9Owye(ThfoqXUsR_u{;R<|75cs>FVEat6uuWXO2xaR zxOp1!8f{G#$pkOgsPq@7R?lR}wx|SFjZDqg&h|QYuZk0mVjW97iI)R@Qs5sM>;L^L zh8dz8j%ZRU<~d`%7^%7c=sZ#`AFE9*LktHgvUu|Bl8!OI zq+5_jiVCs4QbDG}@|iCJ=|#k5Z%M=dLNpnKB|;{4B{UVWBZS6tR3g7=`Pb)Q>HT1^ zw1n6!Fn@7loS?x!IY+G$UuE`H(_*QMD+?O7CvPR5*W6 zlKZXbVqRWe_tkC2K0P(EE&@y~Id~84J$1k;&NfYVKE#+>6Cv19p@=iYWi03kaCnRM zLc$IO#lGjL%k29v;}va6Guu z$4q1vvPDcxrP=lcxkgQ7q8o?UkPF&m&8#78>zkpC^lM4IJ%WL>J6Aqv+JXbS_<|TJrF7TOUG|pp!)YTeJecAJ42*4RDh$>9JSL=GOA6+ zG%-s)JsSbb-H6Wt5?BJg*I}ZFMUyO8*F`{4R8`K0Haspd_Yof<`Vw}a1BuH3U z+>Bp%sJys^lI;4F*wph!NvbM_|J z2Iwz`OlXBoQzI-|oJJGjbZ?0=JCn+@WSX_6l_0s)w06;a(__Z{;zJkm(hYd>j~_i} z`8cPtv%0jphrzBfOmKc0065&Xt|?rXkR5)|>kc>AG}Jqz$F+K@jN)i=G;KbJPK!{h zP;%)^g*aeW^>VMR!ipxa8w+191dp1fKmq@r`hm>#7){__rWRDwY2uQ=2ipf9UoHpz zYgGU7hz-@p0RZ(JYP>Z!V^ryOJn*Wz43+srd-6&uyh-2su=XMO8(XlCqhc_B1Kr`1 z3_D)}mLNpiq?@(eA&|60GB(IPm#kJiR@frDs%*0i!)IF$-OvxXrGgQ)K_}=F^>c+V8B$E#UqFuiHux7#_U5puoh8liWipmVGI8HWmu&=Pj=ga~z z<&4!G-&-bK%pduJ!^2#QW0=}Rbyn>hyWh%iumJ&B;=K;2NTd5Rt?`guhfO6T^~HFF zSD@t2!oJX2&+t&Y6g~f`L)0sW-A6G^Z%-Ty#B6`6a~ByklNAJ6ss(+PJPh@B6XsK- ztQE^_8<(0~Wb`_pCNF%(Dl@uN$@nYBiK^<$z#E%dPrF#-#HCu#eDk%d=wq|TF@0ZN z1PoJCi`f1o40_!7;&DNuxWi9EnE-4~f|$g=3VhW^{T%GE_F@fvEjnk z?O8F|mkha!g4R7{f4ZbLnpFfpo=e z8`Ee8m*bjaN2pAulgWXk_fPeu^BA1VF`_&+41&t+v2Xg}g0Gnrm)tVaBef1jcUAGju*6 z+|V#|vVToFEr{#_@uguIXM|hEb9wZcUX(+FZ@&!&e zTv3Vco*z^2sEvob4;AUOEr*fgINSU7uJyeO?Qog3vOaXTCC~D?VXkPd)Y#i>M#sBT zMqyK7CI)OXfO5;5G-q3^%d-=dT2A^ieHh=a>f1$zdtY3BYj~{;KCj?5c2%D@xGAVO zUdKifaO8;h0b}P%yB!g*xN>I^%Bm@{_MVQ#3oi9 zB%xNvr+dzQ<%ri|(4}dIRq|P@QnC|Jf*A2IHY*9eI+ska4N5lYZ|r)}%zI^xmO zTZ~~7c3k9y*ZZ)71vu=1O$-DC%O=jHanuV4hIuPyc`MC9e$};_~yLq3K=8^>=m`~fZ zgNcgOiC&UK^nr2{-~3K(;%l_RrPIvFAw+Olu7XmGO*$so7`pXy4MC@ZF+r8GgG{6W(*$F`mgaf1CKiaIXv8#D`Ah2EwRK z9I9iNvEu$_V!7;k(4zB+)*@#lrdc}s+idID-)N4B$O$PD!CS+3*n0D!o;VMHE{x>s zy9id8i{W-Z^mbKND07ii)nvl3XZ!<)qRmrkg>-E&7D^lWs#UL>(fMAf@ngCrC*YFd z^J^zAEh*#s_G3{Y*D50Jr*vLh`1!elw3BoRGJBK~&>##ia0&*REeZQ6Y$X5TnN|Si!`}Ked;j6RS zLfhIp<8tnvU!}HjI$5Rb@0FJvBkS+^oUi@u>x(-uB!OARBUf*4Z@d1v2fUwa>fb-$b!yG5F({eaCZzV}eFtfsqC%E# zSv5bi;by28zcO1ZRE>A<8#|Me`Y?Hx-Y7*710sll;gP!-f=9^<@tb8pR(LTI=fS_b z4a$t-!EY*}%A2Bv?{fYO%i{0$knjxN@Ns1f*-E`L>K}jIB^Z?5TpX|1{orFp#jHHv z(^E@z7e&tKmEu+7M`GEwN_7z@(ZxyO^JE}>(4zs4$3p_k@_&0G@KB5&d~hW`B6j2b zo2C`eJ>f~>P%Ns`wzij6zA+MB0nuYSQ^K1WGgDMKV(`yfjw&Fz=2ysXp|`@1&qm-Rz15^INM*)(?2D*Q3%?qSLd?cyg13D*9q2tp} zTd`kFo7!LJzB{GlsJ`29k?FXdK{nPePK9z;}hujk2tUHH0yfv$<_>ip6$~M zIX$@Az@cIqjc7LeA3fXhZ_f@zp+YmmmgR1IVxv51I~)y6+-=`uxpLGG5Dg3v;gVKz zYgMxt@{u5w-CYHLt97T&%uzwUXBBIu%M%qk)qrq9|N1jbsZ$S{#6~=Av7q|#=G6yw zoLFuHSS8a#87*~|V1E=Z>9+>w{;MJa@!7p&JHaTuGuVc(ljX0ecoALFQwEqkYu7FF z2mTTJ>Dc#RfBos9&?yI{P$JYo1fC&#dpoV~kO3XEJRLW@F8b?rD$cjqoL)DIF*L zU%E2}v+%ZY@}ALZ42mGFCY>z|i$buAUX<|qQv8Ud7}#8^+k2V4nf|@aR!XCG6bpgv zeVFS#_IW4ja&&ArK~92<1w`8vbEu$5$Hp4^-@t4eD&iQ)jO8bfTuOcDz|j5T!n@= zD%wTYWT|o4#5KxLS=fouOpF|XZ@e`7=+Eq|3b7}LQH35|Mdlp{XgO=>6NUwT zmH@E$m8ax#j3lBqxNZ9dGpOsa5|Qeknc1IGCj?}29wJ?>N@srh$hDO7)x(X?u`oyM zOA>#0sMH~YnFk)U#8KS!=3j)^zgwk-6)b^|*Z}nmsu+rjU@ONjxF~(x@7N%?$BJ|t zxkMBkIg+zEs3U6IbsCFh2Y zsOQw`+Pl1?MXLNstl~soM=uzRqw_eiZ~0TLjx5`U@EF&}l~ll$5zZ>bCTse;j3DB-S&1YHsj|}pRAnz6^2%inU`QGuq zDK1>}sT-Xdn>zNeVq=smS?@J7IU0na?#CFqKLc|zxr;Xt2#Iiz1&cITilfO@@{?1p zQe)9L3g4kG<34nyhW-XL;pr9^fw8Cu3{Ag)I$F{2n#pReRNAK9@)Uk|^@a#> zkEY7eD~kJ%0`SP+IFAsaWvY??6xYJK>uC{J`;fjG@>c=gvftU8%q?fIyskCW<0Ezt zRSXtMG-&cd=k66ftOZmBuF-skwmEVZI{;h({sn>3l0_%X#=^vb-{=;>LENzw>Z-hl z2*>9HiO@i0K&6emPNC|M>3c|77#uY0Z@C@u;lDABkii~g1Dyr)f-mTy0;ZhFdI`6$ zn=4Yupd@!v^p_Mb8Qob-4^v?D1O%gZp`>!_;1YbqQ;_rX`jl+6>JS?Q@9@|*l-+6? zb3J0P2k&Qa!y;Eb)6?Q%6O@neGd@iCskQ?MSl5K6wU~75`yDax`(ZYImA+ z=hj@TFP2ipE3`$N$i%3qAT677zC5 z|BO&Xkk<3ad(EkC-PXOBF%7*4R**Eqy$dm*9A!1*K8Q=0mx(|tYBCJ=u6unib0JU) z4uzTE}ghRIa8rj+M zx+dUKK#S#)D){*{tlO4D0mOds+6eS$6UT@CI&iG6BX~4~k_v{uSe|fZ`yCXgHP!#y zpVEaLK2%^}v42m-Hq(|GW?I8zGM-I9Pk@;4-c-?vp{~yWs68(gkr%66YBQwXBEkzQ z2((;j8pppk#Os?TaBbR2j0AL&aiC|+wx0;VY7sjP5@VK)Qmo)OBSIK}+D$eS;8^w) zu-1)}*||G+@ULIK#n<2f-^VU`rPz*=B11AyuaTGrZu6Ec^f<1#0T+|yUm#B6+jj=Y zW@Zx;x_2Z6dLC+Ig6!!HOt#-38L)x9@Q}wSHgSM&z7a@@iCI{l&Ze^;$;V@5mAJ@X zBQX9!FCU30;|dpfW}(zl!VB^rzbnq-&2GU7VwH7+5KykBhIrGNuiya-MPlQUE{8AP zr(-lz0gv8|V$y=>a>fuqwLu3hI5WIjE!}7mWP1RiYc`hCz+;1yc57-nxAFs{+=)rj zO#&*qpCW0N-C{ftjRX;aF0^ZDW+U!mf$zVL9@E{wU4PWuFQ-Z_?YTgHT45J;1GNZ? zi|u?JpYl?E@lB-+51O#=z+w7I0VuO zARLR_xuvI^ND~M(EVVniAQmbOwxhcVM$myiMUqFNv7T}ZDi)#&N+L!Uiqqb#4*iI2 zv7V>upZ%j@4*Qr9H*th4# z#66tH$^EO&?d{?7AVNq?*{_>uuXmw=(}O-j=<(P_*ICOI74!7#h5QaSUw`V1tL-u@ zx({JdgF#AEoopYnLQmqjM=qXeC_d(V<1$0m*PMzQ5tkvd=0)@4LIip$+T+ zk30jk4$4c3186w|)KedVEuRFam2BE1bSVnk4~xF=_C^cyO?p}Yh!4Y=-Cgt%xi}vt|<=~^26mf@*XW45Ooz1zi zFmI|D4P?$Da5DspG3nh4Ei7cLH`UX9fD*L05sFP(xV?+_*u(%O`3A?p^ayl7Ui?l% zcOku806Ek))P6Liq9?S7k%8PIpv<`aN}bo}t8|&w1#uV^PiV2TMlo(165#LWKv8Gt z#$I- zDRx>TQ45{ak+M2;&FFW`!l=(a@f?oY{ae=vVi2w3xxey!z#Vvr@B<T*@5)r}0pC2FhOmB6{TD z|AYe}Y%wfpTtwfmOn&_W%i}lwG3(}lRzL*OafmRg_8rG+p&Gw~xB1qj5MELQ@WKK7 zra@j15gs2I?}7S-XXdB346u_bw$R<15&~e!0UB?<>(WoNDJ9Mh|u^l zqv?Vu+ zvk+Q;H*pdUJu}iT@m_NdEh5Gh>0v(4CIhg*q6`ZRQn0zf@Fo}VqV*NIp5w^~KwhZ{ z@;YV6AtwOgw3{+?1oRYnSQe49hK#|}*e$A2>_UIz5Lqw6ok)P_A9i|PEcMa9E zr-gC-^k#*<2+hFd>Wt!tccy-icBo;1mmF>N?;NtH_+5;4l=r*SW-ZbEob0g#p0cTI zvDomKeplaL`L$$F2dHR8(d;)B@BkVri*$1uXBN{VEdY^??lTOP-S_|?8T^DaAW=Mk zY&#LPFAS-qiJ|sglM0a`nQA0ut2BC=kq)fyqy}hj%FTG0n&1&PAdVPE6dPC$u!uj!w)hapO1^ z;6V^fS8s&#o2!VF?=8+fiPf`Bmpl`M1h%ANJzV#wk6tiMHW2sg_!Zq;TlCho_8NYI zyqAcH5|IV9<=55D2dBTfgMUD_&A6WY(gc)vbe%0Qs0lCThFG=RVsFSL7A}XjS)=mA zCJjL&`~PF>E2FB4x^~Ywba$snhaioBh%`udcehB_K?J0w8>FQhqz}@a(w)-XbvN(( zeRqsI#{J`9IF!BiT63=X%;%YNZZP}H38V34ylRdG)~Y$NGf%r}1Z*}1dh(<II#YgiRP%cL@k+UcXY7|rPgqcpuKR1vjz5_g(D4{(1~R@}0(>;(B40Wi z7_`x}=cW@k3Am>RZGa*;0#)RfB`@s%!2^o7HB+yz<3v4~09P_-Iz?Ylhi3#ehY8Kl zff-%`0(_s|A6*pU1b<3k7~quSSf8#ZhXb$+e6Ppu1}$b=Z40wC6`0@-nH=XKpab60 zOLp<_dxmZx^T&>3Cs;bDZ^#ndSr!rnK<~*x#yArydO9~otnukXN)64(>!U%~?$Dr`(d0*8_e z0LJ77L=^sSQ0^OF2zAua0TLF4#Cn$uc{Mcy-Alrvi^8hif-Q!4$=6~>2Mw+tG2i!4 z#DUTsZGxU2eqf{zV81|f;uvlQpEa4a`KG^_0#Bd+aeZlXC5~PRB1M?ZGbOr6(p`EwYs!Jj~gO1_5t{{V?6MgS{lWKS}U z)0`RT$A{U1IFw$jiNR^T%Xz9qe`#!d5>zcX@2#jRp6{G)29cAj%v8tx6cr#-{R&aS zNNPn@A?;b`p9{dd5o0a4z16AFx|L0Cv%vE)?fH@_qW2wMC;-?X#aW3SAdoT`sb{UE zH-0vS!CoDl?_V6QeWk^A1@BuX>(13uvPQ4nr}j}RMR2esG)B}CLEe=XM9h0O!|$9GsU-XXLKX z8qooEr}1^21Gf?j_~~k`Pg@$s_7Wrq?Xy+)7?en06-~zROuCdc+Yfn9eZ*kEU3#&R zF)+F^wJB-8;|z}53A6_ylY3o)e2*x5 z(eQ-*C;d`!&>D^;V^^_}%0{eZU^T$At_~i}zt9>nKzJ{2?PuEXfU)%lwcLdOC+*BTo%JF`HFgJFZk*L8Ne99tR#~p zDxL_imGNIf>L5agGVl;$gzfvnNP_QGGA^P|Sp{z(ELl(C{aB-~4<5Z=_o^0-LJ@S` zUhzxFx*|w8%D^ID?&aL!pDeVielLOV@#-683{>o8XBZ6>6d=KXo1SM;I%4VqC?(Wg}?@!Pi?&b;xM(uDb;o-r;cEnd%rrpH;`j-&b9 zO;s}6$LaFAF*NczJMVh_O2ayVXV?GEMgc{D$KYWUpe1l=g9ic959l2V;EQ+HKX86P zhk@to29J24PNa9YMAoLc|q78PyQ_by84+X!WWT+n1O3%W@yxVBwB0HPJV|j zc9hYT&o}yMBu>~6{K>GHBs7*ba{65h0BAu!LFBvo)L4Wy@70pV*tkwep;IRuzVCwg z2!MPObpKH7k3|AT5l;bdw)D7+fR6zFbpOx2DH_mlE_w!$7uU;LTJ9s3Hh`Ut`VziH z;!O{=LCoERU5ZDy3lJN9d2tj>VFNh;f#AQ~yYxa{bRw00>8BYKhZCqlRs8NfD#^_)G5TCYzXYlq*R{Qybs0(A{wIfeP ziI;U~S7lxfILc>Xr&kVv)s|A#$Ti~w+vjjA0!MK$%fTNKGNH}}YgKR-&T&}*XS;SU^&v>=y zvPidl!*%daD85l|uSeHs_d_fwtjFsF+bG@=w!JlNn$|8?fKa}i%D9CF%IKXuK|ilt zeyA(u7cvg~;}>wg-1;1m30OI>%%)cm5ISTG584>g;}7!rqZrhN z?5w090mKLqsuOdNEo3=(&Kn6JP5`HQ2mXg$0Ze(BP=O7%zdEaj55k$FDj_!Cn_&60K;}!b7;@ka$apy~5Hl4d_R>}!MG6(> z)`lgJG58WJ2FF~Cah()_!@9hZ@RO3AuBi3NpqgS9T*+Xf-P4a0e%mkdu1xKiaGeov2S zM|qY|RZu-{JP}qd=%71obWG+08*t#w7KPOiEqLmz#;uK;t`D6a)+gp)FHWvcT_ckW zD);Kfc9JhnAXn`zmb^MtR8-u%vj{6umFc&U};GCtJN(?W%~QXPSHcVJVhYC zHzGgceX&OS`ma$xpxyxTiogYJ&&^IIK`OnMM{G{QAeE$Uq3?kR0vv#b*R5>-jyNxM z9>@-km7PKsJS)eSX&eVleYw4s9J(Q6R3E577U~lHkVHG9e$>PRqf}pHAwQxpf#^4; zhm-pr;nx-n@<{?{!3rrsKHZy-Xh5nCi-B*^0wv=0opCTT!~(N-e6~*Zx>fZA?hDth znLvVP1)Gae)PONY{TvXGfx)48RDsBk#kP<6L5JYUXsGi8oN|kft(_syoYM{y$a{74 zYuv{i&;jk3UNF3#C@dUdbqZtw{$&^Ct+bA9#;%5N?|0kpgbd)d#nL^UI7nsFRrqo& zR1?b%;xoBi+i`>{l7Bv^w0t3Tc@K{f&WHx8 z7xOe6$HIq*PX1NMbC^)}l_mfT*r`|ZU;g)sA|Ts6Mr~lTxRFO3DaAu7i5^(_nZyBt z6*6ot4I_YWQ3KT{U#8_st4}!yLS{yugAhy?fc@_tE;{020+o0_{}V>>Kmh#lsA@QN zae*B63yWb=CE0}u(MO5S;qw>i6Q@SDn3E%Pwl!$~N5Sl(gzBc43o9l3|{5^|Noa7^T*7KT1vsw_qL3M&E3eu2FMc5#` zk-(N9IZP9jr}8zXJ8UER^JVi-vthTB)6f70EC*%K)dLlrrKB`?Hl?q1jrpFJTN;hlm(Q0p1tBo z>T;hud?!yH%WDFd4A0VV@ks)tlDR%qA@;)*vPTSvmHk5eLEb7V-t2MOnh*CWKom!e z5hQikwyqA`erf;ZmVxDuvc*yo03==bP^(#+-@hLxs%n^@MxJ2wAB260!X%5%bA=s zxK8iD?ATDceRm;f{kHdGk3^8<%1^5VLf|qiR|dJ=vF+}nserC7C@g#oj!QMi~{wk1#Fi4+-!>K)*Bk zsuUD|f=k5;tOHg}83B;Xqq=x+HedpQXk#F$Dv{55DA{G(S}lNj)4 zrJYpTRayuoD@aaGSU{Q%sd&>UA?EhxhT4Bl^4D|=)%uNG0F5cvYtW!ey^!PNl*B3z zlnrzx&|wca7<7mZfOI*)4eoStBd}ppQf*~&ce8r#VLi?(ir96wUOmS5$H3&^k&FLg zPc+Y4wNi~Ff7EfCyfM8hMDHcap+YE`K{E&(hn<77MlQ(jS(I?<7BHn+;A5!7-@XRv ziYAIJ#=|f`o}ll<2Pi%7+cPV}BLd(Tze7V%VJePif}pb3gLer@Q)ksW20Ce6T#!n# zLu&m{2)L2YOLFatVL+UgW8Nid8 zcO53!SdjaSiwi)BI&XR3y;x)jWd)ETIiUhqgF=U0l0@lVZW6Nv$ctel?7=Vep!$~% zy=VBf*5!rakdFrn`${{{zT4T9^_cmX)0EAG9$WUfBJK$(gpwY_0DuL1I|n$r{RWGY zSAFWG!Rp?hz_ZMsY{;f~9^Nabtu#I9TwaHY0Eo;pdbc?P%S2F2iKe-9ql?FyAJ2T2PXPfp)w)=< zxAj=-H@5;yQkLvDPmkV0z7Nvcylw~lCuqn{^=Nw0@OJd8q7WxxkScIs!y3PEZ5l|T zev9Vd=~|L)WA+5B^`^q8s#;R4KFqb$$GE+2?VCE4D;Oa(r12@^io;s*E&Ny&Lx-k;ZSgC#Rt@iaPVnEq1=wNW5wpG2Xn0~G#9f~rlxaYJbfu~3D#eZ zk+5)~TOqy>sK$1+-y>u_+lH(E&YswMy5ddN7+(cPt@)c443{8{e~}`M3gOy1A>sxj z18>WLO9)+aL>A&83JZi^Rs2)q7fE&-9G5taa``Tzqfj7Bd-&;YD=v9{#z&C8gkk-I zJB<^;hj&PV;^5g1sJ#61)uFDC_tntmz~>Xa%(55lj_L&$94}G(A4n_qmu`Oq^jM@7 z+JT5_umwwWF`pNReL2YZE>}+L{Nmkmigf}ld!{X)ZKz{#q~y9;W`D;NJ>`528XHT3 zMq2`#;``EBcdftP@;j}8P$Xnn&b9)0tZy+2LAJt>tlH0Yr_ptbv$RcY+`e=0j`6>KwiKfv`)FHq373*fSy=o#WKQRI-zW6C_zEaU=^{#MB&VUX< zKin3^fh2ZA8uutxkL#lhgDL&CCq(`Bqaz7g){wnd5GMjq&HI*81@kxSpBiOz974vC zWz!cq@dI&m6MaKOrezCJQjq{$dmx%-ZO^z+?;x6GkU9#z!ywI8Y!8?=u;DKE7>9UV zp3#}~h6X+&(ShIC@VZ?fm+Dmst*?uR;%>~aEv)U6amnIQ3RO}Wy2j=WN7p-@e)dUZ z^N!!%kf_Hw0fDtX>%RjLlNm5|AVXW8S+t&9)U27c+XHyPv9w_braBuB;~BjAy&Vqn z0BY2ARGi8X^gM&#n=ZC+`H8Ad|`TwbhEq(8Z! z8MJfy&X02)!H-6)AFCocuiZFwu1?W|bW1eDO`t@YD1c;86HSCQG%>|X!4 z?A%}QSy>n&sG-=ArYSjE17rdx?{6=Yxx?dS!Vv^kbA%L_{QA z$mQ+8IXZ<9D4d9Gtl95s@s?4)$8Oy`&(`&L8i9Hl^ zyg|D;@Ks?BYi7EAKC!5r`hang$D>2tbm10^YX|+%GxC-(9(aRRkFX5eLb5ji(ZsW` zcB0OP0xKYARQruA8A%e&ZJp=JKb!zh>wUi#h$J0Li}IjdHN~VW`Vyrn+P=5^$RL@c z66<*T$ieUI_L5dPS&}zGFYfg3HmQcZzMvQ%ucYY>@L7EFSuV$G!k|E4dOWbdy688J zSIB}?82I?4jQtPuwV=ddkbt991Y&Jh>-~03%_*}e!hxKScA=v1da@-6MrB)IGWfX& zRBQ>Tn1J~4r_B3iEbHG?HXG&p2%WzpvH7y5M~bYc<@GDrD(lT!YY#a0289m35%&%` z-5fgH_mKPR!%$*|!l|SRtpQqVD*jo$R1HD3P)-?c;ox+mm(hUMzbk<0@Gm~peuFq;oS6WC zLJe%tW17LczZZ9hmM+tdUp&rqu4ztgp4cLGt!STscv4|soyOM$accUqn=nAqbagT= zCaqrH8S)h3eSIY1BL__2Za(j4h$=^SXiyUVoD=gp*yO22;Kq3mJzt-A`1BAP_q&>^k}hN@Ck`wwfEe+_zTw#RBVkSM0# zF*m+oUQ=K!-Y_CdFACu9D$Bu&??mw+!RIy<5r2Qd@~$FjSR1?=BZv!(bZJyMGtiXRM^D6yWY*9O&peP z?4@qLHC5lB&8=?6_7d=(-q%n2lE)(uCnY6pPK%*$fU5FJqf~3wdlfs6yq1kVr7KpM zRioSo!EU8q{gw~GNS9I4u@n`-D7@A0Fy@j>xVU9r|0PFE%5aLJ0`}YtsVJX0$)^pI zjFWL4=FsMYP-)j~^F(o!UdGudn;>iMyt^&|pp->8;E!*IdHEmz7z%N7H5eT6qr4Te z#*~gWs+)aEy5_i8W)kuwvY9aNzc`$=q}FlU2OAn1)_vQ;79qnQ4&my3QjvY{P9a2| zvG-SLnnc8(shHOcF-PpDi%K)L5`f*!GYe(I-?#*D?a#bv_$DQv^AViv>sR(0?)m-sxxnX5@kpII0%vyhfhlA(wC>0IYv;Ww6zTSMQ>o{V1Mx+bzB>jL&-dM^ ziw=BwV$B*j>{Z_W6d~86?9dJQHLE>2dQ*RZtZrmkWsIIeA{7p z`{4e^ehl<4yc!Kicj#_dIgi<1PkR~KAjjs+PV$WooOs4SO=yA=r zODtX6*@?c`<)ZE^%#z&AtBsFnaXX}1Y;%=MVdvn$?&x@RL#zJ|9x>IY!qNqO!vFTB zD%S&0wP;mk6u#cy^>7PB-@LBUZ}Bi7VSn_7gFxab#pkNGJ}5!rg1$s-$MS>|F=3z5 zh$8aKf!aLJ5#Jd6hB7Epvd{_O(Mo?GN~xjd7as|j@7<*Q?fm%8Vd;*2{`!NOuu3SX zbolNu8Px%sqsA}S3(4cj6;Lt!qst=4G7yYHjh~;NKHhTDove4em<_~}r1{r8wf+Id zwUJ(0GPqE`eW?BV=Ml0d>CXuL!Y(7PLX z)5>Rr{}@1@X_or(XfKjPcgL7Tz53dhhAG?8)Mej4ALlC@(srv0T+URjP=EQyHCABA zdqh|${1`Jasshom>u&4pOJtz(YOo2DA53DTLT%4%`lhCF@lH#?kr4A>HW=X1#CD#< z;%_Mzo5TN#40n{T@NOKtSe~xma=l0k5lqTO%zOTGh@vQLXa>)EP2Vr&2vZP#AY2dSJBW~GFi#82u(~J!f3zGx-quSH`{;St9SCbJIRZA^bSZ(_= zTcNQW7vMir!kaKQ=u?)HbRyU2Um5)xv&iQZ%Onf22yQ0jwL_X9FQGC&M*r;Zng%D!Wl# zF#?yyMv&dxeLe>z6N#H)gWqAy9+NUVxJm(_q4({)%eX{u(xon$3Gl%RGvXfU?M^7D zL~r-R%r{W)I=AxoAF{TMyU+5mokzyZmS`lxbHsWpXb9qGDs%%Wm)fI#1E`!_t9gxR zt9>imV}7dtx6f|u_ydz_zRI=(P-{>^>9zIBb>U;t3giu87NaQ zdix}mNw?PNeJ}71J3%VQ_}cOz%&XDe%mfS5ZE_`O35R%6_)R z8t&>~*_zi>x13Gu7sq_vao+d7ZM&Hf5&SIi+4`Ol{gxaCX(D!=4>(<}_Um~}zYKB{ z=XUe#YLRmW6WKaek|M9A-aN4Cx^X+6(gDRvM7t|J)uU&);#f5ZkZ#7MZkeZl*A-eN z7XHZk+m~QBq@hC~tp>lkHJE5*^!$F{fyZXL=UU|9S3@GuJ!)8w|McXS{MI(}Oc=+B zXe29yfF)53(;>W{>tJfPMybHgGp>#DaUa>wpbZ}h>qrxG(uR$eRv-+YEx5;!TXebQ zmaXS@cqZd?wL^^CYL@t~?bJ7+(Q@4yQWj0t&MH%>1hGC9Fb}QgXSE^~jA7mSk7t`q zG~2#U4=K3OLJRs$9^f-pCi>BftpW89X>Jr3J!J1_69(x0*bip{Wa0{GME`sn;Ho{r z)<}AzueKc6cYe;WJCW-X6lV3eDdY36`S^@?uDEi9Y)YBE64FF*#nhp=`_Wi3lwYeh z+8X*o;Ot%l)DN$L4LO^Xs27O%ReRwl1SO#S91hn~jFoC%A(9{N55P75^V?x`_-5_L zlw92+A!jsRzck_`MPS?Fb&H!nSqPi#jmB4Y>x`KUTk&pq3cjl2{;C$z1~+cL$`O8w zep@Uo4zG~;4x>Kf8EJvHwEJh2{mIQ5T+Ix<0$~JIV)@7AoNoE37_5?_*NCPg->Q(& zc=QK!um7+&Uw(*I-bi4VCwWUeDP{d|biYK)eRy%2pTA~u&L9uFY5P2AYd3X(@au10 zqjr0U>*4pT9V-J`Mco>deCB<=pGjD?DW*~;J;`gxk$LT=(|Vp9u745X3%MULmG}g` zdzuWDa!d&5-rzJ~bO*i(49*p!l8>f!b1B|wSR5l#7I4>T(0UgghGvwX% z5k>M)IBgzBbck&csBY4;r-u`a6t-}e>y#nVKk{QNHM#xSmM2ReYv;sDwv0j{uKqzQ>%KY5#=`J8OKMC1OIOp^(MYjre{(U7L%; zZOCD-qVa!g0i?I)j;H42Jnk+~=Id?1+Jj@CD8Ax$xEejTg{|83Z))3g{dy})$L>-f z%)ttAT6qc_D-t6k7ph!2@W8Pul+TKUAfPcNR5kf7X%~5!kL2zBUGzkY0ZQNE#N6yw z!mjLfnO1Zgy@VkfJretg!||wQ+n=ffdKHuNPJqw<^+q$%{VscJol$4LpkN#PIRXP% z{Q^jCONhyI(WFo)4{TJYCrK9kgHK|AgPgSFwulbNu zp~n`e>+=fZupcSj?E7w;#LlGMcVDp*auGLO7qirCv>U-RkYv&w6)EdVM(v(W^L=9{ zn(SGxqaZ7Zxh-5~k>#37G}dT?6-yuNF;#l|+x?!fjp~Nc`RLyoD-|EaN9P9d zNoS(@=WGx2GMarN9aemVVEL^hN}$AwL9~tX48i1~Z;2|iy6*p|uor8c;WqK>%6Pxr zF#3#(pEo2V#~Zv+Z>cPsq<#lE0l1_1NB@hHZ2A2Hg*Zu1Ek!%0VjcRofJpcS3!St$ zo!dRHvFJY$+$D43*QA2iBj^51%ykIEkUV%6&u#qu+uzNg7MD>lP*{gcFp#MBbQOb} z{MlnjMMlmOXSr3E2w|e-He5N!jLGM3k+9#hysGCnNTu%)m92%d7&uwGecFz^S4#q* zbJUZCER=u%l(jwF^9v`ni^h7A`|}0AFr^MytBr9qR)tOGo1CZro5!zQmi@)#&^G5s z!w8b=)-!=$JOT$(Ei$GLmovs&aw;~BDqF>UaeP!?zv8YQWi0SJum6q}C^-~MXEy}1 zYPF!NP|n9&BNz$HvK;!kJyq!oEV3kIZhC5R#;_Z-K-F3NdIFJB2a00NTa3n4e3pN; zo$*+&(S}q^DRJz(~vOKrC>|m1Lo%;{8+fEnf4i(zce3I*ao9YX& zRQ2qN?pg9(5&58jl+WD0rN5JL)3H!|53eUCG^o7|mnGVp8L;o3GP>oMK>M$4w2Qd& z(yJVYl4qSy4TW(&e|$Db=2MQ77j${7U^M73Q$P8R0%Sx!qVH)fCYrqXKva|h|nKd$PSu@0y76cJiG!geR;$MHHQ8D5UC-CO+0E= z;)=CE5saq~ai9kcs`mJRB43BIm=CD^n`@>j)+ljM?_c@HsWN#PO(pyh;4&ig$~D_x z^+co@H7IRjYi8*Db-IcuC=QvWz_pewc7U-(8>K~Qd`YDeB zYa$vD)7_gYI$hsFi_1?lFBM`vn)e?2*M@Catifza8!;%BUm1hj&2HENb8LTt^y5w& z&JdN%IEdFD-01)y9tknqYcQZsx43-C56OvU^rhye=6WXa-=aQfxy_~G4B|N--=BQb zy50H*E3PnG=dzE>ONaYW@Ah8&$>GNI+HdQ;)}^<8_Uztq07#td8|8BNribBI;ZZ2o}h3%+%nGmO7<6gQNfKybJL$Hvx=52Yk3( zr|S8JLSzleY$%yY1@<}^tK(}HH%T{*)kykd9L*2XRI|-`n>l>VKXKpl*43WD1q;t4 z@7crtF`JiQV5Nrtp05-={4Q(!nPVTg=d32{g}pBJY~w-nBrTtRYb``cGkgCnwtqOt zVFB6RqszIL5*pU?hRJ1ydtV=vBQKhqrQa+}Qy`NJ13;m3cEJjU{*k3A{TlSSyEQKD0_@DgNMnH$Tj% zT~s{&)s}Fm6Bd<%;&$}N)Xp}AJ3>`Qj3cBlwdEIlD8ZPwJg~k;y3ws@y zr}38e@)`Q)^JNH0v*}fn3%G1g+&5iprwO|>EzfMOxgIHoU$haXfEI7g>Hm$_V2K+M z#BmPV>o#!D?O$D&`BVFPhkXKWz1O`4=XzRaz4nm$u!z@QFNz z0#kr+eu_KbsY{BY^-@9On%-g@548OVAgectJ;ji zdcAT<#{K7CRjNUIQvnNTaE6Y>y^FD?;zvAXCr`0P1a?D6G&!7SIX5>dY`pP2*N+Wh z^;eDReL~K*jHXMj4jhR%JZ69NPvQdqDt?+1IKZ14JWsFFt$wUMNwO+}Z#EP@kxvo1 zw2|fdhz?N5&6$eXYO#taPzmS6zg>3TZHf)G9r=Q=TAO9jwY{;!X5kS(oJ`u_sHZ9W zf!zB-hdo!F(^=vtVTnpRPMhxU#q9-Y&BaHrKIz(hI!oe+y#5m=jRV0_ zGYmP4Pe5x7f#~d*SN#K|y>zUl<$v0gDBg;9S>R-J@738w8c*i2MSAM;Zy`k-=HJ5X z7i!o6wIQExRte+)l%9D-Rv9KH4}VxXfdHN~3HRF$HO6sB%Zks8WWsD=JhQS^#c}z;&RQk{F9Y zXN(td7e`?`2sDX&kV`W9b5oW4R^R1cqi@K_zj3)qN~IaVsFr>2a^(f( ztK*pBK98P}m(&4gz-*p6oKl-ytfw4C`LQUh?!a<`IWZV=Le+frT77RSrl%fgn7cU2 z7f{l#R5E7Own+B@$i?-;wI5(WsQ;?Y6PI|W)UBq%9J!aY9To?Q1L8=1w3?txX@>VX ze1-!>4=|lWo{iR@csd5PmCDcGinRM1P$+3ySLBhazg*Z{HK(QGRb3i;MfY;Wz3Orttoua1_F^`l%SOO$E6l*a{9`MsKEWPWn*Z+ZEJ zi8e|t3cGg~%|Dr;B!1xKd&H=x=)Ht{$=%qp9gHV!BUCst&IzgppKRTVW zIl2jQ(w8EV?N*aWc->-}VKe*KESZ}`+12rm-EqrSumdd!&8sNo4ZGKHTmK`ioF9ObF=b-Yrb1io?};lA{*&4CBY2+Dw8sx8-v9V4 zMIq=Ka8dB~fM?^7>ImYT++b7!kXH66ZS%`MbmJaH5q>LTT&0^PPOB z0jW63$_X?L+imz&;rnN9=Aiu60;d3>-~NW}qoo(`64CX_WE59=Fe2`eLO(DHL*?h5 zF)6<@;^jX+g{kjTW9{g0F#u2*XZ|z$fE?KP%hiE3(0ZsUfbz!B`)u>=ayybjCVxQ- z_ZSaT-C|3SbA3ZD!YUfkNUqM-ndF+p6=b!d9Wz(iSAeg`QMdk3yy=33rp-zLl$hBz zQ8*6Nk|+26nyHLOi|eF`;skONx=**cDmuH#53Nk<9|!&(hpE)P;~<+=<_iiL22gk> zFE{DhFBwqc=&(u9`5GXJ%kqvzW!y(FOC8MLBF)#@lw+rGICI)e-`&iKgZWAMWVzqC z0toDhBOUR>JWFyd^f!vq#$ZRE{+}Bo9d3>j6)d2&Wmb%D`jZv_k$7ST!PlehR>fvJ zviH=g0Gg4SPMbNIhunT<9*tKSx$W9L*J$O7QJL~|F;^Y<5H7+nYBi6tms$>dTlthr zwj{TYRdJ-$)TxzF0HU$@<&4q7Ovzsa~Bbi<$U z%w9SSzng7x;CX-mAFi3#-+F$2?@q{b=2sBm2*{yLn3OnGM}MdoOza%xt;62B5M}r5 zke+JU5>)$qO+z%tXZwgug-y&(`PA|#?)bYLq*v=BF|=&7WX)+ibMeg?2;pcdw}VQ1 zikCm?hYN^%!wy3}V>IQ6N7jGG>D}qXA|D5vl`4J}j~+-T&riPgimsTBCLCWI>4o_?9Ej_G%hh&2Eho z-I20r08h7l_ji7;T}W?0tYG>R3QQ)BuJb8SsxMYF&!zo&Z_;X9lp_L<)n?94y4Z@~b@*x6FEH4`A z7t(0_-S-yDx-J#Y5!Ww;RKDI0Z%lxhOSqk@0gshm`f2FMnNAt=DP0ds6b?`C9ore% zORp(}ApZW(-yMOo^1?)0KeE#5bWg zZAa&qYq^Ek`1pD5Wk8;DdUp`SBD)aO_lX6hyC1>^y!HEzf`{??&>zQTODAa6mPt~D z(EyIw)9osUV*)J@6c#hYH6+BMl)B?fR{Jv`?ud$t_s6Tee$XGnL$)Cb=b8oK{9Vw%jScb%z~1SOto zj%0Oy1D^vyc|IBUXlz(^4S_#`K6`s&idcN598P4c}4Ua61KJ)6hxMMF>biG$)xskI8iGVbg(A0hBd>C|)qK^0PY(XsT9 z=Es8UVoM1yhq8qA@sRMaM!=k_*VY@dDMVZqn2O8?XvtXoDVdD29f3ZwZ=B{L7IVwJMt11VThZZtLLePN`jcZUm#5#cKy<5E{C&a8ExArHk1E zWFuELZkZ9N*_(lF6g#~1bu2i>=u=DqIq2u9pRZIFKbfj{GW)gMNGCJKsL%bL-v{Iy z)zOOr$ZzlKH(`Vm=_rqzabISe#86XoEM09hx{Fj(-KT>8rf%8-95AL*2ET8|dY%rL z9}pJvs*~tyBtVHaT4$f^B4rY|ixTNA_MkvHv@PSjKRSZZJ(v13(zu;T`XVleHzDj!gzmTxd2J|)=@GN|p_J*YK#E&QCIY?I|6_p_S z$~XU?r*h&z?~RUSzS&u^XHC_YZMDTVXJMM)V zIre<)9)HGui+b|FbfE-Jzt(%qlf5U{gdqb^<|+B8U7}GEAR{6x(cC95{tjpV%P^o3 zEdQQ(Ju}9dVZckiQsOS6R(@6$8^Q$Umk5iWt-JoIU08+#<#W&qIa+G^H~cCqgh{2K z_M6!8eWz4}Xw^C$O`8QkC(e}gIlVI0Yy4=PJJHRlaL3l49URZ3N@G1?baU4O%cG)S zJ)@KFXD)j&(X(0k_8Tn|-Tl#LOe(P)@d7N1WuOyS7XNYf=%e@W#8!#Y&(+=`Bf!kf z?&MIcT!4Fpmc#;X;bL;Q#OvP9%|H|MM!T4M`zfzT z8iyi048&R%c(y&EmQl-luCZ?l6dO2iIm+*UP__41lmXS#!Tt7(>*04Y%EC=5y3zt< z5tk&%M;%m{vgJ;ZCMNPR+Aku*SI=F^$*dLnO<+ST?|^MStdFuE$daeNCN`)R#2cf+ z5G(V##1qI#PLEfTa9G^zhL&37nY``#3!+JbMR*;Rf>ZX7_tC*x`-Nugj{5DAyEvtX zjVvo<4;$#*c1z2Q>4^!l8)KRJVI1D8J#f;ETTh4WT}=|_1eg;QdG zJlZsk!j0OU-UM zmr27Hi?I{Bg`@iQTGh3VE}#$iVQ#ll!Y({_*vP!>>S zwLqD>pUwobCGx*MqOgdjitHELLWlg|rWJ70YjU`l(Bj+oe9`e+KAOkNCXrtsFKRpq z14@wBX^ZbYA>AaR7-v*ntGi_cNdQ#{hFVVwi*p%4s`)3g$Jny3Be-K4#z6TNYn4_8 zhF-OW;LVNra!DsMKY5-Pgc%oFS1Q34+p`;Ug`|*nh3B(S!&j{KHy(UJKPgOCO4fk9 z5&McFMH}ca30?PTtYH!k`eHvGo2C5wJHA|Ks(|c&ipXRMW{$y(l&SA-ZNqoQaiHGU zdzeh}Wwu2sg*{gySE=~SH*v5;g0mo?vw2oVy<~y^Xp~A`=kJV{Fwrg5Lh$FEL=zG$R ztKaU*TJ*${N}5uEbX@Zo>N4X_1lGzaSIfUG323pb4}Zbzg4dty6U9&U1cc@%|iyDlcs0v{h5J zzK!7$AjFvCW!K4GDLOyy5p0=F^yFH`yiv7iMbm!;vZb(6sV9!2nDV&^1(BzJZ2z*k zn=3U|spYqIKY{f7b8GM~UB-s96|ur$$;U+d2$eM%W&e!;l{a21^(#0) zW9pS*dxaS$*?gC%@7o!b-=zm zX*6yBq&6Z9hf@9n&?M+4vY8iift09HXdw?Tvx~)Q?%LXYwA37;(v3!v5Rf>kfwN1> z%ehiGL<-j8m-QF!-k%IbZ~9k#nlk&nCty7kmwi0+lWVN((kLavIYZ zB{6B^pSj1Dr{F;)tOz>PXY$;uE;#DV=8?RXobedsMK4M3cG%nP#^JrM|6Rw%s-%|8 z*mJ(qf8#e(u1#P$`tSObO{Wx|kafb*9LTvQFePs9bE@4NiupKd0&>yk;@$vZMW&gg zRSOvOBG)xhV&F9${@8YjC9QE1mX*X55_Lt%Z&qy%2HI_wSd?3J%psNEnAAgis`;GM z+!ve6fsQ`?`$GlD$@ev}%GJWg0mKV34rIf68(U{CjdHChKVL8A4WJ$@A4sPo+2I5;UC=?4;QPMfpW*zcUOmNS8rKcZ&#;3c}Eelz=c8gtT-IAR*nLq>|Do4ZbQc(#*wJu8|E=B#|)Yz5w<&NFGBTmw7T?RYzz7i9sw0(RRc3j~~j;{w6mo9`ofM&EiWTwK-wh{!PhC zhk0p~V{TQn9Wj@)eAr2UhNrfs;4yAx`R$|T^y%?Om0P*{rPVp{I=RP3v(^Pqvw1V* zl6$V+{8dg^?rqVz5Ohtnpt=7X=SF0d@_AX^mhhsYEAVCAE^TZx##hS#*nER|m!WT| zJJwG40%}7Ge!Z^|J7W`+LFivLk{tZG(`GULc|9^b3X;w;wLfn(Ha$=9{ccpfHNf{& zaD2qn#U=zqOy4*G9*zvr6T)1J@=|st()5cSG_!kFwmMaj z9;>DCUR*iT7jJ$gUowFwzeG9u1{sfsttF7*2SA2%+dyLQ`C#xkmP~o$`V|1`5aCm) zO!JBsQ)73+_BW7&^?66*e# zfJf9AWV{X@G?1mUPG6h8Y@Tjf^Y3}uBz{BAxpw_di zc=xK8a`sh~&fSmY&FsiY^FV-eFtSoZA`~Zf#j5Ysd54A{J3g9`NiFYRL1@M^##0jc zIzzeIfqqR?LbaP?jx zvw#?kRuQ2nk5EJ;n1?d23NbdC$bS__DALgLy3&*}D)trWtW7 zrn*W`n&i@CZ|lMRo^h`dw@r4Zo|;iZk$w?wI=7Rhd?BNMU0wHk%}E_rvA$lee<$QL z&-nW#%pCl@&qwIFpYT%Jmaa!c&zgjp+fFX#_UfG|ZXad(ebiVQkVuXXG;t$o@e)!S z;1u4G(|V5m;rzfRj;Hb2iRjs=k?|m<)2y-imgI(gD7VnFN3I=e*LkDA`IyrPJg3(SXHT+uKEx(V=49D>r@4 z>-1-z5M$q;Ka98c$mVP=F?s{iBsDOg(b-khA&NqA;z}NEIEyCik zp3~%YES&P#?BGnoPjJ$S%%iWzmN>*oN>?f^V(&+-ZPGvdBJv0LYm9tP;AgzQ=Dzhm!Y0oI)%9_oty0}fZ=UGL)&sk*H+nUEO-y7Q8@Vq&kndhoBliD5*D zxvCurvp}dKkR{Xsab!r}NA_w9;&VF#U3?!VR~TaI{5Ckv0g>Q?qvdd7uL zwwBd(N;qrnr*P4nyi%af) z({wro#_hJ+#905Df);$VW4Qz-#8znY1>333xlt|3(fO|&tfZbq`{&eSRu}Y2w1LE? zp7HUDH#(*98#f|?6OyXyBG){DZPx7A4;Ky#+nrzJZIL&+Z880@(x*Hl7WGDAMKkwl zZa5g-^it9&P_Tv>Y)qD$$^2y)x;Z{>@=-~CZy2x=Gss4`+8W+xau2x9T4-V3r99iM z04&3wGkU+u0z&uwgQdq-l%XV#qs__i)CRYp;;UUTgj+SUXA}$ZD**I`xD#&5*VVjF zpvRwW`pKMapXq?8D~C6O<+0eprU!NT+Pd2n8+NWfS`ZIjPaGoNQA><{9lDzLS0>P~ z)@J;(3E|fpBh7G&-n4t_>Lhu;j`bhz{dh3#weMV{H$U+Q-Ck(_aD4G(M6!aRG7e9_ z=MhLr@~%4d3#0Agh6ov{bcMufp^X``LTsJX_QnVAse=?>*jl~@eP4}+oomF4T)|5T z2R2tz@2B0Yrh^BZKfP938@s=;K;(Z1SnMxXQ?4awmArY=#-1j*cPEPJlripNogwml zP1`qexd+~zQxQD9j=%f1Rt;|577AB=vn_P%$Rjb_^{f5bM|^kg#n*LVVY-D2d!~no zDNiZC83M{~4(kaQRPbvX8?)apGOMoil`5#d2JCgABkOQ#BCKX6JH3I);fT&h=5g#- z<(_-mMB~^k0dIFOL+I;VIIqZS>~+E`NrGo%o4g zq`qjB74}W*rTW&QSt)%uqotzK(r9t@ zgGzjnPrU|AqR;N(#d;hm|5yE-fPnkr4wS}|ckpaE=p}e-s|B@5Uv$hV)jD^6wXga! z;&i_R1U-(tuO%CCqQxkPsiy!NOxD&n=WW4 zy019rcrvQM2B$C`wa9|V8NHH!belua5NmPYsr32 zHq*PYgUod}leu1d>v`i>L}jz1)0g0}oyT@6Z3Oyvz7GsrUzqqE&)Ki)G`!BRoN`-r zP*3FxQO1jw)5`pI?$_JaAS6T1!&M>{*PYNF>0__Zu^;lNvX(v2gy|%*IjQ!rinkvZU56qi}(%S ze>{4Nm1nJTp<9S~DSD*jY{oZWcs7PGeWI#NK3vbra$J& z`u*Dsm#sy)!IJ{oboCZxM#3+CJUtBI8KneniPCjcoi(NDl32O6$IF$2I9+y*cZ8%& z0aQ%Q|G@pf;c{{8a!XeAGW*qW-8FPAXYR*PPanHoaDBcMHQ=J-FS%^dukJfNIW? zGh@@!y*vwCzY-kAb(}DsxorjPuOvRI^CS(0_!f^Y&Kw5%uav#|H32)D>5?gR;u&{2 z+-k1ym_8b7uqM=Gl#9CM_b+I{ks~H0F5oUHeYS6W(dIK};l<=%!DS`ccgmlMI~;flICh7Q!@l_QK&gMF?%#md5KwqN zHTC%zGkAPN_=lXIBPKZdT4akt@Vk1sa_Mc`$!gjLx6R6vB+(lQ$9U2 zG^FG8mMiyj-0SAh?;&J$M>KRv1GC}@EL>%y#U?Me;`v2*5+4%l7U~7Q(CTb*CgbVn z;Hpi}_CDE#kqe+ambWgC1VFUZ^Gqp8$?H71YKviaT^@BS7rot_^s6|!=gOFvBN`TB zu+=SBw-us6&*Frdoh`Wk2&Jz2`Fq)pt_E`jiP+Et-sf2=>LnvN>BY!Vld7Z6-D|xP zWcooC{oB2UZLy^Maza-UNY!By=Pd*7L26O6AGE9*OPwUaYJm%Ncd=yR5gvxv+%q<2 zDD9=wF*(02Oscm^rIYZq)~NHwvq z;L&r`vW>7phEQ(KXNKa}K6<+K`o3jdUI7IK+@XC8mOoa=uJ`x%n-G>S&FYsP!&|p* zJZo0!l2m(QaeZO3SMJ}Nr&4ZXw^F+kc*47M3&%1&E?!=oepVhUHa+@!@nrTgBggr= zn3ZRhmKXe_wd@Q)&!$MR8^E`q+V+EmFp>6c^Y)R@!@(==K8MH%$;STC8@pUSCUX3e3{bUNiw|UE(jL`;IQ{KJBh>x~YrVY# z15WZ=PcmvGBOb_ik@*VfdfXOHg_je=)V(=G7~{`L{beBL!TV)~11XQBmnsn`;}Tev zZV!LQL+bF<*ly9@lx=aFv$#9yh{A4B3i>d@mkkxWwAC>oE!DAY0F^oCe9CBJ)#q=# zT_WH6k4FW{vD!_AqocG4w8z-fJja4s1|&j3{uED*@#)EVmc+oo#29e>j35D$JA|yI z60U>zOI7O+B_`+3LKyzdTI02~@g5QAQDAa+QjS81>;$NY)B)HLTB$JrL86BJ4KHtd z&^7+6g0?cAPD)m}q85R=lD9lMvwYx!4>QR4vgDB(h)4j5{L3@KI3&+yVm_cm+iy+H z{0PZpDh(Io)+X*vj3@4&dH(ODxqs{EUyJe%3r}l>wBmEXuS^t?9FOTIGLVOoVrafp z<)jgy1GL2*Y+|3S4oNX?*3U-X7xWq7f#_|O2Tek<9P>Au$?;H+SXp1jobG?6eZG|% zQx^AwT?5XJ)`ZhhVAB1qf3K2G8Sun4ea5LZr&;AbKCtrM^yaECPa*i3At_2#+K($X ze!ScwC4-f0c1>qy3F?h$!eGHpN%d9kf%|t`%aToSSL)QB39j}RuG`tam-2))l zU@wa68-Q-}Wf;1DA;TDT+5d~vjmcOoHA`!Drj#KoZRxzSB5fO&+>XyvBk2-bXKzTORP}0jXD)|lweL|O z$_Yr5K_aFdfwo8q>>&^Y4r24j?LUR!;$H6}n5TA@26Lq+=2i^G4ru`PoDLSWIN;V` zMcf=aVKd3N_4Af5KdfYuv4p;r8(Qb25mVFv3t~9u`biyd*2)qneL+iLES^SchK9B8 z4!MT9@aWd>{xnm+%PSB#-SI^EdeY+)hxc#?*{mHpDq$)ZxS#0Rt|Z)sV{WMK6h3OE zy_C!h^m&&mE%X7h$N=GP;gIk5f%b1)hyKt4qc^_Oi`A|^+pDO^t&kL#LgpXZX z+{Nsu>Qd+2aVQcDEH^)4?M(;%?toc7-a0TD95HFZhS-;l2yc(6hK zlT;Btf=e1^+QWSHmvJS)N3Z)76)cJ1qpMJ_nW*|$fUY>qVuz=Y&i!Rp00C&IhjdL5 z@baKQd-GAZt%e$D?w5gC0HeFR6)s$_43mg( zki3ml#NBn(5bYBPlgqz@96tc?*~p@Q2O#52PN^~m!HD0_-$K8!U3f zum_GyF^=xkBQL!Y{W1`9vnPfEN1Vi1e9U(v6)X`h4Euq~XaA*__5yM{pqFocY0xXM zIK-E*?^9oTKI?ulaMOKvXstlE$d%h^&k#UE;^AVXXp28q`#ByG=oO}bftL3&w#d_l zMxMx9k|7IlOcPgsp>aB}s1Er{@+weg9f>Bfm`^}ei|b0KO9yH*|U(~ zona{)^zKapY_*lqd^wj^H#OjG4hCmgE2AU9^-A`z3|qr>v_V;OK`+B z+&=W&NG4f(k^L?{IuY;38cN4hapZ-`4VuR9%|7e;h!f|QSPRcQux43um*0Mrccrnkc zJ!%kGJV+4X!X@;X7c^ThQu>1PKl!l9La+7doXCqY6E)OB$NZt|=TGm$YB7+96mm5k z^yRB^=wYmU8xrL=#|6_lvUs~sm?7#y@M>gtR90%CsSg4q6cDb`@EA-U_-*|ke?>K} z1n5Q~A7iGY01;;OayzgAn9@Idm} zx}5HhXpv03ZKKa3C}l8)$gt#C%p+XWUj4SbgH(Kj@g{f&M^~1J)m#5lyYrlC_Y{v@ z$+>djC8Z-K9B{`S|7U}~L5P7kSA)k>#u120T*+w0_?IZ6^r+aKXET&ez;|2}TIK$4 ztN#7_cb4z;`;1^fTWUxOoUGKOt@XlO`ib(Km{*yazQ4UQ*Y?TMPlIs!?)_FEpHra4%YgGh1NL-;!g)PxgAtn4VoLA9(pCg)i6jsF+~WE z^=h+D`4$H7fUOAgg9jzw3kG&w@@{1$!dZ)X^%DCy|CfB^`wjBqv(N$gZU9AWb0Q!Q zO#s;2VgdV7CHQ+>iN{XRoDm+UT{Ad5osdA|UGtZ4ogynAK>gKom7BGCPL0$g=clK_ z#K>xP{(s$D1R$T|lUmeeGnbBV?iGxd@rsq7!kwRfZgs?uoru8{%TUyoYU-Xh`DNzw ze1gdSw8%~X9+fOFILiTHliP-S+xPG5Gdwp?a6Meuabax!EF~-H?Ye#ly5gszcuz+j zCUJkRjvr}>ONgOMs0+qNqM|p>&pC!O}qL_CPChnJ#KQE6IGJ+ck z(CFHdY>2_`+r&>(a;$hzZZ%#(QQUP~sMs;R=t+b1_CUVrCovfu_Is$9e`Q#wgwMcw zBMOcwMoo4cfbk}Ikk$Ch&`M5Z$P{Rpw{L4#GDt`m+AgudVSw24G0+vKB_Q5l??8qPA5*|8BOqnEe;14(d)5_r+y&ngEYtJi>~uo|+Z>2N zukpPG6aE|xWXdB}2EUdQ$6<2cY15N*`|?zPSEKhoEv7P;xwq2K{^^>aaqZlz4mpTD zTdNT10L-!&`2xgy3E95t1Gj9jqQyM!PE=dp{Bzz2xc-SFo{pkHK4eS3f!>mwxDJUk4L|lGlYlzxB68xm#{K?Q#5N z^Ji{+v~KJ5{!Ti)+QAU~udv3Vk1v}&n;M^fUZ6J~?kX7w4(oR01;SWD#Q(GsB7YgN zYpm(3Z~$CTr3#>dui)(f0iT(xl9v8oM_XIgKkU70Qg(3F1a7le%+68&tJl<(fDm@V zRozfn9AfxiLMkFYe<7RPtTLCUAB^jEkB`65hDPgq?~@eWOH0GC1nBvFC2kES`If6@ z5_DS`GAO`j0a26>N6aIU5YtYD4xZeF|K9U)Bj~htMnYmyRz2mwz;}5;28hgER^j4F zmt(u7zoqoR<$oF*zbIyzp8<4r7V zzb;oQicxA=GSz!I`H%ZJFF&;dF)$(l5G}+(>t731_t2-O(cdEB{d4rZp_LKjiY`|92!U(8&6fE$2Y*M{W9~OqNq4 zBY0WBu<)zw3ZT9t0$B3GHAF~DoMDhxTXzjTk{_?Hb#Tw_j?4En_p%`g?&@0oN&H#_U?-w1>n3lnug%rYzEr3)`?d+L#PXE+SCq!#7?#f26H?*Ti!|x@eX5L&U*ruZ3au34L$K>-y=b z`OWb>w#d?6>I!}x)e(n@#qBY#_bnS>xB|M*QWS{*?Q|&5ac4ySPL=mC8t%%3*gbpt zjte>6e^+olEHOOr*6N|h$t?3Vc&7I`WuE4{(8pX_r}f^Fn7=JQvqx@&;}GkoXpbiR znB`|(3`U1r|AJa7IUs`Co>b#J{v_M6u$+VeGlQtdVCQ-hk3AHS`)JxgC*k)uZAFxv zJ0XcYUos8wQDEOA0{)OQ(9?%c5=;SP>5(b6{kw3ml9Zvl$(5o&N$Ew&`rMHLg*)=jF9@HlmN&3m_~W>uQ1Tk^_0f{{fD@+*^Mg^IKH(mM&OKU{cGxbX#7_UQu)$7@QtkW9!~Da;P(y)1)t`Tbi9aA$ZWbet_w5@ zL3{&2YYx}uU%#T-2HR;$LjXb@xGT!v2C9wjE1`)n52}wA9yO7KhlSlAEJ|eox4VB# zo{)ETc80!<98M(%mLW=h1@XBzqrD}t*=&78z@Tp7O781kO`+dTzD7_(rE566e5CEy zmzh-P)U$qYt28#{{I@g>Z(GUBjE95NU#Na`_H_I(x$|tZFtN!v4L)aTevs}92mn_z zu*1NjE4g@LSmul83m1#DnSIKwjZQT8taT$&lSC3}sX0ub5E$-g;vp?a7o ze-kPjqsk2{yvxUhV|DfKL)sAb(PA_D>;;Y)b=HV``U-F5K!9N*jSItsM_{&mzT)B8 zRVWqcOCKOV@+ls*HAzk1^klPpMgua0OV|@xSh53k@C5l|WoQO)EkA6}j0Y!(Kb7xL zB|4qO{Hs@iF$C%l1xzd>xXrb`B7cRB85H36^1?mY`be;9Q0Y*r8E&+&qKFwt_y(po z7-%P83*f)pEA4OZ*Ka9Wb^>?U!s{pc53BTS_dK&*y#7!yOr4QRX+_ zWqF9e210-FW3s4IEeSw(PLQaw_P3C1Xk`%%hK&)nSSB}>gnwQvbO*p_g)!m%#b)hS z6zH81FM6qxqp))bU*j`I6YpJ-V&f(fko2{`q(O$EhrC}p=v&Ex_emmk5W?Lfw_Y+s z?Y-qMyOJK9rc|tYt=q<2YBB)%JHa*X--bIE@;Asfob#4n6ktc=_&*}4cqXj0;jEWY zkT4{V7k`SX0gHoGO`g}v7deLyZQ*U7>^`-o2EnKrQ)%nd_UoU7Cuh6IaE|?_$)yEu zx{q~AA5kOUs&La?wa~n=ABJ$2pDQcoPm}f~@e-|B1UIhbyV>LkqQ2=P=6JQFSW(6l zEo$5X#NPB5Q}#pitmR7F5Vv_l$fczqpvN|E$LjA*?S7PABfLKUF5^gU@kdwhQDb8) z_yQM92zHz}n#3yG#O?^BGzEhV@Nn8WvB-4y6#cpLaSXvUfKMe%0_)U%MVj?Cd-x%% z7d}0wt5^bJUy&IHm^-lO#)c_l^c#(j>>8)8{~XtG%^&bjXAnLdBkBOhKtKcq-|a3W z#Mu7`!fk9M_vOh%x-7^$iAvEFsaBlGlpwGpeo>6`U5&&fL&bOStjNLe{{bqfC@O*a ze>j^ZkivK=UiUNrcEO^qQJ5FoZLTF_Fb`%N<#22|ME1soR#OwF80J|hbo}PF`F}l8 z!F~pBF%sW*mi`F}A=icTxnPVqi?ubYj~%oO_Yua?keI*C@jd4zMh6H?`;cI0E>a$- zfu>3mZ8*N@QCYs^7y#BDGc1t00FEZZG+i2MUz<{XuLbvH*_ObZ?LQ;gWQI{wj;(V) zuwqSK1$(VL1RsdrchP43uL@j6{th@RkE}55F%c?owgo!HvusbUn4-bicPkL8V~Y=( zfo(?%7JsA!ePGXG@)rl%LSr~J?iQF9cM6c}R`iyI2b5`2uho4DtSh@g>B~I3LtLlaZUp>hYggcgdRiAa0)e?U7E+~ v(0Ax_DU5N+JB;fA&B9rh05v@U`wvgY&+mGq)x+ly_)&SFsaSd+9q|7EW*}O~ literal 0 HcmV?d00001 diff --git a/src/assets/compose_linux_gpu.yaml b/src/assets/compose_linux_gpu.yaml new file mode 100644 index 000000000..decb8e4ce --- /dev/null +++ b/src/assets/compose_linux_gpu.yaml @@ -0,0 +1,120 @@ +include: + - vdb/milvus.yaml + - ${CHAINLIT_DATALAYER_COMPOSE:-extern/dummy.yaml} + - extern/infinity.yaml + - ${INDEXERUI_COMPOSE_FILE:-extern/indexer-ui/docker-compose.yaml} + +x-openrag: &openrag_template + image: ghcr.io/linagora/openrag:dev-latest + build: + context: . + dockerfile: Dockerfile + volumes: + - ${CONFIG_VOLUME:-./.hydra_config}:/app/.hydra_config + - ${DATA_VOLUME:-./data}:/app/data + - ${MODEL_WEIGHTS_VOLUME:-~/.cache/huggingface}:/app/model_weights # Model weights for RAG + - ./openrag:/app/openrag # For dev mode + - /$SHARED_ENV:/ray_mount/.env # Shared environment variables + - ./ray_mount/logs:/app/logs + ports: + - ${APP_PORT:-8080}:${APP_iPORT:-8080} + - ${RAY_DASHBOARD_PORT:-8265}:8265 # Disable when in cluster mode + networks: + default: + aliases: + - openrag + env_file: + - ${SHARED_ENV:-.env} + shm_size: 10.24gb + +x-vllm: &vllm_template + networks: + default: + aliases: + - vllm + restart: always + environment: + - HUGGING_FACE_HUB_TOKEN + ipc: "host" + volumes: + - ${VLLM_CACHE:-/root/.cache/huggingface}:/root/.cache/huggingface # put ./vllm_cache if you want to have the weights on the vllm_cache folder in your project + command: > + --model ${EMBEDDER_MODEL_NAME:-jinaai/jina-embeddings-v3} + --trust-remote-code + --task embed + --gpu_memory_utilization 0.3 + --max-num-seqs 1 + # --max-model-len ${MOX_MODEL_LEN:-2048} + # gpu_memory_utilization, max-num-seqs et max-model-len can be tuned depending on your GPU memory + + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/health"] + interval: 15s + timeout: 5s + retries: 3 + start_period: 60s + ports: + - ${VLLM_PORT:-8000}:8000 +services: + # GPU - default + openrag: + <<: *openrag_template + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [ gpu ] + profiles: + - '' + depends_on: + milvus: + condition: service_healthy + vllm-gpu: + condition: service_healthy + + # No GPU + openrag-cpu: + <<: *openrag_template + deploy: {} + profiles: + - 'cpu' + depends_on: + milvus: + condition: service_healthy + vllm-cpu: + condition: service_healthy + + rdb: + image: postgres:15 + environment: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-root_password} + - POSTGRES_USER=${POSTGRES_USER:-root} + volumes: + - ${DB_VOLUME:-./db}:/var/lib/postgresql/data + + vllm-gpu: + <<: *vllm_template + image: vllm/vllm-openai:v0.9.2 + runtime: nvidia + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [gpu] + profiles: + - '' # Empty string gives default behavior (but does not run when cpu requested) + + vllm-cpu: + <<: *vllm_template + build: + context: extern/vllm + dockerfile: Dockerfile.cpu + target: vllm-openai + image: openrag-vllm-openai-cpu + deploy: {} + profiles: + - 'cpu' diff --git a/src/assets/compose_ollama_cpu.yaml b/src/assets/compose_ollama_cpu.yaml new file mode 100644 index 000000000..beebe7209 --- /dev/null +++ b/src/assets/compose_ollama_cpu.yaml @@ -0,0 +1,108 @@ +x-openrag: &openrag_template + image: rcordier/openrag:latest + volumes: + - ./.hydra_config:/app/.hydra_config + - ./data:/app/data + - ./.cache/huggingface:/app/model_weights # Model weights for RAG + - ./openrag:/app/openrag # For dev mode + - ./ray_mount/.env:/ray_mount/.env # Shared environment variables + - ./ray_mount/logs:/app/logs + ports: + - 8090:8080 + - 8265:8265 # Disable when in cluster mode + networks: + default: + aliases: + - openrag + env_file: + - .env + shm_size: 10.24gb + +services: + openrag: + <<: *openrag_template + deploy: {} + depends_on: + - milvus + - ollama + + rdb: + image: postgres:15 + environment: + - POSTGRES_PASSWORD=root + - POSTGRES_USER=root + volumes: + - ./db:/var/lib/postgresql/data + + ollama: + image: ollama/ollama:latest + ports: + - "11434:11434" + volumes: + - ./volumes/ollama:/root/.ollama + - ./ollama-entrypoint.sh:/entrypoint.sh + restart: unless-stopped + entrypoint: ["/usr/bin/bash", "/entrypoint.sh"] + + etcd: + image: quay.io/coreos/etcd:v3.5.16 + environment: + - ETCD_AUTO_COMPACTION_MODE=revision + - ETCD_AUTO_COMPACTION_RETENTION=1000 + - ETCD_QUOTA_BACKEND_BYTES=4294967296 + - ETCD_SNAPSHOT_COUNT=50000 + volumes: + - ./volumes/etcd:/etcd + command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd + healthcheck: + test: ["CMD", "etcdctl", "endpoint", "health"] + interval: 30s + timeout: 20s + retries: 3 + + minio: + image: minio/minio:RELEASE.2023-03-20T20-16-18Z + environment: + MINIO_ACCESS_KEY: minioadmin + MINIO_SECRET_KEY: minioadmin + volumes: + - ./volumes/minio:/minio_data + command: minio server /minio_data --console-address ":9001" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 30s + timeout: 20s + retries: 3 + + milvus: + image: milvusdb/milvus:v2.5.4 + command: ["milvus", "run", "standalone"] + security_opt: + - seccomp:unconfined + environment: + ETCD_ENDPOINTS: etcd:2379 + MINIO_ADDRESS: minio:9000 + volumes: + - ./volumes/milvus:/var/lib/milvus + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"] + interval: 30s + start_period: 90s + timeout: 20s + retries: 3 + ports: + - "19530:19530" + depends_on: + - "etcd" + - "minio" + + indexer-ui: + build: + context: ./extern/indexer-ui + dockerfile: Dockerfile + args: + - VITE_API_BASE_URL=${VITE_API_BASE_URL} + - VITE_INCLUDE_CREDENTIALS=${VITE_INCLUDE_CREDENTIALS} + ports: + - "8067:3000" + restart: unless-stopped \ No newline at end of file diff --git a/src/assets/env_linux_gpu.env b/src/assets/env_linux_gpu.env new file mode 100644 index 000000000..799662f4d --- /dev/null +++ b/src/assets/env_linux_gpu.env @@ -0,0 +1,50 @@ +# LLM +BASE_URL= +API_KEY= +MODEL= + +# VLM (Visual Language Model) you can set it to the same as LLM if your LLM supports images +VLM_BASE_URL= +VLM_API_KEY= +VLM_MODEL= + +## FastAPI App (no need to change it) +# APP_PORT=8080 # this is the forwarded port +# API_NUM_WORKERS=1 # Number of uvicorn workers for the FastAPI app + +## To enable API HTTP authentication via HTTPBearer +# AUTH_TOKEN=sk-openrag-1234 + +# SAVE_UPLOADED_FILES=true # usefull for chainlit source viewing + +## Set to true, it will mount chainlit chat ui to the fastapi app (Default: true) +# WITH_CHAINLIT_UI=true + +## EMBEDDER +EMBEDDER_MODEL_NAME=jinaai/jina-embeddings-v3 # or any other embedder from huggingface compatible with vllm +# EMBEDDER_BASE_URL=http://vllm:8000/v1 +# EMBEDDER_API_KEY=EMPTY + +# RERANKER +RERANKER_ENABLED=true +RERANKER_MODEL=Alibaba-NLP/gte-multilingual-reranker-base # or jinaai/jina-reranker-v2-base-multilingual + +# Prompts +PROMPTS_DIR=../prompts/example3_en # you can change it to ../prompts/example3 for french prompts + +# Ray +RAY_DEDUP_LOGS=0 # turns off ray log deduplication that appear across multiple processes +RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # # to enable logs at task level in ray dashboard +RAY_task_retry_delay_ms=3000 +RAY_ENABLE_UV_RUN_RUNTIME_ENV=0 # critical with the newest version of UV + +# Indexer UI +## 1. replace X.X.X.X with localhost if launching local or with your server IP +## 2. APP_PORT with your FastAPI port (8080 by default) +## 3. Base URL of the Indexer UI (required to prevent CORS issues). Replace INDEXERUI_PORT with its value +## 4. Base URL of your FastAPI backend. Used by the frontend. Replace APP_PORT with the actual port number of your FastAPI backend + +VITE_INCLUDE_CREDENTIALS=false # set true if fastapi authentification is enabled +INDEXERUI_PORT=8060 # Port to expose the Indexer UI (default is 3042) +INDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT' +VITE_API_BASE_URL='http://X.X.X.X:APP_PORT' \ No newline at end of file diff --git a/src/assets/env_ollama_cpu.env b/src/assets/env_ollama_cpu.env new file mode 100644 index 000000000..6fe5303ea --- /dev/null +++ b/src/assets/env_ollama_cpu.env @@ -0,0 +1,102 @@ +# LLM +BASE_URL=http://ollama:11434/v1/ +API_KEY=EMPTY +MODEL=qwen3:0.6b +SEMAPHORE=10 + +# VLLM +VLM_BASE_URL= +VLM_API_KEY= +VLM_MODEL=Qwen2.5-VL-7B-Instruct +VLM_SEMAPHORE=40 + +# LLM JUDGE +JUDGE_BASE_URL= +JUDGE_API_KEY= +JUDGE_MODEL=Qwen2.5-VL-7B-Instruct + +# App +APP_PORT=8090 + +# Vector db VDB Milvus +VDB_HOST=milvus +VDB_PORT=19531 +VDB_CONNECTOR_NAME=milvus + +VLLM_CPU_OMP_THREADS_BIND=4 + +# RETRIEVER +CONTEXTUAL_RETRIEVAL=false +RETRIEVER_TOP_K=40 + +# EMBEDDER +EMBEDDER_MODEL_NAME=jina/jina-embeddings-v2-base-en:latest +EMBEDDER_BASE_URL=http://ollama:11434/v1 +EMBEDDER_API_KEY=EMPTY + +RERANKER_ENABLED=false +RERANKER_MODEL=jinaai/jina-reranker-v2-base-multilingual +RERANKER_TOP_K=5 +# RERANKER_PORT=7996 +RERANKER_BASE_URL= + +# Prompts +PROMPTS_DIR=../prompts/example3 + +# Loaders +PDFLoader=MarkerLoader +MARKER_MAX_PROCESSES=1 + +# Ray +RAY_DEDUP_LOGS=0 +RAY_NUM_GPUS=0.1 +RAY_POOL_SIZE=1 +RAY_MAX_TASKS_PER_WORKER=8 +RAY_DASHBOARD_PORT=8265 +## Marker Worker + + +# Indexer UI +INDEXERUI_COMPOSE_FILE=extern/indexer-ui/docker-compose.yaml +INDEXERUI_PORT=8067 +INDEXERUI_URL=http://localhost:8067 +VITE_API_BASE_URL=http://localhost:8090 + +# API Authentication +# AUTH_TOKEN=super-secret-token +SAVE_UPLOADED_FILES=true + +# SHARED_ENV=/ray_mount/.env +# RAY_ADDRESS=ray://162.19.92.65:10001 + +# Secret key for Chainlit UI authentication +#CHAINLIT_AUTH_SECRET="bzAg5O%-HeyrVgwx-o*ebN-3*HMax-FMVsTdT.U8SX8Evs1pXf_W9qPJ3?:i%aid" +CHAINLIT_USERNAME=OpenRAG +CHAINLIT_PASSWORD=OpenRAG2025 + +INDEXER_INSERT_CONCURRENCY=10 +RAY_ENABLE_UV_RUN_RUNTIME_ENV=0 + +ENABLE_RAY_SERVE=false +RAY_memory_monitor_refresh_ms=0 + +# # Chainlit data persistency +# # Persistency services (localstack + AWS (Deployed Locally)) +# CHAINLIT_DATALAYER_COMPOSE=extern/chainlit-datalayer/compose.yaml + +# ## To link to the PostgreSQL instance. +POSTGRES_USER=root +POSTGRES_PASSWORD=root +POSTGRES_DB=postgres +POSTGRES_PORT=5432 + +# DATABASE_URL=postgresql://${POSTGRES_USER:-root}:${POSTGRES_PASSWORD:-root}@postgres:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-postgres} # for chainlit + +# ## S3 configuration. +# BUCKET_NAME=my-bucket +# APP_AWS_ACCESS_KEY=random-key +# APP_AWS_SECRET_KEY=random-key +# APP_AWS_REGION=eu-central-1 + +# LOCALSTACK_PORT=4566 +# DEV_AWS_ENDPOINT=http://localstack:${LOCALSTACK_PORT:-4566} \ No newline at end of file diff --git a/src/content.config.ts b/src/content.config.ts new file mode 100644 index 000000000..d9ee8c9d1 --- /dev/null +++ b/src/content.config.ts @@ -0,0 +1,7 @@ +import { defineCollection } from 'astro:content'; +import { docsLoader } from '@astrojs/starlight/loaders'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/src/content/docs/404.md b/src/content/docs/404.md new file mode 100644 index 000000000..495064ac5 --- /dev/null +++ b/src/content/docs/404.md @@ -0,0 +1,8 @@ +--- +title: '404' +template: splash +editUrl: false +hero: + title: '404' + tagline: Page not found. Check the URL or try using the search bar. +--- \ No newline at end of file diff --git a/src/content/docs/documentation/API.mdx b/src/content/docs/documentation/API.mdx new file mode 100644 index 000000000..ed3dc31ce --- /dev/null +++ b/src/content/docs/documentation/API.mdx @@ -0,0 +1,287 @@ +--- +title: API +description: Use the FastAPI RAG Backend API for document-based question answering. +--- + +The FastAPI-powered backend provides a comprehensive document-based question answering system using Retrieval-Augmented Generation (RAG). The API supports semantic search, document indexing, and chat completions across multiple data partitions with full OpenAI compatibility. + +## 🔐 Authentication + +All endpoints require authentication when **enabled** (by adding a authorization token `AUTH_TOKEN` in your **`.env`**). Include your **`AUTH_TOKEN`** in the HTTP request header: + +```http +Authorization: Bearer YOUR_AUTH_TOKEN +``` + +For OpenAI-compatible endpoints, `AUTH_TOKEN` serves as the `api_key` parameter. Use a placeholder like `'sk-1234'` when authentication is disabled (necessary for when using OpenAI client). + +--- + +## 📡 API Serving Modes +This API can be served using **Uvicorn** (default) or **Ray Serve** for distributed deployments. + +By default, the backend uses `uvicorn` to serve the FastAPI app. + +To enable **Ray Serve**, set the following environment variable: + +```bash +// .env +ENABLE_RAY_SERVE=true +``` + +Additional optional environment variables for configuring Ray Serve: + +```bash +// .env +RAY_SERVE_NUM_REPLICAS=1 # Number of deployment replicas +RAY_SERVE_HOST=0.0.0.0 # Host address for Ray Serve HTTP proxy +RAY_SERVE_PORT=8080 # Port for Ray Serve HTTP proxy +``` + +When using Ray Serve with a **remote cluster**, the HTTP server will be started on the **head node** of the cluster. + +:::caution +When using Ray Serve, you must disable the **FastAPI `exception handler`** by setting `DISABLE_EXCEPTION_HANDLER=true` in your environment variables. Ray Serve is currently incompatible with FastAPI's exception handling middleware. Additionally, the Chainlit UI is disabled when using Ray Serve deployment. +::: + +## 🚀 API Endpoints +### ℹ️ System Health +Verify server status and availability. +```http +GET /health_check +``` + +--- + +### 📦 Document Indexing + +#### Upload New File +```http +POST /indexer/partition/{partition}/file/{file_id} +``` + +Upload a new file to a specific partition for indexing. + +**Parameters:** +- `partition` (path): Target partition name +- `file_id` (path): Unique identifier for the file + +**Request Body (form-data):** +- `file` (binary): File to upload +- `metadata` (JSON string): File metadata (e.g., `{"owner": "user1"}`) + +**Responses:** +- `201 Created`: Returns task status URL +- `409 Conflict`: File already exists in partition + +#### Replace Existing File +```http +PUT /indexer/partition/{partition}/file/{file_id} +``` + +Replace an existing file in the partition. Deletes the current entry and creates a new indexing task. + +**Parameters:** Same as POST endpoint +**Request Body:** Same as POST endpoint +**Response:** `202 Accepted` with task status URL + +#### Update File Metadata +```http +PATCH /indexer/partition/{partition}/file/{file_id} +``` + +Update file metadata without reindexing the document. + +**Request Body (form-data):** +- `metadata` (JSON string): Updated metadata + +**Response:** `200 OK` on successful update + +#### Delete File +```http +DELETE /indexer/partition/{partition}/file/{file_id} +``` + +Remove a file from the specified partition. + +**Responses:** +- `204 No Content`: Successfully deleted +- `404 Not Found`: File not found in partition + +#### Check Indexing Status +```http +GET /indexer/task/{task_id} +``` + +Monitor the progress of an asynchronous indexing task. + +**Response:** Task status information + +--- + +#### See logs of a given task +```http +GET /indexer/task/{task_id}/logs +``` + +#### Get error details of a failed task +```http +GET /indexer/task/{task_id}/error +``` + + +### 🔍 Semantic Search + +#### Search Across Multiple Partitions +```http +GET /search/ +``` + +Perform semantic search across specified partitions. + +**Query Parameters:** +- `partitions` (optional): List of partition names (default: `["all"]`) +- `text` (required): Search query text +- `top_k` (optional): Number of results to return (default: `5`) + +**Responses:** +- `200 OK`: JSON list of document links (HATEOAS format) +- `400 Bad Request`: Invalid partitions parameter + +#### Search Within Single Partition +```http +GET /search/partition/{partition} +``` + +Search within a specific partition only. + +**Query Parameters:** +- `text` (required): Search query text +- `top_k` (optional): Number of results (default: `5`) + +**Response:** Same as multi-partition search + +#### Search Within Specific File +```http +GET /search/partition/{partition}/file/{file_id} +``` + +Search within a particular file in a partition. + +**Query Parameters:** Same as partition search +**Response:** Same as other search endpoints + +--- + +### 📄 Document Extraction + +#### Get Extract Details +```http +GET /extract/{extract_id} +``` + +Retrieve specific document extract (chunk) by ID. + +**Response:** JSON containing extract content and metadata + +--- + +### 💬 OpenAI-Compatible Chat + +These endpoints provide full OpenAI API compatibility for seamless integration with existing tools and workflows. For detailed example of openai usage [see this section](#openai-client-integration) + +* List Available Models +```http +GET /v1/models +``` + +List all available RAG models (partitions). + +**Model Naming Convention:** +- Pattern: `openrag-{partition_name}` => This model allows to chat specifically with the partition `{partition_name}` +- Special model: `partition-all` (queries entire vector database) + +* Chat Completions +```http +POST /v1/chat/completions +``` + +OpenAI-compatible chat completion using **`RAG` pipeline**. + +**Request Body:** +```bash frame="none" title="Testing the openai OpenRAG chat completions endpoint with curl" +curl -X POST http://localhost:8080/v1/chat/completions \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer YOUR_AUTH_TOKEN" \ + -d '{ + "model": "openrag-{partition_name}", + "messages": [ + { + "role": "user", + "content": "Your question here" + } + ], + "temperature": 0.7, + "stream": false + }' +``` + +* Text Completions +```http +POST /v1/completions +``` + +OpenAI-compatible text completion endpoint. + +## 💡 Usage Examples + +### Bulk File Indexing + +For indexing multiple files programmatically, you can use this script [`data_indexer.py`](../utility/data_indexer.py) utility script in the [`📁 utility`](../utility/) folder or simply use **`indexer ui`**. + +### OpenAI Client Integration + +For detailed examples of using OpenAI clients with this API, see the [`openai_compatibility_guide.ipynb`](./utility/openai_compatibility_guide.ipynb) notebook in the [`📁 utility`](./utility/) folder or simply use **`IndexerUI`**. + +#### Example OpenAI Client Usage + +```python {9-10} +from openai import OpenAI, AsyncOpenAI + +api_base_url = "http://localhost:8080" # fastapi base url +base_url = f"{api_base_url}/v1" + +auth_key = ... # your api authentification key AUTH_TOKEN in your .env. Is authentification is disabled, use a placeholder like 'sk-1234' +client = OpenAI(api_key=auth_key, base_url=base_url) + +your_partition= 'my_partition' # name of your partition +model = f"openrag-{your_partition}" +settings = { + 'model': model, + 'temperature': 0.3, + 'stream': False +} + +response = client.chat.completions.create( + **settings, + messages=[ + {"role": "user", "content": "What information do you have about...?"} + ] +) +``` + +--- + +## ⚠️ Error Handling + +The API uses standard HTTP status codes: + +- `200 OK`: Successful request +- `201 Created`: Resource created successfully +- `202 Accepted`: Request accepted for processing +- `204 No Content`: Successful deletion +- `400 Bad Request`: Invalid request parameters +- `404 Not Found`: Resource not found +- `409 Conflict`: Resource already exists + +Error responses include detailed JSON messages to help with debugging and integration. diff --git a/src/content/docs/documentation/chainlit_data_persistency.md b/src/content/docs/documentation/chainlit_data_persistency.md new file mode 100644 index 000000000..1444dcc70 --- /dev/null +++ b/src/content/docs/documentation/chainlit_data_persistency.md @@ -0,0 +1,53 @@ +--- +title: Chainlit Data Persistency +--- + +The [Chainlit data layer](https://docs.chainlit.io/data-layers/overview) allows you to persist conversations in chainlit. +This project uses a [dockerized fork](https://github.com/Chainlit/chainlit-datalayer) for easier deployment and setup. + +In OpenRAG, one can activate **`Chainlit data layer`** following these steps: + +### Step 1: Set up authentication +In fact, chainlit authentication is necessary for data persistency. Set chainlit authentication if not already done (refer to the [chainlit auth guide](./setup_chainlit_ui_auth.md)) + +### Step 2: Add the following variables +To deploy the Chainlit data layer service, add the following variable: +```bash +// .env +# Persistency services: postgres (localstack (AWS emulator deployed locally) +CHAINLIT_DATALAYER_COMPOSE=extern/chainlit-datalayer/compose.yaml +``` +This provides 2 services: +- a postgres database to store users, feedback, chat history, etc +- "s3 bucket" emulator to store elements (files attached in the chat). + +:::note +Chainlit datalayer is cloud-compatible, and the same applies for local data persistency. So for local storage, a cloud/s3 service emulator that runs in a container is deployed as well. +::: + +* Variables for the postgres data + +:::tip{icon="heart"} +Knowing that OpenRAG already has a running postgres service (**`rdb`**) (refer to the [docker-compose.yaml](../docker-compose.yaml) file), there is no need to deploy another postgres service. In that case, comment out the postgres service definition in the [compose.yaml file](../extern/chainlit-datalayer/compose.yaml) and add the following variable to your .env +::: + +```bash +// .env +DATABASE_URL=postgresql://root:root_password@rdb:5432/chainlit +``` +* Variables for chainlit to use the **`S3 Bucket`** +Add the following variables to your `.env` so that chainlit can use them to connect to the locally deployed S3 bucket + +```bash +// .env +## S3 bucket configuration. +BUCKET_NAME=my-bucket +APP_AWS_ACCESS_KEY=random-key +APP_AWS_SECRET_KEY=random-key +APP_AWS_REGION=eu-central-1 +DEV_AWS_ENDPOINT=http://localstack:4566 +``` + +:::tip{icon="seti:info"} +If you want to deactivate the service, comment out these variables, especially **`CHAINLIT_DATALAYER_COMPOSE`**. +::: \ No newline at end of file diff --git a/src/content/docs/documentation/deploy_ray_cluster.md b/src/content/docs/documentation/deploy_ray_cluster.md new file mode 100644 index 000000000..a5b7e2525 --- /dev/null +++ b/src/content/docs/documentation/deploy_ray_cluster.md @@ -0,0 +1,155 @@ +--- +title: Ray Cluster +--- + +# ⚡ Distributed Deployment in a Ray Cluster + +This guide explains how to deploy **OpenRAG** across multiple machines using **Ray** for distributed indexing and processing. + +--- + +## ✅ 1. Set Environment Variables + +Ensure your `.env` file includes the standard app variables **plus Ray-specific ones** listed below: + +```bash +// .env +# Ray +# Resources for all files +RAY_NUM_GPUS=0.1 +RAY_POOL_SIZE=1 +RAY_MAX_TASKS_PER_WORKER=5 + +# PDF specific resources when using marker +MARKER_MAX_TASKS_PER_CHILD=10 +MARKER_MAX_PROCESSES=5 # Number of subprocesses <-> Number of concurrent pdfs per worker +MARKER_MIN_PROCESSES=3 # Minimum number of subprocesses available before triggering a process pool reset. +MARKER_POOL_SIZE=1 # Number of workers (typically 1 worker per cluster node) +MARKER_NUM_GPUS=0.6 + +SHARED_ENV=/ray_mount/.env +RAY_DASHBOARD_PORT=8265 +RAY_ADDRESS=ray://X.X.X.X:10001 +HEAD_NODE_IP=X.X.X.X +RAY_HEAD_ADDRESS=X.X.X.X:6379 +# RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # to enable logs at task level in ray dashboard +RAY_task_retry_delay_ms=3000 + +# Ray volumes +DATA_VOLUME=/ray_mount/data +MODEL_WEIGHTS_VOLUME=/ray_mount/model_weights +CONFIG_VOLUME=/ray_mount/.hydra_config +UV_LINK_MODE=copy +UV_CACHE_DIR=/tmp/uv-cache +``` + +✅ Use host IPs instead of Docker service names : + +```diff lang="bash" +// .env +- EMBEDDER_BASE_URL=http://vllm:8000/v1 ++ EMBEDDER_BASE_URL=http://:8000/v1 # ✅ instead of http://vllm:8000/v1 + +- VDB_HOST=milvus ++ VDB_HOST= # ✅ instead of VDB_HOST=milvus +``` + +:::tip[🧠 **Tips**] +- `RAY_NUM_GPUS` defines **per-actor resource requirements**. Ray will not start a task until these resources are available on one of the nodes. +For example, if one indexation consumes ~1GB of VRAM and your GPU has 4GB, setting `RAY_NUM_GPUS=0.25` allows you to run **4 indexers per node**. In a 2-node cluster, that means up to **8 concurrent indexation tasks**. + +- `RAY_POOL_SIZE` defines the number of worker actors that will be created to handle indexation tasks. It acts like a **maximum concurrency limit**. +Using the previous example, you can set `POOL_SIZE=8` to fully utilize your cluster capacity. +::: + +:::caution +If other GPU-intensive services are running on your nodes (e.g. vLLM, the RAG API), make sure to **reserve enough GPU memory** for them and subtract that from your total when calculating the safe pool size. +::: + +--- + +## 📁 2. Set Up Shared Storage + +All nodes need to access shared configuration and data folders. +We recommend using **GlusterFS** for this. + +➡ Follow the [GlusterFS Setup Guide](/documentation/setup_glusterfs/) to configure: + +- Shared access to: + - `.env` + - `.hydra_config` + - `/data` (uploaded files) + - `/model_weights` (embedding model cache) + +--- + +## 🚀 3. Start the Ray Cluster + +First, prepare your `cluster.yaml` file. Here's an example for a **local provider**: + +```yaml +// cluster.yaml +cluster_name: rag-cluster +provider: + type: local + head_ip: 10.0.0.1 + worker_ips: [10.0.0.2] # Static IPs of other nodes (does not auto-start workers) + +docker: + image: ghcr.io/linagora/openrag-ray + pull_before_run: true + container_name: ray_node + run_options: + - --gpus all + - -v /ray_mount/model_weights:/app/model_weights + - -v /ray_mount/data:/app/data + - -v /ray_mount/.hydra_config:/app/.hydra_config + - -v /ray_mount/logs:/app/logs + - --env-file /ray_mount/.env + +auth: + ssh_user: ubuntu + ssh_private_key: path/to/private/key # Replace with your actual ssh key path + +head_start_ray_commands: + - uv run ray stop + - uv run ray start --head --dashboard-host 0.0.0.0 --dashboard-port ${RAY_DASHBOARD_PORT:-8265} --node-ip-address ${HEAD_NODE_IP} --autoscaling-config=~/ray_bootstrap_config.yaml +worker_start_ray_commands: + - uv run ray stop + - uv run ray start --address ${HEAD_NODE_IP:-10.0.0.1}:6379 +``` + +> 🛠️ The base image (`ghcr.io/linagora/openrag-ray`) must be built from `Dockerfile.ray` and pushed to a container registry before use. + +### ⬆️ Launch the cluster + +```bash +uv run ray up -y cluster.yaml +``` + +## 🐳 4. Launch the OpenRAG App + +Use the Docker Compose setup: + +```bash +docker compose up -d +``` + +Once running, **OpenRAG will auto-connect** to the Ray cluster using `RAY_ADDRESS` from `.env`. + +--- + +With this setup, your app is now fully distributed and ready to handle concurrent tasks across your Ray cluster. + + +## 🛠️ Troubleshooting + +### ❌ Permission Denied Errors + +If you encounter errors like `Permission denied` when Ray or Docker tries to access shared folders (SQL database, model files, ...), it's likely due to insufficient permissions on the host system. + +👉 To resolve this, you can set full read/write/execute permissions on the shared directory: + +```bash +sudo chmod -R 777 /ray_mount +``` \ No newline at end of file diff --git a/src/content/docs/documentation/features_in_details.md b/src/content/docs/documentation/features_in_details.md new file mode 100644 index 000000000..ce4a4166b --- /dev/null +++ b/src/content/docs/documentation/features_in_details.md @@ -0,0 +1,87 @@ +--- +title: ✨ Features +--- + +### 📁 Rich File Format Support +[OpenRag](https://open-rag.ai/) supports a comprehensive range of file formats for seamless document ingestion: + +* **Text Files**: `txt`, `md` +* **Document Files**: `pdf`, `docx`, `doc`, `pptx` - Advanced PDF parsing with OCR support and Office document processing +* **Audio Files**: `wav`, `mp3`, `mp4`, `ogg`, `flv`, `wma`, `aac` - Audio transcription and content extraction +* **Images**: `png`, `jpeg`, `jpg`, `svg` - Vision Language Model (VLM) powered image captioning and analysis + +All files are intelligently converted to **Markdown format** with images replaced by AI-generated captions, ensuring consistent processing across all document types. + +### 🎛️ Native Web-Based Indexer UI +Experience intuitive document management through our built-in web interface. + +

+ +Indexer UI Features + +* **Drag-and-drop file upload** with batch processing capabilities +* **Real-time indexing progress** monitoring and status updates +* **Admin Dashboard** to monitor RAG components (Indexer, VectorDB, TaskStateManager, etc) +* **Partition management** - organize documents into logical collections +* **Visual document preview** and metadata inspection +* **Search and filtering** capabilities for indexed content + +
+ +### 🗂️ Partition-Based Architecture +Organize your knowledge base with flexible partition management: +* **Multi-tenant support** - isolate different document collections + +### 💬 Interactive Chat UI with Source Attribution +Engage with your documents through our sophisticated chat interface: + +
+ +Chat UI Features + +* **Chainlit-powered UI** - modern, responsive chat experience +* **Source transparency** - every response includes relevant document references +
+ + +### 🔌 OpenAI API Compatibility +[OpenRag](https://open-rag.ai/) API is tailored to be compatible with the OpenAI format (see the [openai-compatibility section](/documentation/api/#-openai-compatible-chat) for more details), enabling seamless integration of your deployed RAG into popular frontends and workflows such as OpenWebUI, LangChain, N8N, and more. This ensures flexibility and ease of adoption without requiring custom adapters. + +
+ +Summary of features + +* **Drop-in replacement** for OpenAI API endpoints +* **Compatible with popular frontends** like OpenWebUI, LangChain, N8N, and more +* **Authentication support** - secure your API with token-based auth + +
+ + +### ⚡ Distributed Ray Deployment +Scale your RAG pipeline across multiple machines and GPUs. +
+ +Distributed Ray Deployment + +* **Horizontal scaling** - distribute processing across worker nodes +* **GPU acceleration** - optimize inference across available hardware +* **Resource management** - intelligent allocation of compute resources +* **Monitoring dashboard** - real-time cluster health and performance metrics + +See the section on [distributed deployment in a ray cluster](#5-distributed-deployment-in-a-ray-cluster) for more details + +
+ +### 🔍 Advanced Retrieval & Reranking +[OpenRag](https://open-rag.ai/) Leverages state-of-the-art retrieval techniques for superior accuracy. + +
+ +Implemented advanced retrieval techniques + +* **Hybrid search** - combines semantic similarity with **`BM25` keyword** matching +* **Contextual retrieval** - Anthropic's technique for enhanced chunk relevance +* **Multilingual reranking** - using `Alibaba-NLP/gte-multilingual-reranker-base` + +
\ No newline at end of file diff --git a/src/content/docs/documentation/setup_chainlit_ui_auth.md b/src/content/docs/documentation/setup_chainlit_ui_auth.md new file mode 100644 index 000000000..138803d86 --- /dev/null +++ b/src/content/docs/documentation/setup_chainlit_ui_auth.md @@ -0,0 +1,22 @@ +--- +title: Chainlit Authentification +--- +To configure password-based authentication for your Chainlit UI, add the following environment variables to your `.env` file: +## Step 1: Set up the authentication secret + +First, define a **`CHAINLIT_AUTH_SECRET`** environment variable. You can generate one automatically using the command `chainlit create-secret` (or `uv run chainlit create-secret` if using uv). Alternatively, you can provide your own **custom value**. + +For detailed information about this variable, see the [Chainlit authentication documentation](https://docs.chainlit.io/authentication/overview). + +## Step 2: Configure username and password + +For password-based authentication (see [Chainlit password authentication docs](https://docs.chainlit.io/authentication/password)), add your desired username and password to the `.env` file: + +```bash +// .env +CHAINLIT_AUTH_SECRET=... +CHAINLIT_USERNAME=OpenRAG +CHAINLIT_PASSWORD=OpenRAG2025 +``` + +This configuration will enable secure access to your Chainlit application using the specified credentials. \ No newline at end of file diff --git a/src/content/docs/documentation/setup_glusterfs.md b/src/content/docs/documentation/setup_glusterfs.md new file mode 100644 index 000000000..80a7102ca --- /dev/null +++ b/src/content/docs/documentation/setup_glusterfs.md @@ -0,0 +1,141 @@ +--- +title: GlusterFS +--- + +# 🪵 GlusterFS Setup for Shared Storage (Ray Cluster) + +In a Ray distributed setup, **all worker nodes need access to certain shared resources** used by the application. +This includes: + +- `.env` (environment variables for models and settings) +- `.hydra_config` (application configuration) +- Uploaded files (`/data`) +- Model weights (e.g. `/model_weights` if using HF local cache) + +--- + +## 1️⃣ Setup VPN (if required) + +If your Ray nodes are **not on the same local network**, set up a VPN between them first. +➡ Refer to the dedicated [VPN setup guide](/documentation/setup_vpn/). +You can skip this step if your nodes are already on the same LAN. + +--- + +## 2️⃣ Setup GlusterFS (Distributed Filesystem) + +GlusterFS allows you to **share and replicate storage across multiple nodes** with redundancy and better fault tolerance. + +This guide assumes: +- You have 4 machines on the same private network +- You want all of them to share `/ray_mount` + +--- + +### 🔧 Install GlusterFS and start the GlusterFS + +Run this on **all 4 machines**: + +```bash title="installing and starting glusterfs..." +sudo apt update +sudo apt install -y glusterfs-server +sudo systemctl enable --now glusterd +``` + +--- + +### 🤝 Connect all nodes into a trusted pool + +From one node (e.g. the Ray head), run: + +```bash title:"connecting nodes..." +gluster peer probe +gluster peer probe +gluster peer probe +``` + +Confirm with: + +```bash title="shows the status of nodes" +gluster peer status +``` + +--- + +### 📁 Create bricks on each node + +On **each node**, run: + +```bash +sudo mkdir -p /gluster/bricks/ray_mount +``` + +--- + +### 📦 Create the replicated GlusterFS volume + +From one node (e.g. the Ray head): + +```bash +gluster volume create rayvol replica 4 \ + :/gluster/bricks/ray_mount \ + :/gluster/bricks/ray_mount \ + :/gluster/bricks/ray_mount \ + :/gluster/bricks/ray_mount \ + force +``` + +Start the volume: + +```bash +gluster volume start rayvol +``` + +--- + +### 🔗 Mount the volume on all nodes + +Install the client tools: + +```bash +sudo apt install -y glusterfs-client +``` + +Create the mount point: + +```bash +sudo mkdir -p /ray_mount +``` + +Mount it (on each node): + +```bash +sudo mount -t glusterfs :/rayvol /ray_mount +``` + +To make this permanent across reboots: + +```bash +echo ":/rayvol /ray_mount glusterfs defaults,_netdev 0 0" | sudo tee -a /etc/fstab +``` + +> ✅ Replace `` with one of your node IPs in the GlusterFS cluster. + +--- + +### 📂 Copy required data to the shared folder + +From any node: + +```bash +sudo cp -r .hydra_config /ray_mount/ +sudo cp .env /ray_mount/ +sudo mkdir /ray_mount/data /ray_mount/model_weights +sudo chown -R ubuntu:ubuntu /ray_mount +``` + +> ✅ Ensure that the ownership is set to the user running Ray workers (e.g. `ubuntu`) so that all nodes can read/write. + +--- + +Now, all Ray nodes will have **consistent access to required data and configurations** via `/ray_mount`, backed by a fault-tolerant and distributed filesystem. \ No newline at end of file diff --git a/src/content/docs/documentation/setup_indexerui.md b/src/content/docs/documentation/setup_indexerui.md new file mode 100644 index 000000000..c393418e5 --- /dev/null +++ b/src/content/docs/documentation/setup_indexerui.md @@ -0,0 +1,49 @@ +--- +title: Indexer UI +--- + +## Configuring the Indexer UI + +### 1. Download the `indexer-ui` Submodule + +> Ensure the `indexer-ui` submodule is initialized and downloaded. If not, run the following command from the root of your `openrag` project: + +```bash +// .env +cd # openrag project +git submodule update --init --recursive +``` + +:::note +The `--init --recursive` flags will: + +* Initialize all submodules defined in the `.gitmodules` file +* Clone the content of each submodule +* Recursively initialize and update nested submodules +::: + +:::caution +Each version of **`openrag`** ships with a specific compatible commit of [indexer-ui](https://github.com/linagora/openrag-admin-ui). The above command is sufficient. +In development mode, to fetch the latest version of `indexer-ui`, run: +```bash title="fetching the latest version of submodules..." +git submodule foreach 'git checkout main && git pull' +``` +::: + +### 2. Set Environment Variables + +To enable the Indexer UI, add the following environment variables to your configuration: + +* Replace **`X.X.X.X`** with `localhost` (for local use) or your server IP +* Replace **`APP_PORT`** with your FastAPI port (default: 8080) +* Set the **base URL of the Indexer UI** (required to prevent CORS issues). Replace **`INDEXERUI_PORT`** accordingly +* Set the **base URL of your FastAPI backend** (used by the frontend). Replace **`APP_PORT`** accordingly + +```bash +// .env +INDEXERUI_COMPOSE_FILE=extern/indexer-ui/docker-compose.yaml # Path to the docker-compose file +VITE_INCLUDE_CREDENTIALS=false # Set to true if FastAPI authentication is enabled +INDEXERUI_PORT=8060 # Port for the Indexer UI (default: 3042) +INDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT' +VITE_API_BASE_URL='http://X.X.X.X:APP_PORT' +``` \ No newline at end of file diff --git a/src/content/docs/documentation/setup_vpn.md b/src/content/docs/documentation/setup_vpn.md new file mode 100644 index 000000000..0fce6a2c6 --- /dev/null +++ b/src/content/docs/documentation/setup_vpn.md @@ -0,0 +1,126 @@ +--- +title: 🌐 VPN Setup for Remote Machines with WireGuard +--- + +This guide helps you securely connect your remote machines using **WireGuard VPN**, allowing you to share files (NFS, etc.) as if they were on the same private network. + +--- + +## 1️⃣ Install WireGuard on all machines + +Run the following on **each machine** (server and clients): + +```bash +sudo apt update +sudo apt install -y wireguard +``` + +--- + +## 2️⃣ Configure the VPN Server (Main machine `X.X.X.X`) + +Create the configuration file: + +```bash +sudo nano /etc/wireguard/wg0.conf +``` + +Paste the following: + +```ini +// /etc/wireguard/wg0.conf +... +[Interface] +Address = 10.0.0.1/24 +PrivateKey = +ListenPort = 51820 + +# Allow forwarding and NAT +PostUp = sysctl -w net.ipv4.ip_forward=1 +PostUp = iptables -A FORWARD -i wg0 -j ACCEPT +PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +PostDown = iptables -D FORWARD -i wg0 -j ACCEPT +PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE + +[Peer] +# Client machine +PublicKey = +AllowedIPs = 10.0.0.2/32 +``` + +--- + +## 3️⃣ Configure the VPN Client (Other machine `X.X.X.X`) + +Create the configuration file: + +```bash +sudo nano /etc/wireguard/wg0.conf +``` + +Paste the following: + +```ini +// /etc/wireguard/wg0.conf +... +[Interface] +Address = 10.0.0.2/24 +PrivateKey = + +[Peer] +# VPN Server +PublicKey = +Endpoint = X.X.X.X:51820 # Replace with your VPN server IP +AllowedIPs = 10.0.0.0/24 +PersistentKeepalive = 25 +``` + +--- + +## 🔑 Generate Keys on Each Machine + +On **each machine**, run: + +```bash +wg genkey | tee privatekey | wg pubkey > publickey +``` + +Use the generated keys in your configurations: +- `privatekey` → `` +- `publickey` → to give to the peer + +--- + +## 🚀 Start and Enable VPN on Both Machines + +To start the VPN connection: +```bash +sudo wg-quick up wg0 +``` + +To enable the VPN automatically on boot: +```bash +sudo systemctl enable wg-quick@wg0 +``` + +--- + +## ✅ Verification + +Test the VPN connection: +- From **client**: + ```bash + ping 10.0.0.1 + ``` +- From **server**: + ```bash + ping 10.0.0.2 + ``` + +--- + +:::caution{icon="approve-check"} +- After the VPN is up, you can configure services like **NFS** using the **10.0.0.0/24 private network**. +- Make sure your firewall allows `UDP 51820`. +- Adjust the `AllowedIPs` and network according to your needs. +::: \ No newline at end of file diff --git a/src/content/docs/getting_started/quickstart.mdx b/src/content/docs/getting_started/quickstart.mdx new file mode 100644 index 000000000..121952b1d --- /dev/null +++ b/src/content/docs/getting_started/quickstart.mdx @@ -0,0 +1,68 @@ +--- +title: Quick Start +--- + +import { Tabs, TabItem, Code } from '@astrojs/starlight/components'; +import compose_ollama_cpu from '/src/assets/compose_ollama_cpu.yaml?raw'; +import env_ollama_cpu from '/src/assets/env_ollama_cpu.env?raw'; +import compose_linux_gpu from '/src/assets/compose_linux_gpu.yaml?raw'; +import env_linux_gpu from '/src/assets/env_linux_gpu.env?raw'; + +OpenRAG is an open source Retrieval Augmented Generation (RAG) solution. This guide is a step-by-step walkthrough to help you get started with OpenRAG. + +- Before proceeding, ensure your hardware meets the [recommended specifications](/minimum-specifications). +- Install [Docker](https://www.docker.com/get-started). + +## Docker + +Use the following `docker-compose.yml` file to set up a simple OpenRAG environment: + + + + + +
+ Click to expand the docker-compose.yml content + +
+ You will also need to provide some environment variables. Create a `.env` file in the same directory as your `docker-compose.yml` file with the following content: +
+ Click to expand the .env content + +
+ +
+ + ```yaml + Nothing here + ``` + +
+
+ + The simplest way to run OpenRAG on MacOS is to use the ollama model inference server. For more in-depth deployment options, refer to the [Docker installation guide](/installation/docker). +
+ Click to expand the docker-compose.yml content + +
+ + You will also need to provide some environment variables. Create a `.env` file in the same directory as your `docker-compose.yml` file with the following content: +
+ Click to expand the .env content + +
+
+
+ +## Ansible + +Clone the OpenRAG repository: +```bash +git clone https://github.com/linagora/openrag.git +cd openrag +``` + +Run the provided deployment script and follow the instructions: +```bash +./ansible/deploy.sh +``` diff --git a/src/content/docs/getting_started/usage.mdx b/src/content/docs/getting_started/usage.mdx new file mode 100644 index 000000000..86e474145 --- /dev/null +++ b/src/content/docs/getting_started/usage.mdx @@ -0,0 +1,18 @@ +--- +title: Usage +--- + +Once you have installed your OpenRAG instance, you can start using it to upload and query your documents. + +## Default ports + +By default, OpenRAG services are exposed on the following ports: + +| Service | Port | Description | +|-------------------|---------------|----------------------------------------------------------------| +| API Documentation | 8080/docs | Main API for document ingestion and querying | +| Chainlit UI | 8080/chainlit | User interface for interacting with the RAG system | +| Ray Dashboard | 8265 | Ray dashboard for monitoring and managing tasks | +| Indexer UI | 3043 | Main user interface for indexing and viewing indexed documents | + +More information about the different services can be found in their respective documentation pages. \ No newline at end of file diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx new file mode 100644 index 000000000..c50116d34 --- /dev/null +++ b/src/content/docs/index.mdx @@ -0,0 +1,34 @@ +--- +title: 🦫 OpenRag — The Open RAG Experimentation Playground +description: This is a page in my Starlight-powered site +template: splash +tableOfContents: false +next: false +--- + +import { LinkCard, CardGrid, Card } from '@astrojs/starlight/components'; +import { Image } from 'astro:assets'; +import myImage from "/src/assets/RAG_architecture.png"; + +RAG Architecture + +[OpenRag](https://open-rag.ai/) is a lightweight, modular and extensible Retrieval-Augmented Generation (RAG) framework designed to explore and test advanced RAG techniques — 100% open source and focused on experimentation, not lock-in. + +> Built by Linagora, OpenRag offers a sovereign-by-design alternative to mainstream RAG stacks. + +## Getting Started + + + + + \ No newline at end of file diff --git a/src/content/docs/installation/ansible_setup.mdx b/src/content/docs/installation/ansible_setup.mdx new file mode 100644 index 000000000..02a2d917d --- /dev/null +++ b/src/content/docs/installation/ansible_setup.mdx @@ -0,0 +1,259 @@ +--- +title: Ansible +--- + +The Ansible playbooks and scripts provided help automatically set up the OpenRAG environment on one or more servers. + +These scripts are designed for installation on fresh production machines. + +### Prerequisites + +Ensure the hardware hosting OpenRAG meets the [recommended specifications](/minimum-specifications). + +- Ansible installed on your control machine (automatically installed by `deploy.sh` if missing) +- SSH access to target servers (if deploying remotely) +- Ubuntu 20.04+ or similar Linux distribution on target servers +- For remote deployment: `inventory.ini.example` file from the OpenRAG repository + +### Local Deployment (Easiest) + +```bash +cd ansible/ +./deploy.sh +# Choose option 1: "Deploy to local machine" +# Select CPU-only or GPU-enabled deployment when prompted +``` + +The local deployment will: +- Prompt you to choose between CPU-only or GPU-enabled deployment +- Handle all necessary configurations and installs automatically +- Start all services + +### Remote Deployment + +1. **Create the inventory file (on the control machine):** + ```bash + # Rename the example inventory file + cp inventory.ini.example inventory.ini + + # Edit the inventory file + nano inventory.ini + ``` + +2. **Configure your servers:** + ```ini + [gpu_servers] + gpu-server1 ansible_host=192.168.1.100 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa + gpu-server2 ansible_host=192.168.1.101 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa + + [cpu_servers] + cpu-server1 ansible_host=192.168.1.102 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa + + [all:vars] + ansible_python_interpreter=/usr/bin/python3 + ``` + +3. **Run the deployment:** + ```bash + ./deploy.sh + # Choose option 2: "Deploy remotely" + ``` + +## Files Overview + +### Playbooks + +- **`playbook.yml`** - Main deployment playbook with separate GPU-enabled and CPU-only server configurations + +### Inventory Files + +- **`inventory.ini.example`** - Example inventory template for remote deployment +- **`inventory.ini`** - Generated automatically for local deployment or manually created for remote deployment + +### Configuration + +- **`ansible.cfg`** - Ansible configuration settings + +### Scripts + +- **`deploy.sh`** - Interactive deployment and management + +## Manual Deployment + +If you prefer to run Ansible commands directly: + +### Local/Remote Deployment +```bash +# Create inventory first +ansible-playbook -i inventory.ini playbook.yml --ask-become-pass +``` + +### Check Status +```bash +ansible all -i inventory.ini -m shell -a "docker ps" --become +``` + +## Service Management + +The deployment script provides several management options: + +### Interactive Mode +```bash +./deploy.sh +``` + +### Command Line Mode +```bash +# Deploy locally +./deploy.sh deploy-local + +# Deploy remotely +./deploy.sh deploy-remote + +# Check status +./deploy.sh status + +# Stop services +./deploy.sh stop + +# Start services +./deploy.sh start + +# View logs +./deploy.sh logs [service_name] + +# Update deployment +./deploy.sh update + +# Complete removal +./deploy.sh remove-all +``` + +## What Gets Installed + +### System Packages +- Docker CE with Compose plugin +- NVIDIA drivers (if GPU detected and GPU server group is used) +- NVIDIA Container Toolkit (for GPU servers) +- Python 3 with pip and uv package manager +- Essential development tools + +### OpenRAG Components +- Complete OpenRAG codebase from GitHub +- All required Python dependencies installed via `uv` +- Docker containers for OpenRAG services with appropriate profiles: + - GPU servers: Default profile (includes GPU-accelerated services) + - CPU servers: CPU profile (CPU-only services) + +### Directory Structure +``` +/home/[user]/openrag/ +├── data/ # Document storage +├── db/ # Database files +├── logs/ # Application logs +├── .hydra_config/ # Hydra configuration cache +├── model_weights/ # Cached model files +├── vdb/volumes/ # Vector database volumes +├── .env # Environment configuration +└── ... # OpenRAG source code +``` + +## Configuration + +### Environment Variables + +The deployment automatically creates a `.env` file from `.env.example` or copies a local `.env` file if present. Key variables to customize: + +```bash +# LLM Configuration +BASE_URL=http://your-llm-endpoint +API_KEY=your-api-key +MODEL=your-model-name + +# Application Settings +APP_PORT=8080 +RETRIEVER_TOP_K=20 + +# Embedder Settings +EMBEDDER_MODEL_NAME=Qwen/Qwen3-Embedding-0.6B +``` + +### Version Configuration + +The playbook uses these default versions (configurable via inventory variables): + +```yaml +# Docker and NVIDIA versions +docker_compose_version: "2.21.0" +nvidia_driver_version: "535" +docker_ce_version: "latest" +nvidia_container_toolkit_version: "1.17.8-1" +``` + +### Inventory Variables + +You can set variables in your inventory file: + +```ini +[gpu_servers:vars] +nvidia_driver_version=535 +project_user=ubuntu +project_path=/home/ubuntu/openrag + +[cpu_servers:vars] +project_user=ubuntu +project_path=/home/ubuntu/openrag + +[all:vars] +ansible_python_interpreter=/usr/bin/python3 +``` + +## Troubleshooting + +### Common Issues + +1. **Docker permission denied** + ```bash + # Re-login to apply docker group membership + sudo su - $USER + ``` + +2. **NVIDIA driver installation fails** + ```bash + # Check GPU compatibility + lspci | grep -i nvidia + ``` + +3. **Services not starting** + ```bash + # Check logs + docker compose logs + ``` + +### Manual Recovery + +If something goes wrong, you can manually clean up: + +```bash +# Stop all containers +docker compose down + +# Remove containers and images +docker system prune -a + +# Re-run deployment +./deploy.sh +``` + +### Complete System Reset + +For a complete removal of all components (Docker, NVIDIA drivers, OpenRAG): + +```bash +# Use the deployment script's removal option +./deploy.sh remove-all +``` + +**Warning**: This will remove Docker, NVIDIA drivers, and all related components. Use with caution! + +For OpenRAG application issues, refer to the [main project documentation](/documentation/api_documentation). diff --git a/src/content/docs/installation/docker.mdx b/src/content/docs/installation/docker.mdx new file mode 100644 index 000000000..1bdfb5cfa --- /dev/null +++ b/src/content/docs/installation/docker.mdx @@ -0,0 +1,15 @@ +--- +title: Docker +--- + +OpenRAG is most comprehensively deployed using Docker. + +- Before proceeding, ensure your hardware meets the [recommended specifications](/minimum-specifications). +- Install [Docker](https://www.docker.com/get-started). + +The OpenRAG docker image is available on [DockerHub](https://hub.docker.com/r/rcordier/openrag) and the [GitHub Container Registry](https://github.com/linagora/openrag/pkgs/container/openrag). + +## Docker Compose + +OpenRAG requires several services to run, which can be orchestrated using Docker Compose. + diff --git a/src/content/docs/license.mdx b/src/content/docs/license.mdx new file mode 100644 index 000000000..633e4d61d --- /dev/null +++ b/src/content/docs/license.mdx @@ -0,0 +1,7 @@ +--- +title: License +--- + +OpenRag is licensed under [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.en.html). You are free to use, modify, and distribute this software in compliance with the terms of the license. + +For more details, refer to the [LICENSE](https://github.com/linagora/openrag/blob/main/LICENSE) file in the repository. \ No newline at end of file diff --git a/src/content/docs/minimum-specifications.md b/src/content/docs/minimum-specifications.md new file mode 100644 index 000000000..820c4c2f5 --- /dev/null +++ b/src/content/docs/minimum-specifications.md @@ -0,0 +1,15 @@ +--- +title: Minimum Specifications +--- + +OpenRAG can be run on a variety of hardware configurations, but still requires a minimum set of specifications. + +## Memory +- Minimum: 16 GB RAM +- Recommended: 32 GB RAM or more for better performance. + +## GPU +- Minimum: NVIDIA GPU with at least 16 GB VRAM + +:::note +Machines with unified memory (like Apple M-series Macs) work with at least 16 GB of RAM. However considering performance, 32 GB of RAM is recommended. \ No newline at end of file diff --git a/src/content/docs/support-and-contribute.mdx b/src/content/docs/support-and-contribute.mdx new file mode 100644 index 000000000..11a2c5e0c --- /dev/null +++ b/src/content/docs/support-and-contribute.mdx @@ -0,0 +1,12 @@ +--- +title: Support and Contribute +--- + +We ❤️ your contributions! + +We encourage you to contribute to OpenRag! Here's how you can get involved: +1. Fork the repository on [GitHub](https://github.com/linagora/openrag). +2. Create a new branch for your feature or fix. +3. Submit a pull request for review. + +Feel free to ask **questions, suggest features, or report bugs** via the GitHub Issues page. Your feedback helps us improve! diff --git a/src/styles/custom.css b/src/styles/custom.css new file mode 100644 index 000000000..b043ebeb9 --- /dev/null +++ b/src/styles/custom.css @@ -0,0 +1,3 @@ +:root { + --sl-font: 'Space Grotesk Variable', sans-serif; /* https://fontsource.org/fonts/space-grotesk */ +} \ No newline at end of file diff --git a/src/styles/global.css b/src/styles/global.css new file mode 100644 index 000000000..8e0d25233 --- /dev/null +++ b/src/styles/global.css @@ -0,0 +1,22 @@ +@layer base, starlight, theme, components, utilities; + +@import '@astrojs/starlight-tailwind'; +@import 'tailwindcss/theme.css' layer(theme); +@import 'tailwindcss/utilities.css' layer(utilities); + +@theme { + /* Generated accent color palettes. */ + --color-accent-200: #fdb1b8; + --color-accent-600: #c80047; + --color-accent-900: #63001f; + --color-accent-950: #450817; + /* Generated gray color palettes. */ + --color-gray-100: #f5f6f8; + --color-gray-200: #eceef2; + --color-gray-300: #c0c2c7; + --color-gray-400: #888b96; + --color-gray-500: #545861; + --color-gray-700: #353841; + --color-gray-800: #24272f; + --color-gray-900: #17181c; +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..8bf91d3bb --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "astro/tsconfigs/strict", + "include": [".astro/types.d.ts", "**/*"], + "exclude": ["dist"] +} From c052d23024b6ceee56dd0d75602ab00d24532d6a Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Fri, 3 Oct 2025 15:57:56 +0000 Subject: [PATCH 032/126] mode ./docs folder to ./src/content/docs --- .astro/content-modules.mjs | 2 +- .astro/data-store.json | 2 +- docs/api_documentation.md | 282 ------------------ docs/chainlit_data_persistency.md | 43 --- docs/deploy_ray_cluster.md | 141 --------- docs/setup_chainlit_ui_auth.md | 19 -- docs/setup_glusterfs.md | 137 --------- docs/setup_indexerui.md | 42 --- docs/setup_vpn.md | 120 -------- src/content/docs/documentation/API.mdx | 8 +- .../chainlit_data_persistency.md | 2 +- .../docs/documentation/features_in_details.md | 2 +- .../content/docs/documentation}/kubernetes.md | 11 +- .../docs/documentation/setup_glusterfs.md | 4 +- .../docs/documentation/setup_indexerui.md | 3 +- src/content/docs/documentation/setup_vpn.md | 2 +- 16 files changed, 18 insertions(+), 802 deletions(-) delete mode 100644 docs/api_documentation.md delete mode 100644 docs/chainlit_data_persistency.md delete mode 100644 docs/deploy_ray_cluster.md delete mode 100644 docs/setup_chainlit_ui_auth.md delete mode 100644 docs/setup_glusterfs.md delete mode 100644 docs/setup_indexerui.md delete mode 100644 docs/setup_vpn.md rename {docs => src/content/docs/documentation}/kubernetes.md (87%) diff --git a/.astro/content-modules.mjs b/.astro/content-modules.mjs index 986befdd6..7c0feb8b7 100644 --- a/.astro/content-modules.mjs +++ b/.astro/content-modules.mjs @@ -1,7 +1,7 @@ export default new Map([ -["src/content/docs/index.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Findex.mdx&astroContentModuleFlag=true")], ["src/content/docs/license.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Flicense.mdx&astroContentModuleFlag=true")], +["src/content/docs/index.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Findex.mdx&astroContentModuleFlag=true")], ["src/content/docs/support-and-contribute.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fsupport-and-contribute.mdx&astroContentModuleFlag=true")], ["src/content/docs/documentation/API.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fdocumentation%2FAPI.mdx&astroContentModuleFlag=true")], ["src/content/docs/getting_started/quickstart.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting_started%2Fquickstart.mdx&astroContentModuleFlag=true")], diff --git a/.astro/data-store.json b/.astro/data-store.json index bab8e817e..16235bda6 100644 --- a/.astro/data-store.json +++ b/.astro/data-store.json @@ -1 +1 @@ -[["Map",1,2,9,10],"meta::meta",["Map",3,4,5,6,7,8],"astro-version","5.13.3","content-config-digest","9a95ec2e8398aaca","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"where\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[],\"responsiveStyles\":false},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":false,\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[null,null,null],\"rehypePlugins\":[null,[null,{\"experimentalHeadingIdCompat\":false}],null,[null,{\"themes\":[{\"name\":\"Night Owl No Italics\",\"type\":\"dark\",\"colors\":{\"focusBorder\":\"#122d42\",\"foreground\":\"#d6deeb\",\"disabledForeground\":\"#cccccc80\",\"descriptionForeground\":\"#d6deebb3\",\"errorForeground\":\"#ef5350\",\"icon.foreground\":\"#c5c5c5\",\"contrastActiveBorder\":null,\"contrastBorder\":\"#122d42\",\"textBlockQuote.background\":\"#7f7f7f1a\",\"textBlockQuote.border\":\"#007acc80\",\"textCodeBlock.background\":\"#4f4f4f\",\"textLink.activeForeground\":\"#3794ff\",\"textLink.foreground\":\"#3794ff\",\"textPreformat.foreground\":\"#d7ba7d\",\"textSeparator.foreground\":\"#ffffff2e\",\"editor.background\":\"#23262f\",\"editor.foreground\":\"#d6deeb\",\"editorLineNumber.foreground\":\"#4b6479\",\"editorLineNumber.activeForeground\":\"#c5e4fd\",\"editorActiveLineNumber.foreground\":\"#c6c6c6\",\"editor.selectionBackground\":\"#1d3b53\",\"editor.inactiveSelectionBackground\":\"#7e57c25a\",\"editor.selectionHighlightBackground\":\"#5f7e9779\",\"editorError.foreground\":\"#ef5350\",\"editorWarning.foreground\":\"#b39554\",\"editorInfo.foreground\":\"#3794ff\",\"editorHint.foreground\":\"#eeeeeeb2\",\"problemsErrorIcon.foreground\":\"#ef5350\",\"problemsWarningIcon.foreground\":\"#b39554\",\"problemsInfoIcon.foreground\":\"#3794ff\",\"editor.findMatchBackground\":\"#5f7e9779\",\"editor.findMatchHighlightBackground\":\"#1085bb5d\",\"editor.findRangeHighlightBackground\":\"#3a3d4166\",\"editorLink.activeForeground\":\"#4e94ce\",\"editorLightBulb.foreground\":\"#ffcc00\",\"editorLightBulbAutoFix.foreground\":\"#75beff\",\"diffEditor.insertedTextBackground\":\"#99b76d23\",\"diffEditor.insertedTextBorder\":\"#c5e47833\",\"diffEditor.removedTextBackground\":\"#ef535033\",\"diffEditor.removedTextBorder\":\"#ef53504d\",\"diffEditor.insertedLineBackground\":\"#9bb95533\",\"diffEditor.removedLineBackground\":\"#ff000033\",\"editorStickyScroll.background\":\"#011627\",\"editorStickyScrollHover.background\":\"#2a2d2e\",\"editorInlayHint.background\":\"#5f7e97cc\",\"editorInlayHint.foreground\":\"#ffffff\",\"editorInlayHint.typeBackground\":\"#5f7e97cc\",\"editorInlayHint.typeForeground\":\"#ffffff\",\"editorInlayHint.parameterBackground\":\"#5f7e97cc\",\"editorInlayHint.parameterForeground\":\"#ffffff\",\"editorPane.background\":\"#011627\",\"editorGroup.emptyBackground\":\"#011627\",\"editorGroup.focusedEmptyBorder\":null,\"editorGroupHeader.tabsBackground\":\"var(--sl-color-black)\",\"editorGroupHeader.tabsBorder\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"editorGroupHeader.noTabsBackground\":\"#011627\",\"editorGroupHeader.border\":null,\"editorGroup.border\":\"#011627\",\"editorGroup.dropBackground\":\"#7e57c273\",\"editorGroup.dropIntoPromptForeground\":\"#d6deeb\",\"editorGroup.dropIntoPromptBackground\":\"#021320\",\"editorGroup.dropIntoPromptBorder\":null,\"sideBySideEditor.horizontalBorder\":\"#011627\",\"sideBySideEditor.verticalBorder\":\"#011627\",\"scrollbar.shadow\":\"#010b14\",\"scrollbarSlider.background\":\"#ffffff17\",\"scrollbarSlider.hoverBackground\":\"#ffffff40\",\"scrollbarSlider.activeBackground\":\"#084d8180\",\"panel.background\":\"#011627\",\"panel.border\":\"#5f7e97\",\"panelTitle.activeBorder\":\"#5f7e97\",\"panelTitle.activeForeground\":\"#ffffffcc\",\"panelTitle.inactiveForeground\":\"#d6deeb80\",\"panelSectionHeader.background\":\"#80808051\",\"terminal.background\":\"#011627\",\"widget.shadow\":\"#011627\",\"editorWidget.background\":\"#021320\",\"editorWidget.foreground\":\"#d6deeb\",\"editorWidget.border\":\"#5f7e97\",\"quickInput.background\":\"#021320\",\"quickInput.foreground\":\"#d6deeb\",\"quickInputTitle.background\":\"#ffffff1a\",\"pickerGroup.foreground\":\"#d1aaff\",\"pickerGroup.border\":\"#011627\",\"editor.hoverHighlightBackground\":\"#7e57c25a\",\"editorHoverWidget.background\":\"#011627\",\"editorHoverWidget.foreground\":\"#d6deeb\",\"editorHoverWidget.border\":\"#5f7e97\",\"editorHoverWidget.statusBarBackground\":\"#011a2f\",\"titleBar.activeBackground\":\"var(--sl-color-black)\",\"titleBar.activeForeground\":\"var(--sl-color-text)\",\"titleBar.inactiveBackground\":\"#010e1a\",\"titleBar.inactiveForeground\":\"#eeefff99\",\"titleBar.border\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"toolbar.hoverBackground\":\"#5a5d5e50\",\"toolbar.activeBackground\":\"#63666750\",\"tab.activeBackground\":\"#0b2942\",\"tab.unfocusedActiveBackground\":\"#0b2942\",\"tab.inactiveBackground\":\"#01111d\",\"tab.unfocusedInactiveBackground\":\"#01111d\",\"tab.activeForeground\":\"var(--sl-color-text)\",\"tab.inactiveForeground\":\"#5f7e97\",\"tab.unfocusedActiveForeground\":\"#5f7e97\",\"tab.unfocusedInactiveForeground\":\"#5f7e97\",\"tab.hoverBackground\":null,\"tab.unfocusedHoverBackground\":null,\"tab.hoverForeground\":null,\"tab.unfocusedHoverForeground\":null,\"tab.border\":\"#272b3b\",\"tab.lastPinnedBorder\":\"#585858\",\"tab.activeBorder\":\"transparent\",\"tab.unfocusedActiveBorder\":\"#262a39\",\"tab.activeBorderTop\":\"var(--sl-color-accent-high)\",\"tab.unfocusedActiveBorderTop\":null,\"tab.hoverBorder\":null,\"tab.unfocusedHoverBorder\":null,\"tab.activeModifiedBorder\":\"#3399cc\",\"tab.inactiveModifiedBorder\":\"#3399cc80\",\"tab.unfocusedActiveModifiedBorder\":\"#3399cc80\",\"tab.unfocusedInactiveModifiedBorder\":\"#3399cc40\",\"badge.background\":\"#5f7e97\",\"badge.foreground\":\"#ffffff\",\"button.background\":\"#7e57c2cc\",\"button.foreground\":\"#ffffffcc\",\"button.border\":\"#122d42\",\"button.separator\":\"#ffffff52\",\"button.hoverBackground\":\"#7e57c2\",\"button.secondaryBackground\":\"#3a3d41\",\"button.secondaryForeground\":\"#ffffff\",\"button.secondaryHoverBackground\":\"#46494e\",\"dropdown.background\":\"#011627\",\"dropdown.foreground\":\"#ffffffcc\",\"dropdown.border\":\"#5f7e97\",\"list.activeSelectionBackground\":\"#234d708c\",\"list.activeSelectionForeground\":\"#ffffff\",\"tree.indentGuidesStroke\":\"#585858\",\"input.background\":\"#0b253a\",\"input.foreground\":\"#ffffffcc\",\"input.placeholderForeground\":\"#5f7e97\",\"inputOption.activeBorder\":\"#ffffffcc\",\"inputOption.hoverBackground\":\"#5a5d5e80\",\"inputOption.activeBackground\":\"#122d4266\",\"inputOption.activeForeground\":\"#ffffff\",\"inputValidation.infoBackground\":\"#00589ef2\",\"inputValidation.infoBorder\":\"#64b5f6\",\"inputValidation.warningBackground\":\"#675700f2\",\"inputValidation.warningBorder\":\"#ffca28\",\"inputValidation.errorBackground\":\"#ab0300f2\",\"inputValidation.errorBorder\":\"#ef5350\",\"keybindingLabel.background\":\"#8080802b\",\"keybindingLabel.foreground\":\"#cccccc\",\"keybindingLabel.border\":\"#33333399\",\"keybindingLabel.bottomBorder\":\"#44444499\",\"menu.foreground\":\"#ffffffcc\",\"menu.background\":\"#011627\",\"menu.selectionForeground\":\"#ffffff\",\"menu.selectionBackground\":\"#234d708c\",\"menu.separatorBackground\":\"#606060\",\"editor.snippetTabstopHighlightBackground\":\"#7c7c74c\",\"editor.snippetFinalTabstopHighlightBorder\":\"#525252\",\"terminal.ansiBlack\":\"#011627\",\"terminal.ansiRed\":\"#ef5350\",\"terminal.ansiGreen\":\"#22da6e\",\"terminal.ansiYellow\":\"#c5e478\",\"terminal.ansiBlue\":\"#82aaff\",\"terminal.ansiMagenta\":\"#c792ea\",\"terminal.ansiCyan\":\"#21c7a8\",\"terminal.ansiWhite\":\"#ffffff\",\"terminal.ansiBrightBlack\":\"#575656\",\"terminal.ansiBrightRed\":\"#ef5350\",\"terminal.ansiBrightGreen\":\"#22da6e\",\"terminal.ansiBrightYellow\":\"#ffeb95\",\"terminal.ansiBrightBlue\":\"#82aaff\",\"terminal.ansiBrightMagenta\":\"#c792ea\",\"terminal.ansiBrightCyan\":\"#7fdbca\",\"terminal.ansiBrightWhite\":\"#ffffff\",\"selection.background\":\"#4373c2\",\"input.border\":\"#5f7e97\",\"punctuation.definition.generic.begin.html\":\"#ef5350f2\",\"progress.background\":\"#7e57c2\",\"breadcrumb.foreground\":\"#a599e9\",\"breadcrumb.focusForeground\":\"#ffffff\",\"breadcrumb.activeSelectionForeground\":\"#ffffff\",\"breadcrumbPicker.background\":\"#001122\",\"list.invalidItemForeground\":\"#975f94\",\"list.dropBackground\":\"#011627\",\"list.focusBackground\":\"#010d18\",\"list.focusForeground\":\"#ffffff\",\"list.highlightForeground\":\"#ffffff\",\"list.hoverBackground\":\"#011627\",\"list.hoverForeground\":\"#ffffff\",\"list.inactiveSelectionBackground\":\"#0e293f\",\"list.inactiveSelectionForeground\":\"#5f7e97\",\"activityBar.background\":\"#011627\",\"activityBar.dropBackground\":\"#5f7e97\",\"activityBar.foreground\":\"#5f7e97\",\"activityBar.border\":\"#011627\",\"activityBarBadge.background\":\"#44596b\",\"activityBarBadge.foreground\":\"#ffffff\",\"sideBar.background\":\"#011627\",\"sideBar.foreground\":\"#89a4bb\",\"sideBar.border\":\"#011627\",\"sideBarTitle.foreground\":\"#5f7e97\",\"sideBarSectionHeader.background\":\"#011627\",\"sideBarSectionHeader.foreground\":\"#5f7e97\",\"editorCursor.foreground\":\"#80a4c2\",\"editor.wordHighlightBackground\":\"#f6bbe533\",\"editor.wordHighlightStrongBackground\":\"#e2a2f433\",\"editor.lineHighlightBackground\":\"#0003\",\"editor.rangeHighlightBackground\":\"#7e57c25a\",\"editorIndentGuide.background\":\"#5e81ce52\",\"editorIndentGuide.activeBackground\":\"#7e97ac\",\"editorRuler.foreground\":\"#5e81ce52\",\"editorCodeLens.foreground\":\"#5e82ceb4\",\"editorBracketMatch.background\":\"#5f7e974d\",\"editorOverviewRuler.currentContentForeground\":\"#7e57c2\",\"editorOverviewRuler.incomingContentForeground\":\"#7e57c2\",\"editorOverviewRuler.commonContentForeground\":\"#7e57c2\",\"editorGutter.background\":\"#011627\",\"editorGutter.modifiedBackground\":\"#e2b93d\",\"editorGutter.addedBackground\":\"#9ccc65\",\"editorGutter.deletedBackground\":\"#ef5350\",\"editorSuggestWidget.background\":\"#2c3043\",\"editorSuggestWidget.border\":\"#2b2f40\",\"editorSuggestWidget.foreground\":\"#d6deeb\",\"editorSuggestWidget.highlightForeground\":\"#ffffff\",\"editorSuggestWidget.selectedBackground\":\"#5f7e97\",\"debugExceptionWidget.background\":\"#011627\",\"debugExceptionWidget.border\":\"#5f7e97\",\"editorMarkerNavigation.background\":\"#0b2942\",\"editorMarkerNavigationError.background\":\"#ef5350\",\"editorMarkerNavigationWarning.background\":\"#ffca28\",\"peekView.border\":\"#5f7e97\",\"peekViewEditor.background\":\"#011627\",\"peekViewEditor.matchHighlightBackground\":\"#7e57c25a\",\"peekViewResult.background\":\"#011627\",\"peekViewResult.fileForeground\":\"#5f7e97\",\"peekViewResult.lineForeground\":\"#5f7e97\",\"peekViewResult.matchHighlightBackground\":\"#ffffffcc\",\"peekViewResult.selectionBackground\":\"#2e3250\",\"peekViewResult.selectionForeground\":\"#5f7e97\",\"peekViewTitle.background\":\"#011627\",\"peekViewTitleDescription.foreground\":\"#697098\",\"peekViewTitleLabel.foreground\":\"#5f7e97\",\"merge.currentHeaderBackground\":\"#5f7e97\",\"merge.incomingHeaderBackground\":\"#7e57c25a\",\"statusBar.background\":\"#011627\",\"statusBar.foreground\":\"#5f7e97\",\"statusBar.border\":\"#262a39\",\"statusBar.debuggingBackground\":\"#202431\",\"statusBar.debuggingBorder\":\"#1f2330\",\"statusBar.noFolderBackground\":\"#011627\",\"statusBar.noFolderBorder\":\"#25293a\",\"statusBarItem.activeBackground\":\"#202431\",\"statusBarItem.hoverBackground\":\"#202431\",\"statusBarItem.prominentBackground\":\"#202431\",\"statusBarItem.prominentHoverBackground\":\"#202431\",\"notifications.background\":\"#01111d\",\"notifications.border\":\"#262a39\",\"notificationCenter.border\":\"#262a39\",\"notificationToast.border\":\"#262a39\",\"notifications.foreground\":\"#ffffffcc\",\"notificationLink.foreground\":\"#80cbc4\",\"extensionButton.prominentForeground\":\"#ffffffcc\",\"extensionButton.prominentBackground\":\"#7e57c2cc\",\"extensionButton.prominentHoverBackground\":\"#7e57c2\",\"terminal.selectionBackground\":\"#1b90dd4d\",\"terminalCursor.background\":\"#234d70\",\"debugToolBar.background\":\"#011627\",\"welcomePage.buttonBackground\":\"#011627\",\"welcomePage.buttonHoverBackground\":\"#011627\",\"walkThrough.embeddedEditorBackground\":\"#011627\",\"gitDecoration.modifiedResourceForeground\":\"#a2bffc\",\"gitDecoration.deletedResourceForeground\":\"#ef535090\",\"gitDecoration.untrackedResourceForeground\":\"#c5e478ff\",\"gitDecoration.ignoredResourceForeground\":\"#395a75\",\"gitDecoration.conflictingResourceForeground\":\"#ffeb95cc\",\"source.elm\":\"#5f7e97\",\"string.quoted.single.js\":\"#ffffff\",\"meta.objectliteral.js\":\"#82aaff\"},\"fg\":\"#d6deeb\",\"bg\":\"#23262f\",\"semanticHighlighting\":false,\"settings\":[{\"name\":\"Changed\",\"scope\":[\"markup.changed\",\"meta.diff.header.git\",\"meta.diff.header.from-file\",\"meta.diff.header.to-file\"],\"settings\":{\"foreground\":\"#a2bffc\"}},{\"name\":\"Deleted\",\"scope\":[\"markup.deleted.diff\"],\"settings\":{\"foreground\":\"#f27775fe\"}},{\"name\":\"Inserted\",\"scope\":[\"markup.inserted.diff\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Global settings\",\"settings\":{\"background\":\"#011627\",\"foreground\":\"#d6deeb\"}},{\"name\":\"Comment\",\"scope\":[\"comment\"],\"settings\":{\"foreground\":\"#919f9f\",\"fontStyle\":\"\"}},{\"name\":\"String\",\"scope\":[\"string\"],\"settings\":{\"foreground\":\"#ecc48d\"}},{\"name\":\"String Quoted\",\"scope\":[\"string.quoted\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#ecc48d\"}},{\"name\":\"Support Constant Math\",\"scope\":[\"support.constant.math\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Number\",\"scope\":[\"constant.numeric\",\"constant.character.numeric\"],\"settings\":{\"foreground\":\"#f78c6c\",\"fontStyle\":\"\"}},{\"name\":\"Built-in constant\",\"scope\":[\"constant.language\",\"punctuation.definition.constant\",\"variable.other.constant\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"User-defined constant\",\"scope\":[\"constant.character\",\"constant.other\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Constant Character Escape\",\"scope\":[\"constant.character.escape\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"RegExp String\",\"scope\":[\"string.regexp\",\"string.regexp keyword.other\"],\"settings\":{\"foreground\":\"#5ca7e4\"}},{\"name\":\"Comma in functions\",\"scope\":[\"meta.function punctuation.separator.comma\"],\"settings\":{\"foreground\":\"#889fb2\"}},{\"name\":\"Variable\",\"scope\":[\"variable\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Keyword\",\"scope\":[\"punctuation.accessor\",\"keyword\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Storage\",\"scope\":[\"storage\",\"meta.var.expr\",\"meta.class meta.method.declaration meta.var.expr storage.type.js\",\"storage.type.property.js\",\"storage.type.property.ts\",\"storage.type.property.tsx\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type.function.arrow.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Class name\",\"scope\":[\"entity.name.class\",\"meta.class entity.name.type.class\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Inherited class\",\"scope\":[\"entity.other.inherited-class\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Function name\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Meta Tag\",\"scope\":[\"punctuation.definition.tag\",\"meta.tag\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"HTML Tag names\",\"scope\":[\"entity.name.tag\",\"meta.tag.other.html\",\"meta.tag.other.js\",\"meta.tag.other.tsx\",\"entity.name.tag.tsx\",\"entity.name.tag.js\",\"entity.name.tag\",\"meta.tag.js\",\"meta.tag.tsx\",\"meta.tag.html\"],\"settings\":{\"foreground\":\"#caece6\",\"fontStyle\":\"\"}},{\"name\":\"Tag attribute\",\"scope\":[\"entity.other.attribute-name\"],\"settings\":{\"fontStyle\":\"\",\"foreground\":\"#c5e478\"}},{\"name\":\"Entity Name Tag Custom\",\"scope\":[\"entity.name.tag.custom\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Library (function & constant)\",\"scope\":[\"support.function\",\"support.constant\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Support Constant Property Value meta\",\"scope\":[\"support.constant.meta.property-value\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Library class/type\",\"scope\":[\"support.type\",\"support.class\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Support Variable DOM\",\"scope\":[\"support.variable.dom\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Invalid\",\"scope\":[\"invalid\"],\"settings\":{\"background\":\"#ff2c83\",\"foreground\":\"#ffffff\"}},{\"name\":\"Invalid deprecated\",\"scope\":[\"invalid.deprecated\"],\"settings\":{\"foreground\":\"#ffffff\",\"background\":\"#d3423e\"}},{\"name\":\"Keyword Operator\",\"scope\":[\"keyword.operator\"],\"settings\":{\"foreground\":\"#7fdbca\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Relational\",\"scope\":[\"keyword.operator.relational\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Assignment\",\"scope\":[\"keyword.operator.assignment\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Arithmetic\",\"scope\":[\"keyword.operator.arithmetic\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Bitwise\",\"scope\":[\"keyword.operator.bitwise\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Increment\",\"scope\":[\"keyword.operator.increment\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Ternary\",\"scope\":[\"keyword.operator.ternary\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Double-Slashed Comment\",\"scope\":[\"comment.line.double-slash\"],\"settings\":{\"foreground\":\"#919f9f\"}},{\"name\":\"Object\",\"scope\":[\"object\"],\"settings\":{\"foreground\":\"#cdebf7\"}},{\"name\":\"Null\",\"scope\":[\"constant.language.null\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Meta Brace\",\"scope\":[\"meta.brace\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Meta Delimiter Period\",\"scope\":[\"meta.delimiter.period\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Punctuation Definition String\",\"scope\":[\"punctuation.definition.string\"],\"settings\":{\"foreground\":\"#d9f5dd\"}},{\"name\":\"Punctuation Definition String Markdown\",\"scope\":[\"punctuation.definition.string.begin.markdown\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Boolean\",\"scope\":[\"constant.language.boolean\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Object Comma\",\"scope\":[\"object.comma\"],\"settings\":{\"foreground\":\"#ffffff\"}},{\"name\":\"Variable Parameter Function\",\"scope\":[\"variable.parameter.function\"],\"settings\":{\"foreground\":\"#7fdbca\",\"fontStyle\":\"\"}},{\"name\":\"Support Type Property Name & entity name tags\",\"scope\":[\"support.type.vendor.property-name\",\"support.constant.vendor.property-value\",\"support.type.property-name\",\"meta.property-list entity.name.tag\"],\"settings\":{\"foreground\":\"#80cbc4\",\"fontStyle\":\"\"}},{\"name\":\"Entity Name tag reference in stylesheets\",\"scope\":[\"meta.property-list entity.name.tag.reference\"],\"settings\":{\"foreground\":\"#57eaf1\"}},{\"name\":\"Constant Other Color RGB Value Punctuation Definition Constant\",\"scope\":[\"constant.other.color.rgb-value punctuation.definition.constant\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Constant Other Color\",\"scope\":[\"constant.other.color\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Keyword Other Unit\",\"scope\":[\"keyword.other.unit\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Meta Selector\",\"scope\":[\"meta.selector\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Entity Other Attribute Name Id\",\"scope\":[\"entity.other.attribute-name.id\"],\"settings\":{\"foreground\":\"#fad430\"}},{\"name\":\"Meta Property Name\",\"scope\":[\"meta.property-name\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"Doctypes\",\"scope\":[\"entity.name.tag.doctype\",\"meta.tag.sgml.doctype\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Punctuation Definition Parameters\",\"scope\":[\"punctuation.definition.parameters\"],\"settings\":{\"foreground\":\"#d9f5dd\"}},{\"name\":\"Keyword Control Operator\",\"scope\":[\"keyword.control.operator\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Keyword Operator Logical\",\"scope\":[\"keyword.operator.logical\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Variable Instances\",\"scope\":[\"variable.instance\",\"variable.other.instance\",\"variable.readwrite.instance\",\"variable.other.readwrite.instance\",\"variable.other.property\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Variable Property Other object property\",\"scope\":[\"variable.other.object.property\"],\"settings\":{\"foreground\":\"#faf39f\",\"fontStyle\":\"\"}},{\"name\":\"Variable Property Other object\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Entity Name Function\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#82aaff\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Comparison, returns, imports, and Keyword Operator Ruby\",\"scope\":[\"keyword.control.conditional.js\",\"keyword.operator.comparison\",\"keyword.control.flow.js\",\"keyword.control.flow.ts\",\"keyword.control.flow.tsx\",\"keyword.control.ruby\",\"keyword.control.def.ruby\",\"keyword.control.loop.js\",\"keyword.control.loop.ts\",\"keyword.control.import.js\",\"keyword.control.import.ts\",\"keyword.control.import.tsx\",\"keyword.control.from.js\",\"keyword.control.from.ts\",\"keyword.control.from.tsx\",\"keyword.control.conditional.js\",\"keyword.control.conditional.ts\",\"keyword.control.switch.js\",\"keyword.control.switch.ts\",\"keyword.operator.instanceof.js\",\"keyword.operator.expression.instanceof.ts\",\"keyword.operator.expression.instanceof.tsx\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Support Constant, `new` keyword, Special Method Keyword, `debugger`, other keywords\",\"scope\":[\"support.constant\",\"keyword.other.special-method\",\"keyword.other.new\",\"keyword.other.debugger\",\"keyword.control\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Support Function\",\"scope\":[\"support.function\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Invalid Broken\",\"scope\":[\"invalid.broken\"],\"settings\":{\"foreground\":\"#989da0\",\"background\":\"#F78C6C\"}},{\"name\":\"Invalid Unimplemented\",\"scope\":[\"invalid.unimplemented\"],\"settings\":{\"background\":\"#8BD649\",\"foreground\":\"#ffffff\"}},{\"name\":\"Invalid Illegal\",\"scope\":[\"invalid.illegal\"],\"settings\":{\"foreground\":\"#ffffff\",\"background\":\"#ec5f67\"}},{\"name\":\"Language Variable\",\"scope\":[\"variable.language\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Support Variable Property\",\"scope\":[\"support.variable.property\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Variable Function\",\"scope\":[\"variable.function\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Variable Interpolation\",\"scope\":[\"variable.interpolation\"],\"settings\":{\"foreground\":\"#ef787f\"}},{\"name\":\"Meta Function Call\",\"scope\":[\"meta.function-call\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Punctuation Section Embedded\",\"scope\":[\"punctuation.section.embedded\"],\"settings\":{\"foreground\":\"#e2817f\"}},{\"name\":\"Punctuation Tweaks\",\"scope\":[\"punctuation.terminator.expression\",\"punctuation.definition.arguments\",\"punctuation.definition.array\",\"punctuation.section.array\",\"meta.array\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"More Punctuation Tweaks\",\"scope\":[\"punctuation.definition.list.begin\",\"punctuation.definition.list.end\",\"punctuation.separator.arguments\",\"punctuation.definition.list\"],\"settings\":{\"foreground\":\"#d9f5dd\"}},{\"name\":\"Template Strings\",\"scope\":[\"string.template meta.template.expression\"],\"settings\":{\"foreground\":\"#e2817f\"}},{\"name\":\"Backtics(``) in Template Strings\",\"scope\":[\"string.template punctuation.definition.string\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Italics\",\"scope\":[\"italic\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"italic\"}},{\"name\":\"Bold\",\"scope\":[\"bold\"],\"settings\":{\"foreground\":\"#c5e478\",\"fontStyle\":\"bold\"}},{\"name\":\"Quote\",\"scope\":[\"quote\"],\"settings\":{\"foreground\":\"#969bb7\",\"fontStyle\":\"\"}},{\"name\":\"Raw Code\",\"scope\":[\"raw\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"CoffeScript Variable Assignment\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#31e1eb\"}},{\"name\":\"CoffeScript Parameter Function\",\"scope\":[\"variable.parameter.function.coffee\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"CoffeeScript Assignments\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"C# Readwrite Variables\",\"scope\":[\"variable.other.readwrite.cs\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"C# Classes & Storage types\",\"scope\":[\"entity.name.type.class.cs\",\"storage.type.cs\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"C# Namespaces\",\"scope\":[\"entity.name.type.namespace.cs\"],\"settings\":{\"foreground\":\"#b2ccd6\"}},{\"name\":\"C# Unquoted String Zone\",\"scope\":[\"string.unquoted.preprocessor.message.cs\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"C# Region\",\"scope\":[\"punctuation.separator.hash.cs\",\"keyword.preprocessor.region.cs\",\"keyword.preprocessor.endregion.cs\"],\"settings\":{\"foreground\":\"#ffcb8b\",\"fontStyle\":\"bold\"}},{\"name\":\"C# Other Variables\",\"scope\":[\"variable.other.object.cs\"],\"settings\":{\"foreground\":\"#b2ccd6\"}},{\"name\":\"C# Enum\",\"scope\":[\"entity.name.type.enum.cs\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Dart String\",\"scope\":[\"string.interpolated.single.dart\",\"string.interpolated.double.dart\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Dart Class\",\"scope\":[\"support.class.dart\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Tag names in Stylesheets\",\"scope\":[\"entity.name.tag.css\",\"entity.name.tag.less\",\"entity.name.tag.custom.css\",\"support.constant.property-value.css\"],\"settings\":{\"foreground\":\"#ff6d6d\",\"fontStyle\":\"\"}},{\"name\":\"Wildcard(*) selector in Stylesheets\",\"scope\":[\"entity.name.tag.wildcard.css\",\"entity.name.tag.wildcard.less\",\"entity.name.tag.wildcard.scss\",\"entity.name.tag.wildcard.sass\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"CSS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Attribute Name for CSS\",\"scope\":[\"meta.attribute-selector.css entity.other.attribute-name.attribute\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Elixir Classes\",\"scope\":[\"source.elixir support.type.elixir\",\"source.elixir meta.module.elixir entity.name.class.elixir\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Elixir Functions\",\"scope\":[\"source.elixir entity.name.function\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Elixir Constants\",\"scope\":[\"source.elixir constant.other.symbol.elixir\",\"source.elixir constant.other.keywords.elixir\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Elixir String Punctuations\",\"scope\":[\"source.elixir punctuation.definition.string\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Elixir\",\"scope\":[\"source.elixir variable.other.readwrite.module.elixir\",\"source.elixir variable.other.readwrite.module.elixir punctuation.definition.variable.elixir\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Elixir Binary Punctuations\",\"scope\":[\"source.elixir .punctuation.binary.elixir\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Closure Constant Keyword\",\"scope\":[\"constant.keyword.clojure\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Go Function Calls\",\"scope\":[\"source.go meta.function-call.go\"],\"settings\":{\"foreground\":\"#dddddd\"}},{\"name\":\"Go Keywords\",\"scope\":[\"source.go keyword.package.go\",\"source.go keyword.import.go\",\"source.go keyword.function.go\",\"source.go keyword.type.go\",\"source.go keyword.struct.go\",\"source.go keyword.interface.go\",\"source.go keyword.const.go\",\"source.go keyword.var.go\",\"source.go keyword.map.go\",\"source.go keyword.channel.go\",\"source.go keyword.control.go\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Go Constants e.g. nil, string format (%s, %d, etc.)\",\"scope\":[\"source.go constant.language.go\",\"source.go constant.other.placeholder.go\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"C++ Functions\",\"scope\":[\"entity.name.function.preprocessor.cpp\",\"entity.scope.name.cpp\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"C++ Meta Namespace\",\"scope\":[\"meta.namespace-block.cpp\"],\"settings\":{\"foreground\":\"#e0dec6\"}},{\"name\":\"C++ Language Primitive Storage\",\"scope\":[\"storage.type.language.primitive.cpp\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"C++ Preprocessor Macro\",\"scope\":[\"meta.preprocessor.macro.cpp\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"C++ Variable Parameter\",\"scope\":[\"variable.parameter\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Powershell Variables\",\"scope\":[\"variable.other.readwrite.powershell\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Powershell Function\",\"scope\":[\"support.function.powershell\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"ID Attribute Name in HTML\",\"scope\":[\"entity.other.attribute-name.id.html\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"HTML Punctuation Definition Tag\",\"scope\":[\"punctuation.definition.tag.html\"],\"settings\":{\"foreground\":\"#6ae9f0\"}},{\"name\":\"HTML Doctype\",\"scope\":[\"meta.tag.sgml.doctype.html\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"JavaScript Classes\",\"scope\":[\"meta.class entity.name.type.class.js\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"JavaScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.js\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"JavaScript Terminator\",\"scope\":[\"terminator.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Meta Punctuation Definition\",\"scope\":[\"meta.js punctuation.definition.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Entity Names in Code Documentations\",\"scope\":[\"entity.name.type.instance.jsdoc\",\"entity.name.type.instance.phpdoc\"],\"settings\":{\"foreground\":\"#889fb2\"}},{\"name\":\"Other Variables in Code Documentations\",\"scope\":[\"variable.other.jsdoc\",\"variable.other.phpdoc\"],\"settings\":{\"foreground\":\"#78ccf0\"}},{\"name\":\"JavaScript module imports and exports\",\"scope\":[\"variable.other.meta.import.js\",\"meta.import.js variable.other\",\"variable.other.meta.export.js\",\"meta.export.js variable.other\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Variable Parameter Function\",\"scope\":[\"variable.parameter.function.js\"],\"settings\":{\"foreground\":\"#8b96ea\"}},{\"name\":\"JavaScript[React] Variable Other Object\",\"scope\":[\"variable.other.object.js\",\"variable.other.object.jsx\",\"variable.object.property.js\",\"variable.object.property.jsx\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Variables\",\"scope\":[\"variable.js\",\"variable.other.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Entity Name Type\",\"scope\":[\"entity.name.type.js\",\"entity.name.type.module.js\"],\"settings\":{\"foreground\":\"#ffcb8b\",\"fontStyle\":\"\"}},{\"name\":\"JavaScript Support Classes\",\"scope\":[\"support.class.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JSON Property Names\",\"scope\":[\"support.type.property-name.json\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"JSON Support Constants\",\"scope\":[\"support.constant.json\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"JSON Property values (string)\",\"scope\":[\"meta.structure.dictionary.value.json string.quoted.double\"],\"settings\":{\"foreground\":\"#c789d6\"}},{\"name\":\"Strings in JSON values\",\"scope\":[\"string.quoted.double.json punctuation.definition.string.json\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"Specific JSON Property values like null\",\"scope\":[\"meta.structure.dictionary.json meta.structure.dictionary.value constant.language\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"JavaScript Other Variable\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Ruby Variables\",\"scope\":[\"variable.other.ruby\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Ruby Class\",\"scope\":[\"entity.name.type.class.ruby\"],\"settings\":{\"foreground\":\"#ecc48d\"}},{\"name\":\"Ruby Hashkeys\",\"scope\":[\"constant.language.symbol.hashkey.ruby\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"LESS Tag names\",\"scope\":[\"entity.name.tag.less\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"LESS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Attribute Name for LESS\",\"scope\":[\"meta.attribute-selector.less entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Markdown Headings\",\"scope\":[\"markup.heading.markdown\",\"markup.heading.setext.1.markdown\",\"markup.heading.setext.2.markdown\"],\"settings\":{\"foreground\":\"#82b1ff\"}},{\"name\":\"Markdown Italics\",\"scope\":[\"markup.italic.markdown\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"italic\"}},{\"name\":\"Markdown Bold\",\"scope\":[\"markup.bold.markdown\"],\"settings\":{\"foreground\":\"#c5e478\",\"fontStyle\":\"bold\"}},{\"name\":\"Markdown Quote + others\",\"scope\":[\"markup.quote.markdown\"],\"settings\":{\"foreground\":\"#969bb7\",\"fontStyle\":\"\"}},{\"name\":\"Markdown Raw Code + others\",\"scope\":[\"markup.inline.raw.markdown\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"Markdown Links\",\"scope\":[\"markup.underline.link.markdown\",\"markup.underline.link.image.markdown\"],\"settings\":{\"foreground\":\"#ff869a\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Link Title and Description\",\"scope\":[\"string.other.link.title.markdown\",\"string.other.link.description.markdown\"],\"settings\":{\"foreground\":\"#d6deeb\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Punctuation\",\"scope\":[\"punctuation.definition.string.markdown\",\"punctuation.definition.string.begin.markdown\",\"punctuation.definition.string.end.markdown\",\"meta.link.inline.markdown punctuation.definition.string\"],\"settings\":{\"foreground\":\"#82b1ff\"}},{\"name\":\"Markdown MetaData Punctuation\",\"scope\":[\"punctuation.definition.metadata.markdown\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Markdown List Punctuation\",\"scope\":[\"beginning.punctuation.definition.list.markdown\"],\"settings\":{\"foreground\":\"#82b1ff\"}},{\"name\":\"Markdown Inline Raw String\",\"scope\":[\"markup.inline.raw.string.markdown\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"PHP Variables\",\"scope\":[\"variable.other.php\"],\"settings\":{\"foreground\":\"#bec5d4\"}},{\"name\":\"Support Classes in PHP\",\"scope\":[\"support.class.php\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Punctuations in PHP function calls\",\"scope\":[\"meta.function-call.php punctuation\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"PHP Global Variables\",\"scope\":[\"variable.other.global.php\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Declaration Punctuation in PHP Global Variables\",\"scope\":[\"variable.other.global.php punctuation.definition.variable\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Language Constants in Python\",\"scope\":[\"constant.language.python\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Python Function Parameter and Arguments\",\"scope\":[\"variable.parameter.function.python\",\"meta.function-call.arguments.python\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Python Function Call\",\"scope\":[\"meta.function-call.python\",\"meta.function-call.generic.python\"],\"settings\":{\"foreground\":\"#b2ccd6\"}},{\"name\":\"Punctuations in Python\",\"scope\":[\"punctuation.python\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Decorator Functions in Python\",\"scope\":[\"entity.name.function.decorator.python\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Python Language Variable\",\"scope\":[\"source.python variable.language.special\"],\"settings\":{\"foreground\":\"#8eace3\"}},{\"name\":\"Python import control keyword\",\"scope\":[\"keyword.control\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"SCSS Variable\",\"scope\":[\"variable.scss\",\"variable.sass\",\"variable.parameter.url.scss\",\"variable.parameter.url.sass\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#bec5d4\"}},{\"name\":\"Attribute Name for SASS\",\"scope\":[\"meta.attribute-selector.scss entity.other.attribute-name.attribute\",\"meta.attribute-selector.sass entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Tag names in SASS\",\"scope\":[\"entity.name.tag.scss\",\"entity.name.tag.sass\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"SASS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.scss\",\"keyword.other.unit.sass\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"TypeScript[React] Variables and Object Properties\",\"scope\":[\"variable.other.readwrite.alias.ts\",\"variable.other.readwrite.alias.tsx\",\"variable.other.readwrite.ts\",\"variable.other.readwrite.tsx\",\"variable.other.object.ts\",\"variable.other.object.tsx\",\"variable.object.property.ts\",\"variable.object.property.tsx\",\"variable.other.ts\",\"variable.other.tsx\",\"variable.tsx\",\"variable.ts\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"TypeScript[React] Entity Name Types\",\"scope\":[\"entity.name.type.ts\",\"entity.name.type.tsx\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"TypeScript[React] Node Classes\",\"scope\":[\"support.class.node.ts\",\"support.class.node.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"TypeScript[React] Entity Name Types as Parameters\",\"scope\":[\"meta.type.parameters.ts entity.name.type\",\"meta.type.parameters.tsx entity.name.type\"],\"settings\":{\"foreground\":\"#889fb2\"}},{\"name\":\"TypeScript[React] Import/Export Punctuations\",\"scope\":[\"meta.import.ts punctuation.definition.block\",\"meta.import.tsx punctuation.definition.block\",\"meta.export.ts punctuation.definition.block\",\"meta.export.tsx punctuation.definition.block\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.decorator punctuation.decorator.ts\",\"meta.decorator punctuation.decorator.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.tag.js meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"YAML Entity Name Tags\",\"scope\":[\"entity.name.tag.yaml\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"JavaScript Variable Other ReadWrite\",\"scope\":[\"variable.other.readwrite.js\",\"variable.parameter\"],\"settings\":{\"foreground\":\"#d7dbe0\"}},{\"name\":\"Support Class Component\",\"scope\":[\"support.class.component.js\",\"support.class.component.tsx\"],\"settings\":{\"foreground\":\"#f78c6c\",\"fontStyle\":\"\"}},{\"name\":\"Text nested in React tags\",\"scope\":[\"meta.jsx.children\",\"meta.jsx.children.js\",\"meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"TypeScript Classes\",\"scope\":[\"meta.class entity.name.type.class.tsx\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"TypeScript Entity Name Type\",\"scope\":[\"entity.name.type.tsx\",\"entity.name.type.module.tsx\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"TypeScript Class Variable Keyword\",\"scope\":[\"meta.class.ts meta.var.expr.ts storage.type.ts\",\"meta.class.tsx meta.var.expr.tsx storage.type.tsx\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"TypeScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.ts\",\"meta.method.declaration storage.type.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"normalize font style of certain components\",\"scope\":[\"meta.property-list.css meta.property-value.css variable.other.less\",\"meta.property-list.scss variable.scss\",\"meta.property-list.sass variable.sass\",\"meta.brace\",\"keyword.operator.operator\",\"keyword.operator.or.regexp\",\"keyword.operator.expression.in\",\"keyword.operator.relational\",\"keyword.operator.assignment\",\"keyword.operator.comparison\",\"keyword.operator.type\",\"keyword.operator\",\"keyword\",\"punctuation.definintion.string\",\"punctuation\",\"variable.other.readwrite.js\",\"storage.type\",\"source.css\",\"string.quoted\"],\"settings\":{\"fontStyle\":\"\"}}],\"styleOverrides\":{\"frames\":{\"editorBackground\":\"var(--sl-color-gray-6)\",\"terminalBackground\":\"var(--sl-color-gray-6)\",\"editorActiveTabBackground\":\"var(--sl-color-gray-6)\",\"terminalTitlebarDotsForeground\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"terminalTitlebarDotsOpacity\":\"0.75\",\"inlineButtonForeground\":\"var(--sl-color-text)\",\"frameBoxShadowCssValue\":\"none\"},\"textMarkers\":{\"markBackground\":\"#ffffff17\",\"markBorderColor\":\"#ffffff40\"}}},{\"name\":\"Night Owl Light\",\"type\":\"light\",\"colors\":{\"focusBorder\":\"#93a1a1\",\"foreground\":\"#403f53\",\"disabledForeground\":\"#61616180\",\"descriptionForeground\":\"#403f53\",\"errorForeground\":\"#403f53\",\"icon.foreground\":\"#424242\",\"contrastActiveBorder\":null,\"contrastBorder\":null,\"textBlockQuote.background\":\"#7f7f7f1a\",\"textBlockQuote.border\":\"#007acc80\",\"textCodeBlock.background\":\"#dcdcdc66\",\"textLink.activeForeground\":\"#006ab1\",\"textLink.foreground\":\"#006ab1\",\"textPreformat.foreground\":\"#a31515\",\"textSeparator.foreground\":\"#0000002e\",\"editor.background\":\"#f6f7f9\",\"editor.foreground\":\"#403f53\",\"editorLineNumber.foreground\":\"#90a7b2\",\"editorLineNumber.activeForeground\":\"#403f53\",\"editorActiveLineNumber.foreground\":\"#0b216f\",\"editor.selectionBackground\":\"#e0e0e0\",\"editor.inactiveSelectionBackground\":\"#e0e0e080\",\"editor.selectionHighlightBackground\":\"#339cec33\",\"editorError.foreground\":\"#e64d49\",\"editorWarning.foreground\":\"#daaa01\",\"editorInfo.foreground\":\"#1a85ff\",\"editorHint.foreground\":\"#6c6c6c\",\"problemsErrorIcon.foreground\":\"#e64d49\",\"problemsWarningIcon.foreground\":\"#daaa01\",\"problemsInfoIcon.foreground\":\"#1a85ff\",\"editor.findMatchBackground\":\"#93a1a16c\",\"editor.findMatchHighlightBackground\":\"#93a1a16c\",\"editor.findRangeHighlightBackground\":\"#7497a633\",\"editorLink.activeForeground\":\"#0000ff\",\"editorLightBulb.foreground\":\"#ddb100\",\"editorLightBulbAutoFix.foreground\":\"#007acc\",\"diffEditor.insertedTextBackground\":\"#9ccc2c40\",\"diffEditor.insertedTextBorder\":null,\"diffEditor.removedTextBackground\":\"#ff000033\",\"diffEditor.removedTextBorder\":null,\"diffEditor.insertedLineBackground\":\"#9bb95533\",\"diffEditor.removedLineBackground\":\"#ff000033\",\"editorStickyScroll.background\":\"#fbfbfb\",\"editorStickyScrollHover.background\":\"#f0f0f0\",\"editorInlayHint.background\":\"#2aa29899\",\"editorInlayHint.foreground\":\"#f0f0f0\",\"editorInlayHint.typeBackground\":\"#2aa29899\",\"editorInlayHint.typeForeground\":\"#f0f0f0\",\"editorInlayHint.parameterBackground\":\"#2aa29899\",\"editorInlayHint.parameterForeground\":\"#f0f0f0\",\"editorPane.background\":\"#fbfbfb\",\"editorGroup.emptyBackground\":null,\"editorGroup.focusedEmptyBorder\":null,\"editorGroupHeader.tabsBackground\":\"var(--sl-color-gray-6)\",\"editorGroupHeader.tabsBorder\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"editorGroupHeader.noTabsBackground\":\"#f0f0f0\",\"editorGroupHeader.border\":null,\"editorGroup.border\":\"#f0f0f0\",\"editorGroup.dropBackground\":\"#2677cb2d\",\"editorGroup.dropIntoPromptForeground\":\"#403f53\",\"editorGroup.dropIntoPromptBackground\":\"#f0f0f0\",\"editorGroup.dropIntoPromptBorder\":null,\"sideBySideEditor.horizontalBorder\":\"#f0f0f0\",\"sideBySideEditor.verticalBorder\":\"#f0f0f0\",\"scrollbar.shadow\":\"#cccccc\",\"scrollbarSlider.background\":\"#0000001a\",\"scrollbarSlider.hoverBackground\":\"#00000055\",\"scrollbarSlider.activeBackground\":\"#00000099\",\"panel.background\":\"#f0f0f0\",\"panel.border\":\"#d9d9d9\",\"panelTitle.activeBorder\":\"#424242\",\"panelTitle.activeForeground\":\"#424242\",\"panelTitle.inactiveForeground\":\"#424242bf\",\"panelSectionHeader.background\":\"#80808051\",\"terminal.background\":\"#f6f6f6\",\"widget.shadow\":\"#d9d9d9\",\"editorWidget.background\":\"#f0f0f0\",\"editorWidget.foreground\":\"#403f53\",\"editorWidget.border\":\"#d9d9d9\",\"quickInput.background\":\"#f0f0f0\",\"quickInput.foreground\":\"#403f53\",\"quickInputTitle.background\":\"#0000000f\",\"pickerGroup.foreground\":\"#403f53\",\"pickerGroup.border\":\"#d9d9d9\",\"editor.hoverHighlightBackground\":\"#339cec33\",\"editorHoverWidget.background\":\"#f0f0f0\",\"editorHoverWidget.foreground\":\"#403f53\",\"editorHoverWidget.border\":\"#d9d9d9\",\"editorHoverWidget.statusBarBackground\":\"#e4e4e4\",\"titleBar.activeBackground\":\"var(--sl-color-gray-6)\",\"titleBar.activeForeground\":\"var(--sl-color-text)\",\"titleBar.inactiveBackground\":\"#f0f0f099\",\"titleBar.inactiveForeground\":\"#33333399\",\"titleBar.border\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"toolbar.hoverBackground\":\"#b8b8b850\",\"toolbar.activeBackground\":\"#a6a6a650\",\"tab.activeBackground\":\"#f6f6f6\",\"tab.unfocusedActiveBackground\":\"#f6f6f6\",\"tab.inactiveBackground\":\"#f0f0f0\",\"tab.unfocusedInactiveBackground\":\"#f0f0f0\",\"tab.activeForeground\":\"var(--sl-color-text)\",\"tab.inactiveForeground\":\"#403f53\",\"tab.unfocusedActiveForeground\":\"#403f53b3\",\"tab.unfocusedInactiveForeground\":\"#403f5380\",\"tab.hoverBackground\":null,\"tab.unfocusedHoverBackground\":null,\"tab.hoverForeground\":null,\"tab.unfocusedHoverForeground\":null,\"tab.border\":\"#f0f0f0\",\"tab.lastPinnedBorder\":\"#a9a9a9\",\"tab.activeBorder\":\"transparent\",\"tab.unfocusedActiveBorder\":null,\"tab.activeBorderTop\":\"var(--sl-color-accent)\",\"tab.unfocusedActiveBorderTop\":null,\"tab.hoverBorder\":null,\"tab.unfocusedHoverBorder\":null,\"tab.activeModifiedBorder\":\"#2aa298\",\"tab.inactiveModifiedBorder\":\"#93a1a1\",\"tab.unfocusedActiveModifiedBorder\":\"#93a1a1\",\"tab.unfocusedInactiveModifiedBorder\":\"#93a1a1\",\"badge.background\":\"#2aa298\",\"badge.foreground\":\"#f0f0f0\",\"button.background\":\"#2aa298\",\"button.foreground\":\"#f0f0f0\",\"button.border\":null,\"button.separator\":\"#f0f0f066\",\"button.hoverBackground\":\"#22827a\",\"button.secondaryBackground\":\"#5f6a79\",\"button.secondaryForeground\":\"#ffffff\",\"button.secondaryHoverBackground\":\"#4c5561\",\"dropdown.background\":\"#f0f0f0\",\"dropdown.foreground\":\"#403f53\",\"dropdown.border\":\"#d9d9d9\",\"list.activeSelectionBackground\":\"#d3e8f8\",\"list.activeSelectionForeground\":\"#403f53\",\"tree.indentGuidesStroke\":\"#a9a9a9\",\"input.background\":\"#f0f0f0\",\"input.foreground\":\"#403f53\",\"input.placeholderForeground\":\"#93a1a1\",\"inputOption.activeBorder\":\"#2aa298\",\"inputOption.hoverBackground\":\"#b8b8b850\",\"inputOption.activeBackground\":\"#93a1a133\",\"inputOption.activeForeground\":\"#000000\",\"inputValidation.infoBackground\":\"#f0f0f0\",\"inputValidation.infoBorder\":\"#d0d0d0\",\"inputValidation.warningBackground\":\"#daaa01\",\"inputValidation.warningBorder\":\"#e0af02\",\"inputValidation.errorBackground\":\"#f76e6e\",\"inputValidation.errorBorder\":\"#de3d3b\",\"keybindingLabel.background\":\"#dddddd66\",\"keybindingLabel.foreground\":\"#555555\",\"keybindingLabel.border\":\"#cccccc66\",\"keybindingLabel.bottomBorder\":\"#bbbbbb66\",\"menu.foreground\":\"#403f53\",\"menu.background\":\"#f0f0f0\",\"menu.selectionForeground\":\"#403f53\",\"menu.selectionBackground\":\"#d3e8f8\",\"menu.separatorBackground\":\"#d4d4d4\",\"editor.snippetTabstopHighlightBackground\":\"#0a326433\",\"editor.snippetFinalTabstopHighlightBorder\":\"#0a326480\",\"terminal.ansiBlack\":\"#403f53\",\"terminal.ansiRed\":\"#de3d3b\",\"terminal.ansiGreen\":\"#08916a\",\"terminal.ansiYellow\":\"#e0af02\",\"terminal.ansiBlue\":\"#288ed7\",\"terminal.ansiMagenta\":\"#d6438a\",\"terminal.ansiCyan\":\"#2aa298\",\"terminal.ansiWhite\":\"#f0f0f0\",\"terminal.ansiBrightBlack\":\"#403f53\",\"terminal.ansiBrightRed\":\"#de3d3b\",\"terminal.ansiBrightGreen\":\"#08916a\",\"terminal.ansiBrightYellow\":\"#daaa01\",\"terminal.ansiBrightBlue\":\"#288ed7\",\"terminal.ansiBrightMagenta\":\"#d6438a\",\"terminal.ansiBrightCyan\":\"#2aa298\",\"terminal.ansiBrightWhite\":\"#f0f0f0\",\"selection.background\":\"#7a8181ad\",\"notifications.background\":\"#f0f0f0\",\"notifications.foreground\":\"#403f53\",\"notificationLink.foreground\":\"#994cc3\",\"notifications.border\":\"#cccccc\",\"notificationCenter.border\":\"#cccccc\",\"notificationToast.border\":\"#cccccc\",\"notificationCenterHeader.foreground\":\"#403f53\",\"notificationCenterHeader.background\":\"#f0f0f0\",\"input.border\":\"#d9d9d9\",\"progressBar.background\":\"#2aa298\",\"list.inactiveSelectionBackground\":\"#e0e7ea\",\"list.inactiveSelectionForeground\":\"#403f53\",\"list.focusBackground\":\"#d3e8f8\",\"list.hoverBackground\":\"#d3e8f8\",\"list.focusForeground\":\"#403f53\",\"list.hoverForeground\":\"#403f53\",\"list.highlightForeground\":\"#403f53\",\"list.errorForeground\":\"#e64d49\",\"list.warningForeground\":\"#daaa01\",\"activityBar.background\":\"#f0f0f0\",\"activityBar.foreground\":\"#403f53\",\"activityBar.dropBackground\":\"#d0d0d0\",\"activityBarBadge.background\":\"#403f53\",\"activityBarBadge.foreground\":\"#f0f0f0\",\"activityBar.border\":\"#f0f0f0\",\"sideBar.background\":\"#f0f0f0\",\"sideBar.foreground\":\"#403f53\",\"sideBarTitle.foreground\":\"#403f53\",\"sideBar.border\":\"#f0f0f0\",\"editorGroup.background\":\"#f6f6f6\",\"editorCursor.foreground\":\"#90a7b2\",\"editor.wordHighlightBackground\":\"#339cec33\",\"editor.wordHighlightStrongBackground\":\"#007dd659\",\"editor.lineHighlightBackground\":\"#f0f0f0\",\"editor.rangeHighlightBackground\":\"#7497a633\",\"editorWhitespace.foreground\":\"#d9d9d9\",\"editorIndentGuide.background\":\"#d9d9d9\",\"editorCodeLens.foreground\":\"#403f53\",\"editorBracketMatch.background\":\"#d3e8f8\",\"editorBracketMatch.border\":\"#2aa298\",\"editorError.border\":\"#fbfbfb\",\"editorWarning.border\":\"#daaa01\",\"editorGutter.addedBackground\":\"#49d0c5\",\"editorGutter.modifiedBackground\":\"#6fbef6\",\"editorGutter.deletedBackground\":\"#f76e6e\",\"editorRuler.foreground\":\"#d9d9d9\",\"editorOverviewRuler.errorForeground\":\"#e64d49\",\"editorOverviewRuler.warningForeground\":\"#daaa01\",\"editorSuggestWidget.background\":\"#f0f0f0\",\"editorSuggestWidget.foreground\":\"#403f53\",\"editorSuggestWidget.highlightForeground\":\"#403f53\",\"editorSuggestWidget.selectedBackground\":\"#d3e8f8\",\"editorSuggestWidget.border\":\"#d9d9d9\",\"debugExceptionWidget.background\":\"#f0f0f0\",\"debugExceptionWidget.border\":\"#d9d9d9\",\"editorMarkerNavigation.background\":\"#d0d0d0\",\"editorMarkerNavigationError.background\":\"#f76e6e\",\"editorMarkerNavigationWarning.background\":\"#daaa01\",\"debugToolBar.background\":\"#f0f0f0\",\"extensionButton.prominentBackground\":\"#2aa298\",\"extensionButton.prominentForeground\":\"#f0f0f0\",\"statusBar.background\":\"#f0f0f0\",\"statusBar.border\":\"#f0f0f0\",\"statusBar.debuggingBackground\":\"#f0f0f0\",\"statusBar.debuggingForeground\":\"#403f53\",\"statusBar.foreground\":\"#403f53\",\"statusBar.noFolderBackground\":\"#f0f0f0\",\"statusBar.noFolderForeground\":\"#403f53\",\"peekView.border\":\"#d9d9d9\",\"peekViewEditor.background\":\"#f6f6f6\",\"peekViewEditorGutter.background\":\"#f6f6f6\",\"peekViewEditor.matchHighlightBackground\":\"#49d0c5\",\"peekViewResult.background\":\"#f0f0f0\",\"peekViewResult.fileForeground\":\"#403f53\",\"peekViewResult.lineForeground\":\"#403f53\",\"peekViewResult.matchHighlightBackground\":\"#49d0c5\",\"peekViewResult.selectionBackground\":\"#e0e7ea\",\"peekViewResult.selectionForeground\":\"#403f53\",\"peekViewTitle.background\":\"#f0f0f0\",\"peekViewTitleLabel.foreground\":\"#403f53\",\"peekViewTitleDescription.foreground\":\"#403f53\",\"terminal.foreground\":\"#403f53\"},\"fg\":\"#403f53\",\"bg\":\"#f6f7f9\",\"semanticHighlighting\":false,\"settings\":[{\"name\":\"Changed\",\"scope\":[\"markup.changed\",\"meta.diff.header.git\",\"meta.diff.header.from-file\",\"meta.diff.header.to-file\"],\"settings\":{\"foreground\":\"#556484\"}},{\"name\":\"Deleted\",\"scope\":[\"markup.deleted.diff\"],\"settings\":{\"foreground\":\"#ae3c3afd\"}},{\"name\":\"Inserted\",\"scope\":[\"markup.inserted.diff\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Global settings\",\"settings\":{\"background\":\"#011627\",\"foreground\":\"#403f53\"}},{\"name\":\"Comment\",\"scope\":[\"comment\"],\"settings\":{\"foreground\":\"#5f636f\"}},{\"name\":\"String\",\"scope\":[\"string\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"String Quoted\",\"scope\":[\"string.quoted\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#984e4d\"}},{\"name\":\"Support Constant Math\",\"scope\":[\"support.constant.math\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Number\",\"scope\":[\"constant.numeric\",\"constant.character.numeric\"],\"settings\":{\"foreground\":\"#aa0982\",\"fontStyle\":\"\"}},{\"name\":\"Built-in constant\",\"scope\":[\"constant.language\",\"punctuation.definition.constant\",\"variable.other.constant\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"User-defined constant\",\"scope\":[\"constant.character\",\"constant.other\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Constant Character Escape\",\"scope\":[\"constant.character.escape\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"RegExp String\",\"scope\":[\"string.regexp\",\"string.regexp keyword.other\"],\"settings\":{\"foreground\":\"#3a688f\"}},{\"name\":\"Comma in functions\",\"scope\":[\"meta.function punctuation.separator.comma\"],\"settings\":{\"foreground\":\"#4d667b\"}},{\"name\":\"Variable\",\"scope\":[\"variable\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Keyword\",\"scope\":[\"punctuation.accessor\",\"keyword\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Storage\",\"scope\":[\"storage\",\"meta.var.expr\",\"meta.class meta.method.declaration meta.var.expr storage.type.js\",\"storage.type.property.js\",\"storage.type.property.ts\",\"storage.type.property.tsx\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type.function.arrow.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Class name\",\"scope\":[\"entity.name.class\",\"meta.class entity.name.type.class\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Inherited class\",\"scope\":[\"entity.other.inherited-class\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Function name\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Meta Tag\",\"scope\":[\"punctuation.definition.tag\",\"meta.tag\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"HTML Tag names\",\"scope\":[\"entity.name.tag\",\"meta.tag.other.html\",\"meta.tag.other.js\",\"meta.tag.other.tsx\",\"entity.name.tag.tsx\",\"entity.name.tag.js\",\"entity.name.tag\",\"meta.tag.js\",\"meta.tag.tsx\",\"meta.tag.html\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Tag attribute\",\"scope\":[\"entity.other.attribute-name\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Entity Name Tag Custom\",\"scope\":[\"entity.name.tag.custom\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Library (function & constant)\",\"scope\":[\"support.function\",\"support.constant\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Support Constant Property Value meta\",\"scope\":[\"support.constant.meta.property-value\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Library class/type\",\"scope\":[\"support.type\",\"support.class\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Support Variable DOM\",\"scope\":[\"support.variable.dom\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Invalid\",\"scope\":[\"invalid\"],\"settings\":{\"foreground\":\"#bb2060\"}},{\"name\":\"Invalid deprecated\",\"scope\":[\"invalid.deprecated\"],\"settings\":{\"foreground\":\"#b23834\"}},{\"name\":\"Keyword Operator\",\"scope\":[\"keyword.operator\"],\"settings\":{\"foreground\":\"#096e72\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Relational\",\"scope\":[\"keyword.operator.relational\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Assignment\",\"scope\":[\"keyword.operator.assignment\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Arithmetic\",\"scope\":[\"keyword.operator.arithmetic\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Bitwise\",\"scope\":[\"keyword.operator.bitwise\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Increment\",\"scope\":[\"keyword.operator.increment\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Ternary\",\"scope\":[\"keyword.operator.ternary\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Double-Slashed Comment\",\"scope\":[\"comment.line.double-slash\"],\"settings\":{\"foreground\":\"#5d6376\"}},{\"name\":\"Object\",\"scope\":[\"object\"],\"settings\":{\"foreground\":\"#58656a\"}},{\"name\":\"Null\",\"scope\":[\"constant.language.null\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Meta Brace\",\"scope\":[\"meta.brace\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Meta Delimiter Period\",\"scope\":[\"meta.delimiter.period\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Punctuation Definition String\",\"scope\":[\"punctuation.definition.string\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Punctuation Definition String Markdown\",\"scope\":[\"punctuation.definition.string.begin.markdown\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Boolean\",\"scope\":[\"constant.language.boolean\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Object Comma\",\"scope\":[\"object.comma\"],\"settings\":{\"foreground\":\"#646464\"}},{\"name\":\"Variable Parameter Function\",\"scope\":[\"variable.parameter.function\"],\"settings\":{\"foreground\":\"#096e72\",\"fontStyle\":\"\"}},{\"name\":\"Support Type Property Name & entity name tags\",\"scope\":[\"support.type.vendor.property-name\",\"support.constant.vendor.property-value\",\"support.type.property-name\",\"meta.property-list entity.name.tag\"],\"settings\":{\"foreground\":\"#096e72\",\"fontStyle\":\"\"}},{\"name\":\"Entity Name tag reference in stylesheets\",\"scope\":[\"meta.property-list entity.name.tag.reference\"],\"settings\":{\"foreground\":\"#286d70\"}},{\"name\":\"Constant Other Color RGB Value Punctuation Definition Constant\",\"scope\":[\"constant.other.color.rgb-value punctuation.definition.constant\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Constant Other Color\",\"scope\":[\"constant.other.color\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Keyword Other Unit\",\"scope\":[\"keyword.other.unit\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Meta Selector\",\"scope\":[\"meta.selector\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Entity Other Attribute Name Id\",\"scope\":[\"entity.other.attribute-name.id\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Meta Property Name\",\"scope\":[\"meta.property-name\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Doctypes\",\"scope\":[\"entity.name.tag.doctype\",\"meta.tag.sgml.doctype\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Punctuation Definition Parameters\",\"scope\":[\"punctuation.definition.parameters\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Keyword Control Operator\",\"scope\":[\"keyword.control.operator\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Keyword Operator Logical\",\"scope\":[\"keyword.operator.logical\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"\"}},{\"name\":\"Variable Instances\",\"scope\":[\"variable.instance\",\"variable.other.instance\",\"variable.readwrite.instance\",\"variable.other.readwrite.instance\",\"variable.other.property\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Variable Property Other object property\",\"scope\":[\"variable.other.object.property\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Variable Property Other object\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Entity Name Function\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Keyword Operator Comparison, imports, returns and Keyword Operator Ruby\",\"scope\":[\"keyword.operator.comparison\",\"keyword.control.flow.js\",\"keyword.control.flow.ts\",\"keyword.control.flow.tsx\",\"keyword.control.ruby\",\"keyword.control.module.ruby\",\"keyword.control.class.ruby\",\"keyword.control.def.ruby\",\"keyword.control.loop.js\",\"keyword.control.loop.ts\",\"keyword.control.import.js\",\"keyword.control.import.ts\",\"keyword.control.import.tsx\",\"keyword.control.from.js\",\"keyword.control.from.ts\",\"keyword.control.from.tsx\",\"keyword.operator.instanceof.js\",\"keyword.operator.expression.instanceof.ts\",\"keyword.operator.expression.instanceof.tsx\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Control Conditional\",\"scope\":[\"keyword.control.conditional.js\",\"keyword.control.conditional.ts\",\"keyword.control.switch.js\",\"keyword.control.switch.ts\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"\"}},{\"name\":\"Support Constant, `new` keyword, Special Method Keyword, `debugger`, other keywords\",\"scope\":[\"support.constant\",\"keyword.other.special-method\",\"keyword.other.new\",\"keyword.other.debugger\",\"keyword.control\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Support Function\",\"scope\":[\"support.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Invalid Broken\",\"scope\":[\"invalid.broken\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Invalid Unimplemented\",\"scope\":[\"invalid.unimplemented\"],\"settings\":{\"foreground\":\"#486e26\"}},{\"name\":\"Invalid Illegal\",\"scope\":[\"invalid.illegal\"],\"settings\":{\"foreground\":\"#984e4d\"}},{\"name\":\"Language Variable\",\"scope\":[\"variable.language\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Support Variable Property\",\"scope\":[\"support.variable.property\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Variable Function\",\"scope\":[\"variable.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Variable Interpolation\",\"scope\":[\"variable.interpolation\"],\"settings\":{\"foreground\":\"#a64348\"}},{\"name\":\"Meta Function Call\",\"scope\":[\"meta.function-call\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Punctuation Section Embedded\",\"scope\":[\"punctuation.section.embedded\"],\"settings\":{\"foreground\":\"#b23834\"}},{\"name\":\"Punctuation Tweaks\",\"scope\":[\"punctuation.terminator.expression\",\"punctuation.definition.arguments\",\"punctuation.definition.array\",\"punctuation.section.array\",\"meta.array\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"More Punctuation Tweaks\",\"scope\":[\"punctuation.definition.list.begin\",\"punctuation.definition.list.end\",\"punctuation.separator.arguments\",\"punctuation.definition.list\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Template Strings\",\"scope\":[\"string.template meta.template.expression\"],\"settings\":{\"foreground\":\"#b23834\"}},{\"name\":\"Backtics(``) in Template Strings\",\"scope\":[\"string.template punctuation.definition.string\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Italics\",\"scope\":[\"italic\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"italic\"}},{\"name\":\"Bold\",\"scope\":[\"bold\"],\"settings\":{\"foreground\":\"#3b61b0\",\"fontStyle\":\"bold\"}},{\"name\":\"Quote\",\"scope\":[\"quote\"],\"settings\":{\"foreground\":\"#5c6285\"}},{\"name\":\"Raw Code\",\"scope\":[\"raw\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"CoffeScript Variable Assignment\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#186e73\"}},{\"name\":\"CoffeScript Parameter Function\",\"scope\":[\"variable.parameter.function.coffee\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"CoffeeScript Assignments\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"C# Readwrite Variables\",\"scope\":[\"variable.other.readwrite.cs\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"C# Classes & Storage types\",\"scope\":[\"entity.name.type.class.cs\",\"storage.type.cs\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"C# Namespaces\",\"scope\":[\"entity.name.type.namespace.cs\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Tag names in Stylesheets\",\"scope\":[\"entity.name.tag.css\",\"entity.name.tag.less\",\"entity.name.tag.custom.css\",\"support.constant.property-value.css\"],\"settings\":{\"foreground\":\"#984e4d\",\"fontStyle\":\"\"}},{\"name\":\"Wildcard(*) selector in Stylesheets\",\"scope\":[\"entity.name.tag.wildcard.css\",\"entity.name.tag.wildcard.less\",\"entity.name.tag.wildcard.scss\",\"entity.name.tag.wildcard.sass\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"CSS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Attribute Name for CSS\",\"scope\":[\"meta.attribute-selector.css entity.other.attribute-name.attribute\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Elixir Classes\",\"scope\":[\"source.elixir support.type.elixir\",\"source.elixir meta.module.elixir entity.name.class.elixir\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir Functions\",\"scope\":[\"source.elixir entity.name.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir Constants\",\"scope\":[\"source.elixir constant.other.symbol.elixir\",\"source.elixir constant.other.keywords.elixir\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir String Punctuations\",\"scope\":[\"source.elixir punctuation.definition.string\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir\",\"scope\":[\"source.elixir variable.other.readwrite.module.elixir\",\"source.elixir variable.other.readwrite.module.elixir punctuation.definition.variable.elixir\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir Binary Punctuations\",\"scope\":[\"source.elixir .punctuation.binary.elixir\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Closure Constant Keyword\",\"scope\":[\"constant.keyword.clojure\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Go Function Calls\",\"scope\":[\"source.go meta.function-call.go\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Go Keywords\",\"scope\":[\"source.go keyword.package.go\",\"source.go keyword.import.go\",\"source.go keyword.function.go\",\"source.go keyword.type.go\",\"source.go keyword.struct.go\",\"source.go keyword.interface.go\",\"source.go keyword.const.go\",\"source.go keyword.var.go\",\"source.go keyword.map.go\",\"source.go keyword.channel.go\",\"source.go keyword.control.go\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Go Constants e.g. nil, string format (%s, %d, etc.)\",\"scope\":[\"source.go constant.language.go\",\"source.go constant.other.placeholder.go\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"C++ Functions\",\"scope\":[\"entity.name.function.preprocessor.cpp\",\"entity.scope.name.cpp\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"C++ Meta Namespace\",\"scope\":[\"meta.namespace-block.cpp\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"C++ Language Primitive Storage\",\"scope\":[\"storage.type.language.primitive.cpp\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"C++ Preprocessor Macro\",\"scope\":[\"meta.preprocessor.macro.cpp\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"C++ Variable Parameter\",\"scope\":[\"variable.parameter\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Powershell Variables\",\"scope\":[\"variable.other.readwrite.powershell\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Powershell Function\",\"scope\":[\"support.function.powershell\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"ID Attribute Name in HTML\",\"scope\":[\"entity.other.attribute-name.id.html\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"HTML Punctuation Definition Tag\",\"scope\":[\"punctuation.definition.tag.html\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"HTML Doctype\",\"scope\":[\"meta.tag.sgml.doctype.html\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"JavaScript Classes\",\"scope\":[\"meta.class entity.name.type.class.js\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"JavaScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.js\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"JavaScript Terminator\",\"scope\":[\"terminator.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Meta Punctuation Definition\",\"scope\":[\"meta.js punctuation.definition.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Entity Names in Code Documentations\",\"scope\":[\"entity.name.type.instance.jsdoc\",\"entity.name.type.instance.phpdoc\"],\"settings\":{\"foreground\":\"#4d667b\"}},{\"name\":\"Other Variables in Code Documentations\",\"scope\":[\"variable.other.jsdoc\",\"variable.other.phpdoc\"],\"settings\":{\"foreground\":\"#3e697c\"}},{\"name\":\"JavaScript module imports and exports\",\"scope\":[\"variable.other.meta.import.js\",\"meta.import.js variable.other\",\"variable.other.meta.export.js\",\"meta.export.js variable.other\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Variable Parameter Function\",\"scope\":[\"variable.parameter.function.js\"],\"settings\":{\"foreground\":\"#555ea2\"}},{\"name\":\"JavaScript[React] Variable Other Object\",\"scope\":[\"variable.other.object.js\",\"variable.other.object.jsx\",\"variable.object.property.js\",\"variable.object.property.jsx\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Variables\",\"scope\":[\"variable.js\",\"variable.other.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Entity Name Type\",\"scope\":[\"entity.name.type.js\",\"entity.name.type.module.js\"],\"settings\":{\"foreground\":\"#111111\",\"fontStyle\":\"\"}},{\"name\":\"JavaScript Support Classes\",\"scope\":[\"support.class.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JSON Property Names\",\"scope\":[\"support.type.property-name.json\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"JSON Support Constants\",\"scope\":[\"support.constant.json\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"JSON Property values (string)\",\"scope\":[\"meta.structure.dictionary.value.json string.quoted.double\"],\"settings\":{\"foreground\":\"#7c5686\"}},{\"name\":\"Strings in JSON values\",\"scope\":[\"string.quoted.double.json punctuation.definition.string.json\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Specific JSON Property values like null\",\"scope\":[\"meta.structure.dictionary.json meta.structure.dictionary.value constant.language\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"JavaScript Other Variable\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Ruby Variables\",\"scope\":[\"variable.other.ruby\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Ruby Class\",\"scope\":[\"entity.name.type.class.ruby\"],\"settings\":{\"foreground\":\"#984e4d\"}},{\"name\":\"Ruby Hashkeys\",\"scope\":[\"constant.language.symbol.hashkey.ruby\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Ruby Symbols\",\"scope\":[\"constant.language.symbol.ruby\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"LESS Tag names\",\"scope\":[\"entity.name.tag.less\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"LESS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Attribute Name for LESS\",\"scope\":[\"meta.attribute-selector.less entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Markdown Headings\",\"scope\":[\"markup.heading.markdown\",\"markup.heading.setext.1.markdown\",\"markup.heading.setext.2.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Markdown Italics\",\"scope\":[\"markup.italic.markdown\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"italic\"}},{\"name\":\"Markdown Bold\",\"scope\":[\"markup.bold.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\",\"fontStyle\":\"bold\"}},{\"name\":\"Markdown Quote + others\",\"scope\":[\"markup.quote.markdown\"],\"settings\":{\"foreground\":\"#5c6285\"}},{\"name\":\"Markdown Raw Code + others\",\"scope\":[\"markup.inline.raw.markdown\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Markdown Links\",\"scope\":[\"markup.underline.link.markdown\",\"markup.underline.link.image.markdown\"],\"settings\":{\"foreground\":\"#954f5a\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Link Title and Description\",\"scope\":[\"string.other.link.title.markdown\",\"string.other.link.description.markdown\"],\"settings\":{\"foreground\":\"#403f53\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Punctuation\",\"scope\":[\"punctuation.definition.string.markdown\",\"punctuation.definition.string.begin.markdown\",\"punctuation.definition.string.end.markdown\",\"meta.link.inline.markdown punctuation.definition.string\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Markdown MetaData Punctuation\",\"scope\":[\"punctuation.definition.metadata.markdown\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Markdown List Punctuation\",\"scope\":[\"beginning.punctuation.definition.list.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Markdown Inline Raw String\",\"scope\":[\"markup.inline.raw.string.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"PHP Variables\",\"scope\":[\"variable.other.php\",\"variable.other.property.php\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Support Classes in PHP\",\"scope\":[\"support.class.php\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Punctuations in PHP function calls\",\"scope\":[\"meta.function-call.php punctuation\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"PHP Global Variables\",\"scope\":[\"variable.other.global.php\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Declaration Punctuation in PHP Global Variables\",\"scope\":[\"variable.other.global.php punctuation.definition.variable\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Language Constants in Python\",\"scope\":[\"constant.language.python\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Python Function Parameter and Arguments\",\"scope\":[\"variable.parameter.function.python\",\"meta.function-call.arguments.python\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Python Function Call\",\"scope\":[\"meta.function-call.python\",\"meta.function-call.generic.python\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Punctuations in Python\",\"scope\":[\"punctuation.python\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Decorator Functions in Python\",\"scope\":[\"entity.name.function.decorator.python\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Python Language Variable\",\"scope\":[\"source.python variable.language.special\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Python import control keyword\",\"scope\":[\"keyword.control\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"SCSS Variable\",\"scope\":[\"variable.scss\",\"variable.sass\",\"variable.parameter.url.scss\",\"variable.parameter.url.sass\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Attribute Name for SASS\",\"scope\":[\"meta.attribute-selector.scss entity.other.attribute-name.attribute\",\"meta.attribute-selector.sass entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Tag names in SASS\",\"scope\":[\"entity.name.tag.scss\",\"entity.name.tag.sass\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"SASS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.scss\",\"keyword.other.unit.sass\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"TypeScript[React] Variables and Object Properties\",\"scope\":[\"variable.other.readwrite.alias.ts\",\"variable.other.readwrite.alias.tsx\",\"variable.other.readwrite.ts\",\"variable.other.readwrite.tsx\",\"variable.other.object.ts\",\"variable.other.object.tsx\",\"variable.object.property.ts\",\"variable.object.property.tsx\",\"variable.other.ts\",\"variable.other.tsx\",\"variable.tsx\",\"variable.ts\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"TypeScript[React] Entity Name Types\",\"scope\":[\"entity.name.type.ts\",\"entity.name.type.tsx\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"TypeScript[React] Node Classes\",\"scope\":[\"support.class.node.ts\",\"support.class.node.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"TypeScript[React] Entity Name Types as Parameters\",\"scope\":[\"meta.type.parameters.ts entity.name.type\",\"meta.type.parameters.tsx entity.name.type\"],\"settings\":{\"foreground\":\"#4d667b\"}},{\"name\":\"TypeScript[React] Import/Export Punctuations\",\"scope\":[\"meta.import.ts punctuation.definition.block\",\"meta.import.tsx punctuation.definition.block\",\"meta.export.ts punctuation.definition.block\",\"meta.export.tsx punctuation.definition.block\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.decorator punctuation.decorator.ts\",\"meta.decorator punctuation.decorator.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.tag.js meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"YAML Entity Name Tags\",\"scope\":[\"entity.name.tag.yaml\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"JavaScript Variable Other ReadWrite\",\"scope\":[\"variable.other.readwrite.js\",\"variable.parameter\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Support Class Component\",\"scope\":[\"support.class.component.js\",\"support.class.component.tsx\"],\"settings\":{\"foreground\":\"#aa0982\",\"fontStyle\":\"\"}},{\"name\":\"Text nested in React tags\",\"scope\":[\"meta.jsx.children\",\"meta.jsx.children.js\",\"meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"TypeScript Classes\",\"scope\":[\"meta.class entity.name.type.class.tsx\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"TypeScript Entity Name Type\",\"scope\":[\"entity.name.type.tsx\",\"entity.name.type.module.tsx\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"TypeScript Class Variable Keyword\",\"scope\":[\"meta.class.ts meta.var.expr.ts storage.type.ts\",\"meta.class.tsx meta.var.expr.tsx storage.type.tsx\"],\"settings\":{\"foreground\":\"#76578b\"}},{\"name\":\"TypeScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.ts\",\"meta.method.declaration storage.type.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"normalize font style of certain components\",\"scope\":[\"meta.property-list.css meta.property-value.css variable.other.less\",\"meta.property-list.scss variable.scss\",\"meta.property-list.sass variable.sass\",\"meta.brace\",\"keyword.operator.operator\",\"keyword.operator.or.regexp\",\"keyword.operator.expression.in\",\"keyword.operator.relational\",\"keyword.operator.assignment\",\"keyword.operator.comparison\",\"keyword.operator.type\",\"keyword.operator\",\"keyword\",\"punctuation.definintion.string\",\"punctuation\",\"variable.other.readwrite.js\",\"storage.type\",\"source.css\",\"string.quoted\"],\"settings\":{\"fontStyle\":\"\"}}],\"styleOverrides\":{\"frames\":{\"editorBackground\":\"var(--sl-color-gray-7)\",\"terminalBackground\":\"var(--sl-color-gray-7)\",\"editorActiveTabBackground\":\"var(--sl-color-gray-7)\",\"terminalTitlebarDotsForeground\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"terminalTitlebarDotsOpacity\":\"0.75\",\"inlineButtonForeground\":\"var(--sl-color-text)\",\"frameBoxShadowCssValue\":\"none\"},\"textMarkers\":{\"markBackground\":\"#0000001a\",\"markBorderColor\":\"#00000055\"}}}],\"defaultLocale\":\"en\",\"cascadeLayer\":\"starlight.components\",\"styleOverrides\":{\"borderRadius\":\"0px\",\"borderWidth\":\"1px\",\"codePaddingBlock\":\"0.75rem\",\"codePaddingInline\":\"1rem\",\"codeFontFamily\":\"var(--__sl-font-mono)\",\"codeFontSize\":\"var(--sl-text-code)\",\"codeLineHeight\":\"var(--sl-line-height)\",\"uiFontFamily\":\"var(--__sl-font)\",\"textMarkers\":{\"lineDiffIndicatorMarginLeft\":\"0.25rem\",\"defaultChroma\":\"45\",\"backgroundOpacity\":\"60%\"}},\"plugins\":[{\"name\":\"Starlight Plugin\",\"hooks\":{}},{\"name\":\"astro-expressive-code\",\"hooks\":{}}]}]],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"headingIdCompat\":false,\"preserveScriptOrder\":false,\"liveContentCollections\":false,\"csp\":false,\"staticImportMetaEnv\":false,\"chromeDevtoolsWorkspace\":false},\"legacy\":{\"collections\":false},\"prefetch\":{\"prefetchAll\":true},\"i18n\":{\"defaultLocale\":\"en\",\"locales\":[\"en\"],\"routing\":{\"prefixDefaultLocale\":false,\"redirectToDefaultLocale\":false,\"fallbackType\":\"redirect\"}}}","docs",["Map",11,12,34,35,45,46,56,57,81,82,91,92,102,103,127,128,166,167,212,213,239,240,275,276,285,286,295,296,305,306,315,316,357,358],"404",{"id":11,"data":13,"filePath":23,"digest":24,"rendered":25},{"title":11,"editUrl":14,"head":15,"template":16,"hero":17,"sidebar":20,"pagefind":22,"draft":14},false,[],"splash",{"title":11,"tagline":18,"actions":19},"Page not found. Check the URL or try using the search bar.",[],{"hidden":14,"attrs":21},{},true,"src/content/docs/404.md","bb57d46babfd3e01",{"html":26,"metadata":27},"",{"headings":28,"localImagePaths":29,"remoteImagePaths":30,"frontmatter":31,"imagePaths":33},[],[],[],{"title":11,"template":16,"editUrl":14,"hero":32},{"title":11,"tagline":18},[],"index",{"id":34,"data":36,"body":42,"filePath":43,"digest":44,"deferredRender":22},{"title":37,"description":38,"editUrl":22,"head":39,"tableOfContents":14,"template":16,"next":14,"sidebar":40,"pagefind":22,"draft":14},"🦫 OpenRag — The Open RAG Experimentation Playground","This is a page in my Starlight-powered site",[],{"hidden":14,"attrs":41},{},"import { LinkCard, CardGrid, Card } from '@astrojs/starlight/components';\nimport { Image } from 'astro:assets';\nimport myImage from \"/src/assets/RAG_architecture.png\";\n\n\u003CImage src={myImage} alt=\"RAG Architecture\" width={600} height={350} />\n\n[OpenRag](https://open-rag.ai/) is a lightweight, modular and extensible Retrieval-Augmented Generation (RAG) framework designed to explore and test advanced RAG techniques — 100% open source and focused on experimentation, not lock-in.\n\n> Built by Linagora, OpenRag offers a sovereign-by-design alternative to mainstream RAG stacks.\n\n## Getting Started\n\n\u003CCardGrid>\n \u003CLinkCard \n title=\"Quick Start\"\n icon=\"open-book\"\n href=\"getting_started/quickstart\" \n description='Step-by-step guide to get OpenRAG up and running quickly.'\n />\n \u003CLinkCard\n title=\"Other features\" \n icon=\"information\"\n href=\"documentation/features_in_details\"\n description=\"More information you want to share.\"\n />\n\u003C/CardGrid>","src/content/docs/index.mdx","32a9ed798a41db89","license",{"id":45,"data":47,"body":53,"filePath":54,"digest":55,"deferredRender":22},{"title":48,"editUrl":22,"head":49,"template":50,"sidebar":51,"pagefind":22,"draft":14},"License",[],"doc",{"hidden":14,"attrs":52},{},"OpenRag is licensed under [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.en.html). You are free to use, modify, and distribute this software in compliance with the terms of the license.\n\nFor more details, refer to the [LICENSE](https://github.com/linagora/openrag/blob/main/LICENSE) file in the repository.","src/content/docs/license.mdx","d3d5a30e5289a73a","minimum-specifications",{"id":56,"data":58,"body":63,"filePath":64,"digest":65,"rendered":66},{"title":59,"editUrl":22,"head":60,"template":50,"sidebar":61,"pagefind":22,"draft":14},"Minimum Specifications",[],{"hidden":14,"attrs":62},{},"OpenRAG can be run on a variety of hardware configurations, but still requires a minimum set of specifications.\n\n## Memory\n- Minimum: 16 GB RAM\n- Recommended: 32 GB RAM or more for better performance.\n\n## GPU\n- Minimum: NVIDIA GPU with at least 16 GB VRAM\n\n:::note\nMachines with unified memory (like Apple M-series Macs) work with at least 16 GB of RAM. However considering performance, 32 GB of RAM is recommended.","src/content/docs/minimum-specifications.md","1c6c7b709739d7c7",{"html":67,"metadata":68},"\u003Cp>OpenRAG can be run on a variety of hardware configurations, but still requires a minimum set of specifications.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"memory\">Memory\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#memory\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Memory”\u003C/span>\u003C/a>\u003C/div>\n\u003Cul>\n\u003Cli>Minimum: 16 GB RAM\u003C/li>\n\u003Cli>Recommended: 32 GB RAM or more for better performance.\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"gpu\">GPU\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#gpu\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “GPU”\u003C/span>\u003C/a>\u003C/div>\n\u003Cul>\n\u003Cli>Minimum: NVIDIA GPU with at least 16 GB VRAM\u003C/li>\n\u003C/ul>\n\u003Caside aria-label=\"Note\" class=\"starlight-aside starlight-aside--note\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z\">\u003C/path>\u003C/svg>Note\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Machines with unified memory (like Apple M-series Macs) work with at least 16 GB of RAM. However considering performance, 32 GB of RAM is recommended.\u003C/p>\u003C/div>\u003C/aside>",{"headings":69,"localImagePaths":77,"remoteImagePaths":78,"frontmatter":79,"imagePaths":80},[70,74],{"depth":71,"slug":72,"text":73},2,"memory","Memory",{"depth":71,"slug":75,"text":76},"gpu","GPU",[],[],{"title":59},[],"support-and-contribute",{"id":81,"data":83,"body":88,"filePath":89,"digest":90,"deferredRender":22},{"title":84,"editUrl":22,"head":85,"template":50,"sidebar":86,"pagefind":22,"draft":14},"Support and Contribute",[],{"hidden":14,"attrs":87},{},"We ❤️ your contributions!\n\nWe encourage you to contribute to OpenRag! Here's how you can get involved:\n1. Fork the repository on [GitHub](https://github.com/linagora/openrag).\n2. Create a new branch for your feature or fix.\n3. Submit a pull request for review.\n\nFeel free to ask **questions, suggest features, or report bugs** via the GitHub Issues page. Your feedback helps us improve!","src/content/docs/support-and-contribute.mdx","db3f67ab7f507b52","documentation/api",{"id":91,"data":93,"body":99,"filePath":100,"digest":101,"deferredRender":22},{"title":94,"description":95,"editUrl":22,"head":96,"template":50,"sidebar":97,"pagefind":22,"draft":14},"API","Use the FastAPI RAG Backend API for document-based question answering.",[],{"hidden":14,"attrs":98},{},"The FastAPI-powered backend provides a comprehensive document-based question answering system using Retrieval-Augmented Generation (RAG). The API supports semantic search, document indexing, and chat completions across multiple data partitions with full OpenAI compatibility.\n\n## 🔐 Authentication\n\nAll endpoints require authentication when **enabled** (by adding a authorization token `AUTH_TOKEN` in your **`.env`**). Include your **`AUTH_TOKEN`** in the HTTP request header:\n\n```http\nAuthorization: Bearer YOUR_AUTH_TOKEN\n```\n\nFor OpenAI-compatible endpoints, `AUTH_TOKEN` serves as the `api_key` parameter. Use a placeholder like `'sk-1234'` when authentication is disabled (necessary for when using OpenAI client).\n\n---\n\n## 📡 API Serving Modes\nThis API can be served using **Uvicorn** (default) or **Ray Serve** for distributed deployments.\n\nBy default, the backend uses `uvicorn` to serve the FastAPI app.\n\nTo enable **Ray Serve**, set the following environment variable:\n\n```bash\n// .env\nENABLE_RAY_SERVE=true\n```\n\nAdditional optional environment variables for configuring Ray Serve:\n\n```bash\n// .env\nRAY_SERVE_NUM_REPLICAS=1 # Number of deployment replicas\nRAY_SERVE_HOST=0.0.0.0 # Host address for Ray Serve HTTP proxy\nRAY_SERVE_PORT=8080 # Port for Ray Serve HTTP proxy\n```\n\nWhen using Ray Serve with a **remote cluster**, the HTTP server will be started on the **head node** of the cluster.\n\n:::caution\nWhen using Ray Serve, you must disable the **FastAPI `exception handler`** by setting `DISABLE_EXCEPTION_HANDLER=true` in your environment variables. Ray Serve is currently incompatible with FastAPI's exception handling middleware. Additionally, the Chainlit UI is disabled when using Ray Serve deployment.\n:::\n\n## 🚀 API Endpoints\n### ℹ️ System Health\nVerify server status and availability.\n```http\nGET /health_check\n```\n\n---\n\n### 📦 Document Indexing\n\n#### Upload New File\n```http\nPOST /indexer/partition/{partition}/file/{file_id}\n```\n\nUpload a new file to a specific partition for indexing.\n\n**Parameters:**\n- `partition` (path): Target partition name\n- `file_id` (path): Unique identifier for the file\n\n**Request Body (form-data):**\n- `file` (binary): File to upload\n- `metadata` (JSON string): File metadata (e.g., `{\"owner\": \"user1\"}`)\n\n**Responses:**\n- `201 Created`: Returns task status URL\n- `409 Conflict`: File already exists in partition\n\n#### Replace Existing File\n```http\nPUT /indexer/partition/{partition}/file/{file_id}\n```\n\nReplace an existing file in the partition. Deletes the current entry and creates a new indexing task.\n\n**Parameters:** Same as POST endpoint\n**Request Body:** Same as POST endpoint\n**Response:** `202 Accepted` with task status URL\n\n#### Update File Metadata\n```http\nPATCH /indexer/partition/{partition}/file/{file_id}\n```\n\nUpdate file metadata without reindexing the document.\n\n**Request Body (form-data):**\n- `metadata` (JSON string): Updated metadata\n\n**Response:** `200 OK` on successful update\n\n#### Delete File\n```http\nDELETE /indexer/partition/{partition}/file/{file_id}\n```\n\nRemove a file from the specified partition.\n\n**Responses:**\n- `204 No Content`: Successfully deleted\n- `404 Not Found`: File not found in partition\n\n#### Check Indexing Status\n```http\nGET /indexer/task/{task_id}\n```\n\nMonitor the progress of an asynchronous indexing task.\n\n**Response:** Task status information\n\n---\n\n#### See logs of a given task\n```http\nGET /indexer/task/{task_id}/logs\n```\n\n#### Get error details of a failed task \n```http\nGET /indexer/task/{task_id}/error\n```\n\n\n### 🔍 Semantic Search\n\n#### Search Across Multiple Partitions\n```http\nGET /search/\n```\n\nPerform semantic search across specified partitions.\n\n**Query Parameters:**\n- `partitions` (optional): List of partition names (default: `[\"all\"]`)\n- `text` (required): Search query text\n- `top_k` (optional): Number of results to return (default: `5`)\n\n**Responses:**\n- `200 OK`: JSON list of document links (HATEOAS format)\n- `400 Bad Request`: Invalid partitions parameter\n\n#### Search Within Single Partition\n```http\nGET /search/partition/{partition}\n```\n\nSearch within a specific partition only.\n\n**Query Parameters:**\n- `text` (required): Search query text\n- `top_k` (optional): Number of results (default: `5`)\n\n**Response:** Same as multi-partition search\n\n#### Search Within Specific File\n```http\nGET /search/partition/{partition}/file/{file_id}\n```\n\nSearch within a particular file in a partition.\n\n**Query Parameters:** Same as partition search\n**Response:** Same as other search endpoints\n\n---\n\n### 📄 Document Extraction\n\n#### Get Extract Details\n```http\nGET /extract/{extract_id}\n```\n\nRetrieve specific document extract (chunk) by ID.\n\n**Response:** JSON containing extract content and metadata\n\n---\n\n### 💬 OpenAI-Compatible Chat\n\nThese endpoints provide full OpenAI API compatibility for seamless integration with existing tools and workflows. For detailed example of openai usage [see this section](#openai-client-integration)\n\n* List Available Models\n```http\nGET /v1/models\n```\n\nList all available RAG models (partitions).\n\n**Model Naming Convention:**\n- Pattern: `openrag-{partition_name}` => This model allows to chat specifically with the partition `{partition_name}`\n- Special model: `partition-all` (queries entire vector database)\n\n* Chat Completions\n```http\nPOST /v1/chat/completions\n```\n\nOpenAI-compatible chat completion using **`RAG` pipeline**.\n\n**Request Body:**\n```bash frame=\"none\" title=\"Testing the openai OpenRAG chat completions endpoint with curl\"\ncurl -X POST http://localhost:8080/v1/chat/completions \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer YOUR_AUTH_TOKEN\" \\\n -d '{\n \"model\": \"openrag-{partition_name}\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Your question here\"\n }\n ],\n \"temperature\": 0.7,\n \"stream\": false\n }'\n```\n\n* Text Completions\n```http\nPOST /v1/completions\n```\n\nOpenAI-compatible text completion endpoint.\n\n## 💡 Usage Examples\n\n### Bulk File Indexing\n\nFor indexing multiple files programmatically, you can use this script [`data_indexer.py`](../utility/data_indexer.py) utility script in the [`📁 utility`](../utility/) folder or simply use **`indexer ui`**.\n\n### OpenAI Client Integration\n\nFor detailed examples of using OpenAI clients with this API, see the [`openai_compatibility_guide.ipynb`](./utility/openai_compatibility_guide.ipynb) notebook in the [`📁 utility`](./utility/) folder or simply use **`IndexerUI`**.\n\n#### Example OpenAI Client Usage\n\n```python {9-10}\nfrom openai import OpenAI, AsyncOpenAI\n\napi_base_url = \"http://localhost:8080\" # fastapi base url \nbase_url = f\"{api_base_url}/v1\"\n\nauth_key = ... # your api authentification key AUTH_TOKEN in your .env. Is authentification is disabled, use a placeholder like 'sk-1234'\nclient = OpenAI(api_key=auth_key, base_url=base_url)\n\nyour_partition= 'my_partition' # name of your partition\nmodel = f\"openrag-{your_partition}\"\nsettings = {\n 'model': model,\n 'temperature': 0.3,\n 'stream': False\n}\n\nresponse = client.chat.completions.create(\n **settings,\n messages=[\n {\"role\": \"user\", \"content\": \"What information do you have about...?\"}\n ]\n)\n```\n\n---\n\n## ⚠️ Error Handling\n\nThe API uses standard HTTP status codes:\n\n- `200 OK`: Successful request\n- `201 Created`: Resource created successfully\n- `202 Accepted`: Request accepted for processing\n- `204 No Content`: Successful deletion\n- `400 Bad Request`: Invalid request parameters\n- `404 Not Found`: Resource not found\n- `409 Conflict`: Resource already exists\n\nError responses include detailed JSON messages to help with debugging and integration.","src/content/docs/documentation/API.mdx","ce1c7841c62aaecb","documentation/chainlit_data_persistency",{"id":102,"data":104,"body":109,"filePath":110,"digest":111,"rendered":112},{"title":105,"editUrl":22,"head":106,"template":50,"sidebar":107,"pagefind":22,"draft":14},"Chainlit Data Persistency",[],{"hidden":14,"attrs":108},{},"The [Chainlit data layer](https://docs.chainlit.io/data-layers/overview) allows you to persist conversations in chainlit.\nThis project uses a [dockerized fork](https://github.com/Chainlit/chainlit-datalayer) for easier deployment and setup.\n\nIn OpenRAG, one can activate **`Chainlit data layer`** following these steps:\n\n### Step 1: Set up authentication\nIn fact, chainlit authentication is necessary for data persistency. Set chainlit authentication if not already done (refer to the [chainlit auth guide](./setup_chainlit_ui_auth.md))\n\n### Step 2: Add the following variables\nTo deploy the Chainlit data layer service, add the following variable:\n```bash\n// .env\n# Persistency services: postgres (localstack (AWS emulator deployed locally)\nCHAINLIT_DATALAYER_COMPOSE=extern/chainlit-datalayer/compose.yaml\n```\nThis provides 2 services:\n- a postgres database to store users, feedback, chat history, etc\n- \"s3 bucket\" emulator to store elements (files attached in the chat). \n\n:::note\nChainlit datalayer is cloud-compatible, and the same applies for local data persistency. So for local storage, a cloud/s3 service emulator that runs in a container is deployed as well.\n:::\n\n* Variables for the postgres data\n\n:::tip{icon=\"heart\"}\nKnowing that OpenRAG already has a running postgres service (**`rdb`**) (refer to the [docker-compose.yaml](../docker-compose.yaml) file), there is no need to deploy another postgres service. In that case, comment out the postgres service definition in the [compose.yaml file](../extern/chainlit-datalayer/compose.yaml) and add the following variable to your .env\n:::\n\n```bash\n// .env\nDATABASE_URL=postgresql://root:root_password@rdb:5432/chainlit\n```\n* Variables for chainlit to use the **`S3 Bucket`**\nAdd the following variables to your `.env` so that chainlit can use them to connect to the locally deployed S3 bucket\n\n```bash\n// .env\n## S3 bucket configuration.\nBUCKET_NAME=my-bucket\nAPP_AWS_ACCESS_KEY=random-key\nAPP_AWS_SECRET_KEY=random-key\nAPP_AWS_REGION=eu-central-1\nDEV_AWS_ENDPOINT=http://localstack:4566\n```\n\n:::tip{icon=\"seti:info\"}\nIf you want to deactivate the service, comment out these variables, especially **`CHAINLIT_DATALAYER_COMPOSE`**.\n:::","src/content/docs/documentation/chainlit_data_persistency.md","89e2a599d914734f",{"html":113,"metadata":114},"\u003Cp>The \u003Ca href=\"https://docs.chainlit.io/data-layers/overview\">Chainlit data layer\u003C/a> allows you to persist conversations in chainlit.\nThis project uses a \u003Ca href=\"https://github.com/Chainlit/chainlit-datalayer\">dockerized fork\u003C/a> for easier deployment and setup.\u003C/p>\n\u003Cp>In OpenRAG, one can activate \u003Cstrong>\u003Ccode dir=\"auto\">Chainlit data layer\u003C/code>\u003C/strong> following these steps:\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"step-1-set-up-authentication\">Step 1: Set up authentication\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#step-1-set-up-authentication\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 1: Set up authentication”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>In fact, chainlit authentication is necessary for data persistency. Set chainlit authentication if not already done (refer to the \u003Ca href=\"./setup_chainlit_ui_auth.md\">chainlit auth guide\u003C/a>)\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"step-2-add-the-following-variables\">Step 2: Add the following variables\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#step-2-add-the-following-variables\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 2: Add the following variables”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>To deploy the Chainlit data layer service, add the following variable:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Persistency services: postgres (localstack (AWS emulator deployed locally)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_DATALAYER_COMPOSE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">extern/chainlit-datalayer/compose.yaml\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"# Persistency services: postgres (localstack (AWS emulator deployed locally)CHAINLIT_DATALAYER_COMPOSE=extern/chainlit-datalayer/compose.yaml\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>This provides 2 services:\u003C/p>\n\u003Cul>\n\u003Cli>a postgres database to store users, feedback, chat history, etc\u003C/li>\n\u003Cli>“s3 bucket” emulator to store elements (files attached in the chat).\u003C/li>\n\u003C/ul>\n\u003Caside aria-label=\"Note\" class=\"starlight-aside starlight-aside--note\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z\">\u003C/path>\u003C/svg>Note\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Chainlit datalayer is cloud-compatible, and the same applies for local data persistency. So for local storage, a cloud/s3 service emulator that runs in a container is deployed as well.\u003C/p>\u003C/div>\u003C/aside>\n\u003Cul>\n\u003Cli>Variables for the postgres data\u003C/li>\n\u003C/ul>\n\u003Caside aria-label=\"Tip\" class=\"starlight-aside starlight-aside--tip\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M20.16 5A6.29 6.29 0 0 0 12 4.36a6.27 6.27 0 0 0-8.16 9.48l6.21 6.22a2.78 2.78 0 0 0 3.9 0l6.21-6.22a6.27 6.27 0 0 0 0-8.84m-1.41 7.46-6.21 6.21a.76.76 0 0 1-1.08 0l-6.21-6.24a4.29 4.29 0 0 1 0-6 4.27 4.27 0 0 1 6 0 1 1 0 0 0 1.42 0 4.27 4.27 0 0 1 6 0 4.29 4.29 0 0 1 .08 6Z\">\u003C/path>\u003C/svg>Tip\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Knowing that OpenRAG already has a running postgres service (\u003Cstrong>\u003Ccode dir=\"auto\">rdb\u003C/code>\u003C/strong>) (refer to the \u003Ca href=\"../docker-compose.yaml\">docker-compose.yaml\u003C/a> file), there is no need to deploy another postgres service. In that case, comment out the postgres service definition in the \u003Ca href=\"../extern/chainlit-datalayer/compose.yaml\">compose.yaml file\u003C/a> and add the following variable to your .env\u003C/p>\u003C/div>\u003C/aside>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">DATABASE_URL\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">postgresql://root:root_password@rdb:5432/chainlit\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"DATABASE_URL=postgresql://root:root_password@rdb:5432/chainlit\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cul>\n\u003Cli>Variables for chainlit to use the \u003Cstrong>\u003Ccode dir=\"auto\">S3 Bucket\u003C/code>\u003C/strong>\nAdd the following variables to your \u003Ccode dir=\"auto\">.env\u003C/code> so that chainlit can use them to connect to the locally deployed S3 bucket\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\">## S3 bucket configuration.\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">BUCKET_NAME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">my-bucket\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">APP_AWS_ACCESS_KEY\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">random-key\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">APP_AWS_SECRET_KEY\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">random-key\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">APP_AWS_REGION\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">eu-central-1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">DEV_AWS_ENDPOINT\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">http://localstack:4566\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"## S3 bucket configuration.BUCKET_NAME=my-bucketAPP_AWS_ACCESS_KEY=random-keyAPP_AWS_SECRET_KEY=random-keyAPP_AWS_REGION=eu-central-1DEV_AWS_ENDPOINT=http://localstack:4566\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Caside aria-label=\"Tip\" class=\"starlight-aside starlight-aside--tip\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M23.780 10.803L23.818 10.803Q23.628 8.029 21.918 5.331L21.918 5.331Q20.664 3.469 18.916 2.234Q17.168 0.999 15.002 0.467L15.002 0.467Q13.748 0.125 12.646 0.125L12.646 0.125L10.746 0.125Q7.326 0.467 4.438 2.595L4.438 2.595Q1.132 5.369 0.296 9.245L0.296 9.245Q0.068 10.423 0.068 11.145L0.068 11.145L0.068 13.045Q0.448 16.351 2.082 18.631L2.082 18.631Q4.172 21.709 7.288 22.925L7.288 22.925Q9.454 23.685 11.202 23.875L11.202 23.875L13.102 23.875Q17.434 23.495 20.474 20.303L20.474 20.303Q22.944 17.833 23.666 14.375L23.666 14.375Q23.742 14.071 23.799 13.539Q23.856 13.007 23.932 12.703L23.932 12.703L23.932 11.411Q23.780 11.145 23.780 10.803L23.780 10.803ZM11.924 21.975L11.924 21.975Q9.188 21.975 6.870 20.569L6.870 20.569Q4.590 19.239 3.279 16.921Q1.968 14.603 1.968 11.867Q1.968 9.131 3.317 6.813Q4.666 4.495 6.984 3.165L6.984 3.165Q9.378 1.759 12.152 1.759L12.152 1.759Q14.850 1.835 17.149 3.184Q19.448 4.533 20.778 6.813L20.778 6.813Q22.146 9.131 22.108 11.867Q22.070 14.603 20.683 16.921Q19.296 19.239 17.016 20.569L17.016 20.569Q14.660 21.975 11.924 21.975ZM15.496 18.289L14.774 18.289Q14.432 18.289 14.166 18.175L14.166 18.175Q14.014 18.175 13.900 17.947L13.900 17.947Q13.862 17.833 13.824 17.795L13.824 17.795L13.824 10.081Q12.874 10.157 11.031 10.214Q9.188 10.271 8.238 10.309L8.238 10.309L8.238 11.259L9.416 11.259Q9.758 11.259 9.948 11.487Q10.138 11.715 10.138 12.095L10.138 12.095L10.138 17.567Q10.138 18.289 9.416 18.289L9.416 18.289L8.352 18.289L8.352 19.239L15.496 19.239L15.496 18.289ZM11.696 8.675L11.696 8.675Q12.570 8.675 13.140 8.067Q13.710 7.459 13.710 6.642Q13.710 5.825 13.102 5.217Q12.494 4.609 11.658 4.609Q10.822 4.609 10.252 5.217Q9.682 5.825 9.682 6.642Q9.682 7.459 10.290 8.067Q10.898 8.675 11.696 8.675Z\">\u003C/path>\u003C/svg>Tip\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>If you want to deactivate the service, comment out these variables, especially \u003Cstrong>\u003Ccode dir=\"auto\">CHAINLIT_DATALAYER_COMPOSE\u003C/code>\u003C/strong>.\u003C/p>\u003C/div>\u003C/aside>",{"headings":115,"localImagePaths":123,"remoteImagePaths":124,"frontmatter":125,"imagePaths":126},[116,120],{"depth":117,"slug":118,"text":119},3,"step-1-set-up-authentication","Step 1: Set up authentication",{"depth":117,"slug":121,"text":122},"step-2-add-the-following-variables","Step 2: Add the following variables",[],[],{"title":105},[],"documentation/features_in_details",{"id":127,"data":129,"body":134,"filePath":135,"digest":136,"rendered":137},{"title":130,"editUrl":22,"head":131,"template":50,"sidebar":132,"pagefind":22,"draft":14},"✨ Features",[],{"hidden":14,"attrs":133},{},"### 📁 Rich File Format Support\n[OpenRag](https://open-rag.ai/) supports a comprehensive range of file formats for seamless document ingestion:\n\n* **Text Files**: `txt`, `md`\n* **Document Files**: `pdf`, `docx`, `doc`, `pptx` - Advanced PDF parsing with OCR support and Office document processing\n* **Audio Files**: `wav`, `mp3`, `mp4`, `ogg`, `flv`, `wma`, `aac` - Audio transcription and content extraction\n* **Images**: `png`, `jpeg`, `jpg`, `svg` - Vision Language Model (VLM) powered image captioning and analysis\n\nAll files are intelligently converted to **Markdown format** with images replaced by AI-generated captions, ensuring consistent processing across all document types.\n\n### 🎛️ Native Web-Based Indexer UI\nExperience intuitive document management through our built-in web interface.\n\n\u003Cdetails>\n\n\u003Csummary>Indexer UI Features\u003C/summary>\n\n* **Drag-and-drop file upload** with batch processing capabilities\n* **Real-time indexing progress** monitoring and status updates\n* **Admin Dashboard** to monitor RAG components (Indexer, VectorDB, TaskStateManager, etc)\n* **Partition management** - organize documents into logical collections\n* **Visual document preview** and metadata inspection\n* **Search and filtering** capabilities for indexed content\n\n\u003C/details>\n\n### 🗂️ Partition-Based Architecture\nOrganize your knowledge base with flexible partition management:\n* **Multi-tenant support** - isolate different document collections\n\n### 💬 Interactive Chat UI with Source Attribution\nEngage with your documents through our sophisticated chat interface:\n\n\u003Cdetails>\n\n\u003Csummary>Chat UI Features\u003C/summary>\n\n* **Chainlit-powered UI** - modern, responsive chat experience\n* **Source transparency** - every response includes relevant document references\n\u003C/details>\n\n\n### 🔌 OpenAI API Compatibility\n[OpenRag](https://open-rag.ai/) API is tailored to be compatible with the OpenAI format (see the [openai-compatibility section](/documentation/api/#-openai-compatible-chat) for more details), enabling seamless integration of your deployed RAG into popular frontends and workflows such as OpenWebUI, LangChain, N8N, and more. This ensures flexibility and ease of adoption without requiring custom adapters.\n\n\u003Cdetails>\n\n\u003Csummary>Summary of features\u003C/summary>\n\n* **Drop-in replacement** for OpenAI API endpoints\n* **Compatible with popular frontends** like OpenWebUI, LangChain, N8N, and more\n* **Authentication support** - secure your API with token-based auth\n\n\u003C/details>\n\n\n### ⚡ Distributed Ray Deployment\nScale your RAG pipeline across multiple machines and GPUs.\n\u003Cdetails>\n\n\u003Csummary>Distributed Ray Deployment\u003C/summary>\n\n* **Horizontal scaling** - distribute processing across worker nodes\n* **GPU acceleration** - optimize inference across available hardware\n* **Resource management** - intelligent allocation of compute resources\n* **Monitoring dashboard** - real-time cluster health and performance metrics\n\nSee the section on [distributed deployment in a ray cluster](#5-distributed-deployment-in-a-ray-cluster) for more details\n\n\u003C/details>\n\n### 🔍 Advanced Retrieval & Reranking\n[OpenRag](https://open-rag.ai/) Leverages state-of-the-art retrieval techniques for superior accuracy.\n\n\u003Cdetails>\n\n\u003Csummary>Implemented advanced retrieval techniques\u003C/summary>\n\n* **Hybrid search** - combines semantic similarity with **`BM25` keyword** matching\n* **Contextual retrieval** - Anthropic's technique for enhanced chunk relevance\n* **Multilingual reranking** - using `Alibaba-NLP/gte-multilingual-reranker-base`\n\n\u003C/details>","src/content/docs/documentation/features_in_details.md","87e037dc8bb5a2ac",{"html":138,"metadata":139},"\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-rich-file-format-support\">📁 Rich File Format Support\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-rich-file-format-support\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📁 Rich File Format Support”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>\u003Ca href=\"https://open-rag.ai/\">OpenRag\u003C/a> supports a comprehensive range of file formats for seamless document ingestion:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Text Files\u003C/strong>: \u003Ccode dir=\"auto\">txt\u003C/code>, \u003Ccode dir=\"auto\">md\u003C/code>\u003C/li>\n\u003Cli>\u003Cstrong>Document Files\u003C/strong>: \u003Ccode dir=\"auto\">pdf\u003C/code>, \u003Ccode dir=\"auto\">docx\u003C/code>, \u003Ccode dir=\"auto\">doc\u003C/code>, \u003Ccode dir=\"auto\">pptx\u003C/code> - Advanced PDF parsing with OCR support and Office document processing\u003C/li>\n\u003Cli>\u003Cstrong>Audio Files\u003C/strong>: \u003Ccode dir=\"auto\">wav\u003C/code>, \u003Ccode dir=\"auto\">mp3\u003C/code>, \u003Ccode dir=\"auto\">mp4\u003C/code>, \u003Ccode dir=\"auto\">ogg\u003C/code>, \u003Ccode dir=\"auto\">flv\u003C/code>, \u003Ccode dir=\"auto\">wma\u003C/code>, \u003Ccode dir=\"auto\">aac\u003C/code> - Audio transcription and content extraction\u003C/li>\n\u003Cli>\u003Cstrong>Images\u003C/strong>: \u003Ccode dir=\"auto\">png\u003C/code>, \u003Ccode dir=\"auto\">jpeg\u003C/code>, \u003Ccode dir=\"auto\">jpg\u003C/code>, \u003Ccode dir=\"auto\">svg\u003C/code> - Vision Language Model (VLM) powered image captioning and analysis\u003C/li>\n\u003C/ul>\n\u003Cp>All files are intelligently converted to \u003Cstrong>Markdown format\u003C/strong> with images replaced by AI-generated captions, ensuring consistent processing across all document types.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"️-native-web-based-indexer-ui\">🎛️ Native Web-Based Indexer UI\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#️-native-web-based-indexer-ui\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🎛️ Native Web-Based Indexer UI”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Experience intuitive document management through our built-in web interface.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Indexer UI Features\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Drag-and-drop file upload\u003C/strong> with batch processing capabilities\u003C/li>\n\u003Cli>\u003Cstrong>Real-time indexing progress\u003C/strong> monitoring and status updates\u003C/li>\n\u003Cli>\u003Cstrong>Admin Dashboard\u003C/strong> to monitor RAG components (Indexer, VectorDB, TaskStateManager, etc)\u003C/li>\n\u003Cli>\u003Cstrong>Partition management\u003C/strong> - organize documents into logical collections\u003C/li>\n\u003Cli>\u003Cstrong>Visual document preview\u003C/strong> and metadata inspection\u003C/li>\n\u003Cli>\u003Cstrong>Search and filtering\u003C/strong> capabilities for indexed content\u003C/li>\n\u003C/ul>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"️-partition-based-architecture\">🗂️ Partition-Based Architecture\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#️-partition-based-architecture\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🗂️ Partition-Based Architecture”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Organize your knowledge base with flexible partition management:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Multi-tenant support\u003C/strong> - isolate different document collections\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-interactive-chat-ui-with-source-attribution\">💬 Interactive Chat UI with Source Attribution\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-interactive-chat-ui-with-source-attribution\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “💬 Interactive Chat UI with Source Attribution”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Engage with your documents through our sophisticated chat interface:\u003C/p>\n\u003Cdetails>\n\u003Csummary>Chat UI Features\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Chainlit-powered UI\u003C/strong> - modern, responsive chat experience\u003C/li>\n\u003Cli>\u003Cstrong>Source transparency\u003C/strong> - every response includes relevant document references\u003C/li>\n\u003C/ul>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-openai-api-compatibility\">🔌 OpenAI API Compatibility\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-openai-api-compatibility\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔌 OpenAI API Compatibility”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>\u003Ca href=\"https://open-rag.ai/\">OpenRag\u003C/a> API is tailored to be compatible with the OpenAI format (see the \u003Ca href=\"/documentation/api/#-openai-compatible-chat\">openai-compatibility section\u003C/a> for more details), enabling seamless integration of your deployed RAG into popular frontends and workflows such as OpenWebUI, LangChain, N8N, and more. This ensures flexibility and ease of adoption without requiring custom adapters.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Summary of features\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Drop-in replacement\u003C/strong> for OpenAI API endpoints\u003C/li>\n\u003Cli>\u003Cstrong>Compatible with popular frontends\u003C/strong> like OpenWebUI, LangChain, N8N, and more\u003C/li>\n\u003Cli>\u003Cstrong>Authentication support\u003C/strong> - secure your API with token-based auth\u003C/li>\n\u003C/ul>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-distributed-ray-deployment\">⚡ Distributed Ray Deployment\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-distributed-ray-deployment\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “⚡ Distributed Ray Deployment”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Scale your RAG pipeline across multiple machines and GPUs.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Distributed Ray Deployment\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Horizontal scaling\u003C/strong> - distribute processing across worker nodes\u003C/li>\n\u003Cli>\u003Cstrong>GPU acceleration\u003C/strong> - optimize inference across available hardware\u003C/li>\n\u003Cli>\u003Cstrong>Resource management\u003C/strong> - intelligent allocation of compute resources\u003C/li>\n\u003Cli>\u003Cstrong>Monitoring dashboard\u003C/strong> - real-time cluster health and performance metrics\u003C/li>\n\u003C/ul>\n\u003Cp>See the section on \u003Ca href=\"#5-distributed-deployment-in-a-ray-cluster\">distributed deployment in a ray cluster\u003C/a> for more details\u003C/p>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-advanced-retrieval--reranking\">🔍 Advanced Retrieval & Reranking\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-advanced-retrieval--reranking\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔍 Advanced Retrieval & Reranking”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>\u003Ca href=\"https://open-rag.ai/\">OpenRag\u003C/a> Leverages state-of-the-art retrieval techniques for superior accuracy.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Implemented advanced retrieval techniques\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Hybrid search\u003C/strong> - combines semantic similarity with \u003Cstrong>\u003Ccode dir=\"auto\">BM25\u003C/code> keyword\u003C/strong> matching\u003C/li>\n\u003Cli>\u003Cstrong>Contextual retrieval\u003C/strong> - Anthropic’s technique for enhanced chunk relevance\u003C/li>\n\u003Cli>\u003Cstrong>Multilingual reranking\u003C/strong> - using \u003Ccode dir=\"auto\">Alibaba-NLP/gte-multilingual-reranker-base\u003C/code>\u003C/li>\n\u003C/ul>\n\u003C/details>",{"headings":140,"localImagePaths":162,"remoteImagePaths":163,"frontmatter":164,"imagePaths":165},[141,144,147,150,153,156,159],{"depth":117,"slug":142,"text":143},"-rich-file-format-support","📁 Rich File Format Support",{"depth":117,"slug":145,"text":146},"️-native-web-based-indexer-ui","🎛️ Native Web-Based Indexer UI",{"depth":117,"slug":148,"text":149},"️-partition-based-architecture","🗂️ Partition-Based Architecture",{"depth":117,"slug":151,"text":152},"-interactive-chat-ui-with-source-attribution","💬 Interactive Chat UI with Source Attribution",{"depth":117,"slug":154,"text":155},"-openai-api-compatibility","🔌 OpenAI API Compatibility",{"depth":117,"slug":157,"text":158},"-distributed-ray-deployment","⚡ Distributed Ray Deployment",{"depth":117,"slug":160,"text":161},"-advanced-retrieval--reranking","🔍 Advanced Retrieval & Reranking",[],[],{"title":130},[],"documentation/setup_glusterfs",{"id":166,"data":168,"body":173,"filePath":174,"digest":175,"rendered":176},{"title":169,"editUrl":22,"head":170,"template":50,"sidebar":171,"pagefind":22,"draft":14},"GlusterFS",[],{"hidden":14,"attrs":172},{},"# 🪵 GlusterFS Setup for Shared Storage (Ray Cluster)\n\nIn a Ray distributed setup, **all worker nodes need access to certain shared resources** used by the application. \nThis includes:\n\n- `.env` (environment variables for models and settings)\n- `.hydra_config` (application configuration)\n- Uploaded files (`/data`)\n- Model weights (e.g. `/model_weights` if using HF local cache)\n\n---\n\n## 1️⃣ Setup VPN (if required)\n\nIf your Ray nodes are **not on the same local network**, set up a VPN between them first. \n➡ Refer to the dedicated [VPN setup guide](/documentation/setup_vpn/). \nYou can skip this step if your nodes are already on the same LAN.\n\n---\n\n## 2️⃣ Setup GlusterFS (Distributed Filesystem)\n\nGlusterFS allows you to **share and replicate storage across multiple nodes** with redundancy and better fault tolerance.\n\nThis guide assumes:\n- You have 4 machines on the same private network\n- You want all of them to share `/ray_mount`\n\n---\n\n### 🔧 Install GlusterFS and start the GlusterFS\n\nRun this on **all 4 machines**:\n\n```bash title=\"installing and starting glusterfs...\"\nsudo apt update\nsudo apt install -y glusterfs-server\nsudo systemctl enable --now glusterd\n```\n\n---\n\n### 🤝 Connect all nodes into a trusted pool\n\nFrom one node (e.g. the Ray head), run:\n\n```bash title:\"connecting nodes...\"\ngluster peer probe \u003CIP_OF_NODE_2>\ngluster peer probe \u003CIP_OF_NODE_3>\ngluster peer probe \u003CIP_OF_NODE_4>\n```\n\nConfirm with:\n\n```bash title=\"shows the status of nodes\"\ngluster peer status\n```\n\n---\n\n### 📁 Create bricks on each node\n\nOn **each node**, run:\n\n```bash\nsudo mkdir -p /gluster/bricks/ray_mount\n```\n\n---\n\n### 📦 Create the replicated GlusterFS volume\n\nFrom one node (e.g. the Ray head):\n\n```bash\ngluster volume create rayvol replica 4 \\\n \u003CIP1>:/gluster/bricks/ray_mount \\\n \u003CIP2>:/gluster/bricks/ray_mount \\\n \u003CIP3>:/gluster/bricks/ray_mount \\\n \u003CIP4>:/gluster/bricks/ray_mount \\\n force\n```\n\nStart the volume:\n\n```bash\ngluster volume start rayvol\n```\n\n---\n\n### 🔗 Mount the volume on all nodes\n\nInstall the client tools:\n\n```bash\nsudo apt install -y glusterfs-client\n```\n\nCreate the mount point:\n\n```bash\nsudo mkdir -p /ray_mount\n```\n\nMount it (on each node):\n\n```bash\nsudo mount -t glusterfs \u003CANY_NODE_IP>:/rayvol /ray_mount\n```\n\nTo make this permanent across reboots:\n\n```bash\necho \"\u003CANY_NODE_IP>:/rayvol /ray_mount glusterfs defaults,_netdev 0 0\" | sudo tee -a /etc/fstab\n```\n\n> ✅ Replace `\u003CANY_NODE_IP>` with one of your node IPs in the GlusterFS cluster.\n\n---\n\n### 📂 Copy required data to the shared folder\n\nFrom any node:\n\n```bash\nsudo cp -r .hydra_config /ray_mount/\nsudo cp .env /ray_mount/\nsudo mkdir /ray_mount/data /ray_mount/model_weights\nsudo chown -R ubuntu:ubuntu /ray_mount\n```\n\n> ✅ Ensure that the ownership is set to the user running Ray workers (e.g. `ubuntu`) so that all nodes can read/write.\n\n---\n\nNow, all Ray nodes will have **consistent access to required data and configurations** via `/ray_mount`, backed by a fault-tolerant and distributed filesystem.","src/content/docs/documentation/setup_glusterfs.md","a0b1fd932b56b526",{"html":177,"metadata":178},"\u003Cdiv class=\"sl-heading-wrapper level-h1\">\u003Ch1 id=\"-glusterfs-setup-for-shared-storage-ray-cluster\">🪵 GlusterFS Setup for Shared Storage (Ray Cluster)\u003C/h1>\u003Ca class=\"sl-anchor-link\" href=\"#-glusterfs-setup-for-shared-storage-ray-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🪵 GlusterFS Setup for Shared Storage (Ray Cluster)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>In a Ray distributed setup, \u003Cstrong>all worker nodes need access to certain shared resources\u003C/strong> used by the application.\u003Cbr>\nThis includes:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode dir=\"auto\">.env\u003C/code> (environment variables for models and settings)\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">.hydra_config\u003C/code> (application configuration)\u003C/li>\n\u003Cli>Uploaded files (\u003Ccode dir=\"auto\">/data\u003C/code>)\u003C/li>\n\u003Cli>Model weights (e.g. \u003Ccode dir=\"auto\">/model_weights\u003C/code> if using HF local cache)\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"1️⃣-setup-vpn-if-required\">1️⃣ Setup VPN (if required)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#1️⃣-setup-vpn-if-required\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “1️⃣ Setup VPN (if required)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>If your Ray nodes are \u003Cstrong>not on the same local network\u003C/strong>, set up a VPN between them first.\u003Cbr>\n➡ Refer to the dedicated \u003Ca href=\"/documentation/setup_vpn/\">VPN setup guide\u003C/a>.\u003Cbr>\nYou can skip this step if your nodes are already on the same LAN.\u003C/p>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"2️⃣-setup-glusterfs-distributed-filesystem\">2️⃣ Setup GlusterFS (Distributed Filesystem)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#2️⃣-setup-glusterfs-distributed-filesystem\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “2️⃣ Setup GlusterFS (Distributed Filesystem)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>GlusterFS allows you to \u003Cstrong>share and replicate storage across multiple nodes\u003C/strong> with redundancy and better fault tolerance.\u003C/p>\n\u003Cp>This guide assumes:\u003C/p>\n\u003Cul>\n\u003Cli>You have 4 machines on the same private network\u003C/li>\n\u003Cli>You want all of them to share \u003Ccode dir=\"auto\">/ray_mount\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-install-glusterfs-and-start-the-glusterfs\">🔧 Install GlusterFS and start the GlusterFS\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-install-glusterfs-and-start-the-glusterfs\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔧 Install GlusterFS and start the GlusterFS”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Run this on \u003Cstrong>all 4 machines\u003C/strong>:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame is-terminal has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">installing and starting glusterfs...\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">update\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">install\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterfs-server\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">systemctl\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">enable\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--now\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterd\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo apt updatesudo apt install -y glusterfs-serversudo systemctl enable --now glusterd\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-connect-all-nodes-into-a-trusted-pool\">🤝 Connect all nodes into a trusted pool\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-connect-all-nodes-into-a-trusted-pool\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🤝 Connect all nodes into a trusted pool”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>From one node (e.g. the Ray head), run:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">probe\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP_OF_NODE_2>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">probe\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP_OF_NODE_3>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">probe\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP_OF_NODE_4>\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster peer probe \u003CIP_OF_NODE_2>gluster peer probe \u003CIP_OF_NODE_3>gluster peer probe \u003CIP_OF_NODE_4>\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Confirm with:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">shows the status of nodes\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">status\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster peer status\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-create-bricks-on-each-node\">📁 Create bricks on each node\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-create-bricks-on-each-node\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📁 Create bricks on each node”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>On \u003Cstrong>each node\u003C/strong>, run:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mkdir\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-p\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/gluster/bricks/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo mkdir -p /gluster/bricks/ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-create-the-replicated-glusterfs-volume\">📦 Create the replicated GlusterFS volume\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-create-the-replicated-glusterfs-volume\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📦 Create the replicated GlusterFS volume”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>From one node (e.g. the Ray head):\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">volume\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">create\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">rayvol\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">replica\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">4\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP1>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP2>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP3>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP4>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">force\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster volume create rayvol replica 4 \\ \u003CIP1>:/gluster/bricks/ray_mount \\ \u003CIP2>:/gluster/bricks/ray_mount \\ \u003CIP3>:/gluster/bricks/ray_mount \\ \u003CIP4>:/gluster/bricks/ray_mount \\ force\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Start the volume:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">volume\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">start\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">rayvol\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster volume start rayvol\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-mount-the-volume-on-all-nodes\">🔗 Mount the volume on all nodes\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-mount-the-volume-on-all-nodes\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔗 Mount the volume on all nodes”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Install the client tools:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">install\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterfs-client\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo apt install -y glusterfs-client\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Create the mount point:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mkdir\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-p\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo mkdir -p /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Mount it (on each node):\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-t\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterfs\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><ANY_NODE_IP>:/rayvol\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo mount -t glusterfs \u003CANY_NODE_IP>:/rayvol /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>To make this permanent across reboots:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">echo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">\"\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\"><ANY_NODE_IP>:/rayvol /ray_mount glusterfs defaults,_netdev 0 0\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">\"\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">|\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">tee\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-a\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/etc/fstab\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"echo "\u003CANY_NODE_IP>:/rayvol /ray_mount glusterfs defaults,_netdev 0 0" | sudo tee -a /etc/fstab\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cblockquote>\n\u003Cp>✅ Replace \u003Ccode dir=\"auto\"><ANY_NODE_IP>\u003C/code> with one of your node IPs in the GlusterFS cluster.\u003C/p>\n\u003C/blockquote>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-copy-required-data-to-the-shared-folder\">📂 Copy required data to the shared folder\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-copy-required-data-to-the-shared-folder\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📂 Copy required data to the shared folder”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>From any node:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">cp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-r\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">.hydra_config\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">cp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">.env\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mkdir\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/data\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/model_weights\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">chown\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-R\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ubuntu:ubuntu\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo cp -r .hydra_config /ray_mount/sudo cp .env /ray_mount/sudo mkdir /ray_mount/data /ray_mount/model_weightssudo chown -R ubuntu:ubuntu /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cblockquote>\n\u003Cp>✅ Ensure that the ownership is set to the user running Ray workers (e.g. \u003Ccode dir=\"auto\">ubuntu\u003C/code>) so that all nodes can read/write.\u003C/p>\n\u003C/blockquote>\n\u003Chr>\n\u003Cp>Now, all Ray nodes will have \u003Cstrong>consistent access to required data and configurations\u003C/strong> via \u003Ccode dir=\"auto\">/ray_mount\u003C/code>, backed by a fault-tolerant and distributed filesystem.\u003C/p>",{"headings":179,"localImagePaths":208,"remoteImagePaths":209,"frontmatter":210,"imagePaths":211},[180,184,187,190,193,196,199,202,205],{"depth":181,"slug":182,"text":183},1,"-glusterfs-setup-for-shared-storage-ray-cluster","🪵 GlusterFS Setup for Shared Storage (Ray Cluster)",{"depth":71,"slug":185,"text":186},"1️⃣-setup-vpn-if-required","1️⃣ Setup VPN (if required)",{"depth":71,"slug":188,"text":189},"2️⃣-setup-glusterfs-distributed-filesystem","2️⃣ Setup GlusterFS (Distributed Filesystem)",{"depth":117,"slug":191,"text":192},"-install-glusterfs-and-start-the-glusterfs","🔧 Install GlusterFS and start the GlusterFS",{"depth":117,"slug":194,"text":195},"-connect-all-nodes-into-a-trusted-pool","🤝 Connect all nodes into a trusted pool",{"depth":117,"slug":197,"text":198},"-create-bricks-on-each-node","📁 Create bricks on each node",{"depth":117,"slug":200,"text":201},"-create-the-replicated-glusterfs-volume","📦 Create the replicated GlusterFS volume",{"depth":117,"slug":203,"text":204},"-mount-the-volume-on-all-nodes","🔗 Mount the volume on all nodes",{"depth":117,"slug":206,"text":207},"-copy-required-data-to-the-shared-folder","📂 Copy required data to the shared folder",[],[],{"title":169},[],"documentation/setup_indexerui",{"id":212,"data":214,"body":219,"filePath":220,"digest":221,"rendered":222},{"title":215,"editUrl":22,"head":216,"template":50,"sidebar":217,"pagefind":22,"draft":14},"Indexer UI",[],{"hidden":14,"attrs":218},{},"## Configuring the Indexer UI\n\n### 1. Download the `indexer-ui` Submodule\n\n> Ensure the `indexer-ui` submodule is initialized and downloaded. If not, run the following command from the root of your `openrag` project:\n\n```bash\n// .env\ncd \u003Cproject-name> # openrag project\ngit submodule update --init --recursive\n```\n\n:::note\nThe `--init --recursive` flags will:\n\n* Initialize all submodules defined in the `.gitmodules` file\n* Clone the content of each submodule\n* Recursively initialize and update nested submodules\n:::\n\n:::caution\nEach version of **`openrag`** ships with a specific compatible commit of [indexer-ui](https://github.com/linagora/openrag-admin-ui). The above command is sufficient.\nIn development mode, to fetch the latest version of `indexer-ui`, run:\n```bash title=\"fetching the latest version of submodules...\"\ngit submodule foreach 'git checkout main && git pull'\n```\n:::\n\n### 2. Set Environment Variables\n\nTo enable the Indexer UI, add the following environment variables to your configuration:\n\n* Replace **`X.X.X.X`** with `localhost` (for local use) or your server IP\n* Replace **`APP_PORT`** with your FastAPI port (default: 8080)\n* Set the **base URL of the Indexer UI** (required to prevent CORS issues). Replace **`INDEXERUI_PORT`** accordingly\n* Set the **base URL of your FastAPI backend** (used by the frontend). Replace **`APP_PORT`** accordingly\n\n```bash\n// .env\nINDEXERUI_COMPOSE_FILE=extern/indexer-ui/docker-compose.yaml # Path to the docker-compose file\nVITE_INCLUDE_CREDENTIALS=false # Set to true if FastAPI authentication is enabled\nINDEXERUI_PORT=8060 # Port for the Indexer UI (default: 3042)\nINDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT'\nVITE_API_BASE_URL='http://X.X.X.X:APP_PORT'\n```","src/content/docs/documentation/setup_indexerui.md","f61cee2ff322674a",{"html":223,"metadata":224},"\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"configuring-the-indexer-ui\">Configuring the Indexer UI\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#configuring-the-indexer-ui\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Configuring the Indexer UI”\u003C/span>\u003C/a>\u003C/div>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"1-download-the-indexer-ui-submodule\">1. Download the \u003Ccode dir=\"auto\">indexer-ui\u003C/code> Submodule\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#1-download-the-indexer-ui-submodule\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “1. Download the indexer-ui Submodule”\u003C/span>\u003C/a>\u003C/div>\n\u003Cblockquote>\n\u003Cp>Ensure the \u003Ccode dir=\"auto\">indexer-ui\u003C/code> submodule is initialized and downloaded. If not, run the following command from the root of your \u003Ccode dir=\"auto\">openrag\u003C/code> project:\u003C/p>\n\u003C/blockquote>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">cd\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><project-name>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># openrag project\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">git\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">submodule\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">update\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--init\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--recursive\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"cd \u003Cproject-name> # openrag projectgit submodule update --init --recursive\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Caside aria-label=\"Note\" class=\"starlight-aside starlight-aside--note\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z\">\u003C/path>\u003C/svg>Note\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>The \u003Ccode dir=\"auto\">--init --recursive\u003C/code> flags will:\u003C/p>\u003Cul>\n\u003Cli>Initialize all submodules defined in the \u003Ccode dir=\"auto\">.gitmodules\u003C/code> file\u003C/li>\n\u003Cli>Clone the content of each submodule\u003C/li>\n\u003Cli>Recursively initialize and update nested submodules\u003C/li>\n\u003C/ul>\u003C/div>\u003C/aside>\n\u003Caside aria-label=\"Caution\" class=\"starlight-aside starlight-aside--caution\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 16C11.8022 16 11.6089 16.0587 11.4444 16.1686C11.28 16.2784 11.1518 16.4346 11.0761 16.6173C11.0004 16.8001 10.9806 17.0011 11.0192 17.1951C11.0578 17.3891 11.153 17.5673 11.2929 17.7071C11.4327 17.847 11.6109 17.9422 11.8049 17.9808C11.9989 18.0194 12.2 17.9996 12.3827 17.9239C12.5654 17.8482 12.7216 17.72 12.8315 17.5556C12.9413 17.3911 13 17.1978 13 17C13 16.7348 12.8946 16.4805 12.7071 16.2929C12.5196 16.1054 12.2652 16 12 16ZM22.67 17.47L14.62 3.47003C14.3598 3.00354 13.9798 2.61498 13.5192 2.3445C13.0586 2.07401 12.5341 1.9314 12 1.9314C11.4659 1.9314 10.9414 2.07401 10.4808 2.3445C10.0202 2.61498 9.64019 3.00354 9.38 3.47003L1.38 17.47C1.11079 17.924 0.966141 18.441 0.960643 18.9688C0.955144 19.4966 1.089 20.0166 1.34868 20.4761C1.60837 20.9356 1.9847 21.3185 2.43968 21.5861C2.89466 21.8536 3.41218 21.9964 3.94 22H20.06C20.5921 22.0053 21.1159 21.8689 21.5779 21.6049C22.0399 21.341 22.4234 20.9589 22.689 20.4978C22.9546 20.0368 23.0928 19.5134 23.0895 18.9814C23.0862 18.4493 22.9414 17.9277 22.67 17.47ZM20.94 19.47C20.8523 19.626 20.7245 19.7556 20.5697 19.8453C20.4149 19.935 20.2389 19.9815 20.06 19.98H3.94C3.76111 19.9815 3.5851 19.935 3.43032 19.8453C3.27553 19.7556 3.14765 19.626 3.06 19.47C2.97223 19.318 2.92602 19.1456 2.92602 18.97C2.92602 18.7945 2.97223 18.622 3.06 18.47L11.06 4.47003C11.1439 4.30623 11.2714 4.16876 11.4284 4.07277C11.5855 3.97678 11.766 3.92599 11.95 3.92599C12.134 3.92599 12.3145 3.97678 12.4716 4.07277C12.6286 4.16876 12.7561 4.30623 12.84 4.47003L20.89 18.47C20.9892 18.6199 21.0462 18.7937 21.055 18.9732C21.0638 19.1527 21.0241 19.3312 20.94 19.49V19.47ZM12 8.00003C11.7348 8.00003 11.4804 8.10538 11.2929 8.29292C11.1054 8.48046 11 8.73481 11 9.00003V13C11 13.2652 11.1054 13.5196 11.2929 13.7071C11.4804 13.8947 11.7348 14 12 14C12.2652 14 12.5196 13.8947 12.7071 13.7071C12.8946 13.5196 13 13.2652 13 13V9.00003C13 8.73481 12.8946 8.48046 12.7071 8.29292C12.5196 8.10538 12.2652 8.00003 12 8.00003Z\">\u003C/path>\u003C/svg>Caution\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Each version of \u003Cstrong>\u003Ccode dir=\"auto\">openrag\u003C/code>\u003C/strong> ships with a specific compatible commit of \u003Ca href=\"https://github.com/linagora/openrag-admin-ui\">indexer-ui\u003C/a>. The above command is sufficient.\nIn development mode, to fetch the latest version of \u003Ccode dir=\"auto\">indexer-ui\u003C/code>, run:\u003C/p>\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">fetching the latest version of submodules...\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">git\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">submodule\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">foreach\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\">git checkout main && git pull\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"git submodule foreach 'git checkout main && git pull'\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\u003C/div>\u003C/aside>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"2-set-environment-variables\">2. Set Environment Variables\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#2-set-environment-variables\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “2. Set Environment Variables”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>To enable the Indexer UI, add the following environment variables to your configuration:\u003C/p>\n\u003Cul>\n\u003Cli>Replace \u003Cstrong>\u003Ccode dir=\"auto\">X.X.X.X\u003C/code>\u003C/strong> with \u003Ccode dir=\"auto\">localhost\u003C/code> (for local use) or your server IP\u003C/li>\n\u003Cli>Replace \u003Cstrong>\u003Ccode dir=\"auto\">APP_PORT\u003C/code>\u003C/strong> with your FastAPI port (default: 8080)\u003C/li>\n\u003Cli>Set the \u003Cstrong>base URL of the Indexer UI\u003C/strong> (required to prevent CORS issues). Replace \u003Cstrong>\u003Ccode dir=\"auto\">INDEXERUI_PORT\u003C/code>\u003C/strong> accordingly\u003C/li>\n\u003Cli>Set the \u003Cstrong>base URL of your FastAPI backend\u003C/strong> (used by the frontend). Replace \u003Cstrong>\u003Ccode dir=\"auto\">APP_PORT\u003C/code>\u003C/strong> accordingly\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">INDEXERUI_COMPOSE_FILE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">extern/indexer-ui/docker-compose.yaml\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Path to the docker-compose file\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">VITE_INCLUDE_CREDENTIALS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">false\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Set to true if FastAPI authentication is enabled\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">INDEXERUI_PORT\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">8060\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Port for the Indexer UI (default: 3042)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">INDEXERUI_URL\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\">http://X.X.X.X:INDEXERUI_PORT\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">VITE_API_BASE_URL\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\">http://X.X.X.X:APP_PORT\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"INDEXERUI_COMPOSE_FILE=extern/indexer-ui/docker-compose.yaml # Path to the docker-compose fileVITE_INCLUDE_CREDENTIALS=false # Set to true if FastAPI authentication is enabledINDEXERUI_PORT=8060 # Port for the Indexer UI (default: 3042)INDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT'VITE_API_BASE_URL='http://X.X.X.X:APP_PORT'\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>",{"headings":225,"localImagePaths":235,"remoteImagePaths":236,"frontmatter":237,"imagePaths":238},[226,229,232],{"depth":71,"slug":227,"text":228},"configuring-the-indexer-ui","Configuring the Indexer UI",{"depth":117,"slug":230,"text":231},"1-download-the-indexer-ui-submodule","1. Download the indexer-ui Submodule",{"depth":117,"slug":233,"text":234},"2-set-environment-variables","2. Set Environment Variables",[],[],{"title":215},[],"documentation/setup_vpn",{"id":239,"data":241,"body":246,"filePath":247,"digest":248,"rendered":249},{"title":242,"editUrl":22,"head":243,"template":50,"sidebar":244,"pagefind":22,"draft":14},"🌐 VPN Setup for Remote Machines with WireGuard",[],{"hidden":14,"attrs":245},{},"This guide helps you securely connect your remote machines using **WireGuard VPN**, allowing you to share files (NFS, etc.) as if they were on the same private network.\n\n---\n\n## 1️⃣ Install WireGuard on all machines\n\nRun the following on **each machine** (server and clients):\n\n```bash\nsudo apt update\nsudo apt install -y wireguard\n```\n\n---\n\n## 2️⃣ Configure the VPN Server (Main machine `X.X.X.X`)\n\nCreate the configuration file:\n\n```bash\nsudo nano /etc/wireguard/wg0.conf\n```\n\nPaste the following:\n\n```ini\n// /etc/wireguard/wg0.conf\n...\n[Interface]\nAddress = 10.0.0.1/24\nPrivateKey = \u003CSERVER_PRIVATE_KEY>\nListenPort = 51820\n\n# Allow forwarding and NAT\nPostUp = sysctl -w net.ipv4.ip_forward=1\nPostUp = iptables -A FORWARD -i wg0 -j ACCEPT\nPostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\nPostDown = iptables -D FORWARD -i wg0 -j ACCEPT\nPostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE\n\n[Peer]\n# Client machine\nPublicKey = \u003CCLIENT_PUBLIC_KEY>\nAllowedIPs = 10.0.0.2/32\n```\n\n---\n\n## 3️⃣ Configure the VPN Client (Other machine `X.X.X.X`)\n\nCreate the configuration file:\n\n```bash\nsudo nano /etc/wireguard/wg0.conf\n```\n\nPaste the following:\n\n```ini\n// /etc/wireguard/wg0.conf\n...\n[Interface]\nAddress = 10.0.0.2/24\nPrivateKey = \u003CCLIENT_PRIVATE_KEY>\n\n[Peer]\n# VPN Server\nPublicKey = \u003CSERVER_PUBLIC_KEY>\nEndpoint = X.X.X.X:51820 # Replace with your VPN server IP\nAllowedIPs = 10.0.0.0/24\nPersistentKeepalive = 25\n```\n\n---\n\n## 🔑 Generate Keys on Each Machine\n\nOn **each machine**, run:\n\n```bash\nwg genkey | tee privatekey | wg pubkey > publickey\n```\n\nUse the generated keys in your configurations:\n- `privatekey` → `\u003CPRIVATE_KEY>`\n- `publickey` → to give to the peer\n\n---\n\n## 🚀 Start and Enable VPN on Both Machines\n\nTo start the VPN connection:\n```bash\nsudo wg-quick up wg0\n```\n\nTo enable the VPN automatically on boot:\n```bash\nsudo systemctl enable wg-quick@wg0\n```\n\n---\n\n## ✅ Verification\n\nTest the VPN connection:\n- From **client**:\n ```bash\n ping 10.0.0.1\n ```\n- From **server**:\n ```bash\n ping 10.0.0.2\n ```\n\n---\n\n:::caution{icon=\"approve-check\"}\n- After the VPN is up, you can configure services like **NFS** using the **10.0.0.0/24 private network**.\n- Make sure your firewall allows `UDP 51820`.\n- Adjust the `AllowedIPs` and network according to your needs.\n:::","src/content/docs/documentation/setup_vpn.md","b0c5587658196dbc",{"html":250,"metadata":251},"\u003Cp>This guide helps you securely connect your remote machines using \u003Cstrong>WireGuard VPN\u003C/strong>, allowing you to share files (NFS, etc.) as if they were on the same private network.\u003C/p>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"1️⃣-install-wireguard-on-all-machines\">1️⃣ Install WireGuard on all machines\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#1️⃣-install-wireguard-on-all-machines\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “1️⃣ Install WireGuard on all machines”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Run the following on \u003Cstrong>each machine\u003C/strong> (server and clients):\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">update\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">install\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wireguard\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo apt updatesudo apt install -y wireguard\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"2️⃣-configure-the-vpn-server-main-machine-xxxx\">2️⃣ Configure the VPN Server (Main machine \u003Ccode dir=\"auto\">X.X.X.X\u003C/code>)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#2️⃣-configure-the-vpn-server-main-machine-xxxx\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “2️⃣ Configure the VPN Server (Main machine X.X.X.X)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Create the configuration file:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">nano\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/etc/wireguard/wg0.conf\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo nano /etc/wireguard/wg0.conf\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Paste the following:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">/etc/wireguard/wg0.conf\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"ini\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">...\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Interface]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">Address\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.1/24\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PrivateKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <SERVER_PRIVATE_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">ListenPort\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 51820\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Allow forwarding and NAT\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostUp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = sysctl -w \u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">net.ipv4.ip_forward\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">=1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostUp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -A FORWARD -i wg0 -j ACCEPT\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostUp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostDown\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -D FORWARD -i wg0 -j ACCEPT\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostDown\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Peer]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Client machine\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PublicKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <CLIENT_PUBLIC_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">AllowedIPs\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.2/32\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"...[Interface]Address = 10.0.0.1/24PrivateKey = \u003CSERVER_PRIVATE_KEY>ListenPort = 51820# Allow forwarding and NATPostUp = sysctl -w net.ipv4.ip_forward=1PostUp = iptables -A FORWARD -i wg0 -j ACCEPTPostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEPostDown = iptables -D FORWARD -i wg0 -j ACCEPTPostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE[Peer]# Client machinePublicKey = \u003CCLIENT_PUBLIC_KEY>AllowedIPs = 10.0.0.2/32\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"3️⃣-configure-the-vpn-client-other-machine-xxxx\">3️⃣ Configure the VPN Client (Other machine \u003Ccode dir=\"auto\">X.X.X.X\u003C/code>)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#3️⃣-configure-the-vpn-client-other-machine-xxxx\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “3️⃣ Configure the VPN Client (Other machine X.X.X.X)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Create the configuration file:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">nano\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/etc/wireguard/wg0.conf\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo nano /etc/wireguard/wg0.conf\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Paste the following:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">/etc/wireguard/wg0.conf\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"ini\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">...\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Interface]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">Address\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.2/24\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PrivateKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <CLIENT_PRIVATE_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Peer]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># VPN Server\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PublicKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <SERVER_PUBLIC_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">Endpoint\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = X.X.X.X:51820 \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Replace with your VPN server IP\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">AllowedIPs\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.0/24\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PersistentKeepalive\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 25\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"...[Interface]Address = 10.0.0.2/24PrivateKey = \u003CCLIENT_PRIVATE_KEY>[Peer]# VPN ServerPublicKey = \u003CSERVER_PUBLIC_KEY>Endpoint = X.X.X.X:51820 # Replace with your VPN server IPAllowedIPs = 10.0.0.0/24PersistentKeepalive = 25\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-generate-keys-on-each-machine\">🔑 Generate Keys on Each Machine\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-generate-keys-on-each-machine\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔑 Generate Keys on Each Machine”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>On \u003Cstrong>each machine\u003C/strong>, run:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">wg\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">genkey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">|\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">tee\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">privatekey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">|\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">wg\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">pubkey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">publickey\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"wg genkey | tee privatekey | wg pubkey > publickey\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Use the generated keys in your configurations:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode dir=\"auto\">privatekey\u003C/code> → \u003Ccode dir=\"auto\"><PRIVATE_KEY>\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">publickey\u003C/code> → to give to the peer\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-start-and-enable-vpn-on-both-machines\">🚀 Start and Enable VPN on Both Machines\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-start-and-enable-vpn-on-both-machines\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🚀 Start and Enable VPN on Both Machines”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>To start the VPN connection:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wg-quick\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">up\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wg0\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo wg-quick up wg0\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>To enable the VPN automatically on boot:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">systemctl\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">enable\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wg-quick@wg0\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo systemctl enable wg-quick@wg0\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-verification\">✅ Verification\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-verification\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “✅ Verification”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Test the VPN connection:\u003C/p>\n\u003Cul>\n\u003Cli>From \u003Cstrong>client\u003C/strong>:\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">ping\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.1\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"ping 10.0.0.1\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003C/li>\n\u003Cli>From \u003Cstrong>server\u003C/strong>:\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">ping\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.2\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"ping 10.0.0.2\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Caside aria-label=\"Caution\" class=\"starlight-aside starlight-aside--caution\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M18.71 7.21a1 1 0 0 0-1.42 0l-7.45 7.46-3.13-3.14A1.02 1.02 0 1 0 5.29 13l3.84 3.84a1.001 1.001 0 0 0 1.42 0l8.16-8.16a1 1 0 0 0 0-1.47Z\">\u003C/path>\u003C/svg>Caution\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cul>\n\u003Cli>After the VPN is up, you can configure services like \u003Cstrong>NFS\u003C/strong> using the \u003Cstrong>10.0.0.0/24 private network\u003C/strong>.\u003C/li>\n\u003Cli>Make sure your firewall allows \u003Ccode dir=\"auto\">UDP 51820\u003C/code>.\u003C/li>\n\u003Cli>Adjust the \u003Ccode dir=\"auto\">AllowedIPs\u003C/code> and network according to your needs.\u003C/li>\n\u003C/ul>\u003C/div>\u003C/aside>",{"headings":252,"localImagePaths":271,"remoteImagePaths":272,"frontmatter":273,"imagePaths":274},[253,256,259,262,265,268],{"depth":71,"slug":254,"text":255},"1️⃣-install-wireguard-on-all-machines","1️⃣ Install WireGuard on all machines",{"depth":71,"slug":257,"text":258},"2️⃣-configure-the-vpn-server-main-machine-xxxx","2️⃣ Configure the VPN Server (Main machine X.X.X.X)",{"depth":71,"slug":260,"text":261},"3️⃣-configure-the-vpn-client-other-machine-xxxx","3️⃣ Configure the VPN Client (Other machine X.X.X.X)",{"depth":71,"slug":263,"text":264},"-generate-keys-on-each-machine","🔑 Generate Keys on Each Machine",{"depth":71,"slug":266,"text":267},"-start-and-enable-vpn-on-both-machines","🚀 Start and Enable VPN on Both Machines",{"depth":71,"slug":269,"text":270},"-verification","✅ Verification",[],[],{"title":242},[],"getting_started/quickstart",{"id":275,"data":277,"body":282,"filePath":283,"digest":284,"deferredRender":22},{"title":278,"editUrl":22,"head":279,"template":50,"sidebar":280,"pagefind":22,"draft":14},"Quick Start",[],{"hidden":14,"attrs":281},{},"import { Tabs, TabItem, Code } from '@astrojs/starlight/components';\nimport compose_ollama_cpu from '/src/assets/compose_ollama_cpu.yaml?raw';\nimport env_ollama_cpu from '/src/assets/env_ollama_cpu.env?raw';\nimport compose_linux_gpu from '/src/assets/compose_linux_gpu.yaml?raw';\nimport env_linux_gpu from '/src/assets/env_linux_gpu.env?raw';\n\nOpenRAG is an open source Retrieval Augmented Generation (RAG) solution. This guide is a step-by-step walkthrough to help you get started with OpenRAG.\n\n- Before proceeding, ensure your hardware meets the [recommended specifications](/minimum-specifications).\n- Install [Docker](https://www.docker.com/get-started).\n\n## Docker\n\nUse the following `docker-compose.yml` file to set up a simple OpenRAG environment:\n\n\u003CTabs>\n \u003CTabItem label=\"Linux\">\n \u003CTabs>\n \u003CTabItem label=\"Nvidia GPU\">\n \u003Cdetails>\n \u003Csummary>Click to expand the docker-compose.yml content\u003C/summary>\n \u003CCode code={compose_linux_gpu} lang=\"yaml\" />\n \u003C/details>\n You will also need to provide some environment variables. Create a `.env` file in the same directory as your `docker-compose.yml` file with the following content:\n \u003Cdetails>\n \u003Csummary>Click to expand the .env content\u003C/summary>\n \u003CCode code={env_linux_gpu} lang=\"bash\" />\n \u003C/details>\n\n \u003C/TabItem>\n \u003CTabItem label=\"CPU\">\n ```yaml\n Nothing here\n ```\n \u003C/TabItem>\n \u003C/Tabs>\n \u003C/TabItem>\n \u003CTabItem label=\"MacOS\">\n The simplest way to run OpenRAG on MacOS is to use the ollama model inference server. For more in-depth deployment options, refer to the [Docker installation guide](/installation/docker).\n \u003Cdetails>\n \u003Csummary>Click to expand the docker-compose.yml content\u003C/summary>\n \u003CCode code={compose_ollama_cpu} lang=\"yaml\" />\n \u003C/details>\n\n You will also need to provide some environment variables. Create a `.env` file in the same directory as your `docker-compose.yml` file with the following content:\n \u003Cdetails>\n \u003Csummary>Click to expand the .env content\u003C/summary>\n \u003CCode code={env_ollama_cpu} lang=\"bash\" /> \n \u003C/details>\n \u003C/TabItem>\n\u003C/Tabs>\n\n## Ansible\n\nClone the OpenRAG repository:\n```bash\ngit clone https://github.com/linagora/openrag.git\ncd openrag\n```\n\nRun the provided deployment script and follow the instructions:\n```bash\n./ansible/deploy.sh\n```","src/content/docs/getting_started/quickstart.mdx","7f0f5c9ea67f6cfb","getting_started/usage",{"id":285,"data":287,"body":292,"filePath":293,"digest":294,"deferredRender":22},{"title":288,"editUrl":22,"head":289,"template":50,"sidebar":290,"pagefind":22,"draft":14},"Usage",[],{"hidden":14,"attrs":291},{},"Once you have installed your OpenRAG instance, you can start using it to upload and query your documents.\n\n## Default ports\n\nBy default, OpenRAG services are exposed on the following ports:\n\n| Service | Port | Description |\n|-------------------|---------------|----------------------------------------------------------------|\n| API Documentation | 8080/docs | Main API for document ingestion and querying |\n| Chainlit UI | 8080/chainlit | User interface for interacting with the RAG system |\n| Ray Dashboard | 8265 | Ray dashboard for monitoring and managing tasks |\n| Indexer UI | 3043 | Main user interface for indexing and viewing indexed documents |\n\nMore information about the different services can be found in their respective documentation pages.","src/content/docs/getting_started/usage.mdx","a9e6b5eb5c8789fb","installation/ansible_setup",{"id":295,"data":297,"body":302,"filePath":303,"digest":304,"deferredRender":22},{"title":298,"editUrl":22,"head":299,"template":50,"sidebar":300,"pagefind":22,"draft":14},"Ansible",[],{"hidden":14,"attrs":301},{},"The Ansible playbooks and scripts provided help automatically set up the OpenRAG environment on one or more servers.\n\nThese scripts are designed for installation on fresh production machines.\n\n### Prerequisites\n\nEnsure the hardware hosting OpenRAG meets the [recommended specifications](/minimum-specifications).\n\n- Ansible installed on your control machine (automatically installed by `deploy.sh` if missing)\n- SSH access to target servers (if deploying remotely)\n- Ubuntu 20.04+ or similar Linux distribution on target servers\n- For remote deployment: `inventory.ini.example` file from the OpenRAG repository\n\n### Local Deployment (Easiest)\n\n```bash\ncd ansible/\n./deploy.sh\n# Choose option 1: \"Deploy to local machine\"\n# Select CPU-only or GPU-enabled deployment when prompted\n```\n\nThe local deployment will:\n- Prompt you to choose between CPU-only or GPU-enabled deployment\n- Handle all necessary configurations and installs automatically\n- Start all services\n\n### Remote Deployment\n\n1. **Create the inventory file (on the control machine):**\n ```bash\n # Rename the example inventory file\n cp inventory.ini.example inventory.ini\n \n # Edit the inventory file\n nano inventory.ini\n ```\n\n2. **Configure your servers:**\n ```ini\n [gpu_servers]\n gpu-server1 ansible_host=192.168.1.100 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa\n gpu-server2 ansible_host=192.168.1.101 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa\n\n [cpu_servers]\n cpu-server1 ansible_host=192.168.1.102 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa\n\n [all:vars]\n ansible_python_interpreter=/usr/bin/python3\n ```\n\n3. **Run the deployment:**\n ```bash\n ./deploy.sh\n # Choose option 2: \"Deploy remotely\"\n ```\n\n## Files Overview\n\n### Playbooks\n\n- **`playbook.yml`** - Main deployment playbook with separate GPU-enabled and CPU-only server configurations\n\n### Inventory Files\n\n- **`inventory.ini.example`** - Example inventory template for remote deployment\n- **`inventory.ini`** - Generated automatically for local deployment or manually created for remote deployment\n\n### Configuration\n\n- **`ansible.cfg`** - Ansible configuration settings\n\n### Scripts\n\n- **`deploy.sh`** - Interactive deployment and management\n\n## Manual Deployment\n\nIf you prefer to run Ansible commands directly:\n\n### Local/Remote Deployment\n```bash\n# Create inventory first\nansible-playbook -i inventory.ini playbook.yml --ask-become-pass\n```\n\n### Check Status\n```bash\nansible all -i inventory.ini -m shell -a \"docker ps\" --become\n```\n\n## Service Management\n\nThe deployment script provides several management options:\n\n### Interactive Mode\n```bash\n./deploy.sh\n```\n\n### Command Line Mode\n```bash\n# Deploy locally\n./deploy.sh deploy-local\n\n# Deploy remotely \n./deploy.sh deploy-remote\n\n# Check status\n./deploy.sh status\n\n# Stop services\n./deploy.sh stop\n\n# Start services\n./deploy.sh start\n\n# View logs\n./deploy.sh logs [service_name]\n\n# Update deployment\n./deploy.sh update\n\n# Complete removal\n./deploy.sh remove-all\n```\n\n## What Gets Installed\n\n### System Packages\n- Docker CE with Compose plugin\n- NVIDIA drivers (if GPU detected and GPU server group is used)\n- NVIDIA Container Toolkit (for GPU servers)\n- Python 3 with pip and uv package manager\n- Essential development tools\n\n### OpenRAG Components\n- Complete OpenRAG codebase from GitHub\n- All required Python dependencies installed via `uv`\n- Docker containers for OpenRAG services with appropriate profiles:\n - GPU servers: Default profile (includes GPU-accelerated services)\n - CPU servers: CPU profile (CPU-only services)\n\n### Directory Structure\n```\n/home/[user]/openrag/\n├── data/ # Document storage\n├── db/ # Database files\n├── logs/ # Application logs\n├── .hydra_config/ # Hydra configuration cache\n├── model_weights/ # Cached model files\n├── vdb/volumes/ # Vector database volumes\n├── .env # Environment configuration\n└── ... # OpenRAG source code\n```\n\n## Configuration\n\n### Environment Variables\n\nThe deployment automatically creates a `.env` file from `.env.example` or copies a local `.env` file if present. Key variables to customize:\n\n```bash\n# LLM Configuration\nBASE_URL=http://your-llm-endpoint\nAPI_KEY=your-api-key\nMODEL=your-model-name\n\n# Application Settings\nAPP_PORT=8080\nRETRIEVER_TOP_K=20\n\n# Embedder Settings\nEMBEDDER_MODEL_NAME=Qwen/Qwen3-Embedding-0.6B\n```\n\n### Version Configuration\n\nThe playbook uses these default versions (configurable via inventory variables):\n\n```yaml\n# Docker and NVIDIA versions\ndocker_compose_version: \"2.21.0\"\nnvidia_driver_version: \"535\"\ndocker_ce_version: \"latest\"\nnvidia_container_toolkit_version: \"1.17.8-1\"\n```\n\n### Inventory Variables\n\nYou can set variables in your inventory file:\n\n```ini\n[gpu_servers:vars]\nnvidia_driver_version=535\nproject_user=ubuntu\nproject_path=/home/ubuntu/openrag\n\n[cpu_servers:vars]\nproject_user=ubuntu\nproject_path=/home/ubuntu/openrag\n\n[all:vars]\nansible_python_interpreter=/usr/bin/python3\n```\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Docker permission denied**\n ```bash\n # Re-login to apply docker group membership\n sudo su - $USER\n ```\n\n2. **NVIDIA driver installation fails**\n ```bash\n # Check GPU compatibility\n lspci | grep -i nvidia\n ```\n\n3. **Services not starting**\n ```bash\n # Check logs\n docker compose logs\n ```\n\n### Manual Recovery\n\nIf something goes wrong, you can manually clean up:\n\n```bash\n# Stop all containers\ndocker compose down\n\n# Remove containers and images\ndocker system prune -a\n\n# Re-run deployment\n./deploy.sh\n```\n\n### Complete System Reset\n\nFor a complete removal of all components (Docker, NVIDIA drivers, OpenRAG):\n\n```bash\n# Use the deployment script's removal option\n./deploy.sh remove-all\n```\n\n**Warning**: This will remove Docker, NVIDIA drivers, and all related components. Use with caution!\n\nFor OpenRAG application issues, refer to the [main project documentation](/documentation/api_documentation).","src/content/docs/installation/ansible_setup.mdx","64f2a20df5132959","installation/docker",{"id":305,"data":307,"body":312,"filePath":313,"digest":314,"deferredRender":22},{"title":308,"editUrl":22,"head":309,"template":50,"sidebar":310,"pagefind":22,"draft":14},"Docker",[],{"hidden":14,"attrs":311},{},"OpenRAG is most comprehensively deployed using Docker.\n\n- Before proceeding, ensure your hardware meets the [recommended specifications](/minimum-specifications).\n- Install [Docker](https://www.docker.com/get-started).\n\nThe OpenRAG docker image is available on [DockerHub](https://hub.docker.com/r/rcordier/openrag) and the [GitHub Container Registry](https://github.com/linagora/openrag/pkgs/container/openrag).\n\n## Docker Compose\n\nOpenRAG requires several services to run, which can be orchestrated using Docker Compose.","src/content/docs/installation/docker.mdx","7ea95b6e50954f61","documentation/deploy_ray_cluster",{"id":315,"data":317,"body":322,"filePath":323,"digest":324,"rendered":325},{"title":318,"editUrl":22,"head":319,"template":50,"sidebar":320,"pagefind":22,"draft":14},"Ray Cluster",[],{"hidden":14,"attrs":321},{},"# ⚡ Distributed Deployment in a Ray Cluster\n\nThis guide explains how to deploy **OpenRAG** across multiple machines using **Ray** for distributed indexing and processing.\n\n---\n\n## ✅ 1. Set Environment Variables\n\nEnsure your `.env` file includes the standard app variables **plus Ray-specific ones** listed below:\n\n```bash \n// .env\n# Ray\n# Resources for all files\nRAY_NUM_GPUS=0.1\nRAY_POOL_SIZE=1\nRAY_MAX_TASKS_PER_WORKER=5\n\n# PDF specific resources when using marker\nMARKER_MAX_TASKS_PER_CHILD=10\nMARKER_MAX_PROCESSES=5 # Number of subprocesses \u003C-> Number of concurrent pdfs per worker\nMARKER_MIN_PROCESSES=3 # Minimum number of subprocesses available before triggering a process pool reset.\nMARKER_POOL_SIZE=1 # Number of workers (typically 1 worker per cluster node)\nMARKER_NUM_GPUS=0.6\n\nSHARED_ENV=/ray_mount/.env\nRAY_DASHBOARD_PORT=8265\nRAY_ADDRESS=ray://X.X.X.X:10001\nHEAD_NODE_IP=X.X.X.X\nRAY_HEAD_ADDRESS=X.X.X.X:6379\n# RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # to enable logs at task level in ray dashboard\nRAY_task_retry_delay_ms=3000\n\n# Ray volumes\nDATA_VOLUME=/ray_mount/data\nMODEL_WEIGHTS_VOLUME=/ray_mount/model_weights\nCONFIG_VOLUME=/ray_mount/.hydra_config\nUV_LINK_MODE=copy\nUV_CACHE_DIR=/tmp/uv-cache \n```\n\n✅ Use host IPs instead of Docker service names :\n\n```diff lang=\"bash\"\n// .env\n- EMBEDDER_BASE_URL=http://vllm:8000/v1\n+ EMBEDDER_BASE_URL=http://\u003CHOST-IP>:8000/v1 # ✅ instead of http://vllm:8000/v1\n\n- VDB_HOST=milvus\n+ VDB_HOST=\u003CHOST-IP> # ✅ instead of VDB_HOST=milvus\n```\n\n:::tip[🧠 **Tips**]\n- `RAY_NUM_GPUS` defines **per-actor resource requirements**. Ray will not start a task until these resources are available on one of the nodes. \nFor example, if one indexation consumes ~1GB of VRAM and your GPU has 4GB, setting `RAY_NUM_GPUS=0.25` allows you to run **4 indexers per node**. In a 2-node cluster, that means up to **8 concurrent indexation tasks**. \n\n- `RAY_POOL_SIZE` defines the number of worker actors that will be created to handle indexation tasks. It acts like a **maximum concurrency limit**. \nUsing the previous example, you can set `POOL_SIZE=8` to fully utilize your cluster capacity.\n:::\n\n:::caution\nIf other GPU-intensive services are running on your nodes (e.g. vLLM, the RAG API), make sure to **reserve enough GPU memory** for them and subtract that from your total when calculating the safe pool size.\n:::\n\n---\n\n## 📁 2. Set Up Shared Storage\n\nAll nodes need to access shared configuration and data folders. \nWe recommend using **GlusterFS** for this.\n\n➡ Follow the [GlusterFS Setup Guide](/documentation/setup_glusterfs/) to configure:\n\n- Shared access to:\n - `.env`\n - `.hydra_config`\n - `/data` (uploaded files)\n - `/model_weights` (embedding model cache)\n\n---\n\n## 🚀 3. Start the Ray Cluster\n\nFirst, prepare your `cluster.yaml` file. Here's an example for a **local provider**:\n\n```yaml\n// cluster.yaml\ncluster_name: rag-cluster\nprovider:\n type: local\n head_ip: 10.0.0.1\n worker_ips: [10.0.0.2] # Static IPs of other nodes (does not auto-start workers)\n\ndocker:\n image: ghcr.io/linagora/openrag-ray\n pull_before_run: true\n container_name: ray_node\n run_options:\n - --gpus all\n - -v /ray_mount/model_weights:/app/model_weights\n - -v /ray_mount/data:/app/data\n - -v /ray_mount/.hydra_config:/app/.hydra_config\n - -v /ray_mount/logs:/app/logs\n - --env-file /ray_mount/.env\n\nauth:\n ssh_user: ubuntu\n ssh_private_key: path/to/private/key # Replace with your actual ssh key path\n\nhead_start_ray_commands:\n - uv run ray stop\n - uv run ray start --head --dashboard-host 0.0.0.0 --dashboard-port ${RAY_DASHBOARD_PORT:-8265} --node-ip-address ${HEAD_NODE_IP} --autoscaling-config=~/ray_bootstrap_config.yaml\nworker_start_ray_commands:\n - uv run ray stop\n - uv run ray start --address ${HEAD_NODE_IP:-10.0.0.1}:6379\n```\n\n> 🛠️ The base image (`ghcr.io/linagora/openrag-ray`) must be built from `Dockerfile.ray` and pushed to a container registry before use.\n\n### ⬆️ Launch the cluster\n\n```bash\nuv run ray up -y cluster.yaml\n```\n\n## 🐳 4. Launch the OpenRAG App\n\nUse the Docker Compose setup:\n\n```bash\ndocker compose up -d\n```\n\nOnce running, **OpenRAG will auto-connect** to the Ray cluster using `RAY_ADDRESS` from `.env`.\n\n---\n\nWith this setup, your app is now fully distributed and ready to handle concurrent tasks across your Ray cluster.\n\n\n## 🛠️ Troubleshooting\n\n### ❌ Permission Denied Errors\n\nIf you encounter errors like `Permission denied` when Ray or Docker tries to access shared folders (SQL database, model files, ...), it's likely due to insufficient permissions on the host system.\n\n👉 To resolve this, you can set full read/write/execute permissions on the shared directory:\n\n```bash\nsudo chmod -R 777 /ray_mount\n```","src/content/docs/documentation/deploy_ray_cluster.md","941894a362fee25d",{"html":326,"metadata":327},"\u003Cdiv class=\"sl-heading-wrapper level-h1\">\u003Ch1 id=\"-distributed-deployment-in-a-ray-cluster\">⚡ Distributed Deployment in a Ray Cluster\u003C/h1>\u003Ca class=\"sl-anchor-link\" href=\"#-distributed-deployment-in-a-ray-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “⚡ Distributed Deployment in a Ray Cluster”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>This guide explains how to deploy \u003Cstrong>OpenRAG\u003C/strong> across multiple machines using \u003Cstrong>Ray\u003C/strong> for distributed indexing and processing.\u003C/p>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-1-set-environment-variables\">✅ 1. Set Environment Variables\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-1-set-environment-variables\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “✅ 1. Set Environment Variables”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Ensure your \u003Ccode dir=\"auto\">.env\u003C/code> file includes the standard app variables \u003Cstrong>plus Ray-specific ones\u003C/strong> listed below:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Ray\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Resources for all files\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_NUM_GPUS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">0.1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_POOL_SIZE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_MAX_TASKS_PER_WORKER\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">5\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># PDF specific resources when using marker\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_MAX_TASKS_PER_CHILD\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">10\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_MAX_PROCESSES\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">5\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Number of subprocesses <-> Number of concurrent pdfs per worker\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_MIN_PROCESSES\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">3\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Minimum number of subprocesses available before triggering a process pool reset.\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_POOL_SIZE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">1\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Number of workers (typically 1 worker per cluster node)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_NUM_GPUS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">0.6\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">SHARED_ENV\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/.env\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_DASHBOARD_PORT\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">8265\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_ADDRESS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ray://X.X.X.X:10001\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">HEAD_NODE_IP\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">X.X.X.X\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_HEAD_ADDRESS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">X.X.X.X:6379\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # to enable logs at task level in ray dashboard\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_task_retry_delay_ms\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">3000\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Ray volumes\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">DATA_VOLUME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/data\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MODEL_WEIGHTS_VOLUME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/model_weights\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CONFIG_VOLUME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/.hydra_config\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">UV_LINK_MODE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">copy\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">UV_CACHE_DIR\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/tmp/uv-cache\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"# Ray# Resources for all filesRAY_NUM_GPUS=0.1RAY_POOL_SIZE=1RAY_MAX_TASKS_PER_WORKER=5# PDF specific resources when using markerMARKER_MAX_TASKS_PER_CHILD=10MARKER_MAX_PROCESSES=5 # Number of subprocesses \u003C-> Number of concurrent pdfs per workerMARKER_MIN_PROCESSES=3 # Minimum number of subprocesses available before triggering a process pool reset.MARKER_POOL_SIZE=1 # Number of workers (typically 1 worker per cluster node)MARKER_NUM_GPUS=0.6SHARED_ENV=/ray_mount/.envRAY_DASHBOARD_PORT=8265RAY_ADDRESS=ray://X.X.X.X:10001HEAD_NODE_IP=X.X.X.XRAY_HEAD_ADDRESS=X.X.X.X:6379# RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # to enable logs at task level in ray dashboardRAY_task_retry_delay_ms=3000# Ray volumesDATA_VOLUME=/ray_mount/dataMODEL_WEIGHTS_VOLUME=/ray_mount/model_weightsCONFIG_VOLUME=/ray_mount/.hydra_configUV_LINK_MODE=copyUV_CACHE_DIR=/tmp/uv-cache\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>✅ Use host IPs instead of Docker service names :\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line highlight del\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2c4984\">EMBEDDER_BASE_URL\u003C/span>\u003Cspan style=\"--0:#d0a3ed;--1:#663383\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2c4984\">http://vllm:8000/v1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line highlight ins\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2d4a87\">EMBEDDER_BASE_URL\u003C/span>\u003Cspan style=\"--0:#d2a6ee;--1:#6a3588\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2d4a87\">http://<HOST-IP>:8000/v1\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#aeb8b8;--1:#494c55\"># ✅ instead of http://vllm:8000/v1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line highlight del\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2c4984\">VDB_HOST\u003C/span>\u003Cspan style=\"--0:#d0a3ed;--1:#663383\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2c4984\">milvus\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line highlight ins\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2d4a87\">VDB_HOST\u003C/span>\u003Cspan style=\"--0:#d2a6ee;--1:#6a3588\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2d4a87\"><HOST-IP>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#aeb8b8;--1:#494c55\"># ✅ instead of VDB_HOST=milvus\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\" EMBEDDER_BASE_URL=http://vllm:8000/v1 EMBEDDER_BASE_URL=http://\u003CHOST-IP>:8000/v1 # ✅ instead of http://vllm:8000/v1 VDB_HOST=milvus VDB_HOST=\u003CHOST-IP> # ✅ instead of VDB_HOST=milvus\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Caside aria-label=\"🧠 Tips\" class=\"starlight-aside starlight-aside--tip\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.43909 8.85483L1.44039 8.85354L4.96668 5.33815C5.30653 4.99386 5.7685 4.79662 6.2524 4.78972L6.26553 4.78963L12.9014 4.78962L13.8479 3.84308C16.9187 0.772319 20.0546 0.770617 21.4678 0.975145C21.8617 1.02914 22.2271 1.21053 22.5083 1.4917C22.7894 1.77284 22.9708 2.13821 23.0248 2.53199C23.2294 3.94517 23.2278 7.08119 20.1569 10.1521L19.2107 11.0983V17.7338L19.2106 17.7469C19.2037 18.2308 19.0067 18.6933 18.6624 19.0331L15.1456 22.5608C14.9095 22.7966 14.6137 22.964 14.29 23.0449C13.9663 23.1259 13.6267 23.1174 13.3074 23.0204C12.9881 22.9235 12.7011 22.7417 12.4771 22.4944C12.2533 22.2473 12.1006 21.9441 12.0355 21.6171L11.1783 17.3417L6.65869 12.822L4.34847 12.3589L2.38351 11.965C2.05664 11.8998 1.75272 11.747 1.50564 11.5232C1.25835 11.2992 1.07653 11.0122 0.979561 10.6929C0.882595 10.3736 0.874125 10.034 0.955057 9.7103C1.03599 9.38659 1.20328 9.09092 1.43909 8.85483ZM6.8186 10.8724L2.94619 10.096L6.32006 6.73268H10.9583L6.8186 10.8724ZM15.2219 5.21703C17.681 2.75787 20.0783 2.75376 21.1124 2.8876C21.2462 3.92172 21.2421 6.31895 18.783 8.77812L12.0728 15.4883L8.51172 11.9272L15.2219 5.21703ZM13.9042 21.0538L13.1279 17.1811L17.2676 13.0414V17.68L13.9042 21.0538Z\">\u003C/path>\u003Cpath d=\"M9.31827 18.3446C9.45046 17.8529 9.17864 17.3369 8.68945 17.1724C8.56178 17.1294 8.43145 17.1145 8.30512 17.1243C8.10513 17.1398 7.91519 17.2172 7.76181 17.3434C7.62613 17.455 7.51905 17.6048 7.45893 17.7835C6.97634 19.2186 5.77062 19.9878 4.52406 20.4029C4.08525 20.549 3.6605 20.644 3.29471 20.7053C3.35607 20.3395 3.45098 19.9148 3.59711 19.476C4.01221 18.2294 4.78141 17.0237 6.21648 16.5411C6.39528 16.481 6.54504 16.3739 6.65665 16.2382C6.85126 16.0016 6.92988 15.678 6.84417 15.3647C6.83922 15.3466 6.83373 15.3286 6.82767 15.3106C6.74106 15.053 6.55701 14.8557 6.33037 14.7459C6.10949 14.6389 5.84816 14.615 5.59715 14.6994C5.47743 14.7397 5.36103 14.7831 5.24786 14.8294C3.22626 15.6569 2.2347 17.4173 1.75357 18.8621C1.49662 19.6337 1.36993 20.3554 1.30679 20.8818C1.27505 21.1464 1.25893 21.3654 1.25072 21.5213C1.24662 21.5993 1.24448 21.6618 1.24337 21.7066L1.243 21.7226L1.24235 21.7605L1.2422 21.7771L1.24217 21.7827L1.24217 21.7856C1.24217 22.3221 1.67703 22.7579 2.2137 22.7579L2.2155 22.7579L2.22337 22.7578L2.23956 22.7577C2.25293 22.7575 2.27096 22.7572 2.29338 22.7567C2.33821 22.7555 2.40073 22.7534 2.47876 22.7493C2.63466 22.7411 2.85361 22.725 3.11822 22.6932C3.64462 22.6301 4.36636 22.5034 5.13797 22.2464C6.58274 21.7653 8.3431 20.7738 9.17063 18.7522C9.21696 18.639 9.26037 18.5226 9.30064 18.4029C9.30716 18.3835 9.31304 18.364 9.31827 18.3446Z\">\u003C/path>\u003C/svg>🧠 \u003Cstrong>Tips\u003C/strong>\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cul>\n\u003Cli>\n\u003Cp>\u003Ccode dir=\"auto\">RAY_NUM_GPUS\u003C/code> defines \u003Cstrong>per-actor resource requirements\u003C/strong>. Ray will not start a task until these resources are available on one of the nodes.\u003Cbr>\nFor example, if one indexation consumes ~1GB of VRAM and your GPU has 4GB, setting \u003Ccode dir=\"auto\">RAY_NUM_GPUS=0.25\u003C/code> allows you to run \u003Cstrong>4 indexers per node\u003C/strong>. In a 2-node cluster, that means up to \u003Cstrong>8 concurrent indexation tasks\u003C/strong>.\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Ccode dir=\"auto\">RAY_POOL_SIZE\u003C/code> defines the number of worker actors that will be created to handle indexation tasks. It acts like a \u003Cstrong>maximum concurrency limit\u003C/strong>.\u003Cbr>\nUsing the previous example, you can set \u003Ccode dir=\"auto\">POOL_SIZE=8\u003C/code> to fully utilize your cluster capacity.\u003C/p>\n\u003C/li>\n\u003C/ul>\u003C/div>\u003C/aside>\n\u003Caside aria-label=\"Caution\" class=\"starlight-aside starlight-aside--caution\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 16C11.8022 16 11.6089 16.0587 11.4444 16.1686C11.28 16.2784 11.1518 16.4346 11.0761 16.6173C11.0004 16.8001 10.9806 17.0011 11.0192 17.1951C11.0578 17.3891 11.153 17.5673 11.2929 17.7071C11.4327 17.847 11.6109 17.9422 11.8049 17.9808C11.9989 18.0194 12.2 17.9996 12.3827 17.9239C12.5654 17.8482 12.7216 17.72 12.8315 17.5556C12.9413 17.3911 13 17.1978 13 17C13 16.7348 12.8946 16.4805 12.7071 16.2929C12.5196 16.1054 12.2652 16 12 16ZM22.67 17.47L14.62 3.47003C14.3598 3.00354 13.9798 2.61498 13.5192 2.3445C13.0586 2.07401 12.5341 1.9314 12 1.9314C11.4659 1.9314 10.9414 2.07401 10.4808 2.3445C10.0202 2.61498 9.64019 3.00354 9.38 3.47003L1.38 17.47C1.11079 17.924 0.966141 18.441 0.960643 18.9688C0.955144 19.4966 1.089 20.0166 1.34868 20.4761C1.60837 20.9356 1.9847 21.3185 2.43968 21.5861C2.89466 21.8536 3.41218 21.9964 3.94 22H20.06C20.5921 22.0053 21.1159 21.8689 21.5779 21.6049C22.0399 21.341 22.4234 20.9589 22.689 20.4978C22.9546 20.0368 23.0928 19.5134 23.0895 18.9814C23.0862 18.4493 22.9414 17.9277 22.67 17.47ZM20.94 19.47C20.8523 19.626 20.7245 19.7556 20.5697 19.8453C20.4149 19.935 20.2389 19.9815 20.06 19.98H3.94C3.76111 19.9815 3.5851 19.935 3.43032 19.8453C3.27553 19.7556 3.14765 19.626 3.06 19.47C2.97223 19.318 2.92602 19.1456 2.92602 18.97C2.92602 18.7945 2.97223 18.622 3.06 18.47L11.06 4.47003C11.1439 4.30623 11.2714 4.16876 11.4284 4.07277C11.5855 3.97678 11.766 3.92599 11.95 3.92599C12.134 3.92599 12.3145 3.97678 12.4716 4.07277C12.6286 4.16876 12.7561 4.30623 12.84 4.47003L20.89 18.47C20.9892 18.6199 21.0462 18.7937 21.055 18.9732C21.0638 19.1527 21.0241 19.3312 20.94 19.49V19.47ZM12 8.00003C11.7348 8.00003 11.4804 8.10538 11.2929 8.29292C11.1054 8.48046 11 8.73481 11 9.00003V13C11 13.2652 11.1054 13.5196 11.2929 13.7071C11.4804 13.8947 11.7348 14 12 14C12.2652 14 12.5196 13.8947 12.7071 13.7071C12.8946 13.5196 13 13.2652 13 13V9.00003C13 8.73481 12.8946 8.48046 12.7071 8.29292C12.5196 8.10538 12.2652 8.00003 12 8.00003Z\">\u003C/path>\u003C/svg>Caution\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>If other GPU-intensive services are running on your nodes (e.g. vLLM, the RAG API), make sure to \u003Cstrong>reserve enough GPU memory\u003C/strong> for them and subtract that from your total when calculating the safe pool size.\u003C/p>\u003C/div>\u003C/aside>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-2-set-up-shared-storage\">📁 2. Set Up Shared Storage\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-2-set-up-shared-storage\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📁 2. Set Up Shared Storage”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>All nodes need to access shared configuration and data folders.\u003Cbr>\nWe recommend using \u003Cstrong>GlusterFS\u003C/strong> for this.\u003C/p>\n\u003Cp>➡ Follow the \u003Ca href=\"/documentation/setup_glusterfs/\">GlusterFS Setup Guide\u003C/a> to configure:\u003C/p>\n\u003Cul>\n\u003Cli>Shared access to:\n\u003Cul>\n\u003Cli>\u003Ccode dir=\"auto\">.env\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">.hydra_config\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">/data\u003C/code> (uploaded files)\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">/model_weights\u003C/code> (embedding model cache)\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-3-start-the-ray-cluster\">🚀 3. Start the Ray Cluster\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-3-start-the-ray-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🚀 3. Start the Ray Cluster”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>First, prepare your \u003Ccode dir=\"auto\">cluster.yaml\u003C/code> file. Here’s an example for a \u003Cstrong>local provider\u003C/strong>:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">cluster.yaml\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"yaml\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">cluster_name\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">rag-cluster\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">provider\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">type\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">local\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">head_ip\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">worker_ips\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: [\u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.2\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">] \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Static IPs of other nodes (does not auto-start workers)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">docker\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">image\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ghcr.io/linagora/openrag-ray\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">pull_before_run\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#FF6A83;--1:#A24848\">true\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">container_name\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ray_node\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">run_options\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">--gpus all\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/model_weights:/app/model_weights\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/data:/app/data\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/.hydra_config:/app/.hydra_config\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/logs:/app/logs\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">--env-file /ray_mount/.env\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">auth\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">ssh_user\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ubuntu\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">ssh_private_key\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">path/to/private/key\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Replace with your actual ssh key path\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">head_start_ray_commands\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray stop\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray start --head --dashboard-host 0.0.0.0 --dashboard-port ${RAY_DASHBOARD_PORT:-8265} --node-ip-address ${HEAD_NODE_IP} --autoscaling-config=~/ray_bootstrap_config.yaml\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">worker_start_ray_commands\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray stop\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray start --address ${HEAD_NODE_IP:-10.0.0.1}:6379\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"cluster_name: rag-clusterprovider: type: local head_ip: 10.0.0.1 worker_ips: [10.0.0.2] # Static IPs of other nodes (does not auto-start workers)docker: image: ghcr.io/linagora/openrag-ray pull_before_run: true container_name: ray_node run_options: - --gpus all - -v /ray_mount/model_weights:/app/model_weights - -v /ray_mount/data:/app/data - -v /ray_mount/.hydra_config:/app/.hydra_config - -v /ray_mount/logs:/app/logs - --env-file /ray_mount/.envauth: ssh_user: ubuntu ssh_private_key: path/to/private/key # Replace with your actual ssh key pathhead_start_ray_commands: - uv run ray stop - uv run ray start --head --dashboard-host 0.0.0.0 --dashboard-port ${RAY_DASHBOARD_PORT:-8265} --node-ip-address ${HEAD_NODE_IP} --autoscaling-config=~/ray_bootstrap_config.yamlworker_start_ray_commands: - uv run ray stop - uv run ray start --address ${HEAD_NODE_IP:-10.0.0.1}:6379\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cblockquote>\n\u003Cp>🛠️ The base image (\u003Ccode dir=\"auto\">ghcr.io/linagora/openrag-ray\u003C/code>) must be built from \u003Ccode dir=\"auto\">Dockerfile.ray\u003C/code> and pushed to a container registry before use.\u003C/p>\n\u003C/blockquote>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"️-launch-the-cluster\">⬆️ Launch the cluster\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#️-launch-the-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “⬆️ Launch the cluster”\u003C/span>\u003C/a>\u003C/div>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">uv\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">run\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ray\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">up\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">cluster.yaml\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"uv run ray up -y cluster.yaml\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-4-launch-the-openrag-app\">🐳 4. Launch the OpenRAG App\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-4-launch-the-openrag-app\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🐳 4. Launch the OpenRAG App”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Use the Docker Compose setup:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">docker\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">compose\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">up\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-d\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"docker compose up -d\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Once running, \u003Cstrong>OpenRAG will auto-connect\u003C/strong> to the Ray cluster using \u003Ccode dir=\"auto\">RAY_ADDRESS\u003C/code> from \u003Ccode dir=\"auto\">.env\u003C/code>.\u003C/p>\n\u003Chr>\n\u003Cp>With this setup, your app is now fully distributed and ready to handle concurrent tasks across your Ray cluster.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"️-troubleshooting\">🛠️ Troubleshooting\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#️-troubleshooting\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🛠️ Troubleshooting”\u003C/span>\u003C/a>\u003C/div>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-permission-denied-errors\">❌ Permission Denied Errors\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-permission-denied-errors\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “❌ Permission Denied Errors”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>If you encounter errors like \u003Ccode dir=\"auto\">Permission denied\u003C/code> when Ray or Docker tries to access shared folders (SQL database, model files, …), it’s likely due to insufficient permissions on the host system.\u003C/p>\n\u003Cp>👉 To resolve this, you can set full read/write/execute permissions on the shared directory:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">chmod\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-R\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">777\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo chmod -R 777 /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>",{"headings":328,"localImagePaths":353,"remoteImagePaths":354,"frontmatter":355,"imagePaths":356},[329,332,335,338,341,344,347,350],{"depth":181,"slug":330,"text":331},"-distributed-deployment-in-a-ray-cluster","⚡ Distributed Deployment in a Ray Cluster",{"depth":71,"slug":333,"text":334},"-1-set-environment-variables","✅ 1. Set Environment Variables",{"depth":71,"slug":336,"text":337},"-2-set-up-shared-storage","📁 2. Set Up Shared Storage",{"depth":71,"slug":339,"text":340},"-3-start-the-ray-cluster","🚀 3. Start the Ray Cluster",{"depth":117,"slug":342,"text":343},"️-launch-the-cluster","⬆️ Launch the cluster",{"depth":71,"slug":345,"text":346},"-4-launch-the-openrag-app","🐳 4. Launch the OpenRAG App",{"depth":71,"slug":348,"text":349},"️-troubleshooting","🛠️ Troubleshooting",{"depth":117,"slug":351,"text":352},"-permission-denied-errors","❌ Permission Denied Errors",[],[],{"title":318},[],"documentation/setup_chainlit_ui_auth",{"id":357,"data":359,"body":364,"filePath":365,"digest":366,"rendered":367},{"title":360,"editUrl":22,"head":361,"template":50,"sidebar":362,"pagefind":22,"draft":14},"Chainlit Authentification",[],{"hidden":14,"attrs":363},{},"To configure password-based authentication for your Chainlit UI, add the following environment variables to your `.env` file:\n## Step 1: Set up the authentication secret\n\nFirst, define a **`CHAINLIT_AUTH_SECRET`** environment variable. You can generate one automatically using the command `chainlit create-secret` (or `uv run chainlit create-secret` if using uv). Alternatively, you can provide your own **custom value**.\n\nFor detailed information about this variable, see the [Chainlit authentication documentation](https://docs.chainlit.io/authentication/overview).\n\n## Step 2: Configure username and password\n\nFor password-based authentication (see [Chainlit password authentication docs](https://docs.chainlit.io/authentication/password)), add your desired username and password to the `.env` file:\n\n```bash\n// .env\nCHAINLIT_AUTH_SECRET=...\nCHAINLIT_USERNAME=OpenRAG\nCHAINLIT_PASSWORD=OpenRAG2025\n```\n\nThis configuration will enable secure access to your Chainlit application using the specified credentials.","src/content/docs/documentation/setup_chainlit_ui_auth.md","1462d16f7e5c096c",{"html":368,"metadata":369},"\u003Cp>To configure password-based authentication for your Chainlit UI, add the following environment variables to your \u003Ccode dir=\"auto\">.env\u003C/code> file:\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"step-1-set-up-the-authentication-secret\">Step 1: Set up the authentication secret\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#step-1-set-up-the-authentication-secret\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 1: Set up the authentication secret”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>First, define a \u003Cstrong>\u003Ccode dir=\"auto\">CHAINLIT_AUTH_SECRET\u003C/code>\u003C/strong> environment variable. You can generate one automatically using the command \u003Ccode dir=\"auto\">chainlit create-secret\u003C/code> (or \u003Ccode dir=\"auto\">uv run chainlit create-secret\u003C/code> if using uv). Alternatively, you can provide your own \u003Cstrong>custom value\u003C/strong>.\u003C/p>\n\u003Cp>For detailed information about this variable, see the \u003Ca href=\"https://docs.chainlit.io/authentication/overview\">Chainlit authentication documentation\u003C/a>.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"step-2-configure-username-and-password\">Step 2: Configure username and password\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#step-2-configure-username-and-password\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 2: Configure username and password”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>For password-based authentication (see \u003Ca href=\"https://docs.chainlit.io/authentication/password\">Chainlit password authentication docs\u003C/a>), add your desired username and password to the \u003Ccode dir=\"auto\">.env\u003C/code> file:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_AUTH_SECRET\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">...\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_USERNAME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">OpenRAG\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_PASSWORD\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">OpenRAG2025\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"CHAINLIT_AUTH_SECRET=...CHAINLIT_USERNAME=OpenRAGCHAINLIT_PASSWORD=OpenRAG2025\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>This configuration will enable secure access to your Chainlit application using the specified credentials.\u003C/p>",{"headings":370,"localImagePaths":377,"remoteImagePaths":378,"frontmatter":379,"imagePaths":380},[371,374],{"depth":71,"slug":372,"text":373},"step-1-set-up-the-authentication-secret","Step 1: Set up the authentication secret",{"depth":71,"slug":375,"text":376},"step-2-configure-username-and-password","Step 2: Configure username and password",[],[],{"title":360},[]] \ No newline at end of file +[["Map",1,2,9,10],"meta::meta",["Map",3,4,5,6,7,8],"astro-version","5.13.3","content-config-digest","9a95ec2e8398aaca","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"where\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[],\"responsiveStyles\":false},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":false,\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[null,null,null],\"rehypePlugins\":[null,[null,{\"experimentalHeadingIdCompat\":false}],null,[null,{\"themes\":[{\"name\":\"Night Owl No Italics\",\"type\":\"dark\",\"colors\":{\"focusBorder\":\"#122d42\",\"foreground\":\"#d6deeb\",\"disabledForeground\":\"#cccccc80\",\"descriptionForeground\":\"#d6deebb3\",\"errorForeground\":\"#ef5350\",\"icon.foreground\":\"#c5c5c5\",\"contrastActiveBorder\":null,\"contrastBorder\":\"#122d42\",\"textBlockQuote.background\":\"#7f7f7f1a\",\"textBlockQuote.border\":\"#007acc80\",\"textCodeBlock.background\":\"#4f4f4f\",\"textLink.activeForeground\":\"#3794ff\",\"textLink.foreground\":\"#3794ff\",\"textPreformat.foreground\":\"#d7ba7d\",\"textSeparator.foreground\":\"#ffffff2e\",\"editor.background\":\"#23262f\",\"editor.foreground\":\"#d6deeb\",\"editorLineNumber.foreground\":\"#4b6479\",\"editorLineNumber.activeForeground\":\"#c5e4fd\",\"editorActiveLineNumber.foreground\":\"#c6c6c6\",\"editor.selectionBackground\":\"#1d3b53\",\"editor.inactiveSelectionBackground\":\"#7e57c25a\",\"editor.selectionHighlightBackground\":\"#5f7e9779\",\"editorError.foreground\":\"#ef5350\",\"editorWarning.foreground\":\"#b39554\",\"editorInfo.foreground\":\"#3794ff\",\"editorHint.foreground\":\"#eeeeeeb2\",\"problemsErrorIcon.foreground\":\"#ef5350\",\"problemsWarningIcon.foreground\":\"#b39554\",\"problemsInfoIcon.foreground\":\"#3794ff\",\"editor.findMatchBackground\":\"#5f7e9779\",\"editor.findMatchHighlightBackground\":\"#1085bb5d\",\"editor.findRangeHighlightBackground\":\"#3a3d4166\",\"editorLink.activeForeground\":\"#4e94ce\",\"editorLightBulb.foreground\":\"#ffcc00\",\"editorLightBulbAutoFix.foreground\":\"#75beff\",\"diffEditor.insertedTextBackground\":\"#99b76d23\",\"diffEditor.insertedTextBorder\":\"#c5e47833\",\"diffEditor.removedTextBackground\":\"#ef535033\",\"diffEditor.removedTextBorder\":\"#ef53504d\",\"diffEditor.insertedLineBackground\":\"#9bb95533\",\"diffEditor.removedLineBackground\":\"#ff000033\",\"editorStickyScroll.background\":\"#011627\",\"editorStickyScrollHover.background\":\"#2a2d2e\",\"editorInlayHint.background\":\"#5f7e97cc\",\"editorInlayHint.foreground\":\"#ffffff\",\"editorInlayHint.typeBackground\":\"#5f7e97cc\",\"editorInlayHint.typeForeground\":\"#ffffff\",\"editorInlayHint.parameterBackground\":\"#5f7e97cc\",\"editorInlayHint.parameterForeground\":\"#ffffff\",\"editorPane.background\":\"#011627\",\"editorGroup.emptyBackground\":\"#011627\",\"editorGroup.focusedEmptyBorder\":null,\"editorGroupHeader.tabsBackground\":\"var(--sl-color-black)\",\"editorGroupHeader.tabsBorder\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"editorGroupHeader.noTabsBackground\":\"#011627\",\"editorGroupHeader.border\":null,\"editorGroup.border\":\"#011627\",\"editorGroup.dropBackground\":\"#7e57c273\",\"editorGroup.dropIntoPromptForeground\":\"#d6deeb\",\"editorGroup.dropIntoPromptBackground\":\"#021320\",\"editorGroup.dropIntoPromptBorder\":null,\"sideBySideEditor.horizontalBorder\":\"#011627\",\"sideBySideEditor.verticalBorder\":\"#011627\",\"scrollbar.shadow\":\"#010b14\",\"scrollbarSlider.background\":\"#ffffff17\",\"scrollbarSlider.hoverBackground\":\"#ffffff40\",\"scrollbarSlider.activeBackground\":\"#084d8180\",\"panel.background\":\"#011627\",\"panel.border\":\"#5f7e97\",\"panelTitle.activeBorder\":\"#5f7e97\",\"panelTitle.activeForeground\":\"#ffffffcc\",\"panelTitle.inactiveForeground\":\"#d6deeb80\",\"panelSectionHeader.background\":\"#80808051\",\"terminal.background\":\"#011627\",\"widget.shadow\":\"#011627\",\"editorWidget.background\":\"#021320\",\"editorWidget.foreground\":\"#d6deeb\",\"editorWidget.border\":\"#5f7e97\",\"quickInput.background\":\"#021320\",\"quickInput.foreground\":\"#d6deeb\",\"quickInputTitle.background\":\"#ffffff1a\",\"pickerGroup.foreground\":\"#d1aaff\",\"pickerGroup.border\":\"#011627\",\"editor.hoverHighlightBackground\":\"#7e57c25a\",\"editorHoverWidget.background\":\"#011627\",\"editorHoverWidget.foreground\":\"#d6deeb\",\"editorHoverWidget.border\":\"#5f7e97\",\"editorHoverWidget.statusBarBackground\":\"#011a2f\",\"titleBar.activeBackground\":\"var(--sl-color-black)\",\"titleBar.activeForeground\":\"var(--sl-color-text)\",\"titleBar.inactiveBackground\":\"#010e1a\",\"titleBar.inactiveForeground\":\"#eeefff99\",\"titleBar.border\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"toolbar.hoverBackground\":\"#5a5d5e50\",\"toolbar.activeBackground\":\"#63666750\",\"tab.activeBackground\":\"#0b2942\",\"tab.unfocusedActiveBackground\":\"#0b2942\",\"tab.inactiveBackground\":\"#01111d\",\"tab.unfocusedInactiveBackground\":\"#01111d\",\"tab.activeForeground\":\"var(--sl-color-text)\",\"tab.inactiveForeground\":\"#5f7e97\",\"tab.unfocusedActiveForeground\":\"#5f7e97\",\"tab.unfocusedInactiveForeground\":\"#5f7e97\",\"tab.hoverBackground\":null,\"tab.unfocusedHoverBackground\":null,\"tab.hoverForeground\":null,\"tab.unfocusedHoverForeground\":null,\"tab.border\":\"#272b3b\",\"tab.lastPinnedBorder\":\"#585858\",\"tab.activeBorder\":\"transparent\",\"tab.unfocusedActiveBorder\":\"#262a39\",\"tab.activeBorderTop\":\"var(--sl-color-accent-high)\",\"tab.unfocusedActiveBorderTop\":null,\"tab.hoverBorder\":null,\"tab.unfocusedHoverBorder\":null,\"tab.activeModifiedBorder\":\"#3399cc\",\"tab.inactiveModifiedBorder\":\"#3399cc80\",\"tab.unfocusedActiveModifiedBorder\":\"#3399cc80\",\"tab.unfocusedInactiveModifiedBorder\":\"#3399cc40\",\"badge.background\":\"#5f7e97\",\"badge.foreground\":\"#ffffff\",\"button.background\":\"#7e57c2cc\",\"button.foreground\":\"#ffffffcc\",\"button.border\":\"#122d42\",\"button.separator\":\"#ffffff52\",\"button.hoverBackground\":\"#7e57c2\",\"button.secondaryBackground\":\"#3a3d41\",\"button.secondaryForeground\":\"#ffffff\",\"button.secondaryHoverBackground\":\"#46494e\",\"dropdown.background\":\"#011627\",\"dropdown.foreground\":\"#ffffffcc\",\"dropdown.border\":\"#5f7e97\",\"list.activeSelectionBackground\":\"#234d708c\",\"list.activeSelectionForeground\":\"#ffffff\",\"tree.indentGuidesStroke\":\"#585858\",\"input.background\":\"#0b253a\",\"input.foreground\":\"#ffffffcc\",\"input.placeholderForeground\":\"#5f7e97\",\"inputOption.activeBorder\":\"#ffffffcc\",\"inputOption.hoverBackground\":\"#5a5d5e80\",\"inputOption.activeBackground\":\"#122d4266\",\"inputOption.activeForeground\":\"#ffffff\",\"inputValidation.infoBackground\":\"#00589ef2\",\"inputValidation.infoBorder\":\"#64b5f6\",\"inputValidation.warningBackground\":\"#675700f2\",\"inputValidation.warningBorder\":\"#ffca28\",\"inputValidation.errorBackground\":\"#ab0300f2\",\"inputValidation.errorBorder\":\"#ef5350\",\"keybindingLabel.background\":\"#8080802b\",\"keybindingLabel.foreground\":\"#cccccc\",\"keybindingLabel.border\":\"#33333399\",\"keybindingLabel.bottomBorder\":\"#44444499\",\"menu.foreground\":\"#ffffffcc\",\"menu.background\":\"#011627\",\"menu.selectionForeground\":\"#ffffff\",\"menu.selectionBackground\":\"#234d708c\",\"menu.separatorBackground\":\"#606060\",\"editor.snippetTabstopHighlightBackground\":\"#7c7c74c\",\"editor.snippetFinalTabstopHighlightBorder\":\"#525252\",\"terminal.ansiBlack\":\"#011627\",\"terminal.ansiRed\":\"#ef5350\",\"terminal.ansiGreen\":\"#22da6e\",\"terminal.ansiYellow\":\"#c5e478\",\"terminal.ansiBlue\":\"#82aaff\",\"terminal.ansiMagenta\":\"#c792ea\",\"terminal.ansiCyan\":\"#21c7a8\",\"terminal.ansiWhite\":\"#ffffff\",\"terminal.ansiBrightBlack\":\"#575656\",\"terminal.ansiBrightRed\":\"#ef5350\",\"terminal.ansiBrightGreen\":\"#22da6e\",\"terminal.ansiBrightYellow\":\"#ffeb95\",\"terminal.ansiBrightBlue\":\"#82aaff\",\"terminal.ansiBrightMagenta\":\"#c792ea\",\"terminal.ansiBrightCyan\":\"#7fdbca\",\"terminal.ansiBrightWhite\":\"#ffffff\",\"selection.background\":\"#4373c2\",\"input.border\":\"#5f7e97\",\"punctuation.definition.generic.begin.html\":\"#ef5350f2\",\"progress.background\":\"#7e57c2\",\"breadcrumb.foreground\":\"#a599e9\",\"breadcrumb.focusForeground\":\"#ffffff\",\"breadcrumb.activeSelectionForeground\":\"#ffffff\",\"breadcrumbPicker.background\":\"#001122\",\"list.invalidItemForeground\":\"#975f94\",\"list.dropBackground\":\"#011627\",\"list.focusBackground\":\"#010d18\",\"list.focusForeground\":\"#ffffff\",\"list.highlightForeground\":\"#ffffff\",\"list.hoverBackground\":\"#011627\",\"list.hoverForeground\":\"#ffffff\",\"list.inactiveSelectionBackground\":\"#0e293f\",\"list.inactiveSelectionForeground\":\"#5f7e97\",\"activityBar.background\":\"#011627\",\"activityBar.dropBackground\":\"#5f7e97\",\"activityBar.foreground\":\"#5f7e97\",\"activityBar.border\":\"#011627\",\"activityBarBadge.background\":\"#44596b\",\"activityBarBadge.foreground\":\"#ffffff\",\"sideBar.background\":\"#011627\",\"sideBar.foreground\":\"#89a4bb\",\"sideBar.border\":\"#011627\",\"sideBarTitle.foreground\":\"#5f7e97\",\"sideBarSectionHeader.background\":\"#011627\",\"sideBarSectionHeader.foreground\":\"#5f7e97\",\"editorCursor.foreground\":\"#80a4c2\",\"editor.wordHighlightBackground\":\"#f6bbe533\",\"editor.wordHighlightStrongBackground\":\"#e2a2f433\",\"editor.lineHighlightBackground\":\"#0003\",\"editor.rangeHighlightBackground\":\"#7e57c25a\",\"editorIndentGuide.background\":\"#5e81ce52\",\"editorIndentGuide.activeBackground\":\"#7e97ac\",\"editorRuler.foreground\":\"#5e81ce52\",\"editorCodeLens.foreground\":\"#5e82ceb4\",\"editorBracketMatch.background\":\"#5f7e974d\",\"editorOverviewRuler.currentContentForeground\":\"#7e57c2\",\"editorOverviewRuler.incomingContentForeground\":\"#7e57c2\",\"editorOverviewRuler.commonContentForeground\":\"#7e57c2\",\"editorGutter.background\":\"#011627\",\"editorGutter.modifiedBackground\":\"#e2b93d\",\"editorGutter.addedBackground\":\"#9ccc65\",\"editorGutter.deletedBackground\":\"#ef5350\",\"editorSuggestWidget.background\":\"#2c3043\",\"editorSuggestWidget.border\":\"#2b2f40\",\"editorSuggestWidget.foreground\":\"#d6deeb\",\"editorSuggestWidget.highlightForeground\":\"#ffffff\",\"editorSuggestWidget.selectedBackground\":\"#5f7e97\",\"debugExceptionWidget.background\":\"#011627\",\"debugExceptionWidget.border\":\"#5f7e97\",\"editorMarkerNavigation.background\":\"#0b2942\",\"editorMarkerNavigationError.background\":\"#ef5350\",\"editorMarkerNavigationWarning.background\":\"#ffca28\",\"peekView.border\":\"#5f7e97\",\"peekViewEditor.background\":\"#011627\",\"peekViewEditor.matchHighlightBackground\":\"#7e57c25a\",\"peekViewResult.background\":\"#011627\",\"peekViewResult.fileForeground\":\"#5f7e97\",\"peekViewResult.lineForeground\":\"#5f7e97\",\"peekViewResult.matchHighlightBackground\":\"#ffffffcc\",\"peekViewResult.selectionBackground\":\"#2e3250\",\"peekViewResult.selectionForeground\":\"#5f7e97\",\"peekViewTitle.background\":\"#011627\",\"peekViewTitleDescription.foreground\":\"#697098\",\"peekViewTitleLabel.foreground\":\"#5f7e97\",\"merge.currentHeaderBackground\":\"#5f7e97\",\"merge.incomingHeaderBackground\":\"#7e57c25a\",\"statusBar.background\":\"#011627\",\"statusBar.foreground\":\"#5f7e97\",\"statusBar.border\":\"#262a39\",\"statusBar.debuggingBackground\":\"#202431\",\"statusBar.debuggingBorder\":\"#1f2330\",\"statusBar.noFolderBackground\":\"#011627\",\"statusBar.noFolderBorder\":\"#25293a\",\"statusBarItem.activeBackground\":\"#202431\",\"statusBarItem.hoverBackground\":\"#202431\",\"statusBarItem.prominentBackground\":\"#202431\",\"statusBarItem.prominentHoverBackground\":\"#202431\",\"notifications.background\":\"#01111d\",\"notifications.border\":\"#262a39\",\"notificationCenter.border\":\"#262a39\",\"notificationToast.border\":\"#262a39\",\"notifications.foreground\":\"#ffffffcc\",\"notificationLink.foreground\":\"#80cbc4\",\"extensionButton.prominentForeground\":\"#ffffffcc\",\"extensionButton.prominentBackground\":\"#7e57c2cc\",\"extensionButton.prominentHoverBackground\":\"#7e57c2\",\"terminal.selectionBackground\":\"#1b90dd4d\",\"terminalCursor.background\":\"#234d70\",\"debugToolBar.background\":\"#011627\",\"welcomePage.buttonBackground\":\"#011627\",\"welcomePage.buttonHoverBackground\":\"#011627\",\"walkThrough.embeddedEditorBackground\":\"#011627\",\"gitDecoration.modifiedResourceForeground\":\"#a2bffc\",\"gitDecoration.deletedResourceForeground\":\"#ef535090\",\"gitDecoration.untrackedResourceForeground\":\"#c5e478ff\",\"gitDecoration.ignoredResourceForeground\":\"#395a75\",\"gitDecoration.conflictingResourceForeground\":\"#ffeb95cc\",\"source.elm\":\"#5f7e97\",\"string.quoted.single.js\":\"#ffffff\",\"meta.objectliteral.js\":\"#82aaff\"},\"fg\":\"#d6deeb\",\"bg\":\"#23262f\",\"semanticHighlighting\":false,\"settings\":[{\"name\":\"Changed\",\"scope\":[\"markup.changed\",\"meta.diff.header.git\",\"meta.diff.header.from-file\",\"meta.diff.header.to-file\"],\"settings\":{\"foreground\":\"#a2bffc\"}},{\"name\":\"Deleted\",\"scope\":[\"markup.deleted.diff\"],\"settings\":{\"foreground\":\"#f27775fe\"}},{\"name\":\"Inserted\",\"scope\":[\"markup.inserted.diff\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Global settings\",\"settings\":{\"background\":\"#011627\",\"foreground\":\"#d6deeb\"}},{\"name\":\"Comment\",\"scope\":[\"comment\"],\"settings\":{\"foreground\":\"#919f9f\",\"fontStyle\":\"\"}},{\"name\":\"String\",\"scope\":[\"string\"],\"settings\":{\"foreground\":\"#ecc48d\"}},{\"name\":\"String Quoted\",\"scope\":[\"string.quoted\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#ecc48d\"}},{\"name\":\"Support Constant Math\",\"scope\":[\"support.constant.math\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Number\",\"scope\":[\"constant.numeric\",\"constant.character.numeric\"],\"settings\":{\"foreground\":\"#f78c6c\",\"fontStyle\":\"\"}},{\"name\":\"Built-in constant\",\"scope\":[\"constant.language\",\"punctuation.definition.constant\",\"variable.other.constant\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"User-defined constant\",\"scope\":[\"constant.character\",\"constant.other\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Constant Character Escape\",\"scope\":[\"constant.character.escape\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"RegExp String\",\"scope\":[\"string.regexp\",\"string.regexp keyword.other\"],\"settings\":{\"foreground\":\"#5ca7e4\"}},{\"name\":\"Comma in functions\",\"scope\":[\"meta.function punctuation.separator.comma\"],\"settings\":{\"foreground\":\"#889fb2\"}},{\"name\":\"Variable\",\"scope\":[\"variable\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Keyword\",\"scope\":[\"punctuation.accessor\",\"keyword\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Storage\",\"scope\":[\"storage\",\"meta.var.expr\",\"meta.class meta.method.declaration meta.var.expr storage.type.js\",\"storage.type.property.js\",\"storage.type.property.ts\",\"storage.type.property.tsx\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type.function.arrow.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Class name\",\"scope\":[\"entity.name.class\",\"meta.class entity.name.type.class\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Inherited class\",\"scope\":[\"entity.other.inherited-class\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Function name\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Meta Tag\",\"scope\":[\"punctuation.definition.tag\",\"meta.tag\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"HTML Tag names\",\"scope\":[\"entity.name.tag\",\"meta.tag.other.html\",\"meta.tag.other.js\",\"meta.tag.other.tsx\",\"entity.name.tag.tsx\",\"entity.name.tag.js\",\"entity.name.tag\",\"meta.tag.js\",\"meta.tag.tsx\",\"meta.tag.html\"],\"settings\":{\"foreground\":\"#caece6\",\"fontStyle\":\"\"}},{\"name\":\"Tag attribute\",\"scope\":[\"entity.other.attribute-name\"],\"settings\":{\"fontStyle\":\"\",\"foreground\":\"#c5e478\"}},{\"name\":\"Entity Name Tag Custom\",\"scope\":[\"entity.name.tag.custom\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Library (function & constant)\",\"scope\":[\"support.function\",\"support.constant\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Support Constant Property Value meta\",\"scope\":[\"support.constant.meta.property-value\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Library class/type\",\"scope\":[\"support.type\",\"support.class\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Support Variable DOM\",\"scope\":[\"support.variable.dom\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Invalid\",\"scope\":[\"invalid\"],\"settings\":{\"background\":\"#ff2c83\",\"foreground\":\"#ffffff\"}},{\"name\":\"Invalid deprecated\",\"scope\":[\"invalid.deprecated\"],\"settings\":{\"foreground\":\"#ffffff\",\"background\":\"#d3423e\"}},{\"name\":\"Keyword Operator\",\"scope\":[\"keyword.operator\"],\"settings\":{\"foreground\":\"#7fdbca\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Relational\",\"scope\":[\"keyword.operator.relational\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Assignment\",\"scope\":[\"keyword.operator.assignment\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Arithmetic\",\"scope\":[\"keyword.operator.arithmetic\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Bitwise\",\"scope\":[\"keyword.operator.bitwise\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Increment\",\"scope\":[\"keyword.operator.increment\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Ternary\",\"scope\":[\"keyword.operator.ternary\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Double-Slashed Comment\",\"scope\":[\"comment.line.double-slash\"],\"settings\":{\"foreground\":\"#919f9f\"}},{\"name\":\"Object\",\"scope\":[\"object\"],\"settings\":{\"foreground\":\"#cdebf7\"}},{\"name\":\"Null\",\"scope\":[\"constant.language.null\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Meta Brace\",\"scope\":[\"meta.brace\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Meta Delimiter Period\",\"scope\":[\"meta.delimiter.period\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Punctuation Definition String\",\"scope\":[\"punctuation.definition.string\"],\"settings\":{\"foreground\":\"#d9f5dd\"}},{\"name\":\"Punctuation Definition String Markdown\",\"scope\":[\"punctuation.definition.string.begin.markdown\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Boolean\",\"scope\":[\"constant.language.boolean\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Object Comma\",\"scope\":[\"object.comma\"],\"settings\":{\"foreground\":\"#ffffff\"}},{\"name\":\"Variable Parameter Function\",\"scope\":[\"variable.parameter.function\"],\"settings\":{\"foreground\":\"#7fdbca\",\"fontStyle\":\"\"}},{\"name\":\"Support Type Property Name & entity name tags\",\"scope\":[\"support.type.vendor.property-name\",\"support.constant.vendor.property-value\",\"support.type.property-name\",\"meta.property-list entity.name.tag\"],\"settings\":{\"foreground\":\"#80cbc4\",\"fontStyle\":\"\"}},{\"name\":\"Entity Name tag reference in stylesheets\",\"scope\":[\"meta.property-list entity.name.tag.reference\"],\"settings\":{\"foreground\":\"#57eaf1\"}},{\"name\":\"Constant Other Color RGB Value Punctuation Definition Constant\",\"scope\":[\"constant.other.color.rgb-value punctuation.definition.constant\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Constant Other Color\",\"scope\":[\"constant.other.color\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Keyword Other Unit\",\"scope\":[\"keyword.other.unit\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Meta Selector\",\"scope\":[\"meta.selector\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Entity Other Attribute Name Id\",\"scope\":[\"entity.other.attribute-name.id\"],\"settings\":{\"foreground\":\"#fad430\"}},{\"name\":\"Meta Property Name\",\"scope\":[\"meta.property-name\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"Doctypes\",\"scope\":[\"entity.name.tag.doctype\",\"meta.tag.sgml.doctype\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Punctuation Definition Parameters\",\"scope\":[\"punctuation.definition.parameters\"],\"settings\":{\"foreground\":\"#d9f5dd\"}},{\"name\":\"Keyword Control Operator\",\"scope\":[\"keyword.control.operator\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Keyword Operator Logical\",\"scope\":[\"keyword.operator.logical\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Variable Instances\",\"scope\":[\"variable.instance\",\"variable.other.instance\",\"variable.readwrite.instance\",\"variable.other.readwrite.instance\",\"variable.other.property\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Variable Property Other object property\",\"scope\":[\"variable.other.object.property\"],\"settings\":{\"foreground\":\"#faf39f\",\"fontStyle\":\"\"}},{\"name\":\"Variable Property Other object\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Entity Name Function\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#82aaff\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Comparison, returns, imports, and Keyword Operator Ruby\",\"scope\":[\"keyword.control.conditional.js\",\"keyword.operator.comparison\",\"keyword.control.flow.js\",\"keyword.control.flow.ts\",\"keyword.control.flow.tsx\",\"keyword.control.ruby\",\"keyword.control.def.ruby\",\"keyword.control.loop.js\",\"keyword.control.loop.ts\",\"keyword.control.import.js\",\"keyword.control.import.ts\",\"keyword.control.import.tsx\",\"keyword.control.from.js\",\"keyword.control.from.ts\",\"keyword.control.from.tsx\",\"keyword.control.conditional.js\",\"keyword.control.conditional.ts\",\"keyword.control.switch.js\",\"keyword.control.switch.ts\",\"keyword.operator.instanceof.js\",\"keyword.operator.expression.instanceof.ts\",\"keyword.operator.expression.instanceof.tsx\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Support Constant, `new` keyword, Special Method Keyword, `debugger`, other keywords\",\"scope\":[\"support.constant\",\"keyword.other.special-method\",\"keyword.other.new\",\"keyword.other.debugger\",\"keyword.control\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Support Function\",\"scope\":[\"support.function\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Invalid Broken\",\"scope\":[\"invalid.broken\"],\"settings\":{\"foreground\":\"#989da0\",\"background\":\"#F78C6C\"}},{\"name\":\"Invalid Unimplemented\",\"scope\":[\"invalid.unimplemented\"],\"settings\":{\"background\":\"#8BD649\",\"foreground\":\"#ffffff\"}},{\"name\":\"Invalid Illegal\",\"scope\":[\"invalid.illegal\"],\"settings\":{\"foreground\":\"#ffffff\",\"background\":\"#ec5f67\"}},{\"name\":\"Language Variable\",\"scope\":[\"variable.language\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Support Variable Property\",\"scope\":[\"support.variable.property\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Variable Function\",\"scope\":[\"variable.function\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Variable Interpolation\",\"scope\":[\"variable.interpolation\"],\"settings\":{\"foreground\":\"#ef787f\"}},{\"name\":\"Meta Function Call\",\"scope\":[\"meta.function-call\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Punctuation Section Embedded\",\"scope\":[\"punctuation.section.embedded\"],\"settings\":{\"foreground\":\"#e2817f\"}},{\"name\":\"Punctuation Tweaks\",\"scope\":[\"punctuation.terminator.expression\",\"punctuation.definition.arguments\",\"punctuation.definition.array\",\"punctuation.section.array\",\"meta.array\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"More Punctuation Tweaks\",\"scope\":[\"punctuation.definition.list.begin\",\"punctuation.definition.list.end\",\"punctuation.separator.arguments\",\"punctuation.definition.list\"],\"settings\":{\"foreground\":\"#d9f5dd\"}},{\"name\":\"Template Strings\",\"scope\":[\"string.template meta.template.expression\"],\"settings\":{\"foreground\":\"#e2817f\"}},{\"name\":\"Backtics(``) in Template Strings\",\"scope\":[\"string.template punctuation.definition.string\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Italics\",\"scope\":[\"italic\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"italic\"}},{\"name\":\"Bold\",\"scope\":[\"bold\"],\"settings\":{\"foreground\":\"#c5e478\",\"fontStyle\":\"bold\"}},{\"name\":\"Quote\",\"scope\":[\"quote\"],\"settings\":{\"foreground\":\"#969bb7\",\"fontStyle\":\"\"}},{\"name\":\"Raw Code\",\"scope\":[\"raw\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"CoffeScript Variable Assignment\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#31e1eb\"}},{\"name\":\"CoffeScript Parameter Function\",\"scope\":[\"variable.parameter.function.coffee\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"CoffeeScript Assignments\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"C# Readwrite Variables\",\"scope\":[\"variable.other.readwrite.cs\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"C# Classes & Storage types\",\"scope\":[\"entity.name.type.class.cs\",\"storage.type.cs\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"C# Namespaces\",\"scope\":[\"entity.name.type.namespace.cs\"],\"settings\":{\"foreground\":\"#b2ccd6\"}},{\"name\":\"C# Unquoted String Zone\",\"scope\":[\"string.unquoted.preprocessor.message.cs\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"C# Region\",\"scope\":[\"punctuation.separator.hash.cs\",\"keyword.preprocessor.region.cs\",\"keyword.preprocessor.endregion.cs\"],\"settings\":{\"foreground\":\"#ffcb8b\",\"fontStyle\":\"bold\"}},{\"name\":\"C# Other Variables\",\"scope\":[\"variable.other.object.cs\"],\"settings\":{\"foreground\":\"#b2ccd6\"}},{\"name\":\"C# Enum\",\"scope\":[\"entity.name.type.enum.cs\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Dart String\",\"scope\":[\"string.interpolated.single.dart\",\"string.interpolated.double.dart\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Dart Class\",\"scope\":[\"support.class.dart\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Tag names in Stylesheets\",\"scope\":[\"entity.name.tag.css\",\"entity.name.tag.less\",\"entity.name.tag.custom.css\",\"support.constant.property-value.css\"],\"settings\":{\"foreground\":\"#ff6d6d\",\"fontStyle\":\"\"}},{\"name\":\"Wildcard(*) selector in Stylesheets\",\"scope\":[\"entity.name.tag.wildcard.css\",\"entity.name.tag.wildcard.less\",\"entity.name.tag.wildcard.scss\",\"entity.name.tag.wildcard.sass\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"CSS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Attribute Name for CSS\",\"scope\":[\"meta.attribute-selector.css entity.other.attribute-name.attribute\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Elixir Classes\",\"scope\":[\"source.elixir support.type.elixir\",\"source.elixir meta.module.elixir entity.name.class.elixir\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Elixir Functions\",\"scope\":[\"source.elixir entity.name.function\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Elixir Constants\",\"scope\":[\"source.elixir constant.other.symbol.elixir\",\"source.elixir constant.other.keywords.elixir\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Elixir String Punctuations\",\"scope\":[\"source.elixir punctuation.definition.string\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Elixir\",\"scope\":[\"source.elixir variable.other.readwrite.module.elixir\",\"source.elixir variable.other.readwrite.module.elixir punctuation.definition.variable.elixir\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Elixir Binary Punctuations\",\"scope\":[\"source.elixir .punctuation.binary.elixir\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Closure Constant Keyword\",\"scope\":[\"constant.keyword.clojure\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Go Function Calls\",\"scope\":[\"source.go meta.function-call.go\"],\"settings\":{\"foreground\":\"#dddddd\"}},{\"name\":\"Go Keywords\",\"scope\":[\"source.go keyword.package.go\",\"source.go keyword.import.go\",\"source.go keyword.function.go\",\"source.go keyword.type.go\",\"source.go keyword.struct.go\",\"source.go keyword.interface.go\",\"source.go keyword.const.go\",\"source.go keyword.var.go\",\"source.go keyword.map.go\",\"source.go keyword.channel.go\",\"source.go keyword.control.go\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Go Constants e.g. nil, string format (%s, %d, etc.)\",\"scope\":[\"source.go constant.language.go\",\"source.go constant.other.placeholder.go\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"C++ Functions\",\"scope\":[\"entity.name.function.preprocessor.cpp\",\"entity.scope.name.cpp\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"C++ Meta Namespace\",\"scope\":[\"meta.namespace-block.cpp\"],\"settings\":{\"foreground\":\"#e0dec6\"}},{\"name\":\"C++ Language Primitive Storage\",\"scope\":[\"storage.type.language.primitive.cpp\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"C++ Preprocessor Macro\",\"scope\":[\"meta.preprocessor.macro.cpp\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"C++ Variable Parameter\",\"scope\":[\"variable.parameter\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Powershell Variables\",\"scope\":[\"variable.other.readwrite.powershell\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Powershell Function\",\"scope\":[\"support.function.powershell\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"ID Attribute Name in HTML\",\"scope\":[\"entity.other.attribute-name.id.html\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"HTML Punctuation Definition Tag\",\"scope\":[\"punctuation.definition.tag.html\"],\"settings\":{\"foreground\":\"#6ae9f0\"}},{\"name\":\"HTML Doctype\",\"scope\":[\"meta.tag.sgml.doctype.html\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"JavaScript Classes\",\"scope\":[\"meta.class entity.name.type.class.js\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"JavaScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.js\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"JavaScript Terminator\",\"scope\":[\"terminator.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Meta Punctuation Definition\",\"scope\":[\"meta.js punctuation.definition.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Entity Names in Code Documentations\",\"scope\":[\"entity.name.type.instance.jsdoc\",\"entity.name.type.instance.phpdoc\"],\"settings\":{\"foreground\":\"#889fb2\"}},{\"name\":\"Other Variables in Code Documentations\",\"scope\":[\"variable.other.jsdoc\",\"variable.other.phpdoc\"],\"settings\":{\"foreground\":\"#78ccf0\"}},{\"name\":\"JavaScript module imports and exports\",\"scope\":[\"variable.other.meta.import.js\",\"meta.import.js variable.other\",\"variable.other.meta.export.js\",\"meta.export.js variable.other\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Variable Parameter Function\",\"scope\":[\"variable.parameter.function.js\"],\"settings\":{\"foreground\":\"#8b96ea\"}},{\"name\":\"JavaScript[React] Variable Other Object\",\"scope\":[\"variable.other.object.js\",\"variable.other.object.jsx\",\"variable.object.property.js\",\"variable.object.property.jsx\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Variables\",\"scope\":[\"variable.js\",\"variable.other.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Entity Name Type\",\"scope\":[\"entity.name.type.js\",\"entity.name.type.module.js\"],\"settings\":{\"foreground\":\"#ffcb8b\",\"fontStyle\":\"\"}},{\"name\":\"JavaScript Support Classes\",\"scope\":[\"support.class.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JSON Property Names\",\"scope\":[\"support.type.property-name.json\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"JSON Support Constants\",\"scope\":[\"support.constant.json\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"JSON Property values (string)\",\"scope\":[\"meta.structure.dictionary.value.json string.quoted.double\"],\"settings\":{\"foreground\":\"#c789d6\"}},{\"name\":\"Strings in JSON values\",\"scope\":[\"string.quoted.double.json punctuation.definition.string.json\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"Specific JSON Property values like null\",\"scope\":[\"meta.structure.dictionary.json meta.structure.dictionary.value constant.language\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"JavaScript Other Variable\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Ruby Variables\",\"scope\":[\"variable.other.ruby\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Ruby Class\",\"scope\":[\"entity.name.type.class.ruby\"],\"settings\":{\"foreground\":\"#ecc48d\"}},{\"name\":\"Ruby Hashkeys\",\"scope\":[\"constant.language.symbol.hashkey.ruby\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"LESS Tag names\",\"scope\":[\"entity.name.tag.less\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"LESS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Attribute Name for LESS\",\"scope\":[\"meta.attribute-selector.less entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Markdown Headings\",\"scope\":[\"markup.heading.markdown\",\"markup.heading.setext.1.markdown\",\"markup.heading.setext.2.markdown\"],\"settings\":{\"foreground\":\"#82b1ff\"}},{\"name\":\"Markdown Italics\",\"scope\":[\"markup.italic.markdown\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"italic\"}},{\"name\":\"Markdown Bold\",\"scope\":[\"markup.bold.markdown\"],\"settings\":{\"foreground\":\"#c5e478\",\"fontStyle\":\"bold\"}},{\"name\":\"Markdown Quote + others\",\"scope\":[\"markup.quote.markdown\"],\"settings\":{\"foreground\":\"#969bb7\",\"fontStyle\":\"\"}},{\"name\":\"Markdown Raw Code + others\",\"scope\":[\"markup.inline.raw.markdown\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"Markdown Links\",\"scope\":[\"markup.underline.link.markdown\",\"markup.underline.link.image.markdown\"],\"settings\":{\"foreground\":\"#ff869a\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Link Title and Description\",\"scope\":[\"string.other.link.title.markdown\",\"string.other.link.description.markdown\"],\"settings\":{\"foreground\":\"#d6deeb\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Punctuation\",\"scope\":[\"punctuation.definition.string.markdown\",\"punctuation.definition.string.begin.markdown\",\"punctuation.definition.string.end.markdown\",\"meta.link.inline.markdown punctuation.definition.string\"],\"settings\":{\"foreground\":\"#82b1ff\"}},{\"name\":\"Markdown MetaData Punctuation\",\"scope\":[\"punctuation.definition.metadata.markdown\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Markdown List Punctuation\",\"scope\":[\"beginning.punctuation.definition.list.markdown\"],\"settings\":{\"foreground\":\"#82b1ff\"}},{\"name\":\"Markdown Inline Raw String\",\"scope\":[\"markup.inline.raw.string.markdown\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"PHP Variables\",\"scope\":[\"variable.other.php\"],\"settings\":{\"foreground\":\"#bec5d4\"}},{\"name\":\"Support Classes in PHP\",\"scope\":[\"support.class.php\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Punctuations in PHP function calls\",\"scope\":[\"meta.function-call.php punctuation\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"PHP Global Variables\",\"scope\":[\"variable.other.global.php\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Declaration Punctuation in PHP Global Variables\",\"scope\":[\"variable.other.global.php punctuation.definition.variable\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Language Constants in Python\",\"scope\":[\"constant.language.python\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Python Function Parameter and Arguments\",\"scope\":[\"variable.parameter.function.python\",\"meta.function-call.arguments.python\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Python Function Call\",\"scope\":[\"meta.function-call.python\",\"meta.function-call.generic.python\"],\"settings\":{\"foreground\":\"#b2ccd6\"}},{\"name\":\"Punctuations in Python\",\"scope\":[\"punctuation.python\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Decorator Functions in Python\",\"scope\":[\"entity.name.function.decorator.python\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Python Language Variable\",\"scope\":[\"source.python variable.language.special\"],\"settings\":{\"foreground\":\"#8eace3\"}},{\"name\":\"Python import control keyword\",\"scope\":[\"keyword.control\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"SCSS Variable\",\"scope\":[\"variable.scss\",\"variable.sass\",\"variable.parameter.url.scss\",\"variable.parameter.url.sass\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#bec5d4\"}},{\"name\":\"Attribute Name for SASS\",\"scope\":[\"meta.attribute-selector.scss entity.other.attribute-name.attribute\",\"meta.attribute-selector.sass entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Tag names in SASS\",\"scope\":[\"entity.name.tag.scss\",\"entity.name.tag.sass\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"SASS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.scss\",\"keyword.other.unit.sass\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"TypeScript[React] Variables and Object Properties\",\"scope\":[\"variable.other.readwrite.alias.ts\",\"variable.other.readwrite.alias.tsx\",\"variable.other.readwrite.ts\",\"variable.other.readwrite.tsx\",\"variable.other.object.ts\",\"variable.other.object.tsx\",\"variable.object.property.ts\",\"variable.object.property.tsx\",\"variable.other.ts\",\"variable.other.tsx\",\"variable.tsx\",\"variable.ts\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"TypeScript[React] Entity Name Types\",\"scope\":[\"entity.name.type.ts\",\"entity.name.type.tsx\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"TypeScript[React] Node Classes\",\"scope\":[\"support.class.node.ts\",\"support.class.node.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"TypeScript[React] Entity Name Types as Parameters\",\"scope\":[\"meta.type.parameters.ts entity.name.type\",\"meta.type.parameters.tsx entity.name.type\"],\"settings\":{\"foreground\":\"#889fb2\"}},{\"name\":\"TypeScript[React] Import/Export Punctuations\",\"scope\":[\"meta.import.ts punctuation.definition.block\",\"meta.import.tsx punctuation.definition.block\",\"meta.export.ts punctuation.definition.block\",\"meta.export.tsx punctuation.definition.block\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.decorator punctuation.decorator.ts\",\"meta.decorator punctuation.decorator.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.tag.js meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"YAML Entity Name Tags\",\"scope\":[\"entity.name.tag.yaml\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"JavaScript Variable Other ReadWrite\",\"scope\":[\"variable.other.readwrite.js\",\"variable.parameter\"],\"settings\":{\"foreground\":\"#d7dbe0\"}},{\"name\":\"Support Class Component\",\"scope\":[\"support.class.component.js\",\"support.class.component.tsx\"],\"settings\":{\"foreground\":\"#f78c6c\",\"fontStyle\":\"\"}},{\"name\":\"Text nested in React tags\",\"scope\":[\"meta.jsx.children\",\"meta.jsx.children.js\",\"meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"TypeScript Classes\",\"scope\":[\"meta.class entity.name.type.class.tsx\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"TypeScript Entity Name Type\",\"scope\":[\"entity.name.type.tsx\",\"entity.name.type.module.tsx\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"TypeScript Class Variable Keyword\",\"scope\":[\"meta.class.ts meta.var.expr.ts storage.type.ts\",\"meta.class.tsx meta.var.expr.tsx storage.type.tsx\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"TypeScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.ts\",\"meta.method.declaration storage.type.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"normalize font style of certain components\",\"scope\":[\"meta.property-list.css meta.property-value.css variable.other.less\",\"meta.property-list.scss variable.scss\",\"meta.property-list.sass variable.sass\",\"meta.brace\",\"keyword.operator.operator\",\"keyword.operator.or.regexp\",\"keyword.operator.expression.in\",\"keyword.operator.relational\",\"keyword.operator.assignment\",\"keyword.operator.comparison\",\"keyword.operator.type\",\"keyword.operator\",\"keyword\",\"punctuation.definintion.string\",\"punctuation\",\"variable.other.readwrite.js\",\"storage.type\",\"source.css\",\"string.quoted\"],\"settings\":{\"fontStyle\":\"\"}}],\"styleOverrides\":{\"frames\":{\"editorBackground\":\"var(--sl-color-gray-6)\",\"terminalBackground\":\"var(--sl-color-gray-6)\",\"editorActiveTabBackground\":\"var(--sl-color-gray-6)\",\"terminalTitlebarDotsForeground\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"terminalTitlebarDotsOpacity\":\"0.75\",\"inlineButtonForeground\":\"var(--sl-color-text)\",\"frameBoxShadowCssValue\":\"none\"},\"textMarkers\":{\"markBackground\":\"#ffffff17\",\"markBorderColor\":\"#ffffff40\"}}},{\"name\":\"Night Owl Light\",\"type\":\"light\",\"colors\":{\"focusBorder\":\"#93a1a1\",\"foreground\":\"#403f53\",\"disabledForeground\":\"#61616180\",\"descriptionForeground\":\"#403f53\",\"errorForeground\":\"#403f53\",\"icon.foreground\":\"#424242\",\"contrastActiveBorder\":null,\"contrastBorder\":null,\"textBlockQuote.background\":\"#7f7f7f1a\",\"textBlockQuote.border\":\"#007acc80\",\"textCodeBlock.background\":\"#dcdcdc66\",\"textLink.activeForeground\":\"#006ab1\",\"textLink.foreground\":\"#006ab1\",\"textPreformat.foreground\":\"#a31515\",\"textSeparator.foreground\":\"#0000002e\",\"editor.background\":\"#f6f7f9\",\"editor.foreground\":\"#403f53\",\"editorLineNumber.foreground\":\"#90a7b2\",\"editorLineNumber.activeForeground\":\"#403f53\",\"editorActiveLineNumber.foreground\":\"#0b216f\",\"editor.selectionBackground\":\"#e0e0e0\",\"editor.inactiveSelectionBackground\":\"#e0e0e080\",\"editor.selectionHighlightBackground\":\"#339cec33\",\"editorError.foreground\":\"#e64d49\",\"editorWarning.foreground\":\"#daaa01\",\"editorInfo.foreground\":\"#1a85ff\",\"editorHint.foreground\":\"#6c6c6c\",\"problemsErrorIcon.foreground\":\"#e64d49\",\"problemsWarningIcon.foreground\":\"#daaa01\",\"problemsInfoIcon.foreground\":\"#1a85ff\",\"editor.findMatchBackground\":\"#93a1a16c\",\"editor.findMatchHighlightBackground\":\"#93a1a16c\",\"editor.findRangeHighlightBackground\":\"#7497a633\",\"editorLink.activeForeground\":\"#0000ff\",\"editorLightBulb.foreground\":\"#ddb100\",\"editorLightBulbAutoFix.foreground\":\"#007acc\",\"diffEditor.insertedTextBackground\":\"#9ccc2c40\",\"diffEditor.insertedTextBorder\":null,\"diffEditor.removedTextBackground\":\"#ff000033\",\"diffEditor.removedTextBorder\":null,\"diffEditor.insertedLineBackground\":\"#9bb95533\",\"diffEditor.removedLineBackground\":\"#ff000033\",\"editorStickyScroll.background\":\"#fbfbfb\",\"editorStickyScrollHover.background\":\"#f0f0f0\",\"editorInlayHint.background\":\"#2aa29899\",\"editorInlayHint.foreground\":\"#f0f0f0\",\"editorInlayHint.typeBackground\":\"#2aa29899\",\"editorInlayHint.typeForeground\":\"#f0f0f0\",\"editorInlayHint.parameterBackground\":\"#2aa29899\",\"editorInlayHint.parameterForeground\":\"#f0f0f0\",\"editorPane.background\":\"#fbfbfb\",\"editorGroup.emptyBackground\":null,\"editorGroup.focusedEmptyBorder\":null,\"editorGroupHeader.tabsBackground\":\"var(--sl-color-gray-6)\",\"editorGroupHeader.tabsBorder\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"editorGroupHeader.noTabsBackground\":\"#f0f0f0\",\"editorGroupHeader.border\":null,\"editorGroup.border\":\"#f0f0f0\",\"editorGroup.dropBackground\":\"#2677cb2d\",\"editorGroup.dropIntoPromptForeground\":\"#403f53\",\"editorGroup.dropIntoPromptBackground\":\"#f0f0f0\",\"editorGroup.dropIntoPromptBorder\":null,\"sideBySideEditor.horizontalBorder\":\"#f0f0f0\",\"sideBySideEditor.verticalBorder\":\"#f0f0f0\",\"scrollbar.shadow\":\"#cccccc\",\"scrollbarSlider.background\":\"#0000001a\",\"scrollbarSlider.hoverBackground\":\"#00000055\",\"scrollbarSlider.activeBackground\":\"#00000099\",\"panel.background\":\"#f0f0f0\",\"panel.border\":\"#d9d9d9\",\"panelTitle.activeBorder\":\"#424242\",\"panelTitle.activeForeground\":\"#424242\",\"panelTitle.inactiveForeground\":\"#424242bf\",\"panelSectionHeader.background\":\"#80808051\",\"terminal.background\":\"#f6f6f6\",\"widget.shadow\":\"#d9d9d9\",\"editorWidget.background\":\"#f0f0f0\",\"editorWidget.foreground\":\"#403f53\",\"editorWidget.border\":\"#d9d9d9\",\"quickInput.background\":\"#f0f0f0\",\"quickInput.foreground\":\"#403f53\",\"quickInputTitle.background\":\"#0000000f\",\"pickerGroup.foreground\":\"#403f53\",\"pickerGroup.border\":\"#d9d9d9\",\"editor.hoverHighlightBackground\":\"#339cec33\",\"editorHoverWidget.background\":\"#f0f0f0\",\"editorHoverWidget.foreground\":\"#403f53\",\"editorHoverWidget.border\":\"#d9d9d9\",\"editorHoverWidget.statusBarBackground\":\"#e4e4e4\",\"titleBar.activeBackground\":\"var(--sl-color-gray-6)\",\"titleBar.activeForeground\":\"var(--sl-color-text)\",\"titleBar.inactiveBackground\":\"#f0f0f099\",\"titleBar.inactiveForeground\":\"#33333399\",\"titleBar.border\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"toolbar.hoverBackground\":\"#b8b8b850\",\"toolbar.activeBackground\":\"#a6a6a650\",\"tab.activeBackground\":\"#f6f6f6\",\"tab.unfocusedActiveBackground\":\"#f6f6f6\",\"tab.inactiveBackground\":\"#f0f0f0\",\"tab.unfocusedInactiveBackground\":\"#f0f0f0\",\"tab.activeForeground\":\"var(--sl-color-text)\",\"tab.inactiveForeground\":\"#403f53\",\"tab.unfocusedActiveForeground\":\"#403f53b3\",\"tab.unfocusedInactiveForeground\":\"#403f5380\",\"tab.hoverBackground\":null,\"tab.unfocusedHoverBackground\":null,\"tab.hoverForeground\":null,\"tab.unfocusedHoverForeground\":null,\"tab.border\":\"#f0f0f0\",\"tab.lastPinnedBorder\":\"#a9a9a9\",\"tab.activeBorder\":\"transparent\",\"tab.unfocusedActiveBorder\":null,\"tab.activeBorderTop\":\"var(--sl-color-accent)\",\"tab.unfocusedActiveBorderTop\":null,\"tab.hoverBorder\":null,\"tab.unfocusedHoverBorder\":null,\"tab.activeModifiedBorder\":\"#2aa298\",\"tab.inactiveModifiedBorder\":\"#93a1a1\",\"tab.unfocusedActiveModifiedBorder\":\"#93a1a1\",\"tab.unfocusedInactiveModifiedBorder\":\"#93a1a1\",\"badge.background\":\"#2aa298\",\"badge.foreground\":\"#f0f0f0\",\"button.background\":\"#2aa298\",\"button.foreground\":\"#f0f0f0\",\"button.border\":null,\"button.separator\":\"#f0f0f066\",\"button.hoverBackground\":\"#22827a\",\"button.secondaryBackground\":\"#5f6a79\",\"button.secondaryForeground\":\"#ffffff\",\"button.secondaryHoverBackground\":\"#4c5561\",\"dropdown.background\":\"#f0f0f0\",\"dropdown.foreground\":\"#403f53\",\"dropdown.border\":\"#d9d9d9\",\"list.activeSelectionBackground\":\"#d3e8f8\",\"list.activeSelectionForeground\":\"#403f53\",\"tree.indentGuidesStroke\":\"#a9a9a9\",\"input.background\":\"#f0f0f0\",\"input.foreground\":\"#403f53\",\"input.placeholderForeground\":\"#93a1a1\",\"inputOption.activeBorder\":\"#2aa298\",\"inputOption.hoverBackground\":\"#b8b8b850\",\"inputOption.activeBackground\":\"#93a1a133\",\"inputOption.activeForeground\":\"#000000\",\"inputValidation.infoBackground\":\"#f0f0f0\",\"inputValidation.infoBorder\":\"#d0d0d0\",\"inputValidation.warningBackground\":\"#daaa01\",\"inputValidation.warningBorder\":\"#e0af02\",\"inputValidation.errorBackground\":\"#f76e6e\",\"inputValidation.errorBorder\":\"#de3d3b\",\"keybindingLabel.background\":\"#dddddd66\",\"keybindingLabel.foreground\":\"#555555\",\"keybindingLabel.border\":\"#cccccc66\",\"keybindingLabel.bottomBorder\":\"#bbbbbb66\",\"menu.foreground\":\"#403f53\",\"menu.background\":\"#f0f0f0\",\"menu.selectionForeground\":\"#403f53\",\"menu.selectionBackground\":\"#d3e8f8\",\"menu.separatorBackground\":\"#d4d4d4\",\"editor.snippetTabstopHighlightBackground\":\"#0a326433\",\"editor.snippetFinalTabstopHighlightBorder\":\"#0a326480\",\"terminal.ansiBlack\":\"#403f53\",\"terminal.ansiRed\":\"#de3d3b\",\"terminal.ansiGreen\":\"#08916a\",\"terminal.ansiYellow\":\"#e0af02\",\"terminal.ansiBlue\":\"#288ed7\",\"terminal.ansiMagenta\":\"#d6438a\",\"terminal.ansiCyan\":\"#2aa298\",\"terminal.ansiWhite\":\"#f0f0f0\",\"terminal.ansiBrightBlack\":\"#403f53\",\"terminal.ansiBrightRed\":\"#de3d3b\",\"terminal.ansiBrightGreen\":\"#08916a\",\"terminal.ansiBrightYellow\":\"#daaa01\",\"terminal.ansiBrightBlue\":\"#288ed7\",\"terminal.ansiBrightMagenta\":\"#d6438a\",\"terminal.ansiBrightCyan\":\"#2aa298\",\"terminal.ansiBrightWhite\":\"#f0f0f0\",\"selection.background\":\"#7a8181ad\",\"notifications.background\":\"#f0f0f0\",\"notifications.foreground\":\"#403f53\",\"notificationLink.foreground\":\"#994cc3\",\"notifications.border\":\"#cccccc\",\"notificationCenter.border\":\"#cccccc\",\"notificationToast.border\":\"#cccccc\",\"notificationCenterHeader.foreground\":\"#403f53\",\"notificationCenterHeader.background\":\"#f0f0f0\",\"input.border\":\"#d9d9d9\",\"progressBar.background\":\"#2aa298\",\"list.inactiveSelectionBackground\":\"#e0e7ea\",\"list.inactiveSelectionForeground\":\"#403f53\",\"list.focusBackground\":\"#d3e8f8\",\"list.hoverBackground\":\"#d3e8f8\",\"list.focusForeground\":\"#403f53\",\"list.hoverForeground\":\"#403f53\",\"list.highlightForeground\":\"#403f53\",\"list.errorForeground\":\"#e64d49\",\"list.warningForeground\":\"#daaa01\",\"activityBar.background\":\"#f0f0f0\",\"activityBar.foreground\":\"#403f53\",\"activityBar.dropBackground\":\"#d0d0d0\",\"activityBarBadge.background\":\"#403f53\",\"activityBarBadge.foreground\":\"#f0f0f0\",\"activityBar.border\":\"#f0f0f0\",\"sideBar.background\":\"#f0f0f0\",\"sideBar.foreground\":\"#403f53\",\"sideBarTitle.foreground\":\"#403f53\",\"sideBar.border\":\"#f0f0f0\",\"editorGroup.background\":\"#f6f6f6\",\"editorCursor.foreground\":\"#90a7b2\",\"editor.wordHighlightBackground\":\"#339cec33\",\"editor.wordHighlightStrongBackground\":\"#007dd659\",\"editor.lineHighlightBackground\":\"#f0f0f0\",\"editor.rangeHighlightBackground\":\"#7497a633\",\"editorWhitespace.foreground\":\"#d9d9d9\",\"editorIndentGuide.background\":\"#d9d9d9\",\"editorCodeLens.foreground\":\"#403f53\",\"editorBracketMatch.background\":\"#d3e8f8\",\"editorBracketMatch.border\":\"#2aa298\",\"editorError.border\":\"#fbfbfb\",\"editorWarning.border\":\"#daaa01\",\"editorGutter.addedBackground\":\"#49d0c5\",\"editorGutter.modifiedBackground\":\"#6fbef6\",\"editorGutter.deletedBackground\":\"#f76e6e\",\"editorRuler.foreground\":\"#d9d9d9\",\"editorOverviewRuler.errorForeground\":\"#e64d49\",\"editorOverviewRuler.warningForeground\":\"#daaa01\",\"editorSuggestWidget.background\":\"#f0f0f0\",\"editorSuggestWidget.foreground\":\"#403f53\",\"editorSuggestWidget.highlightForeground\":\"#403f53\",\"editorSuggestWidget.selectedBackground\":\"#d3e8f8\",\"editorSuggestWidget.border\":\"#d9d9d9\",\"debugExceptionWidget.background\":\"#f0f0f0\",\"debugExceptionWidget.border\":\"#d9d9d9\",\"editorMarkerNavigation.background\":\"#d0d0d0\",\"editorMarkerNavigationError.background\":\"#f76e6e\",\"editorMarkerNavigationWarning.background\":\"#daaa01\",\"debugToolBar.background\":\"#f0f0f0\",\"extensionButton.prominentBackground\":\"#2aa298\",\"extensionButton.prominentForeground\":\"#f0f0f0\",\"statusBar.background\":\"#f0f0f0\",\"statusBar.border\":\"#f0f0f0\",\"statusBar.debuggingBackground\":\"#f0f0f0\",\"statusBar.debuggingForeground\":\"#403f53\",\"statusBar.foreground\":\"#403f53\",\"statusBar.noFolderBackground\":\"#f0f0f0\",\"statusBar.noFolderForeground\":\"#403f53\",\"peekView.border\":\"#d9d9d9\",\"peekViewEditor.background\":\"#f6f6f6\",\"peekViewEditorGutter.background\":\"#f6f6f6\",\"peekViewEditor.matchHighlightBackground\":\"#49d0c5\",\"peekViewResult.background\":\"#f0f0f0\",\"peekViewResult.fileForeground\":\"#403f53\",\"peekViewResult.lineForeground\":\"#403f53\",\"peekViewResult.matchHighlightBackground\":\"#49d0c5\",\"peekViewResult.selectionBackground\":\"#e0e7ea\",\"peekViewResult.selectionForeground\":\"#403f53\",\"peekViewTitle.background\":\"#f0f0f0\",\"peekViewTitleLabel.foreground\":\"#403f53\",\"peekViewTitleDescription.foreground\":\"#403f53\",\"terminal.foreground\":\"#403f53\"},\"fg\":\"#403f53\",\"bg\":\"#f6f7f9\",\"semanticHighlighting\":false,\"settings\":[{\"name\":\"Changed\",\"scope\":[\"markup.changed\",\"meta.diff.header.git\",\"meta.diff.header.from-file\",\"meta.diff.header.to-file\"],\"settings\":{\"foreground\":\"#556484\"}},{\"name\":\"Deleted\",\"scope\":[\"markup.deleted.diff\"],\"settings\":{\"foreground\":\"#ae3c3afd\"}},{\"name\":\"Inserted\",\"scope\":[\"markup.inserted.diff\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Global settings\",\"settings\":{\"background\":\"#011627\",\"foreground\":\"#403f53\"}},{\"name\":\"Comment\",\"scope\":[\"comment\"],\"settings\":{\"foreground\":\"#5f636f\"}},{\"name\":\"String\",\"scope\":[\"string\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"String Quoted\",\"scope\":[\"string.quoted\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#984e4d\"}},{\"name\":\"Support Constant Math\",\"scope\":[\"support.constant.math\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Number\",\"scope\":[\"constant.numeric\",\"constant.character.numeric\"],\"settings\":{\"foreground\":\"#aa0982\",\"fontStyle\":\"\"}},{\"name\":\"Built-in constant\",\"scope\":[\"constant.language\",\"punctuation.definition.constant\",\"variable.other.constant\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"User-defined constant\",\"scope\":[\"constant.character\",\"constant.other\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Constant Character Escape\",\"scope\":[\"constant.character.escape\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"RegExp String\",\"scope\":[\"string.regexp\",\"string.regexp keyword.other\"],\"settings\":{\"foreground\":\"#3a688f\"}},{\"name\":\"Comma in functions\",\"scope\":[\"meta.function punctuation.separator.comma\"],\"settings\":{\"foreground\":\"#4d667b\"}},{\"name\":\"Variable\",\"scope\":[\"variable\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Keyword\",\"scope\":[\"punctuation.accessor\",\"keyword\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Storage\",\"scope\":[\"storage\",\"meta.var.expr\",\"meta.class meta.method.declaration meta.var.expr storage.type.js\",\"storage.type.property.js\",\"storage.type.property.ts\",\"storage.type.property.tsx\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type.function.arrow.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Class name\",\"scope\":[\"entity.name.class\",\"meta.class entity.name.type.class\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Inherited class\",\"scope\":[\"entity.other.inherited-class\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Function name\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Meta Tag\",\"scope\":[\"punctuation.definition.tag\",\"meta.tag\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"HTML Tag names\",\"scope\":[\"entity.name.tag\",\"meta.tag.other.html\",\"meta.tag.other.js\",\"meta.tag.other.tsx\",\"entity.name.tag.tsx\",\"entity.name.tag.js\",\"entity.name.tag\",\"meta.tag.js\",\"meta.tag.tsx\",\"meta.tag.html\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Tag attribute\",\"scope\":[\"entity.other.attribute-name\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Entity Name Tag Custom\",\"scope\":[\"entity.name.tag.custom\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Library (function & constant)\",\"scope\":[\"support.function\",\"support.constant\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Support Constant Property Value meta\",\"scope\":[\"support.constant.meta.property-value\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Library class/type\",\"scope\":[\"support.type\",\"support.class\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Support Variable DOM\",\"scope\":[\"support.variable.dom\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Invalid\",\"scope\":[\"invalid\"],\"settings\":{\"foreground\":\"#bb2060\"}},{\"name\":\"Invalid deprecated\",\"scope\":[\"invalid.deprecated\"],\"settings\":{\"foreground\":\"#b23834\"}},{\"name\":\"Keyword Operator\",\"scope\":[\"keyword.operator\"],\"settings\":{\"foreground\":\"#096e72\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Relational\",\"scope\":[\"keyword.operator.relational\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Assignment\",\"scope\":[\"keyword.operator.assignment\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Arithmetic\",\"scope\":[\"keyword.operator.arithmetic\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Bitwise\",\"scope\":[\"keyword.operator.bitwise\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Increment\",\"scope\":[\"keyword.operator.increment\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Ternary\",\"scope\":[\"keyword.operator.ternary\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Double-Slashed Comment\",\"scope\":[\"comment.line.double-slash\"],\"settings\":{\"foreground\":\"#5d6376\"}},{\"name\":\"Object\",\"scope\":[\"object\"],\"settings\":{\"foreground\":\"#58656a\"}},{\"name\":\"Null\",\"scope\":[\"constant.language.null\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Meta Brace\",\"scope\":[\"meta.brace\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Meta Delimiter Period\",\"scope\":[\"meta.delimiter.period\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Punctuation Definition String\",\"scope\":[\"punctuation.definition.string\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Punctuation Definition String Markdown\",\"scope\":[\"punctuation.definition.string.begin.markdown\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Boolean\",\"scope\":[\"constant.language.boolean\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Object Comma\",\"scope\":[\"object.comma\"],\"settings\":{\"foreground\":\"#646464\"}},{\"name\":\"Variable Parameter Function\",\"scope\":[\"variable.parameter.function\"],\"settings\":{\"foreground\":\"#096e72\",\"fontStyle\":\"\"}},{\"name\":\"Support Type Property Name & entity name tags\",\"scope\":[\"support.type.vendor.property-name\",\"support.constant.vendor.property-value\",\"support.type.property-name\",\"meta.property-list entity.name.tag\"],\"settings\":{\"foreground\":\"#096e72\",\"fontStyle\":\"\"}},{\"name\":\"Entity Name tag reference in stylesheets\",\"scope\":[\"meta.property-list entity.name.tag.reference\"],\"settings\":{\"foreground\":\"#286d70\"}},{\"name\":\"Constant Other Color RGB Value Punctuation Definition Constant\",\"scope\":[\"constant.other.color.rgb-value punctuation.definition.constant\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Constant Other Color\",\"scope\":[\"constant.other.color\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Keyword Other Unit\",\"scope\":[\"keyword.other.unit\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Meta Selector\",\"scope\":[\"meta.selector\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Entity Other Attribute Name Id\",\"scope\":[\"entity.other.attribute-name.id\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Meta Property Name\",\"scope\":[\"meta.property-name\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Doctypes\",\"scope\":[\"entity.name.tag.doctype\",\"meta.tag.sgml.doctype\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Punctuation Definition Parameters\",\"scope\":[\"punctuation.definition.parameters\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Keyword Control Operator\",\"scope\":[\"keyword.control.operator\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Keyword Operator Logical\",\"scope\":[\"keyword.operator.logical\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"\"}},{\"name\":\"Variable Instances\",\"scope\":[\"variable.instance\",\"variable.other.instance\",\"variable.readwrite.instance\",\"variable.other.readwrite.instance\",\"variable.other.property\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Variable Property Other object property\",\"scope\":[\"variable.other.object.property\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Variable Property Other object\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Entity Name Function\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Keyword Operator Comparison, imports, returns and Keyword Operator Ruby\",\"scope\":[\"keyword.operator.comparison\",\"keyword.control.flow.js\",\"keyword.control.flow.ts\",\"keyword.control.flow.tsx\",\"keyword.control.ruby\",\"keyword.control.module.ruby\",\"keyword.control.class.ruby\",\"keyword.control.def.ruby\",\"keyword.control.loop.js\",\"keyword.control.loop.ts\",\"keyword.control.import.js\",\"keyword.control.import.ts\",\"keyword.control.import.tsx\",\"keyword.control.from.js\",\"keyword.control.from.ts\",\"keyword.control.from.tsx\",\"keyword.operator.instanceof.js\",\"keyword.operator.expression.instanceof.ts\",\"keyword.operator.expression.instanceof.tsx\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Control Conditional\",\"scope\":[\"keyword.control.conditional.js\",\"keyword.control.conditional.ts\",\"keyword.control.switch.js\",\"keyword.control.switch.ts\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"\"}},{\"name\":\"Support Constant, `new` keyword, Special Method Keyword, `debugger`, other keywords\",\"scope\":[\"support.constant\",\"keyword.other.special-method\",\"keyword.other.new\",\"keyword.other.debugger\",\"keyword.control\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Support Function\",\"scope\":[\"support.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Invalid Broken\",\"scope\":[\"invalid.broken\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Invalid Unimplemented\",\"scope\":[\"invalid.unimplemented\"],\"settings\":{\"foreground\":\"#486e26\"}},{\"name\":\"Invalid Illegal\",\"scope\":[\"invalid.illegal\"],\"settings\":{\"foreground\":\"#984e4d\"}},{\"name\":\"Language Variable\",\"scope\":[\"variable.language\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Support Variable Property\",\"scope\":[\"support.variable.property\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Variable Function\",\"scope\":[\"variable.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Variable Interpolation\",\"scope\":[\"variable.interpolation\"],\"settings\":{\"foreground\":\"#a64348\"}},{\"name\":\"Meta Function Call\",\"scope\":[\"meta.function-call\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Punctuation Section Embedded\",\"scope\":[\"punctuation.section.embedded\"],\"settings\":{\"foreground\":\"#b23834\"}},{\"name\":\"Punctuation Tweaks\",\"scope\":[\"punctuation.terminator.expression\",\"punctuation.definition.arguments\",\"punctuation.definition.array\",\"punctuation.section.array\",\"meta.array\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"More Punctuation Tweaks\",\"scope\":[\"punctuation.definition.list.begin\",\"punctuation.definition.list.end\",\"punctuation.separator.arguments\",\"punctuation.definition.list\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Template Strings\",\"scope\":[\"string.template meta.template.expression\"],\"settings\":{\"foreground\":\"#b23834\"}},{\"name\":\"Backtics(``) in Template Strings\",\"scope\":[\"string.template punctuation.definition.string\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Italics\",\"scope\":[\"italic\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"italic\"}},{\"name\":\"Bold\",\"scope\":[\"bold\"],\"settings\":{\"foreground\":\"#3b61b0\",\"fontStyle\":\"bold\"}},{\"name\":\"Quote\",\"scope\":[\"quote\"],\"settings\":{\"foreground\":\"#5c6285\"}},{\"name\":\"Raw Code\",\"scope\":[\"raw\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"CoffeScript Variable Assignment\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#186e73\"}},{\"name\":\"CoffeScript Parameter Function\",\"scope\":[\"variable.parameter.function.coffee\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"CoffeeScript Assignments\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"C# Readwrite Variables\",\"scope\":[\"variable.other.readwrite.cs\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"C# Classes & Storage types\",\"scope\":[\"entity.name.type.class.cs\",\"storage.type.cs\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"C# Namespaces\",\"scope\":[\"entity.name.type.namespace.cs\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Tag names in Stylesheets\",\"scope\":[\"entity.name.tag.css\",\"entity.name.tag.less\",\"entity.name.tag.custom.css\",\"support.constant.property-value.css\"],\"settings\":{\"foreground\":\"#984e4d\",\"fontStyle\":\"\"}},{\"name\":\"Wildcard(*) selector in Stylesheets\",\"scope\":[\"entity.name.tag.wildcard.css\",\"entity.name.tag.wildcard.less\",\"entity.name.tag.wildcard.scss\",\"entity.name.tag.wildcard.sass\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"CSS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Attribute Name for CSS\",\"scope\":[\"meta.attribute-selector.css entity.other.attribute-name.attribute\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Elixir Classes\",\"scope\":[\"source.elixir support.type.elixir\",\"source.elixir meta.module.elixir entity.name.class.elixir\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir Functions\",\"scope\":[\"source.elixir entity.name.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir Constants\",\"scope\":[\"source.elixir constant.other.symbol.elixir\",\"source.elixir constant.other.keywords.elixir\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir String Punctuations\",\"scope\":[\"source.elixir punctuation.definition.string\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir\",\"scope\":[\"source.elixir variable.other.readwrite.module.elixir\",\"source.elixir variable.other.readwrite.module.elixir punctuation.definition.variable.elixir\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir Binary Punctuations\",\"scope\":[\"source.elixir .punctuation.binary.elixir\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Closure Constant Keyword\",\"scope\":[\"constant.keyword.clojure\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Go Function Calls\",\"scope\":[\"source.go meta.function-call.go\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Go Keywords\",\"scope\":[\"source.go keyword.package.go\",\"source.go keyword.import.go\",\"source.go keyword.function.go\",\"source.go keyword.type.go\",\"source.go keyword.struct.go\",\"source.go keyword.interface.go\",\"source.go keyword.const.go\",\"source.go keyword.var.go\",\"source.go keyword.map.go\",\"source.go keyword.channel.go\",\"source.go keyword.control.go\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Go Constants e.g. nil, string format (%s, %d, etc.)\",\"scope\":[\"source.go constant.language.go\",\"source.go constant.other.placeholder.go\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"C++ Functions\",\"scope\":[\"entity.name.function.preprocessor.cpp\",\"entity.scope.name.cpp\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"C++ Meta Namespace\",\"scope\":[\"meta.namespace-block.cpp\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"C++ Language Primitive Storage\",\"scope\":[\"storage.type.language.primitive.cpp\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"C++ Preprocessor Macro\",\"scope\":[\"meta.preprocessor.macro.cpp\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"C++ Variable Parameter\",\"scope\":[\"variable.parameter\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Powershell Variables\",\"scope\":[\"variable.other.readwrite.powershell\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Powershell Function\",\"scope\":[\"support.function.powershell\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"ID Attribute Name in HTML\",\"scope\":[\"entity.other.attribute-name.id.html\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"HTML Punctuation Definition Tag\",\"scope\":[\"punctuation.definition.tag.html\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"HTML Doctype\",\"scope\":[\"meta.tag.sgml.doctype.html\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"JavaScript Classes\",\"scope\":[\"meta.class entity.name.type.class.js\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"JavaScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.js\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"JavaScript Terminator\",\"scope\":[\"terminator.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Meta Punctuation Definition\",\"scope\":[\"meta.js punctuation.definition.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Entity Names in Code Documentations\",\"scope\":[\"entity.name.type.instance.jsdoc\",\"entity.name.type.instance.phpdoc\"],\"settings\":{\"foreground\":\"#4d667b\"}},{\"name\":\"Other Variables in Code Documentations\",\"scope\":[\"variable.other.jsdoc\",\"variable.other.phpdoc\"],\"settings\":{\"foreground\":\"#3e697c\"}},{\"name\":\"JavaScript module imports and exports\",\"scope\":[\"variable.other.meta.import.js\",\"meta.import.js variable.other\",\"variable.other.meta.export.js\",\"meta.export.js variable.other\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Variable Parameter Function\",\"scope\":[\"variable.parameter.function.js\"],\"settings\":{\"foreground\":\"#555ea2\"}},{\"name\":\"JavaScript[React] Variable Other Object\",\"scope\":[\"variable.other.object.js\",\"variable.other.object.jsx\",\"variable.object.property.js\",\"variable.object.property.jsx\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Variables\",\"scope\":[\"variable.js\",\"variable.other.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Entity Name Type\",\"scope\":[\"entity.name.type.js\",\"entity.name.type.module.js\"],\"settings\":{\"foreground\":\"#111111\",\"fontStyle\":\"\"}},{\"name\":\"JavaScript Support Classes\",\"scope\":[\"support.class.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JSON Property Names\",\"scope\":[\"support.type.property-name.json\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"JSON Support Constants\",\"scope\":[\"support.constant.json\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"JSON Property values (string)\",\"scope\":[\"meta.structure.dictionary.value.json string.quoted.double\"],\"settings\":{\"foreground\":\"#7c5686\"}},{\"name\":\"Strings in JSON values\",\"scope\":[\"string.quoted.double.json punctuation.definition.string.json\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Specific JSON Property values like null\",\"scope\":[\"meta.structure.dictionary.json meta.structure.dictionary.value constant.language\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"JavaScript Other Variable\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Ruby Variables\",\"scope\":[\"variable.other.ruby\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Ruby Class\",\"scope\":[\"entity.name.type.class.ruby\"],\"settings\":{\"foreground\":\"#984e4d\"}},{\"name\":\"Ruby Hashkeys\",\"scope\":[\"constant.language.symbol.hashkey.ruby\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Ruby Symbols\",\"scope\":[\"constant.language.symbol.ruby\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"LESS Tag names\",\"scope\":[\"entity.name.tag.less\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"LESS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Attribute Name for LESS\",\"scope\":[\"meta.attribute-selector.less entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Markdown Headings\",\"scope\":[\"markup.heading.markdown\",\"markup.heading.setext.1.markdown\",\"markup.heading.setext.2.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Markdown Italics\",\"scope\":[\"markup.italic.markdown\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"italic\"}},{\"name\":\"Markdown Bold\",\"scope\":[\"markup.bold.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\",\"fontStyle\":\"bold\"}},{\"name\":\"Markdown Quote + others\",\"scope\":[\"markup.quote.markdown\"],\"settings\":{\"foreground\":\"#5c6285\"}},{\"name\":\"Markdown Raw Code + others\",\"scope\":[\"markup.inline.raw.markdown\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Markdown Links\",\"scope\":[\"markup.underline.link.markdown\",\"markup.underline.link.image.markdown\"],\"settings\":{\"foreground\":\"#954f5a\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Link Title and Description\",\"scope\":[\"string.other.link.title.markdown\",\"string.other.link.description.markdown\"],\"settings\":{\"foreground\":\"#403f53\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Punctuation\",\"scope\":[\"punctuation.definition.string.markdown\",\"punctuation.definition.string.begin.markdown\",\"punctuation.definition.string.end.markdown\",\"meta.link.inline.markdown punctuation.definition.string\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Markdown MetaData Punctuation\",\"scope\":[\"punctuation.definition.metadata.markdown\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Markdown List Punctuation\",\"scope\":[\"beginning.punctuation.definition.list.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Markdown Inline Raw String\",\"scope\":[\"markup.inline.raw.string.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"PHP Variables\",\"scope\":[\"variable.other.php\",\"variable.other.property.php\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Support Classes in PHP\",\"scope\":[\"support.class.php\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Punctuations in PHP function calls\",\"scope\":[\"meta.function-call.php punctuation\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"PHP Global Variables\",\"scope\":[\"variable.other.global.php\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Declaration Punctuation in PHP Global Variables\",\"scope\":[\"variable.other.global.php punctuation.definition.variable\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Language Constants in Python\",\"scope\":[\"constant.language.python\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Python Function Parameter and Arguments\",\"scope\":[\"variable.parameter.function.python\",\"meta.function-call.arguments.python\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Python Function Call\",\"scope\":[\"meta.function-call.python\",\"meta.function-call.generic.python\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Punctuations in Python\",\"scope\":[\"punctuation.python\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Decorator Functions in Python\",\"scope\":[\"entity.name.function.decorator.python\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Python Language Variable\",\"scope\":[\"source.python variable.language.special\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Python import control keyword\",\"scope\":[\"keyword.control\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"SCSS Variable\",\"scope\":[\"variable.scss\",\"variable.sass\",\"variable.parameter.url.scss\",\"variable.parameter.url.sass\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Attribute Name for SASS\",\"scope\":[\"meta.attribute-selector.scss entity.other.attribute-name.attribute\",\"meta.attribute-selector.sass entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Tag names in SASS\",\"scope\":[\"entity.name.tag.scss\",\"entity.name.tag.sass\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"SASS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.scss\",\"keyword.other.unit.sass\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"TypeScript[React] Variables and Object Properties\",\"scope\":[\"variable.other.readwrite.alias.ts\",\"variable.other.readwrite.alias.tsx\",\"variable.other.readwrite.ts\",\"variable.other.readwrite.tsx\",\"variable.other.object.ts\",\"variable.other.object.tsx\",\"variable.object.property.ts\",\"variable.object.property.tsx\",\"variable.other.ts\",\"variable.other.tsx\",\"variable.tsx\",\"variable.ts\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"TypeScript[React] Entity Name Types\",\"scope\":[\"entity.name.type.ts\",\"entity.name.type.tsx\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"TypeScript[React] Node Classes\",\"scope\":[\"support.class.node.ts\",\"support.class.node.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"TypeScript[React] Entity Name Types as Parameters\",\"scope\":[\"meta.type.parameters.ts entity.name.type\",\"meta.type.parameters.tsx entity.name.type\"],\"settings\":{\"foreground\":\"#4d667b\"}},{\"name\":\"TypeScript[React] Import/Export Punctuations\",\"scope\":[\"meta.import.ts punctuation.definition.block\",\"meta.import.tsx punctuation.definition.block\",\"meta.export.ts punctuation.definition.block\",\"meta.export.tsx punctuation.definition.block\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.decorator punctuation.decorator.ts\",\"meta.decorator punctuation.decorator.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.tag.js meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"YAML Entity Name Tags\",\"scope\":[\"entity.name.tag.yaml\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"JavaScript Variable Other ReadWrite\",\"scope\":[\"variable.other.readwrite.js\",\"variable.parameter\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Support Class Component\",\"scope\":[\"support.class.component.js\",\"support.class.component.tsx\"],\"settings\":{\"foreground\":\"#aa0982\",\"fontStyle\":\"\"}},{\"name\":\"Text nested in React tags\",\"scope\":[\"meta.jsx.children\",\"meta.jsx.children.js\",\"meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"TypeScript Classes\",\"scope\":[\"meta.class entity.name.type.class.tsx\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"TypeScript Entity Name Type\",\"scope\":[\"entity.name.type.tsx\",\"entity.name.type.module.tsx\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"TypeScript Class Variable Keyword\",\"scope\":[\"meta.class.ts meta.var.expr.ts storage.type.ts\",\"meta.class.tsx meta.var.expr.tsx storage.type.tsx\"],\"settings\":{\"foreground\":\"#76578b\"}},{\"name\":\"TypeScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.ts\",\"meta.method.declaration storage.type.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"normalize font style of certain components\",\"scope\":[\"meta.property-list.css meta.property-value.css variable.other.less\",\"meta.property-list.scss variable.scss\",\"meta.property-list.sass variable.sass\",\"meta.brace\",\"keyword.operator.operator\",\"keyword.operator.or.regexp\",\"keyword.operator.expression.in\",\"keyword.operator.relational\",\"keyword.operator.assignment\",\"keyword.operator.comparison\",\"keyword.operator.type\",\"keyword.operator\",\"keyword\",\"punctuation.definintion.string\",\"punctuation\",\"variable.other.readwrite.js\",\"storage.type\",\"source.css\",\"string.quoted\"],\"settings\":{\"fontStyle\":\"\"}}],\"styleOverrides\":{\"frames\":{\"editorBackground\":\"var(--sl-color-gray-7)\",\"terminalBackground\":\"var(--sl-color-gray-7)\",\"editorActiveTabBackground\":\"var(--sl-color-gray-7)\",\"terminalTitlebarDotsForeground\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"terminalTitlebarDotsOpacity\":\"0.75\",\"inlineButtonForeground\":\"var(--sl-color-text)\",\"frameBoxShadowCssValue\":\"none\"},\"textMarkers\":{\"markBackground\":\"#0000001a\",\"markBorderColor\":\"#00000055\"}}}],\"defaultLocale\":\"en\",\"cascadeLayer\":\"starlight.components\",\"styleOverrides\":{\"borderRadius\":\"0px\",\"borderWidth\":\"1px\",\"codePaddingBlock\":\"0.75rem\",\"codePaddingInline\":\"1rem\",\"codeFontFamily\":\"var(--__sl-font-mono)\",\"codeFontSize\":\"var(--sl-text-code)\",\"codeLineHeight\":\"var(--sl-line-height)\",\"uiFontFamily\":\"var(--__sl-font)\",\"textMarkers\":{\"lineDiffIndicatorMarginLeft\":\"0.25rem\",\"defaultChroma\":\"45\",\"backgroundOpacity\":\"60%\"}},\"plugins\":[{\"name\":\"Starlight Plugin\",\"hooks\":{}},{\"name\":\"astro-expressive-code\",\"hooks\":{}}]}]],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"headingIdCompat\":false,\"preserveScriptOrder\":false,\"liveContentCollections\":false,\"csp\":false,\"staticImportMetaEnv\":false,\"chromeDevtoolsWorkspace\":false},\"legacy\":{\"collections\":false},\"prefetch\":{\"prefetchAll\":true},\"i18n\":{\"defaultLocale\":\"en\",\"locales\":[\"en\"],\"routing\":{\"prefixDefaultLocale\":false,\"redirectToDefaultLocale\":false,\"fallbackType\":\"redirect\"}}}","docs",["Map",11,12,34,35,45,46,56,57,81,82,91,92,101,102,111,112,121,122,131,132,175,176,199,200,223,224,262,263,289,290,334,335,361,362,397,398],"404",{"id":11,"data":13,"filePath":23,"digest":24,"rendered":25},{"title":11,"editUrl":14,"head":15,"template":16,"hero":17,"sidebar":20,"pagefind":22,"draft":14},false,[],"splash",{"title":11,"tagline":18,"actions":19},"Page not found. Check the URL or try using the search bar.",[],{"hidden":14,"attrs":21},{},true,"src/content/docs/404.md","bb57d46babfd3e01",{"html":26,"metadata":27},"",{"headings":28,"localImagePaths":29,"remoteImagePaths":30,"frontmatter":31,"imagePaths":33},[],[],[],{"title":11,"template":16,"editUrl":14,"hero":32},{"title":11,"tagline":18},[],"index",{"id":34,"data":36,"body":42,"filePath":43,"digest":44,"deferredRender":22},{"title":37,"description":38,"editUrl":22,"head":39,"tableOfContents":14,"template":16,"next":14,"sidebar":40,"pagefind":22,"draft":14},"🦫 OpenRag — The Open RAG Experimentation Playground","This is a page in my Starlight-powered site",[],{"hidden":14,"attrs":41},{},"import { LinkCard, CardGrid, Card } from '@astrojs/starlight/components';\nimport { Image } from 'astro:assets';\nimport myImage from \"/src/assets/RAG_architecture.png\";\n\n\u003CImage src={myImage} alt=\"RAG Architecture\" width={600} height={350} />\n\n[OpenRag](https://open-rag.ai/) is a lightweight, modular and extensible Retrieval-Augmented Generation (RAG) framework designed to explore and test advanced RAG techniques — 100% open source and focused on experimentation, not lock-in.\n\n> Built by Linagora, OpenRag offers a sovereign-by-design alternative to mainstream RAG stacks.\n\n## Getting Started\n\n\u003CCardGrid>\n \u003CLinkCard \n title=\"Quick Start\"\n icon=\"open-book\"\n href=\"getting_started/quickstart\" \n description='Step-by-step guide to get OpenRAG up and running quickly.'\n />\n \u003CLinkCard\n title=\"Other features\" \n icon=\"information\"\n href=\"documentation/features_in_details\"\n description=\"More information you want to share.\"\n />\n\u003C/CardGrid>","src/content/docs/index.mdx","32a9ed798a41db89","license",{"id":45,"data":47,"body":53,"filePath":54,"digest":55,"deferredRender":22},{"title":48,"editUrl":22,"head":49,"template":50,"sidebar":51,"pagefind":22,"draft":14},"License",[],"doc",{"hidden":14,"attrs":52},{},"OpenRag is licensed under [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.en.html). You are free to use, modify, and distribute this software in compliance with the terms of the license.\n\nFor more details, refer to the [LICENSE](https://github.com/linagora/openrag/blob/main/LICENSE) file in the repository.","src/content/docs/license.mdx","d3d5a30e5289a73a","minimum-specifications",{"id":56,"data":58,"body":63,"filePath":64,"digest":65,"rendered":66},{"title":59,"editUrl":22,"head":60,"template":50,"sidebar":61,"pagefind":22,"draft":14},"Minimum Specifications",[],{"hidden":14,"attrs":62},{},"OpenRAG can be run on a variety of hardware configurations, but still requires a minimum set of specifications.\n\n## Memory\n- Minimum: 16 GB RAM\n- Recommended: 32 GB RAM or more for better performance.\n\n## GPU\n- Minimum: NVIDIA GPU with at least 16 GB VRAM\n\n:::note\nMachines with unified memory (like Apple M-series Macs) work with at least 16 GB of RAM. However considering performance, 32 GB of RAM is recommended.","src/content/docs/minimum-specifications.md","1c6c7b709739d7c7",{"html":67,"metadata":68},"\u003Cp>OpenRAG can be run on a variety of hardware configurations, but still requires a minimum set of specifications.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"memory\">Memory\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#memory\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Memory”\u003C/span>\u003C/a>\u003C/div>\n\u003Cul>\n\u003Cli>Minimum: 16 GB RAM\u003C/li>\n\u003Cli>Recommended: 32 GB RAM or more for better performance.\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"gpu\">GPU\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#gpu\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “GPU”\u003C/span>\u003C/a>\u003C/div>\n\u003Cul>\n\u003Cli>Minimum: NVIDIA GPU with at least 16 GB VRAM\u003C/li>\n\u003C/ul>\n\u003Caside aria-label=\"Note\" class=\"starlight-aside starlight-aside--note\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z\">\u003C/path>\u003C/svg>Note\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Machines with unified memory (like Apple M-series Macs) work with at least 16 GB of RAM. However considering performance, 32 GB of RAM is recommended.\u003C/p>\u003C/div>\u003C/aside>",{"headings":69,"localImagePaths":77,"remoteImagePaths":78,"frontmatter":79,"imagePaths":80},[70,74],{"depth":71,"slug":72,"text":73},2,"memory","Memory",{"depth":71,"slug":75,"text":76},"gpu","GPU",[],[],{"title":59},[],"support-and-contribute",{"id":81,"data":83,"body":88,"filePath":89,"digest":90,"deferredRender":22},{"title":84,"editUrl":22,"head":85,"template":50,"sidebar":86,"pagefind":22,"draft":14},"Support and Contribute",[],{"hidden":14,"attrs":87},{},"We ❤️ your contributions!\n\nWe encourage you to contribute to OpenRag! Here's how you can get involved:\n1. Fork the repository on [GitHub](https://github.com/linagora/openrag).\n2. Create a new branch for your feature or fix.\n3. Submit a pull request for review.\n\nFeel free to ask **questions, suggest features, or report bugs** via the GitHub Issues page. Your feedback helps us improve!","src/content/docs/support-and-contribute.mdx","db3f67ab7f507b52","getting_started/quickstart",{"id":91,"data":93,"body":98,"filePath":99,"digest":100,"deferredRender":22},{"title":94,"editUrl":22,"head":95,"template":50,"sidebar":96,"pagefind":22,"draft":14},"Quick Start",[],{"hidden":14,"attrs":97},{},"import { Tabs, TabItem, Code } from '@astrojs/starlight/components';\nimport compose_ollama_cpu from '/src/assets/compose_ollama_cpu.yaml?raw';\nimport env_ollama_cpu from '/src/assets/env_ollama_cpu.env?raw';\nimport compose_linux_gpu from '/src/assets/compose_linux_gpu.yaml?raw';\nimport env_linux_gpu from '/src/assets/env_linux_gpu.env?raw';\n\nOpenRAG is an open source Retrieval Augmented Generation (RAG) solution. This guide is a step-by-step walkthrough to help you get started with OpenRAG.\n\n- Before proceeding, ensure your hardware meets the [recommended specifications](/minimum-specifications).\n- Install [Docker](https://www.docker.com/get-started).\n\n## Docker\n\nUse the following `docker-compose.yml` file to set up a simple OpenRAG environment:\n\n\u003CTabs>\n \u003CTabItem label=\"Linux\">\n \u003CTabs>\n \u003CTabItem label=\"Nvidia GPU\">\n \u003Cdetails>\n \u003Csummary>Click to expand the docker-compose.yml content\u003C/summary>\n \u003CCode code={compose_linux_gpu} lang=\"yaml\" />\n \u003C/details>\n You will also need to provide some environment variables. Create a `.env` file in the same directory as your `docker-compose.yml` file with the following content:\n \u003Cdetails>\n \u003Csummary>Click to expand the .env content\u003C/summary>\n \u003CCode code={env_linux_gpu} lang=\"bash\" />\n \u003C/details>\n\n \u003C/TabItem>\n \u003CTabItem label=\"CPU\">\n ```yaml\n Nothing here\n ```\n \u003C/TabItem>\n \u003C/Tabs>\n \u003C/TabItem>\n \u003CTabItem label=\"MacOS\">\n The simplest way to run OpenRAG on MacOS is to use the ollama model inference server. For more in-depth deployment options, refer to the [Docker installation guide](/installation/docker).\n \u003Cdetails>\n \u003Csummary>Click to expand the docker-compose.yml content\u003C/summary>\n \u003CCode code={compose_ollama_cpu} lang=\"yaml\" />\n \u003C/details>\n\n You will also need to provide some environment variables. Create a `.env` file in the same directory as your `docker-compose.yml` file with the following content:\n \u003Cdetails>\n \u003Csummary>Click to expand the .env content\u003C/summary>\n \u003CCode code={env_ollama_cpu} lang=\"bash\" /> \n \u003C/details>\n \u003C/TabItem>\n\u003C/Tabs>\n\n## Ansible\n\nClone the OpenRAG repository:\n```bash\ngit clone https://github.com/linagora/openrag.git\ncd openrag\n```\n\nRun the provided deployment script and follow the instructions:\n```bash\n./ansible/deploy.sh\n```","src/content/docs/getting_started/quickstart.mdx","7f0f5c9ea67f6cfb","getting_started/usage",{"id":101,"data":103,"body":108,"filePath":109,"digest":110,"deferredRender":22},{"title":104,"editUrl":22,"head":105,"template":50,"sidebar":106,"pagefind":22,"draft":14},"Usage",[],{"hidden":14,"attrs":107},{},"Once you have installed your OpenRAG instance, you can start using it to upload and query your documents.\n\n## Default ports\n\nBy default, OpenRAG services are exposed on the following ports:\n\n| Service | Port | Description |\n|-------------------|---------------|----------------------------------------------------------------|\n| API Documentation | 8080/docs | Main API for document ingestion and querying |\n| Chainlit UI | 8080/chainlit | User interface for interacting with the RAG system |\n| Ray Dashboard | 8265 | Ray dashboard for monitoring and managing tasks |\n| Indexer UI | 3043 | Main user interface for indexing and viewing indexed documents |\n\nMore information about the different services can be found in their respective documentation pages.","src/content/docs/getting_started/usage.mdx","a9e6b5eb5c8789fb","installation/ansible_setup",{"id":111,"data":113,"body":118,"filePath":119,"digest":120,"deferredRender":22},{"title":114,"editUrl":22,"head":115,"template":50,"sidebar":116,"pagefind":22,"draft":14},"Ansible",[],{"hidden":14,"attrs":117},{},"The Ansible playbooks and scripts provided help automatically set up the OpenRAG environment on one or more servers.\n\nThese scripts are designed for installation on fresh production machines.\n\n### Prerequisites\n\nEnsure the hardware hosting OpenRAG meets the [recommended specifications](/minimum-specifications).\n\n- Ansible installed on your control machine (automatically installed by `deploy.sh` if missing)\n- SSH access to target servers (if deploying remotely)\n- Ubuntu 20.04+ or similar Linux distribution on target servers\n- For remote deployment: `inventory.ini.example` file from the OpenRAG repository\n\n### Local Deployment (Easiest)\n\n```bash\ncd ansible/\n./deploy.sh\n# Choose option 1: \"Deploy to local machine\"\n# Select CPU-only or GPU-enabled deployment when prompted\n```\n\nThe local deployment will:\n- Prompt you to choose between CPU-only or GPU-enabled deployment\n- Handle all necessary configurations and installs automatically\n- Start all services\n\n### Remote Deployment\n\n1. **Create the inventory file (on the control machine):**\n ```bash\n # Rename the example inventory file\n cp inventory.ini.example inventory.ini\n \n # Edit the inventory file\n nano inventory.ini\n ```\n\n2. **Configure your servers:**\n ```ini\n [gpu_servers]\n gpu-server1 ansible_host=192.168.1.100 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa\n gpu-server2 ansible_host=192.168.1.101 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa\n\n [cpu_servers]\n cpu-server1 ansible_host=192.168.1.102 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa\n\n [all:vars]\n ansible_python_interpreter=/usr/bin/python3\n ```\n\n3. **Run the deployment:**\n ```bash\n ./deploy.sh\n # Choose option 2: \"Deploy remotely\"\n ```\n\n## Files Overview\n\n### Playbooks\n\n- **`playbook.yml`** - Main deployment playbook with separate GPU-enabled and CPU-only server configurations\n\n### Inventory Files\n\n- **`inventory.ini.example`** - Example inventory template for remote deployment\n- **`inventory.ini`** - Generated automatically for local deployment or manually created for remote deployment\n\n### Configuration\n\n- **`ansible.cfg`** - Ansible configuration settings\n\n### Scripts\n\n- **`deploy.sh`** - Interactive deployment and management\n\n## Manual Deployment\n\nIf you prefer to run Ansible commands directly:\n\n### Local/Remote Deployment\n```bash\n# Create inventory first\nansible-playbook -i inventory.ini playbook.yml --ask-become-pass\n```\n\n### Check Status\n```bash\nansible all -i inventory.ini -m shell -a \"docker ps\" --become\n```\n\n## Service Management\n\nThe deployment script provides several management options:\n\n### Interactive Mode\n```bash\n./deploy.sh\n```\n\n### Command Line Mode\n```bash\n# Deploy locally\n./deploy.sh deploy-local\n\n# Deploy remotely \n./deploy.sh deploy-remote\n\n# Check status\n./deploy.sh status\n\n# Stop services\n./deploy.sh stop\n\n# Start services\n./deploy.sh start\n\n# View logs\n./deploy.sh logs [service_name]\n\n# Update deployment\n./deploy.sh update\n\n# Complete removal\n./deploy.sh remove-all\n```\n\n## What Gets Installed\n\n### System Packages\n- Docker CE with Compose plugin\n- NVIDIA drivers (if GPU detected and GPU server group is used)\n- NVIDIA Container Toolkit (for GPU servers)\n- Python 3 with pip and uv package manager\n- Essential development tools\n\n### OpenRAG Components\n- Complete OpenRAG codebase from GitHub\n- All required Python dependencies installed via `uv`\n- Docker containers for OpenRAG services with appropriate profiles:\n - GPU servers: Default profile (includes GPU-accelerated services)\n - CPU servers: CPU profile (CPU-only services)\n\n### Directory Structure\n```\n/home/[user]/openrag/\n├── data/ # Document storage\n├── db/ # Database files\n├── logs/ # Application logs\n├── .hydra_config/ # Hydra configuration cache\n├── model_weights/ # Cached model files\n├── vdb/volumes/ # Vector database volumes\n├── .env # Environment configuration\n└── ... # OpenRAG source code\n```\n\n## Configuration\n\n### Environment Variables\n\nThe deployment automatically creates a `.env` file from `.env.example` or copies a local `.env` file if present. Key variables to customize:\n\n```bash\n# LLM Configuration\nBASE_URL=http://your-llm-endpoint\nAPI_KEY=your-api-key\nMODEL=your-model-name\n\n# Application Settings\nAPP_PORT=8080\nRETRIEVER_TOP_K=20\n\n# Embedder Settings\nEMBEDDER_MODEL_NAME=Qwen/Qwen3-Embedding-0.6B\n```\n\n### Version Configuration\n\nThe playbook uses these default versions (configurable via inventory variables):\n\n```yaml\n# Docker and NVIDIA versions\ndocker_compose_version: \"2.21.0\"\nnvidia_driver_version: \"535\"\ndocker_ce_version: \"latest\"\nnvidia_container_toolkit_version: \"1.17.8-1\"\n```\n\n### Inventory Variables\n\nYou can set variables in your inventory file:\n\n```ini\n[gpu_servers:vars]\nnvidia_driver_version=535\nproject_user=ubuntu\nproject_path=/home/ubuntu/openrag\n\n[cpu_servers:vars]\nproject_user=ubuntu\nproject_path=/home/ubuntu/openrag\n\n[all:vars]\nansible_python_interpreter=/usr/bin/python3\n```\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Docker permission denied**\n ```bash\n # Re-login to apply docker group membership\n sudo su - $USER\n ```\n\n2. **NVIDIA driver installation fails**\n ```bash\n # Check GPU compatibility\n lspci | grep -i nvidia\n ```\n\n3. **Services not starting**\n ```bash\n # Check logs\n docker compose logs\n ```\n\n### Manual Recovery\n\nIf something goes wrong, you can manually clean up:\n\n```bash\n# Stop all containers\ndocker compose down\n\n# Remove containers and images\ndocker system prune -a\n\n# Re-run deployment\n./deploy.sh\n```\n\n### Complete System Reset\n\nFor a complete removal of all components (Docker, NVIDIA drivers, OpenRAG):\n\n```bash\n# Use the deployment script's removal option\n./deploy.sh remove-all\n```\n\n**Warning**: This will remove Docker, NVIDIA drivers, and all related components. Use with caution!\n\nFor OpenRAG application issues, refer to the [main project documentation](/documentation/api_documentation).","src/content/docs/installation/ansible_setup.mdx","64f2a20df5132959","installation/docker",{"id":121,"data":123,"body":128,"filePath":129,"digest":130,"deferredRender":22},{"title":124,"editUrl":22,"head":125,"template":50,"sidebar":126,"pagefind":22,"draft":14},"Docker",[],{"hidden":14,"attrs":127},{},"OpenRAG is most comprehensively deployed using Docker.\n\n- Before proceeding, ensure your hardware meets the [recommended specifications](/minimum-specifications).\n- Install [Docker](https://www.docker.com/get-started).\n\nThe OpenRAG docker image is available on [DockerHub](https://hub.docker.com/r/rcordier/openrag) and the [GitHub Container Registry](https://github.com/linagora/openrag/pkgs/container/openrag).\n\n## Docker Compose\n\nOpenRAG requires several services to run, which can be orchestrated using Docker Compose.","src/content/docs/installation/docker.mdx","7ea95b6e50954f61","documentation/deploy_ray_cluster",{"id":131,"data":133,"body":138,"filePath":139,"digest":140,"rendered":141},{"title":134,"editUrl":22,"head":135,"template":50,"sidebar":136,"pagefind":22,"draft":14},"Ray Cluster",[],{"hidden":14,"attrs":137},{},"# ⚡ Distributed Deployment in a Ray Cluster\n\nThis guide explains how to deploy **OpenRAG** across multiple machines using **Ray** for distributed indexing and processing.\n\n---\n\n## ✅ 1. Set Environment Variables\n\nEnsure your `.env` file includes the standard app variables **plus Ray-specific ones** listed below:\n\n```bash \n// .env\n# Ray\n# Resources for all files\nRAY_NUM_GPUS=0.1\nRAY_POOL_SIZE=1\nRAY_MAX_TASKS_PER_WORKER=5\n\n# PDF specific resources when using marker\nMARKER_MAX_TASKS_PER_CHILD=10\nMARKER_MAX_PROCESSES=5 # Number of subprocesses \u003C-> Number of concurrent pdfs per worker\nMARKER_MIN_PROCESSES=3 # Minimum number of subprocesses available before triggering a process pool reset.\nMARKER_POOL_SIZE=1 # Number of workers (typically 1 worker per cluster node)\nMARKER_NUM_GPUS=0.6\n\nSHARED_ENV=/ray_mount/.env\nRAY_DASHBOARD_PORT=8265\nRAY_ADDRESS=ray://X.X.X.X:10001\nHEAD_NODE_IP=X.X.X.X\nRAY_HEAD_ADDRESS=X.X.X.X:6379\n# RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # to enable logs at task level in ray dashboard\nRAY_task_retry_delay_ms=3000\n\n# Ray volumes\nDATA_VOLUME=/ray_mount/data\nMODEL_WEIGHTS_VOLUME=/ray_mount/model_weights\nCONFIG_VOLUME=/ray_mount/.hydra_config\nUV_LINK_MODE=copy\nUV_CACHE_DIR=/tmp/uv-cache \n```\n\n✅ Use host IPs instead of Docker service names :\n\n```diff lang=\"bash\"\n// .env\n- EMBEDDER_BASE_URL=http://vllm:8000/v1\n+ EMBEDDER_BASE_URL=http://\u003CHOST-IP>:8000/v1 # ✅ instead of http://vllm:8000/v1\n\n- VDB_HOST=milvus\n+ VDB_HOST=\u003CHOST-IP> # ✅ instead of VDB_HOST=milvus\n```\n\n:::tip[🧠 **Tips**]\n- `RAY_NUM_GPUS` defines **per-actor resource requirements**. Ray will not start a task until these resources are available on one of the nodes. \nFor example, if one indexation consumes ~1GB of VRAM and your GPU has 4GB, setting `RAY_NUM_GPUS=0.25` allows you to run **4 indexers per node**. In a 2-node cluster, that means up to **8 concurrent indexation tasks**. \n\n- `RAY_POOL_SIZE` defines the number of worker actors that will be created to handle indexation tasks. It acts like a **maximum concurrency limit**. \nUsing the previous example, you can set `POOL_SIZE=8` to fully utilize your cluster capacity.\n:::\n\n:::caution\nIf other GPU-intensive services are running on your nodes (e.g. vLLM, the RAG API), make sure to **reserve enough GPU memory** for them and subtract that from your total when calculating the safe pool size.\n:::\n\n---\n\n## 📁 2. Set Up Shared Storage\n\nAll nodes need to access shared configuration and data folders. \nWe recommend using **GlusterFS** for this.\n\n➡ Follow the [GlusterFS Setup Guide](/documentation/setup_glusterfs/) to configure:\n\n- Shared access to:\n - `.env`\n - `.hydra_config`\n - `/data` (uploaded files)\n - `/model_weights` (embedding model cache)\n\n---\n\n## 🚀 3. Start the Ray Cluster\n\nFirst, prepare your `cluster.yaml` file. Here's an example for a **local provider**:\n\n```yaml\n// cluster.yaml\ncluster_name: rag-cluster\nprovider:\n type: local\n head_ip: 10.0.0.1\n worker_ips: [10.0.0.2] # Static IPs of other nodes (does not auto-start workers)\n\ndocker:\n image: ghcr.io/linagora/openrag-ray\n pull_before_run: true\n container_name: ray_node\n run_options:\n - --gpus all\n - -v /ray_mount/model_weights:/app/model_weights\n - -v /ray_mount/data:/app/data\n - -v /ray_mount/.hydra_config:/app/.hydra_config\n - -v /ray_mount/logs:/app/logs\n - --env-file /ray_mount/.env\n\nauth:\n ssh_user: ubuntu\n ssh_private_key: path/to/private/key # Replace with your actual ssh key path\n\nhead_start_ray_commands:\n - uv run ray stop\n - uv run ray start --head --dashboard-host 0.0.0.0 --dashboard-port ${RAY_DASHBOARD_PORT:-8265} --node-ip-address ${HEAD_NODE_IP} --autoscaling-config=~/ray_bootstrap_config.yaml\nworker_start_ray_commands:\n - uv run ray stop\n - uv run ray start --address ${HEAD_NODE_IP:-10.0.0.1}:6379\n```\n\n> 🛠️ The base image (`ghcr.io/linagora/openrag-ray`) must be built from `Dockerfile.ray` and pushed to a container registry before use.\n\n### ⬆️ Launch the cluster\n\n```bash\nuv run ray up -y cluster.yaml\n```\n\n## 🐳 4. Launch the OpenRAG App\n\nUse the Docker Compose setup:\n\n```bash\ndocker compose up -d\n```\n\nOnce running, **OpenRAG will auto-connect** to the Ray cluster using `RAY_ADDRESS` from `.env`.\n\n---\n\nWith this setup, your app is now fully distributed and ready to handle concurrent tasks across your Ray cluster.\n\n\n## 🛠️ Troubleshooting\n\n### ❌ Permission Denied Errors\n\nIf you encounter errors like `Permission denied` when Ray or Docker tries to access shared folders (SQL database, model files, ...), it's likely due to insufficient permissions on the host system.\n\n👉 To resolve this, you can set full read/write/execute permissions on the shared directory:\n\n```bash\nsudo chmod -R 777 /ray_mount\n```","src/content/docs/documentation/deploy_ray_cluster.md","941894a362fee25d",{"html":142,"metadata":143},"\u003Cdiv class=\"sl-heading-wrapper level-h1\">\u003Ch1 id=\"-distributed-deployment-in-a-ray-cluster\">⚡ Distributed Deployment in a Ray Cluster\u003C/h1>\u003Ca class=\"sl-anchor-link\" href=\"#-distributed-deployment-in-a-ray-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “⚡ Distributed Deployment in a Ray Cluster”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>This guide explains how to deploy \u003Cstrong>OpenRAG\u003C/strong> across multiple machines using \u003Cstrong>Ray\u003C/strong> for distributed indexing and processing.\u003C/p>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-1-set-environment-variables\">✅ 1. Set Environment Variables\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-1-set-environment-variables\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “✅ 1. Set Environment Variables”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Ensure your \u003Ccode dir=\"auto\">.env\u003C/code> file includes the standard app variables \u003Cstrong>plus Ray-specific ones\u003C/strong> listed below:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Ray\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Resources for all files\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_NUM_GPUS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">0.1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_POOL_SIZE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_MAX_TASKS_PER_WORKER\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">5\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># PDF specific resources when using marker\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_MAX_TASKS_PER_CHILD\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">10\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_MAX_PROCESSES\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">5\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Number of subprocesses <-> Number of concurrent pdfs per worker\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_MIN_PROCESSES\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">3\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Minimum number of subprocesses available before triggering a process pool reset.\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_POOL_SIZE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">1\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Number of workers (typically 1 worker per cluster node)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_NUM_GPUS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">0.6\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">SHARED_ENV\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/.env\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_DASHBOARD_PORT\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">8265\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_ADDRESS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ray://X.X.X.X:10001\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">HEAD_NODE_IP\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">X.X.X.X\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_HEAD_ADDRESS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">X.X.X.X:6379\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # to enable logs at task level in ray dashboard\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_task_retry_delay_ms\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">3000\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Ray volumes\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">DATA_VOLUME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/data\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MODEL_WEIGHTS_VOLUME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/model_weights\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CONFIG_VOLUME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/.hydra_config\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">UV_LINK_MODE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">copy\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">UV_CACHE_DIR\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/tmp/uv-cache\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"# Ray# Resources for all filesRAY_NUM_GPUS=0.1RAY_POOL_SIZE=1RAY_MAX_TASKS_PER_WORKER=5# PDF specific resources when using markerMARKER_MAX_TASKS_PER_CHILD=10MARKER_MAX_PROCESSES=5 # Number of subprocesses \u003C-> Number of concurrent pdfs per workerMARKER_MIN_PROCESSES=3 # Minimum number of subprocesses available before triggering a process pool reset.MARKER_POOL_SIZE=1 # Number of workers (typically 1 worker per cluster node)MARKER_NUM_GPUS=0.6SHARED_ENV=/ray_mount/.envRAY_DASHBOARD_PORT=8265RAY_ADDRESS=ray://X.X.X.X:10001HEAD_NODE_IP=X.X.X.XRAY_HEAD_ADDRESS=X.X.X.X:6379# RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # to enable logs at task level in ray dashboardRAY_task_retry_delay_ms=3000# Ray volumesDATA_VOLUME=/ray_mount/dataMODEL_WEIGHTS_VOLUME=/ray_mount/model_weightsCONFIG_VOLUME=/ray_mount/.hydra_configUV_LINK_MODE=copyUV_CACHE_DIR=/tmp/uv-cache\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>✅ Use host IPs instead of Docker service names :\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line highlight del\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2c4984\">EMBEDDER_BASE_URL\u003C/span>\u003Cspan style=\"--0:#d0a3ed;--1:#663383\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2c4984\">http://vllm:8000/v1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line highlight ins\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2d4a87\">EMBEDDER_BASE_URL\u003C/span>\u003Cspan style=\"--0:#d2a6ee;--1:#6a3588\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2d4a87\">http://<HOST-IP>:8000/v1\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#aeb8b8;--1:#494c55\"># ✅ instead of http://vllm:8000/v1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line highlight del\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2c4984\">VDB_HOST\u003C/span>\u003Cspan style=\"--0:#d0a3ed;--1:#663383\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2c4984\">milvus\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line highlight ins\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2d4a87\">VDB_HOST\u003C/span>\u003Cspan style=\"--0:#d2a6ee;--1:#6a3588\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2d4a87\"><HOST-IP>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#aeb8b8;--1:#494c55\"># ✅ instead of VDB_HOST=milvus\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\" EMBEDDER_BASE_URL=http://vllm:8000/v1 EMBEDDER_BASE_URL=http://\u003CHOST-IP>:8000/v1 # ✅ instead of http://vllm:8000/v1 VDB_HOST=milvus VDB_HOST=\u003CHOST-IP> # ✅ instead of VDB_HOST=milvus\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Caside aria-label=\"🧠 Tips\" class=\"starlight-aside starlight-aside--tip\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.43909 8.85483L1.44039 8.85354L4.96668 5.33815C5.30653 4.99386 5.7685 4.79662 6.2524 4.78972L6.26553 4.78963L12.9014 4.78962L13.8479 3.84308C16.9187 0.772319 20.0546 0.770617 21.4678 0.975145C21.8617 1.02914 22.2271 1.21053 22.5083 1.4917C22.7894 1.77284 22.9708 2.13821 23.0248 2.53199C23.2294 3.94517 23.2278 7.08119 20.1569 10.1521L19.2107 11.0983V17.7338L19.2106 17.7469C19.2037 18.2308 19.0067 18.6933 18.6624 19.0331L15.1456 22.5608C14.9095 22.7966 14.6137 22.964 14.29 23.0449C13.9663 23.1259 13.6267 23.1174 13.3074 23.0204C12.9881 22.9235 12.7011 22.7417 12.4771 22.4944C12.2533 22.2473 12.1006 21.9441 12.0355 21.6171L11.1783 17.3417L6.65869 12.822L4.34847 12.3589L2.38351 11.965C2.05664 11.8998 1.75272 11.747 1.50564 11.5232C1.25835 11.2992 1.07653 11.0122 0.979561 10.6929C0.882595 10.3736 0.874125 10.034 0.955057 9.7103C1.03599 9.38659 1.20328 9.09092 1.43909 8.85483ZM6.8186 10.8724L2.94619 10.096L6.32006 6.73268H10.9583L6.8186 10.8724ZM15.2219 5.21703C17.681 2.75787 20.0783 2.75376 21.1124 2.8876C21.2462 3.92172 21.2421 6.31895 18.783 8.77812L12.0728 15.4883L8.51172 11.9272L15.2219 5.21703ZM13.9042 21.0538L13.1279 17.1811L17.2676 13.0414V17.68L13.9042 21.0538Z\">\u003C/path>\u003Cpath d=\"M9.31827 18.3446C9.45046 17.8529 9.17864 17.3369 8.68945 17.1724C8.56178 17.1294 8.43145 17.1145 8.30512 17.1243C8.10513 17.1398 7.91519 17.2172 7.76181 17.3434C7.62613 17.455 7.51905 17.6048 7.45893 17.7835C6.97634 19.2186 5.77062 19.9878 4.52406 20.4029C4.08525 20.549 3.6605 20.644 3.29471 20.7053C3.35607 20.3395 3.45098 19.9148 3.59711 19.476C4.01221 18.2294 4.78141 17.0237 6.21648 16.5411C6.39528 16.481 6.54504 16.3739 6.65665 16.2382C6.85126 16.0016 6.92988 15.678 6.84417 15.3647C6.83922 15.3466 6.83373 15.3286 6.82767 15.3106C6.74106 15.053 6.55701 14.8557 6.33037 14.7459C6.10949 14.6389 5.84816 14.615 5.59715 14.6994C5.47743 14.7397 5.36103 14.7831 5.24786 14.8294C3.22626 15.6569 2.2347 17.4173 1.75357 18.8621C1.49662 19.6337 1.36993 20.3554 1.30679 20.8818C1.27505 21.1464 1.25893 21.3654 1.25072 21.5213C1.24662 21.5993 1.24448 21.6618 1.24337 21.7066L1.243 21.7226L1.24235 21.7605L1.2422 21.7771L1.24217 21.7827L1.24217 21.7856C1.24217 22.3221 1.67703 22.7579 2.2137 22.7579L2.2155 22.7579L2.22337 22.7578L2.23956 22.7577C2.25293 22.7575 2.27096 22.7572 2.29338 22.7567C2.33821 22.7555 2.40073 22.7534 2.47876 22.7493C2.63466 22.7411 2.85361 22.725 3.11822 22.6932C3.64462 22.6301 4.36636 22.5034 5.13797 22.2464C6.58274 21.7653 8.3431 20.7738 9.17063 18.7522C9.21696 18.639 9.26037 18.5226 9.30064 18.4029C9.30716 18.3835 9.31304 18.364 9.31827 18.3446Z\">\u003C/path>\u003C/svg>🧠 \u003Cstrong>Tips\u003C/strong>\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cul>\n\u003Cli>\n\u003Cp>\u003Ccode dir=\"auto\">RAY_NUM_GPUS\u003C/code> defines \u003Cstrong>per-actor resource requirements\u003C/strong>. Ray will not start a task until these resources are available on one of the nodes.\u003Cbr>\nFor example, if one indexation consumes ~1GB of VRAM and your GPU has 4GB, setting \u003Ccode dir=\"auto\">RAY_NUM_GPUS=0.25\u003C/code> allows you to run \u003Cstrong>4 indexers per node\u003C/strong>. In a 2-node cluster, that means up to \u003Cstrong>8 concurrent indexation tasks\u003C/strong>.\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Ccode dir=\"auto\">RAY_POOL_SIZE\u003C/code> defines the number of worker actors that will be created to handle indexation tasks. It acts like a \u003Cstrong>maximum concurrency limit\u003C/strong>.\u003Cbr>\nUsing the previous example, you can set \u003Ccode dir=\"auto\">POOL_SIZE=8\u003C/code> to fully utilize your cluster capacity.\u003C/p>\n\u003C/li>\n\u003C/ul>\u003C/div>\u003C/aside>\n\u003Caside aria-label=\"Caution\" class=\"starlight-aside starlight-aside--caution\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 16C11.8022 16 11.6089 16.0587 11.4444 16.1686C11.28 16.2784 11.1518 16.4346 11.0761 16.6173C11.0004 16.8001 10.9806 17.0011 11.0192 17.1951C11.0578 17.3891 11.153 17.5673 11.2929 17.7071C11.4327 17.847 11.6109 17.9422 11.8049 17.9808C11.9989 18.0194 12.2 17.9996 12.3827 17.9239C12.5654 17.8482 12.7216 17.72 12.8315 17.5556C12.9413 17.3911 13 17.1978 13 17C13 16.7348 12.8946 16.4805 12.7071 16.2929C12.5196 16.1054 12.2652 16 12 16ZM22.67 17.47L14.62 3.47003C14.3598 3.00354 13.9798 2.61498 13.5192 2.3445C13.0586 2.07401 12.5341 1.9314 12 1.9314C11.4659 1.9314 10.9414 2.07401 10.4808 2.3445C10.0202 2.61498 9.64019 3.00354 9.38 3.47003L1.38 17.47C1.11079 17.924 0.966141 18.441 0.960643 18.9688C0.955144 19.4966 1.089 20.0166 1.34868 20.4761C1.60837 20.9356 1.9847 21.3185 2.43968 21.5861C2.89466 21.8536 3.41218 21.9964 3.94 22H20.06C20.5921 22.0053 21.1159 21.8689 21.5779 21.6049C22.0399 21.341 22.4234 20.9589 22.689 20.4978C22.9546 20.0368 23.0928 19.5134 23.0895 18.9814C23.0862 18.4493 22.9414 17.9277 22.67 17.47ZM20.94 19.47C20.8523 19.626 20.7245 19.7556 20.5697 19.8453C20.4149 19.935 20.2389 19.9815 20.06 19.98H3.94C3.76111 19.9815 3.5851 19.935 3.43032 19.8453C3.27553 19.7556 3.14765 19.626 3.06 19.47C2.97223 19.318 2.92602 19.1456 2.92602 18.97C2.92602 18.7945 2.97223 18.622 3.06 18.47L11.06 4.47003C11.1439 4.30623 11.2714 4.16876 11.4284 4.07277C11.5855 3.97678 11.766 3.92599 11.95 3.92599C12.134 3.92599 12.3145 3.97678 12.4716 4.07277C12.6286 4.16876 12.7561 4.30623 12.84 4.47003L20.89 18.47C20.9892 18.6199 21.0462 18.7937 21.055 18.9732C21.0638 19.1527 21.0241 19.3312 20.94 19.49V19.47ZM12 8.00003C11.7348 8.00003 11.4804 8.10538 11.2929 8.29292C11.1054 8.48046 11 8.73481 11 9.00003V13C11 13.2652 11.1054 13.5196 11.2929 13.7071C11.4804 13.8947 11.7348 14 12 14C12.2652 14 12.5196 13.8947 12.7071 13.7071C12.8946 13.5196 13 13.2652 13 13V9.00003C13 8.73481 12.8946 8.48046 12.7071 8.29292C12.5196 8.10538 12.2652 8.00003 12 8.00003Z\">\u003C/path>\u003C/svg>Caution\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>If other GPU-intensive services are running on your nodes (e.g. vLLM, the RAG API), make sure to \u003Cstrong>reserve enough GPU memory\u003C/strong> for them and subtract that from your total when calculating the safe pool size.\u003C/p>\u003C/div>\u003C/aside>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-2-set-up-shared-storage\">📁 2. Set Up Shared Storage\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-2-set-up-shared-storage\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📁 2. Set Up Shared Storage”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>All nodes need to access shared configuration and data folders.\u003Cbr>\nWe recommend using \u003Cstrong>GlusterFS\u003C/strong> for this.\u003C/p>\n\u003Cp>➡ Follow the \u003Ca href=\"/documentation/setup_glusterfs/\">GlusterFS Setup Guide\u003C/a> to configure:\u003C/p>\n\u003Cul>\n\u003Cli>Shared access to:\n\u003Cul>\n\u003Cli>\u003Ccode dir=\"auto\">.env\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">.hydra_config\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">/data\u003C/code> (uploaded files)\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">/model_weights\u003C/code> (embedding model cache)\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-3-start-the-ray-cluster\">🚀 3. Start the Ray Cluster\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-3-start-the-ray-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🚀 3. Start the Ray Cluster”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>First, prepare your \u003Ccode dir=\"auto\">cluster.yaml\u003C/code> file. Here’s an example for a \u003Cstrong>local provider\u003C/strong>:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">cluster.yaml\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"yaml\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">cluster_name\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">rag-cluster\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">provider\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">type\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">local\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">head_ip\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">worker_ips\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: [\u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.2\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">] \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Static IPs of other nodes (does not auto-start workers)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">docker\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">image\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ghcr.io/linagora/openrag-ray\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">pull_before_run\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#FF6A83;--1:#A24848\">true\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">container_name\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ray_node\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">run_options\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">--gpus all\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/model_weights:/app/model_weights\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/data:/app/data\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/.hydra_config:/app/.hydra_config\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/logs:/app/logs\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">--env-file /ray_mount/.env\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">auth\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">ssh_user\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ubuntu\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">ssh_private_key\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">path/to/private/key\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Replace with your actual ssh key path\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">head_start_ray_commands\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray stop\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray start --head --dashboard-host 0.0.0.0 --dashboard-port ${RAY_DASHBOARD_PORT:-8265} --node-ip-address ${HEAD_NODE_IP} --autoscaling-config=~/ray_bootstrap_config.yaml\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">worker_start_ray_commands\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray stop\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray start --address ${HEAD_NODE_IP:-10.0.0.1}:6379\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"cluster_name: rag-clusterprovider: type: local head_ip: 10.0.0.1 worker_ips: [10.0.0.2] # Static IPs of other nodes (does not auto-start workers)docker: image: ghcr.io/linagora/openrag-ray pull_before_run: true container_name: ray_node run_options: - --gpus all - -v /ray_mount/model_weights:/app/model_weights - -v /ray_mount/data:/app/data - -v /ray_mount/.hydra_config:/app/.hydra_config - -v /ray_mount/logs:/app/logs - --env-file /ray_mount/.envauth: ssh_user: ubuntu ssh_private_key: path/to/private/key # Replace with your actual ssh key pathhead_start_ray_commands: - uv run ray stop - uv run ray start --head --dashboard-host 0.0.0.0 --dashboard-port ${RAY_DASHBOARD_PORT:-8265} --node-ip-address ${HEAD_NODE_IP} --autoscaling-config=~/ray_bootstrap_config.yamlworker_start_ray_commands: - uv run ray stop - uv run ray start --address ${HEAD_NODE_IP:-10.0.0.1}:6379\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cblockquote>\n\u003Cp>🛠️ The base image (\u003Ccode dir=\"auto\">ghcr.io/linagora/openrag-ray\u003C/code>) must be built from \u003Ccode dir=\"auto\">Dockerfile.ray\u003C/code> and pushed to a container registry before use.\u003C/p>\n\u003C/blockquote>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"️-launch-the-cluster\">⬆️ Launch the cluster\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#️-launch-the-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “⬆️ Launch the cluster”\u003C/span>\u003C/a>\u003C/div>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">uv\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">run\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ray\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">up\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">cluster.yaml\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"uv run ray up -y cluster.yaml\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-4-launch-the-openrag-app\">🐳 4. Launch the OpenRAG App\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-4-launch-the-openrag-app\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🐳 4. Launch the OpenRAG App”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Use the Docker Compose setup:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">docker\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">compose\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">up\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-d\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"docker compose up -d\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Once running, \u003Cstrong>OpenRAG will auto-connect\u003C/strong> to the Ray cluster using \u003Ccode dir=\"auto\">RAY_ADDRESS\u003C/code> from \u003Ccode dir=\"auto\">.env\u003C/code>.\u003C/p>\n\u003Chr>\n\u003Cp>With this setup, your app is now fully distributed and ready to handle concurrent tasks across your Ray cluster.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"️-troubleshooting\">🛠️ Troubleshooting\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#️-troubleshooting\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🛠️ Troubleshooting”\u003C/span>\u003C/a>\u003C/div>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-permission-denied-errors\">❌ Permission Denied Errors\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-permission-denied-errors\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “❌ Permission Denied Errors”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>If you encounter errors like \u003Ccode dir=\"auto\">Permission denied\u003C/code> when Ray or Docker tries to access shared folders (SQL database, model files, …), it’s likely due to insufficient permissions on the host system.\u003C/p>\n\u003Cp>👉 To resolve this, you can set full read/write/execute permissions on the shared directory:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">chmod\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-R\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">777\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo chmod -R 777 /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>",{"headings":144,"localImagePaths":171,"remoteImagePaths":172,"frontmatter":173,"imagePaths":174},[145,149,152,155,158,162,165,168],{"depth":146,"slug":147,"text":148},1,"-distributed-deployment-in-a-ray-cluster","⚡ Distributed Deployment in a Ray Cluster",{"depth":71,"slug":150,"text":151},"-1-set-environment-variables","✅ 1. Set Environment Variables",{"depth":71,"slug":153,"text":154},"-2-set-up-shared-storage","📁 2. Set Up Shared Storage",{"depth":71,"slug":156,"text":157},"-3-start-the-ray-cluster","🚀 3. Start the Ray Cluster",{"depth":159,"slug":160,"text":161},3,"️-launch-the-cluster","⬆️ Launch the cluster",{"depth":71,"slug":163,"text":164},"-4-launch-the-openrag-app","🐳 4. Launch the OpenRAG App",{"depth":71,"slug":166,"text":167},"️-troubleshooting","🛠️ Troubleshooting",{"depth":159,"slug":169,"text":170},"-permission-denied-errors","❌ Permission Denied Errors",[],[],{"title":134},[],"documentation/setup_chainlit_ui_auth",{"id":175,"data":177,"body":182,"filePath":183,"digest":184,"rendered":185},{"title":178,"editUrl":22,"head":179,"template":50,"sidebar":180,"pagefind":22,"draft":14},"Chainlit Authentification",[],{"hidden":14,"attrs":181},{},"To configure password-based authentication for your Chainlit UI, add the following environment variables to your `.env` file:\n## Step 1: Set up the authentication secret\n\nFirst, define a **`CHAINLIT_AUTH_SECRET`** environment variable. You can generate one automatically using the command `chainlit create-secret` (or `uv run chainlit create-secret` if using uv). Alternatively, you can provide your own **custom value**.\n\nFor detailed information about this variable, see the [Chainlit authentication documentation](https://docs.chainlit.io/authentication/overview).\n\n## Step 2: Configure username and password\n\nFor password-based authentication (see [Chainlit password authentication docs](https://docs.chainlit.io/authentication/password)), add your desired username and password to the `.env` file:\n\n```bash\n// .env\nCHAINLIT_AUTH_SECRET=...\nCHAINLIT_USERNAME=OpenRAG\nCHAINLIT_PASSWORD=OpenRAG2025\n```\n\nThis configuration will enable secure access to your Chainlit application using the specified credentials.","src/content/docs/documentation/setup_chainlit_ui_auth.md","1462d16f7e5c096c",{"html":186,"metadata":187},"\u003Cp>To configure password-based authentication for your Chainlit UI, add the following environment variables to your \u003Ccode dir=\"auto\">.env\u003C/code> file:\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"step-1-set-up-the-authentication-secret\">Step 1: Set up the authentication secret\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#step-1-set-up-the-authentication-secret\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 1: Set up the authentication secret”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>First, define a \u003Cstrong>\u003Ccode dir=\"auto\">CHAINLIT_AUTH_SECRET\u003C/code>\u003C/strong> environment variable. You can generate one automatically using the command \u003Ccode dir=\"auto\">chainlit create-secret\u003C/code> (or \u003Ccode dir=\"auto\">uv run chainlit create-secret\u003C/code> if using uv). Alternatively, you can provide your own \u003Cstrong>custom value\u003C/strong>.\u003C/p>\n\u003Cp>For detailed information about this variable, see the \u003Ca href=\"https://docs.chainlit.io/authentication/overview\">Chainlit authentication documentation\u003C/a>.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"step-2-configure-username-and-password\">Step 2: Configure username and password\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#step-2-configure-username-and-password\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 2: Configure username and password”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>For password-based authentication (see \u003Ca href=\"https://docs.chainlit.io/authentication/password\">Chainlit password authentication docs\u003C/a>), add your desired username and password to the \u003Ccode dir=\"auto\">.env\u003C/code> file:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_AUTH_SECRET\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">...\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_USERNAME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">OpenRAG\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_PASSWORD\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">OpenRAG2025\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"CHAINLIT_AUTH_SECRET=...CHAINLIT_USERNAME=OpenRAGCHAINLIT_PASSWORD=OpenRAG2025\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>This configuration will enable secure access to your Chainlit application using the specified credentials.\u003C/p>",{"headings":188,"localImagePaths":195,"remoteImagePaths":196,"frontmatter":197,"imagePaths":198},[189,192],{"depth":71,"slug":190,"text":191},"step-1-set-up-the-authentication-secret","Step 1: Set up the authentication secret",{"depth":71,"slug":193,"text":194},"step-2-configure-username-and-password","Step 2: Configure username and password",[],[],{"title":178},[],"documentation/chainlit_data_persistency",{"id":199,"data":201,"body":206,"filePath":207,"digest":208,"rendered":209},{"title":202,"editUrl":22,"head":203,"template":50,"sidebar":204,"pagefind":22,"draft":14},"Chainlit Data Persistency",[],{"hidden":14,"attrs":205},{},"The [Chainlit data layer](https://docs.chainlit.io/data-layers/overview) allows you to persist conversations in chainlit.\nThis project uses a [dockerized fork](https://github.com/Chainlit/chainlit-datalayer) for easier deployment and setup.\n\nIn OpenRAG, one can activate **`Chainlit data layer`** following these steps:\n\n### Step 1: Set up authentication\nIn fact, chainlit authentication is necessary for data persistency. Set chainlit authentication if not already done (refer to the [chainlit auth guide](./setup_chainlit_ui_auth.md))\n\n### Step 2: Add the following variables\nTo deploy the Chainlit data layer service, add the following variable:\n```bash\n// .env\n# Persistency services: postgres (localstack (AWS emulator deployed locally)\nCHAINLIT_DATALAYER_COMPOSE=extern/chainlit-datalayer/compose.yaml\n```\nThis provides 2 services:\n- a postgres database to store users, feedback, chat history, etc\n- \"s3 bucket\" emulator to store elements (files attached in the chat). \n\n:::note\nChainlit datalayer is cloud-compatible, and the same applies for local data persistency. So for local storage, a cloud/s3 service emulator that runs in a container is deployed as well.\n:::\n\n* Variables for the postgres data\n\n:::tip{icon=\"heart\"}\nKnowing that OpenRAG already has a running postgres service (**`rdb`**) (refer to the [docker-compose.yaml](/docker-compose.yaml) file), there is no need to deploy another postgres service. In that case, comment out the postgres service definition in the [compose.yaml](/extern/chainlit-datalayer/compose.yaml) file and add the following variable to your .env\n:::\n\n```bash\n// .env\nDATABASE_URL=postgresql://root:root_password@rdb:5432/chainlit\n```\n* Variables for chainlit to use the **`S3 Bucket`**\nAdd the following variables to your `.env` so that chainlit can use them to connect to the locally deployed S3 bucket\n\n```bash\n// .env\n## S3 bucket configuration.\nBUCKET_NAME=my-bucket\nAPP_AWS_ACCESS_KEY=random-key\nAPP_AWS_SECRET_KEY=random-key\nAPP_AWS_REGION=eu-central-1\nDEV_AWS_ENDPOINT=http://localstack:4566\n```\n\n:::tip{icon=\"seti:info\"}\nIf you want to deactivate the service, comment out these variables, especially **`CHAINLIT_DATALAYER_COMPOSE`**.\n:::","src/content/docs/documentation/chainlit_data_persistency.md","92bebacc0879485a",{"html":210,"metadata":211},"\u003Cp>The \u003Ca href=\"https://docs.chainlit.io/data-layers/overview\">Chainlit data layer\u003C/a> allows you to persist conversations in chainlit.\nThis project uses a \u003Ca href=\"https://github.com/Chainlit/chainlit-datalayer\">dockerized fork\u003C/a> for easier deployment and setup.\u003C/p>\n\u003Cp>In OpenRAG, one can activate \u003Cstrong>\u003Ccode dir=\"auto\">Chainlit data layer\u003C/code>\u003C/strong> following these steps:\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"step-1-set-up-authentication\">Step 1: Set up authentication\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#step-1-set-up-authentication\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 1: Set up authentication”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>In fact, chainlit authentication is necessary for data persistency. Set chainlit authentication if not already done (refer to the \u003Ca href=\"./setup_chainlit_ui_auth.md\">chainlit auth guide\u003C/a>)\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"step-2-add-the-following-variables\">Step 2: Add the following variables\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#step-2-add-the-following-variables\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 2: Add the following variables”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>To deploy the Chainlit data layer service, add the following variable:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Persistency services: postgres (localstack (AWS emulator deployed locally)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_DATALAYER_COMPOSE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">extern/chainlit-datalayer/compose.yaml\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"# Persistency services: postgres (localstack (AWS emulator deployed locally)CHAINLIT_DATALAYER_COMPOSE=extern/chainlit-datalayer/compose.yaml\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>This provides 2 services:\u003C/p>\n\u003Cul>\n\u003Cli>a postgres database to store users, feedback, chat history, etc\u003C/li>\n\u003Cli>“s3 bucket” emulator to store elements (files attached in the chat).\u003C/li>\n\u003C/ul>\n\u003Caside aria-label=\"Note\" class=\"starlight-aside starlight-aside--note\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z\">\u003C/path>\u003C/svg>Note\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Chainlit datalayer is cloud-compatible, and the same applies for local data persistency. So for local storage, a cloud/s3 service emulator that runs in a container is deployed as well.\u003C/p>\u003C/div>\u003C/aside>\n\u003Cul>\n\u003Cli>Variables for the postgres data\u003C/li>\n\u003C/ul>\n\u003Caside aria-label=\"Tip\" class=\"starlight-aside starlight-aside--tip\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M20.16 5A6.29 6.29 0 0 0 12 4.36a6.27 6.27 0 0 0-8.16 9.48l6.21 6.22a2.78 2.78 0 0 0 3.9 0l6.21-6.22a6.27 6.27 0 0 0 0-8.84m-1.41 7.46-6.21 6.21a.76.76 0 0 1-1.08 0l-6.21-6.24a4.29 4.29 0 0 1 0-6 4.27 4.27 0 0 1 6 0 1 1 0 0 0 1.42 0 4.27 4.27 0 0 1 6 0 4.29 4.29 0 0 1 .08 6Z\">\u003C/path>\u003C/svg>Tip\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Knowing that OpenRAG already has a running postgres service (\u003Cstrong>\u003Ccode dir=\"auto\">rdb\u003C/code>\u003C/strong>) (refer to the \u003Ca href=\"/docker-compose.yaml\">docker-compose.yaml\u003C/a> file), there is no need to deploy another postgres service. In that case, comment out the postgres service definition in the \u003Ca href=\"/extern/chainlit-datalayer/compose.yaml\">compose.yaml\u003C/a> file and add the following variable to your .env\u003C/p>\u003C/div>\u003C/aside>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">DATABASE_URL\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">postgresql://root:root_password@rdb:5432/chainlit\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"DATABASE_URL=postgresql://root:root_password@rdb:5432/chainlit\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cul>\n\u003Cli>Variables for chainlit to use the \u003Cstrong>\u003Ccode dir=\"auto\">S3 Bucket\u003C/code>\u003C/strong>\nAdd the following variables to your \u003Ccode dir=\"auto\">.env\u003C/code> so that chainlit can use them to connect to the locally deployed S3 bucket\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\">## S3 bucket configuration.\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">BUCKET_NAME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">my-bucket\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">APP_AWS_ACCESS_KEY\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">random-key\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">APP_AWS_SECRET_KEY\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">random-key\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">APP_AWS_REGION\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">eu-central-1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">DEV_AWS_ENDPOINT\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">http://localstack:4566\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"## S3 bucket configuration.BUCKET_NAME=my-bucketAPP_AWS_ACCESS_KEY=random-keyAPP_AWS_SECRET_KEY=random-keyAPP_AWS_REGION=eu-central-1DEV_AWS_ENDPOINT=http://localstack:4566\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Caside aria-label=\"Tip\" class=\"starlight-aside starlight-aside--tip\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M23.780 10.803L23.818 10.803Q23.628 8.029 21.918 5.331L21.918 5.331Q20.664 3.469 18.916 2.234Q17.168 0.999 15.002 0.467L15.002 0.467Q13.748 0.125 12.646 0.125L12.646 0.125L10.746 0.125Q7.326 0.467 4.438 2.595L4.438 2.595Q1.132 5.369 0.296 9.245L0.296 9.245Q0.068 10.423 0.068 11.145L0.068 11.145L0.068 13.045Q0.448 16.351 2.082 18.631L2.082 18.631Q4.172 21.709 7.288 22.925L7.288 22.925Q9.454 23.685 11.202 23.875L11.202 23.875L13.102 23.875Q17.434 23.495 20.474 20.303L20.474 20.303Q22.944 17.833 23.666 14.375L23.666 14.375Q23.742 14.071 23.799 13.539Q23.856 13.007 23.932 12.703L23.932 12.703L23.932 11.411Q23.780 11.145 23.780 10.803L23.780 10.803ZM11.924 21.975L11.924 21.975Q9.188 21.975 6.870 20.569L6.870 20.569Q4.590 19.239 3.279 16.921Q1.968 14.603 1.968 11.867Q1.968 9.131 3.317 6.813Q4.666 4.495 6.984 3.165L6.984 3.165Q9.378 1.759 12.152 1.759L12.152 1.759Q14.850 1.835 17.149 3.184Q19.448 4.533 20.778 6.813L20.778 6.813Q22.146 9.131 22.108 11.867Q22.070 14.603 20.683 16.921Q19.296 19.239 17.016 20.569L17.016 20.569Q14.660 21.975 11.924 21.975ZM15.496 18.289L14.774 18.289Q14.432 18.289 14.166 18.175L14.166 18.175Q14.014 18.175 13.900 17.947L13.900 17.947Q13.862 17.833 13.824 17.795L13.824 17.795L13.824 10.081Q12.874 10.157 11.031 10.214Q9.188 10.271 8.238 10.309L8.238 10.309L8.238 11.259L9.416 11.259Q9.758 11.259 9.948 11.487Q10.138 11.715 10.138 12.095L10.138 12.095L10.138 17.567Q10.138 18.289 9.416 18.289L9.416 18.289L8.352 18.289L8.352 19.239L15.496 19.239L15.496 18.289ZM11.696 8.675L11.696 8.675Q12.570 8.675 13.140 8.067Q13.710 7.459 13.710 6.642Q13.710 5.825 13.102 5.217Q12.494 4.609 11.658 4.609Q10.822 4.609 10.252 5.217Q9.682 5.825 9.682 6.642Q9.682 7.459 10.290 8.067Q10.898 8.675 11.696 8.675Z\">\u003C/path>\u003C/svg>Tip\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>If you want to deactivate the service, comment out these variables, especially \u003Cstrong>\u003Ccode dir=\"auto\">CHAINLIT_DATALAYER_COMPOSE\u003C/code>\u003C/strong>.\u003C/p>\u003C/div>\u003C/aside>",{"headings":212,"localImagePaths":219,"remoteImagePaths":220,"frontmatter":221,"imagePaths":222},[213,216],{"depth":159,"slug":214,"text":215},"step-1-set-up-authentication","Step 1: Set up authentication",{"depth":159,"slug":217,"text":218},"step-2-add-the-following-variables","Step 2: Add the following variables",[],[],{"title":202},[],"documentation/features_in_details",{"id":223,"data":225,"body":230,"filePath":231,"digest":232,"rendered":233},{"title":226,"editUrl":22,"head":227,"template":50,"sidebar":228,"pagefind":22,"draft":14},"✨ Key Features",[],{"hidden":14,"attrs":229},{},"### 📁 Rich File Format Support\n[OpenRag](https://open-rag.ai/) supports a comprehensive range of file formats for seamless document ingestion:\n\n* **Text Files**: `txt`, `md`\n* **Document Files**: `pdf`, `docx`, `doc`, `pptx` - Advanced PDF parsing with OCR support and Office document processing\n* **Audio Files**: `wav`, `mp3`, `mp4`, `ogg`, `flv`, `wma`, `aac` - Audio transcription and content extraction\n* **Images**: `png`, `jpeg`, `jpg`, `svg` - Vision Language Model (VLM) powered image captioning and analysis\n\nAll files are intelligently converted to **Markdown format** with images replaced by AI-generated captions, ensuring consistent processing across all document types.\n\n### 🎛️ Native Web-Based Indexer UI\nExperience intuitive document management through our built-in web interface.\n\n\u003Cdetails>\n\n\u003Csummary>Indexer UI Features\u003C/summary>\n\n* **Drag-and-drop file upload** with batch processing capabilities\n* **Real-time indexing progress** monitoring and status updates\n* **Admin Dashboard** to monitor RAG components (Indexer, VectorDB, TaskStateManager, etc)\n* **Partition management** - organize documents into logical collections\n* **Visual document preview** and metadata inspection\n* **Search and filtering** capabilities for indexed content\n\n\u003C/details>\n\n### 🗂️ Partition-Based Architecture\nOrganize your knowledge base with flexible partition management:\n* **Multi-tenant support** - isolate different document collections\n\n### 💬 Interactive Chat UI with Source Attribution\nEngage with your documents through our sophisticated chat interface:\n\n\u003Cdetails>\n\n\u003Csummary>Chat UI Features\u003C/summary>\n\n* **Chainlit-powered UI** - modern, responsive chat experience\n* **Source transparency** - every response includes relevant document references\n\u003C/details>\n\n\n### 🔌 OpenAI API Compatibility\n[OpenRag](https://open-rag.ai/) API is tailored to be compatible with the OpenAI format (see the [openai-compatibility section](/documentation/api/#-openai-compatible-chat) for more details), enabling seamless integration of your deployed RAG into popular frontends and workflows such as OpenWebUI, LangChain, N8N, and more. This ensures flexibility and ease of adoption without requiring custom adapters.\n\n\u003Cdetails>\n\n\u003Csummary>Summary of features\u003C/summary>\n\n* **Drop-in replacement** for OpenAI API endpoints\n* **Compatible with popular frontends** like OpenWebUI, LangChain, N8N, and more\n* **Authentication support** - secure your API with token-based auth\n\n\u003C/details>\n\n\n### ⚡ Distributed Ray Deployment\nScale your RAG pipeline across multiple machines and GPUs.\n\u003Cdetails>\n\n\u003Csummary>Distributed Ray Deployment\u003C/summary>\n\n* **Horizontal scaling** - distribute processing across worker nodes\n* **GPU acceleration** - optimize inference across available hardware\n* **Resource management** - intelligent allocation of compute resources\n* **Monitoring dashboard** - real-time cluster health and performance metrics\n\nSee the section on [distributed deployment in a ray cluster](#5-distributed-deployment-in-a-ray-cluster) for more details\n\n\u003C/details>\n\n### 🔍 Advanced Retrieval & Reranking\n[OpenRag](https://open-rag.ai/) Leverages state-of-the-art retrieval techniques for superior accuracy.\n\n\u003Cdetails>\n\n\u003Csummary>Implemented advanced retrieval techniques\u003C/summary>\n\n* **Hybrid search** - combines semantic similarity with **`BM25` keyword** matching\n* **Contextual retrieval** - Anthropic's technique for enhanced chunk relevance\n* **Multilingual reranking** - using `Alibaba-NLP/gte-multilingual-reranker-base`\n\n\u003C/details>","src/content/docs/documentation/features_in_details.md","316b5b4d57152351",{"html":234,"metadata":235},"\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-rich-file-format-support\">📁 Rich File Format Support\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-rich-file-format-support\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📁 Rich File Format Support”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>\u003Ca href=\"https://open-rag.ai/\">OpenRag\u003C/a> supports a comprehensive range of file formats for seamless document ingestion:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Text Files\u003C/strong>: \u003Ccode dir=\"auto\">txt\u003C/code>, \u003Ccode dir=\"auto\">md\u003C/code>\u003C/li>\n\u003Cli>\u003Cstrong>Document Files\u003C/strong>: \u003Ccode dir=\"auto\">pdf\u003C/code>, \u003Ccode dir=\"auto\">docx\u003C/code>, \u003Ccode dir=\"auto\">doc\u003C/code>, \u003Ccode dir=\"auto\">pptx\u003C/code> - Advanced PDF parsing with OCR support and Office document processing\u003C/li>\n\u003Cli>\u003Cstrong>Audio Files\u003C/strong>: \u003Ccode dir=\"auto\">wav\u003C/code>, \u003Ccode dir=\"auto\">mp3\u003C/code>, \u003Ccode dir=\"auto\">mp4\u003C/code>, \u003Ccode dir=\"auto\">ogg\u003C/code>, \u003Ccode dir=\"auto\">flv\u003C/code>, \u003Ccode dir=\"auto\">wma\u003C/code>, \u003Ccode dir=\"auto\">aac\u003C/code> - Audio transcription and content extraction\u003C/li>\n\u003Cli>\u003Cstrong>Images\u003C/strong>: \u003Ccode dir=\"auto\">png\u003C/code>, \u003Ccode dir=\"auto\">jpeg\u003C/code>, \u003Ccode dir=\"auto\">jpg\u003C/code>, \u003Ccode dir=\"auto\">svg\u003C/code> - Vision Language Model (VLM) powered image captioning and analysis\u003C/li>\n\u003C/ul>\n\u003Cp>All files are intelligently converted to \u003Cstrong>Markdown format\u003C/strong> with images replaced by AI-generated captions, ensuring consistent processing across all document types.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"️-native-web-based-indexer-ui\">🎛️ Native Web-Based Indexer UI\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#️-native-web-based-indexer-ui\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🎛️ Native Web-Based Indexer UI”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Experience intuitive document management through our built-in web interface.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Indexer UI Features\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Drag-and-drop file upload\u003C/strong> with batch processing capabilities\u003C/li>\n\u003Cli>\u003Cstrong>Real-time indexing progress\u003C/strong> monitoring and status updates\u003C/li>\n\u003Cli>\u003Cstrong>Admin Dashboard\u003C/strong> to monitor RAG components (Indexer, VectorDB, TaskStateManager, etc)\u003C/li>\n\u003Cli>\u003Cstrong>Partition management\u003C/strong> - organize documents into logical collections\u003C/li>\n\u003Cli>\u003Cstrong>Visual document preview\u003C/strong> and metadata inspection\u003C/li>\n\u003Cli>\u003Cstrong>Search and filtering\u003C/strong> capabilities for indexed content\u003C/li>\n\u003C/ul>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"️-partition-based-architecture\">🗂️ Partition-Based Architecture\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#️-partition-based-architecture\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🗂️ Partition-Based Architecture”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Organize your knowledge base with flexible partition management:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Multi-tenant support\u003C/strong> - isolate different document collections\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-interactive-chat-ui-with-source-attribution\">💬 Interactive Chat UI with Source Attribution\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-interactive-chat-ui-with-source-attribution\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “💬 Interactive Chat UI with Source Attribution”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Engage with your documents through our sophisticated chat interface:\u003C/p>\n\u003Cdetails>\n\u003Csummary>Chat UI Features\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Chainlit-powered UI\u003C/strong> - modern, responsive chat experience\u003C/li>\n\u003Cli>\u003Cstrong>Source transparency\u003C/strong> - every response includes relevant document references\u003C/li>\n\u003C/ul>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-openai-api-compatibility\">🔌 OpenAI API Compatibility\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-openai-api-compatibility\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔌 OpenAI API Compatibility”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>\u003Ca href=\"https://open-rag.ai/\">OpenRag\u003C/a> API is tailored to be compatible with the OpenAI format (see the \u003Ca href=\"/documentation/api/#-openai-compatible-chat\">openai-compatibility section\u003C/a> for more details), enabling seamless integration of your deployed RAG into popular frontends and workflows such as OpenWebUI, LangChain, N8N, and more. This ensures flexibility and ease of adoption without requiring custom adapters.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Summary of features\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Drop-in replacement\u003C/strong> for OpenAI API endpoints\u003C/li>\n\u003Cli>\u003Cstrong>Compatible with popular frontends\u003C/strong> like OpenWebUI, LangChain, N8N, and more\u003C/li>\n\u003Cli>\u003Cstrong>Authentication support\u003C/strong> - secure your API with token-based auth\u003C/li>\n\u003C/ul>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-distributed-ray-deployment\">⚡ Distributed Ray Deployment\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-distributed-ray-deployment\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “⚡ Distributed Ray Deployment”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Scale your RAG pipeline across multiple machines and GPUs.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Distributed Ray Deployment\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Horizontal scaling\u003C/strong> - distribute processing across worker nodes\u003C/li>\n\u003Cli>\u003Cstrong>GPU acceleration\u003C/strong> - optimize inference across available hardware\u003C/li>\n\u003Cli>\u003Cstrong>Resource management\u003C/strong> - intelligent allocation of compute resources\u003C/li>\n\u003Cli>\u003Cstrong>Monitoring dashboard\u003C/strong> - real-time cluster health and performance metrics\u003C/li>\n\u003C/ul>\n\u003Cp>See the section on \u003Ca href=\"#5-distributed-deployment-in-a-ray-cluster\">distributed deployment in a ray cluster\u003C/a> for more details\u003C/p>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-advanced-retrieval--reranking\">🔍 Advanced Retrieval & Reranking\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-advanced-retrieval--reranking\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔍 Advanced Retrieval & Reranking”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>\u003Ca href=\"https://open-rag.ai/\">OpenRag\u003C/a> Leverages state-of-the-art retrieval techniques for superior accuracy.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Implemented advanced retrieval techniques\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Hybrid search\u003C/strong> - combines semantic similarity with \u003Cstrong>\u003Ccode dir=\"auto\">BM25\u003C/code> keyword\u003C/strong> matching\u003C/li>\n\u003Cli>\u003Cstrong>Contextual retrieval\u003C/strong> - Anthropic’s technique for enhanced chunk relevance\u003C/li>\n\u003Cli>\u003Cstrong>Multilingual reranking\u003C/strong> - using \u003Ccode dir=\"auto\">Alibaba-NLP/gte-multilingual-reranker-base\u003C/code>\u003C/li>\n\u003C/ul>\n\u003C/details>",{"headings":236,"localImagePaths":258,"remoteImagePaths":259,"frontmatter":260,"imagePaths":261},[237,240,243,246,249,252,255],{"depth":159,"slug":238,"text":239},"-rich-file-format-support","📁 Rich File Format Support",{"depth":159,"slug":241,"text":242},"️-native-web-based-indexer-ui","🎛️ Native Web-Based Indexer UI",{"depth":159,"slug":244,"text":245},"️-partition-based-architecture","🗂️ Partition-Based Architecture",{"depth":159,"slug":247,"text":248},"-interactive-chat-ui-with-source-attribution","💬 Interactive Chat UI with Source Attribution",{"depth":159,"slug":250,"text":251},"-openai-api-compatibility","🔌 OpenAI API Compatibility",{"depth":159,"slug":253,"text":254},"-distributed-ray-deployment","⚡ Distributed Ray Deployment",{"depth":159,"slug":256,"text":257},"-advanced-retrieval--reranking","🔍 Advanced Retrieval & Reranking",[],[],{"title":226},[],"documentation/kubernetes",{"id":262,"data":264,"body":269,"filePath":270,"digest":271,"rendered":272},{"title":265,"editUrl":22,"head":266,"template":50,"sidebar":267,"pagefind":22,"draft":14},"Deploying OpenRAG on Kubernetes",[],{"hidden":14,"attrs":268},{},"This guide explains how to deploy the **OpenRAG** stack on a Kubernetes cluster using Helm.\n\n---\n\n## Prerequisites\n\n- A **Kubernetes cluster** with **GPU nodes** available (NVIDIA runtime) and nvidia-gpu-operator installed.\n- A **StorageClass** that supports **ReadWriteMany** (`RWX`) access mode. \n This is required because the Ray cluster workers and the OpenRAG app need to access the same shared volumes (e.g. for `.venv`, model weights, logs, data).\n- If using ingress, the ingress-nginx controller needs to be installed on the cluster.\n\n---\n\n## Steps\n\n1. **Create a `values.yaml` file**:\n\n - Copy or create a new `values.yaml` at the root of your repo.\n - You can see the full example file inside the chart:\n [../charts/openrag-stack/values.yaml](/charts/openrag-stack/values.yaml)\n - Customize the values you need (e.g., image tags, resources, ingress host, storage class, environment variables, secrets).\n\n2. **Set environment and secrets**:\n\n - Edit the `env.config` and `env.secrets` sections in your `values.yaml`.\n - Secrets (API keys, tokens, Hugging Face credentials, etc.) will be mounted into the cluster as Kubernetes secrets.\n\n3. **Install or upgrade the release from GHCR**:\n\n ```bash\n helm upgrade\\\n --install openrag oci://ghcr.io/linagora/openrag-stack\\\n -f ./values.yaml\\\n --version 0.1.0\n ```\n\n - `openrag` is the Helm release name.\n - `oci://ghcr.io/linagora/openrag-stack` is the remote chart location.\n - `-f ./values.yaml` specifies your custom configuration.\n - `--version 0.1.0` ensures you deploy a specific chart version.\n\n---\n\n## Notes\n\n- If using a public IP instead of a hostname, you can leave `ingress.host` empty in your `values.yaml`. \n The ingress will then match all hosts.\n\n- If you later configure a hostname + TLS (via cert-manager), just update `ingress.host` and redeploy.\n\n- Ensure your GPU nodes have the correct NVIDIA drivers and `nvidia` `RuntimeClass` configured.","src/content/docs/documentation/kubernetes.md","7512ef961e95752e",{"html":273,"metadata":274},"\u003Cp>This guide explains how to deploy the \u003Cstrong>OpenRAG\u003C/strong> stack on a Kubernetes cluster using Helm.\u003C/p>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"prerequisites\">Prerequisites\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#prerequisites\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Prerequisites”\u003C/span>\u003C/a>\u003C/div>\n\u003Cul>\n\u003Cli>A \u003Cstrong>Kubernetes cluster\u003C/strong> with \u003Cstrong>GPU nodes\u003C/strong> available (NVIDIA runtime) and nvidia-gpu-operator installed.\u003C/li>\n\u003Cli>A \u003Cstrong>StorageClass\u003C/strong> that supports \u003Cstrong>ReadWriteMany\u003C/strong> (\u003Ccode dir=\"auto\">RWX\u003C/code>) access mode.\u003Cbr>\nThis is required because the Ray cluster workers and the OpenRAG app need to access the same shared volumes (e.g. for \u003Ccode dir=\"auto\">.venv\u003C/code>, model weights, logs, data).\u003C/li>\n\u003Cli>If using ingress, the ingress-nginx controller needs to be installed on the cluster.\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"steps\">Steps\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#steps\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Steps”\u003C/span>\u003C/a>\u003C/div>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>Create a \u003Ccode dir=\"auto\">values.yaml\u003C/code> file\u003C/strong>:\u003C/p>\n\u003Cul>\n\u003Cli>Copy or create a new \u003Ccode dir=\"auto\">values.yaml\u003C/code> at the root of your repo.\u003C/li>\n\u003Cli>You can see the full example file inside the chart:\n\u003Ca href=\"/charts/openrag-stack/values.yaml\">../charts/openrag-stack/values.yaml\u003C/a>\u003C/li>\n\u003Cli>Customize the values you need (e.g., image tags, resources, ingress host, storage class, environment variables, secrets).\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Set environment and secrets\u003C/strong>:\u003C/p>\n\u003Cul>\n\u003Cli>Edit the \u003Ccode dir=\"auto\">env.config\u003C/code> and \u003Ccode dir=\"auto\">env.secrets\u003C/code> sections in your \u003Ccode dir=\"auto\">values.yaml\u003C/code>.\u003C/li>\n\u003Cli>Secrets (API keys, tokens, Hugging Face credentials, etc.) will be mounted into the cluster as Kubernetes secrets.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Install or upgrade the release from GHCR\u003C/strong>:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">helm\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">upgrade\u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--install\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">openrag\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">oci://ghcr.io/linagora/openrag-stack\u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-f\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">./values.yaml\u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--version\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">0.1.0\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"helm upgrade\\ --install openrag oci://ghcr.io/linagora/openrag-stack\\ -f ./values.yaml\\ --version 0.1.0\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cul>\n\u003Cli>\u003Ccode dir=\"auto\">openrag\u003C/code> is the Helm release name.\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">oci://ghcr.io/linagora/openrag-stack\u003C/code> is the remote chart location.\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">-f ./values.yaml\u003C/code> specifies your custom configuration.\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">--version 0.1.0\u003C/code> ensures you deploy a specific chart version.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ol>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"notes\">Notes\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#notes\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Notes”\u003C/span>\u003C/a>\u003C/div>\n\u003Cul>\n\u003Cli>\n\u003Cp>If using a public IP instead of a hostname, you can leave \u003Ccode dir=\"auto\">ingress.host\u003C/code> empty in your \u003Ccode dir=\"auto\">values.yaml\u003C/code>.\u003Cbr>\nThe ingress will then match all hosts.\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>If you later configure a hostname + TLS (via cert-manager), just update \u003Ccode dir=\"auto\">ingress.host\u003C/code> and redeploy.\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>Ensure your GPU nodes have the correct NVIDIA drivers and \u003Ccode dir=\"auto\">nvidia\u003C/code> \u003Ccode dir=\"auto\">RuntimeClass\u003C/code> configured.\u003C/p>\n\u003C/li>\n\u003C/ul>",{"headings":275,"localImagePaths":285,"remoteImagePaths":286,"frontmatter":287,"imagePaths":288},[276,279,282],{"depth":71,"slug":277,"text":278},"prerequisites","Prerequisites",{"depth":71,"slug":280,"text":281},"steps","Steps",{"depth":71,"slug":283,"text":284},"notes","Notes",[],[],{"title":265},[],"documentation/setup_glusterfs",{"id":289,"data":291,"body":296,"filePath":297,"digest":298,"rendered":299},{"title":292,"editUrl":22,"head":293,"template":50,"sidebar":294,"pagefind":22,"draft":14},"GlusterFS",[],{"hidden":14,"attrs":295},{},"## 🪵 GlusterFS Setup for Shared Storage (Ray Cluster)\n\nIn a Ray distributed setup, **all worker nodes need access to certain shared resources** used by the application. \nThis includes:\n\n- `.env` (environment variables for models and settings)\n- `.hydra_config` (application configuration)\n- Uploaded files (`/data`)\n- Model weights (e.g. `/model_weights` if using HF local cache)\n\n---\n\n## 1️⃣ Setup VPN (if required)\n\nIf your Ray nodes are **not on the same local network**, set up a VPN between them first. \n➡ Refer to the dedicated [VPN setup guide](/documentation/setup_vpn/). \nYou can skip this step if your nodes are already on the same LAN.\n\n---\n\n## 2️⃣ Setup GlusterFS (Distributed Filesystem)\n\nGlusterFS allows you to **share and replicate storage across multiple nodes** with redundancy and better fault tolerance.\n\nThis guide assumes:\n- You have 4 machines on the same private network\n- You want all of them to share `/ray_mount`\n\n---\n\n### 🔧 Install GlusterFS and start the GlusterFS\n\nRun this on **all 4 machines**:\n\n```bash title=\"installing and starting glusterfs...\"\nsudo apt update\nsudo apt install -y glusterfs-server\nsudo systemctl enable --now glusterd\n```\n\n---\n\n### 🤝 Connect all nodes into a trusted pool\n\nFrom one node (e.g. the Ray head), run:\n\n```bash title:\"connecting nodes...\"\ngluster peer probe \u003CIP_OF_NODE_2>\ngluster peer probe \u003CIP_OF_NODE_3>\ngluster peer probe \u003CIP_OF_NODE_4>\n```\n\nConfirm with:\n\n```bash title=\"shows the status of nodes\"\ngluster peer status\n```\n\n---\n\n### 📁 Create bricks on each node\n\nOn **each node**, run:\n\n```bash title=\"create brick directories on each node\"\nsudo mkdir -p /gluster/bricks/ray_mount\n```\n\n---\n\n### 📦 Create the replicated GlusterFS volume\n\nFrom one node (e.g. the Ray head):\n\n```bash\ngluster volume create rayvol replica 4 \\\n \u003CIP1>:/gluster/bricks/ray_mount \\\n \u003CIP2>:/gluster/bricks/ray_mount \\\n \u003CIP3>:/gluster/bricks/ray_mount \\\n \u003CIP4>:/gluster/bricks/ray_mount \\\n force\n```\n\nStart the volume:\n\n```bash\ngluster volume start rayvol\n```\n\n---\n\n### 🔗 Mount the volume on all nodes\n\nInstall the client tools:\n\n```bash\nsudo apt install -y glusterfs-client\n```\n\nCreate the mount point:\n\n```bash\nsudo mkdir -p /ray_mount\n```\n\nMount it (on each node):\n\n```bash\nsudo mount -t glusterfs \u003CANY_NODE_IP>:/rayvol /ray_mount\n```\n\nTo make this permanent across reboots:\n\n```bash\necho \"\u003CANY_NODE_IP>:/rayvol /ray_mount glusterfs defaults,_netdev 0 0\" | sudo tee -a /etc/fstab\n```\n\n> ✅ Replace `\u003CANY_NODE_IP>` with one of your node IPs in the GlusterFS cluster.\n\n---\n\n### 📂 Copy required data to the shared folder\n\nFrom any node:\n\n```bash\nsudo cp -r .hydra_config /ray_mount/\nsudo cp .env /ray_mount/\nsudo mkdir /ray_mount/data /ray_mount/model_weights\nsudo chown -R ubuntu:ubuntu /ray_mount\n```\n\n> ✅ Ensure that the ownership is set to the user running Ray workers (e.g. `ubuntu`) so that all nodes can read/write.\n\n---\n\nNow, all Ray nodes will have **consistent access to required data and configurations** via `/ray_mount`, backed by a fault-tolerant and distributed filesystem.","src/content/docs/documentation/setup_glusterfs.md","646afcdcacd9e7a6",{"html":300,"metadata":301},"\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-glusterfs-setup-for-shared-storage-ray-cluster\">🪵 GlusterFS Setup for Shared Storage (Ray Cluster)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-glusterfs-setup-for-shared-storage-ray-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🪵 GlusterFS Setup for Shared Storage (Ray Cluster)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>In a Ray distributed setup, \u003Cstrong>all worker nodes need access to certain shared resources\u003C/strong> used by the application.\u003Cbr>\nThis includes:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode dir=\"auto\">.env\u003C/code> (environment variables for models and settings)\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">.hydra_config\u003C/code> (application configuration)\u003C/li>\n\u003Cli>Uploaded files (\u003Ccode dir=\"auto\">/data\u003C/code>)\u003C/li>\n\u003Cli>Model weights (e.g. \u003Ccode dir=\"auto\">/model_weights\u003C/code> if using HF local cache)\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"1️⃣-setup-vpn-if-required\">1️⃣ Setup VPN (if required)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#1️⃣-setup-vpn-if-required\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “1️⃣ Setup VPN (if required)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>If your Ray nodes are \u003Cstrong>not on the same local network\u003C/strong>, set up a VPN between them first.\u003Cbr>\n➡ Refer to the dedicated \u003Ca href=\"/documentation/setup_vpn/\">VPN setup guide\u003C/a>.\u003Cbr>\nYou can skip this step if your nodes are already on the same LAN.\u003C/p>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"2️⃣-setup-glusterfs-distributed-filesystem\">2️⃣ Setup GlusterFS (Distributed Filesystem)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#2️⃣-setup-glusterfs-distributed-filesystem\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “2️⃣ Setup GlusterFS (Distributed Filesystem)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>GlusterFS allows you to \u003Cstrong>share and replicate storage across multiple nodes\u003C/strong> with redundancy and better fault tolerance.\u003C/p>\n\u003Cp>This guide assumes:\u003C/p>\n\u003Cul>\n\u003Cli>You have 4 machines on the same private network\u003C/li>\n\u003Cli>You want all of them to share \u003Ccode dir=\"auto\">/ray_mount\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-install-glusterfs-and-start-the-glusterfs\">🔧 Install GlusterFS and start the GlusterFS\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-install-glusterfs-and-start-the-glusterfs\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔧 Install GlusterFS and start the GlusterFS”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Run this on \u003Cstrong>all 4 machines\u003C/strong>:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame is-terminal has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">installing and starting glusterfs...\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">update\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">install\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterfs-server\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">systemctl\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">enable\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--now\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterd\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo apt updatesudo apt install -y glusterfs-serversudo systemctl enable --now glusterd\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-connect-all-nodes-into-a-trusted-pool\">🤝 Connect all nodes into a trusted pool\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-connect-all-nodes-into-a-trusted-pool\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🤝 Connect all nodes into a trusted pool”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>From one node (e.g. the Ray head), run:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">probe\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP_OF_NODE_2>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">probe\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP_OF_NODE_3>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">probe\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP_OF_NODE_4>\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster peer probe \u003CIP_OF_NODE_2>gluster peer probe \u003CIP_OF_NODE_3>gluster peer probe \u003CIP_OF_NODE_4>\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Confirm with:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">shows the status of nodes\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">status\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster peer status\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-create-bricks-on-each-node\">📁 Create bricks on each node\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-create-bricks-on-each-node\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📁 Create bricks on each node”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>On \u003Cstrong>each node\u003C/strong>, run:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">create brick directories on each node\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mkdir\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-p\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/gluster/bricks/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo mkdir -p /gluster/bricks/ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-create-the-replicated-glusterfs-volume\">📦 Create the replicated GlusterFS volume\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-create-the-replicated-glusterfs-volume\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📦 Create the replicated GlusterFS volume”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>From one node (e.g. the Ray head):\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">volume\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">create\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">rayvol\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">replica\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">4\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP1>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP2>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP3>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP4>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">force\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster volume create rayvol replica 4 \\ \u003CIP1>:/gluster/bricks/ray_mount \\ \u003CIP2>:/gluster/bricks/ray_mount \\ \u003CIP3>:/gluster/bricks/ray_mount \\ \u003CIP4>:/gluster/bricks/ray_mount \\ force\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Start the volume:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">volume\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">start\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">rayvol\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster volume start rayvol\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-mount-the-volume-on-all-nodes\">🔗 Mount the volume on all nodes\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-mount-the-volume-on-all-nodes\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔗 Mount the volume on all nodes”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Install the client tools:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">install\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterfs-client\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo apt install -y glusterfs-client\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Create the mount point:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mkdir\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-p\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo mkdir -p /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Mount it (on each node):\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-t\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterfs\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><ANY_NODE_IP>:/rayvol\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo mount -t glusterfs \u003CANY_NODE_IP>:/rayvol /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>To make this permanent across reboots:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">echo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">\"\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\"><ANY_NODE_IP>:/rayvol /ray_mount glusterfs defaults,_netdev 0 0\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">\"\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">|\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">tee\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-a\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/etc/fstab\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"echo "\u003CANY_NODE_IP>:/rayvol /ray_mount glusterfs defaults,_netdev 0 0" | sudo tee -a /etc/fstab\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cblockquote>\n\u003Cp>✅ Replace \u003Ccode dir=\"auto\"><ANY_NODE_IP>\u003C/code> with one of your node IPs in the GlusterFS cluster.\u003C/p>\n\u003C/blockquote>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-copy-required-data-to-the-shared-folder\">📂 Copy required data to the shared folder\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-copy-required-data-to-the-shared-folder\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📂 Copy required data to the shared folder”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>From any node:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">cp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-r\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">.hydra_config\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">cp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">.env\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mkdir\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/data\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/model_weights\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">chown\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-R\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ubuntu:ubuntu\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo cp -r .hydra_config /ray_mount/sudo cp .env /ray_mount/sudo mkdir /ray_mount/data /ray_mount/model_weightssudo chown -R ubuntu:ubuntu /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cblockquote>\n\u003Cp>✅ Ensure that the ownership is set to the user running Ray workers (e.g. \u003Ccode dir=\"auto\">ubuntu\u003C/code>) so that all nodes can read/write.\u003C/p>\n\u003C/blockquote>\n\u003Chr>\n\u003Cp>Now, all Ray nodes will have \u003Cstrong>consistent access to required data and configurations\u003C/strong> via \u003Ccode dir=\"auto\">/ray_mount\u003C/code>, backed by a fault-tolerant and distributed filesystem.\u003C/p>",{"headings":302,"localImagePaths":330,"remoteImagePaths":331,"frontmatter":332,"imagePaths":333},[303,306,309,312,315,318,321,324,327],{"depth":71,"slug":304,"text":305},"-glusterfs-setup-for-shared-storage-ray-cluster","🪵 GlusterFS Setup for Shared Storage (Ray Cluster)",{"depth":71,"slug":307,"text":308},"1️⃣-setup-vpn-if-required","1️⃣ Setup VPN (if required)",{"depth":71,"slug":310,"text":311},"2️⃣-setup-glusterfs-distributed-filesystem","2️⃣ Setup GlusterFS (Distributed Filesystem)",{"depth":159,"slug":313,"text":314},"-install-glusterfs-and-start-the-glusterfs","🔧 Install GlusterFS and start the GlusterFS",{"depth":159,"slug":316,"text":317},"-connect-all-nodes-into-a-trusted-pool","🤝 Connect all nodes into a trusted pool",{"depth":159,"slug":319,"text":320},"-create-bricks-on-each-node","📁 Create bricks on each node",{"depth":159,"slug":322,"text":323},"-create-the-replicated-glusterfs-volume","📦 Create the replicated GlusterFS volume",{"depth":159,"slug":325,"text":326},"-mount-the-volume-on-all-nodes","🔗 Mount the volume on all nodes",{"depth":159,"slug":328,"text":329},"-copy-required-data-to-the-shared-folder","📂 Copy required data to the shared folder",[],[],{"title":292},[],"documentation/setup_indexerui",{"id":334,"data":336,"body":341,"filePath":342,"digest":343,"rendered":344},{"title":337,"editUrl":22,"head":338,"template":50,"sidebar":339,"pagefind":22,"draft":14},"Indexer UI",[],{"hidden":14,"attrs":340},{},"## Configuring the Indexer UI\n\n### 1. Download the `indexer-ui` Submodule\n\n> Ensure the `indexer-ui` submodule is initialized and downloaded. If not, run the following command from the root of your `openrag` project:\n\n```bash\ncd \u003Cproject-name> # openrag project\ngit submodule update --init --recursive\n```\n\n:::note\nThe `--init --recursive` flags will:\n\n* Initialize all submodules defined in the `.gitmodules` file\n* Clone the content of each submodule\n* Recursively initialize and update nested submodules\n:::\n\n:::caution[Important]\nEach version of **`openrag`** ships with a specific compatible commit of [indexer-ui](https://github.com/linagora/openrag-admin-ui). The above command is sufficient.\nIn development mode, to fetch the latest version of `indexer-ui`, run:\n```bash title=\"fetching the latest version of submodules...\"\ngit submodule foreach 'git checkout main && git pull'\n```\n:::\n\n### 2. Set Environment Variables\n\nTo enable the Indexer UI, add the following environment variables to your configuration:\n\n* Replace **`X.X.X.X`** with `localhost` (for local use) or your server IP\n* Replace **`APP_PORT`** with your FastAPI port (default: 8080)\n* Set the **base URL of the Indexer UI** (required to prevent CORS issues). Replace **`INDEXERUI_PORT`** accordingly\n* Set the **base URL of your FastAPI backend** (used by the frontend). Replace **`APP_PORT`** accordingly\n\n```bash\n// .env\nINDEXERUI_COMPOSE_FILE=extern/indexer-ui/docker-compose.yaml # Path to the docker-compose file\nVITE_INCLUDE_CREDENTIALS=false # Set to true if FastAPI authentication is enabled\nINDEXERUI_PORT=8060 # Port for the Indexer UI (default: 3042)\nINDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT'\nVITE_API_BASE_URL='http://X.X.X.X:APP_PORT'\n```","src/content/docs/documentation/setup_indexerui.md","e3f58e0c7489649b",{"html":345,"metadata":346},"\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"configuring-the-indexer-ui\">Configuring the Indexer UI\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#configuring-the-indexer-ui\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Configuring the Indexer UI”\u003C/span>\u003C/a>\u003C/div>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"1-download-the-indexer-ui-submodule\">1. Download the \u003Ccode dir=\"auto\">indexer-ui\u003C/code> Submodule\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#1-download-the-indexer-ui-submodule\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “1. Download the indexer-ui Submodule”\u003C/span>\u003C/a>\u003C/div>\n\u003Cblockquote>\n\u003Cp>Ensure the \u003Ccode dir=\"auto\">indexer-ui\u003C/code> submodule is initialized and downloaded. If not, run the following command from the root of your \u003Ccode dir=\"auto\">openrag\u003C/code> project:\u003C/p>\n\u003C/blockquote>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">cd\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><project-name>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># openrag project\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">git\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">submodule\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">update\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--init\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--recursive\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"cd \u003Cproject-name> # openrag projectgit submodule update --init --recursive\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Caside aria-label=\"Note\" class=\"starlight-aside starlight-aside--note\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z\">\u003C/path>\u003C/svg>Note\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>The \u003Ccode dir=\"auto\">--init --recursive\u003C/code> flags will:\u003C/p>\u003Cul>\n\u003Cli>Initialize all submodules defined in the \u003Ccode dir=\"auto\">.gitmodules\u003C/code> file\u003C/li>\n\u003Cli>Clone the content of each submodule\u003C/li>\n\u003Cli>Recursively initialize and update nested submodules\u003C/li>\n\u003C/ul>\u003C/div>\u003C/aside>\n\u003Caside aria-label=\"Important\" class=\"starlight-aside starlight-aside--caution\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 16C11.8022 16 11.6089 16.0587 11.4444 16.1686C11.28 16.2784 11.1518 16.4346 11.0761 16.6173C11.0004 16.8001 10.9806 17.0011 11.0192 17.1951C11.0578 17.3891 11.153 17.5673 11.2929 17.7071C11.4327 17.847 11.6109 17.9422 11.8049 17.9808C11.9989 18.0194 12.2 17.9996 12.3827 17.9239C12.5654 17.8482 12.7216 17.72 12.8315 17.5556C12.9413 17.3911 13 17.1978 13 17C13 16.7348 12.8946 16.4805 12.7071 16.2929C12.5196 16.1054 12.2652 16 12 16ZM22.67 17.47L14.62 3.47003C14.3598 3.00354 13.9798 2.61498 13.5192 2.3445C13.0586 2.07401 12.5341 1.9314 12 1.9314C11.4659 1.9314 10.9414 2.07401 10.4808 2.3445C10.0202 2.61498 9.64019 3.00354 9.38 3.47003L1.38 17.47C1.11079 17.924 0.966141 18.441 0.960643 18.9688C0.955144 19.4966 1.089 20.0166 1.34868 20.4761C1.60837 20.9356 1.9847 21.3185 2.43968 21.5861C2.89466 21.8536 3.41218 21.9964 3.94 22H20.06C20.5921 22.0053 21.1159 21.8689 21.5779 21.6049C22.0399 21.341 22.4234 20.9589 22.689 20.4978C22.9546 20.0368 23.0928 19.5134 23.0895 18.9814C23.0862 18.4493 22.9414 17.9277 22.67 17.47ZM20.94 19.47C20.8523 19.626 20.7245 19.7556 20.5697 19.8453C20.4149 19.935 20.2389 19.9815 20.06 19.98H3.94C3.76111 19.9815 3.5851 19.935 3.43032 19.8453C3.27553 19.7556 3.14765 19.626 3.06 19.47C2.97223 19.318 2.92602 19.1456 2.92602 18.97C2.92602 18.7945 2.97223 18.622 3.06 18.47L11.06 4.47003C11.1439 4.30623 11.2714 4.16876 11.4284 4.07277C11.5855 3.97678 11.766 3.92599 11.95 3.92599C12.134 3.92599 12.3145 3.97678 12.4716 4.07277C12.6286 4.16876 12.7561 4.30623 12.84 4.47003L20.89 18.47C20.9892 18.6199 21.0462 18.7937 21.055 18.9732C21.0638 19.1527 21.0241 19.3312 20.94 19.49V19.47ZM12 8.00003C11.7348 8.00003 11.4804 8.10538 11.2929 8.29292C11.1054 8.48046 11 8.73481 11 9.00003V13C11 13.2652 11.1054 13.5196 11.2929 13.7071C11.4804 13.8947 11.7348 14 12 14C12.2652 14 12.5196 13.8947 12.7071 13.7071C12.8946 13.5196 13 13.2652 13 13V9.00003C13 8.73481 12.8946 8.48046 12.7071 8.29292C12.5196 8.10538 12.2652 8.00003 12 8.00003Z\">\u003C/path>\u003C/svg>Important\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Each version of \u003Cstrong>\u003Ccode dir=\"auto\">openrag\u003C/code>\u003C/strong> ships with a specific compatible commit of \u003Ca href=\"https://github.com/linagora/openrag-admin-ui\">indexer-ui\u003C/a>. The above command is sufficient.\nIn development mode, to fetch the latest version of \u003Ccode dir=\"auto\">indexer-ui\u003C/code>, run:\u003C/p>\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">fetching the latest version of submodules...\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">git\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">submodule\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">foreach\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\">git checkout main && git pull\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"git submodule foreach 'git checkout main && git pull'\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\u003C/div>\u003C/aside>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"2-set-environment-variables\">2. Set Environment Variables\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#2-set-environment-variables\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “2. Set Environment Variables”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>To enable the Indexer UI, add the following environment variables to your configuration:\u003C/p>\n\u003Cul>\n\u003Cli>Replace \u003Cstrong>\u003Ccode dir=\"auto\">X.X.X.X\u003C/code>\u003C/strong> with \u003Ccode dir=\"auto\">localhost\u003C/code> (for local use) or your server IP\u003C/li>\n\u003Cli>Replace \u003Cstrong>\u003Ccode dir=\"auto\">APP_PORT\u003C/code>\u003C/strong> with your FastAPI port (default: 8080)\u003C/li>\n\u003Cli>Set the \u003Cstrong>base URL of the Indexer UI\u003C/strong> (required to prevent CORS issues). Replace \u003Cstrong>\u003Ccode dir=\"auto\">INDEXERUI_PORT\u003C/code>\u003C/strong> accordingly\u003C/li>\n\u003Cli>Set the \u003Cstrong>base URL of your FastAPI backend\u003C/strong> (used by the frontend). Replace \u003Cstrong>\u003Ccode dir=\"auto\">APP_PORT\u003C/code>\u003C/strong> accordingly\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">INDEXERUI_COMPOSE_FILE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">extern/indexer-ui/docker-compose.yaml\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Path to the docker-compose file\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">VITE_INCLUDE_CREDENTIALS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">false\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Set to true if FastAPI authentication is enabled\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">INDEXERUI_PORT\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">8060\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Port for the Indexer UI (default: 3042)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">INDEXERUI_URL\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\">http://X.X.X.X:INDEXERUI_PORT\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">VITE_API_BASE_URL\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\">http://X.X.X.X:APP_PORT\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"INDEXERUI_COMPOSE_FILE=extern/indexer-ui/docker-compose.yaml # Path to the docker-compose fileVITE_INCLUDE_CREDENTIALS=false # Set to true if FastAPI authentication is enabledINDEXERUI_PORT=8060 # Port for the Indexer UI (default: 3042)INDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT'VITE_API_BASE_URL='http://X.X.X.X:APP_PORT'\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>",{"headings":347,"localImagePaths":357,"remoteImagePaths":358,"frontmatter":359,"imagePaths":360},[348,351,354],{"depth":71,"slug":349,"text":350},"configuring-the-indexer-ui","Configuring the Indexer UI",{"depth":159,"slug":352,"text":353},"1-download-the-indexer-ui-submodule","1. Download the indexer-ui Submodule",{"depth":159,"slug":355,"text":356},"2-set-environment-variables","2. Set Environment Variables",[],[],{"title":337},[],"documentation/setup_vpn",{"id":361,"data":363,"body":368,"filePath":369,"digest":370,"rendered":371},{"title":364,"editUrl":22,"head":365,"template":50,"sidebar":366,"pagefind":22,"draft":14},"🌐 VPN Setup for Remote Machines with WireGuard",[],{"hidden":14,"attrs":367},{},"This guide helps you securely connect your remote machines using **WireGuard VPN**, allowing you to share files (NFS, etc.) as if they were on the same private network.\n\n---\n\n## 1️⃣ Install WireGuard on all machines\n\nRun the following on **each machine** (server and clients):\n\n```bash\nsudo apt update\nsudo apt install -y wireguard\n```\n\n---\n\n## 2️⃣ Configure the VPN Server (Main machine `X.X.X.X`)\n\nCreate the configuration file:\n\n```bash\nsudo nano /etc/wireguard/wg0.conf\n```\n\nPaste the following:\n\n```ini\n// /etc/wireguard/wg0.conf\n...\n[Interface]\nAddress = 10.0.0.1/24\nPrivateKey = \u003CSERVER_PRIVATE_KEY>\nListenPort = 51820\n\n# Allow forwarding and NAT\nPostUp = sysctl -w net.ipv4.ip_forward=1\nPostUp = iptables -A FORWARD -i wg0 -j ACCEPT\nPostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\nPostDown = iptables -D FORWARD -i wg0 -j ACCEPT\nPostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE\n\n[Peer]\n# Client machine\nPublicKey = \u003CCLIENT_PUBLIC_KEY>\nAllowedIPs = 10.0.0.2/32\n```\n\n---\n\n## 3️⃣ Configure the VPN Client (Other machine `X.X.X.X`)\n\nCreate the configuration file:\n\n```bash\nsudo nano /etc/wireguard/wg0.conf\n```\n\nPaste the following:\n\n```ini\n// /etc/wireguard/wg0.conf\n...\n[Interface]\nAddress = 10.0.0.2/24\nPrivateKey = \u003CCLIENT_PRIVATE_KEY>\n\n[Peer]\n# VPN Server\nPublicKey = \u003CSERVER_PUBLIC_KEY>\nEndpoint = X.X.X.X:51820 # Replace with your VPN server IP\nAllowedIPs = 10.0.0.0/24\nPersistentKeepalive = 25\n```\n\n---\n\n## 🔑 Generate Keys on Each Machine\n\nOn **each machine**, run:\n\n```bash\nwg genkey | tee privatekey | wg pubkey > publickey\n```\n\nUse the generated keys in your configurations:\n- `privatekey` → `\u003CPRIVATE_KEY>`\n- `publickey` → to give to the peer\n\n---\n\n## 🚀 Start and Enable VPN on Both Machines\n\nTo start the VPN connection:\n```bash\nsudo wg-quick up wg0\n```\n\nTo enable the VPN automatically on boot:\n```bash\nsudo systemctl enable wg-quick@wg0\n```\n\n---\n\n## ✅ Verification\n\nTest the VPN connection:\n- From **client**:\n ```bash\n ping 10.0.0.1\n ```\n- From **server**:\n ```bash\n ping 10.0.0.2\n ```\n\n---\n\n:::caution\n- After the VPN is up, you can configure services like **NFS** using the **10.0.0.0/24 private network**.\n- Make sure your firewall allows `UDP 51820`.\n- Adjust the `AllowedIPs` and network according to your needs.\n:::","src/content/docs/documentation/setup_vpn.md","80f5aceb0ccb932f",{"html":372,"metadata":373},"\u003Cp>This guide helps you securely connect your remote machines using \u003Cstrong>WireGuard VPN\u003C/strong>, allowing you to share files (NFS, etc.) as if they were on the same private network.\u003C/p>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"1️⃣-install-wireguard-on-all-machines\">1️⃣ Install WireGuard on all machines\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#1️⃣-install-wireguard-on-all-machines\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “1️⃣ Install WireGuard on all machines”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Run the following on \u003Cstrong>each machine\u003C/strong> (server and clients):\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">update\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">install\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wireguard\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo apt updatesudo apt install -y wireguard\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"2️⃣-configure-the-vpn-server-main-machine-xxxx\">2️⃣ Configure the VPN Server (Main machine \u003Ccode dir=\"auto\">X.X.X.X\u003C/code>)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#2️⃣-configure-the-vpn-server-main-machine-xxxx\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “2️⃣ Configure the VPN Server (Main machine X.X.X.X)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Create the configuration file:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">nano\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/etc/wireguard/wg0.conf\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo nano /etc/wireguard/wg0.conf\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Paste the following:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">/etc/wireguard/wg0.conf\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"ini\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">...\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Interface]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">Address\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.1/24\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PrivateKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <SERVER_PRIVATE_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">ListenPort\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 51820\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Allow forwarding and NAT\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostUp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = sysctl -w \u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">net.ipv4.ip_forward\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">=1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostUp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -A FORWARD -i wg0 -j ACCEPT\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostUp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostDown\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -D FORWARD -i wg0 -j ACCEPT\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostDown\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Peer]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Client machine\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PublicKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <CLIENT_PUBLIC_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">AllowedIPs\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.2/32\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"...[Interface]Address = 10.0.0.1/24PrivateKey = \u003CSERVER_PRIVATE_KEY>ListenPort = 51820# Allow forwarding and NATPostUp = sysctl -w net.ipv4.ip_forward=1PostUp = iptables -A FORWARD -i wg0 -j ACCEPTPostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEPostDown = iptables -D FORWARD -i wg0 -j ACCEPTPostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE[Peer]# Client machinePublicKey = \u003CCLIENT_PUBLIC_KEY>AllowedIPs = 10.0.0.2/32\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"3️⃣-configure-the-vpn-client-other-machine-xxxx\">3️⃣ Configure the VPN Client (Other machine \u003Ccode dir=\"auto\">X.X.X.X\u003C/code>)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#3️⃣-configure-the-vpn-client-other-machine-xxxx\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “3️⃣ Configure the VPN Client (Other machine X.X.X.X)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Create the configuration file:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">nano\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/etc/wireguard/wg0.conf\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo nano /etc/wireguard/wg0.conf\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Paste the following:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">/etc/wireguard/wg0.conf\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"ini\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">...\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Interface]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">Address\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.2/24\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PrivateKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <CLIENT_PRIVATE_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Peer]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># VPN Server\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PublicKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <SERVER_PUBLIC_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">Endpoint\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = X.X.X.X:51820 \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Replace with your VPN server IP\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">AllowedIPs\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.0/24\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PersistentKeepalive\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 25\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"...[Interface]Address = 10.0.0.2/24PrivateKey = \u003CCLIENT_PRIVATE_KEY>[Peer]# VPN ServerPublicKey = \u003CSERVER_PUBLIC_KEY>Endpoint = X.X.X.X:51820 # Replace with your VPN server IPAllowedIPs = 10.0.0.0/24PersistentKeepalive = 25\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-generate-keys-on-each-machine\">🔑 Generate Keys on Each Machine\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-generate-keys-on-each-machine\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔑 Generate Keys on Each Machine”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>On \u003Cstrong>each machine\u003C/strong>, run:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">wg\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">genkey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">|\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">tee\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">privatekey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">|\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">wg\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">pubkey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">publickey\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"wg genkey | tee privatekey | wg pubkey > publickey\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Use the generated keys in your configurations:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode dir=\"auto\">privatekey\u003C/code> → \u003Ccode dir=\"auto\"><PRIVATE_KEY>\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">publickey\u003C/code> → to give to the peer\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-start-and-enable-vpn-on-both-machines\">🚀 Start and Enable VPN on Both Machines\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-start-and-enable-vpn-on-both-machines\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🚀 Start and Enable VPN on Both Machines”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>To start the VPN connection:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wg-quick\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">up\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wg0\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo wg-quick up wg0\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>To enable the VPN automatically on boot:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">systemctl\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">enable\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wg-quick@wg0\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo systemctl enable wg-quick@wg0\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-verification\">✅ Verification\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-verification\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “✅ Verification”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Test the VPN connection:\u003C/p>\n\u003Cul>\n\u003Cli>From \u003Cstrong>client\u003C/strong>:\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">ping\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.1\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"ping 10.0.0.1\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003C/li>\n\u003Cli>From \u003Cstrong>server\u003C/strong>:\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">ping\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.2\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"ping 10.0.0.2\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Caside aria-label=\"Caution\" class=\"starlight-aside starlight-aside--caution\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 16C11.8022 16 11.6089 16.0587 11.4444 16.1686C11.28 16.2784 11.1518 16.4346 11.0761 16.6173C11.0004 16.8001 10.9806 17.0011 11.0192 17.1951C11.0578 17.3891 11.153 17.5673 11.2929 17.7071C11.4327 17.847 11.6109 17.9422 11.8049 17.9808C11.9989 18.0194 12.2 17.9996 12.3827 17.9239C12.5654 17.8482 12.7216 17.72 12.8315 17.5556C12.9413 17.3911 13 17.1978 13 17C13 16.7348 12.8946 16.4805 12.7071 16.2929C12.5196 16.1054 12.2652 16 12 16ZM22.67 17.47L14.62 3.47003C14.3598 3.00354 13.9798 2.61498 13.5192 2.3445C13.0586 2.07401 12.5341 1.9314 12 1.9314C11.4659 1.9314 10.9414 2.07401 10.4808 2.3445C10.0202 2.61498 9.64019 3.00354 9.38 3.47003L1.38 17.47C1.11079 17.924 0.966141 18.441 0.960643 18.9688C0.955144 19.4966 1.089 20.0166 1.34868 20.4761C1.60837 20.9356 1.9847 21.3185 2.43968 21.5861C2.89466 21.8536 3.41218 21.9964 3.94 22H20.06C20.5921 22.0053 21.1159 21.8689 21.5779 21.6049C22.0399 21.341 22.4234 20.9589 22.689 20.4978C22.9546 20.0368 23.0928 19.5134 23.0895 18.9814C23.0862 18.4493 22.9414 17.9277 22.67 17.47ZM20.94 19.47C20.8523 19.626 20.7245 19.7556 20.5697 19.8453C20.4149 19.935 20.2389 19.9815 20.06 19.98H3.94C3.76111 19.9815 3.5851 19.935 3.43032 19.8453C3.27553 19.7556 3.14765 19.626 3.06 19.47C2.97223 19.318 2.92602 19.1456 2.92602 18.97C2.92602 18.7945 2.97223 18.622 3.06 18.47L11.06 4.47003C11.1439 4.30623 11.2714 4.16876 11.4284 4.07277C11.5855 3.97678 11.766 3.92599 11.95 3.92599C12.134 3.92599 12.3145 3.97678 12.4716 4.07277C12.6286 4.16876 12.7561 4.30623 12.84 4.47003L20.89 18.47C20.9892 18.6199 21.0462 18.7937 21.055 18.9732C21.0638 19.1527 21.0241 19.3312 20.94 19.49V19.47ZM12 8.00003C11.7348 8.00003 11.4804 8.10538 11.2929 8.29292C11.1054 8.48046 11 8.73481 11 9.00003V13C11 13.2652 11.1054 13.5196 11.2929 13.7071C11.4804 13.8947 11.7348 14 12 14C12.2652 14 12.5196 13.8947 12.7071 13.7071C12.8946 13.5196 13 13.2652 13 13V9.00003C13 8.73481 12.8946 8.48046 12.7071 8.29292C12.5196 8.10538 12.2652 8.00003 12 8.00003Z\">\u003C/path>\u003C/svg>Caution\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cul>\n\u003Cli>After the VPN is up, you can configure services like \u003Cstrong>NFS\u003C/strong> using the \u003Cstrong>10.0.0.0/24 private network\u003C/strong>.\u003C/li>\n\u003Cli>Make sure your firewall allows \u003Ccode dir=\"auto\">UDP 51820\u003C/code>.\u003C/li>\n\u003Cli>Adjust the \u003Ccode dir=\"auto\">AllowedIPs\u003C/code> and network according to your needs.\u003C/li>\n\u003C/ul>\u003C/div>\u003C/aside>",{"headings":374,"localImagePaths":393,"remoteImagePaths":394,"frontmatter":395,"imagePaths":396},[375,378,381,384,387,390],{"depth":71,"slug":376,"text":377},"1️⃣-install-wireguard-on-all-machines","1️⃣ Install WireGuard on all machines",{"depth":71,"slug":379,"text":380},"2️⃣-configure-the-vpn-server-main-machine-xxxx","2️⃣ Configure the VPN Server (Main machine X.X.X.X)",{"depth":71,"slug":382,"text":383},"3️⃣-configure-the-vpn-client-other-machine-xxxx","3️⃣ Configure the VPN Client (Other machine X.X.X.X)",{"depth":71,"slug":385,"text":386},"-generate-keys-on-each-machine","🔑 Generate Keys on Each Machine",{"depth":71,"slug":388,"text":389},"-start-and-enable-vpn-on-both-machines","🚀 Start and Enable VPN on Both Machines",{"depth":71,"slug":391,"text":392},"-verification","✅ Verification",[],[],{"title":364},[],"documentation/api",{"id":397,"data":399,"body":405,"filePath":406,"digest":407,"deferredRender":22},{"title":400,"description":401,"editUrl":22,"head":402,"template":50,"sidebar":403,"pagefind":22,"draft":14},"🌟 API Documentation Overview","Use the FastAPI RAG Backend API for document-based question answering.",[],{"hidden":14,"attrs":404},{},"The FastAPI-powered backend provides a comprehensive document-based question answering system using Retrieval-Augmented Generation (RAG). The API supports semantic search, document indexing, and chat completions across multiple data partitions with full OpenAI compatibility.\n\n## 🔐 Authentication\n\nAll endpoints require authentication when **enabled** (by adding a authorization token `AUTH_TOKEN` in your **`.env`**). Include your **`AUTH_TOKEN`** in the HTTP request header:\n\n```http\nAuthorization: Bearer YOUR_AUTH_TOKEN\n```\n\nFor OpenAI-compatible endpoints, `AUTH_TOKEN` serves as the `api_key` parameter. Use a placeholder like `'sk-1234'` when authentication is disabled (necessary for when using OpenAI client).\n\n---\n\n## 📡 API Serving Modes\nThis API can be served using **Uvicorn** (default) or **Ray Serve** for distributed deployments.\n\nBy default, the backend uses `uvicorn` to serve the FastAPI app.\n\nTo enable **Ray Serve**, set the following environment variable:\n\n```bash\n// .env\nENABLE_RAY_SERVE=true\n```\n\nAdditional optional environment variables for configuring Ray Serve:\n\n```bash\n// .env\nRAY_SERVE_NUM_REPLICAS=1 # Number of deployment replicas\nRAY_SERVE_HOST=0.0.0.0 # Host address for Ray Serve HTTP proxy\nRAY_SERVE_PORT=8080 # Port for Ray Serve HTTP proxy\n```\n\nWhen using Ray Serve with a **remote cluster**, the HTTP server will be started on the **head node** of the cluster.\n\n:::caution\nWhen using Ray Serve, you must disable the **FastAPI `exception handler`** by setting `DISABLE_EXCEPTION_HANDLER=true` in your environment variables. Ray Serve is currently incompatible with FastAPI's exception handling middleware. Additionally, the Chainlit UI is disabled when using Ray Serve deployment.\n:::\n\n## 🚀 API Endpoints\n### ℹ️ System Health\nVerify server status and availability.\n```http\nGET /health_check\n```\n\n---\n\n### 📦 Document Indexing\n\n#### Upload New File\n```http\nPOST /indexer/partition/{partition}/file/{file_id}\n```\n\nUpload a new file to a specific partition for indexing.\n\n**Parameters:**\n- `partition` (path): Target partition name\n- `file_id` (path): Unique identifier for the file\n\n**Request Body (form-data):**\n- `file` (binary): File to upload\n- `metadata` (JSON string): File metadata (e.g., `{\"owner\": \"user1\"}`)\n\n**Responses:**\n- `201 Created`: Returns task status URL\n- `409 Conflict`: File already exists in partition\n\n#### Replace Existing File\n```http\nPUT /indexer/partition/{partition}/file/{file_id}\n```\n\nReplace an existing file in the partition. Deletes the current entry and creates a new indexing task.\n\n**Parameters:** Same as POST endpoint\n**Request Body:** Same as POST endpoint\n**Response:** `202 Accepted` with task status URL\n\n#### Update File Metadata\n```http\nPATCH /indexer/partition/{partition}/file/{file_id}\n```\n\nUpdate file metadata without reindexing the document.\n\n**Request Body (form-data):**\n- `metadata` (JSON string): Updated metadata\n\n**Response:** `200 OK` on successful update\n\n#### Delete File\n```http\nDELETE /indexer/partition/{partition}/file/{file_id}\n```\n\nRemove a file from the specified partition.\n\n**Responses:**\n- `204 No Content`: Successfully deleted\n- `404 Not Found`: File not found in partition\n\n#### Check Indexing Status\n```http\nGET /indexer/task/{task_id}\n```\n\nMonitor the progress of an asynchronous indexing task.\n\n**Response:** Task status information\n\n---\n\n#### See logs of a given task\n```http\nGET /indexer/task/{task_id}/logs\n```\n\n#### Get error details of a failed task \n```http\nGET /indexer/task/{task_id}/error\n```\n\n\n### 🔍 Semantic Search\n\n#### Search Across Multiple Partitions\n```http\nGET /search/\n```\n\nPerform semantic search across specified partitions.\n\n**Query Parameters:**\n- `partitions` (optional): List of partition names (default: `[\"all\"]`)\n- `text` (required): Search query text\n- `top_k` (optional): Number of results to return (default: `5`)\n\n**Responses:**\n- `200 OK`: JSON list of document links (HATEOAS format)\n- `400 Bad Request`: Invalid partitions parameter\n\n#### Search Within Single Partition\n```http\nGET /search/partition/{partition}\n```\n\nSearch within a specific partition only.\n\n**Query Parameters:**\n- `text` (required): Search query text\n- `top_k` (optional): Number of results (default: `5`)\n\n**Response:** Same as multi-partition search\n\n#### Search Within Specific File\n```http\nGET /search/partition/{partition}/file/{file_id}\n```\n\nSearch within a particular file in a partition.\n\n**Query Parameters:** Same as partition search\n**Response:** Same as other search endpoints\n\n---\n\n### 📄 Document Extraction\n\n#### Get Extract Details\n```http\nGET /extract/{extract_id}\n```\n\nRetrieve specific document extract (chunk) by ID.\n\n**Response:** JSON containing extract content and metadata\n\n---\n\n### 💬 OpenAI-Compatible Chat\n\nThese endpoints provide full OpenAI API compatibility for seamless integration with existing tools and workflows. For detailed example of openai usage [see this section](#openai-client-integration)\n\n* List Available Models\n```http\nGET /v1/models\n```\n\nList all available RAG models (partitions).\n\n**Model Naming Convention:**\n- Pattern: `openrag-{partition_name}` => This model allows to chat specifically with the partition `{partition_name}`\n- Special model: `partition-all` (queries entire vector database)\n\n* Chat Completions\n```http\nPOST /v1/chat/completions\n```\n\nOpenAI-compatible chat completion using **`RAG` pipeline**.\n\n**Request Body:**\n```bash frame=\"none\" title=\"Testing the openai OpenRAG chat completions endpoint with curl\"\ncurl -X POST http://localhost:8080/v1/chat/completions \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer YOUR_AUTH_TOKEN\" \\\n -d '{\n \"model\": \"openrag-{partition_name}\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Your question here\"\n }\n ],\n \"temperature\": 0.7,\n \"stream\": false\n }'\n```\n\n* Text Completions\n```http\nPOST /v1/completions\n```\n\nOpenAI-compatible text completion endpoint.\n\n## 💡 Usage Examples\n\n### Bulk File Indexing\n\nFor indexing multiple files programmatically, you can use this script [`data_indexer.py`](../utility/data_indexer.py) utility script in the [`📁 utility`](../utility/) folder or simply use **`indexer ui`**.\n\n### OpenAI Client Integration\n\n```python {9-10}\nfrom openai import OpenAI, AsyncOpenAI\n\napi_base_url = \"http://localhost:8080\" # fastapi base url of 'openrag'\nbase_url = f\"{api_base_url}/v1\"\n\nauth_key = ... # your api authentification key AUTH_TOKEN in your .env. Is authentification is disabled, use a placeholder like 'sk-1234'\nclient = OpenAI(api_key=auth_key, base_url=base_url)\n\nyour_partition= 'my_partition' # name of your partition\nmodel = f\"openrag-{your_partition}\"\nsettings = {\n 'model': model,\n 'temperature': 0.3,\n 'stream': False\n}\n\nresponse = client.chat.completions.create(\n **settings,\n messages=[\n {\"role\": \"user\", \"content\": \"What information do you have about...?\"}\n ]\n)\n```\n\n---\n\n## ⚠️ Error Handling\n\nThe API uses standard HTTP status codes:\n\n- `200 OK`: Successful request\n- `201 Created`: Resource created successfully\n- `202 Accepted`: Request accepted for processing\n- `204 No Content`: Successful deletion\n- `400 Bad Request`: Invalid request parameters\n- `404 Not Found`: Resource not found\n- `409 Conflict`: Resource already exists\n\nError responses include detailed JSON messages to help with debugging and integration.","src/content/docs/documentation/API.mdx","814bf13e5dc88f0e"] \ No newline at end of file diff --git a/docs/api_documentation.md b/docs/api_documentation.md deleted file mode 100644 index 886157dbc..000000000 --- a/docs/api_documentation.md +++ /dev/null @@ -1,282 +0,0 @@ -# FastAPI RAG Backend API Documentation - -## 🌟 Overview - -This FastAPI-powered backend provides a comprehensive document-based question answering system using Retrieval-Augmented Generation (RAG). The API supports semantic search, document indexing, and chat completions across multiple data partitions with full OpenAI compatibility. - -## 🔐 Authentication - -All endpoints require authentication when **enabled** (by addting a authorization token `AUTH_TOKEN` in your **`.env`**). Include your **`AUTH_TOKEN`** in the HTTP request header: - -``` -Authorization: Bearer YOUR_AUTH_TOKEN -``` - -For OpenAI-compatible endpoints, `AUTH_TOKEN` serves as the `api_key` parameter. Use a placeholder like `'sk-1234'` when authentication is disabled (necessary for when using OpenAI client). - ---- - -## 📡 API Serving Modes -This API can be served using **Uvicorn** (default) or **Ray Serve** for distributed deployments. - -By default, the backend uses `uvicorn` to serve the FastAPI app. - -To enable **Ray Serve**, set the following environment variable: - -``` -ENABLE_RAY_SERVE=true -``` - -Additional optional environment variables for configuring Ray Serve: - -``` -RAY_SERVE_NUM_REPLICAS=1 # Number of deployment replicas -RAY_SERVE_HOST=0.0.0.0 # Host address for Ray Serve HTTP proxy -RAY_SERVE_PORT=8080 # Port for Ray Serve HTTP proxy -``` - -When using Ray Serve with a **remote cluster**, the HTTP server will be started on the **head node** of the cluster. - -> [!IMPORTANT] -> When using Ray Serve, you must disable the **FastAPI `exception handler`** by setting `DISABLE_EXCEPTION_HANDLER=true` in your environment variables. Ray Serve is currently incompatible with FastAPI's exception handling middleware. Additionally, the Chainlit UI is disabled when using Ray Serve deployment. - -## 🚀 API Endpoints -### ℹ️ System Health -Verify server status and availability. -```http -GET /health_check -``` - ---- - -### 📦 Document Indexing - -#### Upload New File -```http -POST /indexer/partition/{partition}/file/{file_id} -``` - -Upload a new file to a specific partition for indexing. - -**Parameters:** -- `partition` (path): Target partition name -- `file_id` (path): Unique identifier for the file - -**Request Body (form-data):** -- `file` (binary): File to upload -- `metadata` (JSON string): File metadata (e.g., `{"owner": "user1"}`) - -**Responses:** -- `201 Created`: Returns task status URL -- `409 Conflict`: File already exists in partition - -#### Replace Existing File -```http -PUT /indexer/partition/{partition}/file/{file_id} -``` - -Replace an existing file in the partition. Deletes the current entry and creates a new indexing task. - -**Parameters:** Same as POST endpoint -**Request Body:** Same as POST endpoint -**Response:** `202 Accepted` with task status URL - -#### Update File Metadata -```http -PATCH /indexer/partition/{partition}/file/{file_id} -``` - -Update file metadata without reindexing the document. - -**Request Body (form-data):** -- `metadata` (JSON string): Updated metadata - -**Response:** `200 OK` on successful update - -#### Delete File -```http -DELETE /indexer/partition/{partition}/file/{file_id} -``` - -Remove a file from the specified partition. - -**Responses:** -- `204 No Content`: Successfully deleted -- `404 Not Found`: File not found in partition - -#### Check Indexing Status -```http -GET /indexer/task/{task_id} -``` - -Monitor the progress of an asynchronous indexing task. - -**Response:** Task status information - ---- - -#### See logs of a given task -```http -GET /indexer/task/{task_id}/logs -``` - -#### Get error details of a failed task -```http -GET /indexer/task/{task_id}/error -``` - - -### 🔍 Semantic Search - -#### Search Across Multiple Partitions -```http -GET /search/ -``` - -Perform semantic search across specified partitions. - -**Query Parameters:** -- `partitions` (optional): List of partition names (default: `["all"]`) -- `text` (required): Search query text -- `top_k` (optional): Number of results to return (default: `5`) - -**Responses:** -- `200 OK`: JSON list of document links (HATEOAS format) -- `400 Bad Request`: Invalid partitions parameter - -#### Search Within Single Partition -```http -GET /search/partition/{partition} -``` - -Search within a specific partition only. - -**Query Parameters:** -- `text` (required): Search query text -- `top_k` (optional): Number of results (default: `5`) - -**Response:** Same as multi-partition search - -#### Search Within Specific File -```http -GET /search/partition/{partition}/file/{file_id} -``` - -Search within a particular file in a partition. - -**Query Parameters:** Same as partition search -**Response:** Same as other search endpoints - ---- - -### 📄 Document Extraction - -#### Get Extract Details -```http -GET /extract/{extract_id} -``` - -Retrieve specific document extract (chunk) by ID. - -**Response:** JSON containing extract content and metadata - ---- - -### 💬 OpenAI-Compatible Chat - -These endpoints provide full OpenAI API compatibility for seamless integration with existing tools and workflows. For detailed example of openai usage [see this section](#openai-client-integration) - -* List Available Models -```http -GET /v1/models -``` - -List all available RAG models (partitions). - -**Model Naming Convention:** -- Pattern: `openrag-{partition_name}` => This model allows to chat specifically with the partition `{partition_name}` -- Special model: `partition-all` (queries entire vector database) - -* Chat Completions -```http -POST /v1/chat/completions -``` - -OpenAI-compatible chat completion using **`RAG` pipeline**. - -**Request Body:** -```json -{ - "model": "openrag-{partition_name}", - "messages": [ - { - "role": "user", - "content": "Your question here" - } - ], - "temperature": 0.7, - "stream": 0.3, - ... -} -``` - -* Text Completions -```http -POST /v1/completions -``` - -OpenAI-compatible text completion endpoint. - -## 💡 Usage Examples - -### Bulk File Indexing - -For indexing multiple files programmatically, you can use this script [`data_indexer.py`](../utility/data_indexer.py) utility script in the [`📁 utility`](../utility/) folder or simply use **`indexer ui`**. - -### OpenAI Client Integration - -For detailed examples of using OpenAI clients with this API, see the [`openai_compatibility_guide.ipynb`](./utility/openai_compatibility_guide.ipynb) notebook in the [`📁 utility`](./utility/) folder or simply using **`IndexerUI`**. - -#### Example OpenAI Client Usage - -```python -from openai import OpenAI, AsyncOpenAI - -api_base_url = "http://localhost:8080" # fastapi base url -base_url = f"{api_base_url}/v1" - -auth_key = 'sk-1234' # your api authentification key, AUTH_TOKEN in your .env -client = OpenAI(api_key=auth_key, base_url=base_url) - -your_partition= 'my_partition' # name of your partition -model = f"openrag-{your_partition}" -settings = { - 'model': model, - 'temperature': 0.3, - 'stream': False -} - - -response = client.chat.completions.create( - **settings, - messages=[ - {"role": "user", "content": "What information do you have about...?"} - ] -) -``` - ---- - -## ⚠️ Error Handling - -The API uses standard HTTP status codes: - -- `200 OK`: Successful request -- `201 Created`: Resource created successfully -- `202 Accepted`: Request accepted for processing -- `204 No Content`: Successful deletion -- `400 Bad Request`: Invalid request parameters -- `404 Not Found`: Resource not found -- `409 Conflict`: Resource already exists - -Error responses include detailed JSON messages to help with debugging and integration. \ No newline at end of file diff --git a/docs/chainlit_data_persistency.md b/docs/chainlit_data_persistency.md deleted file mode 100644 index d2d592116..000000000 --- a/docs/chainlit_data_persistency.md +++ /dev/null @@ -1,43 +0,0 @@ -# Data Persistency - -The [Chainlit data layer](https://docs.chainlit.io/data-layers/overview) allows you to persist conversations in chainlit. -This project uses a [dockerized fork](https://github.com/Chainlit/chainlit-datalayer) for easier deployment and setup. - -In OpenRAG, one can activate **`Chainlit data layer`** following these steps: - -### Step 1: Set up authentication -In fact, chainlit authentication is necessary for data persistency. Set chainlit authentication if not already done (refer to the [chainlit auth guide](./setup_chainlit_ui_auth.md)) - -### Step 2: Add the following variables -To deploy the Chainlit data layer service, add the following variable: -```bash -# Persistency services: postgres (localstack (AWS emulator deployed locally) -CHAINLIT_DATALAYER_COMPOSE=extern/chainlit-datalayer/compose.yaml -``` -This provides 2 services: -- a postgres database to store users, feedbacks, chat history, etc -- "s3 bucket" emulator to store elements (files attached in the chat). -> [!NOTE] -> Chainlit datalayer is cloud-compatible, and the same applies for local data persistency. So for local storage, a cloud/s3 service emulator that runs in a container is deployed as well. - -* Variables for the postgres data -> [!IMPORTANT] -> Knowing that OpenRAG already has a running postgres service (**`rdb`**) (refer to the [docker-compose.yaml](../docker-compose.yaml) file), there is no need to deploy another postgres service. In that case, comment out the postgres service definition in the [compose.yaml file](../extern/chainlit-datalayer/compose.yaml) and add the following variable to your .env - -```bash -DATABASE_URL=postgresql://root:root_password@rdb:5432/chainlit -``` -* Variables for chainlit to use the **`S3 Bucket`** -Add the following variables to your `.env` so that chainlit can use them to connect to the locally deployed S3 bucket - -```bash -## S3 bucket configuration. -BUCKET_NAME=my-bucket -APP_AWS_ACCESS_KEY=random-key -APP_AWS_SECRET_KEY=random-key -APP_AWS_REGION=eu-central-1 -DEV_AWS_ENDPOINT=http://localstack:4566 -``` - -> [!IMPORTANT] -> If you want to deactivate the service, comment out these variables, especially `CHAINLIT_DATALAYER_COMPOSE`. \ No newline at end of file diff --git a/docs/deploy_ray_cluster.md b/docs/deploy_ray_cluster.md deleted file mode 100644 index fd94d8557..000000000 --- a/docs/deploy_ray_cluster.md +++ /dev/null @@ -1,141 +0,0 @@ -# ⚡ Distributed Deployment in a Ray Cluster - -This guide explains how to deploy **OpenRAG** across multiple machines using **Ray** for distributed indexing and processing. - ---- - -## ✅ 1. Set Environment Variables - -Ensure your `.env` file includes the standard app variables **plus Ray-specific ones** listed below: - -```env -# Ray -# Resources for all files -RAY_NUM_GPUS=0.1 -RAY_POOL_SIZE=1 -RAY_MAX_TASKS_PER_WORKER=5 - -# PDF specific resources when using marker -MARKER_MAX_TASKS_PER_CHILD=10 -MARKER_MAX_PROCESSES=5 # Number of subprocesses <-> Number of concurrent pdfs per worker -MARKER_MIN_PROCESSES=3 # Minimum number of subprocesses available before triggering a process pool reset. -MARKER_POOL_SIZE=1 # Number of workers (typically 1 worker per cluster node) -MARKER_NUM_GPUS=0.01 - -SHARED_ENV=/ray_mount/.env -RAY_DASHBOARD_PORT=8265 -RAY_ADDRESS=ray://X.X.X.X:10001 -HEAD_NODE_IP=X.X.X.X -RAY_HEAD_ADDRESS=X.X.X.X:6379 -# RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # to enable logs at task level in ray dashboard -RAY_task_retry_delay_ms=3000 - -# Ray volumes -DATA_VOLUME=/ray_mount/data -MODEL_WEIGHTS_VOLUME=/ray_mount/model_weights -CONFIG_VOLUME=/ray_mount/.hydra_config -UV_LINK_MODE=copy -UV_CACHE_DIR=/tmp/uv-cache -``` - -✅ Use host IPs instead of Docker service names : - -- EMBEDDER_BASE_URL=http://:8000/v1 # ✅ instead of http://vllm:8000/v1 -- VDB_HOST= # ✅ instead of VDB_HOST=milvus - - -> 🧠 **Tips** -> -> - `RAY_NUM_GPUS` defines **per-actor resource requirements**. Ray will not start a task until these resources are available on one of the nodes. -> For example, if one indexation consumes ~1GB of VRAM and your GPU has 4GB, setting `RAY_NUM_GPUS=0.25` allows you to run **4 indexers per node**. In a 2-node cluster, that means up to **8 concurrent indexation tasks**. -> -> - `RAY_POOL_SIZE` defines the number of worker actors that will be created to handle indexation tasks. It acts like a **maximum concurrency limit**. -> Using the previous example, you can set `POOL_SIZE=8` to fully utilize your cluster capacity. -> ⚠️ If other GPU-intensive services are running on your nodes (e.g. vLLM, the RAG API), make sure to **reserve enough GPU memory** for them and subtract that from your total when calculating the safe pool size. - ---- - -## 📁 2. Set Up Shared Storage - -All nodes need to access shared configuration and data folders. -We recommend using **GlusterFS** for this. - -➡ Follow the [GlusterFS Setup Guide](./setup_glusterfs.md) to configure: - -- Shared access to: - - `.env` - - `.hydra_config` - - `/data` (uploaded files) - - `/model_weights` (embedding model cache) - ---- - -## 🚀 3. Start the Ray Cluster - -First, prepare your `cluster.yaml` file. Here's an example for a **local provider**: - -```yaml -cluster_name: rag-cluster -provider: - type: local - head_ip: 10.0.0.1 - worker_ips: [10.0.0.2] # Static IPs of other nodes (does not auto-start workers) - -docker: - image: ghcr.io/linagora/openrag-ray - pull_before_run: true - container_name: ray_node - run_options: - - --gpus all - - -v /ray_mount/model_weights:/app/model_weights - - -v /ray_mount/data:/app/data - - -v /ray_mount/.hydra_config:/app/.hydra_config - - -v /ray_mount/logs:/app/logs - - --env-file /ray_mount/.env - -auth: - ssh_user: ubuntu - ssh_private_key: path/to/private/key # Replace with your actual ssh key path - -head_start_ray_commands: - - uv run ray stop - - uv run ray start --head --dashboard-host 0.0.0.0 --dashboard-port ${RAY_DASHBOARD_PORT:-8265} --node-ip-address ${HEAD_NODE_IP} --autoscaling-config=~/ray_bootstrap_config.yaml -worker_start_ray_commands: - - uv run ray stop - - uv run ray start --address ${HEAD_NODE_IP:-10.0.0.1}:6379 -``` - -> 🛠️ The base image (`ghcr.io/linagora/openrag-ray`) must be built from `Dockerfile.ray` and pushed to a container registry before use. - -### ⬆️ Launch the cluster - -```bash -uv run ray up -y cluster.yaml -``` - -## 🐳 4. Launch the OpenRAG App - -Use the Docker Compose setup: - -```bash -docker compose up -d -``` - -Once running, **OpenRAG will auto-connect** to the Ray cluster using `RAY_ADDRESS` from `.env`. - ---- - -With this setup, your app is now fully distributed and ready to handle concurrent tasks across your Ray cluster. - - -## 🛠️ Troubleshooting - -### ❌ Permission Denied Errors - -If you encounter errors like `Permission denied` when Ray or Docker tries to access shared folders (SQL database, model files, ...), it's likely due to insufficient permissions on the host system. - -👉 To resolve this, you can set full read/write/execute permissions on the shared directory: - -```bash -sudo chmod -R 777 /ray_mount -``` \ No newline at end of file diff --git a/docs/setup_chainlit_ui_auth.md b/docs/setup_chainlit_ui_auth.md deleted file mode 100644 index 5527b899e..000000000 --- a/docs/setup_chainlit_ui_auth.md +++ /dev/null @@ -1,19 +0,0 @@ -To configure password-based authentication for your Chainlit UI, add the following environment variables to your `.env` file: - -## Step 1: Set up the authentication secret - -First, define a **`CHAINLIT_AUTH_SECRET`** environment variable. You can generate one automatically using the command `chainlit create-secret` (or `uv run chainlit create-secret` if using uv). Alternatively, you can provide your own **custom value**. - -For detailed information about this variable, see the [Chainlit authentication documentation](https://docs.chainlit.io/authentication/overview). - -## Step 2: Configure username and password - -For password-based authentication (see [Chainlit password authentication docs](https://docs.chainlit.io/authentication/password)), add your desired username and password to the `.env` file: - -```bash -CHAINLIT_AUTH_SECRET=... -CHAINLIT_USERNAME=OpenRAG -CHAINLIT_PASSWORD=OpenRAG2025 -``` - -This configuration will enable secure access to your Chainlit application using the specified credentials. \ No newline at end of file diff --git a/docs/setup_glusterfs.md b/docs/setup_glusterfs.md deleted file mode 100644 index 477b0b315..000000000 --- a/docs/setup_glusterfs.md +++ /dev/null @@ -1,137 +0,0 @@ -# 🪵 GlusterFS Setup for Shared Storage (Ray Cluster) - -In a Ray distributed setup, **all worker nodes need access to certain shared resources** used by the application. -This includes: - -- `.env` (environment variables for models and settings) -- `.hydra_config` (application configuration) -- Uploaded files (`/data`) -- Model weights (e.g. `/model_weights` if using HF local cache) - ---- - -## 1️⃣ Setup VPN (if required) - -If your Ray nodes are **not on the same local network**, set up a VPN between them first. -➡ Refer to the dedicated [VPN setup guide](../docs/setup_vpn.md). -You can skip this step if your nodes are already on the same LAN. - ---- - -## 2️⃣ Setup GlusterFS (Distributed Filesystem) - -GlusterFS allows you to **share and replicate storage across multiple nodes** with redundancy and better fault tolerance. - -This guide assumes: -- You have 4 machines on the same private network -- You want all of them to share `/ray_mount` - ---- - -### 🔧 Install GlusterFS - -Run this on **all 4 machines**: - -```bash -sudo apt update -sudo apt install -y glusterfs-server -sudo systemctl enable --now glusterd -``` - ---- - -### 🤝 Connect all nodes into a trusted pool - -From one node (e.g. the Ray head), run: - -```bash -gluster peer probe -gluster peer probe -gluster peer probe -``` - -Confirm with: - -```bash -gluster peer status -``` - ---- - -### 📁 Create bricks on each node - -On **each node**, run: - -```bash -sudo mkdir -p /gluster/bricks/ray_mount -``` - ---- - -### 📦 Create the replicated GlusterFS volume - -From one node (e.g. the Ray head): - -```bash -gluster volume create rayvol replica 4 \ - :/gluster/bricks/ray_mount \ - :/gluster/bricks/ray_mount \ - :/gluster/bricks/ray_mount \ - :/gluster/bricks/ray_mount \ - force -``` - -Start the volume: - -```bash -gluster volume start rayvol -``` - ---- - -### 🔗 Mount the volume on all nodes - -Install the client tools: - -```bash -sudo apt install -y glusterfs-client -``` - -Create the mount point: - -```bash -sudo mkdir -p /ray_mount -``` - -Mount it (on each node): - -```bash -sudo mount -t glusterfs :/rayvol /ray_mount -``` - -To make this permanent across reboots: - -```bash -echo ":/rayvol /ray_mount glusterfs defaults,_netdev 0 0" | sudo tee -a /etc/fstab -``` - -> ✅ Replace `` with one of your node IPs in the GlusterFS cluster. - ---- - -### 📂 Copy required data to the shared folder - -From any node: - -```bash -sudo cp -r .hydra_config /ray_mount/ -sudo cp .env /ray_mount/ -sudo mkdir /ray_mount/data /ray_mount/model_weights -sudo chown -R ubuntu:ubuntu /ray_mount -``` - -> ✅ Ensure that the ownership is set to the user running Ray workers (e.g. `ubuntu`) so that all nodes can read/write. - ---- - -Now, all Ray nodes will have **consistent access to required data and configurations** via `/ray_mount`, backed by a fault-tolerant and distributed filesystem. \ No newline at end of file diff --git a/docs/setup_indexerui.md b/docs/setup_indexerui.md deleted file mode 100644 index f542d5fd9..000000000 --- a/docs/setup_indexerui.md +++ /dev/null @@ -1,42 +0,0 @@ -## Configuring the Indexer UI - -### 1. Download the `indexer-ui` Submodule - -> Ensure the `indexer-ui` submodule is initialized and downloaded. If not, run the following command from the root of your `openrag` project: - -```bash -cd # openrag project -git submodule update --init --recursive -``` - -> \[!Note] -> The `--init --recursive` flags will: -> -> * Initialize all submodules defined in the `.gitmodules` file -> * Clone the content of each submodule -> * Recursively initialize and update nested submodules - -> [!IMPORTANT] -> Each version of **`openrag`** ships with a specific compatible commit of [indexer-ui](https://github.com/linagora/openrag-admin-ui). The above command is sufficient. -> In development mode, to fetch the latest version of `indexer-ui`, run: - -```bash -git submodule foreach 'git checkout main && git pull' -``` - -### 2. Set Environment Variables - -To enable the Indexer UI, add the following environment variables to your configuration: - -* Replace **`X.X.X.X`** with `localhost` (for local use) or your server IP -* Replace **`APP_PORT`** with your FastAPI port (default: 8080) -* Set the **base URL of the Indexer UI** (required to prevent CORS issues). Replace **`INDEXERUI_PORT`** accordingly -* Set the **base URL of your FastAPI backend** (used by the frontend). Replace **`APP_PORT`** accordingly - -```bash -INDEXERUI_COMPOSE_FILE=extern/indexer-ui/docker-compose.yaml # Path to the docker-compose file -VITE_INCLUDE_CREDENTIALS=false # Set to true if FastAPI authentication is enabled -INDEXERUI_PORT=8060 # Port for the Indexer UI (default: 3042) -INDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT' -VITE_API_BASE_URL='http://X.X.X.X:APP_PORT' -``` \ No newline at end of file diff --git a/docs/setup_vpn.md b/docs/setup_vpn.md deleted file mode 100644 index 7aa519978..000000000 --- a/docs/setup_vpn.md +++ /dev/null @@ -1,120 +0,0 @@ -# 🌐 VPN Setup for Remote Machines with WireGuard - -This guide helps you securely connect your remote machines using **WireGuard VPN**, allowing you to share files (NFS, etc.) as if they were on the same private network. - ---- - -## 1️⃣ Install WireGuard on all machines - -Run the following on **each machine** (server and clients): - -```bash -sudo apt update -sudo apt install -y wireguard -``` - ---- - -## 2️⃣ Configure the VPN Server (Main machine `X.X.X.X`) - -Create the configuration file: - -```bash -sudo nano /etc/wireguard/wg0.conf -``` - -Paste the following: - -```ini -[Interface] -Address = 10.0.0.1/24 -PrivateKey = -ListenPort = 51820 - -# Allow forwarding and NAT -PostUp = sysctl -w net.ipv4.ip_forward=1 -PostUp = iptables -A FORWARD -i wg0 -j ACCEPT -PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE -PostDown = iptables -D FORWARD -i wg0 -j ACCEPT -PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE - -[Peer] -# Client machine -PublicKey = -AllowedIPs = 10.0.0.2/32 -``` - ---- - -## 3️⃣ Configure the VPN Client (Other machine `X.X.X.X`) - -Create the configuration file: - -```bash -sudo nano /etc/wireguard/wg0.conf -``` - -Paste the following: - -```ini -[Interface] -Address = 10.0.0.2/24 -PrivateKey = - -[Peer] -# VPN Server -PublicKey = -Endpoint = X.X.X.X:51820 # Replace with your VPN server IP -AllowedIPs = 10.0.0.0/24 -PersistentKeepalive = 25 -``` - ---- - -## 🔑 Generate Keys on Each Machine - -On **each machine**, run: - -```bash -wg genkey | tee privatekey | wg pubkey > publickey -``` - -Use the generated keys in your configurations: -- `privatekey` → `` -- `publickey` → to give to the peer - ---- - -## 🚀 Start and Enable VPN on Both Machines - -To start the VPN connection: -```bash -sudo wg-quick up wg0 -``` - -To enable the VPN automatically on boot: -```bash -sudo systemctl enable wg-quick@wg0 -``` - ---- - -## ✅ Verification - -Test the VPN connection: -- From **client**: - ```bash - ping 10.0.0.1 - ``` -- From **server**: - ```bash - ping 10.0.0.2 - ``` - ---- - -## 💡 Notes - -- After the VPN is up, you can configure services like **NFS** using the **10.0.0.0/24 private network**. -- Make sure your firewall allows `UDP 51820`. -- Adjust the `AllowedIPs` and network according to your needs. \ No newline at end of file diff --git a/src/content/docs/documentation/API.mdx b/src/content/docs/documentation/API.mdx index ed3dc31ce..22e542363 100644 --- a/src/content/docs/documentation/API.mdx +++ b/src/content/docs/documentation/API.mdx @@ -1,5 +1,5 @@ --- -title: API +title: 🌟 API Documentation Overview description: Use the FastAPI RAG Backend API for document-based question answering. --- @@ -241,14 +241,10 @@ For indexing multiple files programmatically, you can use this script [`data_ind ### OpenAI Client Integration -For detailed examples of using OpenAI clients with this API, see the [`openai_compatibility_guide.ipynb`](./utility/openai_compatibility_guide.ipynb) notebook in the [`📁 utility`](./utility/) folder or simply use **`IndexerUI`**. - -#### Example OpenAI Client Usage - ```python {9-10} from openai import OpenAI, AsyncOpenAI -api_base_url = "http://localhost:8080" # fastapi base url +api_base_url = "http://localhost:8080" # fastapi base url of 'openrag' base_url = f"{api_base_url}/v1" auth_key = ... # your api authentification key AUTH_TOKEN in your .env. Is authentification is disabled, use a placeholder like 'sk-1234' diff --git a/src/content/docs/documentation/chainlit_data_persistency.md b/src/content/docs/documentation/chainlit_data_persistency.md index 1444dcc70..b6893cb95 100644 --- a/src/content/docs/documentation/chainlit_data_persistency.md +++ b/src/content/docs/documentation/chainlit_data_persistency.md @@ -28,7 +28,7 @@ Chainlit datalayer is cloud-compatible, and the same applies for local data pers * Variables for the postgres data :::tip{icon="heart"} -Knowing that OpenRAG already has a running postgres service (**`rdb`**) (refer to the [docker-compose.yaml](../docker-compose.yaml) file), there is no need to deploy another postgres service. In that case, comment out the postgres service definition in the [compose.yaml file](../extern/chainlit-datalayer/compose.yaml) and add the following variable to your .env +Knowing that OpenRAG already has a running postgres service (**`rdb`**) (refer to the [docker-compose.yaml](/docker-compose.yaml) file), there is no need to deploy another postgres service. In that case, comment out the postgres service definition in the [compose.yaml](/extern/chainlit-datalayer/compose.yaml) file and add the following variable to your .env ::: ```bash diff --git a/src/content/docs/documentation/features_in_details.md b/src/content/docs/documentation/features_in_details.md index ce4a4166b..9dd70133a 100644 --- a/src/content/docs/documentation/features_in_details.md +++ b/src/content/docs/documentation/features_in_details.md @@ -1,5 +1,5 @@ --- -title: ✨ Features +title: ✨ Key Features --- ### 📁 Rich File Format Support diff --git a/docs/kubernetes.md b/src/content/docs/documentation/kubernetes.md similarity index 87% rename from docs/kubernetes.md rename to src/content/docs/documentation/kubernetes.md index 8d045e788..b171f7ffc 100644 --- a/docs/kubernetes.md +++ b/src/content/docs/documentation/kubernetes.md @@ -1,4 +1,6 @@ -# Deploying OpenRAG on Kubernetes +--- +title: Deploying OpenRAG on Kubernetes +--- This guide explains how to deploy the **OpenRAG** stack on a Kubernetes cluster using Helm. @@ -19,7 +21,7 @@ This guide explains how to deploy the **OpenRAG** stack on a Kubernetes cluster - Copy or create a new `values.yaml` at the root of your repo. - You can see the full example file inside the chart: - [../charts/openrag-stack/values.yaml](../charts/openrag-stack/values.yaml) + [../charts/openrag-stack/values.yaml](/charts/openrag-stack/values.yaml) - Customize the values you need (e.g., image tags, resources, ingress host, storage class, environment variables, secrets). 2. **Set environment and secrets**: @@ -30,7 +32,10 @@ This guide explains how to deploy the **OpenRAG** stack on a Kubernetes cluster 3. **Install or upgrade the release from GHCR**: ```bash - helm upgrade --install openrag oci://ghcr.io/linagora/openrag-stack -f ./values.yaml --version 0.1.0 + helm upgrade\ + --install openrag oci://ghcr.io/linagora/openrag-stack\ + -f ./values.yaml\ + --version 0.1.0 ``` - `openrag` is the Helm release name. diff --git a/src/content/docs/documentation/setup_glusterfs.md b/src/content/docs/documentation/setup_glusterfs.md index 80a7102ca..9c1fdd334 100644 --- a/src/content/docs/documentation/setup_glusterfs.md +++ b/src/content/docs/documentation/setup_glusterfs.md @@ -2,7 +2,7 @@ title: GlusterFS --- -# 🪵 GlusterFS Setup for Shared Storage (Ray Cluster) +## 🪵 GlusterFS Setup for Shared Storage (Ray Cluster) In a Ray distributed setup, **all worker nodes need access to certain shared resources** used by the application. This includes: @@ -66,7 +66,7 @@ gluster peer status On **each node**, run: -```bash +```bash title="create brick directories on each node" sudo mkdir -p /gluster/bricks/ray_mount ``` diff --git a/src/content/docs/documentation/setup_indexerui.md b/src/content/docs/documentation/setup_indexerui.md index c393418e5..a9ff2da96 100644 --- a/src/content/docs/documentation/setup_indexerui.md +++ b/src/content/docs/documentation/setup_indexerui.md @@ -9,7 +9,6 @@ title: Indexer UI > Ensure the `indexer-ui` submodule is initialized and downloaded. If not, run the following command from the root of your `openrag` project: ```bash -// .env cd # openrag project git submodule update --init --recursive ``` @@ -22,7 +21,7 @@ The `--init --recursive` flags will: * Recursively initialize and update nested submodules ::: -:::caution +:::caution[Important] Each version of **`openrag`** ships with a specific compatible commit of [indexer-ui](https://github.com/linagora/openrag-admin-ui). The above command is sufficient. In development mode, to fetch the latest version of `indexer-ui`, run: ```bash title="fetching the latest version of submodules..." diff --git a/src/content/docs/documentation/setup_vpn.md b/src/content/docs/documentation/setup_vpn.md index 0fce6a2c6..a0a7f19ec 100644 --- a/src/content/docs/documentation/setup_vpn.md +++ b/src/content/docs/documentation/setup_vpn.md @@ -119,7 +119,7 @@ Test the VPN connection: --- -:::caution{icon="approve-check"} +:::caution - After the VPN is up, you can configure services like **NFS** using the **10.0.0.0/24 private network**. - Make sure your firewall allows `UDP 51820`. - Adjust the `AllowedIPs` and network according to your needs. From a0f343b1a6528d132d68026d50ec5d0de7876f93 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Mon, 6 Oct 2025 07:35:09 +0000 Subject: [PATCH 033/126] Remove .astro folder from tracking --- .astro/collections/docs.schema.json | 646 ---------------------------- .astro/content-assets.mjs | 1 - .astro/content-modules.mjs | 11 - .astro/content.d.ts | 218 ---------- .astro/data-store.json | 1 - .astro/settings.json | 5 - .astro/types.d.ts | 2 - 7 files changed, 884 deletions(-) delete mode 100644 .astro/collections/docs.schema.json delete mode 100644 .astro/content-assets.mjs delete mode 100644 .astro/content-modules.mjs delete mode 100644 .astro/content.d.ts delete mode 100644 .astro/data-store.json delete mode 100644 .astro/settings.json delete mode 100644 .astro/types.d.ts diff --git a/.astro/collections/docs.schema.json b/.astro/collections/docs.schema.json deleted file mode 100644 index 9500aa03f..000000000 --- a/.astro/collections/docs.schema.json +++ /dev/null @@ -1,646 +0,0 @@ -{ - "$ref": "#/definitions/docs", - "definitions": { - "docs": { - "type": "object", - "properties": { - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "editUrl": { - "anyOf": [ - { - "type": "string", - "format": "uri" - }, - { - "type": "boolean" - } - ], - "default": true - }, - "head": { - "type": "array", - "items": { - "type": "object", - "properties": { - "tag": { - "type": "string", - "enum": [ - "title", - "base", - "link", - "style", - "meta", - "script", - "noscript", - "template" - ] - }, - "attrs": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "boolean" - }, - { - "not": {} - } - ] - } - }, - "content": { - "type": "string" - } - }, - "required": [ - "tag" - ], - "additionalProperties": false - }, - "default": [] - }, - "tableOfContents": { - "anyOf": [ - { - "type": "object", - "properties": { - "minHeadingLevel": { - "type": "integer", - "minimum": 1, - "maximum": 6, - "default": 2 - }, - "maxHeadingLevel": { - "type": "integer", - "minimum": 1, - "maximum": 6, - "default": 3 - } - }, - "additionalProperties": false - }, - { - "type": "boolean" - } - ], - "default": { - "minHeadingLevel": 2, - "maxHeadingLevel": 3 - } - }, - "template": { - "type": "string", - "enum": [ - "doc", - "splash" - ], - "default": "doc" - }, - "hero": { - "type": "object", - "properties": { - "title": { - "type": "string" - }, - "tagline": { - "type": "string" - }, - "image": { - "anyOf": [ - { - "type": "object", - "properties": { - "alt": { - "type": "string", - "default": "" - }, - "file": { - "type": "string" - } - }, - "required": [ - "file" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "alt": { - "type": "string", - "default": "" - }, - "dark": { - "type": "string" - }, - "light": { - "type": "string" - } - }, - "required": [ - "dark", - "light" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "html": { - "type": "string" - } - }, - "required": [ - "html" - ], - "additionalProperties": false - } - ] - }, - "actions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "text": { - "type": "string" - }, - "link": { - "type": "string" - }, - "variant": { - "type": "string", - "enum": [ - "primary", - "secondary", - "minimal" - ], - "default": "primary" - }, - "icon": { - "anyOf": [ - { - "type": "string", - "enum": [ - "up-caret", - "down-caret", - "right-caret", - "left-caret", - "up-arrow", - "down-arrow", - "right-arrow", - "left-arrow", - "bars", - "translate", - "pencil", - "pen", - "document", - "add-document", - "setting", - "external", - "download", - "cloud-download", - "moon", - "sun", - "laptop", - "open-book", - "information", - "magnifier", - "forward-slash", - "close", - "error", - "warning", - "approve-check-circle", - "approve-check", - "rocket", - "star", - "puzzle", - "list-format", - "random", - "comment", - "comment-alt", - "heart", - "github", - "gitlab", - "bitbucket", - "codePen", - "farcaster", - "discord", - "gitter", - "twitter", - "x.com", - "mastodon", - "codeberg", - "youtube", - "threads", - "linkedin", - "twitch", - "azureDevOps", - "microsoftTeams", - "instagram", - "stackOverflow", - "telegram", - "rss", - "facebook", - "email", - "phone", - "reddit", - "patreon", - "signal", - "slack", - "matrix", - "hackerOne", - "openCollective", - "blueSky", - "discourse", - "zulip", - "pinterest", - "tiktok", - "astro", - "alpine", - "pnpm", - "biome", - "bun", - "mdx", - "apple", - "linux", - "homebrew", - "nix", - "starlight", - "pkl", - "node", - "cloudflare", - "vercel", - "netlify", - "deno", - "jsr", - "nostr", - "backstage", - "confluence", - "jira", - "storybook", - "vscode", - "jetbrains", - "zed", - "vim", - "figma", - "sketch", - "npm", - "sourcehut", - "substack", - "seti:folder", - "seti:bsl", - "seti:mdo", - "seti:salesforce", - "seti:asm", - "seti:bicep", - "seti:bazel", - "seti:c", - "seti:c-sharp", - "seti:html", - "seti:cpp", - "seti:clojure", - "seti:coldfusion", - "seti:config", - "seti:crystal", - "seti:crystal_embedded", - "seti:json", - "seti:css", - "seti:csv", - "seti:xls", - "seti:cu", - "seti:cake", - "seti:cake_php", - "seti:d", - "seti:word", - "seti:elixir", - "seti:elixir_script", - "seti:hex", - "seti:elm", - "seti:favicon", - "seti:f-sharp", - "seti:git", - "seti:go", - "seti:godot", - "seti:gradle", - "seti:grails", - "seti:graphql", - "seti:hacklang", - "seti:haml", - "seti:mustache", - "seti:haskell", - "seti:haxe", - "seti:jade", - "seti:java", - "seti:javascript", - "seti:jinja", - "seti:julia", - "seti:karma", - "seti:kotlin", - "seti:dart", - "seti:liquid", - "seti:livescript", - "seti:lua", - "seti:markdown", - "seti:argdown", - "seti:info", - "seti:clock", - "seti:maven", - "seti:nim", - "seti:github", - "seti:notebook", - "seti:nunjucks", - "seti:npm", - "seti:ocaml", - "seti:odata", - "seti:perl", - "seti:php", - "seti:pipeline", - "seti:pddl", - "seti:plan", - "seti:happenings", - "seti:powershell", - "seti:prisma", - "seti:pug", - "seti:puppet", - "seti:purescript", - "seti:python", - "seti:react", - "seti:rescript", - "seti:R", - "seti:ruby", - "seti:rust", - "seti:sass", - "seti:spring", - "seti:slim", - "seti:smarty", - "seti:sbt", - "seti:scala", - "seti:ethereum", - "seti:stylus", - "seti:svelte", - "seti:swift", - "seti:db", - "seti:terraform", - "seti:tex", - "seti:default", - "seti:twig", - "seti:typescript", - "seti:tsconfig", - "seti:vala", - "seti:vite", - "seti:vue", - "seti:wasm", - "seti:wat", - "seti:xml", - "seti:yml", - "seti:prolog", - "seti:zig", - "seti:zip", - "seti:wgt", - "seti:illustrator", - "seti:photoshop", - "seti:pdf", - "seti:font", - "seti:image", - "seti:svg", - "seti:sublime", - "seti:code-search", - "seti:shell", - "seti:video", - "seti:audio", - "seti:windows", - "seti:jenkins", - "seti:babel", - "seti:bower", - "seti:docker", - "seti:code-climate", - "seti:eslint", - "seti:firebase", - "seti:firefox", - "seti:gitlab", - "seti:grunt", - "seti:gulp", - "seti:ionic", - "seti:platformio", - "seti:rollup", - "seti:stylelint", - "seti:yarn", - "seti:webpack", - "seti:lock", - "seti:license", - "seti:makefile", - "seti:heroku", - "seti:todo", - "seti:ignored" - ] - }, - { - "type": "string", - "pattern": "^\\ import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Flicense.mdx&astroContentModuleFlag=true")], -["src/content/docs/index.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Findex.mdx&astroContentModuleFlag=true")], -["src/content/docs/support-and-contribute.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fsupport-and-contribute.mdx&astroContentModuleFlag=true")], -["src/content/docs/documentation/API.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fdocumentation%2FAPI.mdx&astroContentModuleFlag=true")], -["src/content/docs/getting_started/quickstart.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting_started%2Fquickstart.mdx&astroContentModuleFlag=true")], -["src/content/docs/getting_started/usage.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting_started%2Fusage.mdx&astroContentModuleFlag=true")], -["src/content/docs/installation/ansible_setup.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Finstallation%2Fansible_setup.mdx&astroContentModuleFlag=true")], -["src/content/docs/installation/docker.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Finstallation%2Fdocker.mdx&astroContentModuleFlag=true")]]); - \ No newline at end of file diff --git a/.astro/content.d.ts b/.astro/content.d.ts deleted file mode 100644 index 1acaed618..000000000 --- a/.astro/content.d.ts +++ /dev/null @@ -1,218 +0,0 @@ -declare module 'astro:content' { - interface Render { - '.mdx': Promise<{ - Content: import('astro').MarkdownInstance<{}>['Content']; - headings: import('astro').MarkdownHeading[]; - remarkPluginFrontmatter: Record; - components: import('astro').MDXInstance<{}>['components']; - }>; - } -} - -declare module 'astro:content' { - export interface RenderResult { - Content: import('astro/runtime/server/index.js').AstroComponentFactory; - headings: import('astro').MarkdownHeading[]; - remarkPluginFrontmatter: Record; - } - interface Render { - '.md': Promise; - } - - export interface RenderedContent { - html: string; - metadata?: { - imagePaths: Array; - [key: string]: unknown; - }; - } -} - -declare module 'astro:content' { - type Flatten = T extends { [K: string]: infer U } ? U : never; - - export type CollectionKey = keyof AnyEntryMap; - export type CollectionEntry = Flatten; - - export type ContentCollectionKey = keyof ContentEntryMap; - export type DataCollectionKey = keyof DataEntryMap; - - type AllValuesOf = T extends any ? T[keyof T] : never; - type ValidContentEntrySlug = AllValuesOf< - ContentEntryMap[C] - >['slug']; - - export type ReferenceDataEntry< - C extends CollectionKey, - E extends keyof DataEntryMap[C] = string, - > = { - collection: C; - id: E; - }; - export type ReferenceContentEntry< - C extends keyof ContentEntryMap, - E extends ValidContentEntrySlug | (string & {}) = string, - > = { - collection: C; - slug: E; - }; - export type ReferenceLiveEntry = { - collection: C; - id: string; - }; - - /** @deprecated Use `getEntry` instead. */ - export function getEntryBySlug< - C extends keyof ContentEntryMap, - E extends ValidContentEntrySlug | (string & {}), - >( - collection: C, - // Note that this has to accept a regular string too, for SSR - entrySlug: E, - ): E extends ValidContentEntrySlug - ? Promise> - : Promise | undefined>; - - /** @deprecated Use `getEntry` instead. */ - export function getDataEntryById( - collection: C, - entryId: E, - ): Promise>; - - export function getCollection>( - collection: C, - filter?: (entry: CollectionEntry) => entry is E, - ): Promise; - export function getCollection( - collection: C, - filter?: (entry: CollectionEntry) => unknown, - ): Promise[]>; - - export function getLiveCollection( - collection: C, - filter?: LiveLoaderCollectionFilterType, - ): Promise< - import('astro').LiveDataCollectionResult, LiveLoaderErrorType> - >; - - export function getEntry< - C extends keyof ContentEntryMap, - E extends ValidContentEntrySlug | (string & {}), - >( - entry: ReferenceContentEntry, - ): E extends ValidContentEntrySlug - ? Promise> - : Promise | undefined>; - export function getEntry< - C extends keyof DataEntryMap, - E extends keyof DataEntryMap[C] | (string & {}), - >( - entry: ReferenceDataEntry, - ): E extends keyof DataEntryMap[C] - ? Promise - : Promise | undefined>; - export function getEntry< - C extends keyof ContentEntryMap, - E extends ValidContentEntrySlug | (string & {}), - >( - collection: C, - slug: E, - ): E extends ValidContentEntrySlug - ? Promise> - : Promise | undefined>; - export function getEntry< - C extends keyof DataEntryMap, - E extends keyof DataEntryMap[C] | (string & {}), - >( - collection: C, - id: E, - ): E extends keyof DataEntryMap[C] - ? string extends keyof DataEntryMap[C] - ? Promise | undefined - : Promise - : Promise | undefined>; - export function getLiveEntry( - collection: C, - filter: string | LiveLoaderEntryFilterType, - ): Promise, LiveLoaderErrorType>>; - - /** Resolve an array of entry references from the same collection */ - export function getEntries( - entries: ReferenceContentEntry>[], - ): Promise[]>; - export function getEntries( - entries: ReferenceDataEntry[], - ): Promise[]>; - - export function render( - entry: AnyEntryMap[C][string], - ): Promise; - - export function reference( - collection: C, - ): import('astro/zod').ZodEffects< - import('astro/zod').ZodString, - C extends keyof ContentEntryMap - ? ReferenceContentEntry> - : ReferenceDataEntry - >; - // Allow generic `string` to avoid excessive type errors in the config - // if `dev` is not running to update as you edit. - // Invalid collection names will be caught at build time. - export function reference( - collection: C, - ): import('astro/zod').ZodEffects; - - type ReturnTypeOrOriginal = T extends (...args: any[]) => infer R ? R : T; - type InferEntrySchema = import('astro/zod').infer< - ReturnTypeOrOriginal['schema']> - >; - - type ContentEntryMap = { - - }; - - type DataEntryMap = { - "docs": Record; - rendered?: RenderedContent; - filePath?: string; -}>; - - }; - - type AnyEntryMap = ContentEntryMap & DataEntryMap; - - type ExtractLoaderTypes = T extends import('astro/loaders').LiveLoader< - infer TData, - infer TEntryFilter, - infer TCollectionFilter, - infer TError - > - ? { data: TData; entryFilter: TEntryFilter; collectionFilter: TCollectionFilter; error: TError } - : { data: never; entryFilter: never; collectionFilter: never; error: never }; - type ExtractDataType = ExtractLoaderTypes['data']; - type ExtractEntryFilterType = ExtractLoaderTypes['entryFilter']; - type ExtractCollectionFilterType = ExtractLoaderTypes['collectionFilter']; - type ExtractErrorType = ExtractLoaderTypes['error']; - - type LiveLoaderDataType = - LiveContentConfig['collections'][C]['schema'] extends undefined - ? ExtractDataType - : import('astro/zod').infer< - Exclude - >; - type LiveLoaderEntryFilterType = - ExtractEntryFilterType; - type LiveLoaderCollectionFilterType = - ExtractCollectionFilterType; - type LiveLoaderErrorType = ExtractErrorType< - LiveContentConfig['collections'][C]['loader'] - >; - - export type ContentConfig = typeof import("../src/content.config.js"); - export type LiveContentConfig = never; -} diff --git a/.astro/data-store.json b/.astro/data-store.json deleted file mode 100644 index 16235bda6..000000000 --- a/.astro/data-store.json +++ /dev/null @@ -1 +0,0 @@ -[["Map",1,2,9,10],"meta::meta",["Map",3,4,5,6,7,8],"astro-version","5.13.3","content-config-digest","9a95ec2e8398aaca","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"where\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[],\"responsiveStyles\":false},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":false,\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[null,null,null],\"rehypePlugins\":[null,[null,{\"experimentalHeadingIdCompat\":false}],null,[null,{\"themes\":[{\"name\":\"Night Owl No Italics\",\"type\":\"dark\",\"colors\":{\"focusBorder\":\"#122d42\",\"foreground\":\"#d6deeb\",\"disabledForeground\":\"#cccccc80\",\"descriptionForeground\":\"#d6deebb3\",\"errorForeground\":\"#ef5350\",\"icon.foreground\":\"#c5c5c5\",\"contrastActiveBorder\":null,\"contrastBorder\":\"#122d42\",\"textBlockQuote.background\":\"#7f7f7f1a\",\"textBlockQuote.border\":\"#007acc80\",\"textCodeBlock.background\":\"#4f4f4f\",\"textLink.activeForeground\":\"#3794ff\",\"textLink.foreground\":\"#3794ff\",\"textPreformat.foreground\":\"#d7ba7d\",\"textSeparator.foreground\":\"#ffffff2e\",\"editor.background\":\"#23262f\",\"editor.foreground\":\"#d6deeb\",\"editorLineNumber.foreground\":\"#4b6479\",\"editorLineNumber.activeForeground\":\"#c5e4fd\",\"editorActiveLineNumber.foreground\":\"#c6c6c6\",\"editor.selectionBackground\":\"#1d3b53\",\"editor.inactiveSelectionBackground\":\"#7e57c25a\",\"editor.selectionHighlightBackground\":\"#5f7e9779\",\"editorError.foreground\":\"#ef5350\",\"editorWarning.foreground\":\"#b39554\",\"editorInfo.foreground\":\"#3794ff\",\"editorHint.foreground\":\"#eeeeeeb2\",\"problemsErrorIcon.foreground\":\"#ef5350\",\"problemsWarningIcon.foreground\":\"#b39554\",\"problemsInfoIcon.foreground\":\"#3794ff\",\"editor.findMatchBackground\":\"#5f7e9779\",\"editor.findMatchHighlightBackground\":\"#1085bb5d\",\"editor.findRangeHighlightBackground\":\"#3a3d4166\",\"editorLink.activeForeground\":\"#4e94ce\",\"editorLightBulb.foreground\":\"#ffcc00\",\"editorLightBulbAutoFix.foreground\":\"#75beff\",\"diffEditor.insertedTextBackground\":\"#99b76d23\",\"diffEditor.insertedTextBorder\":\"#c5e47833\",\"diffEditor.removedTextBackground\":\"#ef535033\",\"diffEditor.removedTextBorder\":\"#ef53504d\",\"diffEditor.insertedLineBackground\":\"#9bb95533\",\"diffEditor.removedLineBackground\":\"#ff000033\",\"editorStickyScroll.background\":\"#011627\",\"editorStickyScrollHover.background\":\"#2a2d2e\",\"editorInlayHint.background\":\"#5f7e97cc\",\"editorInlayHint.foreground\":\"#ffffff\",\"editorInlayHint.typeBackground\":\"#5f7e97cc\",\"editorInlayHint.typeForeground\":\"#ffffff\",\"editorInlayHint.parameterBackground\":\"#5f7e97cc\",\"editorInlayHint.parameterForeground\":\"#ffffff\",\"editorPane.background\":\"#011627\",\"editorGroup.emptyBackground\":\"#011627\",\"editorGroup.focusedEmptyBorder\":null,\"editorGroupHeader.tabsBackground\":\"var(--sl-color-black)\",\"editorGroupHeader.tabsBorder\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"editorGroupHeader.noTabsBackground\":\"#011627\",\"editorGroupHeader.border\":null,\"editorGroup.border\":\"#011627\",\"editorGroup.dropBackground\":\"#7e57c273\",\"editorGroup.dropIntoPromptForeground\":\"#d6deeb\",\"editorGroup.dropIntoPromptBackground\":\"#021320\",\"editorGroup.dropIntoPromptBorder\":null,\"sideBySideEditor.horizontalBorder\":\"#011627\",\"sideBySideEditor.verticalBorder\":\"#011627\",\"scrollbar.shadow\":\"#010b14\",\"scrollbarSlider.background\":\"#ffffff17\",\"scrollbarSlider.hoverBackground\":\"#ffffff40\",\"scrollbarSlider.activeBackground\":\"#084d8180\",\"panel.background\":\"#011627\",\"panel.border\":\"#5f7e97\",\"panelTitle.activeBorder\":\"#5f7e97\",\"panelTitle.activeForeground\":\"#ffffffcc\",\"panelTitle.inactiveForeground\":\"#d6deeb80\",\"panelSectionHeader.background\":\"#80808051\",\"terminal.background\":\"#011627\",\"widget.shadow\":\"#011627\",\"editorWidget.background\":\"#021320\",\"editorWidget.foreground\":\"#d6deeb\",\"editorWidget.border\":\"#5f7e97\",\"quickInput.background\":\"#021320\",\"quickInput.foreground\":\"#d6deeb\",\"quickInputTitle.background\":\"#ffffff1a\",\"pickerGroup.foreground\":\"#d1aaff\",\"pickerGroup.border\":\"#011627\",\"editor.hoverHighlightBackground\":\"#7e57c25a\",\"editorHoverWidget.background\":\"#011627\",\"editorHoverWidget.foreground\":\"#d6deeb\",\"editorHoverWidget.border\":\"#5f7e97\",\"editorHoverWidget.statusBarBackground\":\"#011a2f\",\"titleBar.activeBackground\":\"var(--sl-color-black)\",\"titleBar.activeForeground\":\"var(--sl-color-text)\",\"titleBar.inactiveBackground\":\"#010e1a\",\"titleBar.inactiveForeground\":\"#eeefff99\",\"titleBar.border\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"toolbar.hoverBackground\":\"#5a5d5e50\",\"toolbar.activeBackground\":\"#63666750\",\"tab.activeBackground\":\"#0b2942\",\"tab.unfocusedActiveBackground\":\"#0b2942\",\"tab.inactiveBackground\":\"#01111d\",\"tab.unfocusedInactiveBackground\":\"#01111d\",\"tab.activeForeground\":\"var(--sl-color-text)\",\"tab.inactiveForeground\":\"#5f7e97\",\"tab.unfocusedActiveForeground\":\"#5f7e97\",\"tab.unfocusedInactiveForeground\":\"#5f7e97\",\"tab.hoverBackground\":null,\"tab.unfocusedHoverBackground\":null,\"tab.hoverForeground\":null,\"tab.unfocusedHoverForeground\":null,\"tab.border\":\"#272b3b\",\"tab.lastPinnedBorder\":\"#585858\",\"tab.activeBorder\":\"transparent\",\"tab.unfocusedActiveBorder\":\"#262a39\",\"tab.activeBorderTop\":\"var(--sl-color-accent-high)\",\"tab.unfocusedActiveBorderTop\":null,\"tab.hoverBorder\":null,\"tab.unfocusedHoverBorder\":null,\"tab.activeModifiedBorder\":\"#3399cc\",\"tab.inactiveModifiedBorder\":\"#3399cc80\",\"tab.unfocusedActiveModifiedBorder\":\"#3399cc80\",\"tab.unfocusedInactiveModifiedBorder\":\"#3399cc40\",\"badge.background\":\"#5f7e97\",\"badge.foreground\":\"#ffffff\",\"button.background\":\"#7e57c2cc\",\"button.foreground\":\"#ffffffcc\",\"button.border\":\"#122d42\",\"button.separator\":\"#ffffff52\",\"button.hoverBackground\":\"#7e57c2\",\"button.secondaryBackground\":\"#3a3d41\",\"button.secondaryForeground\":\"#ffffff\",\"button.secondaryHoverBackground\":\"#46494e\",\"dropdown.background\":\"#011627\",\"dropdown.foreground\":\"#ffffffcc\",\"dropdown.border\":\"#5f7e97\",\"list.activeSelectionBackground\":\"#234d708c\",\"list.activeSelectionForeground\":\"#ffffff\",\"tree.indentGuidesStroke\":\"#585858\",\"input.background\":\"#0b253a\",\"input.foreground\":\"#ffffffcc\",\"input.placeholderForeground\":\"#5f7e97\",\"inputOption.activeBorder\":\"#ffffffcc\",\"inputOption.hoverBackground\":\"#5a5d5e80\",\"inputOption.activeBackground\":\"#122d4266\",\"inputOption.activeForeground\":\"#ffffff\",\"inputValidation.infoBackground\":\"#00589ef2\",\"inputValidation.infoBorder\":\"#64b5f6\",\"inputValidation.warningBackground\":\"#675700f2\",\"inputValidation.warningBorder\":\"#ffca28\",\"inputValidation.errorBackground\":\"#ab0300f2\",\"inputValidation.errorBorder\":\"#ef5350\",\"keybindingLabel.background\":\"#8080802b\",\"keybindingLabel.foreground\":\"#cccccc\",\"keybindingLabel.border\":\"#33333399\",\"keybindingLabel.bottomBorder\":\"#44444499\",\"menu.foreground\":\"#ffffffcc\",\"menu.background\":\"#011627\",\"menu.selectionForeground\":\"#ffffff\",\"menu.selectionBackground\":\"#234d708c\",\"menu.separatorBackground\":\"#606060\",\"editor.snippetTabstopHighlightBackground\":\"#7c7c74c\",\"editor.snippetFinalTabstopHighlightBorder\":\"#525252\",\"terminal.ansiBlack\":\"#011627\",\"terminal.ansiRed\":\"#ef5350\",\"terminal.ansiGreen\":\"#22da6e\",\"terminal.ansiYellow\":\"#c5e478\",\"terminal.ansiBlue\":\"#82aaff\",\"terminal.ansiMagenta\":\"#c792ea\",\"terminal.ansiCyan\":\"#21c7a8\",\"terminal.ansiWhite\":\"#ffffff\",\"terminal.ansiBrightBlack\":\"#575656\",\"terminal.ansiBrightRed\":\"#ef5350\",\"terminal.ansiBrightGreen\":\"#22da6e\",\"terminal.ansiBrightYellow\":\"#ffeb95\",\"terminal.ansiBrightBlue\":\"#82aaff\",\"terminal.ansiBrightMagenta\":\"#c792ea\",\"terminal.ansiBrightCyan\":\"#7fdbca\",\"terminal.ansiBrightWhite\":\"#ffffff\",\"selection.background\":\"#4373c2\",\"input.border\":\"#5f7e97\",\"punctuation.definition.generic.begin.html\":\"#ef5350f2\",\"progress.background\":\"#7e57c2\",\"breadcrumb.foreground\":\"#a599e9\",\"breadcrumb.focusForeground\":\"#ffffff\",\"breadcrumb.activeSelectionForeground\":\"#ffffff\",\"breadcrumbPicker.background\":\"#001122\",\"list.invalidItemForeground\":\"#975f94\",\"list.dropBackground\":\"#011627\",\"list.focusBackground\":\"#010d18\",\"list.focusForeground\":\"#ffffff\",\"list.highlightForeground\":\"#ffffff\",\"list.hoverBackground\":\"#011627\",\"list.hoverForeground\":\"#ffffff\",\"list.inactiveSelectionBackground\":\"#0e293f\",\"list.inactiveSelectionForeground\":\"#5f7e97\",\"activityBar.background\":\"#011627\",\"activityBar.dropBackground\":\"#5f7e97\",\"activityBar.foreground\":\"#5f7e97\",\"activityBar.border\":\"#011627\",\"activityBarBadge.background\":\"#44596b\",\"activityBarBadge.foreground\":\"#ffffff\",\"sideBar.background\":\"#011627\",\"sideBar.foreground\":\"#89a4bb\",\"sideBar.border\":\"#011627\",\"sideBarTitle.foreground\":\"#5f7e97\",\"sideBarSectionHeader.background\":\"#011627\",\"sideBarSectionHeader.foreground\":\"#5f7e97\",\"editorCursor.foreground\":\"#80a4c2\",\"editor.wordHighlightBackground\":\"#f6bbe533\",\"editor.wordHighlightStrongBackground\":\"#e2a2f433\",\"editor.lineHighlightBackground\":\"#0003\",\"editor.rangeHighlightBackground\":\"#7e57c25a\",\"editorIndentGuide.background\":\"#5e81ce52\",\"editorIndentGuide.activeBackground\":\"#7e97ac\",\"editorRuler.foreground\":\"#5e81ce52\",\"editorCodeLens.foreground\":\"#5e82ceb4\",\"editorBracketMatch.background\":\"#5f7e974d\",\"editorOverviewRuler.currentContentForeground\":\"#7e57c2\",\"editorOverviewRuler.incomingContentForeground\":\"#7e57c2\",\"editorOverviewRuler.commonContentForeground\":\"#7e57c2\",\"editorGutter.background\":\"#011627\",\"editorGutter.modifiedBackground\":\"#e2b93d\",\"editorGutter.addedBackground\":\"#9ccc65\",\"editorGutter.deletedBackground\":\"#ef5350\",\"editorSuggestWidget.background\":\"#2c3043\",\"editorSuggestWidget.border\":\"#2b2f40\",\"editorSuggestWidget.foreground\":\"#d6deeb\",\"editorSuggestWidget.highlightForeground\":\"#ffffff\",\"editorSuggestWidget.selectedBackground\":\"#5f7e97\",\"debugExceptionWidget.background\":\"#011627\",\"debugExceptionWidget.border\":\"#5f7e97\",\"editorMarkerNavigation.background\":\"#0b2942\",\"editorMarkerNavigationError.background\":\"#ef5350\",\"editorMarkerNavigationWarning.background\":\"#ffca28\",\"peekView.border\":\"#5f7e97\",\"peekViewEditor.background\":\"#011627\",\"peekViewEditor.matchHighlightBackground\":\"#7e57c25a\",\"peekViewResult.background\":\"#011627\",\"peekViewResult.fileForeground\":\"#5f7e97\",\"peekViewResult.lineForeground\":\"#5f7e97\",\"peekViewResult.matchHighlightBackground\":\"#ffffffcc\",\"peekViewResult.selectionBackground\":\"#2e3250\",\"peekViewResult.selectionForeground\":\"#5f7e97\",\"peekViewTitle.background\":\"#011627\",\"peekViewTitleDescription.foreground\":\"#697098\",\"peekViewTitleLabel.foreground\":\"#5f7e97\",\"merge.currentHeaderBackground\":\"#5f7e97\",\"merge.incomingHeaderBackground\":\"#7e57c25a\",\"statusBar.background\":\"#011627\",\"statusBar.foreground\":\"#5f7e97\",\"statusBar.border\":\"#262a39\",\"statusBar.debuggingBackground\":\"#202431\",\"statusBar.debuggingBorder\":\"#1f2330\",\"statusBar.noFolderBackground\":\"#011627\",\"statusBar.noFolderBorder\":\"#25293a\",\"statusBarItem.activeBackground\":\"#202431\",\"statusBarItem.hoverBackground\":\"#202431\",\"statusBarItem.prominentBackground\":\"#202431\",\"statusBarItem.prominentHoverBackground\":\"#202431\",\"notifications.background\":\"#01111d\",\"notifications.border\":\"#262a39\",\"notificationCenter.border\":\"#262a39\",\"notificationToast.border\":\"#262a39\",\"notifications.foreground\":\"#ffffffcc\",\"notificationLink.foreground\":\"#80cbc4\",\"extensionButton.prominentForeground\":\"#ffffffcc\",\"extensionButton.prominentBackground\":\"#7e57c2cc\",\"extensionButton.prominentHoverBackground\":\"#7e57c2\",\"terminal.selectionBackground\":\"#1b90dd4d\",\"terminalCursor.background\":\"#234d70\",\"debugToolBar.background\":\"#011627\",\"welcomePage.buttonBackground\":\"#011627\",\"welcomePage.buttonHoverBackground\":\"#011627\",\"walkThrough.embeddedEditorBackground\":\"#011627\",\"gitDecoration.modifiedResourceForeground\":\"#a2bffc\",\"gitDecoration.deletedResourceForeground\":\"#ef535090\",\"gitDecoration.untrackedResourceForeground\":\"#c5e478ff\",\"gitDecoration.ignoredResourceForeground\":\"#395a75\",\"gitDecoration.conflictingResourceForeground\":\"#ffeb95cc\",\"source.elm\":\"#5f7e97\",\"string.quoted.single.js\":\"#ffffff\",\"meta.objectliteral.js\":\"#82aaff\"},\"fg\":\"#d6deeb\",\"bg\":\"#23262f\",\"semanticHighlighting\":false,\"settings\":[{\"name\":\"Changed\",\"scope\":[\"markup.changed\",\"meta.diff.header.git\",\"meta.diff.header.from-file\",\"meta.diff.header.to-file\"],\"settings\":{\"foreground\":\"#a2bffc\"}},{\"name\":\"Deleted\",\"scope\":[\"markup.deleted.diff\"],\"settings\":{\"foreground\":\"#f27775fe\"}},{\"name\":\"Inserted\",\"scope\":[\"markup.inserted.diff\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Global settings\",\"settings\":{\"background\":\"#011627\",\"foreground\":\"#d6deeb\"}},{\"name\":\"Comment\",\"scope\":[\"comment\"],\"settings\":{\"foreground\":\"#919f9f\",\"fontStyle\":\"\"}},{\"name\":\"String\",\"scope\":[\"string\"],\"settings\":{\"foreground\":\"#ecc48d\"}},{\"name\":\"String Quoted\",\"scope\":[\"string.quoted\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#ecc48d\"}},{\"name\":\"Support Constant Math\",\"scope\":[\"support.constant.math\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Number\",\"scope\":[\"constant.numeric\",\"constant.character.numeric\"],\"settings\":{\"foreground\":\"#f78c6c\",\"fontStyle\":\"\"}},{\"name\":\"Built-in constant\",\"scope\":[\"constant.language\",\"punctuation.definition.constant\",\"variable.other.constant\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"User-defined constant\",\"scope\":[\"constant.character\",\"constant.other\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Constant Character Escape\",\"scope\":[\"constant.character.escape\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"RegExp String\",\"scope\":[\"string.regexp\",\"string.regexp keyword.other\"],\"settings\":{\"foreground\":\"#5ca7e4\"}},{\"name\":\"Comma in functions\",\"scope\":[\"meta.function punctuation.separator.comma\"],\"settings\":{\"foreground\":\"#889fb2\"}},{\"name\":\"Variable\",\"scope\":[\"variable\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Keyword\",\"scope\":[\"punctuation.accessor\",\"keyword\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Storage\",\"scope\":[\"storage\",\"meta.var.expr\",\"meta.class meta.method.declaration meta.var.expr storage.type.js\",\"storage.type.property.js\",\"storage.type.property.ts\",\"storage.type.property.tsx\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type.function.arrow.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Class name\",\"scope\":[\"entity.name.class\",\"meta.class entity.name.type.class\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Inherited class\",\"scope\":[\"entity.other.inherited-class\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Function name\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Meta Tag\",\"scope\":[\"punctuation.definition.tag\",\"meta.tag\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"HTML Tag names\",\"scope\":[\"entity.name.tag\",\"meta.tag.other.html\",\"meta.tag.other.js\",\"meta.tag.other.tsx\",\"entity.name.tag.tsx\",\"entity.name.tag.js\",\"entity.name.tag\",\"meta.tag.js\",\"meta.tag.tsx\",\"meta.tag.html\"],\"settings\":{\"foreground\":\"#caece6\",\"fontStyle\":\"\"}},{\"name\":\"Tag attribute\",\"scope\":[\"entity.other.attribute-name\"],\"settings\":{\"fontStyle\":\"\",\"foreground\":\"#c5e478\"}},{\"name\":\"Entity Name Tag Custom\",\"scope\":[\"entity.name.tag.custom\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Library (function & constant)\",\"scope\":[\"support.function\",\"support.constant\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Support Constant Property Value meta\",\"scope\":[\"support.constant.meta.property-value\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Library class/type\",\"scope\":[\"support.type\",\"support.class\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Support Variable DOM\",\"scope\":[\"support.variable.dom\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Invalid\",\"scope\":[\"invalid\"],\"settings\":{\"background\":\"#ff2c83\",\"foreground\":\"#ffffff\"}},{\"name\":\"Invalid deprecated\",\"scope\":[\"invalid.deprecated\"],\"settings\":{\"foreground\":\"#ffffff\",\"background\":\"#d3423e\"}},{\"name\":\"Keyword Operator\",\"scope\":[\"keyword.operator\"],\"settings\":{\"foreground\":\"#7fdbca\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Relational\",\"scope\":[\"keyword.operator.relational\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Assignment\",\"scope\":[\"keyword.operator.assignment\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Arithmetic\",\"scope\":[\"keyword.operator.arithmetic\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Bitwise\",\"scope\":[\"keyword.operator.bitwise\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Increment\",\"scope\":[\"keyword.operator.increment\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Keyword Operator Ternary\",\"scope\":[\"keyword.operator.ternary\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Double-Slashed Comment\",\"scope\":[\"comment.line.double-slash\"],\"settings\":{\"foreground\":\"#919f9f\"}},{\"name\":\"Object\",\"scope\":[\"object\"],\"settings\":{\"foreground\":\"#cdebf7\"}},{\"name\":\"Null\",\"scope\":[\"constant.language.null\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Meta Brace\",\"scope\":[\"meta.brace\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Meta Delimiter Period\",\"scope\":[\"meta.delimiter.period\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Punctuation Definition String\",\"scope\":[\"punctuation.definition.string\"],\"settings\":{\"foreground\":\"#d9f5dd\"}},{\"name\":\"Punctuation Definition String Markdown\",\"scope\":[\"punctuation.definition.string.begin.markdown\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Boolean\",\"scope\":[\"constant.language.boolean\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Object Comma\",\"scope\":[\"object.comma\"],\"settings\":{\"foreground\":\"#ffffff\"}},{\"name\":\"Variable Parameter Function\",\"scope\":[\"variable.parameter.function\"],\"settings\":{\"foreground\":\"#7fdbca\",\"fontStyle\":\"\"}},{\"name\":\"Support Type Property Name & entity name tags\",\"scope\":[\"support.type.vendor.property-name\",\"support.constant.vendor.property-value\",\"support.type.property-name\",\"meta.property-list entity.name.tag\"],\"settings\":{\"foreground\":\"#80cbc4\",\"fontStyle\":\"\"}},{\"name\":\"Entity Name tag reference in stylesheets\",\"scope\":[\"meta.property-list entity.name.tag.reference\"],\"settings\":{\"foreground\":\"#57eaf1\"}},{\"name\":\"Constant Other Color RGB Value Punctuation Definition Constant\",\"scope\":[\"constant.other.color.rgb-value punctuation.definition.constant\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Constant Other Color\",\"scope\":[\"constant.other.color\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Keyword Other Unit\",\"scope\":[\"keyword.other.unit\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Meta Selector\",\"scope\":[\"meta.selector\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Entity Other Attribute Name Id\",\"scope\":[\"entity.other.attribute-name.id\"],\"settings\":{\"foreground\":\"#fad430\"}},{\"name\":\"Meta Property Name\",\"scope\":[\"meta.property-name\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"Doctypes\",\"scope\":[\"entity.name.tag.doctype\",\"meta.tag.sgml.doctype\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Punctuation Definition Parameters\",\"scope\":[\"punctuation.definition.parameters\"],\"settings\":{\"foreground\":\"#d9f5dd\"}},{\"name\":\"Keyword Control Operator\",\"scope\":[\"keyword.control.operator\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Keyword Operator Logical\",\"scope\":[\"keyword.operator.logical\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Variable Instances\",\"scope\":[\"variable.instance\",\"variable.other.instance\",\"variable.readwrite.instance\",\"variable.other.readwrite.instance\",\"variable.other.property\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Variable Property Other object property\",\"scope\":[\"variable.other.object.property\"],\"settings\":{\"foreground\":\"#faf39f\",\"fontStyle\":\"\"}},{\"name\":\"Variable Property Other object\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Entity Name Function\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#82aaff\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Comparison, returns, imports, and Keyword Operator Ruby\",\"scope\":[\"keyword.control.conditional.js\",\"keyword.operator.comparison\",\"keyword.control.flow.js\",\"keyword.control.flow.ts\",\"keyword.control.flow.tsx\",\"keyword.control.ruby\",\"keyword.control.def.ruby\",\"keyword.control.loop.js\",\"keyword.control.loop.ts\",\"keyword.control.import.js\",\"keyword.control.import.ts\",\"keyword.control.import.tsx\",\"keyword.control.from.js\",\"keyword.control.from.ts\",\"keyword.control.from.tsx\",\"keyword.control.conditional.js\",\"keyword.control.conditional.ts\",\"keyword.control.switch.js\",\"keyword.control.switch.ts\",\"keyword.operator.instanceof.js\",\"keyword.operator.expression.instanceof.ts\",\"keyword.operator.expression.instanceof.tsx\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Support Constant, `new` keyword, Special Method Keyword, `debugger`, other keywords\",\"scope\":[\"support.constant\",\"keyword.other.special-method\",\"keyword.other.new\",\"keyword.other.debugger\",\"keyword.control\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Support Function\",\"scope\":[\"support.function\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Invalid Broken\",\"scope\":[\"invalid.broken\"],\"settings\":{\"foreground\":\"#989da0\",\"background\":\"#F78C6C\"}},{\"name\":\"Invalid Unimplemented\",\"scope\":[\"invalid.unimplemented\"],\"settings\":{\"background\":\"#8BD649\",\"foreground\":\"#ffffff\"}},{\"name\":\"Invalid Illegal\",\"scope\":[\"invalid.illegal\"],\"settings\":{\"foreground\":\"#ffffff\",\"background\":\"#ec5f67\"}},{\"name\":\"Language Variable\",\"scope\":[\"variable.language\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Support Variable Property\",\"scope\":[\"support.variable.property\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Variable Function\",\"scope\":[\"variable.function\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Variable Interpolation\",\"scope\":[\"variable.interpolation\"],\"settings\":{\"foreground\":\"#ef787f\"}},{\"name\":\"Meta Function Call\",\"scope\":[\"meta.function-call\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Punctuation Section Embedded\",\"scope\":[\"punctuation.section.embedded\"],\"settings\":{\"foreground\":\"#e2817f\"}},{\"name\":\"Punctuation Tweaks\",\"scope\":[\"punctuation.terminator.expression\",\"punctuation.definition.arguments\",\"punctuation.definition.array\",\"punctuation.section.array\",\"meta.array\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"More Punctuation Tweaks\",\"scope\":[\"punctuation.definition.list.begin\",\"punctuation.definition.list.end\",\"punctuation.separator.arguments\",\"punctuation.definition.list\"],\"settings\":{\"foreground\":\"#d9f5dd\"}},{\"name\":\"Template Strings\",\"scope\":[\"string.template meta.template.expression\"],\"settings\":{\"foreground\":\"#e2817f\"}},{\"name\":\"Backtics(``) in Template Strings\",\"scope\":[\"string.template punctuation.definition.string\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Italics\",\"scope\":[\"italic\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"italic\"}},{\"name\":\"Bold\",\"scope\":[\"bold\"],\"settings\":{\"foreground\":\"#c5e478\",\"fontStyle\":\"bold\"}},{\"name\":\"Quote\",\"scope\":[\"quote\"],\"settings\":{\"foreground\":\"#969bb7\",\"fontStyle\":\"\"}},{\"name\":\"Raw Code\",\"scope\":[\"raw\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"CoffeScript Variable Assignment\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#31e1eb\"}},{\"name\":\"CoffeScript Parameter Function\",\"scope\":[\"variable.parameter.function.coffee\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"CoffeeScript Assignments\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"C# Readwrite Variables\",\"scope\":[\"variable.other.readwrite.cs\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"C# Classes & Storage types\",\"scope\":[\"entity.name.type.class.cs\",\"storage.type.cs\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"C# Namespaces\",\"scope\":[\"entity.name.type.namespace.cs\"],\"settings\":{\"foreground\":\"#b2ccd6\"}},{\"name\":\"C# Unquoted String Zone\",\"scope\":[\"string.unquoted.preprocessor.message.cs\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"C# Region\",\"scope\":[\"punctuation.separator.hash.cs\",\"keyword.preprocessor.region.cs\",\"keyword.preprocessor.endregion.cs\"],\"settings\":{\"foreground\":\"#ffcb8b\",\"fontStyle\":\"bold\"}},{\"name\":\"C# Other Variables\",\"scope\":[\"variable.other.object.cs\"],\"settings\":{\"foreground\":\"#b2ccd6\"}},{\"name\":\"C# Enum\",\"scope\":[\"entity.name.type.enum.cs\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Dart String\",\"scope\":[\"string.interpolated.single.dart\",\"string.interpolated.double.dart\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Dart Class\",\"scope\":[\"support.class.dart\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Tag names in Stylesheets\",\"scope\":[\"entity.name.tag.css\",\"entity.name.tag.less\",\"entity.name.tag.custom.css\",\"support.constant.property-value.css\"],\"settings\":{\"foreground\":\"#ff6d6d\",\"fontStyle\":\"\"}},{\"name\":\"Wildcard(*) selector in Stylesheets\",\"scope\":[\"entity.name.tag.wildcard.css\",\"entity.name.tag.wildcard.less\",\"entity.name.tag.wildcard.scss\",\"entity.name.tag.wildcard.sass\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"CSS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Attribute Name for CSS\",\"scope\":[\"meta.attribute-selector.css entity.other.attribute-name.attribute\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Elixir Classes\",\"scope\":[\"source.elixir support.type.elixir\",\"source.elixir meta.module.elixir entity.name.class.elixir\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Elixir Functions\",\"scope\":[\"source.elixir entity.name.function\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Elixir Constants\",\"scope\":[\"source.elixir constant.other.symbol.elixir\",\"source.elixir constant.other.keywords.elixir\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Elixir String Punctuations\",\"scope\":[\"source.elixir punctuation.definition.string\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Elixir\",\"scope\":[\"source.elixir variable.other.readwrite.module.elixir\",\"source.elixir variable.other.readwrite.module.elixir punctuation.definition.variable.elixir\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Elixir Binary Punctuations\",\"scope\":[\"source.elixir .punctuation.binary.elixir\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"Closure Constant Keyword\",\"scope\":[\"constant.keyword.clojure\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Go Function Calls\",\"scope\":[\"source.go meta.function-call.go\"],\"settings\":{\"foreground\":\"#dddddd\"}},{\"name\":\"Go Keywords\",\"scope\":[\"source.go keyword.package.go\",\"source.go keyword.import.go\",\"source.go keyword.function.go\",\"source.go keyword.type.go\",\"source.go keyword.struct.go\",\"source.go keyword.interface.go\",\"source.go keyword.const.go\",\"source.go keyword.var.go\",\"source.go keyword.map.go\",\"source.go keyword.channel.go\",\"source.go keyword.control.go\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"Go Constants e.g. nil, string format (%s, %d, etc.)\",\"scope\":[\"source.go constant.language.go\",\"source.go constant.other.placeholder.go\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"C++ Functions\",\"scope\":[\"entity.name.function.preprocessor.cpp\",\"entity.scope.name.cpp\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"C++ Meta Namespace\",\"scope\":[\"meta.namespace-block.cpp\"],\"settings\":{\"foreground\":\"#e0dec6\"}},{\"name\":\"C++ Language Primitive Storage\",\"scope\":[\"storage.type.language.primitive.cpp\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"C++ Preprocessor Macro\",\"scope\":[\"meta.preprocessor.macro.cpp\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"C++ Variable Parameter\",\"scope\":[\"variable.parameter\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Powershell Variables\",\"scope\":[\"variable.other.readwrite.powershell\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Powershell Function\",\"scope\":[\"support.function.powershell\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"ID Attribute Name in HTML\",\"scope\":[\"entity.other.attribute-name.id.html\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"HTML Punctuation Definition Tag\",\"scope\":[\"punctuation.definition.tag.html\"],\"settings\":{\"foreground\":\"#6ae9f0\"}},{\"name\":\"HTML Doctype\",\"scope\":[\"meta.tag.sgml.doctype.html\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"\"}},{\"name\":\"JavaScript Classes\",\"scope\":[\"meta.class entity.name.type.class.js\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"JavaScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.js\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"JavaScript Terminator\",\"scope\":[\"terminator.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Meta Punctuation Definition\",\"scope\":[\"meta.js punctuation.definition.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Entity Names in Code Documentations\",\"scope\":[\"entity.name.type.instance.jsdoc\",\"entity.name.type.instance.phpdoc\"],\"settings\":{\"foreground\":\"#889fb2\"}},{\"name\":\"Other Variables in Code Documentations\",\"scope\":[\"variable.other.jsdoc\",\"variable.other.phpdoc\"],\"settings\":{\"foreground\":\"#78ccf0\"}},{\"name\":\"JavaScript module imports and exports\",\"scope\":[\"variable.other.meta.import.js\",\"meta.import.js variable.other\",\"variable.other.meta.export.js\",\"meta.export.js variable.other\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Variable Parameter Function\",\"scope\":[\"variable.parameter.function.js\"],\"settings\":{\"foreground\":\"#8b96ea\"}},{\"name\":\"JavaScript[React] Variable Other Object\",\"scope\":[\"variable.other.object.js\",\"variable.other.object.jsx\",\"variable.object.property.js\",\"variable.object.property.jsx\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Variables\",\"scope\":[\"variable.js\",\"variable.other.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JavaScript Entity Name Type\",\"scope\":[\"entity.name.type.js\",\"entity.name.type.module.js\"],\"settings\":{\"foreground\":\"#ffcb8b\",\"fontStyle\":\"\"}},{\"name\":\"JavaScript Support Classes\",\"scope\":[\"support.class.js\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"JSON Property Names\",\"scope\":[\"support.type.property-name.json\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"JSON Support Constants\",\"scope\":[\"support.constant.json\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"JSON Property values (string)\",\"scope\":[\"meta.structure.dictionary.value.json string.quoted.double\"],\"settings\":{\"foreground\":\"#c789d6\"}},{\"name\":\"Strings in JSON values\",\"scope\":[\"string.quoted.double.json punctuation.definition.string.json\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"Specific JSON Property values like null\",\"scope\":[\"meta.structure.dictionary.json meta.structure.dictionary.value constant.language\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"JavaScript Other Variable\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Ruby Variables\",\"scope\":[\"variable.other.ruby\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Ruby Class\",\"scope\":[\"entity.name.type.class.ruby\"],\"settings\":{\"foreground\":\"#ecc48d\"}},{\"name\":\"Ruby Hashkeys\",\"scope\":[\"constant.language.symbol.hashkey.ruby\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"LESS Tag names\",\"scope\":[\"entity.name.tag.less\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"LESS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"Attribute Name for LESS\",\"scope\":[\"meta.attribute-selector.less entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Markdown Headings\",\"scope\":[\"markup.heading.markdown\",\"markup.heading.setext.1.markdown\",\"markup.heading.setext.2.markdown\"],\"settings\":{\"foreground\":\"#82b1ff\"}},{\"name\":\"Markdown Italics\",\"scope\":[\"markup.italic.markdown\"],\"settings\":{\"foreground\":\"#c792ea\",\"fontStyle\":\"italic\"}},{\"name\":\"Markdown Bold\",\"scope\":[\"markup.bold.markdown\"],\"settings\":{\"foreground\":\"#c5e478\",\"fontStyle\":\"bold\"}},{\"name\":\"Markdown Quote + others\",\"scope\":[\"markup.quote.markdown\"],\"settings\":{\"foreground\":\"#969bb7\",\"fontStyle\":\"\"}},{\"name\":\"Markdown Raw Code + others\",\"scope\":[\"markup.inline.raw.markdown\"],\"settings\":{\"foreground\":\"#80cbc4\"}},{\"name\":\"Markdown Links\",\"scope\":[\"markup.underline.link.markdown\",\"markup.underline.link.image.markdown\"],\"settings\":{\"foreground\":\"#ff869a\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Link Title and Description\",\"scope\":[\"string.other.link.title.markdown\",\"string.other.link.description.markdown\"],\"settings\":{\"foreground\":\"#d6deeb\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Punctuation\",\"scope\":[\"punctuation.definition.string.markdown\",\"punctuation.definition.string.begin.markdown\",\"punctuation.definition.string.end.markdown\",\"meta.link.inline.markdown punctuation.definition.string\"],\"settings\":{\"foreground\":\"#82b1ff\"}},{\"name\":\"Markdown MetaData Punctuation\",\"scope\":[\"punctuation.definition.metadata.markdown\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"Markdown List Punctuation\",\"scope\":[\"beginning.punctuation.definition.list.markdown\"],\"settings\":{\"foreground\":\"#82b1ff\"}},{\"name\":\"Markdown Inline Raw String\",\"scope\":[\"markup.inline.raw.string.markdown\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"PHP Variables\",\"scope\":[\"variable.other.php\"],\"settings\":{\"foreground\":\"#bec5d4\"}},{\"name\":\"Support Classes in PHP\",\"scope\":[\"support.class.php\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"Punctuations in PHP function calls\",\"scope\":[\"meta.function-call.php punctuation\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"PHP Global Variables\",\"scope\":[\"variable.other.global.php\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Declaration Punctuation in PHP Global Variables\",\"scope\":[\"variable.other.global.php punctuation.definition.variable\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Language Constants in Python\",\"scope\":[\"constant.language.python\"],\"settings\":{\"foreground\":\"#ff6a83\"}},{\"name\":\"Python Function Parameter and Arguments\",\"scope\":[\"variable.parameter.function.python\",\"meta.function-call.arguments.python\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Python Function Call\",\"scope\":[\"meta.function-call.python\",\"meta.function-call.generic.python\"],\"settings\":{\"foreground\":\"#b2ccd6\"}},{\"name\":\"Punctuations in Python\",\"scope\":[\"punctuation.python\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"Decorator Functions in Python\",\"scope\":[\"entity.name.function.decorator.python\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Python Language Variable\",\"scope\":[\"source.python variable.language.special\"],\"settings\":{\"foreground\":\"#8eace3\"}},{\"name\":\"Python import control keyword\",\"scope\":[\"keyword.control\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"SCSS Variable\",\"scope\":[\"variable.scss\",\"variable.sass\",\"variable.parameter.url.scss\",\"variable.parameter.url.sass\"],\"settings\":{\"foreground\":\"#c5e478\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#bec5d4\"}},{\"name\":\"Attribute Name for SASS\",\"scope\":[\"meta.attribute-selector.scss entity.other.attribute-name.attribute\",\"meta.attribute-selector.sass entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#f78c6c\"}},{\"name\":\"Tag names in SASS\",\"scope\":[\"entity.name.tag.scss\",\"entity.name.tag.sass\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"SASS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.scss\",\"keyword.other.unit.sass\"],\"settings\":{\"foreground\":\"#ffeb95\"}},{\"name\":\"TypeScript[React] Variables and Object Properties\",\"scope\":[\"variable.other.readwrite.alias.ts\",\"variable.other.readwrite.alias.tsx\",\"variable.other.readwrite.ts\",\"variable.other.readwrite.tsx\",\"variable.other.object.ts\",\"variable.other.object.tsx\",\"variable.object.property.ts\",\"variable.object.property.tsx\",\"variable.other.ts\",\"variable.other.tsx\",\"variable.tsx\",\"variable.ts\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"TypeScript[React] Entity Name Types\",\"scope\":[\"entity.name.type.ts\",\"entity.name.type.tsx\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"TypeScript[React] Node Classes\",\"scope\":[\"support.class.node.ts\",\"support.class.node.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"TypeScript[React] Entity Name Types as Parameters\",\"scope\":[\"meta.type.parameters.ts entity.name.type\",\"meta.type.parameters.tsx entity.name.type\"],\"settings\":{\"foreground\":\"#889fb2\"}},{\"name\":\"TypeScript[React] Import/Export Punctuations\",\"scope\":[\"meta.import.ts punctuation.definition.block\",\"meta.import.tsx punctuation.definition.block\",\"meta.export.ts punctuation.definition.block\",\"meta.export.tsx punctuation.definition.block\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.decorator punctuation.decorator.ts\",\"meta.decorator punctuation.decorator.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.tag.js meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"YAML Entity Name Tags\",\"scope\":[\"entity.name.tag.yaml\"],\"settings\":{\"foreground\":\"#7fdbca\"}},{\"name\":\"JavaScript Variable Other ReadWrite\",\"scope\":[\"variable.other.readwrite.js\",\"variable.parameter\"],\"settings\":{\"foreground\":\"#d7dbe0\"}},{\"name\":\"Support Class Component\",\"scope\":[\"support.class.component.js\",\"support.class.component.tsx\"],\"settings\":{\"foreground\":\"#f78c6c\",\"fontStyle\":\"\"}},{\"name\":\"Text nested in React tags\",\"scope\":[\"meta.jsx.children\",\"meta.jsx.children.js\",\"meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#d6deeb\"}},{\"name\":\"TypeScript Classes\",\"scope\":[\"meta.class entity.name.type.class.tsx\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"TypeScript Entity Name Type\",\"scope\":[\"entity.name.type.tsx\",\"entity.name.type.module.tsx\"],\"settings\":{\"foreground\":\"#ffcb8b\"}},{\"name\":\"TypeScript Class Variable Keyword\",\"scope\":[\"meta.class.ts meta.var.expr.ts storage.type.ts\",\"meta.class.tsx meta.var.expr.tsx storage.type.tsx\"],\"settings\":{\"foreground\":\"#c792ea\"}},{\"name\":\"TypeScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.ts\",\"meta.method.declaration storage.type.tsx\"],\"settings\":{\"foreground\":\"#82aaff\"}},{\"name\":\"normalize font style of certain components\",\"scope\":[\"meta.property-list.css meta.property-value.css variable.other.less\",\"meta.property-list.scss variable.scss\",\"meta.property-list.sass variable.sass\",\"meta.brace\",\"keyword.operator.operator\",\"keyword.operator.or.regexp\",\"keyword.operator.expression.in\",\"keyword.operator.relational\",\"keyword.operator.assignment\",\"keyword.operator.comparison\",\"keyword.operator.type\",\"keyword.operator\",\"keyword\",\"punctuation.definintion.string\",\"punctuation\",\"variable.other.readwrite.js\",\"storage.type\",\"source.css\",\"string.quoted\"],\"settings\":{\"fontStyle\":\"\"}}],\"styleOverrides\":{\"frames\":{\"editorBackground\":\"var(--sl-color-gray-6)\",\"terminalBackground\":\"var(--sl-color-gray-6)\",\"editorActiveTabBackground\":\"var(--sl-color-gray-6)\",\"terminalTitlebarDotsForeground\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"terminalTitlebarDotsOpacity\":\"0.75\",\"inlineButtonForeground\":\"var(--sl-color-text)\",\"frameBoxShadowCssValue\":\"none\"},\"textMarkers\":{\"markBackground\":\"#ffffff17\",\"markBorderColor\":\"#ffffff40\"}}},{\"name\":\"Night Owl Light\",\"type\":\"light\",\"colors\":{\"focusBorder\":\"#93a1a1\",\"foreground\":\"#403f53\",\"disabledForeground\":\"#61616180\",\"descriptionForeground\":\"#403f53\",\"errorForeground\":\"#403f53\",\"icon.foreground\":\"#424242\",\"contrastActiveBorder\":null,\"contrastBorder\":null,\"textBlockQuote.background\":\"#7f7f7f1a\",\"textBlockQuote.border\":\"#007acc80\",\"textCodeBlock.background\":\"#dcdcdc66\",\"textLink.activeForeground\":\"#006ab1\",\"textLink.foreground\":\"#006ab1\",\"textPreformat.foreground\":\"#a31515\",\"textSeparator.foreground\":\"#0000002e\",\"editor.background\":\"#f6f7f9\",\"editor.foreground\":\"#403f53\",\"editorLineNumber.foreground\":\"#90a7b2\",\"editorLineNumber.activeForeground\":\"#403f53\",\"editorActiveLineNumber.foreground\":\"#0b216f\",\"editor.selectionBackground\":\"#e0e0e0\",\"editor.inactiveSelectionBackground\":\"#e0e0e080\",\"editor.selectionHighlightBackground\":\"#339cec33\",\"editorError.foreground\":\"#e64d49\",\"editorWarning.foreground\":\"#daaa01\",\"editorInfo.foreground\":\"#1a85ff\",\"editorHint.foreground\":\"#6c6c6c\",\"problemsErrorIcon.foreground\":\"#e64d49\",\"problemsWarningIcon.foreground\":\"#daaa01\",\"problemsInfoIcon.foreground\":\"#1a85ff\",\"editor.findMatchBackground\":\"#93a1a16c\",\"editor.findMatchHighlightBackground\":\"#93a1a16c\",\"editor.findRangeHighlightBackground\":\"#7497a633\",\"editorLink.activeForeground\":\"#0000ff\",\"editorLightBulb.foreground\":\"#ddb100\",\"editorLightBulbAutoFix.foreground\":\"#007acc\",\"diffEditor.insertedTextBackground\":\"#9ccc2c40\",\"diffEditor.insertedTextBorder\":null,\"diffEditor.removedTextBackground\":\"#ff000033\",\"diffEditor.removedTextBorder\":null,\"diffEditor.insertedLineBackground\":\"#9bb95533\",\"diffEditor.removedLineBackground\":\"#ff000033\",\"editorStickyScroll.background\":\"#fbfbfb\",\"editorStickyScrollHover.background\":\"#f0f0f0\",\"editorInlayHint.background\":\"#2aa29899\",\"editorInlayHint.foreground\":\"#f0f0f0\",\"editorInlayHint.typeBackground\":\"#2aa29899\",\"editorInlayHint.typeForeground\":\"#f0f0f0\",\"editorInlayHint.parameterBackground\":\"#2aa29899\",\"editorInlayHint.parameterForeground\":\"#f0f0f0\",\"editorPane.background\":\"#fbfbfb\",\"editorGroup.emptyBackground\":null,\"editorGroup.focusedEmptyBorder\":null,\"editorGroupHeader.tabsBackground\":\"var(--sl-color-gray-6)\",\"editorGroupHeader.tabsBorder\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"editorGroupHeader.noTabsBackground\":\"#f0f0f0\",\"editorGroupHeader.border\":null,\"editorGroup.border\":\"#f0f0f0\",\"editorGroup.dropBackground\":\"#2677cb2d\",\"editorGroup.dropIntoPromptForeground\":\"#403f53\",\"editorGroup.dropIntoPromptBackground\":\"#f0f0f0\",\"editorGroup.dropIntoPromptBorder\":null,\"sideBySideEditor.horizontalBorder\":\"#f0f0f0\",\"sideBySideEditor.verticalBorder\":\"#f0f0f0\",\"scrollbar.shadow\":\"#cccccc\",\"scrollbarSlider.background\":\"#0000001a\",\"scrollbarSlider.hoverBackground\":\"#00000055\",\"scrollbarSlider.activeBackground\":\"#00000099\",\"panel.background\":\"#f0f0f0\",\"panel.border\":\"#d9d9d9\",\"panelTitle.activeBorder\":\"#424242\",\"panelTitle.activeForeground\":\"#424242\",\"panelTitle.inactiveForeground\":\"#424242bf\",\"panelSectionHeader.background\":\"#80808051\",\"terminal.background\":\"#f6f6f6\",\"widget.shadow\":\"#d9d9d9\",\"editorWidget.background\":\"#f0f0f0\",\"editorWidget.foreground\":\"#403f53\",\"editorWidget.border\":\"#d9d9d9\",\"quickInput.background\":\"#f0f0f0\",\"quickInput.foreground\":\"#403f53\",\"quickInputTitle.background\":\"#0000000f\",\"pickerGroup.foreground\":\"#403f53\",\"pickerGroup.border\":\"#d9d9d9\",\"editor.hoverHighlightBackground\":\"#339cec33\",\"editorHoverWidget.background\":\"#f0f0f0\",\"editorHoverWidget.foreground\":\"#403f53\",\"editorHoverWidget.border\":\"#d9d9d9\",\"editorHoverWidget.statusBarBackground\":\"#e4e4e4\",\"titleBar.activeBackground\":\"var(--sl-color-gray-6)\",\"titleBar.activeForeground\":\"var(--sl-color-text)\",\"titleBar.inactiveBackground\":\"#f0f0f099\",\"titleBar.inactiveForeground\":\"#33333399\",\"titleBar.border\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"toolbar.hoverBackground\":\"#b8b8b850\",\"toolbar.activeBackground\":\"#a6a6a650\",\"tab.activeBackground\":\"#f6f6f6\",\"tab.unfocusedActiveBackground\":\"#f6f6f6\",\"tab.inactiveBackground\":\"#f0f0f0\",\"tab.unfocusedInactiveBackground\":\"#f0f0f0\",\"tab.activeForeground\":\"var(--sl-color-text)\",\"tab.inactiveForeground\":\"#403f53\",\"tab.unfocusedActiveForeground\":\"#403f53b3\",\"tab.unfocusedInactiveForeground\":\"#403f5380\",\"tab.hoverBackground\":null,\"tab.unfocusedHoverBackground\":null,\"tab.hoverForeground\":null,\"tab.unfocusedHoverForeground\":null,\"tab.border\":\"#f0f0f0\",\"tab.lastPinnedBorder\":\"#a9a9a9\",\"tab.activeBorder\":\"transparent\",\"tab.unfocusedActiveBorder\":null,\"tab.activeBorderTop\":\"var(--sl-color-accent)\",\"tab.unfocusedActiveBorderTop\":null,\"tab.hoverBorder\":null,\"tab.unfocusedHoverBorder\":null,\"tab.activeModifiedBorder\":\"#2aa298\",\"tab.inactiveModifiedBorder\":\"#93a1a1\",\"tab.unfocusedActiveModifiedBorder\":\"#93a1a1\",\"tab.unfocusedInactiveModifiedBorder\":\"#93a1a1\",\"badge.background\":\"#2aa298\",\"badge.foreground\":\"#f0f0f0\",\"button.background\":\"#2aa298\",\"button.foreground\":\"#f0f0f0\",\"button.border\":null,\"button.separator\":\"#f0f0f066\",\"button.hoverBackground\":\"#22827a\",\"button.secondaryBackground\":\"#5f6a79\",\"button.secondaryForeground\":\"#ffffff\",\"button.secondaryHoverBackground\":\"#4c5561\",\"dropdown.background\":\"#f0f0f0\",\"dropdown.foreground\":\"#403f53\",\"dropdown.border\":\"#d9d9d9\",\"list.activeSelectionBackground\":\"#d3e8f8\",\"list.activeSelectionForeground\":\"#403f53\",\"tree.indentGuidesStroke\":\"#a9a9a9\",\"input.background\":\"#f0f0f0\",\"input.foreground\":\"#403f53\",\"input.placeholderForeground\":\"#93a1a1\",\"inputOption.activeBorder\":\"#2aa298\",\"inputOption.hoverBackground\":\"#b8b8b850\",\"inputOption.activeBackground\":\"#93a1a133\",\"inputOption.activeForeground\":\"#000000\",\"inputValidation.infoBackground\":\"#f0f0f0\",\"inputValidation.infoBorder\":\"#d0d0d0\",\"inputValidation.warningBackground\":\"#daaa01\",\"inputValidation.warningBorder\":\"#e0af02\",\"inputValidation.errorBackground\":\"#f76e6e\",\"inputValidation.errorBorder\":\"#de3d3b\",\"keybindingLabel.background\":\"#dddddd66\",\"keybindingLabel.foreground\":\"#555555\",\"keybindingLabel.border\":\"#cccccc66\",\"keybindingLabel.bottomBorder\":\"#bbbbbb66\",\"menu.foreground\":\"#403f53\",\"menu.background\":\"#f0f0f0\",\"menu.selectionForeground\":\"#403f53\",\"menu.selectionBackground\":\"#d3e8f8\",\"menu.separatorBackground\":\"#d4d4d4\",\"editor.snippetTabstopHighlightBackground\":\"#0a326433\",\"editor.snippetFinalTabstopHighlightBorder\":\"#0a326480\",\"terminal.ansiBlack\":\"#403f53\",\"terminal.ansiRed\":\"#de3d3b\",\"terminal.ansiGreen\":\"#08916a\",\"terminal.ansiYellow\":\"#e0af02\",\"terminal.ansiBlue\":\"#288ed7\",\"terminal.ansiMagenta\":\"#d6438a\",\"terminal.ansiCyan\":\"#2aa298\",\"terminal.ansiWhite\":\"#f0f0f0\",\"terminal.ansiBrightBlack\":\"#403f53\",\"terminal.ansiBrightRed\":\"#de3d3b\",\"terminal.ansiBrightGreen\":\"#08916a\",\"terminal.ansiBrightYellow\":\"#daaa01\",\"terminal.ansiBrightBlue\":\"#288ed7\",\"terminal.ansiBrightMagenta\":\"#d6438a\",\"terminal.ansiBrightCyan\":\"#2aa298\",\"terminal.ansiBrightWhite\":\"#f0f0f0\",\"selection.background\":\"#7a8181ad\",\"notifications.background\":\"#f0f0f0\",\"notifications.foreground\":\"#403f53\",\"notificationLink.foreground\":\"#994cc3\",\"notifications.border\":\"#cccccc\",\"notificationCenter.border\":\"#cccccc\",\"notificationToast.border\":\"#cccccc\",\"notificationCenterHeader.foreground\":\"#403f53\",\"notificationCenterHeader.background\":\"#f0f0f0\",\"input.border\":\"#d9d9d9\",\"progressBar.background\":\"#2aa298\",\"list.inactiveSelectionBackground\":\"#e0e7ea\",\"list.inactiveSelectionForeground\":\"#403f53\",\"list.focusBackground\":\"#d3e8f8\",\"list.hoverBackground\":\"#d3e8f8\",\"list.focusForeground\":\"#403f53\",\"list.hoverForeground\":\"#403f53\",\"list.highlightForeground\":\"#403f53\",\"list.errorForeground\":\"#e64d49\",\"list.warningForeground\":\"#daaa01\",\"activityBar.background\":\"#f0f0f0\",\"activityBar.foreground\":\"#403f53\",\"activityBar.dropBackground\":\"#d0d0d0\",\"activityBarBadge.background\":\"#403f53\",\"activityBarBadge.foreground\":\"#f0f0f0\",\"activityBar.border\":\"#f0f0f0\",\"sideBar.background\":\"#f0f0f0\",\"sideBar.foreground\":\"#403f53\",\"sideBarTitle.foreground\":\"#403f53\",\"sideBar.border\":\"#f0f0f0\",\"editorGroup.background\":\"#f6f6f6\",\"editorCursor.foreground\":\"#90a7b2\",\"editor.wordHighlightBackground\":\"#339cec33\",\"editor.wordHighlightStrongBackground\":\"#007dd659\",\"editor.lineHighlightBackground\":\"#f0f0f0\",\"editor.rangeHighlightBackground\":\"#7497a633\",\"editorWhitespace.foreground\":\"#d9d9d9\",\"editorIndentGuide.background\":\"#d9d9d9\",\"editorCodeLens.foreground\":\"#403f53\",\"editorBracketMatch.background\":\"#d3e8f8\",\"editorBracketMatch.border\":\"#2aa298\",\"editorError.border\":\"#fbfbfb\",\"editorWarning.border\":\"#daaa01\",\"editorGutter.addedBackground\":\"#49d0c5\",\"editorGutter.modifiedBackground\":\"#6fbef6\",\"editorGutter.deletedBackground\":\"#f76e6e\",\"editorRuler.foreground\":\"#d9d9d9\",\"editorOverviewRuler.errorForeground\":\"#e64d49\",\"editorOverviewRuler.warningForeground\":\"#daaa01\",\"editorSuggestWidget.background\":\"#f0f0f0\",\"editorSuggestWidget.foreground\":\"#403f53\",\"editorSuggestWidget.highlightForeground\":\"#403f53\",\"editorSuggestWidget.selectedBackground\":\"#d3e8f8\",\"editorSuggestWidget.border\":\"#d9d9d9\",\"debugExceptionWidget.background\":\"#f0f0f0\",\"debugExceptionWidget.border\":\"#d9d9d9\",\"editorMarkerNavigation.background\":\"#d0d0d0\",\"editorMarkerNavigationError.background\":\"#f76e6e\",\"editorMarkerNavigationWarning.background\":\"#daaa01\",\"debugToolBar.background\":\"#f0f0f0\",\"extensionButton.prominentBackground\":\"#2aa298\",\"extensionButton.prominentForeground\":\"#f0f0f0\",\"statusBar.background\":\"#f0f0f0\",\"statusBar.border\":\"#f0f0f0\",\"statusBar.debuggingBackground\":\"#f0f0f0\",\"statusBar.debuggingForeground\":\"#403f53\",\"statusBar.foreground\":\"#403f53\",\"statusBar.noFolderBackground\":\"#f0f0f0\",\"statusBar.noFolderForeground\":\"#403f53\",\"peekView.border\":\"#d9d9d9\",\"peekViewEditor.background\":\"#f6f6f6\",\"peekViewEditorGutter.background\":\"#f6f6f6\",\"peekViewEditor.matchHighlightBackground\":\"#49d0c5\",\"peekViewResult.background\":\"#f0f0f0\",\"peekViewResult.fileForeground\":\"#403f53\",\"peekViewResult.lineForeground\":\"#403f53\",\"peekViewResult.matchHighlightBackground\":\"#49d0c5\",\"peekViewResult.selectionBackground\":\"#e0e7ea\",\"peekViewResult.selectionForeground\":\"#403f53\",\"peekViewTitle.background\":\"#f0f0f0\",\"peekViewTitleLabel.foreground\":\"#403f53\",\"peekViewTitleDescription.foreground\":\"#403f53\",\"terminal.foreground\":\"#403f53\"},\"fg\":\"#403f53\",\"bg\":\"#f6f7f9\",\"semanticHighlighting\":false,\"settings\":[{\"name\":\"Changed\",\"scope\":[\"markup.changed\",\"meta.diff.header.git\",\"meta.diff.header.from-file\",\"meta.diff.header.to-file\"],\"settings\":{\"foreground\":\"#556484\"}},{\"name\":\"Deleted\",\"scope\":[\"markup.deleted.diff\"],\"settings\":{\"foreground\":\"#ae3c3afd\"}},{\"name\":\"Inserted\",\"scope\":[\"markup.inserted.diff\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Global settings\",\"settings\":{\"background\":\"#011627\",\"foreground\":\"#403f53\"}},{\"name\":\"Comment\",\"scope\":[\"comment\"],\"settings\":{\"foreground\":\"#5f636f\"}},{\"name\":\"String\",\"scope\":[\"string\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"String Quoted\",\"scope\":[\"string.quoted\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#984e4d\"}},{\"name\":\"Support Constant Math\",\"scope\":[\"support.constant.math\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Number\",\"scope\":[\"constant.numeric\",\"constant.character.numeric\"],\"settings\":{\"foreground\":\"#aa0982\",\"fontStyle\":\"\"}},{\"name\":\"Built-in constant\",\"scope\":[\"constant.language\",\"punctuation.definition.constant\",\"variable.other.constant\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"User-defined constant\",\"scope\":[\"constant.character\",\"constant.other\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Constant Character Escape\",\"scope\":[\"constant.character.escape\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"RegExp String\",\"scope\":[\"string.regexp\",\"string.regexp keyword.other\"],\"settings\":{\"foreground\":\"#3a688f\"}},{\"name\":\"Comma in functions\",\"scope\":[\"meta.function punctuation.separator.comma\"],\"settings\":{\"foreground\":\"#4d667b\"}},{\"name\":\"Variable\",\"scope\":[\"variable\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Keyword\",\"scope\":[\"punctuation.accessor\",\"keyword\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Storage\",\"scope\":[\"storage\",\"meta.var.expr\",\"meta.class meta.method.declaration meta.var.expr storage.type.js\",\"storage.type.property.js\",\"storage.type.property.ts\",\"storage.type.property.tsx\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Storage type\",\"scope\":[\"storage.type.function.arrow.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Class name\",\"scope\":[\"entity.name.class\",\"meta.class entity.name.type.class\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Inherited class\",\"scope\":[\"entity.other.inherited-class\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Function name\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Meta Tag\",\"scope\":[\"punctuation.definition.tag\",\"meta.tag\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"HTML Tag names\",\"scope\":[\"entity.name.tag\",\"meta.tag.other.html\",\"meta.tag.other.js\",\"meta.tag.other.tsx\",\"entity.name.tag.tsx\",\"entity.name.tag.js\",\"entity.name.tag\",\"meta.tag.js\",\"meta.tag.tsx\",\"meta.tag.html\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Tag attribute\",\"scope\":[\"entity.other.attribute-name\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Entity Name Tag Custom\",\"scope\":[\"entity.name.tag.custom\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Library (function & constant)\",\"scope\":[\"support.function\",\"support.constant\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Support Constant Property Value meta\",\"scope\":[\"support.constant.meta.property-value\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Library class/type\",\"scope\":[\"support.type\",\"support.class\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Support Variable DOM\",\"scope\":[\"support.variable.dom\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Invalid\",\"scope\":[\"invalid\"],\"settings\":{\"foreground\":\"#bb2060\"}},{\"name\":\"Invalid deprecated\",\"scope\":[\"invalid.deprecated\"],\"settings\":{\"foreground\":\"#b23834\"}},{\"name\":\"Keyword Operator\",\"scope\":[\"keyword.operator\"],\"settings\":{\"foreground\":\"#096e72\",\"fontStyle\":\"\"}},{\"name\":\"Keyword Operator Relational\",\"scope\":[\"keyword.operator.relational\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Assignment\",\"scope\":[\"keyword.operator.assignment\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Arithmetic\",\"scope\":[\"keyword.operator.arithmetic\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Bitwise\",\"scope\":[\"keyword.operator.bitwise\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Increment\",\"scope\":[\"keyword.operator.increment\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Operator Ternary\",\"scope\":[\"keyword.operator.ternary\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Double-Slashed Comment\",\"scope\":[\"comment.line.double-slash\"],\"settings\":{\"foreground\":\"#5d6376\"}},{\"name\":\"Object\",\"scope\":[\"object\"],\"settings\":{\"foreground\":\"#58656a\"}},{\"name\":\"Null\",\"scope\":[\"constant.language.null\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Meta Brace\",\"scope\":[\"meta.brace\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Meta Delimiter Period\",\"scope\":[\"meta.delimiter.period\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Punctuation Definition String\",\"scope\":[\"punctuation.definition.string\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Punctuation Definition String Markdown\",\"scope\":[\"punctuation.definition.string.begin.markdown\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Boolean\",\"scope\":[\"constant.language.boolean\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Object Comma\",\"scope\":[\"object.comma\"],\"settings\":{\"foreground\":\"#646464\"}},{\"name\":\"Variable Parameter Function\",\"scope\":[\"variable.parameter.function\"],\"settings\":{\"foreground\":\"#096e72\",\"fontStyle\":\"\"}},{\"name\":\"Support Type Property Name & entity name tags\",\"scope\":[\"support.type.vendor.property-name\",\"support.constant.vendor.property-value\",\"support.type.property-name\",\"meta.property-list entity.name.tag\"],\"settings\":{\"foreground\":\"#096e72\",\"fontStyle\":\"\"}},{\"name\":\"Entity Name tag reference in stylesheets\",\"scope\":[\"meta.property-list entity.name.tag.reference\"],\"settings\":{\"foreground\":\"#286d70\"}},{\"name\":\"Constant Other Color RGB Value Punctuation Definition Constant\",\"scope\":[\"constant.other.color.rgb-value punctuation.definition.constant\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Constant Other Color\",\"scope\":[\"constant.other.color\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Keyword Other Unit\",\"scope\":[\"keyword.other.unit\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Meta Selector\",\"scope\":[\"meta.selector\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Entity Other Attribute Name Id\",\"scope\":[\"entity.other.attribute-name.id\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Meta Property Name\",\"scope\":[\"meta.property-name\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Doctypes\",\"scope\":[\"entity.name.tag.doctype\",\"meta.tag.sgml.doctype\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Punctuation Definition Parameters\",\"scope\":[\"punctuation.definition.parameters\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Keyword Control Operator\",\"scope\":[\"keyword.control.operator\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Keyword Operator Logical\",\"scope\":[\"keyword.operator.logical\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"\"}},{\"name\":\"Variable Instances\",\"scope\":[\"variable.instance\",\"variable.other.instance\",\"variable.readwrite.instance\",\"variable.other.readwrite.instance\",\"variable.other.property\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Variable Property Other object property\",\"scope\":[\"variable.other.object.property\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Variable Property Other object\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"fontStyle\":\"\"}},{\"name\":\"Entity Name Function\",\"scope\":[\"entity.name.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Keyword Operator Comparison, imports, returns and Keyword Operator Ruby\",\"scope\":[\"keyword.operator.comparison\",\"keyword.control.flow.js\",\"keyword.control.flow.ts\",\"keyword.control.flow.tsx\",\"keyword.control.ruby\",\"keyword.control.module.ruby\",\"keyword.control.class.ruby\",\"keyword.control.def.ruby\",\"keyword.control.loop.js\",\"keyword.control.loop.ts\",\"keyword.control.import.js\",\"keyword.control.import.ts\",\"keyword.control.import.tsx\",\"keyword.control.from.js\",\"keyword.control.from.ts\",\"keyword.control.from.tsx\",\"keyword.operator.instanceof.js\",\"keyword.operator.expression.instanceof.ts\",\"keyword.operator.expression.instanceof.tsx\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Keyword Control Conditional\",\"scope\":[\"keyword.control.conditional.js\",\"keyword.control.conditional.ts\",\"keyword.control.switch.js\",\"keyword.control.switch.ts\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"\"}},{\"name\":\"Support Constant, `new` keyword, Special Method Keyword, `debugger`, other keywords\",\"scope\":[\"support.constant\",\"keyword.other.special-method\",\"keyword.other.new\",\"keyword.other.debugger\",\"keyword.control\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Support Function\",\"scope\":[\"support.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Invalid Broken\",\"scope\":[\"invalid.broken\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Invalid Unimplemented\",\"scope\":[\"invalid.unimplemented\"],\"settings\":{\"foreground\":\"#486e26\"}},{\"name\":\"Invalid Illegal\",\"scope\":[\"invalid.illegal\"],\"settings\":{\"foreground\":\"#984e4d\"}},{\"name\":\"Language Variable\",\"scope\":[\"variable.language\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Support Variable Property\",\"scope\":[\"support.variable.property\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Variable Function\",\"scope\":[\"variable.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Variable Interpolation\",\"scope\":[\"variable.interpolation\"],\"settings\":{\"foreground\":\"#a64348\"}},{\"name\":\"Meta Function Call\",\"scope\":[\"meta.function-call\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Punctuation Section Embedded\",\"scope\":[\"punctuation.section.embedded\"],\"settings\":{\"foreground\":\"#b23834\"}},{\"name\":\"Punctuation Tweaks\",\"scope\":[\"punctuation.terminator.expression\",\"punctuation.definition.arguments\",\"punctuation.definition.array\",\"punctuation.section.array\",\"meta.array\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"More Punctuation Tweaks\",\"scope\":[\"punctuation.definition.list.begin\",\"punctuation.definition.list.end\",\"punctuation.separator.arguments\",\"punctuation.definition.list\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Template Strings\",\"scope\":[\"string.template meta.template.expression\"],\"settings\":{\"foreground\":\"#b23834\"}},{\"name\":\"Backtics(``) in Template Strings\",\"scope\":[\"string.template punctuation.definition.string\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Italics\",\"scope\":[\"italic\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"italic\"}},{\"name\":\"Bold\",\"scope\":[\"bold\"],\"settings\":{\"foreground\":\"#3b61b0\",\"fontStyle\":\"bold\"}},{\"name\":\"Quote\",\"scope\":[\"quote\"],\"settings\":{\"foreground\":\"#5c6285\"}},{\"name\":\"Raw Code\",\"scope\":[\"raw\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"CoffeScript Variable Assignment\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#186e73\"}},{\"name\":\"CoffeScript Parameter Function\",\"scope\":[\"variable.parameter.function.coffee\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"CoffeeScript Assignments\",\"scope\":[\"variable.assignment.coffee\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"C# Readwrite Variables\",\"scope\":[\"variable.other.readwrite.cs\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"C# Classes & Storage types\",\"scope\":[\"entity.name.type.class.cs\",\"storage.type.cs\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"C# Namespaces\",\"scope\":[\"entity.name.type.namespace.cs\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Tag names in Stylesheets\",\"scope\":[\"entity.name.tag.css\",\"entity.name.tag.less\",\"entity.name.tag.custom.css\",\"support.constant.property-value.css\"],\"settings\":{\"foreground\":\"#984e4d\",\"fontStyle\":\"\"}},{\"name\":\"Wildcard(*) selector in Stylesheets\",\"scope\":[\"entity.name.tag.wildcard.css\",\"entity.name.tag.wildcard.less\",\"entity.name.tag.wildcard.scss\",\"entity.name.tag.wildcard.sass\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"CSS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Attribute Name for CSS\",\"scope\":[\"meta.attribute-selector.css entity.other.attribute-name.attribute\",\"variable.other.readwrite.js\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Elixir Classes\",\"scope\":[\"source.elixir support.type.elixir\",\"source.elixir meta.module.elixir entity.name.class.elixir\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir Functions\",\"scope\":[\"source.elixir entity.name.function\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir Constants\",\"scope\":[\"source.elixir constant.other.symbol.elixir\",\"source.elixir constant.other.keywords.elixir\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir String Punctuations\",\"scope\":[\"source.elixir punctuation.definition.string\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir\",\"scope\":[\"source.elixir variable.other.readwrite.module.elixir\",\"source.elixir variable.other.readwrite.module.elixir punctuation.definition.variable.elixir\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Elixir Binary Punctuations\",\"scope\":[\"source.elixir .punctuation.binary.elixir\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Closure Constant Keyword\",\"scope\":[\"constant.keyword.clojure\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Go Function Calls\",\"scope\":[\"source.go meta.function-call.go\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Go Keywords\",\"scope\":[\"source.go keyword.package.go\",\"source.go keyword.import.go\",\"source.go keyword.function.go\",\"source.go keyword.type.go\",\"source.go keyword.struct.go\",\"source.go keyword.interface.go\",\"source.go keyword.const.go\",\"source.go keyword.var.go\",\"source.go keyword.map.go\",\"source.go keyword.channel.go\",\"source.go keyword.control.go\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"Go Constants e.g. nil, string format (%s, %d, etc.)\",\"scope\":[\"source.go constant.language.go\",\"source.go constant.other.placeholder.go\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"C++ Functions\",\"scope\":[\"entity.name.function.preprocessor.cpp\",\"entity.scope.name.cpp\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"C++ Meta Namespace\",\"scope\":[\"meta.namespace-block.cpp\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"C++ Language Primitive Storage\",\"scope\":[\"storage.type.language.primitive.cpp\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"C++ Preprocessor Macro\",\"scope\":[\"meta.preprocessor.macro.cpp\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"C++ Variable Parameter\",\"scope\":[\"variable.parameter\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Powershell Variables\",\"scope\":[\"variable.other.readwrite.powershell\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Powershell Function\",\"scope\":[\"support.function.powershell\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"ID Attribute Name in HTML\",\"scope\":[\"entity.other.attribute-name.id.html\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"HTML Punctuation Definition Tag\",\"scope\":[\"punctuation.definition.tag.html\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"HTML Doctype\",\"scope\":[\"meta.tag.sgml.doctype.html\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"JavaScript Classes\",\"scope\":[\"meta.class entity.name.type.class.js\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"JavaScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.js\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"JavaScript Terminator\",\"scope\":[\"terminator.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Meta Punctuation Definition\",\"scope\":[\"meta.js punctuation.definition.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Entity Names in Code Documentations\",\"scope\":[\"entity.name.type.instance.jsdoc\",\"entity.name.type.instance.phpdoc\"],\"settings\":{\"foreground\":\"#4d667b\"}},{\"name\":\"Other Variables in Code Documentations\",\"scope\":[\"variable.other.jsdoc\",\"variable.other.phpdoc\"],\"settings\":{\"foreground\":\"#3e697c\"}},{\"name\":\"JavaScript module imports and exports\",\"scope\":[\"variable.other.meta.import.js\",\"meta.import.js variable.other\",\"variable.other.meta.export.js\",\"meta.export.js variable.other\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Variable Parameter Function\",\"scope\":[\"variable.parameter.function.js\"],\"settings\":{\"foreground\":\"#555ea2\"}},{\"name\":\"JavaScript[React] Variable Other Object\",\"scope\":[\"variable.other.object.js\",\"variable.other.object.jsx\",\"variable.object.property.js\",\"variable.object.property.jsx\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Variables\",\"scope\":[\"variable.js\",\"variable.other.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JavaScript Entity Name Type\",\"scope\":[\"entity.name.type.js\",\"entity.name.type.module.js\"],\"settings\":{\"foreground\":\"#111111\",\"fontStyle\":\"\"}},{\"name\":\"JavaScript Support Classes\",\"scope\":[\"support.class.js\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"JSON Property Names\",\"scope\":[\"support.type.property-name.json\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"JSON Support Constants\",\"scope\":[\"support.constant.json\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"JSON Property values (string)\",\"scope\":[\"meta.structure.dictionary.value.json string.quoted.double\"],\"settings\":{\"foreground\":\"#7c5686\"}},{\"name\":\"Strings in JSON values\",\"scope\":[\"string.quoted.double.json punctuation.definition.string.json\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Specific JSON Property values like null\",\"scope\":[\"meta.structure.dictionary.json meta.structure.dictionary.value constant.language\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"JavaScript Other Variable\",\"scope\":[\"variable.other.object.js\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Ruby Variables\",\"scope\":[\"variable.other.ruby\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Ruby Class\",\"scope\":[\"entity.name.type.class.ruby\"],\"settings\":{\"foreground\":\"#984e4d\"}},{\"name\":\"Ruby Hashkeys\",\"scope\":[\"constant.language.symbol.hashkey.ruby\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Ruby Symbols\",\"scope\":[\"constant.language.symbol.ruby\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"LESS Tag names\",\"scope\":[\"entity.name.tag.less\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"LESS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.css\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Attribute Name for LESS\",\"scope\":[\"meta.attribute-selector.less entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Markdown Headings\",\"scope\":[\"markup.heading.markdown\",\"markup.heading.setext.1.markdown\",\"markup.heading.setext.2.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Markdown Italics\",\"scope\":[\"markup.italic.markdown\"],\"settings\":{\"foreground\":\"#8844ae\",\"fontStyle\":\"italic\"}},{\"name\":\"Markdown Bold\",\"scope\":[\"markup.bold.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\",\"fontStyle\":\"bold\"}},{\"name\":\"Markdown Quote + others\",\"scope\":[\"markup.quote.markdown\"],\"settings\":{\"foreground\":\"#5c6285\"}},{\"name\":\"Markdown Raw Code + others\",\"scope\":[\"markup.inline.raw.markdown\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Markdown Links\",\"scope\":[\"markup.underline.link.markdown\",\"markup.underline.link.image.markdown\"],\"settings\":{\"foreground\":\"#954f5a\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Link Title and Description\",\"scope\":[\"string.other.link.title.markdown\",\"string.other.link.description.markdown\"],\"settings\":{\"foreground\":\"#403f53\",\"fontStyle\":\"underline\"}},{\"name\":\"Markdown Punctuation\",\"scope\":[\"punctuation.definition.string.markdown\",\"punctuation.definition.string.begin.markdown\",\"punctuation.definition.string.end.markdown\",\"meta.link.inline.markdown punctuation.definition.string\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Markdown MetaData Punctuation\",\"scope\":[\"punctuation.definition.metadata.markdown\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Markdown List Punctuation\",\"scope\":[\"beginning.punctuation.definition.list.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Markdown Inline Raw String\",\"scope\":[\"markup.inline.raw.string.markdown\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"PHP Variables\",\"scope\":[\"variable.other.php\",\"variable.other.property.php\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Support Classes in PHP\",\"scope\":[\"support.class.php\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Punctuations in PHP function calls\",\"scope\":[\"meta.function-call.php punctuation\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"PHP Global Variables\",\"scope\":[\"variable.other.global.php\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Declaration Punctuation in PHP Global Variables\",\"scope\":[\"variable.other.global.php punctuation.definition.variable\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Language Constants in Python\",\"scope\":[\"constant.language.python\"],\"settings\":{\"foreground\":\"#a24848\"}},{\"name\":\"Python Function Parameter and Arguments\",\"scope\":[\"variable.parameter.function.python\",\"meta.function-call.arguments.python\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Python Function Call\",\"scope\":[\"meta.function-call.python\",\"meta.function-call.generic.python\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"Punctuations in Python\",\"scope\":[\"punctuation.python\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Decorator Functions in Python\",\"scope\":[\"entity.name.function.decorator.python\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Python Language Variable\",\"scope\":[\"source.python variable.language.special\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Python import control keyword\",\"scope\":[\"keyword.control\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"SCSS Variable\",\"scope\":[\"variable.scss\",\"variable.sass\",\"variable.parameter.url.scss\",\"variable.parameter.url.sass\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"Variables in SASS At-Rules\",\"scope\":[\"source.css.scss meta.at-rule variable\",\"source.css.sass meta.at-rule variable\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"Attribute Name for SASS\",\"scope\":[\"meta.attribute-selector.scss entity.other.attribute-name.attribute\",\"meta.attribute-selector.sass entity.other.attribute-name.attribute\"],\"settings\":{\"foreground\":\"#aa0982\"}},{\"name\":\"Tag names in SASS\",\"scope\":[\"entity.name.tag.scss\",\"entity.name.tag.sass\"],\"settings\":{\"foreground\":\"#096e72\"}},{\"name\":\"SASS Keyword Other Unit\",\"scope\":[\"keyword.other.unit.scss\",\"keyword.other.unit.sass\"],\"settings\":{\"foreground\":\"#8844ae\"}},{\"name\":\"TypeScript[React] Variables and Object Properties\",\"scope\":[\"variable.other.readwrite.alias.ts\",\"variable.other.readwrite.alias.tsx\",\"variable.other.readwrite.ts\",\"variable.other.readwrite.tsx\",\"variable.other.object.ts\",\"variable.other.object.tsx\",\"variable.object.property.ts\",\"variable.object.property.tsx\",\"variable.other.ts\",\"variable.other.tsx\",\"variable.tsx\",\"variable.ts\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"TypeScript[React] Entity Name Types\",\"scope\":[\"entity.name.type.ts\",\"entity.name.type.tsx\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"TypeScript[React] Node Classes\",\"scope\":[\"support.class.node.ts\",\"support.class.node.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"TypeScript[React] Entity Name Types as Parameters\",\"scope\":[\"meta.type.parameters.ts entity.name.type\",\"meta.type.parameters.tsx entity.name.type\"],\"settings\":{\"foreground\":\"#4d667b\"}},{\"name\":\"TypeScript[React] Import/Export Punctuations\",\"scope\":[\"meta.import.ts punctuation.definition.block\",\"meta.import.tsx punctuation.definition.block\",\"meta.export.ts punctuation.definition.block\",\"meta.export.tsx punctuation.definition.block\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.decorator punctuation.decorator.ts\",\"meta.decorator punctuation.decorator.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"TypeScript[React] Punctuation Decorators\",\"scope\":[\"meta.tag.js meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"YAML Entity Name Tags\",\"scope\":[\"entity.name.tag.yaml\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"JavaScript Variable Other ReadWrite\",\"scope\":[\"variable.other.readwrite.js\",\"variable.parameter\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"Support Class Component\",\"scope\":[\"support.class.component.js\",\"support.class.component.tsx\"],\"settings\":{\"foreground\":\"#aa0982\",\"fontStyle\":\"\"}},{\"name\":\"Text nested in React tags\",\"scope\":[\"meta.jsx.children\",\"meta.jsx.children.js\",\"meta.jsx.children.tsx\"],\"settings\":{\"foreground\":\"#403f53\"}},{\"name\":\"TypeScript Classes\",\"scope\":[\"meta.class entity.name.type.class.tsx\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"TypeScript Entity Name Type\",\"scope\":[\"entity.name.type.tsx\",\"entity.name.type.module.tsx\"],\"settings\":{\"foreground\":\"#111111\"}},{\"name\":\"TypeScript Class Variable Keyword\",\"scope\":[\"meta.class.ts meta.var.expr.ts storage.type.ts\",\"meta.class.tsx meta.var.expr.tsx storage.type.tsx\"],\"settings\":{\"foreground\":\"#76578b\"}},{\"name\":\"TypeScript Method Declaration e.g. `constructor`\",\"scope\":[\"meta.method.declaration storage.type.ts\",\"meta.method.declaration storage.type.tsx\"],\"settings\":{\"foreground\":\"#3b61b0\"}},{\"name\":\"normalize font style of certain components\",\"scope\":[\"meta.property-list.css meta.property-value.css variable.other.less\",\"meta.property-list.scss variable.scss\",\"meta.property-list.sass variable.sass\",\"meta.brace\",\"keyword.operator.operator\",\"keyword.operator.or.regexp\",\"keyword.operator.expression.in\",\"keyword.operator.relational\",\"keyword.operator.assignment\",\"keyword.operator.comparison\",\"keyword.operator.type\",\"keyword.operator\",\"keyword\",\"punctuation.definintion.string\",\"punctuation\",\"variable.other.readwrite.js\",\"storage.type\",\"source.css\",\"string.quoted\"],\"settings\":{\"fontStyle\":\"\"}}],\"styleOverrides\":{\"frames\":{\"editorBackground\":\"var(--sl-color-gray-7)\",\"terminalBackground\":\"var(--sl-color-gray-7)\",\"editorActiveTabBackground\":\"var(--sl-color-gray-7)\",\"terminalTitlebarDotsForeground\":\"color-mix(in srgb, var(--sl-color-gray-5), transparent 25%)\",\"terminalTitlebarDotsOpacity\":\"0.75\",\"inlineButtonForeground\":\"var(--sl-color-text)\",\"frameBoxShadowCssValue\":\"none\"},\"textMarkers\":{\"markBackground\":\"#0000001a\",\"markBorderColor\":\"#00000055\"}}}],\"defaultLocale\":\"en\",\"cascadeLayer\":\"starlight.components\",\"styleOverrides\":{\"borderRadius\":\"0px\",\"borderWidth\":\"1px\",\"codePaddingBlock\":\"0.75rem\",\"codePaddingInline\":\"1rem\",\"codeFontFamily\":\"var(--__sl-font-mono)\",\"codeFontSize\":\"var(--sl-text-code)\",\"codeLineHeight\":\"var(--sl-line-height)\",\"uiFontFamily\":\"var(--__sl-font)\",\"textMarkers\":{\"lineDiffIndicatorMarginLeft\":\"0.25rem\",\"defaultChroma\":\"45\",\"backgroundOpacity\":\"60%\"}},\"plugins\":[{\"name\":\"Starlight Plugin\",\"hooks\":{}},{\"name\":\"astro-expressive-code\",\"hooks\":{}}]}]],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"headingIdCompat\":false,\"preserveScriptOrder\":false,\"liveContentCollections\":false,\"csp\":false,\"staticImportMetaEnv\":false,\"chromeDevtoolsWorkspace\":false},\"legacy\":{\"collections\":false},\"prefetch\":{\"prefetchAll\":true},\"i18n\":{\"defaultLocale\":\"en\",\"locales\":[\"en\"],\"routing\":{\"prefixDefaultLocale\":false,\"redirectToDefaultLocale\":false,\"fallbackType\":\"redirect\"}}}","docs",["Map",11,12,34,35,45,46,56,57,81,82,91,92,101,102,111,112,121,122,131,132,175,176,199,200,223,224,262,263,289,290,334,335,361,362,397,398],"404",{"id":11,"data":13,"filePath":23,"digest":24,"rendered":25},{"title":11,"editUrl":14,"head":15,"template":16,"hero":17,"sidebar":20,"pagefind":22,"draft":14},false,[],"splash",{"title":11,"tagline":18,"actions":19},"Page not found. Check the URL or try using the search bar.",[],{"hidden":14,"attrs":21},{},true,"src/content/docs/404.md","bb57d46babfd3e01",{"html":26,"metadata":27},"",{"headings":28,"localImagePaths":29,"remoteImagePaths":30,"frontmatter":31,"imagePaths":33},[],[],[],{"title":11,"template":16,"editUrl":14,"hero":32},{"title":11,"tagline":18},[],"index",{"id":34,"data":36,"body":42,"filePath":43,"digest":44,"deferredRender":22},{"title":37,"description":38,"editUrl":22,"head":39,"tableOfContents":14,"template":16,"next":14,"sidebar":40,"pagefind":22,"draft":14},"🦫 OpenRag — The Open RAG Experimentation Playground","This is a page in my Starlight-powered site",[],{"hidden":14,"attrs":41},{},"import { LinkCard, CardGrid, Card } from '@astrojs/starlight/components';\nimport { Image } from 'astro:assets';\nimport myImage from \"/src/assets/RAG_architecture.png\";\n\n\u003CImage src={myImage} alt=\"RAG Architecture\" width={600} height={350} />\n\n[OpenRag](https://open-rag.ai/) is a lightweight, modular and extensible Retrieval-Augmented Generation (RAG) framework designed to explore and test advanced RAG techniques — 100% open source and focused on experimentation, not lock-in.\n\n> Built by Linagora, OpenRag offers a sovereign-by-design alternative to mainstream RAG stacks.\n\n## Getting Started\n\n\u003CCardGrid>\n \u003CLinkCard \n title=\"Quick Start\"\n icon=\"open-book\"\n href=\"getting_started/quickstart\" \n description='Step-by-step guide to get OpenRAG up and running quickly.'\n />\n \u003CLinkCard\n title=\"Other features\" \n icon=\"information\"\n href=\"documentation/features_in_details\"\n description=\"More information you want to share.\"\n />\n\u003C/CardGrid>","src/content/docs/index.mdx","32a9ed798a41db89","license",{"id":45,"data":47,"body":53,"filePath":54,"digest":55,"deferredRender":22},{"title":48,"editUrl":22,"head":49,"template":50,"sidebar":51,"pagefind":22,"draft":14},"License",[],"doc",{"hidden":14,"attrs":52},{},"OpenRag is licensed under [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.en.html). You are free to use, modify, and distribute this software in compliance with the terms of the license.\n\nFor more details, refer to the [LICENSE](https://github.com/linagora/openrag/blob/main/LICENSE) file in the repository.","src/content/docs/license.mdx","d3d5a30e5289a73a","minimum-specifications",{"id":56,"data":58,"body":63,"filePath":64,"digest":65,"rendered":66},{"title":59,"editUrl":22,"head":60,"template":50,"sidebar":61,"pagefind":22,"draft":14},"Minimum Specifications",[],{"hidden":14,"attrs":62},{},"OpenRAG can be run on a variety of hardware configurations, but still requires a minimum set of specifications.\n\n## Memory\n- Minimum: 16 GB RAM\n- Recommended: 32 GB RAM or more for better performance.\n\n## GPU\n- Minimum: NVIDIA GPU with at least 16 GB VRAM\n\n:::note\nMachines with unified memory (like Apple M-series Macs) work with at least 16 GB of RAM. However considering performance, 32 GB of RAM is recommended.","src/content/docs/minimum-specifications.md","1c6c7b709739d7c7",{"html":67,"metadata":68},"\u003Cp>OpenRAG can be run on a variety of hardware configurations, but still requires a minimum set of specifications.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"memory\">Memory\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#memory\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Memory”\u003C/span>\u003C/a>\u003C/div>\n\u003Cul>\n\u003Cli>Minimum: 16 GB RAM\u003C/li>\n\u003Cli>Recommended: 32 GB RAM or more for better performance.\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"gpu\">GPU\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#gpu\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “GPU”\u003C/span>\u003C/a>\u003C/div>\n\u003Cul>\n\u003Cli>Minimum: NVIDIA GPU with at least 16 GB VRAM\u003C/li>\n\u003C/ul>\n\u003Caside aria-label=\"Note\" class=\"starlight-aside starlight-aside--note\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z\">\u003C/path>\u003C/svg>Note\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Machines with unified memory (like Apple M-series Macs) work with at least 16 GB of RAM. However considering performance, 32 GB of RAM is recommended.\u003C/p>\u003C/div>\u003C/aside>",{"headings":69,"localImagePaths":77,"remoteImagePaths":78,"frontmatter":79,"imagePaths":80},[70,74],{"depth":71,"slug":72,"text":73},2,"memory","Memory",{"depth":71,"slug":75,"text":76},"gpu","GPU",[],[],{"title":59},[],"support-and-contribute",{"id":81,"data":83,"body":88,"filePath":89,"digest":90,"deferredRender":22},{"title":84,"editUrl":22,"head":85,"template":50,"sidebar":86,"pagefind":22,"draft":14},"Support and Contribute",[],{"hidden":14,"attrs":87},{},"We ❤️ your contributions!\n\nWe encourage you to contribute to OpenRag! Here's how you can get involved:\n1. Fork the repository on [GitHub](https://github.com/linagora/openrag).\n2. Create a new branch for your feature or fix.\n3. Submit a pull request for review.\n\nFeel free to ask **questions, suggest features, or report bugs** via the GitHub Issues page. Your feedback helps us improve!","src/content/docs/support-and-contribute.mdx","db3f67ab7f507b52","getting_started/quickstart",{"id":91,"data":93,"body":98,"filePath":99,"digest":100,"deferredRender":22},{"title":94,"editUrl":22,"head":95,"template":50,"sidebar":96,"pagefind":22,"draft":14},"Quick Start",[],{"hidden":14,"attrs":97},{},"import { Tabs, TabItem, Code } from '@astrojs/starlight/components';\nimport compose_ollama_cpu from '/src/assets/compose_ollama_cpu.yaml?raw';\nimport env_ollama_cpu from '/src/assets/env_ollama_cpu.env?raw';\nimport compose_linux_gpu from '/src/assets/compose_linux_gpu.yaml?raw';\nimport env_linux_gpu from '/src/assets/env_linux_gpu.env?raw';\n\nOpenRAG is an open source Retrieval Augmented Generation (RAG) solution. This guide is a step-by-step walkthrough to help you get started with OpenRAG.\n\n- Before proceeding, ensure your hardware meets the [recommended specifications](/minimum-specifications).\n- Install [Docker](https://www.docker.com/get-started).\n\n## Docker\n\nUse the following `docker-compose.yml` file to set up a simple OpenRAG environment:\n\n\u003CTabs>\n \u003CTabItem label=\"Linux\">\n \u003CTabs>\n \u003CTabItem label=\"Nvidia GPU\">\n \u003Cdetails>\n \u003Csummary>Click to expand the docker-compose.yml content\u003C/summary>\n \u003CCode code={compose_linux_gpu} lang=\"yaml\" />\n \u003C/details>\n You will also need to provide some environment variables. Create a `.env` file in the same directory as your `docker-compose.yml` file with the following content:\n \u003Cdetails>\n \u003Csummary>Click to expand the .env content\u003C/summary>\n \u003CCode code={env_linux_gpu} lang=\"bash\" />\n \u003C/details>\n\n \u003C/TabItem>\n \u003CTabItem label=\"CPU\">\n ```yaml\n Nothing here\n ```\n \u003C/TabItem>\n \u003C/Tabs>\n \u003C/TabItem>\n \u003CTabItem label=\"MacOS\">\n The simplest way to run OpenRAG on MacOS is to use the ollama model inference server. For more in-depth deployment options, refer to the [Docker installation guide](/installation/docker).\n \u003Cdetails>\n \u003Csummary>Click to expand the docker-compose.yml content\u003C/summary>\n \u003CCode code={compose_ollama_cpu} lang=\"yaml\" />\n \u003C/details>\n\n You will also need to provide some environment variables. Create a `.env` file in the same directory as your `docker-compose.yml` file with the following content:\n \u003Cdetails>\n \u003Csummary>Click to expand the .env content\u003C/summary>\n \u003CCode code={env_ollama_cpu} lang=\"bash\" /> \n \u003C/details>\n \u003C/TabItem>\n\u003C/Tabs>\n\n## Ansible\n\nClone the OpenRAG repository:\n```bash\ngit clone https://github.com/linagora/openrag.git\ncd openrag\n```\n\nRun the provided deployment script and follow the instructions:\n```bash\n./ansible/deploy.sh\n```","src/content/docs/getting_started/quickstart.mdx","7f0f5c9ea67f6cfb","getting_started/usage",{"id":101,"data":103,"body":108,"filePath":109,"digest":110,"deferredRender":22},{"title":104,"editUrl":22,"head":105,"template":50,"sidebar":106,"pagefind":22,"draft":14},"Usage",[],{"hidden":14,"attrs":107},{},"Once you have installed your OpenRAG instance, you can start using it to upload and query your documents.\n\n## Default ports\n\nBy default, OpenRAG services are exposed on the following ports:\n\n| Service | Port | Description |\n|-------------------|---------------|----------------------------------------------------------------|\n| API Documentation | 8080/docs | Main API for document ingestion and querying |\n| Chainlit UI | 8080/chainlit | User interface for interacting with the RAG system |\n| Ray Dashboard | 8265 | Ray dashboard for monitoring and managing tasks |\n| Indexer UI | 3043 | Main user interface for indexing and viewing indexed documents |\n\nMore information about the different services can be found in their respective documentation pages.","src/content/docs/getting_started/usage.mdx","a9e6b5eb5c8789fb","installation/ansible_setup",{"id":111,"data":113,"body":118,"filePath":119,"digest":120,"deferredRender":22},{"title":114,"editUrl":22,"head":115,"template":50,"sidebar":116,"pagefind":22,"draft":14},"Ansible",[],{"hidden":14,"attrs":117},{},"The Ansible playbooks and scripts provided help automatically set up the OpenRAG environment on one or more servers.\n\nThese scripts are designed for installation on fresh production machines.\n\n### Prerequisites\n\nEnsure the hardware hosting OpenRAG meets the [recommended specifications](/minimum-specifications).\n\n- Ansible installed on your control machine (automatically installed by `deploy.sh` if missing)\n- SSH access to target servers (if deploying remotely)\n- Ubuntu 20.04+ or similar Linux distribution on target servers\n- For remote deployment: `inventory.ini.example` file from the OpenRAG repository\n\n### Local Deployment (Easiest)\n\n```bash\ncd ansible/\n./deploy.sh\n# Choose option 1: \"Deploy to local machine\"\n# Select CPU-only or GPU-enabled deployment when prompted\n```\n\nThe local deployment will:\n- Prompt you to choose between CPU-only or GPU-enabled deployment\n- Handle all necessary configurations and installs automatically\n- Start all services\n\n### Remote Deployment\n\n1. **Create the inventory file (on the control machine):**\n ```bash\n # Rename the example inventory file\n cp inventory.ini.example inventory.ini\n \n # Edit the inventory file\n nano inventory.ini\n ```\n\n2. **Configure your servers:**\n ```ini\n [gpu_servers]\n gpu-server1 ansible_host=192.168.1.100 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa\n gpu-server2 ansible_host=192.168.1.101 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa\n\n [cpu_servers]\n cpu-server1 ansible_host=192.168.1.102 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa\n\n [all:vars]\n ansible_python_interpreter=/usr/bin/python3\n ```\n\n3. **Run the deployment:**\n ```bash\n ./deploy.sh\n # Choose option 2: \"Deploy remotely\"\n ```\n\n## Files Overview\n\n### Playbooks\n\n- **`playbook.yml`** - Main deployment playbook with separate GPU-enabled and CPU-only server configurations\n\n### Inventory Files\n\n- **`inventory.ini.example`** - Example inventory template for remote deployment\n- **`inventory.ini`** - Generated automatically for local deployment or manually created for remote deployment\n\n### Configuration\n\n- **`ansible.cfg`** - Ansible configuration settings\n\n### Scripts\n\n- **`deploy.sh`** - Interactive deployment and management\n\n## Manual Deployment\n\nIf you prefer to run Ansible commands directly:\n\n### Local/Remote Deployment\n```bash\n# Create inventory first\nansible-playbook -i inventory.ini playbook.yml --ask-become-pass\n```\n\n### Check Status\n```bash\nansible all -i inventory.ini -m shell -a \"docker ps\" --become\n```\n\n## Service Management\n\nThe deployment script provides several management options:\n\n### Interactive Mode\n```bash\n./deploy.sh\n```\n\n### Command Line Mode\n```bash\n# Deploy locally\n./deploy.sh deploy-local\n\n# Deploy remotely \n./deploy.sh deploy-remote\n\n# Check status\n./deploy.sh status\n\n# Stop services\n./deploy.sh stop\n\n# Start services\n./deploy.sh start\n\n# View logs\n./deploy.sh logs [service_name]\n\n# Update deployment\n./deploy.sh update\n\n# Complete removal\n./deploy.sh remove-all\n```\n\n## What Gets Installed\n\n### System Packages\n- Docker CE with Compose plugin\n- NVIDIA drivers (if GPU detected and GPU server group is used)\n- NVIDIA Container Toolkit (for GPU servers)\n- Python 3 with pip and uv package manager\n- Essential development tools\n\n### OpenRAG Components\n- Complete OpenRAG codebase from GitHub\n- All required Python dependencies installed via `uv`\n- Docker containers for OpenRAG services with appropriate profiles:\n - GPU servers: Default profile (includes GPU-accelerated services)\n - CPU servers: CPU profile (CPU-only services)\n\n### Directory Structure\n```\n/home/[user]/openrag/\n├── data/ # Document storage\n├── db/ # Database files\n├── logs/ # Application logs\n├── .hydra_config/ # Hydra configuration cache\n├── model_weights/ # Cached model files\n├── vdb/volumes/ # Vector database volumes\n├── .env # Environment configuration\n└── ... # OpenRAG source code\n```\n\n## Configuration\n\n### Environment Variables\n\nThe deployment automatically creates a `.env` file from `.env.example` or copies a local `.env` file if present. Key variables to customize:\n\n```bash\n# LLM Configuration\nBASE_URL=http://your-llm-endpoint\nAPI_KEY=your-api-key\nMODEL=your-model-name\n\n# Application Settings\nAPP_PORT=8080\nRETRIEVER_TOP_K=20\n\n# Embedder Settings\nEMBEDDER_MODEL_NAME=Qwen/Qwen3-Embedding-0.6B\n```\n\n### Version Configuration\n\nThe playbook uses these default versions (configurable via inventory variables):\n\n```yaml\n# Docker and NVIDIA versions\ndocker_compose_version: \"2.21.0\"\nnvidia_driver_version: \"535\"\ndocker_ce_version: \"latest\"\nnvidia_container_toolkit_version: \"1.17.8-1\"\n```\n\n### Inventory Variables\n\nYou can set variables in your inventory file:\n\n```ini\n[gpu_servers:vars]\nnvidia_driver_version=535\nproject_user=ubuntu\nproject_path=/home/ubuntu/openrag\n\n[cpu_servers:vars]\nproject_user=ubuntu\nproject_path=/home/ubuntu/openrag\n\n[all:vars]\nansible_python_interpreter=/usr/bin/python3\n```\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Docker permission denied**\n ```bash\n # Re-login to apply docker group membership\n sudo su - $USER\n ```\n\n2. **NVIDIA driver installation fails**\n ```bash\n # Check GPU compatibility\n lspci | grep -i nvidia\n ```\n\n3. **Services not starting**\n ```bash\n # Check logs\n docker compose logs\n ```\n\n### Manual Recovery\n\nIf something goes wrong, you can manually clean up:\n\n```bash\n# Stop all containers\ndocker compose down\n\n# Remove containers and images\ndocker system prune -a\n\n# Re-run deployment\n./deploy.sh\n```\n\n### Complete System Reset\n\nFor a complete removal of all components (Docker, NVIDIA drivers, OpenRAG):\n\n```bash\n# Use the deployment script's removal option\n./deploy.sh remove-all\n```\n\n**Warning**: This will remove Docker, NVIDIA drivers, and all related components. Use with caution!\n\nFor OpenRAG application issues, refer to the [main project documentation](/documentation/api_documentation).","src/content/docs/installation/ansible_setup.mdx","64f2a20df5132959","installation/docker",{"id":121,"data":123,"body":128,"filePath":129,"digest":130,"deferredRender":22},{"title":124,"editUrl":22,"head":125,"template":50,"sidebar":126,"pagefind":22,"draft":14},"Docker",[],{"hidden":14,"attrs":127},{},"OpenRAG is most comprehensively deployed using Docker.\n\n- Before proceeding, ensure your hardware meets the [recommended specifications](/minimum-specifications).\n- Install [Docker](https://www.docker.com/get-started).\n\nThe OpenRAG docker image is available on [DockerHub](https://hub.docker.com/r/rcordier/openrag) and the [GitHub Container Registry](https://github.com/linagora/openrag/pkgs/container/openrag).\n\n## Docker Compose\n\nOpenRAG requires several services to run, which can be orchestrated using Docker Compose.","src/content/docs/installation/docker.mdx","7ea95b6e50954f61","documentation/deploy_ray_cluster",{"id":131,"data":133,"body":138,"filePath":139,"digest":140,"rendered":141},{"title":134,"editUrl":22,"head":135,"template":50,"sidebar":136,"pagefind":22,"draft":14},"Ray Cluster",[],{"hidden":14,"attrs":137},{},"# ⚡ Distributed Deployment in a Ray Cluster\n\nThis guide explains how to deploy **OpenRAG** across multiple machines using **Ray** for distributed indexing and processing.\n\n---\n\n## ✅ 1. Set Environment Variables\n\nEnsure your `.env` file includes the standard app variables **plus Ray-specific ones** listed below:\n\n```bash \n// .env\n# Ray\n# Resources for all files\nRAY_NUM_GPUS=0.1\nRAY_POOL_SIZE=1\nRAY_MAX_TASKS_PER_WORKER=5\n\n# PDF specific resources when using marker\nMARKER_MAX_TASKS_PER_CHILD=10\nMARKER_MAX_PROCESSES=5 # Number of subprocesses \u003C-> Number of concurrent pdfs per worker\nMARKER_MIN_PROCESSES=3 # Minimum number of subprocesses available before triggering a process pool reset.\nMARKER_POOL_SIZE=1 # Number of workers (typically 1 worker per cluster node)\nMARKER_NUM_GPUS=0.6\n\nSHARED_ENV=/ray_mount/.env\nRAY_DASHBOARD_PORT=8265\nRAY_ADDRESS=ray://X.X.X.X:10001\nHEAD_NODE_IP=X.X.X.X\nRAY_HEAD_ADDRESS=X.X.X.X:6379\n# RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # to enable logs at task level in ray dashboard\nRAY_task_retry_delay_ms=3000\n\n# Ray volumes\nDATA_VOLUME=/ray_mount/data\nMODEL_WEIGHTS_VOLUME=/ray_mount/model_weights\nCONFIG_VOLUME=/ray_mount/.hydra_config\nUV_LINK_MODE=copy\nUV_CACHE_DIR=/tmp/uv-cache \n```\n\n✅ Use host IPs instead of Docker service names :\n\n```diff lang=\"bash\"\n// .env\n- EMBEDDER_BASE_URL=http://vllm:8000/v1\n+ EMBEDDER_BASE_URL=http://\u003CHOST-IP>:8000/v1 # ✅ instead of http://vllm:8000/v1\n\n- VDB_HOST=milvus\n+ VDB_HOST=\u003CHOST-IP> # ✅ instead of VDB_HOST=milvus\n```\n\n:::tip[🧠 **Tips**]\n- `RAY_NUM_GPUS` defines **per-actor resource requirements**. Ray will not start a task until these resources are available on one of the nodes. \nFor example, if one indexation consumes ~1GB of VRAM and your GPU has 4GB, setting `RAY_NUM_GPUS=0.25` allows you to run **4 indexers per node**. In a 2-node cluster, that means up to **8 concurrent indexation tasks**. \n\n- `RAY_POOL_SIZE` defines the number of worker actors that will be created to handle indexation tasks. It acts like a **maximum concurrency limit**. \nUsing the previous example, you can set `POOL_SIZE=8` to fully utilize your cluster capacity.\n:::\n\n:::caution\nIf other GPU-intensive services are running on your nodes (e.g. vLLM, the RAG API), make sure to **reserve enough GPU memory** for them and subtract that from your total when calculating the safe pool size.\n:::\n\n---\n\n## 📁 2. Set Up Shared Storage\n\nAll nodes need to access shared configuration and data folders. \nWe recommend using **GlusterFS** for this.\n\n➡ Follow the [GlusterFS Setup Guide](/documentation/setup_glusterfs/) to configure:\n\n- Shared access to:\n - `.env`\n - `.hydra_config`\n - `/data` (uploaded files)\n - `/model_weights` (embedding model cache)\n\n---\n\n## 🚀 3. Start the Ray Cluster\n\nFirst, prepare your `cluster.yaml` file. Here's an example for a **local provider**:\n\n```yaml\n// cluster.yaml\ncluster_name: rag-cluster\nprovider:\n type: local\n head_ip: 10.0.0.1\n worker_ips: [10.0.0.2] # Static IPs of other nodes (does not auto-start workers)\n\ndocker:\n image: ghcr.io/linagora/openrag-ray\n pull_before_run: true\n container_name: ray_node\n run_options:\n - --gpus all\n - -v /ray_mount/model_weights:/app/model_weights\n - -v /ray_mount/data:/app/data\n - -v /ray_mount/.hydra_config:/app/.hydra_config\n - -v /ray_mount/logs:/app/logs\n - --env-file /ray_mount/.env\n\nauth:\n ssh_user: ubuntu\n ssh_private_key: path/to/private/key # Replace with your actual ssh key path\n\nhead_start_ray_commands:\n - uv run ray stop\n - uv run ray start --head --dashboard-host 0.0.0.0 --dashboard-port ${RAY_DASHBOARD_PORT:-8265} --node-ip-address ${HEAD_NODE_IP} --autoscaling-config=~/ray_bootstrap_config.yaml\nworker_start_ray_commands:\n - uv run ray stop\n - uv run ray start --address ${HEAD_NODE_IP:-10.0.0.1}:6379\n```\n\n> 🛠️ The base image (`ghcr.io/linagora/openrag-ray`) must be built from `Dockerfile.ray` and pushed to a container registry before use.\n\n### ⬆️ Launch the cluster\n\n```bash\nuv run ray up -y cluster.yaml\n```\n\n## 🐳 4. Launch the OpenRAG App\n\nUse the Docker Compose setup:\n\n```bash\ndocker compose up -d\n```\n\nOnce running, **OpenRAG will auto-connect** to the Ray cluster using `RAY_ADDRESS` from `.env`.\n\n---\n\nWith this setup, your app is now fully distributed and ready to handle concurrent tasks across your Ray cluster.\n\n\n## 🛠️ Troubleshooting\n\n### ❌ Permission Denied Errors\n\nIf you encounter errors like `Permission denied` when Ray or Docker tries to access shared folders (SQL database, model files, ...), it's likely due to insufficient permissions on the host system.\n\n👉 To resolve this, you can set full read/write/execute permissions on the shared directory:\n\n```bash\nsudo chmod -R 777 /ray_mount\n```","src/content/docs/documentation/deploy_ray_cluster.md","941894a362fee25d",{"html":142,"metadata":143},"\u003Cdiv class=\"sl-heading-wrapper level-h1\">\u003Ch1 id=\"-distributed-deployment-in-a-ray-cluster\">⚡ Distributed Deployment in a Ray Cluster\u003C/h1>\u003Ca class=\"sl-anchor-link\" href=\"#-distributed-deployment-in-a-ray-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “⚡ Distributed Deployment in a Ray Cluster”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>This guide explains how to deploy \u003Cstrong>OpenRAG\u003C/strong> across multiple machines using \u003Cstrong>Ray\u003C/strong> for distributed indexing and processing.\u003C/p>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-1-set-environment-variables\">✅ 1. Set Environment Variables\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-1-set-environment-variables\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “✅ 1. Set Environment Variables”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Ensure your \u003Ccode dir=\"auto\">.env\u003C/code> file includes the standard app variables \u003Cstrong>plus Ray-specific ones\u003C/strong> listed below:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Ray\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Resources for all files\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_NUM_GPUS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">0.1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_POOL_SIZE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_MAX_TASKS_PER_WORKER\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">5\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># PDF specific resources when using marker\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_MAX_TASKS_PER_CHILD\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">10\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_MAX_PROCESSES\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">5\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Number of subprocesses <-> Number of concurrent pdfs per worker\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_MIN_PROCESSES\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">3\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Minimum number of subprocesses available before triggering a process pool reset.\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_POOL_SIZE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">1\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Number of workers (typically 1 worker per cluster node)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MARKER_NUM_GPUS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">0.6\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">SHARED_ENV\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/.env\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_DASHBOARD_PORT\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">8265\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_ADDRESS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ray://X.X.X.X:10001\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">HEAD_NODE_IP\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">X.X.X.X\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_HEAD_ADDRESS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">X.X.X.X:6379\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # to enable logs at task level in ray dashboard\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">RAY_task_retry_delay_ms\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">3000\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Ray volumes\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">DATA_VOLUME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/data\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">MODEL_WEIGHTS_VOLUME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/model_weights\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CONFIG_VOLUME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/.hydra_config\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">UV_LINK_MODE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">copy\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">UV_CACHE_DIR\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/tmp/uv-cache\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"# Ray# Resources for all filesRAY_NUM_GPUS=0.1RAY_POOL_SIZE=1RAY_MAX_TASKS_PER_WORKER=5# PDF specific resources when using markerMARKER_MAX_TASKS_PER_CHILD=10MARKER_MAX_PROCESSES=5 # Number of subprocesses \u003C-> Number of concurrent pdfs per workerMARKER_MIN_PROCESSES=3 # Minimum number of subprocesses available before triggering a process pool reset.MARKER_POOL_SIZE=1 # Number of workers (typically 1 worker per cluster node)MARKER_NUM_GPUS=0.6SHARED_ENV=/ray_mount/.envRAY_DASHBOARD_PORT=8265RAY_ADDRESS=ray://X.X.X.X:10001HEAD_NODE_IP=X.X.X.XRAY_HEAD_ADDRESS=X.X.X.X:6379# RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # to enable logs at task level in ray dashboardRAY_task_retry_delay_ms=3000# Ray volumesDATA_VOLUME=/ray_mount/dataMODEL_WEIGHTS_VOLUME=/ray_mount/model_weightsCONFIG_VOLUME=/ray_mount/.hydra_configUV_LINK_MODE=copyUV_CACHE_DIR=/tmp/uv-cache\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>✅ Use host IPs instead of Docker service names :\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line highlight del\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2c4984\">EMBEDDER_BASE_URL\u003C/span>\u003Cspan style=\"--0:#d0a3ed;--1:#663383\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2c4984\">http://vllm:8000/v1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line highlight ins\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2d4a87\">EMBEDDER_BASE_URL\u003C/span>\u003Cspan style=\"--0:#d2a6ee;--1:#6a3588\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2d4a87\">http://<HOST-IP>:8000/v1\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#aeb8b8;--1:#494c55\"># ✅ instead of http://vllm:8000/v1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line highlight del\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2c4984\">VDB_HOST\u003C/span>\u003Cspan style=\"--0:#d0a3ed;--1:#663383\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2c4984\">milvus\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line highlight ins\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#C5E478;--1:#2d4a87\">VDB_HOST\u003C/span>\u003Cspan style=\"--0:#d2a6ee;--1:#6a3588\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#2d4a87\"><HOST-IP>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#aeb8b8;--1:#494c55\"># ✅ instead of VDB_HOST=milvus\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\" EMBEDDER_BASE_URL=http://vllm:8000/v1 EMBEDDER_BASE_URL=http://\u003CHOST-IP>:8000/v1 # ✅ instead of http://vllm:8000/v1 VDB_HOST=milvus VDB_HOST=\u003CHOST-IP> # ✅ instead of VDB_HOST=milvus\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Caside aria-label=\"🧠 Tips\" class=\"starlight-aside starlight-aside--tip\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.43909 8.85483L1.44039 8.85354L4.96668 5.33815C5.30653 4.99386 5.7685 4.79662 6.2524 4.78972L6.26553 4.78963L12.9014 4.78962L13.8479 3.84308C16.9187 0.772319 20.0546 0.770617 21.4678 0.975145C21.8617 1.02914 22.2271 1.21053 22.5083 1.4917C22.7894 1.77284 22.9708 2.13821 23.0248 2.53199C23.2294 3.94517 23.2278 7.08119 20.1569 10.1521L19.2107 11.0983V17.7338L19.2106 17.7469C19.2037 18.2308 19.0067 18.6933 18.6624 19.0331L15.1456 22.5608C14.9095 22.7966 14.6137 22.964 14.29 23.0449C13.9663 23.1259 13.6267 23.1174 13.3074 23.0204C12.9881 22.9235 12.7011 22.7417 12.4771 22.4944C12.2533 22.2473 12.1006 21.9441 12.0355 21.6171L11.1783 17.3417L6.65869 12.822L4.34847 12.3589L2.38351 11.965C2.05664 11.8998 1.75272 11.747 1.50564 11.5232C1.25835 11.2992 1.07653 11.0122 0.979561 10.6929C0.882595 10.3736 0.874125 10.034 0.955057 9.7103C1.03599 9.38659 1.20328 9.09092 1.43909 8.85483ZM6.8186 10.8724L2.94619 10.096L6.32006 6.73268H10.9583L6.8186 10.8724ZM15.2219 5.21703C17.681 2.75787 20.0783 2.75376 21.1124 2.8876C21.2462 3.92172 21.2421 6.31895 18.783 8.77812L12.0728 15.4883L8.51172 11.9272L15.2219 5.21703ZM13.9042 21.0538L13.1279 17.1811L17.2676 13.0414V17.68L13.9042 21.0538Z\">\u003C/path>\u003Cpath d=\"M9.31827 18.3446C9.45046 17.8529 9.17864 17.3369 8.68945 17.1724C8.56178 17.1294 8.43145 17.1145 8.30512 17.1243C8.10513 17.1398 7.91519 17.2172 7.76181 17.3434C7.62613 17.455 7.51905 17.6048 7.45893 17.7835C6.97634 19.2186 5.77062 19.9878 4.52406 20.4029C4.08525 20.549 3.6605 20.644 3.29471 20.7053C3.35607 20.3395 3.45098 19.9148 3.59711 19.476C4.01221 18.2294 4.78141 17.0237 6.21648 16.5411C6.39528 16.481 6.54504 16.3739 6.65665 16.2382C6.85126 16.0016 6.92988 15.678 6.84417 15.3647C6.83922 15.3466 6.83373 15.3286 6.82767 15.3106C6.74106 15.053 6.55701 14.8557 6.33037 14.7459C6.10949 14.6389 5.84816 14.615 5.59715 14.6994C5.47743 14.7397 5.36103 14.7831 5.24786 14.8294C3.22626 15.6569 2.2347 17.4173 1.75357 18.8621C1.49662 19.6337 1.36993 20.3554 1.30679 20.8818C1.27505 21.1464 1.25893 21.3654 1.25072 21.5213C1.24662 21.5993 1.24448 21.6618 1.24337 21.7066L1.243 21.7226L1.24235 21.7605L1.2422 21.7771L1.24217 21.7827L1.24217 21.7856C1.24217 22.3221 1.67703 22.7579 2.2137 22.7579L2.2155 22.7579L2.22337 22.7578L2.23956 22.7577C2.25293 22.7575 2.27096 22.7572 2.29338 22.7567C2.33821 22.7555 2.40073 22.7534 2.47876 22.7493C2.63466 22.7411 2.85361 22.725 3.11822 22.6932C3.64462 22.6301 4.36636 22.5034 5.13797 22.2464C6.58274 21.7653 8.3431 20.7738 9.17063 18.7522C9.21696 18.639 9.26037 18.5226 9.30064 18.4029C9.30716 18.3835 9.31304 18.364 9.31827 18.3446Z\">\u003C/path>\u003C/svg>🧠 \u003Cstrong>Tips\u003C/strong>\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cul>\n\u003Cli>\n\u003Cp>\u003Ccode dir=\"auto\">RAY_NUM_GPUS\u003C/code> defines \u003Cstrong>per-actor resource requirements\u003C/strong>. Ray will not start a task until these resources are available on one of the nodes.\u003Cbr>\nFor example, if one indexation consumes ~1GB of VRAM and your GPU has 4GB, setting \u003Ccode dir=\"auto\">RAY_NUM_GPUS=0.25\u003C/code> allows you to run \u003Cstrong>4 indexers per node\u003C/strong>. In a 2-node cluster, that means up to \u003Cstrong>8 concurrent indexation tasks\u003C/strong>.\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Ccode dir=\"auto\">RAY_POOL_SIZE\u003C/code> defines the number of worker actors that will be created to handle indexation tasks. It acts like a \u003Cstrong>maximum concurrency limit\u003C/strong>.\u003Cbr>\nUsing the previous example, you can set \u003Ccode dir=\"auto\">POOL_SIZE=8\u003C/code> to fully utilize your cluster capacity.\u003C/p>\n\u003C/li>\n\u003C/ul>\u003C/div>\u003C/aside>\n\u003Caside aria-label=\"Caution\" class=\"starlight-aside starlight-aside--caution\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 16C11.8022 16 11.6089 16.0587 11.4444 16.1686C11.28 16.2784 11.1518 16.4346 11.0761 16.6173C11.0004 16.8001 10.9806 17.0011 11.0192 17.1951C11.0578 17.3891 11.153 17.5673 11.2929 17.7071C11.4327 17.847 11.6109 17.9422 11.8049 17.9808C11.9989 18.0194 12.2 17.9996 12.3827 17.9239C12.5654 17.8482 12.7216 17.72 12.8315 17.5556C12.9413 17.3911 13 17.1978 13 17C13 16.7348 12.8946 16.4805 12.7071 16.2929C12.5196 16.1054 12.2652 16 12 16ZM22.67 17.47L14.62 3.47003C14.3598 3.00354 13.9798 2.61498 13.5192 2.3445C13.0586 2.07401 12.5341 1.9314 12 1.9314C11.4659 1.9314 10.9414 2.07401 10.4808 2.3445C10.0202 2.61498 9.64019 3.00354 9.38 3.47003L1.38 17.47C1.11079 17.924 0.966141 18.441 0.960643 18.9688C0.955144 19.4966 1.089 20.0166 1.34868 20.4761C1.60837 20.9356 1.9847 21.3185 2.43968 21.5861C2.89466 21.8536 3.41218 21.9964 3.94 22H20.06C20.5921 22.0053 21.1159 21.8689 21.5779 21.6049C22.0399 21.341 22.4234 20.9589 22.689 20.4978C22.9546 20.0368 23.0928 19.5134 23.0895 18.9814C23.0862 18.4493 22.9414 17.9277 22.67 17.47ZM20.94 19.47C20.8523 19.626 20.7245 19.7556 20.5697 19.8453C20.4149 19.935 20.2389 19.9815 20.06 19.98H3.94C3.76111 19.9815 3.5851 19.935 3.43032 19.8453C3.27553 19.7556 3.14765 19.626 3.06 19.47C2.97223 19.318 2.92602 19.1456 2.92602 18.97C2.92602 18.7945 2.97223 18.622 3.06 18.47L11.06 4.47003C11.1439 4.30623 11.2714 4.16876 11.4284 4.07277C11.5855 3.97678 11.766 3.92599 11.95 3.92599C12.134 3.92599 12.3145 3.97678 12.4716 4.07277C12.6286 4.16876 12.7561 4.30623 12.84 4.47003L20.89 18.47C20.9892 18.6199 21.0462 18.7937 21.055 18.9732C21.0638 19.1527 21.0241 19.3312 20.94 19.49V19.47ZM12 8.00003C11.7348 8.00003 11.4804 8.10538 11.2929 8.29292C11.1054 8.48046 11 8.73481 11 9.00003V13C11 13.2652 11.1054 13.5196 11.2929 13.7071C11.4804 13.8947 11.7348 14 12 14C12.2652 14 12.5196 13.8947 12.7071 13.7071C12.8946 13.5196 13 13.2652 13 13V9.00003C13 8.73481 12.8946 8.48046 12.7071 8.29292C12.5196 8.10538 12.2652 8.00003 12 8.00003Z\">\u003C/path>\u003C/svg>Caution\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>If other GPU-intensive services are running on your nodes (e.g. vLLM, the RAG API), make sure to \u003Cstrong>reserve enough GPU memory\u003C/strong> for them and subtract that from your total when calculating the safe pool size.\u003C/p>\u003C/div>\u003C/aside>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-2-set-up-shared-storage\">📁 2. Set Up Shared Storage\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-2-set-up-shared-storage\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📁 2. Set Up Shared Storage”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>All nodes need to access shared configuration and data folders.\u003Cbr>\nWe recommend using \u003Cstrong>GlusterFS\u003C/strong> for this.\u003C/p>\n\u003Cp>➡ Follow the \u003Ca href=\"/documentation/setup_glusterfs/\">GlusterFS Setup Guide\u003C/a> to configure:\u003C/p>\n\u003Cul>\n\u003Cli>Shared access to:\n\u003Cul>\n\u003Cli>\u003Ccode dir=\"auto\">.env\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">.hydra_config\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">/data\u003C/code> (uploaded files)\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">/model_weights\u003C/code> (embedding model cache)\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-3-start-the-ray-cluster\">🚀 3. Start the Ray Cluster\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-3-start-the-ray-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🚀 3. Start the Ray Cluster”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>First, prepare your \u003Ccode dir=\"auto\">cluster.yaml\u003C/code> file. Here’s an example for a \u003Cstrong>local provider\u003C/strong>:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">cluster.yaml\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"yaml\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">cluster_name\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">rag-cluster\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">provider\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">type\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">local\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">head_ip\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">worker_ips\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: [\u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.2\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">] \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Static IPs of other nodes (does not auto-start workers)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">docker\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">image\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ghcr.io/linagora/openrag-ray\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">pull_before_run\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#FF6A83;--1:#A24848\">true\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">container_name\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ray_node\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">run_options\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">--gpus all\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/model_weights:/app/model_weights\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/data:/app/data\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/.hydra_config:/app/.hydra_config\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">-v /ray_mount/logs:/app/logs\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">--env-file /ray_mount/.env\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">auth\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">ssh_user\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ubuntu\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">ssh_private_key\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">: \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">path/to/private/key\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Replace with your actual ssh key path\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">head_start_ray_commands\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray stop\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray start --head --dashboard-host 0.0.0.0 --dashboard-port ${RAY_DASHBOARD_PORT:-8265} --node-ip-address ${HEAD_NODE_IP} --autoscaling-config=~/ray_bootstrap_config.yaml\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#7FDBCA;--1:#111111\">worker_start_ray_commands\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">:\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray stop\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">- \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">uv run ray start --address ${HEAD_NODE_IP:-10.0.0.1}:6379\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"cluster_name: rag-clusterprovider: type: local head_ip: 10.0.0.1 worker_ips: [10.0.0.2] # Static IPs of other nodes (does not auto-start workers)docker: image: ghcr.io/linagora/openrag-ray pull_before_run: true container_name: ray_node run_options: - --gpus all - -v /ray_mount/model_weights:/app/model_weights - -v /ray_mount/data:/app/data - -v /ray_mount/.hydra_config:/app/.hydra_config - -v /ray_mount/logs:/app/logs - --env-file /ray_mount/.envauth: ssh_user: ubuntu ssh_private_key: path/to/private/key # Replace with your actual ssh key pathhead_start_ray_commands: - uv run ray stop - uv run ray start --head --dashboard-host 0.0.0.0 --dashboard-port ${RAY_DASHBOARD_PORT:-8265} --node-ip-address ${HEAD_NODE_IP} --autoscaling-config=~/ray_bootstrap_config.yamlworker_start_ray_commands: - uv run ray stop - uv run ray start --address ${HEAD_NODE_IP:-10.0.0.1}:6379\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cblockquote>\n\u003Cp>🛠️ The base image (\u003Ccode dir=\"auto\">ghcr.io/linagora/openrag-ray\u003C/code>) must be built from \u003Ccode dir=\"auto\">Dockerfile.ray\u003C/code> and pushed to a container registry before use.\u003C/p>\n\u003C/blockquote>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"️-launch-the-cluster\">⬆️ Launch the cluster\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#️-launch-the-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “⬆️ Launch the cluster”\u003C/span>\u003C/a>\u003C/div>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">uv\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">run\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ray\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">up\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">cluster.yaml\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"uv run ray up -y cluster.yaml\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-4-launch-the-openrag-app\">🐳 4. Launch the OpenRAG App\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-4-launch-the-openrag-app\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🐳 4. Launch the OpenRAG App”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Use the Docker Compose setup:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">docker\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">compose\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">up\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-d\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"docker compose up -d\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Once running, \u003Cstrong>OpenRAG will auto-connect\u003C/strong> to the Ray cluster using \u003Ccode dir=\"auto\">RAY_ADDRESS\u003C/code> from \u003Ccode dir=\"auto\">.env\u003C/code>.\u003C/p>\n\u003Chr>\n\u003Cp>With this setup, your app is now fully distributed and ready to handle concurrent tasks across your Ray cluster.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"️-troubleshooting\">🛠️ Troubleshooting\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#️-troubleshooting\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🛠️ Troubleshooting”\u003C/span>\u003C/a>\u003C/div>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-permission-denied-errors\">❌ Permission Denied Errors\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-permission-denied-errors\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “❌ Permission Denied Errors”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>If you encounter errors like \u003Ccode dir=\"auto\">Permission denied\u003C/code> when Ray or Docker tries to access shared folders (SQL database, model files, …), it’s likely due to insufficient permissions on the host system.\u003C/p>\n\u003Cp>👉 To resolve this, you can set full read/write/execute permissions on the shared directory:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">chmod\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-R\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">777\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo chmod -R 777 /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>",{"headings":144,"localImagePaths":171,"remoteImagePaths":172,"frontmatter":173,"imagePaths":174},[145,149,152,155,158,162,165,168],{"depth":146,"slug":147,"text":148},1,"-distributed-deployment-in-a-ray-cluster","⚡ Distributed Deployment in a Ray Cluster",{"depth":71,"slug":150,"text":151},"-1-set-environment-variables","✅ 1. Set Environment Variables",{"depth":71,"slug":153,"text":154},"-2-set-up-shared-storage","📁 2. Set Up Shared Storage",{"depth":71,"slug":156,"text":157},"-3-start-the-ray-cluster","🚀 3. Start the Ray Cluster",{"depth":159,"slug":160,"text":161},3,"️-launch-the-cluster","⬆️ Launch the cluster",{"depth":71,"slug":163,"text":164},"-4-launch-the-openrag-app","🐳 4. Launch the OpenRAG App",{"depth":71,"slug":166,"text":167},"️-troubleshooting","🛠️ Troubleshooting",{"depth":159,"slug":169,"text":170},"-permission-denied-errors","❌ Permission Denied Errors",[],[],{"title":134},[],"documentation/setup_chainlit_ui_auth",{"id":175,"data":177,"body":182,"filePath":183,"digest":184,"rendered":185},{"title":178,"editUrl":22,"head":179,"template":50,"sidebar":180,"pagefind":22,"draft":14},"Chainlit Authentification",[],{"hidden":14,"attrs":181},{},"To configure password-based authentication for your Chainlit UI, add the following environment variables to your `.env` file:\n## Step 1: Set up the authentication secret\n\nFirst, define a **`CHAINLIT_AUTH_SECRET`** environment variable. You can generate one automatically using the command `chainlit create-secret` (or `uv run chainlit create-secret` if using uv). Alternatively, you can provide your own **custom value**.\n\nFor detailed information about this variable, see the [Chainlit authentication documentation](https://docs.chainlit.io/authentication/overview).\n\n## Step 2: Configure username and password\n\nFor password-based authentication (see [Chainlit password authentication docs](https://docs.chainlit.io/authentication/password)), add your desired username and password to the `.env` file:\n\n```bash\n// .env\nCHAINLIT_AUTH_SECRET=...\nCHAINLIT_USERNAME=OpenRAG\nCHAINLIT_PASSWORD=OpenRAG2025\n```\n\nThis configuration will enable secure access to your Chainlit application using the specified credentials.","src/content/docs/documentation/setup_chainlit_ui_auth.md","1462d16f7e5c096c",{"html":186,"metadata":187},"\u003Cp>To configure password-based authentication for your Chainlit UI, add the following environment variables to your \u003Ccode dir=\"auto\">.env\u003C/code> file:\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"step-1-set-up-the-authentication-secret\">Step 1: Set up the authentication secret\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#step-1-set-up-the-authentication-secret\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 1: Set up the authentication secret”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>First, define a \u003Cstrong>\u003Ccode dir=\"auto\">CHAINLIT_AUTH_SECRET\u003C/code>\u003C/strong> environment variable. You can generate one automatically using the command \u003Ccode dir=\"auto\">chainlit create-secret\u003C/code> (or \u003Ccode dir=\"auto\">uv run chainlit create-secret\u003C/code> if using uv). Alternatively, you can provide your own \u003Cstrong>custom value\u003C/strong>.\u003C/p>\n\u003Cp>For detailed information about this variable, see the \u003Ca href=\"https://docs.chainlit.io/authentication/overview\">Chainlit authentication documentation\u003C/a>.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"step-2-configure-username-and-password\">Step 2: Configure username and password\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#step-2-configure-username-and-password\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 2: Configure username and password”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>For password-based authentication (see \u003Ca href=\"https://docs.chainlit.io/authentication/password\">Chainlit password authentication docs\u003C/a>), add your desired username and password to the \u003Ccode dir=\"auto\">.env\u003C/code> file:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_AUTH_SECRET\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">...\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_USERNAME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">OpenRAG\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_PASSWORD\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">OpenRAG2025\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"CHAINLIT_AUTH_SECRET=...CHAINLIT_USERNAME=OpenRAGCHAINLIT_PASSWORD=OpenRAG2025\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>This configuration will enable secure access to your Chainlit application using the specified credentials.\u003C/p>",{"headings":188,"localImagePaths":195,"remoteImagePaths":196,"frontmatter":197,"imagePaths":198},[189,192],{"depth":71,"slug":190,"text":191},"step-1-set-up-the-authentication-secret","Step 1: Set up the authentication secret",{"depth":71,"slug":193,"text":194},"step-2-configure-username-and-password","Step 2: Configure username and password",[],[],{"title":178},[],"documentation/chainlit_data_persistency",{"id":199,"data":201,"body":206,"filePath":207,"digest":208,"rendered":209},{"title":202,"editUrl":22,"head":203,"template":50,"sidebar":204,"pagefind":22,"draft":14},"Chainlit Data Persistency",[],{"hidden":14,"attrs":205},{},"The [Chainlit data layer](https://docs.chainlit.io/data-layers/overview) allows you to persist conversations in chainlit.\nThis project uses a [dockerized fork](https://github.com/Chainlit/chainlit-datalayer) for easier deployment and setup.\n\nIn OpenRAG, one can activate **`Chainlit data layer`** following these steps:\n\n### Step 1: Set up authentication\nIn fact, chainlit authentication is necessary for data persistency. Set chainlit authentication if not already done (refer to the [chainlit auth guide](./setup_chainlit_ui_auth.md))\n\n### Step 2: Add the following variables\nTo deploy the Chainlit data layer service, add the following variable:\n```bash\n// .env\n# Persistency services: postgres (localstack (AWS emulator deployed locally)\nCHAINLIT_DATALAYER_COMPOSE=extern/chainlit-datalayer/compose.yaml\n```\nThis provides 2 services:\n- a postgres database to store users, feedback, chat history, etc\n- \"s3 bucket\" emulator to store elements (files attached in the chat). \n\n:::note\nChainlit datalayer is cloud-compatible, and the same applies for local data persistency. So for local storage, a cloud/s3 service emulator that runs in a container is deployed as well.\n:::\n\n* Variables for the postgres data\n\n:::tip{icon=\"heart\"}\nKnowing that OpenRAG already has a running postgres service (**`rdb`**) (refer to the [docker-compose.yaml](/docker-compose.yaml) file), there is no need to deploy another postgres service. In that case, comment out the postgres service definition in the [compose.yaml](/extern/chainlit-datalayer/compose.yaml) file and add the following variable to your .env\n:::\n\n```bash\n// .env\nDATABASE_URL=postgresql://root:root_password@rdb:5432/chainlit\n```\n* Variables for chainlit to use the **`S3 Bucket`**\nAdd the following variables to your `.env` so that chainlit can use them to connect to the locally deployed S3 bucket\n\n```bash\n// .env\n## S3 bucket configuration.\nBUCKET_NAME=my-bucket\nAPP_AWS_ACCESS_KEY=random-key\nAPP_AWS_SECRET_KEY=random-key\nAPP_AWS_REGION=eu-central-1\nDEV_AWS_ENDPOINT=http://localstack:4566\n```\n\n:::tip{icon=\"seti:info\"}\nIf you want to deactivate the service, comment out these variables, especially **`CHAINLIT_DATALAYER_COMPOSE`**.\n:::","src/content/docs/documentation/chainlit_data_persistency.md","92bebacc0879485a",{"html":210,"metadata":211},"\u003Cp>The \u003Ca href=\"https://docs.chainlit.io/data-layers/overview\">Chainlit data layer\u003C/a> allows you to persist conversations in chainlit.\nThis project uses a \u003Ca href=\"https://github.com/Chainlit/chainlit-datalayer\">dockerized fork\u003C/a> for easier deployment and setup.\u003C/p>\n\u003Cp>In OpenRAG, one can activate \u003Cstrong>\u003Ccode dir=\"auto\">Chainlit data layer\u003C/code>\u003C/strong> following these steps:\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"step-1-set-up-authentication\">Step 1: Set up authentication\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#step-1-set-up-authentication\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 1: Set up authentication”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>In fact, chainlit authentication is necessary for data persistency. Set chainlit authentication if not already done (refer to the \u003Ca href=\"./setup_chainlit_ui_auth.md\">chainlit auth guide\u003C/a>)\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"step-2-add-the-following-variables\">Step 2: Add the following variables\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#step-2-add-the-following-variables\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Step 2: Add the following variables”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>To deploy the Chainlit data layer service, add the following variable:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Persistency services: postgres (localstack (AWS emulator deployed locally)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">CHAINLIT_DATALAYER_COMPOSE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">extern/chainlit-datalayer/compose.yaml\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"# Persistency services: postgres (localstack (AWS emulator deployed locally)CHAINLIT_DATALAYER_COMPOSE=extern/chainlit-datalayer/compose.yaml\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>This provides 2 services:\u003C/p>\n\u003Cul>\n\u003Cli>a postgres database to store users, feedback, chat history, etc\u003C/li>\n\u003Cli>“s3 bucket” emulator to store elements (files attached in the chat).\u003C/li>\n\u003C/ul>\n\u003Caside aria-label=\"Note\" class=\"starlight-aside starlight-aside--note\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z\">\u003C/path>\u003C/svg>Note\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Chainlit datalayer is cloud-compatible, and the same applies for local data persistency. So for local storage, a cloud/s3 service emulator that runs in a container is deployed as well.\u003C/p>\u003C/div>\u003C/aside>\n\u003Cul>\n\u003Cli>Variables for the postgres data\u003C/li>\n\u003C/ul>\n\u003Caside aria-label=\"Tip\" class=\"starlight-aside starlight-aside--tip\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M20.16 5A6.29 6.29 0 0 0 12 4.36a6.27 6.27 0 0 0-8.16 9.48l6.21 6.22a2.78 2.78 0 0 0 3.9 0l6.21-6.22a6.27 6.27 0 0 0 0-8.84m-1.41 7.46-6.21 6.21a.76.76 0 0 1-1.08 0l-6.21-6.24a4.29 4.29 0 0 1 0-6 4.27 4.27 0 0 1 6 0 1 1 0 0 0 1.42 0 4.27 4.27 0 0 1 6 0 4.29 4.29 0 0 1 .08 6Z\">\u003C/path>\u003C/svg>Tip\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Knowing that OpenRAG already has a running postgres service (\u003Cstrong>\u003Ccode dir=\"auto\">rdb\u003C/code>\u003C/strong>) (refer to the \u003Ca href=\"/docker-compose.yaml\">docker-compose.yaml\u003C/a> file), there is no need to deploy another postgres service. In that case, comment out the postgres service definition in the \u003Ca href=\"/extern/chainlit-datalayer/compose.yaml\">compose.yaml\u003C/a> file and add the following variable to your .env\u003C/p>\u003C/div>\u003C/aside>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">DATABASE_URL\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">postgresql://root:root_password@rdb:5432/chainlit\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"DATABASE_URL=postgresql://root:root_password@rdb:5432/chainlit\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cul>\n\u003Cli>Variables for chainlit to use the \u003Cstrong>\u003Ccode dir=\"auto\">S3 Bucket\u003C/code>\u003C/strong>\nAdd the following variables to your \u003Ccode dir=\"auto\">.env\u003C/code> so that chainlit can use them to connect to the locally deployed S3 bucket\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\">## S3 bucket configuration.\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">BUCKET_NAME\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">my-bucket\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">APP_AWS_ACCESS_KEY\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">random-key\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">APP_AWS_SECRET_KEY\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">random-key\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">APP_AWS_REGION\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">eu-central-1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">DEV_AWS_ENDPOINT\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">http://localstack:4566\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"## S3 bucket configuration.BUCKET_NAME=my-bucketAPP_AWS_ACCESS_KEY=random-keyAPP_AWS_SECRET_KEY=random-keyAPP_AWS_REGION=eu-central-1DEV_AWS_ENDPOINT=http://localstack:4566\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Caside aria-label=\"Tip\" class=\"starlight-aside starlight-aside--tip\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M23.780 10.803L23.818 10.803Q23.628 8.029 21.918 5.331L21.918 5.331Q20.664 3.469 18.916 2.234Q17.168 0.999 15.002 0.467L15.002 0.467Q13.748 0.125 12.646 0.125L12.646 0.125L10.746 0.125Q7.326 0.467 4.438 2.595L4.438 2.595Q1.132 5.369 0.296 9.245L0.296 9.245Q0.068 10.423 0.068 11.145L0.068 11.145L0.068 13.045Q0.448 16.351 2.082 18.631L2.082 18.631Q4.172 21.709 7.288 22.925L7.288 22.925Q9.454 23.685 11.202 23.875L11.202 23.875L13.102 23.875Q17.434 23.495 20.474 20.303L20.474 20.303Q22.944 17.833 23.666 14.375L23.666 14.375Q23.742 14.071 23.799 13.539Q23.856 13.007 23.932 12.703L23.932 12.703L23.932 11.411Q23.780 11.145 23.780 10.803L23.780 10.803ZM11.924 21.975L11.924 21.975Q9.188 21.975 6.870 20.569L6.870 20.569Q4.590 19.239 3.279 16.921Q1.968 14.603 1.968 11.867Q1.968 9.131 3.317 6.813Q4.666 4.495 6.984 3.165L6.984 3.165Q9.378 1.759 12.152 1.759L12.152 1.759Q14.850 1.835 17.149 3.184Q19.448 4.533 20.778 6.813L20.778 6.813Q22.146 9.131 22.108 11.867Q22.070 14.603 20.683 16.921Q19.296 19.239 17.016 20.569L17.016 20.569Q14.660 21.975 11.924 21.975ZM15.496 18.289L14.774 18.289Q14.432 18.289 14.166 18.175L14.166 18.175Q14.014 18.175 13.900 17.947L13.900 17.947Q13.862 17.833 13.824 17.795L13.824 17.795L13.824 10.081Q12.874 10.157 11.031 10.214Q9.188 10.271 8.238 10.309L8.238 10.309L8.238 11.259L9.416 11.259Q9.758 11.259 9.948 11.487Q10.138 11.715 10.138 12.095L10.138 12.095L10.138 17.567Q10.138 18.289 9.416 18.289L9.416 18.289L8.352 18.289L8.352 19.239L15.496 19.239L15.496 18.289ZM11.696 8.675L11.696 8.675Q12.570 8.675 13.140 8.067Q13.710 7.459 13.710 6.642Q13.710 5.825 13.102 5.217Q12.494 4.609 11.658 4.609Q10.822 4.609 10.252 5.217Q9.682 5.825 9.682 6.642Q9.682 7.459 10.290 8.067Q10.898 8.675 11.696 8.675Z\">\u003C/path>\u003C/svg>Tip\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>If you want to deactivate the service, comment out these variables, especially \u003Cstrong>\u003Ccode dir=\"auto\">CHAINLIT_DATALAYER_COMPOSE\u003C/code>\u003C/strong>.\u003C/p>\u003C/div>\u003C/aside>",{"headings":212,"localImagePaths":219,"remoteImagePaths":220,"frontmatter":221,"imagePaths":222},[213,216],{"depth":159,"slug":214,"text":215},"step-1-set-up-authentication","Step 1: Set up authentication",{"depth":159,"slug":217,"text":218},"step-2-add-the-following-variables","Step 2: Add the following variables",[],[],{"title":202},[],"documentation/features_in_details",{"id":223,"data":225,"body":230,"filePath":231,"digest":232,"rendered":233},{"title":226,"editUrl":22,"head":227,"template":50,"sidebar":228,"pagefind":22,"draft":14},"✨ Key Features",[],{"hidden":14,"attrs":229},{},"### 📁 Rich File Format Support\n[OpenRag](https://open-rag.ai/) supports a comprehensive range of file formats for seamless document ingestion:\n\n* **Text Files**: `txt`, `md`\n* **Document Files**: `pdf`, `docx`, `doc`, `pptx` - Advanced PDF parsing with OCR support and Office document processing\n* **Audio Files**: `wav`, `mp3`, `mp4`, `ogg`, `flv`, `wma`, `aac` - Audio transcription and content extraction\n* **Images**: `png`, `jpeg`, `jpg`, `svg` - Vision Language Model (VLM) powered image captioning and analysis\n\nAll files are intelligently converted to **Markdown format** with images replaced by AI-generated captions, ensuring consistent processing across all document types.\n\n### 🎛️ Native Web-Based Indexer UI\nExperience intuitive document management through our built-in web interface.\n\n\u003Cdetails>\n\n\u003Csummary>Indexer UI Features\u003C/summary>\n\n* **Drag-and-drop file upload** with batch processing capabilities\n* **Real-time indexing progress** monitoring and status updates\n* **Admin Dashboard** to monitor RAG components (Indexer, VectorDB, TaskStateManager, etc)\n* **Partition management** - organize documents into logical collections\n* **Visual document preview** and metadata inspection\n* **Search and filtering** capabilities for indexed content\n\n\u003C/details>\n\n### 🗂️ Partition-Based Architecture\nOrganize your knowledge base with flexible partition management:\n* **Multi-tenant support** - isolate different document collections\n\n### 💬 Interactive Chat UI with Source Attribution\nEngage with your documents through our sophisticated chat interface:\n\n\u003Cdetails>\n\n\u003Csummary>Chat UI Features\u003C/summary>\n\n* **Chainlit-powered UI** - modern, responsive chat experience\n* **Source transparency** - every response includes relevant document references\n\u003C/details>\n\n\n### 🔌 OpenAI API Compatibility\n[OpenRag](https://open-rag.ai/) API is tailored to be compatible with the OpenAI format (see the [openai-compatibility section](/documentation/api/#-openai-compatible-chat) for more details), enabling seamless integration of your deployed RAG into popular frontends and workflows such as OpenWebUI, LangChain, N8N, and more. This ensures flexibility and ease of adoption without requiring custom adapters.\n\n\u003Cdetails>\n\n\u003Csummary>Summary of features\u003C/summary>\n\n* **Drop-in replacement** for OpenAI API endpoints\n* **Compatible with popular frontends** like OpenWebUI, LangChain, N8N, and more\n* **Authentication support** - secure your API with token-based auth\n\n\u003C/details>\n\n\n### ⚡ Distributed Ray Deployment\nScale your RAG pipeline across multiple machines and GPUs.\n\u003Cdetails>\n\n\u003Csummary>Distributed Ray Deployment\u003C/summary>\n\n* **Horizontal scaling** - distribute processing across worker nodes\n* **GPU acceleration** - optimize inference across available hardware\n* **Resource management** - intelligent allocation of compute resources\n* **Monitoring dashboard** - real-time cluster health and performance metrics\n\nSee the section on [distributed deployment in a ray cluster](#5-distributed-deployment-in-a-ray-cluster) for more details\n\n\u003C/details>\n\n### 🔍 Advanced Retrieval & Reranking\n[OpenRag](https://open-rag.ai/) Leverages state-of-the-art retrieval techniques for superior accuracy.\n\n\u003Cdetails>\n\n\u003Csummary>Implemented advanced retrieval techniques\u003C/summary>\n\n* **Hybrid search** - combines semantic similarity with **`BM25` keyword** matching\n* **Contextual retrieval** - Anthropic's technique for enhanced chunk relevance\n* **Multilingual reranking** - using `Alibaba-NLP/gte-multilingual-reranker-base`\n\n\u003C/details>","src/content/docs/documentation/features_in_details.md","316b5b4d57152351",{"html":234,"metadata":235},"\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-rich-file-format-support\">📁 Rich File Format Support\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-rich-file-format-support\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📁 Rich File Format Support”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>\u003Ca href=\"https://open-rag.ai/\">OpenRag\u003C/a> supports a comprehensive range of file formats for seamless document ingestion:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Text Files\u003C/strong>: \u003Ccode dir=\"auto\">txt\u003C/code>, \u003Ccode dir=\"auto\">md\u003C/code>\u003C/li>\n\u003Cli>\u003Cstrong>Document Files\u003C/strong>: \u003Ccode dir=\"auto\">pdf\u003C/code>, \u003Ccode dir=\"auto\">docx\u003C/code>, \u003Ccode dir=\"auto\">doc\u003C/code>, \u003Ccode dir=\"auto\">pptx\u003C/code> - Advanced PDF parsing with OCR support and Office document processing\u003C/li>\n\u003Cli>\u003Cstrong>Audio Files\u003C/strong>: \u003Ccode dir=\"auto\">wav\u003C/code>, \u003Ccode dir=\"auto\">mp3\u003C/code>, \u003Ccode dir=\"auto\">mp4\u003C/code>, \u003Ccode dir=\"auto\">ogg\u003C/code>, \u003Ccode dir=\"auto\">flv\u003C/code>, \u003Ccode dir=\"auto\">wma\u003C/code>, \u003Ccode dir=\"auto\">aac\u003C/code> - Audio transcription and content extraction\u003C/li>\n\u003Cli>\u003Cstrong>Images\u003C/strong>: \u003Ccode dir=\"auto\">png\u003C/code>, \u003Ccode dir=\"auto\">jpeg\u003C/code>, \u003Ccode dir=\"auto\">jpg\u003C/code>, \u003Ccode dir=\"auto\">svg\u003C/code> - Vision Language Model (VLM) powered image captioning and analysis\u003C/li>\n\u003C/ul>\n\u003Cp>All files are intelligently converted to \u003Cstrong>Markdown format\u003C/strong> with images replaced by AI-generated captions, ensuring consistent processing across all document types.\u003C/p>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"️-native-web-based-indexer-ui\">🎛️ Native Web-Based Indexer UI\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#️-native-web-based-indexer-ui\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🎛️ Native Web-Based Indexer UI”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Experience intuitive document management through our built-in web interface.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Indexer UI Features\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Drag-and-drop file upload\u003C/strong> with batch processing capabilities\u003C/li>\n\u003Cli>\u003Cstrong>Real-time indexing progress\u003C/strong> monitoring and status updates\u003C/li>\n\u003Cli>\u003Cstrong>Admin Dashboard\u003C/strong> to monitor RAG components (Indexer, VectorDB, TaskStateManager, etc)\u003C/li>\n\u003Cli>\u003Cstrong>Partition management\u003C/strong> - organize documents into logical collections\u003C/li>\n\u003Cli>\u003Cstrong>Visual document preview\u003C/strong> and metadata inspection\u003C/li>\n\u003Cli>\u003Cstrong>Search and filtering\u003C/strong> capabilities for indexed content\u003C/li>\n\u003C/ul>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"️-partition-based-architecture\">🗂️ Partition-Based Architecture\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#️-partition-based-architecture\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🗂️ Partition-Based Architecture”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Organize your knowledge base with flexible partition management:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Multi-tenant support\u003C/strong> - isolate different document collections\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-interactive-chat-ui-with-source-attribution\">💬 Interactive Chat UI with Source Attribution\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-interactive-chat-ui-with-source-attribution\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “💬 Interactive Chat UI with Source Attribution”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Engage with your documents through our sophisticated chat interface:\u003C/p>\n\u003Cdetails>\n\u003Csummary>Chat UI Features\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Chainlit-powered UI\u003C/strong> - modern, responsive chat experience\u003C/li>\n\u003Cli>\u003Cstrong>Source transparency\u003C/strong> - every response includes relevant document references\u003C/li>\n\u003C/ul>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-openai-api-compatibility\">🔌 OpenAI API Compatibility\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-openai-api-compatibility\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔌 OpenAI API Compatibility”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>\u003Ca href=\"https://open-rag.ai/\">OpenRag\u003C/a> API is tailored to be compatible with the OpenAI format (see the \u003Ca href=\"/documentation/api/#-openai-compatible-chat\">openai-compatibility section\u003C/a> for more details), enabling seamless integration of your deployed RAG into popular frontends and workflows such as OpenWebUI, LangChain, N8N, and more. This ensures flexibility and ease of adoption without requiring custom adapters.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Summary of features\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Drop-in replacement\u003C/strong> for OpenAI API endpoints\u003C/li>\n\u003Cli>\u003Cstrong>Compatible with popular frontends\u003C/strong> like OpenWebUI, LangChain, N8N, and more\u003C/li>\n\u003Cli>\u003Cstrong>Authentication support\u003C/strong> - secure your API with token-based auth\u003C/li>\n\u003C/ul>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-distributed-ray-deployment\">⚡ Distributed Ray Deployment\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-distributed-ray-deployment\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “⚡ Distributed Ray Deployment”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Scale your RAG pipeline across multiple machines and GPUs.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Distributed Ray Deployment\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Horizontal scaling\u003C/strong> - distribute processing across worker nodes\u003C/li>\n\u003Cli>\u003Cstrong>GPU acceleration\u003C/strong> - optimize inference across available hardware\u003C/li>\n\u003Cli>\u003Cstrong>Resource management\u003C/strong> - intelligent allocation of compute resources\u003C/li>\n\u003Cli>\u003Cstrong>Monitoring dashboard\u003C/strong> - real-time cluster health and performance metrics\u003C/li>\n\u003C/ul>\n\u003Cp>See the section on \u003Ca href=\"#5-distributed-deployment-in-a-ray-cluster\">distributed deployment in a ray cluster\u003C/a> for more details\u003C/p>\n\u003C/details>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-advanced-retrieval--reranking\">🔍 Advanced Retrieval & Reranking\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-advanced-retrieval--reranking\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔍 Advanced Retrieval & Reranking”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>\u003Ca href=\"https://open-rag.ai/\">OpenRag\u003C/a> Leverages state-of-the-art retrieval techniques for superior accuracy.\u003C/p>\n\u003Cdetails>\n\u003Csummary>Implemented advanced retrieval techniques\u003C/summary>\n\u003Cul>\n\u003Cli>\u003Cstrong>Hybrid search\u003C/strong> - combines semantic similarity with \u003Cstrong>\u003Ccode dir=\"auto\">BM25\u003C/code> keyword\u003C/strong> matching\u003C/li>\n\u003Cli>\u003Cstrong>Contextual retrieval\u003C/strong> - Anthropic’s technique for enhanced chunk relevance\u003C/li>\n\u003Cli>\u003Cstrong>Multilingual reranking\u003C/strong> - using \u003Ccode dir=\"auto\">Alibaba-NLP/gte-multilingual-reranker-base\u003C/code>\u003C/li>\n\u003C/ul>\n\u003C/details>",{"headings":236,"localImagePaths":258,"remoteImagePaths":259,"frontmatter":260,"imagePaths":261},[237,240,243,246,249,252,255],{"depth":159,"slug":238,"text":239},"-rich-file-format-support","📁 Rich File Format Support",{"depth":159,"slug":241,"text":242},"️-native-web-based-indexer-ui","🎛️ Native Web-Based Indexer UI",{"depth":159,"slug":244,"text":245},"️-partition-based-architecture","🗂️ Partition-Based Architecture",{"depth":159,"slug":247,"text":248},"-interactive-chat-ui-with-source-attribution","💬 Interactive Chat UI with Source Attribution",{"depth":159,"slug":250,"text":251},"-openai-api-compatibility","🔌 OpenAI API Compatibility",{"depth":159,"slug":253,"text":254},"-distributed-ray-deployment","⚡ Distributed Ray Deployment",{"depth":159,"slug":256,"text":257},"-advanced-retrieval--reranking","🔍 Advanced Retrieval & Reranking",[],[],{"title":226},[],"documentation/kubernetes",{"id":262,"data":264,"body":269,"filePath":270,"digest":271,"rendered":272},{"title":265,"editUrl":22,"head":266,"template":50,"sidebar":267,"pagefind":22,"draft":14},"Deploying OpenRAG on Kubernetes",[],{"hidden":14,"attrs":268},{},"This guide explains how to deploy the **OpenRAG** stack on a Kubernetes cluster using Helm.\n\n---\n\n## Prerequisites\n\n- A **Kubernetes cluster** with **GPU nodes** available (NVIDIA runtime) and nvidia-gpu-operator installed.\n- A **StorageClass** that supports **ReadWriteMany** (`RWX`) access mode. \n This is required because the Ray cluster workers and the OpenRAG app need to access the same shared volumes (e.g. for `.venv`, model weights, logs, data).\n- If using ingress, the ingress-nginx controller needs to be installed on the cluster.\n\n---\n\n## Steps\n\n1. **Create a `values.yaml` file**:\n\n - Copy or create a new `values.yaml` at the root of your repo.\n - You can see the full example file inside the chart:\n [../charts/openrag-stack/values.yaml](/charts/openrag-stack/values.yaml)\n - Customize the values you need (e.g., image tags, resources, ingress host, storage class, environment variables, secrets).\n\n2. **Set environment and secrets**:\n\n - Edit the `env.config` and `env.secrets` sections in your `values.yaml`.\n - Secrets (API keys, tokens, Hugging Face credentials, etc.) will be mounted into the cluster as Kubernetes secrets.\n\n3. **Install or upgrade the release from GHCR**:\n\n ```bash\n helm upgrade\\\n --install openrag oci://ghcr.io/linagora/openrag-stack\\\n -f ./values.yaml\\\n --version 0.1.0\n ```\n\n - `openrag` is the Helm release name.\n - `oci://ghcr.io/linagora/openrag-stack` is the remote chart location.\n - `-f ./values.yaml` specifies your custom configuration.\n - `--version 0.1.0` ensures you deploy a specific chart version.\n\n---\n\n## Notes\n\n- If using a public IP instead of a hostname, you can leave `ingress.host` empty in your `values.yaml`. \n The ingress will then match all hosts.\n\n- If you later configure a hostname + TLS (via cert-manager), just update `ingress.host` and redeploy.\n\n- Ensure your GPU nodes have the correct NVIDIA drivers and `nvidia` `RuntimeClass` configured.","src/content/docs/documentation/kubernetes.md","7512ef961e95752e",{"html":273,"metadata":274},"\u003Cp>This guide explains how to deploy the \u003Cstrong>OpenRAG\u003C/strong> stack on a Kubernetes cluster using Helm.\u003C/p>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"prerequisites\">Prerequisites\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#prerequisites\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Prerequisites”\u003C/span>\u003C/a>\u003C/div>\n\u003Cul>\n\u003Cli>A \u003Cstrong>Kubernetes cluster\u003C/strong> with \u003Cstrong>GPU nodes\u003C/strong> available (NVIDIA runtime) and nvidia-gpu-operator installed.\u003C/li>\n\u003Cli>A \u003Cstrong>StorageClass\u003C/strong> that supports \u003Cstrong>ReadWriteMany\u003C/strong> (\u003Ccode dir=\"auto\">RWX\u003C/code>) access mode.\u003Cbr>\nThis is required because the Ray cluster workers and the OpenRAG app need to access the same shared volumes (e.g. for \u003Ccode dir=\"auto\">.venv\u003C/code>, model weights, logs, data).\u003C/li>\n\u003Cli>If using ingress, the ingress-nginx controller needs to be installed on the cluster.\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"steps\">Steps\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#steps\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Steps”\u003C/span>\u003C/a>\u003C/div>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>Create a \u003Ccode dir=\"auto\">values.yaml\u003C/code> file\u003C/strong>:\u003C/p>\n\u003Cul>\n\u003Cli>Copy or create a new \u003Ccode dir=\"auto\">values.yaml\u003C/code> at the root of your repo.\u003C/li>\n\u003Cli>You can see the full example file inside the chart:\n\u003Ca href=\"/charts/openrag-stack/values.yaml\">../charts/openrag-stack/values.yaml\u003C/a>\u003C/li>\n\u003Cli>Customize the values you need (e.g., image tags, resources, ingress host, storage class, environment variables, secrets).\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Set environment and secrets\u003C/strong>:\u003C/p>\n\u003Cul>\n\u003Cli>Edit the \u003Ccode dir=\"auto\">env.config\u003C/code> and \u003Ccode dir=\"auto\">env.secrets\u003C/code> sections in your \u003Ccode dir=\"auto\">values.yaml\u003C/code>.\u003C/li>\n\u003Cli>Secrets (API keys, tokens, Hugging Face credentials, etc.) will be mounted into the cluster as Kubernetes secrets.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Install or upgrade the release from GHCR\u003C/strong>:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">helm\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">upgrade\u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--install\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">openrag\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">oci://ghcr.io/linagora/openrag-stack\u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-f\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">./values.yaml\u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--version\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">0.1.0\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"helm upgrade\\ --install openrag oci://ghcr.io/linagora/openrag-stack\\ -f ./values.yaml\\ --version 0.1.0\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cul>\n\u003Cli>\u003Ccode dir=\"auto\">openrag\u003C/code> is the Helm release name.\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">oci://ghcr.io/linagora/openrag-stack\u003C/code> is the remote chart location.\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">-f ./values.yaml\u003C/code> specifies your custom configuration.\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">--version 0.1.0\u003C/code> ensures you deploy a specific chart version.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ol>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"notes\">Notes\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#notes\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Notes”\u003C/span>\u003C/a>\u003C/div>\n\u003Cul>\n\u003Cli>\n\u003Cp>If using a public IP instead of a hostname, you can leave \u003Ccode dir=\"auto\">ingress.host\u003C/code> empty in your \u003Ccode dir=\"auto\">values.yaml\u003C/code>.\u003Cbr>\nThe ingress will then match all hosts.\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>If you later configure a hostname + TLS (via cert-manager), just update \u003Ccode dir=\"auto\">ingress.host\u003C/code> and redeploy.\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>Ensure your GPU nodes have the correct NVIDIA drivers and \u003Ccode dir=\"auto\">nvidia\u003C/code> \u003Ccode dir=\"auto\">RuntimeClass\u003C/code> configured.\u003C/p>\n\u003C/li>\n\u003C/ul>",{"headings":275,"localImagePaths":285,"remoteImagePaths":286,"frontmatter":287,"imagePaths":288},[276,279,282],{"depth":71,"slug":277,"text":278},"prerequisites","Prerequisites",{"depth":71,"slug":280,"text":281},"steps","Steps",{"depth":71,"slug":283,"text":284},"notes","Notes",[],[],{"title":265},[],"documentation/setup_glusterfs",{"id":289,"data":291,"body":296,"filePath":297,"digest":298,"rendered":299},{"title":292,"editUrl":22,"head":293,"template":50,"sidebar":294,"pagefind":22,"draft":14},"GlusterFS",[],{"hidden":14,"attrs":295},{},"## 🪵 GlusterFS Setup for Shared Storage (Ray Cluster)\n\nIn a Ray distributed setup, **all worker nodes need access to certain shared resources** used by the application. \nThis includes:\n\n- `.env` (environment variables for models and settings)\n- `.hydra_config` (application configuration)\n- Uploaded files (`/data`)\n- Model weights (e.g. `/model_weights` if using HF local cache)\n\n---\n\n## 1️⃣ Setup VPN (if required)\n\nIf your Ray nodes are **not on the same local network**, set up a VPN between them first. \n➡ Refer to the dedicated [VPN setup guide](/documentation/setup_vpn/). \nYou can skip this step if your nodes are already on the same LAN.\n\n---\n\n## 2️⃣ Setup GlusterFS (Distributed Filesystem)\n\nGlusterFS allows you to **share and replicate storage across multiple nodes** with redundancy and better fault tolerance.\n\nThis guide assumes:\n- You have 4 machines on the same private network\n- You want all of them to share `/ray_mount`\n\n---\n\n### 🔧 Install GlusterFS and start the GlusterFS\n\nRun this on **all 4 machines**:\n\n```bash title=\"installing and starting glusterfs...\"\nsudo apt update\nsudo apt install -y glusterfs-server\nsudo systemctl enable --now glusterd\n```\n\n---\n\n### 🤝 Connect all nodes into a trusted pool\n\nFrom one node (e.g. the Ray head), run:\n\n```bash title:\"connecting nodes...\"\ngluster peer probe \u003CIP_OF_NODE_2>\ngluster peer probe \u003CIP_OF_NODE_3>\ngluster peer probe \u003CIP_OF_NODE_4>\n```\n\nConfirm with:\n\n```bash title=\"shows the status of nodes\"\ngluster peer status\n```\n\n---\n\n### 📁 Create bricks on each node\n\nOn **each node**, run:\n\n```bash title=\"create brick directories on each node\"\nsudo mkdir -p /gluster/bricks/ray_mount\n```\n\n---\n\n### 📦 Create the replicated GlusterFS volume\n\nFrom one node (e.g. the Ray head):\n\n```bash\ngluster volume create rayvol replica 4 \\\n \u003CIP1>:/gluster/bricks/ray_mount \\\n \u003CIP2>:/gluster/bricks/ray_mount \\\n \u003CIP3>:/gluster/bricks/ray_mount \\\n \u003CIP4>:/gluster/bricks/ray_mount \\\n force\n```\n\nStart the volume:\n\n```bash\ngluster volume start rayvol\n```\n\n---\n\n### 🔗 Mount the volume on all nodes\n\nInstall the client tools:\n\n```bash\nsudo apt install -y glusterfs-client\n```\n\nCreate the mount point:\n\n```bash\nsudo mkdir -p /ray_mount\n```\n\nMount it (on each node):\n\n```bash\nsudo mount -t glusterfs \u003CANY_NODE_IP>:/rayvol /ray_mount\n```\n\nTo make this permanent across reboots:\n\n```bash\necho \"\u003CANY_NODE_IP>:/rayvol /ray_mount glusterfs defaults,_netdev 0 0\" | sudo tee -a /etc/fstab\n```\n\n> ✅ Replace `\u003CANY_NODE_IP>` with one of your node IPs in the GlusterFS cluster.\n\n---\n\n### 📂 Copy required data to the shared folder\n\nFrom any node:\n\n```bash\nsudo cp -r .hydra_config /ray_mount/\nsudo cp .env /ray_mount/\nsudo mkdir /ray_mount/data /ray_mount/model_weights\nsudo chown -R ubuntu:ubuntu /ray_mount\n```\n\n> ✅ Ensure that the ownership is set to the user running Ray workers (e.g. `ubuntu`) so that all nodes can read/write.\n\n---\n\nNow, all Ray nodes will have **consistent access to required data and configurations** via `/ray_mount`, backed by a fault-tolerant and distributed filesystem.","src/content/docs/documentation/setup_glusterfs.md","646afcdcacd9e7a6",{"html":300,"metadata":301},"\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-glusterfs-setup-for-shared-storage-ray-cluster\">🪵 GlusterFS Setup for Shared Storage (Ray Cluster)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-glusterfs-setup-for-shared-storage-ray-cluster\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🪵 GlusterFS Setup for Shared Storage (Ray Cluster)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>In a Ray distributed setup, \u003Cstrong>all worker nodes need access to certain shared resources\u003C/strong> used by the application.\u003Cbr>\nThis includes:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode dir=\"auto\">.env\u003C/code> (environment variables for models and settings)\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">.hydra_config\u003C/code> (application configuration)\u003C/li>\n\u003Cli>Uploaded files (\u003Ccode dir=\"auto\">/data\u003C/code>)\u003C/li>\n\u003Cli>Model weights (e.g. \u003Ccode dir=\"auto\">/model_weights\u003C/code> if using HF local cache)\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"1️⃣-setup-vpn-if-required\">1️⃣ Setup VPN (if required)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#1️⃣-setup-vpn-if-required\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “1️⃣ Setup VPN (if required)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>If your Ray nodes are \u003Cstrong>not on the same local network\u003C/strong>, set up a VPN between them first.\u003Cbr>\n➡ Refer to the dedicated \u003Ca href=\"/documentation/setup_vpn/\">VPN setup guide\u003C/a>.\u003Cbr>\nYou can skip this step if your nodes are already on the same LAN.\u003C/p>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"2️⃣-setup-glusterfs-distributed-filesystem\">2️⃣ Setup GlusterFS (Distributed Filesystem)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#2️⃣-setup-glusterfs-distributed-filesystem\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “2️⃣ Setup GlusterFS (Distributed Filesystem)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>GlusterFS allows you to \u003Cstrong>share and replicate storage across multiple nodes\u003C/strong> with redundancy and better fault tolerance.\u003C/p>\n\u003Cp>This guide assumes:\u003C/p>\n\u003Cul>\n\u003Cli>You have 4 machines on the same private network\u003C/li>\n\u003Cli>You want all of them to share \u003Ccode dir=\"auto\">/ray_mount\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-install-glusterfs-and-start-the-glusterfs\">🔧 Install GlusterFS and start the GlusterFS\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-install-glusterfs-and-start-the-glusterfs\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔧 Install GlusterFS and start the GlusterFS”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Run this on \u003Cstrong>all 4 machines\u003C/strong>:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame is-terminal has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">installing and starting glusterfs...\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">update\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">install\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterfs-server\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">systemctl\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">enable\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--now\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterd\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo apt updatesudo apt install -y glusterfs-serversudo systemctl enable --now glusterd\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-connect-all-nodes-into-a-trusted-pool\">🤝 Connect all nodes into a trusted pool\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-connect-all-nodes-into-a-trusted-pool\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🤝 Connect all nodes into a trusted pool”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>From one node (e.g. the Ray head), run:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">probe\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP_OF_NODE_2>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">probe\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP_OF_NODE_3>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">probe\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP_OF_NODE_4>\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster peer probe \u003CIP_OF_NODE_2>gluster peer probe \u003CIP_OF_NODE_3>gluster peer probe \u003CIP_OF_NODE_4>\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Confirm with:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">shows the status of nodes\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">peer\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">status\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster peer status\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-create-bricks-on-each-node\">📁 Create bricks on each node\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-create-bricks-on-each-node\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📁 Create bricks on each node”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>On \u003Cstrong>each node\u003C/strong>, run:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">create brick directories on each node\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mkdir\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-p\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/gluster/bricks/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo mkdir -p /gluster/bricks/ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-create-the-replicated-glusterfs-volume\">📦 Create the replicated GlusterFS volume\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-create-the-replicated-glusterfs-volume\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📦 Create the replicated GlusterFS volume”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>From one node (e.g. the Ray head):\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">volume\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">create\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">rayvol\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">replica\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">4\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP1>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP2>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP3>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><IP4>:/gluster/bricks/ray_mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">\\\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan class=\"indent\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">force\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster volume create rayvol replica 4 \\ \u003CIP1>:/gluster/bricks/ray_mount \\ \u003CIP2>:/gluster/bricks/ray_mount \\ \u003CIP3>:/gluster/bricks/ray_mount \\ \u003CIP4>:/gluster/bricks/ray_mount \\ force\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Start the volume:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">gluster\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">volume\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">start\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">rayvol\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"gluster volume start rayvol\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-mount-the-volume-on-all-nodes\">🔗 Mount the volume on all nodes\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-mount-the-volume-on-all-nodes\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔗 Mount the volume on all nodes”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Install the client tools:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">install\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterfs-client\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo apt install -y glusterfs-client\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Create the mount point:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mkdir\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-p\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo mkdir -p /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Mount it (on each node):\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mount\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-t\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">glusterfs\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><ANY_NODE_IP>:/rayvol\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo mount -t glusterfs \u003CANY_NODE_IP>:/rayvol /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>To make this permanent across reboots:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">echo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">\"\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\"><ANY_NODE_IP>:/rayvol /ray_mount glusterfs defaults,_netdev 0 0\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">\"\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">|\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">tee\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-a\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/etc/fstab\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"echo "\u003CANY_NODE_IP>:/rayvol /ray_mount glusterfs defaults,_netdev 0 0" | sudo tee -a /etc/fstab\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cblockquote>\n\u003Cp>✅ Replace \u003Ccode dir=\"auto\"><ANY_NODE_IP>\u003C/code> with one of your node IPs in the GlusterFS cluster.\u003C/p>\n\u003C/blockquote>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"-copy-required-data-to-the-shared-folder\">📂 Copy required data to the shared folder\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#-copy-required-data-to-the-shared-folder\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “📂 Copy required data to the shared folder”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>From any node:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">cp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-r\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">.hydra_config\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">cp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">.env\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">mkdir\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/data\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount/model_weights\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">chown\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-R\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">ubuntu:ubuntu\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/ray_mount\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo cp -r .hydra_config /ray_mount/sudo cp .env /ray_mount/sudo mkdir /ray_mount/data /ray_mount/model_weightssudo chown -R ubuntu:ubuntu /ray_mount\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cblockquote>\n\u003Cp>✅ Ensure that the ownership is set to the user running Ray workers (e.g. \u003Ccode dir=\"auto\">ubuntu\u003C/code>) so that all nodes can read/write.\u003C/p>\n\u003C/blockquote>\n\u003Chr>\n\u003Cp>Now, all Ray nodes will have \u003Cstrong>consistent access to required data and configurations\u003C/strong> via \u003Ccode dir=\"auto\">/ray_mount\u003C/code>, backed by a fault-tolerant and distributed filesystem.\u003C/p>",{"headings":302,"localImagePaths":330,"remoteImagePaths":331,"frontmatter":332,"imagePaths":333},[303,306,309,312,315,318,321,324,327],{"depth":71,"slug":304,"text":305},"-glusterfs-setup-for-shared-storage-ray-cluster","🪵 GlusterFS Setup for Shared Storage (Ray Cluster)",{"depth":71,"slug":307,"text":308},"1️⃣-setup-vpn-if-required","1️⃣ Setup VPN (if required)",{"depth":71,"slug":310,"text":311},"2️⃣-setup-glusterfs-distributed-filesystem","2️⃣ Setup GlusterFS (Distributed Filesystem)",{"depth":159,"slug":313,"text":314},"-install-glusterfs-and-start-the-glusterfs","🔧 Install GlusterFS and start the GlusterFS",{"depth":159,"slug":316,"text":317},"-connect-all-nodes-into-a-trusted-pool","🤝 Connect all nodes into a trusted pool",{"depth":159,"slug":319,"text":320},"-create-bricks-on-each-node","📁 Create bricks on each node",{"depth":159,"slug":322,"text":323},"-create-the-replicated-glusterfs-volume","📦 Create the replicated GlusterFS volume",{"depth":159,"slug":325,"text":326},"-mount-the-volume-on-all-nodes","🔗 Mount the volume on all nodes",{"depth":159,"slug":328,"text":329},"-copy-required-data-to-the-shared-folder","📂 Copy required data to the shared folder",[],[],{"title":292},[],"documentation/setup_indexerui",{"id":334,"data":336,"body":341,"filePath":342,"digest":343,"rendered":344},{"title":337,"editUrl":22,"head":338,"template":50,"sidebar":339,"pagefind":22,"draft":14},"Indexer UI",[],{"hidden":14,"attrs":340},{},"## Configuring the Indexer UI\n\n### 1. Download the `indexer-ui` Submodule\n\n> Ensure the `indexer-ui` submodule is initialized and downloaded. If not, run the following command from the root of your `openrag` project:\n\n```bash\ncd \u003Cproject-name> # openrag project\ngit submodule update --init --recursive\n```\n\n:::note\nThe `--init --recursive` flags will:\n\n* Initialize all submodules defined in the `.gitmodules` file\n* Clone the content of each submodule\n* Recursively initialize and update nested submodules\n:::\n\n:::caution[Important]\nEach version of **`openrag`** ships with a specific compatible commit of [indexer-ui](https://github.com/linagora/openrag-admin-ui). The above command is sufficient.\nIn development mode, to fetch the latest version of `indexer-ui`, run:\n```bash title=\"fetching the latest version of submodules...\"\ngit submodule foreach 'git checkout main && git pull'\n```\n:::\n\n### 2. Set Environment Variables\n\nTo enable the Indexer UI, add the following environment variables to your configuration:\n\n* Replace **`X.X.X.X`** with `localhost` (for local use) or your server IP\n* Replace **`APP_PORT`** with your FastAPI port (default: 8080)\n* Set the **base URL of the Indexer UI** (required to prevent CORS issues). Replace **`INDEXERUI_PORT`** accordingly\n* Set the **base URL of your FastAPI backend** (used by the frontend). Replace **`APP_PORT`** accordingly\n\n```bash\n// .env\nINDEXERUI_COMPOSE_FILE=extern/indexer-ui/docker-compose.yaml # Path to the docker-compose file\nVITE_INCLUDE_CREDENTIALS=false # Set to true if FastAPI authentication is enabled\nINDEXERUI_PORT=8060 # Port for the Indexer UI (default: 3042)\nINDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT'\nVITE_API_BASE_URL='http://X.X.X.X:APP_PORT'\n```","src/content/docs/documentation/setup_indexerui.md","e3f58e0c7489649b",{"html":345,"metadata":346},"\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"configuring-the-indexer-ui\">Configuring the Indexer UI\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#configuring-the-indexer-ui\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “Configuring the Indexer UI”\u003C/span>\u003C/a>\u003C/div>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"1-download-the-indexer-ui-submodule\">1. Download the \u003Ccode dir=\"auto\">indexer-ui\u003C/code> Submodule\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#1-download-the-indexer-ui-submodule\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “1. Download the indexer-ui Submodule”\u003C/span>\u003C/a>\u003C/div>\n\u003Cblockquote>\n\u003Cp>Ensure the \u003Ccode dir=\"auto\">indexer-ui\u003C/code> submodule is initialized and downloaded. If not, run the following command from the root of your \u003Ccode dir=\"auto\">openrag\u003C/code> project:\u003C/p>\n\u003C/blockquote>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">cd\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\"><project-name>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># openrag project\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">git\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">submodule\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">update\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--init\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">--recursive\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"cd \u003Cproject-name> # openrag projectgit submodule update --init --recursive\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Caside aria-label=\"Note\" class=\"starlight-aside starlight-aside--note\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z\">\u003C/path>\u003C/svg>Note\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>The \u003Ccode dir=\"auto\">--init --recursive\u003C/code> flags will:\u003C/p>\u003Cul>\n\u003Cli>Initialize all submodules defined in the \u003Ccode dir=\"auto\">.gitmodules\u003C/code> file\u003C/li>\n\u003Cli>Clone the content of each submodule\u003C/li>\n\u003Cli>Recursively initialize and update nested submodules\u003C/li>\n\u003C/ul>\u003C/div>\u003C/aside>\n\u003Caside aria-label=\"Important\" class=\"starlight-aside starlight-aside--caution\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 16C11.8022 16 11.6089 16.0587 11.4444 16.1686C11.28 16.2784 11.1518 16.4346 11.0761 16.6173C11.0004 16.8001 10.9806 17.0011 11.0192 17.1951C11.0578 17.3891 11.153 17.5673 11.2929 17.7071C11.4327 17.847 11.6109 17.9422 11.8049 17.9808C11.9989 18.0194 12.2 17.9996 12.3827 17.9239C12.5654 17.8482 12.7216 17.72 12.8315 17.5556C12.9413 17.3911 13 17.1978 13 17C13 16.7348 12.8946 16.4805 12.7071 16.2929C12.5196 16.1054 12.2652 16 12 16ZM22.67 17.47L14.62 3.47003C14.3598 3.00354 13.9798 2.61498 13.5192 2.3445C13.0586 2.07401 12.5341 1.9314 12 1.9314C11.4659 1.9314 10.9414 2.07401 10.4808 2.3445C10.0202 2.61498 9.64019 3.00354 9.38 3.47003L1.38 17.47C1.11079 17.924 0.966141 18.441 0.960643 18.9688C0.955144 19.4966 1.089 20.0166 1.34868 20.4761C1.60837 20.9356 1.9847 21.3185 2.43968 21.5861C2.89466 21.8536 3.41218 21.9964 3.94 22H20.06C20.5921 22.0053 21.1159 21.8689 21.5779 21.6049C22.0399 21.341 22.4234 20.9589 22.689 20.4978C22.9546 20.0368 23.0928 19.5134 23.0895 18.9814C23.0862 18.4493 22.9414 17.9277 22.67 17.47ZM20.94 19.47C20.8523 19.626 20.7245 19.7556 20.5697 19.8453C20.4149 19.935 20.2389 19.9815 20.06 19.98H3.94C3.76111 19.9815 3.5851 19.935 3.43032 19.8453C3.27553 19.7556 3.14765 19.626 3.06 19.47C2.97223 19.318 2.92602 19.1456 2.92602 18.97C2.92602 18.7945 2.97223 18.622 3.06 18.47L11.06 4.47003C11.1439 4.30623 11.2714 4.16876 11.4284 4.07277C11.5855 3.97678 11.766 3.92599 11.95 3.92599C12.134 3.92599 12.3145 3.97678 12.4716 4.07277C12.6286 4.16876 12.7561 4.30623 12.84 4.47003L20.89 18.47C20.9892 18.6199 21.0462 18.7937 21.055 18.9732C21.0638 19.1527 21.0241 19.3312 20.94 19.49V19.47ZM12 8.00003C11.7348 8.00003 11.4804 8.10538 11.2929 8.29292C11.1054 8.48046 11 8.73481 11 9.00003V13C11 13.2652 11.1054 13.5196 11.2929 13.7071C11.4804 13.8947 11.7348 14 12 14C12.2652 14 12.5196 13.8947 12.7071 13.7071C12.8946 13.5196 13 13.2652 13 13V9.00003C13 8.73481 12.8946 8.48046 12.7071 8.29292C12.5196 8.10538 12.2652 8.00003 12 8.00003Z\">\u003C/path>\u003C/svg>Important\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cp>Each version of \u003Cstrong>\u003Ccode dir=\"auto\">openrag\u003C/code>\u003C/strong> ships with a specific compatible commit of \u003Ca href=\"https://github.com/linagora/openrag-admin-ui\">indexer-ui\u003C/a>. The above command is sufficient.\nIn development mode, to fetch the latest version of \u003Ccode dir=\"auto\">indexer-ui\u003C/code>, run:\u003C/p>\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">fetching the latest version of submodules...\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">git\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">submodule\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">foreach\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\">git checkout main && git pull\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"git submodule foreach 'git checkout main && git pull'\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\u003C/div>\u003C/aside>\n\u003Cdiv class=\"sl-heading-wrapper level-h3\">\u003Ch3 id=\"2-set-environment-variables\">2. Set Environment Variables\u003C/h3>\u003Ca class=\"sl-anchor-link\" href=\"#2-set-environment-variables\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “2. Set Environment Variables”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>To enable the Indexer UI, add the following environment variables to your configuration:\u003C/p>\n\u003Cul>\n\u003Cli>Replace \u003Cstrong>\u003Ccode dir=\"auto\">X.X.X.X\u003C/code>\u003C/strong> with \u003Ccode dir=\"auto\">localhost\u003C/code> (for local use) or your server IP\u003C/li>\n\u003Cli>Replace \u003Cstrong>\u003Ccode dir=\"auto\">APP_PORT\u003C/code>\u003C/strong> with your FastAPI port (default: 8080)\u003C/li>\n\u003Cli>Set the \u003Cstrong>base URL of the Indexer UI\u003C/strong> (required to prevent CORS issues). Replace \u003Cstrong>\u003Ccode dir=\"auto\">INDEXERUI_PORT\u003C/code>\u003C/strong> accordingly\u003C/li>\n\u003Cli>Set the \u003Cstrong>base URL of your FastAPI backend\u003C/strong> (used by the frontend). Replace \u003Cstrong>\u003Ccode dir=\"auto\">APP_PORT\u003C/code>\u003C/strong> accordingly\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">.env\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">INDEXERUI_COMPOSE_FILE\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">extern/indexer-ui/docker-compose.yaml\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Path to the docker-compose file\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">VITE_INCLUDE_CREDENTIALS\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">false\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Set to true if FastAPI authentication is enabled\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">INDEXERUI_PORT\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">8060\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Port for the Indexer UI (default: 3042)\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">INDEXERUI_URL\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\">http://X.X.X.X:INDEXERUI_PORT\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C5E478;--1:#3B61B0\">VITE_API_BASE_URL\u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">=\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#984E4D\">http://X.X.X.X:APP_PORT\u003C/span>\u003Cspan style=\"--0:#D9F5DD;--1:#111111\">'\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"INDEXERUI_COMPOSE_FILE=extern/indexer-ui/docker-compose.yaml # Path to the docker-compose fileVITE_INCLUDE_CREDENTIALS=false # Set to true if FastAPI authentication is enabledINDEXERUI_PORT=8060 # Port for the Indexer UI (default: 3042)INDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT'VITE_API_BASE_URL='http://X.X.X.X:APP_PORT'\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>",{"headings":347,"localImagePaths":357,"remoteImagePaths":358,"frontmatter":359,"imagePaths":360},[348,351,354],{"depth":71,"slug":349,"text":350},"configuring-the-indexer-ui","Configuring the Indexer UI",{"depth":159,"slug":352,"text":353},"1-download-the-indexer-ui-submodule","1. Download the indexer-ui Submodule",{"depth":159,"slug":355,"text":356},"2-set-environment-variables","2. Set Environment Variables",[],[],{"title":337},[],"documentation/setup_vpn",{"id":361,"data":363,"body":368,"filePath":369,"digest":370,"rendered":371},{"title":364,"editUrl":22,"head":365,"template":50,"sidebar":366,"pagefind":22,"draft":14},"🌐 VPN Setup for Remote Machines with WireGuard",[],{"hidden":14,"attrs":367},{},"This guide helps you securely connect your remote machines using **WireGuard VPN**, allowing you to share files (NFS, etc.) as if they were on the same private network.\n\n---\n\n## 1️⃣ Install WireGuard on all machines\n\nRun the following on **each machine** (server and clients):\n\n```bash\nsudo apt update\nsudo apt install -y wireguard\n```\n\n---\n\n## 2️⃣ Configure the VPN Server (Main machine `X.X.X.X`)\n\nCreate the configuration file:\n\n```bash\nsudo nano /etc/wireguard/wg0.conf\n```\n\nPaste the following:\n\n```ini\n// /etc/wireguard/wg0.conf\n...\n[Interface]\nAddress = 10.0.0.1/24\nPrivateKey = \u003CSERVER_PRIVATE_KEY>\nListenPort = 51820\n\n# Allow forwarding and NAT\nPostUp = sysctl -w net.ipv4.ip_forward=1\nPostUp = iptables -A FORWARD -i wg0 -j ACCEPT\nPostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\nPostDown = iptables -D FORWARD -i wg0 -j ACCEPT\nPostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE\n\n[Peer]\n# Client machine\nPublicKey = \u003CCLIENT_PUBLIC_KEY>\nAllowedIPs = 10.0.0.2/32\n```\n\n---\n\n## 3️⃣ Configure the VPN Client (Other machine `X.X.X.X`)\n\nCreate the configuration file:\n\n```bash\nsudo nano /etc/wireguard/wg0.conf\n```\n\nPaste the following:\n\n```ini\n// /etc/wireguard/wg0.conf\n...\n[Interface]\nAddress = 10.0.0.2/24\nPrivateKey = \u003CCLIENT_PRIVATE_KEY>\n\n[Peer]\n# VPN Server\nPublicKey = \u003CSERVER_PUBLIC_KEY>\nEndpoint = X.X.X.X:51820 # Replace with your VPN server IP\nAllowedIPs = 10.0.0.0/24\nPersistentKeepalive = 25\n```\n\n---\n\n## 🔑 Generate Keys on Each Machine\n\nOn **each machine**, run:\n\n```bash\nwg genkey | tee privatekey | wg pubkey > publickey\n```\n\nUse the generated keys in your configurations:\n- `privatekey` → `\u003CPRIVATE_KEY>`\n- `publickey` → to give to the peer\n\n---\n\n## 🚀 Start and Enable VPN on Both Machines\n\nTo start the VPN connection:\n```bash\nsudo wg-quick up wg0\n```\n\nTo enable the VPN automatically on boot:\n```bash\nsudo systemctl enable wg-quick@wg0\n```\n\n---\n\n## ✅ Verification\n\nTest the VPN connection:\n- From **client**:\n ```bash\n ping 10.0.0.1\n ```\n- From **server**:\n ```bash\n ping 10.0.0.2\n ```\n\n---\n\n:::caution\n- After the VPN is up, you can configure services like **NFS** using the **10.0.0.0/24 private network**.\n- Make sure your firewall allows `UDP 51820`.\n- Adjust the `AllowedIPs` and network according to your needs.\n:::","src/content/docs/documentation/setup_vpn.md","80f5aceb0ccb932f",{"html":372,"metadata":373},"\u003Cp>This guide helps you securely connect your remote machines using \u003Cstrong>WireGuard VPN\u003C/strong>, allowing you to share files (NFS, etc.) as if they were on the same private network.\u003C/p>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"1️⃣-install-wireguard-on-all-machines\">1️⃣ Install WireGuard on all machines\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#1️⃣-install-wireguard-on-all-machines\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “1️⃣ Install WireGuard on all machines”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Run the following on \u003Cstrong>each machine\u003C/strong> (server and clients):\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Clink rel=\"stylesheet\" href=\"/_astro/ec.v4551.css\">\u003Cscript type=\"module\" src=\"/_astro/ec.p1z7b.js\">\u003C/script>\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">update\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">apt\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">install\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">-y\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wireguard\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo apt updatesudo apt install -y wireguard\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"2️⃣-configure-the-vpn-server-main-machine-xxxx\">2️⃣ Configure the VPN Server (Main machine \u003Ccode dir=\"auto\">X.X.X.X\u003C/code>)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#2️⃣-configure-the-vpn-server-main-machine-xxxx\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “2️⃣ Configure the VPN Server (Main machine X.X.X.X)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Create the configuration file:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">nano\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/etc/wireguard/wg0.conf\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo nano /etc/wireguard/wg0.conf\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Paste the following:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">/etc/wireguard/wg0.conf\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"ini\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">...\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Interface]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">Address\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.1/24\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PrivateKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <SERVER_PRIVATE_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">ListenPort\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 51820\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Allow forwarding and NAT\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostUp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = sysctl -w \u003C/span>\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">net.ipv4.ip_forward\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">=1\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostUp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -A FORWARD -i wg0 -j ACCEPT\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostUp\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostDown\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -D FORWARD -i wg0 -j ACCEPT\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PostDown\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Peer]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Client machine\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PublicKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <CLIENT_PUBLIC_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">AllowedIPs\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.2/32\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"...[Interface]Address = 10.0.0.1/24PrivateKey = \u003CSERVER_PRIVATE_KEY>ListenPort = 51820# Allow forwarding and NATPostUp = sysctl -w net.ipv4.ip_forward=1PostUp = iptables -A FORWARD -i wg0 -j ACCEPTPostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEPostDown = iptables -D FORWARD -i wg0 -j ACCEPTPostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE[Peer]# Client machinePublicKey = \u003CCLIENT_PUBLIC_KEY>AllowedIPs = 10.0.0.2/32\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"3️⃣-configure-the-vpn-client-other-machine-xxxx\">3️⃣ Configure the VPN Client (Other machine \u003Ccode dir=\"auto\">X.X.X.X\u003C/code>)\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#3️⃣-configure-the-vpn-client-other-machine-xxxx\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “3️⃣ Configure the VPN Client (Other machine X.X.X.X)”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Create the configuration file:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">nano\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">/etc/wireguard/wg0.conf\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo nano /etc/wireguard/wg0.conf\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Paste the following:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame has-title not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">/etc/wireguard/wg0.conf\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"ini\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">...\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Interface]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">Address\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.2/24\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PrivateKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <CLIENT_PRIVATE_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\n\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\">[Peer]\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># VPN Server\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PublicKey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = <SERVER_PUBLIC_KEY>\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">Endpoint\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = X.X.X.X:51820 \u003C/span>\u003Cspan style=\"--0:#919F9F;--1:#5F636F\"># Replace with your VPN server IP\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">AllowedIPs\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 10.0.0.0/24\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#C792EA;--1:#8844AE\">PersistentKeepalive\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> = 25\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"...[Interface]Address = 10.0.0.2/24PrivateKey = \u003CCLIENT_PRIVATE_KEY>[Peer]# VPN ServerPublicKey = \u003CSERVER_PUBLIC_KEY>Endpoint = X.X.X.X:51820 # Replace with your VPN server IPAllowedIPs = 10.0.0.0/24PersistentKeepalive = 25\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-generate-keys-on-each-machine\">🔑 Generate Keys on Each Machine\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-generate-keys-on-each-machine\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🔑 Generate Keys on Each Machine”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>On \u003Cstrong>each machine\u003C/strong>, run:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">wg\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">genkey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">|\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">tee\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">privatekey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">|\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">wg\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">pubkey\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#7FDBCA;--1:#096E72\">>\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">publickey\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"wg genkey | tee privatekey | wg pubkey > publickey\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>Use the generated keys in your configurations:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode dir=\"auto\">privatekey\u003C/code> → \u003Ccode dir=\"auto\"><PRIVATE_KEY>\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode dir=\"auto\">publickey\u003C/code> → to give to the peer\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-start-and-enable-vpn-on-both-machines\">🚀 Start and Enable VPN on Both Machines\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-start-and-enable-vpn-on-both-machines\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “🚀 Start and Enable VPN on Both Machines”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>To start the VPN connection:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wg-quick\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">up\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wg0\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo wg-quick up wg0\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Cp>To enable the VPN automatically on boot:\u003C/p>\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">sudo\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">systemctl\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">enable\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#ECC48D;--1:#3B61B0\">wg-quick@wg0\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"sudo systemctl enable wg-quick@wg0\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003Chr>\n\u003Cdiv class=\"sl-heading-wrapper level-h2\">\u003Ch2 id=\"-verification\">✅ Verification\u003C/h2>\u003Ca class=\"sl-anchor-link\" href=\"#-verification\">\u003Cspan aria-hidden=\"true\" class=\"sl-anchor-icon\">\u003Csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\u003Cpath fill=\"currentcolor\" d=\"m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z\">\u003C/path>\u003C/svg>\u003C/span>\u003Cspan class=\"sr-only\">Section titled “✅ Verification”\u003C/span>\u003C/a>\u003C/div>\n\u003Cp>Test the VPN connection:\u003C/p>\n\u003Cul>\n\u003Cli>From \u003Cstrong>client\u003C/strong>:\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">ping\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.1\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"ping 10.0.0.1\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003C/li>\n\u003Cli>From \u003Cstrong>server\u003C/strong>:\n\u003Cdiv class=\"expressive-code\">\u003Cfigure class=\"frame is-terminal not-content\">\u003Cfigcaption class=\"header\">\u003Cspan class=\"title\">\u003C/span>\u003Cspan class=\"sr-only\">Terminal window\u003C/span>\u003C/figcaption>\u003Cpre data-language=\"bash\">\u003Ccode>\u003Cdiv class=\"ec-line\">\u003Cdiv class=\"code\">\u003Cspan style=\"--0:#82AAFF;--1:#3B61B0\">ping\u003C/span>\u003Cspan style=\"--0:#D6DEEB;--1:#403F53\"> \u003C/span>\u003Cspan style=\"--0:#F78C6C;--1:#AA0982\">10.0.0.2\u003C/span>\u003C/div>\u003C/div>\u003C/code>\u003C/pre>\u003Cdiv class=\"copy\">\u003Cbutton title=\"Copy to clipboard\" data-copied=\"Copied!\" data-code=\"ping 10.0.0.2\">\u003Cdiv>\u003C/div>\u003C/button>\u003C/div>\u003C/figure>\u003C/div>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Caside aria-label=\"Caution\" class=\"starlight-aside starlight-aside--caution\">\u003Cp class=\"starlight-aside__title\" aria-hidden=\"true\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"starlight-aside__icon\">\u003Cpath d=\"M12 16C11.8022 16 11.6089 16.0587 11.4444 16.1686C11.28 16.2784 11.1518 16.4346 11.0761 16.6173C11.0004 16.8001 10.9806 17.0011 11.0192 17.1951C11.0578 17.3891 11.153 17.5673 11.2929 17.7071C11.4327 17.847 11.6109 17.9422 11.8049 17.9808C11.9989 18.0194 12.2 17.9996 12.3827 17.9239C12.5654 17.8482 12.7216 17.72 12.8315 17.5556C12.9413 17.3911 13 17.1978 13 17C13 16.7348 12.8946 16.4805 12.7071 16.2929C12.5196 16.1054 12.2652 16 12 16ZM22.67 17.47L14.62 3.47003C14.3598 3.00354 13.9798 2.61498 13.5192 2.3445C13.0586 2.07401 12.5341 1.9314 12 1.9314C11.4659 1.9314 10.9414 2.07401 10.4808 2.3445C10.0202 2.61498 9.64019 3.00354 9.38 3.47003L1.38 17.47C1.11079 17.924 0.966141 18.441 0.960643 18.9688C0.955144 19.4966 1.089 20.0166 1.34868 20.4761C1.60837 20.9356 1.9847 21.3185 2.43968 21.5861C2.89466 21.8536 3.41218 21.9964 3.94 22H20.06C20.5921 22.0053 21.1159 21.8689 21.5779 21.6049C22.0399 21.341 22.4234 20.9589 22.689 20.4978C22.9546 20.0368 23.0928 19.5134 23.0895 18.9814C23.0862 18.4493 22.9414 17.9277 22.67 17.47ZM20.94 19.47C20.8523 19.626 20.7245 19.7556 20.5697 19.8453C20.4149 19.935 20.2389 19.9815 20.06 19.98H3.94C3.76111 19.9815 3.5851 19.935 3.43032 19.8453C3.27553 19.7556 3.14765 19.626 3.06 19.47C2.97223 19.318 2.92602 19.1456 2.92602 18.97C2.92602 18.7945 2.97223 18.622 3.06 18.47L11.06 4.47003C11.1439 4.30623 11.2714 4.16876 11.4284 4.07277C11.5855 3.97678 11.766 3.92599 11.95 3.92599C12.134 3.92599 12.3145 3.97678 12.4716 4.07277C12.6286 4.16876 12.7561 4.30623 12.84 4.47003L20.89 18.47C20.9892 18.6199 21.0462 18.7937 21.055 18.9732C21.0638 19.1527 21.0241 19.3312 20.94 19.49V19.47ZM12 8.00003C11.7348 8.00003 11.4804 8.10538 11.2929 8.29292C11.1054 8.48046 11 8.73481 11 9.00003V13C11 13.2652 11.1054 13.5196 11.2929 13.7071C11.4804 13.8947 11.7348 14 12 14C12.2652 14 12.5196 13.8947 12.7071 13.7071C12.8946 13.5196 13 13.2652 13 13V9.00003C13 8.73481 12.8946 8.48046 12.7071 8.29292C12.5196 8.10538 12.2652 8.00003 12 8.00003Z\">\u003C/path>\u003C/svg>Caution\u003C/p>\u003Cdiv class=\"starlight-aside__content\">\u003Cul>\n\u003Cli>After the VPN is up, you can configure services like \u003Cstrong>NFS\u003C/strong> using the \u003Cstrong>10.0.0.0/24 private network\u003C/strong>.\u003C/li>\n\u003Cli>Make sure your firewall allows \u003Ccode dir=\"auto\">UDP 51820\u003C/code>.\u003C/li>\n\u003Cli>Adjust the \u003Ccode dir=\"auto\">AllowedIPs\u003C/code> and network according to your needs.\u003C/li>\n\u003C/ul>\u003C/div>\u003C/aside>",{"headings":374,"localImagePaths":393,"remoteImagePaths":394,"frontmatter":395,"imagePaths":396},[375,378,381,384,387,390],{"depth":71,"slug":376,"text":377},"1️⃣-install-wireguard-on-all-machines","1️⃣ Install WireGuard on all machines",{"depth":71,"slug":379,"text":380},"2️⃣-configure-the-vpn-server-main-machine-xxxx","2️⃣ Configure the VPN Server (Main machine X.X.X.X)",{"depth":71,"slug":382,"text":383},"3️⃣-configure-the-vpn-client-other-machine-xxxx","3️⃣ Configure the VPN Client (Other machine X.X.X.X)",{"depth":71,"slug":385,"text":386},"-generate-keys-on-each-machine","🔑 Generate Keys on Each Machine",{"depth":71,"slug":388,"text":389},"-start-and-enable-vpn-on-both-machines","🚀 Start and Enable VPN on Both Machines",{"depth":71,"slug":391,"text":392},"-verification","✅ Verification",[],[],{"title":364},[],"documentation/api",{"id":397,"data":399,"body":405,"filePath":406,"digest":407,"deferredRender":22},{"title":400,"description":401,"editUrl":22,"head":402,"template":50,"sidebar":403,"pagefind":22,"draft":14},"🌟 API Documentation Overview","Use the FastAPI RAG Backend API for document-based question answering.",[],{"hidden":14,"attrs":404},{},"The FastAPI-powered backend provides a comprehensive document-based question answering system using Retrieval-Augmented Generation (RAG). The API supports semantic search, document indexing, and chat completions across multiple data partitions with full OpenAI compatibility.\n\n## 🔐 Authentication\n\nAll endpoints require authentication when **enabled** (by adding a authorization token `AUTH_TOKEN` in your **`.env`**). Include your **`AUTH_TOKEN`** in the HTTP request header:\n\n```http\nAuthorization: Bearer YOUR_AUTH_TOKEN\n```\n\nFor OpenAI-compatible endpoints, `AUTH_TOKEN` serves as the `api_key` parameter. Use a placeholder like `'sk-1234'` when authentication is disabled (necessary for when using OpenAI client).\n\n---\n\n## 📡 API Serving Modes\nThis API can be served using **Uvicorn** (default) or **Ray Serve** for distributed deployments.\n\nBy default, the backend uses `uvicorn` to serve the FastAPI app.\n\nTo enable **Ray Serve**, set the following environment variable:\n\n```bash\n// .env\nENABLE_RAY_SERVE=true\n```\n\nAdditional optional environment variables for configuring Ray Serve:\n\n```bash\n// .env\nRAY_SERVE_NUM_REPLICAS=1 # Number of deployment replicas\nRAY_SERVE_HOST=0.0.0.0 # Host address for Ray Serve HTTP proxy\nRAY_SERVE_PORT=8080 # Port for Ray Serve HTTP proxy\n```\n\nWhen using Ray Serve with a **remote cluster**, the HTTP server will be started on the **head node** of the cluster.\n\n:::caution\nWhen using Ray Serve, you must disable the **FastAPI `exception handler`** by setting `DISABLE_EXCEPTION_HANDLER=true` in your environment variables. Ray Serve is currently incompatible with FastAPI's exception handling middleware. Additionally, the Chainlit UI is disabled when using Ray Serve deployment.\n:::\n\n## 🚀 API Endpoints\n### ℹ️ System Health\nVerify server status and availability.\n```http\nGET /health_check\n```\n\n---\n\n### 📦 Document Indexing\n\n#### Upload New File\n```http\nPOST /indexer/partition/{partition}/file/{file_id}\n```\n\nUpload a new file to a specific partition for indexing.\n\n**Parameters:**\n- `partition` (path): Target partition name\n- `file_id` (path): Unique identifier for the file\n\n**Request Body (form-data):**\n- `file` (binary): File to upload\n- `metadata` (JSON string): File metadata (e.g., `{\"owner\": \"user1\"}`)\n\n**Responses:**\n- `201 Created`: Returns task status URL\n- `409 Conflict`: File already exists in partition\n\n#### Replace Existing File\n```http\nPUT /indexer/partition/{partition}/file/{file_id}\n```\n\nReplace an existing file in the partition. Deletes the current entry and creates a new indexing task.\n\n**Parameters:** Same as POST endpoint\n**Request Body:** Same as POST endpoint\n**Response:** `202 Accepted` with task status URL\n\n#### Update File Metadata\n```http\nPATCH /indexer/partition/{partition}/file/{file_id}\n```\n\nUpdate file metadata without reindexing the document.\n\n**Request Body (form-data):**\n- `metadata` (JSON string): Updated metadata\n\n**Response:** `200 OK` on successful update\n\n#### Delete File\n```http\nDELETE /indexer/partition/{partition}/file/{file_id}\n```\n\nRemove a file from the specified partition.\n\n**Responses:**\n- `204 No Content`: Successfully deleted\n- `404 Not Found`: File not found in partition\n\n#### Check Indexing Status\n```http\nGET /indexer/task/{task_id}\n```\n\nMonitor the progress of an asynchronous indexing task.\n\n**Response:** Task status information\n\n---\n\n#### See logs of a given task\n```http\nGET /indexer/task/{task_id}/logs\n```\n\n#### Get error details of a failed task \n```http\nGET /indexer/task/{task_id}/error\n```\n\n\n### 🔍 Semantic Search\n\n#### Search Across Multiple Partitions\n```http\nGET /search/\n```\n\nPerform semantic search across specified partitions.\n\n**Query Parameters:**\n- `partitions` (optional): List of partition names (default: `[\"all\"]`)\n- `text` (required): Search query text\n- `top_k` (optional): Number of results to return (default: `5`)\n\n**Responses:**\n- `200 OK`: JSON list of document links (HATEOAS format)\n- `400 Bad Request`: Invalid partitions parameter\n\n#### Search Within Single Partition\n```http\nGET /search/partition/{partition}\n```\n\nSearch within a specific partition only.\n\n**Query Parameters:**\n- `text` (required): Search query text\n- `top_k` (optional): Number of results (default: `5`)\n\n**Response:** Same as multi-partition search\n\n#### Search Within Specific File\n```http\nGET /search/partition/{partition}/file/{file_id}\n```\n\nSearch within a particular file in a partition.\n\n**Query Parameters:** Same as partition search\n**Response:** Same as other search endpoints\n\n---\n\n### 📄 Document Extraction\n\n#### Get Extract Details\n```http\nGET /extract/{extract_id}\n```\n\nRetrieve specific document extract (chunk) by ID.\n\n**Response:** JSON containing extract content and metadata\n\n---\n\n### 💬 OpenAI-Compatible Chat\n\nThese endpoints provide full OpenAI API compatibility for seamless integration with existing tools and workflows. For detailed example of openai usage [see this section](#openai-client-integration)\n\n* List Available Models\n```http\nGET /v1/models\n```\n\nList all available RAG models (partitions).\n\n**Model Naming Convention:**\n- Pattern: `openrag-{partition_name}` => This model allows to chat specifically with the partition `{partition_name}`\n- Special model: `partition-all` (queries entire vector database)\n\n* Chat Completions\n```http\nPOST /v1/chat/completions\n```\n\nOpenAI-compatible chat completion using **`RAG` pipeline**.\n\n**Request Body:**\n```bash frame=\"none\" title=\"Testing the openai OpenRAG chat completions endpoint with curl\"\ncurl -X POST http://localhost:8080/v1/chat/completions \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer YOUR_AUTH_TOKEN\" \\\n -d '{\n \"model\": \"openrag-{partition_name}\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Your question here\"\n }\n ],\n \"temperature\": 0.7,\n \"stream\": false\n }'\n```\n\n* Text Completions\n```http\nPOST /v1/completions\n```\n\nOpenAI-compatible text completion endpoint.\n\n## 💡 Usage Examples\n\n### Bulk File Indexing\n\nFor indexing multiple files programmatically, you can use this script [`data_indexer.py`](../utility/data_indexer.py) utility script in the [`📁 utility`](../utility/) folder or simply use **`indexer ui`**.\n\n### OpenAI Client Integration\n\n```python {9-10}\nfrom openai import OpenAI, AsyncOpenAI\n\napi_base_url = \"http://localhost:8080\" # fastapi base url of 'openrag'\nbase_url = f\"{api_base_url}/v1\"\n\nauth_key = ... # your api authentification key AUTH_TOKEN in your .env. Is authentification is disabled, use a placeholder like 'sk-1234'\nclient = OpenAI(api_key=auth_key, base_url=base_url)\n\nyour_partition= 'my_partition' # name of your partition\nmodel = f\"openrag-{your_partition}\"\nsettings = {\n 'model': model,\n 'temperature': 0.3,\n 'stream': False\n}\n\nresponse = client.chat.completions.create(\n **settings,\n messages=[\n {\"role\": \"user\", \"content\": \"What information do you have about...?\"}\n ]\n)\n```\n\n---\n\n## ⚠️ Error Handling\n\nThe API uses standard HTTP status codes:\n\n- `200 OK`: Successful request\n- `201 Created`: Resource created successfully\n- `202 Accepted`: Request accepted for processing\n- `204 No Content`: Successful deletion\n- `400 Bad Request`: Invalid request parameters\n- `404 Not Found`: Resource not found\n- `409 Conflict`: Resource already exists\n\nError responses include detailed JSON messages to help with debugging and integration.","src/content/docs/documentation/API.mdx","814bf13e5dc88f0e"] \ No newline at end of file diff --git a/.astro/settings.json b/.astro/settings.json deleted file mode 100644 index f8398da4a..000000000 --- a/.astro/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "_variables": { - "lastUpdateCheck": 1759148335699 - } -} \ No newline at end of file diff --git a/.astro/types.d.ts b/.astro/types.d.ts deleted file mode 100644 index 03d7cc43f..000000000 --- a/.astro/types.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// -/// \ No newline at end of file From c14781f0f6222b0748c53ff4ed165bc3df63484c Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Mon, 6 Oct 2025 07:40:17 +0000 Subject: [PATCH 034/126] update gitignore --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index 9fc893f70..35252f665 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,8 @@ services/* #helm charts/openrag-stack/charts/*.tgz + +# Astro / Starlight +.astro/ +dist/ +node_modules/ \ No newline at end of file From 47c743c9edf5fd6fe8b5d34c2f426c3ef5d8e69f Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Mon, 6 Oct 2025 10:30:15 +0200 Subject: [PATCH 035/126] Add backup/restore all partitions to README-backup.md --- README-backup.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/README-backup.md b/README-backup.md index 7b40be398..944ef3921 100644 --- a/README-backup.md +++ b/README-backup.md @@ -1,7 +1,6 @@ # How to backup OpenRag partition ? - ``` docker compose \ run \ @@ -25,6 +24,15 @@ docker compose \ openrag-cpu ``` +## Backup all partitions + +```bash +docker compose run --build --rm \ + -v ~/backup:/backup:rw \ + --entrypoint "uv run /app/openrag/scripts/backup.py -o /backup/test.openrag" \ + openrag +# Use --include-only to specify the partitions to back up. +``` # How to restore OpenRag partition ? @@ -51,6 +59,16 @@ docker compose \ openrag-cpu ``` +## Restore all partitions + +```bash +docker compose run --build --rm \ + -v ~/backup:/backup:rw \ + --entrypoint "uv run /app/openrag/scripts/restore.py -i /backup/test.openrag" \ + openrag +# Use --include-only to specify the partitions to restore. +``` + # Backup dump format Backups are stored in plain text, with optional xz compression. A backup file consists of multiple sections separated by an empty line. From e56f305558241abe00510333be78e00162f17dbb Mon Sep 17 00:00:00 2001 From: Paul Tran-Van Date: Mon, 6 Oct 2025 10:43:24 +0200 Subject: [PATCH 036/126] chore: Restart vllm only on failure The "always" restart option makes the container systematically restart, even at machine reboot. This is not ideal for developers, especially since vllm is quite hungry for ressources --- docker-compose.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index e46b63024..140702e22 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -32,7 +32,7 @@ x-vllm: &vllm_template default: aliases: - vllm - restart: always + restart: on-failure environment: - HUGGING_FACE_HUB_TOKEN ipc: "host" @@ -130,4 +130,4 @@ services: # For details see https://github.com/vllm-project/vllm/issues/21179 profiles: - - 'cpu' \ No newline at end of file + - 'cpu' From 0fff0a0a9156c735226de4b9e6b62d7ce47b3f1a Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Mon, 6 Oct 2025 13:13:49 +0000 Subject: [PATCH 037/126] file not needed anymore --- docs/features_in_details.md | 46 ------------------------------------- 1 file changed, 46 deletions(-) delete mode 100644 docs/features_in_details.md diff --git a/docs/features_in_details.md b/docs/features_in_details.md deleted file mode 100644 index 911fdc301..000000000 --- a/docs/features_in_details.md +++ /dev/null @@ -1,46 +0,0 @@ -## ✨ Key Features -This section provides a detailed explanation of the currently supported features. - -The **`.hydra_config`** directory contains all the configuration files for the application. These configurations are structured using the [Hydra configuration framework](https://hydra.cc/docs/intro/). This directory will be referenced for setting up the RAG (Retrieval-Augmented Generation) pipeline. - -### Supported File formats -This branch currently supports the following file types: - -* **TextFiles**: `txt`, `md` -* **Document Files**: `pdf`, `docx`, `doc`, `pptx` -* **Audio Files**: `wav`, `mp3`, `mp4`, `ogg`, `flv`, `wma`, `aac` -* **Images**: `png:, jpeg, jpg, svg` - -Files are converted tp **Markdown**, with images replaced by captions generated by a **Vision Language Model (VLM)**. (Refer to the **Configuration** section for additional details.) The final Markdown output is then split into chunks and indexed in the [Milvus vector database](https://milvus.io/). - -> [!NOTE] -> **Upcoming Support**: Future releases will expand compatibility to include additional formats such as `csv`, `odt`, `html`, and other widely used open-source document types. - -### Chunking -Multiple [chunking strategies](./.hydra_config/chunker) are supported: **`semantic`, `markdown`, and `recursive`** chunking. Files are converted to markdown and the **same chunker** is used for all types. Format-specific chunkers (e.g., for CSV, HTML) will be added later. - -```yml -# .hydra_config/chunker/markdown_splitter.yaml -defaults: - - base -name: markdown_splitter -chunk_size: 512 -chunk_overlap: 100 -``` - -The **`chunk_size`** and **`chunk_overlap`** values are expressed in **tokens**, not characters. For enhanced retrieval, enable the **contextual retrieval** — a technique introduced by Anthropic to improve retrieval performance ([Contextual Retrieval](https://www.anthropic.com/news/contextual-retrieval)). - -### Indexing -Chunks are stored in the **Milvus** vector database using the `Qwen/Qwen3-Embedding-0.6B` embedder via VLLM. To explore alternatives, check the [MTEB benchmark](https://huggingface.co/spaces/mteb/leaderboard). - -> \[!IMPORTANT] -> Use an embedding model suited to your document languages and context window needs. The default model supports English and French. - - -### Document Retrieval & Reranking -* Search Pipeline: We use a **hybrid search** combining **semantic search** and **BM25** keyword matching for broader coverage. Results are merged and ranked with [Reciprocal Rank Fusion (RRF)](https://milvus.io/docs/reranking.md) for optimal relevance. - -> \[!IMPORTANT] -> Semantic similarity doesn't always mean relevance. Rerankers help refine results and reduce hallucinations by prioritizing the most relevant documents. - -* *Reranker: Documents are then reranked using the multilingual reranker **`Alibaba-NLP/gte-multilingual-reranker-base`** model from Hugging Face. From d75f7e2ad8eb570912b521064fe3b697c40c8bd8 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Mon, 6 Oct 2025 13:15:28 +0000 Subject: [PATCH 038/126] renaming src => docs --- astro.config.mjs | 7 ++++--- {src => docs}/assets/OpenRAG-title.svg | 0 {src => docs}/assets/RAG_architecture.png | Bin {src => docs}/assets/compose_linux_gpu.yaml | 0 {src => docs}/assets/compose_ollama_cpu.yaml | 0 {src => docs}/assets/env_linux_gpu.env | 0 {src => docs}/assets/env_ollama_cpu.env | 0 {src => docs}/content.config.ts | 0 {src => docs}/content/docs/404.md | 0 {src => docs}/content/docs/documentation/API.mdx | 0 .../docs/documentation/chainlit_data_persistency.md | 0 .../docs/documentation/deploy_ray_cluster.md | 0 .../docs/documentation/features_in_details.md | 0 .../content/docs/documentation/kubernetes.md | 0 .../docs/documentation/setup_chainlit_ui_auth.md | 0 .../content/docs/documentation/setup_glusterfs.md | 0 .../content/docs/documentation/setup_indexerui.md | 0 .../content/docs/documentation/setup_vpn.md | 0 .../content/docs/getting_started/quickstart.mdx | 8 ++++---- .../content/docs/getting_started/usage.mdx | 0 {src => docs}/content/docs/index.mdx | 2 +- .../content/docs/installation/ansible_setup.mdx | 0 {src => docs}/content/docs/installation/docker.mdx | 0 {src => docs}/content/docs/license.mdx | 0 .../content/docs/minimum-specifications.md | 0 .../content/docs/support-and-contribute.mdx | 0 {src => docs}/styles/custom.css | 0 {src => docs}/styles/global.css | 0 28 files changed, 9 insertions(+), 8 deletions(-) rename {src => docs}/assets/OpenRAG-title.svg (100%) rename {src => docs}/assets/RAG_architecture.png (100%) rename {src => docs}/assets/compose_linux_gpu.yaml (100%) rename {src => docs}/assets/compose_ollama_cpu.yaml (100%) rename {src => docs}/assets/env_linux_gpu.env (100%) rename {src => docs}/assets/env_ollama_cpu.env (100%) rename {src => docs}/content.config.ts (100%) rename {src => docs}/content/docs/404.md (100%) rename {src => docs}/content/docs/documentation/API.mdx (100%) rename {src => docs}/content/docs/documentation/chainlit_data_persistency.md (100%) rename {src => docs}/content/docs/documentation/deploy_ray_cluster.md (100%) rename {src => docs}/content/docs/documentation/features_in_details.md (100%) rename {src => docs}/content/docs/documentation/kubernetes.md (100%) rename {src => docs}/content/docs/documentation/setup_chainlit_ui_auth.md (100%) rename {src => docs}/content/docs/documentation/setup_glusterfs.md (100%) rename {src => docs}/content/docs/documentation/setup_indexerui.md (100%) rename {src => docs}/content/docs/documentation/setup_vpn.md (100%) rename {src => docs}/content/docs/getting_started/quickstart.mdx (88%) rename {src => docs}/content/docs/getting_started/usage.mdx (100%) rename {src => docs}/content/docs/index.mdx (95%) rename {src => docs}/content/docs/installation/ansible_setup.mdx (100%) rename {src => docs}/content/docs/installation/docker.mdx (100%) rename {src => docs}/content/docs/license.mdx (100%) rename {src => docs}/content/docs/minimum-specifications.md (100%) rename {src => docs}/content/docs/support-and-contribute.mdx (100%) rename {src => docs}/styles/custom.css (100%) rename {src => docs}/styles/global.css (100%) diff --git a/astro.config.mjs b/astro.config.mjs index 28822fbb0..5e9a2c8a3 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -5,16 +5,17 @@ import tailwindcss from '@tailwindcss/vite'; // https://astro.build/config export default defineConfig({ + srcDir: './docs', integrations: [ starlight({ title: 'Docs', customCss:[ - './src/styles/global.css', - './src/styles/custom.css', + './docs/styles/global.css', + './docs/styles/custom.css', '@fontsource-variable/space-grotesk', ], logo: { - src: './src/assets/OpenRAG-title.svg', + src: './docs/assets/OpenRAG-title.svg', }, editLink:{ baseUrl: 'https://github.com/linagora/openrag/edit/main', diff --git a/src/assets/OpenRAG-title.svg b/docs/assets/OpenRAG-title.svg similarity index 100% rename from src/assets/OpenRAG-title.svg rename to docs/assets/OpenRAG-title.svg diff --git a/src/assets/RAG_architecture.png b/docs/assets/RAG_architecture.png similarity index 100% rename from src/assets/RAG_architecture.png rename to docs/assets/RAG_architecture.png diff --git a/src/assets/compose_linux_gpu.yaml b/docs/assets/compose_linux_gpu.yaml similarity index 100% rename from src/assets/compose_linux_gpu.yaml rename to docs/assets/compose_linux_gpu.yaml diff --git a/src/assets/compose_ollama_cpu.yaml b/docs/assets/compose_ollama_cpu.yaml similarity index 100% rename from src/assets/compose_ollama_cpu.yaml rename to docs/assets/compose_ollama_cpu.yaml diff --git a/src/assets/env_linux_gpu.env b/docs/assets/env_linux_gpu.env similarity index 100% rename from src/assets/env_linux_gpu.env rename to docs/assets/env_linux_gpu.env diff --git a/src/assets/env_ollama_cpu.env b/docs/assets/env_ollama_cpu.env similarity index 100% rename from src/assets/env_ollama_cpu.env rename to docs/assets/env_ollama_cpu.env diff --git a/src/content.config.ts b/docs/content.config.ts similarity index 100% rename from src/content.config.ts rename to docs/content.config.ts diff --git a/src/content/docs/404.md b/docs/content/docs/404.md similarity index 100% rename from src/content/docs/404.md rename to docs/content/docs/404.md diff --git a/src/content/docs/documentation/API.mdx b/docs/content/docs/documentation/API.mdx similarity index 100% rename from src/content/docs/documentation/API.mdx rename to docs/content/docs/documentation/API.mdx diff --git a/src/content/docs/documentation/chainlit_data_persistency.md b/docs/content/docs/documentation/chainlit_data_persistency.md similarity index 100% rename from src/content/docs/documentation/chainlit_data_persistency.md rename to docs/content/docs/documentation/chainlit_data_persistency.md diff --git a/src/content/docs/documentation/deploy_ray_cluster.md b/docs/content/docs/documentation/deploy_ray_cluster.md similarity index 100% rename from src/content/docs/documentation/deploy_ray_cluster.md rename to docs/content/docs/documentation/deploy_ray_cluster.md diff --git a/src/content/docs/documentation/features_in_details.md b/docs/content/docs/documentation/features_in_details.md similarity index 100% rename from src/content/docs/documentation/features_in_details.md rename to docs/content/docs/documentation/features_in_details.md diff --git a/src/content/docs/documentation/kubernetes.md b/docs/content/docs/documentation/kubernetes.md similarity index 100% rename from src/content/docs/documentation/kubernetes.md rename to docs/content/docs/documentation/kubernetes.md diff --git a/src/content/docs/documentation/setup_chainlit_ui_auth.md b/docs/content/docs/documentation/setup_chainlit_ui_auth.md similarity index 100% rename from src/content/docs/documentation/setup_chainlit_ui_auth.md rename to docs/content/docs/documentation/setup_chainlit_ui_auth.md diff --git a/src/content/docs/documentation/setup_glusterfs.md b/docs/content/docs/documentation/setup_glusterfs.md similarity index 100% rename from src/content/docs/documentation/setup_glusterfs.md rename to docs/content/docs/documentation/setup_glusterfs.md diff --git a/src/content/docs/documentation/setup_indexerui.md b/docs/content/docs/documentation/setup_indexerui.md similarity index 100% rename from src/content/docs/documentation/setup_indexerui.md rename to docs/content/docs/documentation/setup_indexerui.md diff --git a/src/content/docs/documentation/setup_vpn.md b/docs/content/docs/documentation/setup_vpn.md similarity index 100% rename from src/content/docs/documentation/setup_vpn.md rename to docs/content/docs/documentation/setup_vpn.md diff --git a/src/content/docs/getting_started/quickstart.mdx b/docs/content/docs/getting_started/quickstart.mdx similarity index 88% rename from src/content/docs/getting_started/quickstart.mdx rename to docs/content/docs/getting_started/quickstart.mdx index 121952b1d..3075ac9c7 100644 --- a/src/content/docs/getting_started/quickstart.mdx +++ b/docs/content/docs/getting_started/quickstart.mdx @@ -3,10 +3,10 @@ title: Quick Start --- import { Tabs, TabItem, Code } from '@astrojs/starlight/components'; -import compose_ollama_cpu from '/src/assets/compose_ollama_cpu.yaml?raw'; -import env_ollama_cpu from '/src/assets/env_ollama_cpu.env?raw'; -import compose_linux_gpu from '/src/assets/compose_linux_gpu.yaml?raw'; -import env_linux_gpu from '/src/assets/env_linux_gpu.env?raw'; +import compose_ollama_cpu from '../../../assets/compose_ollama_cpu.yaml?raw'; +import env_ollama_cpu from '../../../assets/env_ollama_cpu.env?raw'; +import compose_linux_gpu from '../../../assets/compose_linux_gpu.yaml?raw'; +import env_linux_gpu from '../../../assets/env_linux_gpu.env?raw'; OpenRAG is an open source Retrieval Augmented Generation (RAG) solution. This guide is a step-by-step walkthrough to help you get started with OpenRAG. diff --git a/src/content/docs/getting_started/usage.mdx b/docs/content/docs/getting_started/usage.mdx similarity index 100% rename from src/content/docs/getting_started/usage.mdx rename to docs/content/docs/getting_started/usage.mdx diff --git a/src/content/docs/index.mdx b/docs/content/docs/index.mdx similarity index 95% rename from src/content/docs/index.mdx rename to docs/content/docs/index.mdx index c50116d34..2543e7392 100644 --- a/src/content/docs/index.mdx +++ b/docs/content/docs/index.mdx @@ -8,7 +8,7 @@ next: false import { LinkCard, CardGrid, Card } from '@astrojs/starlight/components'; import { Image } from 'astro:assets'; -import myImage from "/src/assets/RAG_architecture.png"; +import myImage from "../../assets/RAG_architecture.png"; RAG Architecture diff --git a/src/content/docs/installation/ansible_setup.mdx b/docs/content/docs/installation/ansible_setup.mdx similarity index 100% rename from src/content/docs/installation/ansible_setup.mdx rename to docs/content/docs/installation/ansible_setup.mdx diff --git a/src/content/docs/installation/docker.mdx b/docs/content/docs/installation/docker.mdx similarity index 100% rename from src/content/docs/installation/docker.mdx rename to docs/content/docs/installation/docker.mdx diff --git a/src/content/docs/license.mdx b/docs/content/docs/license.mdx similarity index 100% rename from src/content/docs/license.mdx rename to docs/content/docs/license.mdx diff --git a/src/content/docs/minimum-specifications.md b/docs/content/docs/minimum-specifications.md similarity index 100% rename from src/content/docs/minimum-specifications.md rename to docs/content/docs/minimum-specifications.md diff --git a/src/content/docs/support-and-contribute.mdx b/docs/content/docs/support-and-contribute.mdx similarity index 100% rename from src/content/docs/support-and-contribute.mdx rename to docs/content/docs/support-and-contribute.mdx diff --git a/src/styles/custom.css b/docs/styles/custom.css similarity index 100% rename from src/styles/custom.css rename to docs/styles/custom.css diff --git a/src/styles/global.css b/docs/styles/global.css similarity index 100% rename from src/styles/global.css rename to docs/styles/global.css From 15f02a7ae4016b88a0503b0f9ba09a572a0aa709 Mon Sep 17 00:00:00 2001 From: htagourti Date: Mon, 6 Oct 2025 13:24:10 +0000 Subject: [PATCH 039/126] added token hashing --- openrag/components/indexer/vectordb/utils.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/openrag/components/indexer/vectordb/utils.py b/openrag/components/indexer/vectordb/utils.py index 1188679f2..a5b05b6c2 100644 --- a/openrag/components/indexer/vectordb/utils.py +++ b/openrag/components/indexer/vectordb/utils.py @@ -1,3 +1,4 @@ +import hashlib import os import secrets from datetime import datetime @@ -162,13 +163,14 @@ def __init__(self, database_url: str, logger=logger): def _ensure_admin_user(self, admin_token: str): if not admin_token: return + hashed_token = self.hash_token(admin_token) with self.Session() as s: - admin = s.query(User).filter_by(token=admin_token).first() + admin = s.query(User).filter_by(token=hashed_token).first() if not admin: admin = User( email="admin@example.com", display_name="Admin", - token=admin_token, + token=hashed_token, is_admin=True, ) s.add(admin) @@ -344,12 +346,13 @@ def create_user( """Create a user and generate an API token for them.""" with self.Session() as s: token = f"or-{secrets.token_hex(16)}" + hashed_token = self.hash_token(token) user = User( email=email, display_name=display_name, external_ref=external_ref, - token=token, + token=hashed_token, is_admin=is_admin, ) s.add(user) @@ -360,7 +363,7 @@ def create_user( "id": user.id, "email": user.email, "display_name": user.display_name, - "token": user.token, + "token": token, "is_admin": user.is_admin, } @@ -381,7 +384,8 @@ def list_users(self) -> list[dict]: def get_user_by_token(self, token: str) -> Optional[dict]: with self.Session() as s: - user = s.query(User).filter(User.token == token).first() + hashed_token = self.hash_token(token) + user = s.query(User).filter(User.token == hashed_token).first() if not user: return None @@ -563,3 +567,7 @@ def user_is_partition_member(self, user_id: int, partition: str) -> bool: .first() is not None ) + + def hash_token(self, token: str) -> str: + """Return a SHA-256 hash of a token string.""" + return hashlib.sha256(token.encode("utf-8")).hexdigest() From c49206c42612f83fd5c70d21f3b5390c16829b2a Mon Sep 17 00:00:00 2001 From: htagourti Date: Mon, 6 Oct 2025 13:29:00 +0000 Subject: [PATCH 040/126] fixed regenerate token --- openrag/components/indexer/vectordb/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/openrag/components/indexer/vectordb/utils.py b/openrag/components/indexer/vectordb/utils.py index a5b05b6c2..182fab165 100644 --- a/openrag/components/indexer/vectordb/utils.py +++ b/openrag/components/indexer/vectordb/utils.py @@ -442,7 +442,8 @@ def regenerate_user_token(self, user_id: int) -> dict: with self.Session() as s: user = s.query(User).filter(User.id == user_id).first() new_token = f"or-{secrets.token_hex(16)}" - user.token = new_token + hashed_token = self.hash_token(new_token) + user.token = hashed_token s.commit() s.refresh(user) @@ -450,7 +451,7 @@ def regenerate_user_token(self, user_id: int) -> dict: "id": user.id, "email": user.email, "display_name": user.display_name, - "token": user.token, + "token": new_token, "is_admin": user.is_admin, } From 39a55ff733aabc17725aa8ae0a461feac983207e Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Mon, 6 Oct 2025 14:23:32 +0000 Subject: [PATCH 041/126] only filter out empty chunks --- openrag/components/indexer/chunker/chunker.py | 45 +++++++++---------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/openrag/components/indexer/chunker/chunker.py b/openrag/components/indexer/chunker/chunker.py index 585d1b246..63a4cf2d2 100644 --- a/openrag/components/indexer/chunker/chunker.py +++ b/openrag/components/indexer/chunker/chunker.py @@ -228,14 +228,13 @@ async def split_document(self, doc: Document, task_id: str = None): filtered_chunks = [] prev_page_num = 1 for chunk, chunk_w_context in zip(chunks, chunks_w_context): - page_info = self._get_chunk_page_info( - chunk_str=chunk, previous_page=prev_page_num - ) - start_page = page_info["start_page"] - end_page = page_info["end_page"] - prev_page_num = end_page - - if len(chunk.strip()) > 10: + if len(chunk.strip()) > 0: # filter out empty chunks + page_info = self._get_chunk_page_info( + chunk_str=chunk, previous_page=prev_page_num + ) + start_page = page_info["start_page"] + end_page = page_info["end_page"] + prev_page_num = end_page filtered_chunks.append( Document( page_content=chunk_w_context, @@ -344,14 +343,13 @@ async def split_document(self, doc: Document, task_id: str = None): filtered_chunks = [] prev_page_num = 1 for chunk, chunk_w_context in zip(chunks, chunks_w_context): - page_info = self._get_chunk_page_info( - chunk_str=chunk, previous_page=prev_page_num - ) - start_page = page_info["start_page"] - end_page = page_info["end_page"] - prev_page_num = end_page - - if len(chunk.strip()) > 10: + if len(chunk.strip()) > 0: + page_info = self._get_chunk_page_info( + chunk_str=chunk, previous_page=prev_page_num + ) + start_page = page_info["start_page"] + end_page = page_info["end_page"] + prev_page_num = end_page filtered_chunks.append( Document( page_content=chunk_w_context, @@ -448,14 +446,13 @@ async def split_document(self, doc: Document, task_id: str = None): filtered_chunks = [] prev_page_num = 1 for chunk, chunk_w_context in zip(chunks, chunks_w_context): - page_info = self._get_chunk_page_info( - chunk_str=chunk, previous_page=prev_page_num - ) - start_page = page_info["start_page"] - end_page = page_info["end_page"] - prev_page_num = end_page - - if len(chunk.strip()) > 10: + if len(chunk.strip()) > 0: + page_info = self._get_chunk_page_info( + chunk_str=chunk, previous_page=prev_page_num + ) + start_page = page_info["start_page"] + end_page = page_info["end_page"] + prev_page_num = end_page filtered_chunks.append( Document( page_content=chunk_w_context, From 5d3594d0ff6dc9da0a944838812d77b97285dd5a Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Mon, 6 Oct 2025 14:27:25 +0000 Subject: [PATCH 042/126] Improve logging during document insertion --- openrag/components/indexer/indexer.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/openrag/components/indexer/indexer.py b/openrag/components/indexer/indexer.py index 2592f0bcc..c66435140 100644 --- a/openrag/components/indexer/indexer.py +++ b/openrag/components/indexer/indexer.py @@ -130,10 +130,15 @@ async def add_file( await task_state_manager.set_state.remote(task_id, "CHUNKING") chunks = await self.handle.chunk.remote(doc, str(path), task_id) - if self.enable_insertion and chunks: - await task_state_manager.set_state.remote(task_id, "INSERTING") - await self.handle.insert_documents.remote(chunks) - log.info(f"Document {path} indexed successfully") + if self.enable_insertion: + if chunks: + await task_state_manager.set_state.remote(task_id, "INSERTING") + await self.handle.insert_documents.remote(chunks) + log.info(f"Document {path} indexed successfully") + else: + log.debug( + "No chunks to insert !!! Potentially the uploaded file is empty" + ) else: log.info( f"Vectordb insertion skipped (enable_insertion={self.enable_insertion})." From c01fbb140736802096e54f8cc04057e8c2c42867 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Tue, 7 Oct 2025 08:57:34 +0000 Subject: [PATCH 043/126] reversing the condition for better code readability --- openrag/components/indexer/chunker/chunker.py | 78 ++++++++++--------- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/openrag/components/indexer/chunker/chunker.py b/openrag/components/indexer/chunker/chunker.py index 63a4cf2d2..221d52a1d 100644 --- a/openrag/components/indexer/chunker/chunker.py +++ b/openrag/components/indexer/chunker/chunker.py @@ -228,19 +228,21 @@ async def split_document(self, doc: Document, task_id: str = None): filtered_chunks = [] prev_page_num = 1 for chunk, chunk_w_context in zip(chunks, chunks_w_context): - if len(chunk.strip()) > 0: # filter out empty chunks - page_info = self._get_chunk_page_info( - chunk_str=chunk, previous_page=prev_page_num - ) - start_page = page_info["start_page"] - end_page = page_info["end_page"] - prev_page_num = end_page - filtered_chunks.append( - Document( - page_content=chunk_w_context, - metadata={**metadata, "page": start_page}, - ) + if len(chunk.strip()) < 0: # skip empty chunks + continue + + page_info = self._get_chunk_page_info( + chunk_str=chunk, previous_page=prev_page_num + ) + start_page = page_info["start_page"] + end_page = page_info["end_page"] + prev_page_num = end_page + filtered_chunks.append( + Document( + page_content=chunk_w_context, + metadata={**metadata, "page": start_page}, ) + ) log.info("Document chunking completed") return filtered_chunks @@ -343,19 +345,21 @@ async def split_document(self, doc: Document, task_id: str = None): filtered_chunks = [] prev_page_num = 1 for chunk, chunk_w_context in zip(chunks, chunks_w_context): - if len(chunk.strip()) > 0: - page_info = self._get_chunk_page_info( - chunk_str=chunk, previous_page=prev_page_num - ) - start_page = page_info["start_page"] - end_page = page_info["end_page"] - prev_page_num = end_page - filtered_chunks.append( - Document( - page_content=chunk_w_context, - metadata={**metadata, "page": start_page}, - ) + if len(chunk.strip()) > 0: # skip empty chunks + continue + + page_info = self._get_chunk_page_info( + chunk_str=chunk, previous_page=prev_page_num + ) + start_page = page_info["start_page"] + end_page = page_info["end_page"] + prev_page_num = end_page + filtered_chunks.append( + Document( + page_content=chunk_w_context, + metadata={**metadata, "page": start_page}, ) + ) log.info("Document chunking completed") return filtered_chunks @@ -446,19 +450,21 @@ async def split_document(self, doc: Document, task_id: str = None): filtered_chunks = [] prev_page_num = 1 for chunk, chunk_w_context in zip(chunks, chunks_w_context): - if len(chunk.strip()) > 0: - page_info = self._get_chunk_page_info( - chunk_str=chunk, previous_page=prev_page_num - ) - start_page = page_info["start_page"] - end_page = page_info["end_page"] - prev_page_num = end_page - filtered_chunks.append( - Document( - page_content=chunk_w_context, - metadata={**metadata, "page": start_page}, - ) + if len(chunk.strip()) < 0: # skip empty chunks + continue + + page_info = self._get_chunk_page_info( + chunk_str=chunk, previous_page=prev_page_num + ) + start_page = page_info["start_page"] + end_page = page_info["end_page"] + prev_page_num = end_page + filtered_chunks.append( + Document( + page_content=chunk_w_context, + metadata={**metadata, "page": start_page}, ) + ) log.info("Document chunking completed") return filtered_chunks From 67899760f1ede4143001642d00dacb425694facc Mon Sep 17 00:00:00 2001 From: htagourti Date: Wed, 8 Oct 2025 09:48:54 +0000 Subject: [PATCH 044/126] fixed exception handler serialization error in ray serve --- charts/openrag-stack/values.yaml | 1 - docs/api_documentation.md | 2 -- openrag/api.py | 20 +++++--------------- 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/charts/openrag-stack/values.yaml b/charts/openrag-stack/values.yaml index 50d351023..486d86d93 100644 --- a/charts/openrag-stack/values.yaml +++ b/charts/openrag-stack/values.yaml @@ -158,7 +158,6 @@ env: ENABLE_RAY_SERVE: "true" RAY_SERVE_NUM_REPLICAS: "4" RAY_SERVE_PORT: "80" - DISABLE_EXCEPTION_HANDLER: "true" WITH_CHAINLIT_UI: "false" SAVE_UPLOADED_FILES: "false" diff --git a/docs/api_documentation.md b/docs/api_documentation.md index 886157dbc..75098a467 100644 --- a/docs/api_documentation.md +++ b/docs/api_documentation.md @@ -37,8 +37,6 @@ RAY_SERVE_PORT=8080 # Port for Ray Serve HTTP proxy When using Ray Serve with a **remote cluster**, the HTTP server will be started on the **head node** of the cluster. -> [!IMPORTANT] -> When using Ray Serve, you must disable the **FastAPI `exception handler`** by setting `DISABLE_EXCEPTION_HANDLER=true` in your environment variables. Ray Serve is currently incompatible with FastAPI's exception handling middleware. Additionally, the Chainlit UI is disabled when using Ray Serve deployment. ## 🚀 API Endpoints ### ℹ️ System Health diff --git a/openrag/api.py b/openrag/api.py index 8169ad619..a23e313e2 100644 --- a/openrag/api.py +++ b/openrag/api.py @@ -23,7 +23,6 @@ from fastapi.middleware.cors import CORSMiddleware from fastapi.openapi.utils import get_openapi from fastapi.responses import JSONResponse -from fastapi.security import HTTPBearer from fastapi.staticfiles import StaticFiles from routers.actors import router as actors_router from routers.extract import router as extract_router @@ -67,15 +66,7 @@ def __init__(self, config): INDEXERUI_COMPOSE_FILE = os.getenv("INDEXERUI_COMPOSE_FILE", None) INDEXERUI_PORT: Optional[str] = os.getenv("INDEXERUI_PORT", "3042") -DISABLE_EXCEPTION_HANDLER: bool = ( - os.getenv("DISABLE_EXCEPTION_HANDLER", "false").lower() == "true" -) - -security = HTTPBearer() - - app = FastAPI() -bearer_scheme = HTTPBearer() def custom_openapi(): @@ -132,12 +123,11 @@ async def dispatch(self, request: Request, call_next): # Exception handlers -if not DISABLE_EXCEPTION_HANDLER: - - @app.exception_handler(OpenRAGError) - async def openrag_exception_handler(request: Request, exc: OpenRAGError): - logger.error("OpenRAGError occurred", error=str(exc)) - return JSONResponse(status_code=exc.status_code, content=exc.to_dict()) +@app.exception_handler(OpenRAGError) +async def openrag_exception_handler(request: Request, exc: OpenRAGError): + logger = get_logger() + logger.error("OpenRAGError occurred", error=str(exc)) + return JSONResponse(status_code=exc.status_code, content=exc.to_dict()) # Add CORS middleware From 26fdb06c668a477750e01045101f9fcd48645298 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Wed, 8 Oct 2025 14:18:40 +0000 Subject: [PATCH 045/126] Remove obsolete `app_state` variable from endpoints. --- openrag/routers/openai.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/openrag/routers/openai.py b/openrag/routers/openai.py index b9ba7d3b5..d3157f34a 100644 --- a/openrag/routers/openai.py +++ b/openrag/routers/openai.py @@ -1,6 +1,7 @@ import json from urllib.parse import quote +import consts from components.pipeline import RagPipeline from config import load_config from fastapi import APIRouter, Body, Depends, HTTPException, Request, status @@ -13,7 +14,6 @@ from openai import AsyncOpenAI from utils.dependencies import get_vectordb from utils.logger import get_logger -import consts logger = get_logger() config = load_config() @@ -22,10 +22,6 @@ ragpipe = RagPipeline(config=config, logger=logger) -def get_app_state(request: Request): - return request.app.state.app_state - - async def check_llm_model_availability(request: Request): models = {"VLM": config.vlm, "LLM": config.llm} for model_type, param in models.items(): @@ -61,7 +57,6 @@ async def check_llm_model_availability(request: Request): response_description="A list of available models in OpenAI format", ) async def list_models( - app_state=Depends(get_app_state), _: None = Depends(check_llm_model_availability), vectordb=Depends(get_vectordb), ): @@ -81,12 +76,17 @@ async def list_models( ) models.append( - {"id": f"{consts.PARTITION_PREFIX}all", "object": "model", "created": 0, "owned_by": "OpenRAG"} + { + "id": f"{consts.PARTITION_PREFIX}all", + "object": "model", + "created": 0, + "owned_by": "OpenRAG", + } ) return JSONResponse(content={"object": "list", "data": models}) -async def __get_partition_name(model_name, app_state): +async def __get_partition_name(model_name): vectordb = get_vectordb() partition_prefix = consts.PARTITION_PREFIX @@ -144,7 +144,6 @@ def __prepare_sources(request: Request, docs: list[Document]): async def openai_chat_completion( request2: Request, request: OpenAIChatCompletionRequest = Body(...), - app_state=Depends(get_app_state), _: None = Depends(check_llm_model_availability), ): model_name = request.model @@ -162,7 +161,7 @@ async def openai_chat_completion( ) try: - partition = await __get_partition_name(model_name, app_state) + partition = await __get_partition_name(model_name) except Exception as e: log.warning("Invalid model or partition", error=str(e)) raise @@ -236,7 +235,6 @@ async def stream_response(): async def openai_completion( request2: Request, request: OpenAICompletionRequest, - app_state=Depends(get_app_state), _: None = Depends(check_llm_model_availability), ): model_name = request.model @@ -257,7 +255,7 @@ async def openai_completion( ) try: - partition = await __get_partition_name(model_name, app_state) + partition = await __get_partition_name(model_name) except Exception as e: log.warning(f"Invalid model or partition: {e}") From 4de9a4818049570152488a5224fb78584a1e18e8 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Wed, 8 Oct 2025 15:30:08 +0000 Subject: [PATCH 046/126] Clearing existing hydra instance to prevent "already initialized" errors --- openrag/config/config.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/openrag/config/config.py b/openrag/config/config.py index d03c90190..ece914102 100644 --- a/openrag/config/config.py +++ b/openrag/config/config.py @@ -3,6 +3,7 @@ from dotenv import load_dotenv from hydra import compose, initialize_config_dir +from hydra.core.global_hydra import GlobalHydra from omegaconf import OmegaConf CONFIG_PATH = Path(os.environ.get("CONFIG_PATH", "/app/.hydra_config")).resolve() @@ -11,6 +12,10 @@ def load_config(config_path=CONFIG_PATH, overrides=None) -> OmegaConf: load_dotenv() + # Clear existing Hydra instance to prevent "already initialized" errors + if GlobalHydra.instance().is_initialized(): + GlobalHydra.instance().clear() + # TODO: I set the version base to 1.1 to silence the warning message, review how we want to handle versioning with initialize_config_dir( config_dir=str(config_path), job_name="config_loader", version_base="1.1" From 7b2673a517c056f1fd14307ae7d05714a0851584 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Thu, 9 Oct 2025 08:04:37 +0000 Subject: [PATCH 047/126] Move load_config outside get_vectordb_cls to load configuration once instead of on every function call --- openrag/components/indexer/vectordb/vectordb.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/openrag/components/indexer/vectordb/vectordb.py b/openrag/components/indexer/vectordb/vectordb.py index 0d61f2692..1e7daf66d 100644 --- a/openrag/components/indexer/vectordb/vectordb.py +++ b/openrag/components/indexer/vectordb/vectordb.py @@ -4,6 +4,7 @@ import numpy as np import ray +from config import load_config from langchain_core.documents.base import Document from pymilvus import ( AnnSearchRequest, @@ -23,6 +24,7 @@ from .utils import PartitionFileManager logger = get_logger() +config = load_config() class BaseVectorDB(ABC): @@ -888,9 +890,6 @@ class ConnectorFactory: @staticmethod def get_vectordb_cls(): - from config import load_config - - config = load_config() name = config.vectordb.get("connector_name") vdb_cls = ConnectorFactory.CONNECTORS.get(name) if not vdb_cls: From 5411b786e8f004a42726bfd0cebe849a6adfd8ba Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Thu, 9 Oct 2025 09:27:45 +0000 Subject: [PATCH 048/126] Correcting filter conditions --- openrag/components/indexer/chunker/chunker.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openrag/components/indexer/chunker/chunker.py b/openrag/components/indexer/chunker/chunker.py index 221d52a1d..aab5a8ae0 100644 --- a/openrag/components/indexer/chunker/chunker.py +++ b/openrag/components/indexer/chunker/chunker.py @@ -228,7 +228,7 @@ async def split_document(self, doc: Document, task_id: str = None): filtered_chunks = [] prev_page_num = 1 for chunk, chunk_w_context in zip(chunks, chunks_w_context): - if len(chunk.strip()) < 0: # skip empty chunks + if not chunk.strip(): # skip empty chunks continue page_info = self._get_chunk_page_info( @@ -345,7 +345,7 @@ async def split_document(self, doc: Document, task_id: str = None): filtered_chunks = [] prev_page_num = 1 for chunk, chunk_w_context in zip(chunks, chunks_w_context): - if len(chunk.strip()) > 0: # skip empty chunks + if not chunk.strip(): # skip empty chunks continue page_info = self._get_chunk_page_info( @@ -450,7 +450,7 @@ async def split_document(self, doc: Document, task_id: str = None): filtered_chunks = [] prev_page_num = 1 for chunk, chunk_w_context in zip(chunks, chunks_w_context): - if len(chunk.strip()) < 0: # skip empty chunks + if not chunk.strip(): # skip empty chunks continue page_info = self._get_chunk_page_info( From b7787d6f1ddfe2e5c4e0c94e1f1153b80b8ed716 Mon Sep 17 00:00:00 2001 From: Paul Tran-Van Date: Thu, 9 Oct 2025 12:12:11 +0200 Subject: [PATCH 049/126] docs: Add doc about auth and SQL data model --- docs/data_model.md | 105 +++++++++++++++++++++++++++++++ docs/user_auth.md | 154 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 259 insertions(+) create mode 100644 docs/data_model.md create mode 100644 docs/user_auth.md diff --git a/docs/data_model.md b/docs/data_model.md new file mode 100644 index 000000000..c6d8575ab --- /dev/null +++ b/docs/data_model.md @@ -0,0 +1,105 @@ +# 🗄️ Data Model Overview + +This document describes the database schema used for managing users, partitions (spaces), files, and their relationships. +It is implemented using **SQLAlchemy ORM** with PostgreSQL as the backend. + +--- + +## **Tables** + +### 🧩 `users` +Stores information about API users and administrators. + +| Column | Type | Description | +|----------------|-----------|-------------| +| `id` | Integer (PK) | Unique user identifier | +| `external_ref` | String (nullable, unique) | Optional external system reference | +| `email` | String (nullable, unique, indexed) | Email address | +| `display_name` | String | Display name | +| `token` | String (unique, hashed) | SHA-256 hash of the user’s API token | +| `is_admin` | Boolean | Marks system administrator users | +| `created_at` | DateTime | Timestamp of creation | + +**Relationships** +- `memberships`: one-to-many → `PartitionMembership` + +--- + +### 📁 `partitions` +Represents a logical workspace or “space” that groups files and users. + +| Column | Type | Description | +|---------------|------|-------------| +| `id` | Integer (PK) | Unique partition identifier | +| `partition` | String (unique, indexed) | Human-readable name / key | +| `created_at` | DateTime | Timestamp of creation | + +**Relationships** +- `files`: one-to-many → `File` +- `memberships`: one-to-many → `PartitionMembership` + +--- + +### 📄 `files` +Represents an indexed file belonging to a partition. + +| Column | Type | Description | +|------------------|------|-------------| +| `id` | Integer (PK) | Internal file identifier | +| `file_id` | String (indexed) | External file identifier (e.g., hash or ID) | +| `partition_name` | String (FK → `partitions.partition`) | Partition that owns the file | +| `file_metadata` | JSON | Additional metadata (format, size, etc.) | + +**Constraints** +- `UniqueConstraint(file_id, partition_name)` → a file can appear only once per partition. +- Composite index `ix_partition_file (partition_name, file_id)` for efficient queries. + +--- + +### 👥 `partition_memberships` +Defines the many-to-many relationship between **users** and **partitions**, including role-based access control. + +| Column | Type | Description | +|------------------|------|-------------| +| `id` | Integer (PK) | Unique row ID | +| `partition_name` | String (FK → `partitions.partition`, CASCADE) | Partition identifier | +| `user_id` | Integer (FK → `users.id`, CASCADE) | Linked user | +| `role` | String | Role of the user: `owner`, `editor`, or `viewer` | +| `added_at` | DateTime | Timestamp of when the membership was created | + +**Constraints** +- `UniqueConstraint(partition_name, user_id)` → a user can appear only once per partition. +- `CheckConstraint(role IN ('owner','editor','viewer'))` → role validation. +- Composite index `ix_user_partition (user_id, partition_name)`. + +**Relationships** +- `partition`: many-to-one → `Partition` +- `user`: many-to-one → `User` + +--- + +## **Relationships Summary** + +| Relationship | Type | Description | +|---------------|------|-------------| +| `User` ↔ `PartitionMembership` | 1–N | A user can belong to multiple partitions with different roles | +| `Partition` ↔ `PartitionMembership` | 1–N | A partition can have multiple users (owners, editors, viewers) | +| `Partition` ↔ `File` | 1–N | A partition can contain multiple files | +| `File` ↔ `Partition` | N–1 | Each file belongs to exactly one partition | + +--- + +## **Access Control** +- Roles (`owner`, `editor`, `viewer`) determine what users can do in each partition. +- `is_admin` users are privileged globally (admin endpoints, user management). +- `SUPER_ADMIN_MODE=true` allows the global admin to bypass all partition-level restrictions. + +--- + +## **Token Handling** +- Tokens are generated at user creation time (`or-`). +- Only a **SHA-256 hash** is stored in the database. +- During authentication, the incoming Bearer token is hashed and compared with the stored hash. + +--- + diff --git a/docs/user_auth.md b/docs/user_auth.md new file mode 100644 index 000000000..c5e604f9b --- /dev/null +++ b/docs/user_auth.md @@ -0,0 +1,154 @@ +# 🔐 Authentication & Authorization Overview + +This document explains how **user authentication** and **access control** work within the application. +It covers admin behavior, user tokens, and partition-level permissions. + +--- + +## **1. Authentication Activation** + +### `AUTH_TOKEN` +- The presence of the environment variable **`AUTH_TOKEN`** activates authentication. +- If **`AUTH_TOKEN`** is **absent**, the middleware **bypasses all authentication checks**, allowing open access (useful for local or testing environments). + +--- + +## **2. Admin Bootstrapping** + +When `AUTH_TOKEN` is set: +1. On startup, the application checks whether an **admin user** already exists in the database. +2. If not, it **creates one automatically**: + - `email`: `admin@example.com` + - `display_name`: `"Admin"` + - `is_admin`: `True` + - `token`: SHA-256 hash of the `AUTH_TOKEN` value + +This admin user serves as the global entry point for bootstrapping the system. + +--- + +## **3. Token Management** + +### Generation +- Each new user is assigned a token at creation time (format: `or-`). +- The app **returns the raw token** to the API caller once (e.g., `POST /users` response). + +### Storage +- Only a **SHA-256 hash** of the token is stored in PostgreSQL. +- The raw token **is never persisted**, ensuring that leaked database contents cannot reveal user credentials. + +### Validation +- When an API request includes an **`Authorization: Bearer `** header: + 1. The middleware extracts the token. + 2. The hash of this token is computed. + 3. The hash is compared against the stored value in the `users` table. + +--- + +## **4. User Roles** + +### 👑 Admin +- Full access to all API routes, including: + - User management + - Actor management + - Queue and system information +- Can also create other users and assign privileges. +- Admins can use the app **as regular users** (own partitions, files, etc.). +- By default, an admin **cannot view other users’ data**. + +### 🧠 Super Admin Mode +- Controlled by the environment variable **`SUPER_ADMIN_MODE`**. +- When `SUPER_ADMIN_MODE=true`: + - The admin can access **all partitions and data** across users. + - Partition-level access restrictions are ignored. +- When `SUPER_ADMIN_MODE=false`: + - Admin privileges are **limited to admin-only operations** (user creation, actor management, etc.). + - Data-level access (partitions/files) requires using a normal user account. + +--- + +## **5. Regular Users** + +- Created by an admin via the `/users` endpoint. +- Receive a personal API token (returned once upon creation). +- Can authenticate using `Authorization: Bearer `. + +Users can: +- Create and manage **their own partitions** and **files**. +- Access shared partitions based on assigned roles. + +--- + +## **6. Partition Access Roles** + +Access control is handled through the **`partition_memberships`** table. +Each user–partition relationship defines a **role**: + +| Role | Description | Capabilities | +|------|--------------|---------------| +| **owner** | Partition creator or owner | Full access — can delete the partition, manage members, edit files, etc. | +| **editor** | Collaborator | Can read and write files within the partition | +| **viewer** | Read-only member | Can view content and perform semantic search or chat but not modify data | + +Role-based restrictions are enforced via dependency guards: +- `require_partition_owner` +- `require_partition_editor` +- `require_partition_viewer` + +--- + +## **7. Authorization Flow Summary** + +1. Request arrives with optional `Authorization: Bearer `. +2. If `AUTH_TOKEN` is **unset**, authentication is skipped (open mode). +3. If set: + - Middleware hashes the token. + - Looks up the user by hash. + - Loads their partition memberships. +4. User info and memberships are attached to `request.state`. +5. Role-based dependencies ensure the user has proper privileges before executing the endpoint logic. + +--- + +## **8. Summary Diagram** + +``` +┌───────────────────────┐ +│ Incoming Request │ +│ Authorization: Bearer │ +└────────────┬──────────┘ + │ + ▼ +┌───────────────────────────┐ +│ AuthMiddleware │ +│ - Hash token (SHA-256) │ +│ - Lookup user in DB │ +│ - Load memberships │ +│ - Attach to request.state │ +└────────────┬──────────────┘ + │ + ▼ +┌──────────────────────────────┐ +│ Endpoint Dependency Checks │ +│ (e.g., require_partition_*) │ +└────────────┬─────────────────┘ + │ + ▼ +┌──────────────────────────────┐ +│ Route Logic Executes │ +│ with validated user context │ +└──────────────────────────────┘ +``` + +--- + +## **9. Security Highlights** + +- No plaintext tokens stored in database. +- SHA-256 hashing for authentication. +- Partition-based role hierarchy for fine-grained access control. +- Admin privileges separated from regular user data access. +- Configurable **`SUPER_ADMIN_MODE`** for system-wide debugging or admin override. + +--- + From 4c6686bd0ac68285b98b2963112e1ec056a5da76 Mon Sep 17 00:00:00 2001 From: htagourti Date: Thu, 9 Oct 2025 12:26:55 +0000 Subject: [PATCH 050/126] added file copy endpoint --- openrag/components/indexer/indexer.py | 34 +++++++++++++++++++++++++++ openrag/routers/indexer.py | 28 ++++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/openrag/components/indexer/indexer.py b/openrag/components/indexer/indexer.py index 593b9c370..886465825 100644 --- a/openrag/components/indexer/indexer.py +++ b/openrag/components/indexer/indexer.py @@ -217,6 +217,40 @@ async def update_file_metadata( log.exception("Error in update_file_metadata", error=str(e)) raise + @ray.method(concurrency_group="update") + async def copy_file( + self, + file_id: str, + metadata: Dict, + partition: str, + user: Optional[Dict] = None, + ): + log = self.logger.bind(file_id=file_id, partition=partition) + vectordb = ray.get_actor("Vectordb", namespace="openrag") + if not self.enable_insertion: + log.error( + "Vector database is not enabled, but update_file_metadata was called." + ) + return + + try: + docs = await vectordb.get_file_chunks.remote(file_id, partition) + for doc in docs: + doc.metadata.update(metadata) + + await vectordb.async_add_documents.remote(docs, user=user) + + log.info( + "File copy completed", + file_id=file_id, + partition=partition, + new_file_id=metadata.get("file_id"), + new_partition=metadata.get("partition"), + ) + except Exception as e: + log.exception("Error in copy_file", error=str(e)) + raise + @ray.method(concurrency_group="search") async def asearch( self, diff --git a/openrag/routers/indexer.py b/openrag/routers/indexer.py index 8639a25d0..3273249ad 100644 --- a/openrag/routers/indexer.py +++ b/openrag/routers/indexer.py @@ -8,6 +8,7 @@ from fastapi import ( APIRouter, Depends, + Form, HTTPException, Request, Response, @@ -256,6 +257,33 @@ async def patch_file( ) +@router.post("/partition/{partition}/file/{file_id}/copy") +async def copy_file_between_partitions( + partition: str, + file_id: str = Depends(validate_file_id), + metadata: Optional[Any] = Depends(validate_metadata), + source_partition: str = Form(...), + source_file_id: str = Form(...), + indexer=Depends(get_indexer), + user=Depends(require_partition_editor), + user_partitions=Depends(current_user_partitions), +): + # Make sure user has access to destination partition + await ensure_partition_role( + partition=source_partition, + user=user, + user_partitions=user_partitions, + required_role="viewer", + ) + metadata["file_id"] = file_id + metadata["partition"] = partition + + await indexer.copy_file.remote( + file_id=source_file_id, metadata=metadata, partition=source_partition, user=user + ) + return JSONResponse(status_code=status.HTTP_201_CREATED) + + @router.get("/task/{task_id}") async def get_task_status( request: Request, From 777d69c2fa94405f44c0626c2fee7af3c792664e Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Thu, 9 Oct 2025 13:10:35 +0000 Subject: [PATCH 051/126] Update markitdown loader +Add docx dependencies --- .../components/indexer/loaders/markItdown.py | 53 +++++++------- pyproject.toml | 5 +- uv.lock | 69 +++++++++++++------ 3 files changed, 77 insertions(+), 50 deletions(-) diff --git a/openrag/components/indexer/loaders/markItdown.py b/openrag/components/indexer/loaders/markItdown.py index e09a3ed15..d4565597f 100644 --- a/openrag/components/indexer/loaders/markItdown.py +++ b/openrag/components/indexer/loaders/markItdown.py @@ -1,4 +1,5 @@ import re +import zipfile from io import BytesIO from langchain_core.documents.base import Document @@ -12,6 +13,16 @@ logger = get_logger() +def convert_to_png_image(image: Image.Image) -> Image.Image: + # Save the image into a BytesIO buffer in PNG format + with BytesIO() as buffer: + image.save(buffer, format="PNG") + buffer.seek(0) + # Reload the image from the buffer as a PNG + png_image = Image.open(buffer).convert("RGBA") + return png_image + + class MarkItDownLoader(BaseLoader): def __init__(self, **kwargs): super().__init__(**kwargs) @@ -22,14 +33,16 @@ async def aload_document(self, file_path, metadata, save_markdown=False): if self.image_captioning: images = self.get_images_from_zip(file_path) + captions = await self.get_captions(images) for caption in captions: result = re.sub( - r"!\[[^!]*(\n){0,2}[^!]*\]\(data:image/.{0-6};base64...\)", + r"!\[.*?\]\(data:image/.*?\)", caption.replace("\\", "/"), string=result, count=1, ) + else: logger.info("Image captioning disabled. Ignoring images.") @@ -39,49 +52,35 @@ async def aload_document(self, file_path, metadata, save_markdown=False): return doc async def get_captions(self, images): - tasks = [ - self.get_image_description(image_data_data_data=img) - for img, image_ext in images - ] + tasks = [self.get_image_description(image_data=img) for img in images] return await tqdm.gather(*tasks, desc="Generating captions") def get_images_from_zip(self, input_file): - import zipfile - with zipfile.ZipFile(input_file, "r") as docx: file_names = docx.namelist() image_files = [f for f in file_names if f.startswith("word/media/")] + if not image_files: + return [] - images_not_in_order, order = ( - [], - [], - ) # the images got from the original file is not in the right order + images_not_in_order, order = [], [] + + # the images got from the original file is not in the right order # but the target_ref contains the position of the image in the document for image_file in image_files: image_data = docx.read(image_file) image_extension = image_file.split(".")[-1].lower() image = Image.open(BytesIO(image_data)) - images_not_in_order.append((image, image_extension)) + + # Convert to PNG-compatible format + image = convert_to_png_image(image) + + images_not_in_order.append(image) order.append( image_file.split("media/image")[1].split(f".{image_extension}")[0] ) - images = [1] * len(images_not_in_order) # the images in the right order + images = [None] * len(images_not_in_order) # the images in the right order for i in range(len(images_not_in_order)): images[int(order[i]) - 1] = images_not_in_order[i] return images - - async def parse(self, file_path): - result = await self.converter.convert(file_path) - - images = self.get_images_from_zip(file_path) - captions = await self.get_captions(images) - for caption in captions: - result = re.sub( - r"!\[[^!]*(\n){0,2}[^!]*\]\(data:image/.{0-6};base64...\)", - caption.replace("\\", "/"), - string=result, - count=1, - ) - return result diff --git a/pyproject.toml b/pyproject.toml index 33e7857f2..90805c55b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,11 +18,9 @@ dependencies = [ "langchain-openai>=0.3.7", "loguru>=0.7.3", "marker-pdf>=0.2.17", - "markitdown>=0.0.2", "pydub>=0.25.1", "pymupdf4llm>=0.0.17", "spire-doc>=13.1.0", - "markitdown>=0.0.2", "openai>=1.64.0", "ray[default]>=2.47.1", "langchain-qdrant>=0.2.0", @@ -45,9 +43,10 @@ dependencies = [ "umap-learn>=0.5.9.post2", "hdbscan>=0.8.40", "pytest-env>=1.1.5", + "markitdown[docx]>=0.1.3", ] [dependency-groups] dev = [ "pytest>=8.4.1", -] \ No newline at end of file +] diff --git a/uv.lock b/uv.lock index 59c729bef..f4b103852 100644 --- a/uv.lock +++ b/uv.lock @@ -448,6 +448,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215 }, ] +[[package]] +name = "cobble" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/7a/a507c709be2c96e1bb6102eb7b7f4026c5e5e223ef7d745a17d239e9d844/cobble-0.1.4.tar.gz", hash = "sha256:de38be1539992c8a06e569630717c485a5f91be2192c461ea2b220607dfa78aa", size = 3805 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/e1/3714a2f371985215c219c2a70953d38e3eed81ef165aed061d21de0e998b/cobble-0.1.4-py3-none-any.whl", hash = "sha256:36c91b1655e599fd428e2b95fdd5f0da1ca2e9f1abb0bc871dec21a0e78a2b44", size = 3984 }, +] + [[package]] name = "colorama" version = "0.4.6" @@ -742,11 +751,11 @@ wheels = [ [[package]] name = "flatbuffers" -version = "25.2.10" +version = "25.9.23" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/30/eb5dce7994fc71a2f685d98ec33cc660c0a5887db5610137e60d8cbc4489/flatbuffers-25.2.10.tar.gz", hash = "sha256:97e451377a41262f8d9bd4295cc836133415cc03d8cb966410a4af92eb00d26e", size = 22170 } +sdist = { url = "https://files.pythonhosted.org/packages/9d/1f/3ee70b0a55137442038f2a33469cc5fddd7e0ad2abf83d7497c18a2b6923/flatbuffers-25.9.23.tar.gz", hash = "sha256:676f9fa62750bb50cf531b42a0a2a118ad8f7f797a511eda12881c016f093b12", size = 22067 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/25/155f9f080d5e4bc0082edfda032ea2bc2b8fab3f4d25d46c1e9dd22a1a89/flatbuffers-25.2.10-py2.py3-none-any.whl", hash = "sha256:ebba5f4d5ea615af3f7fd70fc310636fbb2bbd1f566ac0a23d98dd412de50051", size = 30953 }, + { url = "https://files.pythonhosted.org/packages/ee/1b/00a78aa2e8fbd63f9af08c9c19e6deb3d5d66b4dda677a0f61654680ee89/flatbuffers-25.9.23-py2.py3-none-any.whl", hash = "sha256:255538574d6cb6d0a79a17ec8bc0d30985913b87513a01cce8bcdb6b4c44d0e2", size = 30869 }, ] [[package]] @@ -1618,6 +1627,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b0/1f/28e412d0ccedc068fbccdae6a6233faaa97ec3e5e2ffd242e49655b10064/magika-0.6.2-py3-none-win_amd64.whl", hash = "sha256:711f427a633e0182737dcc2074748004842f870643585813503ff2553b973b9f", size = 12385740 }, ] +[[package]] +name = "mammoth" +version = "1.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cobble" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ed/3c/a58418d2af00f2da60d4a51e18cd0311307b72d48d2fffec36a97b4a5e44/mammoth-1.11.0.tar.gz", hash = "sha256:a0f59e442f34d5b6447f4b0999306cbf3e67aaabfa8cb516f878fb1456744637", size = 53142 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/54/2e39566a131b13f6d8d193f974cb6a34e81bb7cc2fa6f7e03de067b36588/mammoth-1.11.0-py2.py3-none-any.whl", hash = "sha256:c077ab0d450bd7c0c6ecd529a23bf7e0fa8190c929e28998308ff4eada3f063b", size = 54752 }, +] + [[package]] name = "markdown-it-py" version = "3.0.0" @@ -1686,7 +1707,7 @@ wheels = [ [[package]] name = "markitdown" -version = "0.1.2" +version = "0.1.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "beautifulsoup4" }, @@ -1694,11 +1715,18 @@ dependencies = [ { name = "defusedxml" }, { name = "magika" }, { name = "markdownify" }, + { name = "onnxruntime", marker = "sys_platform == 'win32'" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/da/bd/b7ae7863ee556411fbb6ca19a4a7593ef2b3531d6cd10b979ba386a2dd4d/markitdown-0.1.2.tar.gz", hash = "sha256:85fe108a92bd18f317e75a36cf567a6fa812072612a898abf8c156d5d74c13c4", size = 39361 } +sdist = { url = "https://files.pythonhosted.org/packages/87/31/90cef2bc8ecd85c200ed3b3d1e20fc7a724213502685c4b05b5431e02668/markitdown-0.1.3.tar.gz", hash = "sha256:b0d9127c3373a68274dede6af6c9bb0684b78ce364c727c4c304da97a20d6fd9", size = 40039 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/33/d52d06b44c28e0db5c458690a4356e6abbb866f4abc00c0cf4eebb90ca78/markitdown-0.1.2-py3-none-any.whl", hash = "sha256:4881f0768794ffccb52d09dd86498813a6896ba9639b4fc15512817f56ed9d74", size = 57751 }, + { url = "https://files.pythonhosted.org/packages/97/83/7b47d2ecbf58650a03aeeb21ba2d59175f202bf4fb81d44f40f1deb82bc0/markitdown-0.1.3-py3-none-any.whl", hash = "sha256:08d9a25770979d78f60dcc0afcb868de6799608e4db65342b2e03304fb091251", size = 58391 }, +] + +[package.optional-dependencies] +docx = [ + { name = "lxml" }, + { name = "mammoth" }, ] [[package]] @@ -2227,7 +2255,7 @@ wheels = [ [[package]] name = "onnxruntime" -version = "1.22.1" +version = "1.20.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "coloredlogs" }, @@ -2238,16 +2266,17 @@ dependencies = [ { name = "sympy" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/48/70/ca2a4d38a5deccd98caa145581becb20c53684f451e89eb3a39915620066/onnxruntime-1.22.1-cp312-cp312-macosx_13_0_universal2.whl", hash = "sha256:a938d11c0dc811badf78e435daa3899d9af38abee950d87f3ab7430eb5b3cf5a", size = 34342883 }, - { url = "https://files.pythonhosted.org/packages/29/e5/00b099b4d4f6223b610421080d0eed9327ef9986785c9141819bbba0d396/onnxruntime-1.22.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:984cea2a02fcc5dfea44ade9aca9fe0f7a8a2cd6f77c258fc4388238618f3928", size = 14473861 }, - { url = "https://files.pythonhosted.org/packages/0a/50/519828a5292a6ccd8d5cd6d2f72c6b36ea528a2ef68eca69647732539ffa/onnxruntime-1.22.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2d39a530aff1ec8d02e365f35e503193991417788641b184f5b1e8c9a6d5ce8d", size = 16475713 }, - { url = "https://files.pythonhosted.org/packages/5d/54/7139d463bb0a312890c9a5db87d7815d4a8cce9e6f5f28d04f0b55fcb160/onnxruntime-1.22.1-cp312-cp312-win_amd64.whl", hash = "sha256:6a64291d57ea966a245f749eb970f4fa05a64d26672e05a83fdb5db6b7d62f87", size = 12690910 }, - { url = "https://files.pythonhosted.org/packages/e0/39/77cefa829740bd830915095d8408dce6d731b244e24b1f64fe3df9f18e86/onnxruntime-1.22.1-cp313-cp313-macosx_13_0_universal2.whl", hash = "sha256:d29c7d87b6cbed8fecfd09dca471832384d12a69e1ab873e5effbb94adc3e966", size = 34342026 }, - { url = "https://files.pythonhosted.org/packages/d2/a6/444291524cb52875b5de980a6e918072514df63a57a7120bf9dfae3aeed1/onnxruntime-1.22.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:460487d83b7056ba98f1f7bac80287224c31d8149b15712b0d6f5078fcc33d0f", size = 14474014 }, - { url = "https://files.pythonhosted.org/packages/87/9d/45a995437879c18beff26eacc2322f4227224d04c6ac3254dce2e8950190/onnxruntime-1.22.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b0c37070268ba4e02a1a9d28560cd00cd1e94f0d4f275cbef283854f861a65fa", size = 16475427 }, - { url = "https://files.pythonhosted.org/packages/4c/06/9c765e66ad32a7e709ce4cb6b95d7eaa9cb4d92a6e11ea97c20ffecaf765/onnxruntime-1.22.1-cp313-cp313-win_amd64.whl", hash = "sha256:70980d729145a36a05f74b573435531f55ef9503bcda81fc6c3d6b9306199982", size = 12690841 }, - { url = "https://files.pythonhosted.org/packages/52/8c/02af24ee1c8dce4e6c14a1642a7a56cebe323d2fa01d9a360a638f7e4b75/onnxruntime-1.22.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:33a7980bbc4b7f446bac26c3785652fe8730ed02617d765399e89ac7d44e0f7d", size = 14479333 }, - { url = "https://files.pythonhosted.org/packages/5d/15/d75fd66aba116ce3732bb1050401394c5ec52074c4f7ee18db8838dd4667/onnxruntime-1.22.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7e823624b015ea879d976cbef8bfaed2f7e2cc233d7506860a76dd37f8f381", size = 16477261 }, + { url = "https://files.pythonhosted.org/packages/e5/39/9335e0874f68f7d27103cbffc0e235e32e26759202df6085716375c078bb/onnxruntime-1.20.1-cp312-cp312-macosx_13_0_universal2.whl", hash = "sha256:22b0655e2bf4f2161d52706e31f517a0e54939dc393e92577df51808a7edc8c9", size = 31007580 }, + { url = "https://files.pythonhosted.org/packages/c5/9d/a42a84e10f1744dd27c6f2f9280cc3fb98f869dd19b7cd042e391ee2ab61/onnxruntime-1.20.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f1f56e898815963d6dc4ee1c35fc6c36506466eff6d16f3cb9848cea4e8c8172", size = 11952833 }, + { url = "https://files.pythonhosted.org/packages/47/42/2f71f5680834688a9c81becbe5c5bb996fd33eaed5c66ae0606c3b1d6a02/onnxruntime-1.20.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bb71a814f66517a65628c9e4a2bb530a6edd2cd5d87ffa0af0f6f773a027d99e", size = 13333903 }, + { url = "https://files.pythonhosted.org/packages/c8/f1/aabfdf91d013320aa2fc46cf43c88ca0182860ff15df872b4552254a9680/onnxruntime-1.20.1-cp312-cp312-win32.whl", hash = "sha256:bd386cc9ee5f686ee8a75ba74037750aca55183085bf1941da8efcfe12d5b120", size = 9814562 }, + { url = "https://files.pythonhosted.org/packages/dd/80/76979e0b744307d488c79e41051117634b956612cc731f1028eb17ee7294/onnxruntime-1.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:19c2d843eb074f385e8bbb753a40df780511061a63f9def1b216bf53860223fb", size = 11331482 }, + { url = "https://files.pythonhosted.org/packages/f7/71/c5d980ac4189589267a06f758bd6c5667d07e55656bed6c6c0580733ad07/onnxruntime-1.20.1-cp313-cp313-macosx_13_0_universal2.whl", hash = "sha256:cc01437a32d0042b606f462245c8bbae269e5442797f6213e36ce61d5abdd8cc", size = 31007574 }, + { url = "https://files.pythonhosted.org/packages/81/0d/13bbd9489be2a6944f4a940084bfe388f1100472f38c07080a46fbd4ab96/onnxruntime-1.20.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fb44b08e017a648924dbe91b82d89b0c105b1adcfe31e90d1dc06b8677ad37be", size = 11951459 }, + { url = "https://files.pythonhosted.org/packages/c0/ea/4454ae122874fd52bbb8a961262de81c5f932edeb1b72217f594c700d6ef/onnxruntime-1.20.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bda6aebdf7917c1d811f21d41633df00c58aff2bef2f598f69289c1f1dabc4b3", size = 13331620 }, + { url = "https://files.pythonhosted.org/packages/d8/e0/50db43188ca1c945decaa8fc2a024c33446d31afed40149897d4f9de505f/onnxruntime-1.20.1-cp313-cp313-win_amd64.whl", hash = "sha256:d30367df7e70f1d9fc5a6a68106f5961686d39b54d3221f760085524e8d38e16", size = 11331758 }, + { url = "https://files.pythonhosted.org/packages/d8/55/3821c5fd60b52a6c82a00bba18531793c93c4addfe64fbf061e235c5617a/onnxruntime-1.20.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c9158465745423b2b5d97ed25aa7740c7d38d2993ee2e5c3bfacb0c4145c49d8", size = 11950342 }, + { url = "https://files.pythonhosted.org/packages/14/56/fd990ca222cef4f9f4a9400567b9a15b220dee2eafffb16b2adbc55c8281/onnxruntime-1.20.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0df6f2df83d61f46e842dbcde610ede27218947c33e994545a22333491e72a3b", size = 13337040 }, ] [[package]] @@ -2362,7 +2391,7 @@ dependencies = [ { name = "llvmlite" }, { name = "loguru" }, { name = "marker-pdf" }, - { name = "markitdown" }, + { name = "markitdown", extra = ["docx"] }, { name = "numba" }, { name = "openai" }, { name = "openai-whisper" }, @@ -2410,7 +2439,7 @@ requires-dist = [ { name = "llvmlite", specifier = ">=0.44.0" }, { name = "loguru", specifier = ">=0.7.3" }, { name = "marker-pdf", specifier = ">=0.2.17" }, - { name = "markitdown", specifier = ">=0.0.2" }, + { name = "markitdown", extras = ["docx"], specifier = ">=0.1.3" }, { name = "numba", specifier = ">=0.61.2" }, { name = "openai", specifier = ">=1.64.0" }, { name = "openai-whisper", specifier = ">=20250625" }, @@ -5237,4 +5266,4 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/02/90/2633473864f67a15526324b007a9f96c96f56d5f32ef2a56cc12f9548723/zstandard-0.23.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ce8b52c5987b3e34d5674b0ab529a4602b632ebab0a93b07bfb4dfc8f8a33", size = 5191299 }, { url = "https://files.pythonhosted.org/packages/b0/4c/315ca5c32da7e2dc3455f3b2caee5c8c2246074a61aac6ec3378a97b7136/zstandard-0.23.0-cp313-cp313-win32.whl", hash = "sha256:a9b07268d0c3ca5c170a385a0ab9fb7fdd9f5fd866be004c4ea39e44edce47dd", size = 430862 }, { url = "https://files.pythonhosted.org/packages/a2/bf/c6aaba098e2d04781e8f4f7c0ba3c7aa73d00e4c436bcc0cf059a66691d1/zstandard-0.23.0-cp313-cp313-win_amd64.whl", hash = "sha256:f3513916e8c645d0610815c257cbfd3242adfd5c4cfa78be514e5a3ebb42a41b", size = 495578 }, -] \ No newline at end of file +] From 1b59a138af913b6cea21da70248d8b1012cd0efd Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Thu, 9 Oct 2025 13:14:02 +0000 Subject: [PATCH 052/126] Update DocLoader --- openrag/components/indexer/loaders/doc.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/openrag/components/indexer/loaders/doc.py b/openrag/components/indexer/loaders/doc.py index 27ac40a93..7981520ad 100644 --- a/openrag/components/indexer/loaders/doc.py +++ b/openrag/components/indexer/loaders/doc.py @@ -1,9 +1,13 @@ import os import tempfile + from spire.doc import Document, FileFormat + from .base import BaseLoader from .markItdown import MarkItDownLoader +os.environ["DOTNET_SYSTEM_GLOBALIZATION_INVARIANT"] = "1" # Disable Globalization + class DocLoader(BaseLoader): def __init__(self, **kwargs) -> None: @@ -25,13 +29,3 @@ async def aload_document(self, file_path, metadata, save_markdown=False): os.remove(file_path) document.Close() return result_string - - async def parse(self, file_path): - document = Document() - document.LoadFromFile(str(file_path)) - # file_path = "converted/sample.docx" - document.SaveToFile(file_path, FileFormat.Docx2016) - result_string = await self.MDLoader.parse(file_path) - os.remove(file_path) - document.Close() - return result_string From 2aa90798782491f2301c5275de113e64f256b70e Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Thu, 9 Oct 2025 15:19:20 +0200 Subject: [PATCH 053/126] CI pipeline: index, backup, restore --- .github/workflows/data/simplewiki-100/A.txt | 15 ++ .../data/simplewiki-100/Abbreviation.txt | 4 + .../simplewiki-100/Abrahamic religions.txt | 1 + .../data/simplewiki-100/Acceleration.txt | 26 ++++ .../data/simplewiki-100/Ad hominem.txt | 10 ++ .../data/simplewiki-100/Addition.txt | 24 ++++ .../data/simplewiki-100/Adobe Illustrator.txt | 6 + .../data/simplewiki-100/Afghanistan.txt | 57 ++++++++ .github/workflows/data/simplewiki-100/Air.txt | 16 +++ .../data/simplewiki-100/Alan Turing.txt | 24 ++++ .../data/simplewiki-100/Alanis Morissette.txt | 16 +++ .../data/simplewiki-100/Albigensian.txt | 0 .../workflows/data/simplewiki-100/Algebra.txt | 51 +++++++ .../data/simplewiki-100/American English.txt | 14 ++ .../American Units Of Measurement.txt | 0 .../workflows/data/simplewiki-100/Anatomy.txt | 9 ++ .../data/simplewiki-100/Andouille.txt | 3 + .../workflows/data/simplewiki-100/Angel.txt | 69 +++++++++ .../workflows/data/simplewiki-100/Angola.txt | 16 +++ .../workflows/data/simplewiki-100/Animal.txt | 18 +++ .../data/simplewiki-100/Animalia.txt | 0 .../workflows/data/simplewiki-100/Apple.txt | 40 ++++++ .../data/simplewiki-100/Application.txt | 2 + .../workflows/data/simplewiki-100/April.txt | 12 ++ .../data/simplewiki-100/Aquaculture.txt | 5 + .../data/simplewiki-100/Archaeology.txt | 27 ++++ .../data/simplewiki-100/Architecture.txt | 14 ++ .../data/simplewiki-100/Argentina.txt | 27 ++++ .../data/simplewiki-100/Arithmetic.txt | 9 ++ .../workflows/data/simplewiki-100/Armenia.txt | 21 +++ .github/workflows/data/simplewiki-100/Art.txt | 34 +++++ .github/workflows/data/simplewiki-100/As.txt | 0 .../data/simplewiki-100/Asteroid.txt | 7 + .../data/simplewiki-100/Astronomy.txt | 64 +++++++++ .../workflows/data/simplewiki-100/Atom.txt | 66 +++++++++ .../workflows/data/simplewiki-100/August.txt | 11 ++ .../data/simplewiki-100/Australia.txt | 78 +++++++++++ .../workflows/data/simplewiki-100/Austria.txt | 33 +++++ .../Autonomous communities of Spain.txt | 6 + .../data/simplewiki-100/Bankruptcy.txt | 27 ++++ .../workflows/data/simplewiki-100/Beard.txt | 4 + .../data/simplewiki-100/Beekeeping.txt | 12 ++ .../workflows/data/simplewiki-100/Beijing.txt | 21 +++ .../workflows/data/simplewiki-100/Being.txt | 4 + .../workflows/data/simplewiki-100/Belgium.txt | 59 ++++++++ .../workflows/data/simplewiki-100/Berry.txt | 8 ++ .../workflows/data/simplewiki-100/Biology.txt | 9 ++ .../data/simplewiki-100/Black pudding.txt | 8 ++ .../workflows/data/simplewiki-100/Black.txt | 7 + .../workflows/data/simplewiki-100/Boil.txt | 2 + .../data/simplewiki-100/Boot device.txt | 6 + .../workflows/data/simplewiki-100/Boot.txt | 3 + .../data/simplewiki-100/Bootlace.txt | 0 .../data/simplewiki-100/Bootstrap.txt | 0 .../workflows/data/simplewiki-100/Botany.txt | 5 + .../workflows/data/simplewiki-100/Bottle.txt | 2 + .../workflows/data/simplewiki-100/Brazil.txt | 23 +++ .../data/simplewiki-100/Breakfast sausage.txt | 19 +++ .../workflows/data/simplewiki-100/Britain.txt | 0 .../data/simplewiki-100/British English.txt | 15 ++ .../workflows/data/simplewiki-100/Browser.txt | 2 + .../data/simplewiki-100/Bubonic plague.txt | 24 ++++ .../data/simplewiki-100/Calculus.txt | 30 ++++ .../data/simplewiki-100/Cartography.txt | 8 ++ .../data/simplewiki-100/Catharism.txt | 16 +++ .../simplewiki-100/Census of Marine Life.txt | 3 + .../workflows/data/simplewiki-100/Chat.txt | 4 + .../data/simplewiki-100/Chemistry.txt | 22 +++ .../workflows/data/simplewiki-100/China.txt | 45 ++++++ .../workflows/data/simplewiki-100/Chinese.txt | 2 + .../workflows/data/simplewiki-100/Chorizo.txt | 6 + .../data/simplewiki-100/Church (building).txt | 23 +++ .../workflows/data/simplewiki-100/Cities.txt | 0 .../workflows/data/simplewiki-100/City.txt | 34 +++++ .../workflows/data/simplewiki-100/Civics.txt | 4 + .../simplewiki-100/Classical Elements.txt | 0 .../data/simplewiki-100/Classical element.txt | 4 + .../workflows/data/simplewiki-100/Coin.txt | 9 ++ .../data/simplewiki-100/Colchester.txt | 11 ++ .../workflows/data/simplewiki-100/Comedy.txt | 30 ++++ .../workflows/data/simplewiki-100/Comet.txt | 12 ++ .../data/simplewiki-100/Compound.txt | 1 + .../data/simplewiki-100/Computer science.txt | 16 +++ .../data/simplewiki-100/Computer.txt | 54 +++++++ .../simplewiki-100/Conceptual metaphor.txt | 8 ++ .../data/simplewiki-100/Contact network.txt | 2 + .../data/simplewiki-100/Continent.txt | 24 ++++ .../workflows/data/simplewiki-100/Cooking.txt | 9 ++ .../data/simplewiki-100/Cosmology.txt | 12 ++ .../data/simplewiki-100/Countries.txt | 0 .../workflows/data/simplewiki-100/Country.txt | 19 +++ .../data/simplewiki-100/Creativity.txt | 5 + .../workflows/data/simplewiki-100/Creator.txt | 3 + .../workflows/data/simplewiki-100/Crime.txt | 22 +++ .../workflows/data/simplewiki-100/Crust.txt | 3 + .github/workflows/data/simplewiki-100/Cup.txt | 3 + .../workflows/data/simplewiki-100/Farming.txt | 28 ++++ .../workflows/data/simplewiki-100/Maize.txt | 8 ++ .../data/simplewiki-100/Native American.txt | 42 ++++++ .../data/simplewiki-100/Time Cube.txt | 6 + .../data/simplewiki-500/1 (number).txt | 8 ++ .github/workflows/data/simplewiki-500/A.txt | 15 ++ .../data/simplewiki-500/Abbreviation.txt | 4 + .../simplewiki-500/Abrahamic religions.txt | 1 + .../data/simplewiki-500/Acceleration.txt | 26 ++++ .../data/simplewiki-500/Ad hominem.txt | 10 ++ .../data/simplewiki-500/Addition.txt | 24 ++++ .../data/simplewiki-500/Adobe Illustrator.txt | 6 + .../data/simplewiki-500/Afghanistan.txt | 57 ++++++++ .github/workflows/data/simplewiki-500/Air.txt | 16 +++ .../data/simplewiki-500/Alan Turing.txt | 24 ++++ .../data/simplewiki-500/Alanis Morissette.txt | 16 +++ .../data/simplewiki-500/Albigensian.txt | 0 .../workflows/data/simplewiki-500/Algebra.txt | 51 +++++++ .../data/simplewiki-500/American English.txt | 14 ++ .../American Units Of Measurement.txt | 0 .../workflows/data/simplewiki-500/Anatomy.txt | 9 ++ .../data/simplewiki-500/Andouille.txt | 3 + .../workflows/data/simplewiki-500/Angel.txt | 69 +++++++++ .../workflows/data/simplewiki-500/Angola.txt | 16 +++ .../workflows/data/simplewiki-500/Animal.txt | 18 +++ .../data/simplewiki-500/Animalia.txt | 0 .../data/simplewiki-500/Apple Macintosh.txt | 12 ++ .../workflows/data/simplewiki-500/Apple.txt | 40 ++++++ .../data/simplewiki-500/Application.txt | 2 + .../workflows/data/simplewiki-500/April.txt | 12 ++ .../data/simplewiki-500/Aquaculture.txt | 5 + .../data/simplewiki-500/Archaeology.txt | 27 ++++ .../data/simplewiki-500/Architecture.txt | 14 ++ .../data/simplewiki-500/Argentina.txt | 27 ++++ .../data/simplewiki-500/Arithmetic.txt | 9 ++ .../workflows/data/simplewiki-500/Armenia.txt | 21 +++ .github/workflows/data/simplewiki-500/Art.txt | 34 +++++ .github/workflows/data/simplewiki-500/As.txt | 0 .../data/simplewiki-500/Asteroid.txt | 7 + .../data/simplewiki-500/Astronomy.txt | 64 +++++++++ .../workflows/data/simplewiki-500/Atom.txt | 66 +++++++++ .../workflows/data/simplewiki-500/August.txt | 11 ++ .../data/simplewiki-500/Australia.txt | 78 +++++++++++ .../workflows/data/simplewiki-500/Austria.txt | 33 +++++ .../Autonomous communities of Spain.txt | 6 + .../data/simplewiki-500/Bankruptcy.txt | 27 ++++ .../workflows/data/simplewiki-500/Beard.txt | 4 + .../data/simplewiki-500/Beekeeping.txt | 12 ++ .../workflows/data/simplewiki-500/Beijing.txt | 21 +++ .../workflows/data/simplewiki-500/Being.txt | 4 + .../workflows/data/simplewiki-500/Belgium.txt | 59 ++++++++ .../workflows/data/simplewiki-500/Berry.txt | 8 ++ .../workflows/data/simplewiki-500/Biology.txt | 9 ++ .../data/simplewiki-500/Black pudding.txt | 8 ++ .../workflows/data/simplewiki-500/Black.txt | 7 + .../workflows/data/simplewiki-500/Boil.txt | 2 + .../data/simplewiki-500/Boot device.txt | 6 + .../workflows/data/simplewiki-500/Boot.txt | 3 + .../data/simplewiki-500/Bootlace.txt | 0 .../data/simplewiki-500/Bootstrap.txt | 0 .../workflows/data/simplewiki-500/Botany.txt | 5 + .../workflows/data/simplewiki-500/Bottle.txt | 2 + .../workflows/data/simplewiki-500/Brazil.txt | 23 +++ .../data/simplewiki-500/Breakfast sausage.txt | 19 +++ .../workflows/data/simplewiki-500/Britain.txt | 0 .../data/simplewiki-500/British English.txt | 15 ++ .../workflows/data/simplewiki-500/Browser.txt | 2 + .../data/simplewiki-500/Bubonic plague.txt | 24 ++++ .../data/simplewiki-500/Calculus.txt | 30 ++++ .../data/simplewiki-500/Capitalization.txt | 19 +++ .../data/simplewiki-500/Capitalize.txt | 0 .../data/simplewiki-500/Cartography.txt | 8 ++ .../data/simplewiki-500/Catharism.txt | 16 +++ .../simplewiki-500/Census of Marine Life.txt | 3 + .../workflows/data/simplewiki-500/Chat.txt | 4 + .../workflows/data/simplewiki-500/Cheese.txt | 12 ++ .../data/simplewiki-500/Chemical element.txt | 20 +++ .../data/simplewiki-500/Chemistry.txt | 22 +++ .../workflows/data/simplewiki-500/China.txt | 45 ++++++ .../workflows/data/simplewiki-500/Chinese.txt | 2 + .../workflows/data/simplewiki-500/Chorizo.txt | 6 + .../data/simplewiki-500/Christian.txt | 11 ++ .../data/simplewiki-500/Church (building).txt | 23 +++ .../workflows/data/simplewiki-500/Circle.txt | 34 +++++ .../workflows/data/simplewiki-500/Cities.txt | 0 .../workflows/data/simplewiki-500/City.txt | 34 +++++ .../workflows/data/simplewiki-500/Civics.txt | 4 + .../data/simplewiki-500/Classic Mac OS.txt | 4 + .../simplewiki-500/Classical Elements.txt | 0 .../data/simplewiki-500/Classical element.txt | 4 + .../workflows/data/simplewiki-500/Coin.txt | 9 ++ .../data/simplewiki-500/Colchester.txt | 11 ++ .../workflows/data/simplewiki-500/Comedy.txt | 30 ++++ .../workflows/data/simplewiki-500/Comet.txt | 12 ++ .../data/simplewiki-500/Compound.txt | 1 + .../data/simplewiki-500/Computer science.txt | 16 +++ .../data/simplewiki-500/Computer.txt | 54 +++++++ .../simplewiki-500/Conceptual metaphor.txt | 8 ++ .../data/simplewiki-500/Constitution.txt | 7 + .../data/simplewiki-500/Contact network.txt | 2 + .../data/simplewiki-500/Continent.txt | 24 ++++ .../workflows/data/simplewiki-500/Cooking.txt | 9 ++ .../data/simplewiki-500/Cosmology.txt | 12 ++ .../data/simplewiki-500/Cost of living.txt | 3 + .../data/simplewiki-500/Countries.txt | 0 .../workflows/data/simplewiki-500/Country.txt | 19 +++ .../data/simplewiki-500/Creativity.txt | 5 + .../workflows/data/simplewiki-500/Creator.txt | 3 + .../workflows/data/simplewiki-500/Crime.txt | 22 +++ .../workflows/data/simplewiki-500/Crust.txt | 3 + .../workflows/data/simplewiki-500/Cuba.txt | 39 ++++++ .../workflows/data/simplewiki-500/Cube.txt | 8 ++ .github/workflows/data/simplewiki-500/Cup.txt | 3 + .../data/simplewiki-500/Cytology.txt | 4 + .../workflows/data/simplewiki-500/Dance.txt | 16 +++ .../data/simplewiki-500/Data Device.txt | 0 .../data/simplewiki-500/Deadline.txt | 4 + .../workflows/data/simplewiki-500/Death.txt | 30 ++++ .../data/simplewiki-500/December.txt | 21 +++ .../data/simplewiki-500/Definition.txt | 4 + .../data/simplewiki-500/Degree (geometry).txt | 0 .../workflows/data/simplewiki-500/Denmark.txt | 62 ++++++++ .../workflows/data/simplewiki-500/Depth.txt | 7 + .../workflows/data/simplewiki-500/Devil.txt | 20 +++ .../data/simplewiki-500/Diarrhea.txt | 18 +++ .../data/simplewiki-500/Dictionary.txt | 12 ++ .../data/simplewiki-500/Diesel-electric.txt | 7 + .../data/simplewiki-500/Dimension.txt | 11 ++ .../data/simplewiki-500/Dimensions.txt | 0 .../Dissolution of the monasteries.txt | 6 + .../data/simplewiki-500/Distance.txt | 4 + .../workflows/data/simplewiki-500/Dublin.txt | 11 ++ .../simplewiki-500/Dutton's Speedwords.txt | 6 + .../workflows/data/simplewiki-500/E Prime.txt | 9 ++ .github/workflows/data/simplewiki-500/EAL.txt | 0 .github/workflows/data/simplewiki-500/ESL.txt | 0 .../data/simplewiki-500/Earth science.txt | 7 + .../workflows/data/simplewiki-500/Earth.txt | 56 ++++++++ .../data/simplewiki-500/Ebola virus.txt | 25 ++++ .../data/simplewiki-500/Ecological yield.txt | 2 + .../workflows/data/simplewiki-500/Ecology.txt | 21 +++ .../data/simplewiki-500/Economics.txt | 19 +++ .../workflows/data/simplewiki-500/Editor.txt | 3 + .../workflows/data/simplewiki-500/Egypt.txt | 36 +++++ .../simplewiki-500/Einstein on the Beach.txt | 5 + .../data/simplewiki-500/Elements.txt | 0 .../workflows/data/simplewiki-500/Embassy.txt | 4 + .../data/simplewiki-500/Encyclopedia.txt | 18 +++ .../English As A Second Language.txt | 0 .../workflows/data/simplewiki-500/English.txt | 3 + .../data/simplewiki-500/Et cetera.txt | 3 + .../workflows/data/simplewiki-500/Etc..txt | 0 .github/workflows/data/simplewiki-500/Etc.txt | 0 .../workflows/data/simplewiki-500/Ethics.txt | 8 ++ .../data/simplewiki-500/Ethnic group.txt | 6 + .../workflows/data/simplewiki-500/Europe.txt | 26 ++++ .../data/simplewiki-500/Everything2.txt | 5 + .github/workflows/data/simplewiki-500/Ewe.txt | 2 + .../data/simplewiki-500/Execution.txt | 6 + .../simplewiki-500/Experience economy.txt | 2 + .../data/simplewiki-500/Experiment.txt | 12 ++ .../data/simplewiki-500/Experiments.txt | 0 .github/workflows/data/simplewiki-500/FAQ.txt | 3 + .../workflows/data/simplewiki-500/Farm.txt | 6 + .../workflows/data/simplewiki-500/Farming.txt | 28 ++++ .../data/simplewiki-500/February.txt | 12 ++ .../data/simplewiki-500/Fecund universes.txt | 8 ++ .../data/simplewiki-500/Financial capital.txt | 5 + .../workflows/data/simplewiki-500/Fine.txt | 3 + .../workflows/data/simplewiki-500/Finland.txt | 47 +++++++ .../data/simplewiki-500/First language.txt | 7 + .../workflows/data/simplewiki-500/Fish.txt | 51 +++++++ .../data/simplewiki-500/Fishing net.txt | 5 + .../simplewiki-500/Flame (disambiguation).txt | 3 + .../workflows/data/simplewiki-500/Flaming.txt | 0 .../simplewiki-500/Flesch Reading Ease.txt | 16 +++ .../Flesch-Kincaid Reading Level.txt | 0 .../data/simplewiki-500/Fog Index.txt | 0 .../workflows/data/simplewiki-500/Food.txt | 21 +++ .../data/simplewiki-500/Foot (human).txt | 9 ++ .../workflows/data/simplewiki-500/France.txt | 97 +++++++++++++ .../workflows/data/simplewiki-500/Freedom.txt | 0 .../workflows/data/simplewiki-500/Fruit.txt | 32 +++++ .../workflows/data/simplewiki-500/Frying.txt | 2 + .../workflows/data/simplewiki-500/GFDL.txt | 0 .../GNU Free Documentation License.txt | 18 +++ .../workflows/data/simplewiki-500/Galaxy.txt | 26 ++++ .../workflows/data/simplewiki-500/Gallon.txt | 6 + .../data/simplewiki-500/Geography.txt | 19 +++ .../data/simplewiki-500/Geometry.txt | 12 ++ .../workflows/data/simplewiki-500/Ghost.txt | 18 +++ .../workflows/data/simplewiki-500/Glass.txt | 10 ++ .../workflows/data/simplewiki-500/Goatee.txt | 3 + .../data/simplewiki-500/God's eye view.txt | 3 + .github/workflows/data/simplewiki-500/God.txt | 31 ++++ .../data/simplewiki-500/Goodness.txt | 0 .../workflows/data/simplewiki-500/Google.txt | 17 +++ .../data/simplewiki-500/Government.txt | 29 ++++ .../workflows/data/simplewiki-500/Grammar.txt | 25 ++++ .../data/simplewiki-500/Graph theory.txt | 15 ++ .../data/simplewiki-500/Great Lakes.txt | 20 +++ .../workflows/data/simplewiki-500/Green.txt | 10 ++ .../workflows/data/simplewiki-500/Hair.txt | 29 ++++ .../workflows/data/simplewiki-500/Harbor.txt | 4 + .../data/simplewiki-500/Hard Science.txt | 0 .../data/simplewiki-500/Hawaii (island).txt | 4 + .../data/simplewiki-500/Hawaii Ponoi.txt | 5 + .../workflows/data/simplewiki-500/Hawaii.txt | 22 +++ .../workflows/data/simplewiki-500/Healing.txt | 5 + .../workflows/data/simplewiki-500/Health.txt | 13 ++ .../workflows/data/simplewiki-500/Height.txt | 5 + .../workflows/data/simplewiki-500/Helium.txt | 16 +++ .../workflows/data/simplewiki-500/Herm.txt | 5 + .../data/simplewiki-500/Historian.txt | 10 ++ .../simplewiki-500/History of Australia.txt | 15 ++ .../data/simplewiki-500/History of Spain.txt | 25 ++++ .../workflows/data/simplewiki-500/History.txt | 7 + .../data/simplewiki-500/Home page.txt | 8 ++ .../data/simplewiki-500/Honolulu.txt | 9 ++ .../data/simplewiki-500/Human body.txt | 12 ++ .../data/simplewiki-500/Human death.txt | 0 .../data/simplewiki-500/Hydrogen.txt | 43 ++++++ .../workflows/data/simplewiki-500/IELTS.txt | 2 + .../data/simplewiki-500/ISO 19011.txt | 3 + .../workflows/data/simplewiki-500/Idiom.txt | 58 ++++++++ .github/workflows/data/simplewiki-500/If.txt | 4 + .../data/simplewiki-500/Immigrant.txt | 0 .../data/simplewiki-500/Immigrants.txt | 0 .../data/simplewiki-500/Immune System.txt | 0 .../data/simplewiki-500/Immunology.txt | 22 +++ .../data/simplewiki-500/Imperial Cup.txt | 0 .../data/simplewiki-500/Imperial Gallon.txt | 0 .../workflows/data/simplewiki-500/Inch.txt | 10 ++ .../workflows/data/simplewiki-500/India.txt | 72 ++++++++++ .../data/simplewiki-500/Infinity.txt | 29 ++++ .../data/simplewiki-500/Ingenuity.txt | 0 .github/workflows/data/simplewiki-500/Ink.txt | 5 + .../workflows/data/simplewiki-500/Insult.txt | 8 ++ .../workflows/data/simplewiki-500/Interim.txt | 5 + ...tional English Language Testing System.txt | 0 .../data/simplewiki-500/Internet slang.txt | 9 ++ .../data/simplewiki-500/Internet.txt | 24 ++++ .../workflows/data/simplewiki-500/Ireland.txt | 39 ++++++ .../data/simplewiki-500/Islamic world.txt | 28 ++++ .../workflows/data/simplewiki-500/Island.txt | 7 + .../workflows/data/simplewiki-500/Italian.txt | 2 + .../data/simplewiki-500/Italians.txt | 3 + .../workflows/data/simplewiki-500/Italy.txt | 64 +++++++++ .../workflows/data/simplewiki-500/January.txt | 15 ++ .../workflows/data/simplewiki-500/Japan.txt | 52 +++++++ .../workflows/data/simplewiki-500/Jargon.txt | 6 + .../workflows/data/simplewiki-500/July.txt | 13 ++ .../workflows/data/simplewiki-500/June.txt | 24 ++++ .../workflows/data/simplewiki-500/Jupiter.txt | 57 ++++++++ .../simplewiki-500/Kaho\312\273olawe.txt" | 4 + .../workflows/data/simplewiki-500/Kauai.txt | 4 + .../workflows/data/simplewiki-500/Killing.txt | 3 + .../data/simplewiki-500/Kilometer.txt | 3 + .../data/simplewiki-500/Kilometre.txt | 6 + .../workflows/data/simplewiki-500/King.txt | 6 + .../data/simplewiki-500/Knowledge.txt | 10 ++ .../data/simplewiki-500/L. L. Zamenhof.txt | 10 ++ .../workflows/data/simplewiki-500/Lanai.txt | 7 + .../data/simplewiki-500/Language.txt | 26 ++++ .../data/simplewiki-500/Las Vegas.txt | 16 +++ .../data/simplewiki-500/Latin Language.txt | 0 .github/workflows/data/simplewiki-500/Law.txt | 30 ++++ .../data/simplewiki-500/Leap year.txt | 8 ++ .../workflows/data/simplewiki-500/Leather.txt | 13 ++ .../data/simplewiki-500/Legislature.txt | 4 + .../workflows/data/simplewiki-500/Leisure.txt | 4 + .../workflows/data/simplewiki-500/Library.txt | 25 ++++ .../workflows/data/simplewiki-500/License.txt | 19 +++ .../data/simplewiki-500/Life science.txt | 0 .../workflows/data/simplewiki-500/Life.txt | 47 +++++++ .../workflows/data/simplewiki-500/Like.txt | 19 +++ .../workflows/data/simplewiki-500/Lime.txt | 7 + .../data/simplewiki-500/Linear algebra.txt | 13 ++ .../workflows/data/simplewiki-500/Link.txt | 18 +++ .../List of common elements.txt | 0 .../data/simplewiki-500/List of countries.txt | 61 ++++++++ .../data/simplewiki-500/List of fruits.txt | 4 + .../List of mathematics topics.txt | 1 + .../workflows/data/simplewiki-500/Litre.txt | 17 +++ .../workflows/data/simplewiki-500/Live.txt | 4 + .../workflows/data/simplewiki-500/London.txt | 63 +++++++++ .../simplewiki-500/Ludwik Lejzer Zamenhof.txt | 0 .../data/simplewiki-500/Macadamia Nuts.txt | 3 + .../data/simplewiki-500/Macadamia nut.txt | 8 ++ .../workflows/data/simplewiki-500/Madrid.txt | 25 ++++ .../data/simplewiki-500/Magnifying glass.txt | 7 + .../workflows/data/simplewiki-500/Maize.txt | 8 ++ .../workflows/data/simplewiki-500/Mammal.txt | 47 +++++++ .../workflows/data/simplewiki-500/March.txt | 11 ++ .../data/simplewiki-500/Margarine.txt | 2 + .../workflows/data/simplewiki-500/Mars.txt | 70 ++++++++++ .../workflows/data/simplewiki-500/Mass.txt | 15 ++ .../workflows/data/simplewiki-500/Math.txt | 0 .../data/simplewiki-500/Mathematics.txt | 29 ++++ .../workflows/data/simplewiki-500/Maui.txt | 8 ++ .github/workflows/data/simplewiki-500/May.txt | 13 ++ .../data/simplewiki-500/MediaWiki.txt | 25 ++++ .../data/simplewiki-500/Mediawiki.txt | 0 .../data/simplewiki-500/Mercury (planet).txt | 29 ++++ .../data/simplewiki-500/Metabolism.txt | 8 ++ .../data/simplewiki-500/Metaphor.txt | 37 +++++ .../workflows/data/simplewiki-500/Metre.txt | 4 + .../data/simplewiki-500/Microscope.txt | 9 ++ .../data/simplewiki-500/Microsoft.txt | 10 ++ .../workflows/data/simplewiki-500/Mile.txt | 18 +++ .../data/simplewiki-500/Milky Way.txt | 22 +++ .../data/simplewiki-500/Models of nature.txt | 0 .../simplewiki-500/Models of our universe.txt | 0 .../data/simplewiki-500/Molecule.txt | 10 ++ .../data/simplewiki-500/Moloka'i.txt | 5 + .../workflows/data/simplewiki-500/Money.txt | 17 +++ .../data/simplewiki-500/Montreal.txt | 26 ++++ .../data/simplewiki-500/Moral reasoning.txt | 2 + .../workflows/data/simplewiki-500/Mosque.txt | 87 ++++++++++++ .../data/simplewiki-500/Movement.txt | 13 ++ .../data/simplewiki-500/Multiplication.txt | 9 ++ .../data/simplewiki-500/Multiverse.txt | 9 ++ .../workflows/data/simplewiki-500/Music.txt | 71 ++++++++++ .../data/simplewiki-500/Mustache.txt | 6 + .github/workflows/data/simplewiki-500/NGO.txt | 0 .github/workflows/data/simplewiki-500/NPO.txt | 0 .../workflows/data/simplewiki-500/Name.txt | 48 +++++++ .../data/simplewiki-500/National anthem.txt | 1 + .../data/simplewiki-500/Native American.txt | 42 ++++++ .../data/simplewiki-500/Natural resource.txt | 13 ++ .../workflows/data/simplewiki-500/Natural.txt | 0 .../workflows/data/simplewiki-500/Nature.txt | 11 ++ .../workflows/data/simplewiki-500/Nauru.txt | 15 ++ .../data/simplewiki-500/Nearctic Ecozone.txt | 0 .../data/simplewiki-500/Negative.txt | 2 + .../data/simplewiki-500/Negentropic.txt | 0 .../data/simplewiki-500/Negentropy.txt | 7 + .../workflows/data/simplewiki-500/Neptune.txt | 46 ++++++ .../workflows/data/simplewiki-500/Network.txt | 3 + .../data/simplewiki-500/New York City.txt | 87 ++++++++++++ .../workflows/data/simplewiki-500/Niihau.txt | 9 ++ .../data/simplewiki-500/No Sense.txt | 0 .../data/simplewiki-500/Non-profit.txt | 0 .../data/simplewiki-500/Nonsense.txt | 0 .../data/simplewiki-500/North America.txt | 8 ++ .../workflows/data/simplewiki-500/Noun.txt | 33 +++++ .../data/simplewiki-500/November.txt | 10 ++ .github/workflows/data/simplewiki-500/Now.txt | 6 + .../workflows/data/simplewiki-500/Number.txt | 69 +++++++++ .../workflows/data/simplewiki-500/Numeral.txt | 0 .../simplewiki-500/N\304\223n\304\223.txt" | 7 + .../data/simplewiki-500/O Canada.txt | 3 + .github/workflows/data/simplewiki-500/OK.txt | 10 ++ .../workflows/data/simplewiki-500/Oahu.txt | 8 ++ .../workflows/data/simplewiki-500/October.txt | 12 ++ .github/workflows/data/simplewiki-500/Of.txt | 1 + .github/workflows/data/simplewiki-500/Oil.txt | 6 + .github/workflows/data/simplewiki-500/Ok.txt | 0 .../workflows/data/simplewiki-500/Okay.txt | 0 .../data/simplewiki-500/Open content.txt | 9 ++ .../data/simplewiki-500/Operating system.txt | 21 +++ .../data/simplewiki-500/Orthography.txt | 34 +++++ .../data/simplewiki-500/Our Universe.txt | 0 .../data/simplewiki-500/Oxymoron.txt | 8 ++ .github/workflows/data/simplewiki-500/PRC.txt | 1 + .../workflows/data/simplewiki-500/Page.txt | 2 + .../workflows/data/simplewiki-500/Paradox.txt | 13 ++ .../workflows/data/simplewiki-500/Peace.txt | 17 +++ .../People's Republic of China.txt | 56 ++++++++ .../data/simplewiki-500/Periodic table.txt | 7 + .github/workflows/data/simplewiki-500/Pet.txt | 8 ++ .../workflows/data/simplewiki-500/Phase 3.txt | 0 .../data/simplewiki-500/Philosophy.txt | 48 +++++++ .../workflows/data/simplewiki-500/Physics.txt | 58 ++++++++ .../data/simplewiki-500/Physiology.txt | 4 + .github/workflows/data/simplewiki-500/Pi.txt | 24 ++++ .../workflows/data/simplewiki-500/Pint.txt | 9 ++ .../workflows/data/simplewiki-500/Planet.txt | 18 +++ .../workflows/data/simplewiki-500/Plant.txt | 31 ++++ .../workflows/data/simplewiki-500/Plantae.txt | 0 .../workflows/data/simplewiki-500/Plastic.txt | 25 ++++ .../data/simplewiki-500/Platonic realism.txt | 18 +++ .../workflows/data/simplewiki-500/Police.txt | 25 ++++ .../Political divisions of China.txt | 11 ++ .../data/simplewiki-500/Political party.txt | 13 ++ .../Political problems of China.txt | 10 ++ .../data/simplewiki-500/Politics.txt | 18 +++ .../workflows/data/simplewiki-500/Potato.txt | 14 ++ .../data/simplewiki-500/Power structure.txt | 0 .../data/simplewiki-500/Prediction.txt | 5 + .../simplewiki-500/Probability experiment.txt | 2 + .../data/simplewiki-500/Probability.txt | 10 ++ .../simplewiki-500/Product stewardship.txt | 9 ++ .../workflows/data/simplewiki-500/Product.txt | 2 + .../data/simplewiki-500/Profanity.txt | 41 ++++++ .../workflows/data/simplewiki-500/Program.txt | 2 + .../workflows/data/simplewiki-500/Proof.txt | 3 + .../data/simplewiki-500/Proper noun.txt | 6 + .../workflows/data/simplewiki-500/Protein.txt | 18 +++ .../Provinces and territories of Canada.txt | 5 + .../simplewiki-500/Psychoneuroimmunology.txt | 14 ++ .../workflows/data/simplewiki-500/Quebec.txt | 25 ++++ .github/workflows/data/simplewiki-500/Ram.txt | 2 + .../workflows/data/simplewiki-500/Ranch.txt | 4 + .../data/simplewiki-500/Raw food.txt | 7 + .../data/simplewiki-500/Readability.txt | 30 ++++ .../workflows/data/simplewiki-500/Reading.txt | 8 ++ .../data/simplewiki-500/Recreation.txt | 7 + .github/workflows/data/simplewiki-500/Red.txt | 3 + .../workflows/data/simplewiki-500/Regime.txt | 5 + .../data/simplewiki-500/Religion.txt | 37 +++++ .../workflows/data/simplewiki-500/Reward.txt | 7 + .../data/simplewiki-500/Right angle.txt | 4 + .../workflows/data/simplewiki-500/River.txt | 17 +++ .../data/simplewiki-500/Roman Empire.txt | 21 +++ .../workflows/data/simplewiki-500/Roman.txt | 4 + .../workflows/data/simplewiki-500/Romans.txt | 0 .../data/simplewiki-500/Rudyard Kipling.txt | 5 + .github/workflows/data/simplewiki-500/SUV.txt | 20 +++ .../Sabbath in Christianity.txt | 10 ++ .../workflows/data/simplewiki-500/Sail.txt | 10 ++ .../simplewiki-500/Saint Lawrence River.txt | 8 ++ .../workflows/data/simplewiki-500/Salami.txt | 4 + .../workflows/data/simplewiki-500/Saturn.txt | 47 +++++++ .../workflows/data/simplewiki-500/Sausage.txt | 10 ++ .../data/simplewiki-500/Scarcity.txt | 10 ++ .../workflows/data/simplewiki-500/Science.txt | 22 +++ .../data/simplewiki-500/Scientist.txt | 8 ++ .../data/simplewiki-500/Search engine.txt | 16 +++ .../workflows/data/simplewiki-500/Seed.txt | 15 ++ .../workflows/data/simplewiki-500/Sense.txt | 11 ++ .../data/simplewiki-500/September.txt | 10 ++ .../data/simplewiki-500/Server log.txt | 2 + .../workflows/data/simplewiki-500/Server.txt | 13 ++ .../data/simplewiki-500/Service economy.txt | 8 ++ .../workflows/data/simplewiki-500/Seville.txt | 11 ++ .../workflows/data/simplewiki-500/Sheep.txt | 0 .../workflows/data/simplewiki-500/Simile.txt | 1 + .../workflows/data/simplewiki-500/Site.txt | 11 ++ .../workflows/data/simplewiki-500/Skin.txt | 8 ++ .../workflows/data/simplewiki-500/Slang.txt | 6 + .../workflows/data/simplewiki-500/Slavery.txt | 56 ++++++++ .../data/simplewiki-500/Snapshot Algebra.txt | 0 .../workflows/data/simplewiki-500/Soap.txt | 7 + .../workflows/data/simplewiki-500/Soapbox.txt | 5 + .../data/simplewiki-500/Social capital.txt | 8 ++ .../data/simplewiki-500/Social contract.txt | 5 + .../workflows/data/simplewiki-500/Social.txt | 0 .../workflows/data/simplewiki-500/Society.txt | 10 ++ .../data/simplewiki-500/Solar System.txt | 38 +++++ .../workflows/data/simplewiki-500/Soul.txt | 13 ++ .../workflows/data/simplewiki-500/Sound.txt | 21 +++ .../Spache Readability Formula.txt | 10 ++ .../workflows/data/simplewiki-500/Spanish.txt | 3 + .../data/simplewiki-500/Special English.txt | 13 ++ .../workflows/data/simplewiki-500/Speed.txt | 21 +++ .../data/simplewiki-500/Speedword.txt | 0 .../data/simplewiki-500/Speedwords.txt | 0 .../workflows/data/simplewiki-500/Spirit.txt | 5 + .../workflows/data/simplewiki-500/Sport.txt | 4 + .../workflows/data/simplewiki-500/Sports.txt | 0 .../workflows/data/simplewiki-500/State.txt | 33 +++++ .../data/simplewiki-500/Statistics.txt | 52 +++++++ .../workflows/data/simplewiki-500/Steal.txt | 0 .../workflows/data/simplewiki-500/Stream.txt | 13 ++ .../data/simplewiki-500/String theory.txt | 67 +++++++++ .../data/simplewiki-500/Substance.txt | 7 + .../data/simplewiki-500/Subtraction.txt | 15 ++ .../data/simplewiki-500/Suggestion.txt | 4 + .../workflows/data/simplewiki-500/Summary.txt | 8 ++ .../data/simplewiki-500/Supernatural.txt | 4 + .../workflows/data/simplewiki-500/Symbol.txt | 5 + .../data/simplewiki-500/Synagogue.txt | 10 ++ .../simplewiki-500/Systeme internationale.txt | 0 .../workflows/data/simplewiki-500/Table.txt | 2 + .../workflows/data/simplewiki-500/Taiwan.txt | 34 +++++ .../data/simplewiki-500/Taxonomy.txt | 20 +++ .../workflows/data/simplewiki-500/Temple.txt | 5 + .../data/simplewiki-500/Ten Commandments.txt | 70 ++++++++++ .../simplewiki-500/Terrestrial ecoregion.txt | 0 .../workflows/data/simplewiki-500/Test.txt | 13 ++ .../workflows/data/simplewiki-500/The Sun.txt | 5 + .../workflows/data/simplewiki-500/Theatre.txt | 25 ++++ .../workflows/data/simplewiki-500/Theft.txt | 3 + .../data/simplewiki-500/Time Cube.txt | 6 + .../data/simplewiki-500/Time horizon.txt | 5 + .../data/simplewiki-500/Time limit.txt | 7 + .../data/simplewiki-500/Trademark.txt | 18 +++ .../Tragedy (Greek theatre).txt | 3 + .../workflows/data/simplewiki-500/Tree.txt | 82 +++++++++++ .github/workflows/data/simplewiki-500/UK.txt | 0 .../workflows/data/simplewiki-500/US Cup.txt | 0 .../workflows/data/simplewiki-500/US Foot.txt | 0 .../data/simplewiki-500/US Pound.txt | 0 .../workflows/data/simplewiki-500/US Yard.txt | 0 .../data/simplewiki-500/US gallon.txt | 0 .github/workflows/data/simplewiki-500/USA.txt | 1 + .../simplewiki-500/Unit of measurement.txt | 30 ++++ .../data/simplewiki-500/United Kingdom.txt | 83 +++++++++++ .../United States customary units.txt | 12 ++ .../data/simplewiki-500/Universe.txt | 63 +++++++++ .../workflows/data/simplewiki-500/Uranus.txt | 37 +++++ .../Value (personal and cultural).txt | 3 + .../workflows/data/simplewiki-500/Windows.txt | 0 .github/workflows/mini/.env | 66 +++++++++ .github/workflows/mini/docker-compose.yaml | 132 ++++++++++++++++++ .github/workflows/mini/index_docs.sh | 21 +++ .github/workflows/mini/wait_for_healthy.sh | 14 ++ .../mini/wait_for_tasks_completed.sh | 31 ++++ .github/workflows/tests.yaml | 123 ++++++++++++++++ 606 files changed, 9264 insertions(+) create mode 100644 .github/workflows/data/simplewiki-100/A.txt create mode 100644 .github/workflows/data/simplewiki-100/Abbreviation.txt create mode 100644 .github/workflows/data/simplewiki-100/Abrahamic religions.txt create mode 100644 .github/workflows/data/simplewiki-100/Acceleration.txt create mode 100644 .github/workflows/data/simplewiki-100/Ad hominem.txt create mode 100644 .github/workflows/data/simplewiki-100/Addition.txt create mode 100644 .github/workflows/data/simplewiki-100/Adobe Illustrator.txt create mode 100644 .github/workflows/data/simplewiki-100/Afghanistan.txt create mode 100644 .github/workflows/data/simplewiki-100/Air.txt create mode 100644 .github/workflows/data/simplewiki-100/Alan Turing.txt create mode 100644 .github/workflows/data/simplewiki-100/Alanis Morissette.txt create mode 100644 .github/workflows/data/simplewiki-100/Albigensian.txt create mode 100644 .github/workflows/data/simplewiki-100/Algebra.txt create mode 100644 .github/workflows/data/simplewiki-100/American English.txt create mode 100644 .github/workflows/data/simplewiki-100/American Units Of Measurement.txt create mode 100644 .github/workflows/data/simplewiki-100/Anatomy.txt create mode 100644 .github/workflows/data/simplewiki-100/Andouille.txt create mode 100644 .github/workflows/data/simplewiki-100/Angel.txt create mode 100644 .github/workflows/data/simplewiki-100/Angola.txt create mode 100644 .github/workflows/data/simplewiki-100/Animal.txt create mode 100644 .github/workflows/data/simplewiki-100/Animalia.txt create mode 100644 .github/workflows/data/simplewiki-100/Apple.txt create mode 100644 .github/workflows/data/simplewiki-100/Application.txt create mode 100644 .github/workflows/data/simplewiki-100/April.txt create mode 100644 .github/workflows/data/simplewiki-100/Aquaculture.txt create mode 100644 .github/workflows/data/simplewiki-100/Archaeology.txt create mode 100644 .github/workflows/data/simplewiki-100/Architecture.txt create mode 100644 .github/workflows/data/simplewiki-100/Argentina.txt create mode 100644 .github/workflows/data/simplewiki-100/Arithmetic.txt create mode 100644 .github/workflows/data/simplewiki-100/Armenia.txt create mode 100644 .github/workflows/data/simplewiki-100/Art.txt create mode 100644 .github/workflows/data/simplewiki-100/As.txt create mode 100644 .github/workflows/data/simplewiki-100/Asteroid.txt create mode 100644 .github/workflows/data/simplewiki-100/Astronomy.txt create mode 100644 .github/workflows/data/simplewiki-100/Atom.txt create mode 100644 .github/workflows/data/simplewiki-100/August.txt create mode 100644 .github/workflows/data/simplewiki-100/Australia.txt create mode 100644 .github/workflows/data/simplewiki-100/Austria.txt create mode 100644 .github/workflows/data/simplewiki-100/Autonomous communities of Spain.txt create mode 100644 .github/workflows/data/simplewiki-100/Bankruptcy.txt create mode 100644 .github/workflows/data/simplewiki-100/Beard.txt create mode 100644 .github/workflows/data/simplewiki-100/Beekeeping.txt create mode 100644 .github/workflows/data/simplewiki-100/Beijing.txt create mode 100644 .github/workflows/data/simplewiki-100/Being.txt create mode 100644 .github/workflows/data/simplewiki-100/Belgium.txt create mode 100644 .github/workflows/data/simplewiki-100/Berry.txt create mode 100644 .github/workflows/data/simplewiki-100/Biology.txt create mode 100644 .github/workflows/data/simplewiki-100/Black pudding.txt create mode 100644 .github/workflows/data/simplewiki-100/Black.txt create mode 100644 .github/workflows/data/simplewiki-100/Boil.txt create mode 100644 .github/workflows/data/simplewiki-100/Boot device.txt create mode 100644 .github/workflows/data/simplewiki-100/Boot.txt create mode 100644 .github/workflows/data/simplewiki-100/Bootlace.txt create mode 100644 .github/workflows/data/simplewiki-100/Bootstrap.txt create mode 100644 .github/workflows/data/simplewiki-100/Botany.txt create mode 100644 .github/workflows/data/simplewiki-100/Bottle.txt create mode 100644 .github/workflows/data/simplewiki-100/Brazil.txt create mode 100644 .github/workflows/data/simplewiki-100/Breakfast sausage.txt create mode 100644 .github/workflows/data/simplewiki-100/Britain.txt create mode 100644 .github/workflows/data/simplewiki-100/British English.txt create mode 100644 .github/workflows/data/simplewiki-100/Browser.txt create mode 100644 .github/workflows/data/simplewiki-100/Bubonic plague.txt create mode 100644 .github/workflows/data/simplewiki-100/Calculus.txt create mode 100644 .github/workflows/data/simplewiki-100/Cartography.txt create mode 100644 .github/workflows/data/simplewiki-100/Catharism.txt create mode 100644 .github/workflows/data/simplewiki-100/Census of Marine Life.txt create mode 100644 .github/workflows/data/simplewiki-100/Chat.txt create mode 100644 .github/workflows/data/simplewiki-100/Chemistry.txt create mode 100644 .github/workflows/data/simplewiki-100/China.txt create mode 100644 .github/workflows/data/simplewiki-100/Chinese.txt create mode 100644 .github/workflows/data/simplewiki-100/Chorizo.txt create mode 100644 .github/workflows/data/simplewiki-100/Church (building).txt create mode 100644 .github/workflows/data/simplewiki-100/Cities.txt create mode 100644 .github/workflows/data/simplewiki-100/City.txt create mode 100644 .github/workflows/data/simplewiki-100/Civics.txt create mode 100644 .github/workflows/data/simplewiki-100/Classical Elements.txt create mode 100644 .github/workflows/data/simplewiki-100/Classical element.txt create mode 100644 .github/workflows/data/simplewiki-100/Coin.txt create mode 100644 .github/workflows/data/simplewiki-100/Colchester.txt create mode 100644 .github/workflows/data/simplewiki-100/Comedy.txt create mode 100644 .github/workflows/data/simplewiki-100/Comet.txt create mode 100644 .github/workflows/data/simplewiki-100/Compound.txt create mode 100644 .github/workflows/data/simplewiki-100/Computer science.txt create mode 100644 .github/workflows/data/simplewiki-100/Computer.txt create mode 100644 .github/workflows/data/simplewiki-100/Conceptual metaphor.txt create mode 100644 .github/workflows/data/simplewiki-100/Contact network.txt create mode 100644 .github/workflows/data/simplewiki-100/Continent.txt create mode 100644 .github/workflows/data/simplewiki-100/Cooking.txt create mode 100644 .github/workflows/data/simplewiki-100/Cosmology.txt create mode 100644 .github/workflows/data/simplewiki-100/Countries.txt create mode 100644 .github/workflows/data/simplewiki-100/Country.txt create mode 100644 .github/workflows/data/simplewiki-100/Creativity.txt create mode 100644 .github/workflows/data/simplewiki-100/Creator.txt create mode 100644 .github/workflows/data/simplewiki-100/Crime.txt create mode 100644 .github/workflows/data/simplewiki-100/Crust.txt create mode 100644 .github/workflows/data/simplewiki-100/Cup.txt create mode 100644 .github/workflows/data/simplewiki-100/Farming.txt create mode 100644 .github/workflows/data/simplewiki-100/Maize.txt create mode 100644 .github/workflows/data/simplewiki-100/Native American.txt create mode 100644 .github/workflows/data/simplewiki-100/Time Cube.txt create mode 100644 .github/workflows/data/simplewiki-500/1 (number).txt create mode 100644 .github/workflows/data/simplewiki-500/A.txt create mode 100644 .github/workflows/data/simplewiki-500/Abbreviation.txt create mode 100644 .github/workflows/data/simplewiki-500/Abrahamic religions.txt create mode 100644 .github/workflows/data/simplewiki-500/Acceleration.txt create mode 100644 .github/workflows/data/simplewiki-500/Ad hominem.txt create mode 100644 .github/workflows/data/simplewiki-500/Addition.txt create mode 100644 .github/workflows/data/simplewiki-500/Adobe Illustrator.txt create mode 100644 .github/workflows/data/simplewiki-500/Afghanistan.txt create mode 100644 .github/workflows/data/simplewiki-500/Air.txt create mode 100644 .github/workflows/data/simplewiki-500/Alan Turing.txt create mode 100644 .github/workflows/data/simplewiki-500/Alanis Morissette.txt create mode 100644 .github/workflows/data/simplewiki-500/Albigensian.txt create mode 100644 .github/workflows/data/simplewiki-500/Algebra.txt create mode 100644 .github/workflows/data/simplewiki-500/American English.txt create mode 100644 .github/workflows/data/simplewiki-500/American Units Of Measurement.txt create mode 100644 .github/workflows/data/simplewiki-500/Anatomy.txt create mode 100644 .github/workflows/data/simplewiki-500/Andouille.txt create mode 100644 .github/workflows/data/simplewiki-500/Angel.txt create mode 100644 .github/workflows/data/simplewiki-500/Angola.txt create mode 100644 .github/workflows/data/simplewiki-500/Animal.txt create mode 100644 .github/workflows/data/simplewiki-500/Animalia.txt create mode 100644 .github/workflows/data/simplewiki-500/Apple Macintosh.txt create mode 100644 .github/workflows/data/simplewiki-500/Apple.txt create mode 100644 .github/workflows/data/simplewiki-500/Application.txt create mode 100644 .github/workflows/data/simplewiki-500/April.txt create mode 100644 .github/workflows/data/simplewiki-500/Aquaculture.txt create mode 100644 .github/workflows/data/simplewiki-500/Archaeology.txt create mode 100644 .github/workflows/data/simplewiki-500/Architecture.txt create mode 100644 .github/workflows/data/simplewiki-500/Argentina.txt create mode 100644 .github/workflows/data/simplewiki-500/Arithmetic.txt create mode 100644 .github/workflows/data/simplewiki-500/Armenia.txt create mode 100644 .github/workflows/data/simplewiki-500/Art.txt create mode 100644 .github/workflows/data/simplewiki-500/As.txt create mode 100644 .github/workflows/data/simplewiki-500/Asteroid.txt create mode 100644 .github/workflows/data/simplewiki-500/Astronomy.txt create mode 100644 .github/workflows/data/simplewiki-500/Atom.txt create mode 100644 .github/workflows/data/simplewiki-500/August.txt create mode 100644 .github/workflows/data/simplewiki-500/Australia.txt create mode 100644 .github/workflows/data/simplewiki-500/Austria.txt create mode 100644 .github/workflows/data/simplewiki-500/Autonomous communities of Spain.txt create mode 100644 .github/workflows/data/simplewiki-500/Bankruptcy.txt create mode 100644 .github/workflows/data/simplewiki-500/Beard.txt create mode 100644 .github/workflows/data/simplewiki-500/Beekeeping.txt create mode 100644 .github/workflows/data/simplewiki-500/Beijing.txt create mode 100644 .github/workflows/data/simplewiki-500/Being.txt create mode 100644 .github/workflows/data/simplewiki-500/Belgium.txt create mode 100644 .github/workflows/data/simplewiki-500/Berry.txt create mode 100644 .github/workflows/data/simplewiki-500/Biology.txt create mode 100644 .github/workflows/data/simplewiki-500/Black pudding.txt create mode 100644 .github/workflows/data/simplewiki-500/Black.txt create mode 100644 .github/workflows/data/simplewiki-500/Boil.txt create mode 100644 .github/workflows/data/simplewiki-500/Boot device.txt create mode 100644 .github/workflows/data/simplewiki-500/Boot.txt create mode 100644 .github/workflows/data/simplewiki-500/Bootlace.txt create mode 100644 .github/workflows/data/simplewiki-500/Bootstrap.txt create mode 100644 .github/workflows/data/simplewiki-500/Botany.txt create mode 100644 .github/workflows/data/simplewiki-500/Bottle.txt create mode 100644 .github/workflows/data/simplewiki-500/Brazil.txt create mode 100644 .github/workflows/data/simplewiki-500/Breakfast sausage.txt create mode 100644 .github/workflows/data/simplewiki-500/Britain.txt create mode 100644 .github/workflows/data/simplewiki-500/British English.txt create mode 100644 .github/workflows/data/simplewiki-500/Browser.txt create mode 100644 .github/workflows/data/simplewiki-500/Bubonic plague.txt create mode 100644 .github/workflows/data/simplewiki-500/Calculus.txt create mode 100644 .github/workflows/data/simplewiki-500/Capitalization.txt create mode 100644 .github/workflows/data/simplewiki-500/Capitalize.txt create mode 100644 .github/workflows/data/simplewiki-500/Cartography.txt create mode 100644 .github/workflows/data/simplewiki-500/Catharism.txt create mode 100644 .github/workflows/data/simplewiki-500/Census of Marine Life.txt create mode 100644 .github/workflows/data/simplewiki-500/Chat.txt create mode 100644 .github/workflows/data/simplewiki-500/Cheese.txt create mode 100644 .github/workflows/data/simplewiki-500/Chemical element.txt create mode 100644 .github/workflows/data/simplewiki-500/Chemistry.txt create mode 100644 .github/workflows/data/simplewiki-500/China.txt create mode 100644 .github/workflows/data/simplewiki-500/Chinese.txt create mode 100644 .github/workflows/data/simplewiki-500/Chorizo.txt create mode 100644 .github/workflows/data/simplewiki-500/Christian.txt create mode 100644 .github/workflows/data/simplewiki-500/Church (building).txt create mode 100644 .github/workflows/data/simplewiki-500/Circle.txt create mode 100644 .github/workflows/data/simplewiki-500/Cities.txt create mode 100644 .github/workflows/data/simplewiki-500/City.txt create mode 100644 .github/workflows/data/simplewiki-500/Civics.txt create mode 100644 .github/workflows/data/simplewiki-500/Classic Mac OS.txt create mode 100644 .github/workflows/data/simplewiki-500/Classical Elements.txt create mode 100644 .github/workflows/data/simplewiki-500/Classical element.txt create mode 100644 .github/workflows/data/simplewiki-500/Coin.txt create mode 100644 .github/workflows/data/simplewiki-500/Colchester.txt create mode 100644 .github/workflows/data/simplewiki-500/Comedy.txt create mode 100644 .github/workflows/data/simplewiki-500/Comet.txt create mode 100644 .github/workflows/data/simplewiki-500/Compound.txt create mode 100644 .github/workflows/data/simplewiki-500/Computer science.txt create mode 100644 .github/workflows/data/simplewiki-500/Computer.txt create mode 100644 .github/workflows/data/simplewiki-500/Conceptual metaphor.txt create mode 100644 .github/workflows/data/simplewiki-500/Constitution.txt create mode 100644 .github/workflows/data/simplewiki-500/Contact network.txt create mode 100644 .github/workflows/data/simplewiki-500/Continent.txt create mode 100644 .github/workflows/data/simplewiki-500/Cooking.txt create mode 100644 .github/workflows/data/simplewiki-500/Cosmology.txt create mode 100644 .github/workflows/data/simplewiki-500/Cost of living.txt create mode 100644 .github/workflows/data/simplewiki-500/Countries.txt create mode 100644 .github/workflows/data/simplewiki-500/Country.txt create mode 100644 .github/workflows/data/simplewiki-500/Creativity.txt create mode 100644 .github/workflows/data/simplewiki-500/Creator.txt create mode 100644 .github/workflows/data/simplewiki-500/Crime.txt create mode 100644 .github/workflows/data/simplewiki-500/Crust.txt create mode 100644 .github/workflows/data/simplewiki-500/Cuba.txt create mode 100644 .github/workflows/data/simplewiki-500/Cube.txt create mode 100644 .github/workflows/data/simplewiki-500/Cup.txt create mode 100644 .github/workflows/data/simplewiki-500/Cytology.txt create mode 100644 .github/workflows/data/simplewiki-500/Dance.txt create mode 100644 .github/workflows/data/simplewiki-500/Data Device.txt create mode 100644 .github/workflows/data/simplewiki-500/Deadline.txt create mode 100644 .github/workflows/data/simplewiki-500/Death.txt create mode 100644 .github/workflows/data/simplewiki-500/December.txt create mode 100644 .github/workflows/data/simplewiki-500/Definition.txt create mode 100644 .github/workflows/data/simplewiki-500/Degree (geometry).txt create mode 100644 .github/workflows/data/simplewiki-500/Denmark.txt create mode 100644 .github/workflows/data/simplewiki-500/Depth.txt create mode 100644 .github/workflows/data/simplewiki-500/Devil.txt create mode 100644 .github/workflows/data/simplewiki-500/Diarrhea.txt create mode 100644 .github/workflows/data/simplewiki-500/Dictionary.txt create mode 100644 .github/workflows/data/simplewiki-500/Diesel-electric.txt create mode 100644 .github/workflows/data/simplewiki-500/Dimension.txt create mode 100644 .github/workflows/data/simplewiki-500/Dimensions.txt create mode 100644 .github/workflows/data/simplewiki-500/Dissolution of the monasteries.txt create mode 100644 .github/workflows/data/simplewiki-500/Distance.txt create mode 100644 .github/workflows/data/simplewiki-500/Dublin.txt create mode 100644 .github/workflows/data/simplewiki-500/Dutton's Speedwords.txt create mode 100644 .github/workflows/data/simplewiki-500/E Prime.txt create mode 100644 .github/workflows/data/simplewiki-500/EAL.txt create mode 100644 .github/workflows/data/simplewiki-500/ESL.txt create mode 100644 .github/workflows/data/simplewiki-500/Earth science.txt create mode 100644 .github/workflows/data/simplewiki-500/Earth.txt create mode 100644 .github/workflows/data/simplewiki-500/Ebola virus.txt create mode 100644 .github/workflows/data/simplewiki-500/Ecological yield.txt create mode 100644 .github/workflows/data/simplewiki-500/Ecology.txt create mode 100644 .github/workflows/data/simplewiki-500/Economics.txt create mode 100644 .github/workflows/data/simplewiki-500/Editor.txt create mode 100644 .github/workflows/data/simplewiki-500/Egypt.txt create mode 100644 .github/workflows/data/simplewiki-500/Einstein on the Beach.txt create mode 100644 .github/workflows/data/simplewiki-500/Elements.txt create mode 100644 .github/workflows/data/simplewiki-500/Embassy.txt create mode 100644 .github/workflows/data/simplewiki-500/Encyclopedia.txt create mode 100644 .github/workflows/data/simplewiki-500/English As A Second Language.txt create mode 100644 .github/workflows/data/simplewiki-500/English.txt create mode 100644 .github/workflows/data/simplewiki-500/Et cetera.txt create mode 100644 .github/workflows/data/simplewiki-500/Etc..txt create mode 100644 .github/workflows/data/simplewiki-500/Etc.txt create mode 100644 .github/workflows/data/simplewiki-500/Ethics.txt create mode 100644 .github/workflows/data/simplewiki-500/Ethnic group.txt create mode 100644 .github/workflows/data/simplewiki-500/Europe.txt create mode 100644 .github/workflows/data/simplewiki-500/Everything2.txt create mode 100644 .github/workflows/data/simplewiki-500/Ewe.txt create mode 100644 .github/workflows/data/simplewiki-500/Execution.txt create mode 100644 .github/workflows/data/simplewiki-500/Experience economy.txt create mode 100644 .github/workflows/data/simplewiki-500/Experiment.txt create mode 100644 .github/workflows/data/simplewiki-500/Experiments.txt create mode 100644 .github/workflows/data/simplewiki-500/FAQ.txt create mode 100644 .github/workflows/data/simplewiki-500/Farm.txt create mode 100644 .github/workflows/data/simplewiki-500/Farming.txt create mode 100644 .github/workflows/data/simplewiki-500/February.txt create mode 100644 .github/workflows/data/simplewiki-500/Fecund universes.txt create mode 100644 .github/workflows/data/simplewiki-500/Financial capital.txt create mode 100644 .github/workflows/data/simplewiki-500/Fine.txt create mode 100644 .github/workflows/data/simplewiki-500/Finland.txt create mode 100644 .github/workflows/data/simplewiki-500/First language.txt create mode 100644 .github/workflows/data/simplewiki-500/Fish.txt create mode 100644 .github/workflows/data/simplewiki-500/Fishing net.txt create mode 100644 .github/workflows/data/simplewiki-500/Flame (disambiguation).txt create mode 100644 .github/workflows/data/simplewiki-500/Flaming.txt create mode 100644 .github/workflows/data/simplewiki-500/Flesch Reading Ease.txt create mode 100644 .github/workflows/data/simplewiki-500/Flesch-Kincaid Reading Level.txt create mode 100644 .github/workflows/data/simplewiki-500/Fog Index.txt create mode 100644 .github/workflows/data/simplewiki-500/Food.txt create mode 100644 .github/workflows/data/simplewiki-500/Foot (human).txt create mode 100644 .github/workflows/data/simplewiki-500/France.txt create mode 100644 .github/workflows/data/simplewiki-500/Freedom.txt create mode 100644 .github/workflows/data/simplewiki-500/Fruit.txt create mode 100644 .github/workflows/data/simplewiki-500/Frying.txt create mode 100644 .github/workflows/data/simplewiki-500/GFDL.txt create mode 100644 .github/workflows/data/simplewiki-500/GNU Free Documentation License.txt create mode 100644 .github/workflows/data/simplewiki-500/Galaxy.txt create mode 100644 .github/workflows/data/simplewiki-500/Gallon.txt create mode 100644 .github/workflows/data/simplewiki-500/Geography.txt create mode 100644 .github/workflows/data/simplewiki-500/Geometry.txt create mode 100644 .github/workflows/data/simplewiki-500/Ghost.txt create mode 100644 .github/workflows/data/simplewiki-500/Glass.txt create mode 100644 .github/workflows/data/simplewiki-500/Goatee.txt create mode 100644 .github/workflows/data/simplewiki-500/God's eye view.txt create mode 100644 .github/workflows/data/simplewiki-500/God.txt create mode 100644 .github/workflows/data/simplewiki-500/Goodness.txt create mode 100644 .github/workflows/data/simplewiki-500/Google.txt create mode 100644 .github/workflows/data/simplewiki-500/Government.txt create mode 100644 .github/workflows/data/simplewiki-500/Grammar.txt create mode 100644 .github/workflows/data/simplewiki-500/Graph theory.txt create mode 100644 .github/workflows/data/simplewiki-500/Great Lakes.txt create mode 100644 .github/workflows/data/simplewiki-500/Green.txt create mode 100644 .github/workflows/data/simplewiki-500/Hair.txt create mode 100644 .github/workflows/data/simplewiki-500/Harbor.txt create mode 100644 .github/workflows/data/simplewiki-500/Hard Science.txt create mode 100644 .github/workflows/data/simplewiki-500/Hawaii (island).txt create mode 100644 .github/workflows/data/simplewiki-500/Hawaii Ponoi.txt create mode 100644 .github/workflows/data/simplewiki-500/Hawaii.txt create mode 100644 .github/workflows/data/simplewiki-500/Healing.txt create mode 100644 .github/workflows/data/simplewiki-500/Health.txt create mode 100644 .github/workflows/data/simplewiki-500/Height.txt create mode 100644 .github/workflows/data/simplewiki-500/Helium.txt create mode 100644 .github/workflows/data/simplewiki-500/Herm.txt create mode 100644 .github/workflows/data/simplewiki-500/Historian.txt create mode 100644 .github/workflows/data/simplewiki-500/History of Australia.txt create mode 100644 .github/workflows/data/simplewiki-500/History of Spain.txt create mode 100644 .github/workflows/data/simplewiki-500/History.txt create mode 100644 .github/workflows/data/simplewiki-500/Home page.txt create mode 100644 .github/workflows/data/simplewiki-500/Honolulu.txt create mode 100644 .github/workflows/data/simplewiki-500/Human body.txt create mode 100644 .github/workflows/data/simplewiki-500/Human death.txt create mode 100644 .github/workflows/data/simplewiki-500/Hydrogen.txt create mode 100644 .github/workflows/data/simplewiki-500/IELTS.txt create mode 100644 .github/workflows/data/simplewiki-500/ISO 19011.txt create mode 100644 .github/workflows/data/simplewiki-500/Idiom.txt create mode 100644 .github/workflows/data/simplewiki-500/If.txt create mode 100644 .github/workflows/data/simplewiki-500/Immigrant.txt create mode 100644 .github/workflows/data/simplewiki-500/Immigrants.txt create mode 100644 .github/workflows/data/simplewiki-500/Immune System.txt create mode 100644 .github/workflows/data/simplewiki-500/Immunology.txt create mode 100644 .github/workflows/data/simplewiki-500/Imperial Cup.txt create mode 100644 .github/workflows/data/simplewiki-500/Imperial Gallon.txt create mode 100644 .github/workflows/data/simplewiki-500/Inch.txt create mode 100644 .github/workflows/data/simplewiki-500/India.txt create mode 100644 .github/workflows/data/simplewiki-500/Infinity.txt create mode 100644 .github/workflows/data/simplewiki-500/Ingenuity.txt create mode 100644 .github/workflows/data/simplewiki-500/Ink.txt create mode 100644 .github/workflows/data/simplewiki-500/Insult.txt create mode 100644 .github/workflows/data/simplewiki-500/Interim.txt create mode 100644 .github/workflows/data/simplewiki-500/International English Language Testing System.txt create mode 100644 .github/workflows/data/simplewiki-500/Internet slang.txt create mode 100644 .github/workflows/data/simplewiki-500/Internet.txt create mode 100644 .github/workflows/data/simplewiki-500/Ireland.txt create mode 100644 .github/workflows/data/simplewiki-500/Islamic world.txt create mode 100644 .github/workflows/data/simplewiki-500/Island.txt create mode 100644 .github/workflows/data/simplewiki-500/Italian.txt create mode 100644 .github/workflows/data/simplewiki-500/Italians.txt create mode 100644 .github/workflows/data/simplewiki-500/Italy.txt create mode 100644 .github/workflows/data/simplewiki-500/January.txt create mode 100644 .github/workflows/data/simplewiki-500/Japan.txt create mode 100644 .github/workflows/data/simplewiki-500/Jargon.txt create mode 100644 .github/workflows/data/simplewiki-500/July.txt create mode 100644 .github/workflows/data/simplewiki-500/June.txt create mode 100644 .github/workflows/data/simplewiki-500/Jupiter.txt create mode 100644 ".github/workflows/data/simplewiki-500/Kaho\312\273olawe.txt" create mode 100644 .github/workflows/data/simplewiki-500/Kauai.txt create mode 100644 .github/workflows/data/simplewiki-500/Killing.txt create mode 100644 .github/workflows/data/simplewiki-500/Kilometer.txt create mode 100644 .github/workflows/data/simplewiki-500/Kilometre.txt create mode 100644 .github/workflows/data/simplewiki-500/King.txt create mode 100644 .github/workflows/data/simplewiki-500/Knowledge.txt create mode 100644 .github/workflows/data/simplewiki-500/L. L. Zamenhof.txt create mode 100644 .github/workflows/data/simplewiki-500/Lanai.txt create mode 100644 .github/workflows/data/simplewiki-500/Language.txt create mode 100644 .github/workflows/data/simplewiki-500/Las Vegas.txt create mode 100644 .github/workflows/data/simplewiki-500/Latin Language.txt create mode 100644 .github/workflows/data/simplewiki-500/Law.txt create mode 100644 .github/workflows/data/simplewiki-500/Leap year.txt create mode 100644 .github/workflows/data/simplewiki-500/Leather.txt create mode 100644 .github/workflows/data/simplewiki-500/Legislature.txt create mode 100644 .github/workflows/data/simplewiki-500/Leisure.txt create mode 100644 .github/workflows/data/simplewiki-500/Library.txt create mode 100644 .github/workflows/data/simplewiki-500/License.txt create mode 100644 .github/workflows/data/simplewiki-500/Life science.txt create mode 100644 .github/workflows/data/simplewiki-500/Life.txt create mode 100644 .github/workflows/data/simplewiki-500/Like.txt create mode 100644 .github/workflows/data/simplewiki-500/Lime.txt create mode 100644 .github/workflows/data/simplewiki-500/Linear algebra.txt create mode 100644 .github/workflows/data/simplewiki-500/Link.txt create mode 100644 .github/workflows/data/simplewiki-500/List of common elements.txt create mode 100644 .github/workflows/data/simplewiki-500/List of countries.txt create mode 100644 .github/workflows/data/simplewiki-500/List of fruits.txt create mode 100644 .github/workflows/data/simplewiki-500/List of mathematics topics.txt create mode 100644 .github/workflows/data/simplewiki-500/Litre.txt create mode 100644 .github/workflows/data/simplewiki-500/Live.txt create mode 100644 .github/workflows/data/simplewiki-500/London.txt create mode 100644 .github/workflows/data/simplewiki-500/Ludwik Lejzer Zamenhof.txt create mode 100644 .github/workflows/data/simplewiki-500/Macadamia Nuts.txt create mode 100644 .github/workflows/data/simplewiki-500/Macadamia nut.txt create mode 100644 .github/workflows/data/simplewiki-500/Madrid.txt create mode 100644 .github/workflows/data/simplewiki-500/Magnifying glass.txt create mode 100644 .github/workflows/data/simplewiki-500/Maize.txt create mode 100644 .github/workflows/data/simplewiki-500/Mammal.txt create mode 100644 .github/workflows/data/simplewiki-500/March.txt create mode 100644 .github/workflows/data/simplewiki-500/Margarine.txt create mode 100644 .github/workflows/data/simplewiki-500/Mars.txt create mode 100644 .github/workflows/data/simplewiki-500/Mass.txt create mode 100644 .github/workflows/data/simplewiki-500/Math.txt create mode 100644 .github/workflows/data/simplewiki-500/Mathematics.txt create mode 100644 .github/workflows/data/simplewiki-500/Maui.txt create mode 100644 .github/workflows/data/simplewiki-500/May.txt create mode 100644 .github/workflows/data/simplewiki-500/MediaWiki.txt create mode 100644 .github/workflows/data/simplewiki-500/Mediawiki.txt create mode 100644 .github/workflows/data/simplewiki-500/Mercury (planet).txt create mode 100644 .github/workflows/data/simplewiki-500/Metabolism.txt create mode 100644 .github/workflows/data/simplewiki-500/Metaphor.txt create mode 100644 .github/workflows/data/simplewiki-500/Metre.txt create mode 100644 .github/workflows/data/simplewiki-500/Microscope.txt create mode 100644 .github/workflows/data/simplewiki-500/Microsoft.txt create mode 100644 .github/workflows/data/simplewiki-500/Mile.txt create mode 100644 .github/workflows/data/simplewiki-500/Milky Way.txt create mode 100644 .github/workflows/data/simplewiki-500/Models of nature.txt create mode 100644 .github/workflows/data/simplewiki-500/Models of our universe.txt create mode 100644 .github/workflows/data/simplewiki-500/Molecule.txt create mode 100644 .github/workflows/data/simplewiki-500/Moloka'i.txt create mode 100644 .github/workflows/data/simplewiki-500/Money.txt create mode 100644 .github/workflows/data/simplewiki-500/Montreal.txt create mode 100644 .github/workflows/data/simplewiki-500/Moral reasoning.txt create mode 100644 .github/workflows/data/simplewiki-500/Mosque.txt create mode 100644 .github/workflows/data/simplewiki-500/Movement.txt create mode 100644 .github/workflows/data/simplewiki-500/Multiplication.txt create mode 100644 .github/workflows/data/simplewiki-500/Multiverse.txt create mode 100644 .github/workflows/data/simplewiki-500/Music.txt create mode 100644 .github/workflows/data/simplewiki-500/Mustache.txt create mode 100644 .github/workflows/data/simplewiki-500/NGO.txt create mode 100644 .github/workflows/data/simplewiki-500/NPO.txt create mode 100644 .github/workflows/data/simplewiki-500/Name.txt create mode 100644 .github/workflows/data/simplewiki-500/National anthem.txt create mode 100644 .github/workflows/data/simplewiki-500/Native American.txt create mode 100644 .github/workflows/data/simplewiki-500/Natural resource.txt create mode 100644 .github/workflows/data/simplewiki-500/Natural.txt create mode 100644 .github/workflows/data/simplewiki-500/Nature.txt create mode 100644 .github/workflows/data/simplewiki-500/Nauru.txt create mode 100644 .github/workflows/data/simplewiki-500/Nearctic Ecozone.txt create mode 100644 .github/workflows/data/simplewiki-500/Negative.txt create mode 100644 .github/workflows/data/simplewiki-500/Negentropic.txt create mode 100644 .github/workflows/data/simplewiki-500/Negentropy.txt create mode 100644 .github/workflows/data/simplewiki-500/Neptune.txt create mode 100644 .github/workflows/data/simplewiki-500/Network.txt create mode 100644 .github/workflows/data/simplewiki-500/New York City.txt create mode 100644 .github/workflows/data/simplewiki-500/Niihau.txt create mode 100644 .github/workflows/data/simplewiki-500/No Sense.txt create mode 100644 .github/workflows/data/simplewiki-500/Non-profit.txt create mode 100644 .github/workflows/data/simplewiki-500/Nonsense.txt create mode 100644 .github/workflows/data/simplewiki-500/North America.txt create mode 100644 .github/workflows/data/simplewiki-500/Noun.txt create mode 100644 .github/workflows/data/simplewiki-500/November.txt create mode 100644 .github/workflows/data/simplewiki-500/Now.txt create mode 100644 .github/workflows/data/simplewiki-500/Number.txt create mode 100644 .github/workflows/data/simplewiki-500/Numeral.txt create mode 100644 ".github/workflows/data/simplewiki-500/N\304\223n\304\223.txt" create mode 100644 .github/workflows/data/simplewiki-500/O Canada.txt create mode 100644 .github/workflows/data/simplewiki-500/OK.txt create mode 100644 .github/workflows/data/simplewiki-500/Oahu.txt create mode 100644 .github/workflows/data/simplewiki-500/October.txt create mode 100644 .github/workflows/data/simplewiki-500/Of.txt create mode 100644 .github/workflows/data/simplewiki-500/Oil.txt create mode 100644 .github/workflows/data/simplewiki-500/Ok.txt create mode 100644 .github/workflows/data/simplewiki-500/Okay.txt create mode 100644 .github/workflows/data/simplewiki-500/Open content.txt create mode 100644 .github/workflows/data/simplewiki-500/Operating system.txt create mode 100644 .github/workflows/data/simplewiki-500/Orthography.txt create mode 100644 .github/workflows/data/simplewiki-500/Our Universe.txt create mode 100644 .github/workflows/data/simplewiki-500/Oxymoron.txt create mode 100644 .github/workflows/data/simplewiki-500/PRC.txt create mode 100644 .github/workflows/data/simplewiki-500/Page.txt create mode 100644 .github/workflows/data/simplewiki-500/Paradox.txt create mode 100644 .github/workflows/data/simplewiki-500/Peace.txt create mode 100644 .github/workflows/data/simplewiki-500/People's Republic of China.txt create mode 100644 .github/workflows/data/simplewiki-500/Periodic table.txt create mode 100644 .github/workflows/data/simplewiki-500/Pet.txt create mode 100644 .github/workflows/data/simplewiki-500/Phase 3.txt create mode 100644 .github/workflows/data/simplewiki-500/Philosophy.txt create mode 100644 .github/workflows/data/simplewiki-500/Physics.txt create mode 100644 .github/workflows/data/simplewiki-500/Physiology.txt create mode 100644 .github/workflows/data/simplewiki-500/Pi.txt create mode 100644 .github/workflows/data/simplewiki-500/Pint.txt create mode 100644 .github/workflows/data/simplewiki-500/Planet.txt create mode 100644 .github/workflows/data/simplewiki-500/Plant.txt create mode 100644 .github/workflows/data/simplewiki-500/Plantae.txt create mode 100644 .github/workflows/data/simplewiki-500/Plastic.txt create mode 100644 .github/workflows/data/simplewiki-500/Platonic realism.txt create mode 100644 .github/workflows/data/simplewiki-500/Police.txt create mode 100644 .github/workflows/data/simplewiki-500/Political divisions of China.txt create mode 100644 .github/workflows/data/simplewiki-500/Political party.txt create mode 100644 .github/workflows/data/simplewiki-500/Political problems of China.txt create mode 100644 .github/workflows/data/simplewiki-500/Politics.txt create mode 100644 .github/workflows/data/simplewiki-500/Potato.txt create mode 100644 .github/workflows/data/simplewiki-500/Power structure.txt create mode 100644 .github/workflows/data/simplewiki-500/Prediction.txt create mode 100644 .github/workflows/data/simplewiki-500/Probability experiment.txt create mode 100644 .github/workflows/data/simplewiki-500/Probability.txt create mode 100644 .github/workflows/data/simplewiki-500/Product stewardship.txt create mode 100644 .github/workflows/data/simplewiki-500/Product.txt create mode 100644 .github/workflows/data/simplewiki-500/Profanity.txt create mode 100644 .github/workflows/data/simplewiki-500/Program.txt create mode 100644 .github/workflows/data/simplewiki-500/Proof.txt create mode 100644 .github/workflows/data/simplewiki-500/Proper noun.txt create mode 100644 .github/workflows/data/simplewiki-500/Protein.txt create mode 100644 .github/workflows/data/simplewiki-500/Provinces and territories of Canada.txt create mode 100644 .github/workflows/data/simplewiki-500/Psychoneuroimmunology.txt create mode 100644 .github/workflows/data/simplewiki-500/Quebec.txt create mode 100644 .github/workflows/data/simplewiki-500/Ram.txt create mode 100644 .github/workflows/data/simplewiki-500/Ranch.txt create mode 100644 .github/workflows/data/simplewiki-500/Raw food.txt create mode 100644 .github/workflows/data/simplewiki-500/Readability.txt create mode 100644 .github/workflows/data/simplewiki-500/Reading.txt create mode 100644 .github/workflows/data/simplewiki-500/Recreation.txt create mode 100644 .github/workflows/data/simplewiki-500/Red.txt create mode 100644 .github/workflows/data/simplewiki-500/Regime.txt create mode 100644 .github/workflows/data/simplewiki-500/Religion.txt create mode 100644 .github/workflows/data/simplewiki-500/Reward.txt create mode 100644 .github/workflows/data/simplewiki-500/Right angle.txt create mode 100644 .github/workflows/data/simplewiki-500/River.txt create mode 100644 .github/workflows/data/simplewiki-500/Roman Empire.txt create mode 100644 .github/workflows/data/simplewiki-500/Roman.txt create mode 100644 .github/workflows/data/simplewiki-500/Romans.txt create mode 100644 .github/workflows/data/simplewiki-500/Rudyard Kipling.txt create mode 100644 .github/workflows/data/simplewiki-500/SUV.txt create mode 100644 .github/workflows/data/simplewiki-500/Sabbath in Christianity.txt create mode 100644 .github/workflows/data/simplewiki-500/Sail.txt create mode 100644 .github/workflows/data/simplewiki-500/Saint Lawrence River.txt create mode 100644 .github/workflows/data/simplewiki-500/Salami.txt create mode 100644 .github/workflows/data/simplewiki-500/Saturn.txt create mode 100644 .github/workflows/data/simplewiki-500/Sausage.txt create mode 100644 .github/workflows/data/simplewiki-500/Scarcity.txt create mode 100644 .github/workflows/data/simplewiki-500/Science.txt create mode 100644 .github/workflows/data/simplewiki-500/Scientist.txt create mode 100644 .github/workflows/data/simplewiki-500/Search engine.txt create mode 100644 .github/workflows/data/simplewiki-500/Seed.txt create mode 100644 .github/workflows/data/simplewiki-500/Sense.txt create mode 100644 .github/workflows/data/simplewiki-500/September.txt create mode 100644 .github/workflows/data/simplewiki-500/Server log.txt create mode 100644 .github/workflows/data/simplewiki-500/Server.txt create mode 100644 .github/workflows/data/simplewiki-500/Service economy.txt create mode 100644 .github/workflows/data/simplewiki-500/Seville.txt create mode 100644 .github/workflows/data/simplewiki-500/Sheep.txt create mode 100644 .github/workflows/data/simplewiki-500/Simile.txt create mode 100644 .github/workflows/data/simplewiki-500/Site.txt create mode 100644 .github/workflows/data/simplewiki-500/Skin.txt create mode 100644 .github/workflows/data/simplewiki-500/Slang.txt create mode 100644 .github/workflows/data/simplewiki-500/Slavery.txt create mode 100644 .github/workflows/data/simplewiki-500/Snapshot Algebra.txt create mode 100644 .github/workflows/data/simplewiki-500/Soap.txt create mode 100644 .github/workflows/data/simplewiki-500/Soapbox.txt create mode 100644 .github/workflows/data/simplewiki-500/Social capital.txt create mode 100644 .github/workflows/data/simplewiki-500/Social contract.txt create mode 100644 .github/workflows/data/simplewiki-500/Social.txt create mode 100644 .github/workflows/data/simplewiki-500/Society.txt create mode 100644 .github/workflows/data/simplewiki-500/Solar System.txt create mode 100644 .github/workflows/data/simplewiki-500/Soul.txt create mode 100644 .github/workflows/data/simplewiki-500/Sound.txt create mode 100644 .github/workflows/data/simplewiki-500/Spache Readability Formula.txt create mode 100644 .github/workflows/data/simplewiki-500/Spanish.txt create mode 100644 .github/workflows/data/simplewiki-500/Special English.txt create mode 100644 .github/workflows/data/simplewiki-500/Speed.txt create mode 100644 .github/workflows/data/simplewiki-500/Speedword.txt create mode 100644 .github/workflows/data/simplewiki-500/Speedwords.txt create mode 100644 .github/workflows/data/simplewiki-500/Spirit.txt create mode 100644 .github/workflows/data/simplewiki-500/Sport.txt create mode 100644 .github/workflows/data/simplewiki-500/Sports.txt create mode 100644 .github/workflows/data/simplewiki-500/State.txt create mode 100644 .github/workflows/data/simplewiki-500/Statistics.txt create mode 100644 .github/workflows/data/simplewiki-500/Steal.txt create mode 100644 .github/workflows/data/simplewiki-500/Stream.txt create mode 100644 .github/workflows/data/simplewiki-500/String theory.txt create mode 100644 .github/workflows/data/simplewiki-500/Substance.txt create mode 100644 .github/workflows/data/simplewiki-500/Subtraction.txt create mode 100644 .github/workflows/data/simplewiki-500/Suggestion.txt create mode 100644 .github/workflows/data/simplewiki-500/Summary.txt create mode 100644 .github/workflows/data/simplewiki-500/Supernatural.txt create mode 100644 .github/workflows/data/simplewiki-500/Symbol.txt create mode 100644 .github/workflows/data/simplewiki-500/Synagogue.txt create mode 100644 .github/workflows/data/simplewiki-500/Systeme internationale.txt create mode 100644 .github/workflows/data/simplewiki-500/Table.txt create mode 100644 .github/workflows/data/simplewiki-500/Taiwan.txt create mode 100644 .github/workflows/data/simplewiki-500/Taxonomy.txt create mode 100644 .github/workflows/data/simplewiki-500/Temple.txt create mode 100644 .github/workflows/data/simplewiki-500/Ten Commandments.txt create mode 100644 .github/workflows/data/simplewiki-500/Terrestrial ecoregion.txt create mode 100644 .github/workflows/data/simplewiki-500/Test.txt create mode 100644 .github/workflows/data/simplewiki-500/The Sun.txt create mode 100644 .github/workflows/data/simplewiki-500/Theatre.txt create mode 100644 .github/workflows/data/simplewiki-500/Theft.txt create mode 100644 .github/workflows/data/simplewiki-500/Time Cube.txt create mode 100644 .github/workflows/data/simplewiki-500/Time horizon.txt create mode 100644 .github/workflows/data/simplewiki-500/Time limit.txt create mode 100644 .github/workflows/data/simplewiki-500/Trademark.txt create mode 100644 .github/workflows/data/simplewiki-500/Tragedy (Greek theatre).txt create mode 100644 .github/workflows/data/simplewiki-500/Tree.txt create mode 100644 .github/workflows/data/simplewiki-500/UK.txt create mode 100644 .github/workflows/data/simplewiki-500/US Cup.txt create mode 100644 .github/workflows/data/simplewiki-500/US Foot.txt create mode 100644 .github/workflows/data/simplewiki-500/US Pound.txt create mode 100644 .github/workflows/data/simplewiki-500/US Yard.txt create mode 100644 .github/workflows/data/simplewiki-500/US gallon.txt create mode 100644 .github/workflows/data/simplewiki-500/USA.txt create mode 100644 .github/workflows/data/simplewiki-500/Unit of measurement.txt create mode 100644 .github/workflows/data/simplewiki-500/United Kingdom.txt create mode 100644 .github/workflows/data/simplewiki-500/United States customary units.txt create mode 100644 .github/workflows/data/simplewiki-500/Universe.txt create mode 100644 .github/workflows/data/simplewiki-500/Uranus.txt create mode 100644 .github/workflows/data/simplewiki-500/Value (personal and cultural).txt create mode 100644 .github/workflows/data/simplewiki-500/Windows.txt create mode 100644 .github/workflows/mini/.env create mode 100644 .github/workflows/mini/docker-compose.yaml create mode 100755 .github/workflows/mini/index_docs.sh create mode 100755 .github/workflows/mini/wait_for_healthy.sh create mode 100755 .github/workflows/mini/wait_for_tasks_completed.sh create mode 100644 .github/workflows/tests.yaml diff --git a/.github/workflows/data/simplewiki-100/A.txt b/.github/workflows/data/simplewiki-100/A.txt new file mode 100644 index 000000000..dcc31563d --- /dev/null +++ b/.github/workflows/data/simplewiki-100/A.txt @@ -0,0 +1,15 @@ +A is the first letter of the English alphabet. The small letter, a, is used as a lowercase vowel. +Overview. +When it is spoken, ā is said as a long a, a diphthong of ĕ and y. A is similar to Alpha of the Greek alphabet. That is not surprising, because it means the same sound. "Alpha and Omega" (the last letter of the Greek alphabet) means from beginning to the end. In musical notation, the letter A is the symbol of a note in the scale, below B and above G. +A is the letter that was used to represent a team in an old TV show, The A-Team. A capital a is written "A". Use a capital A at the start of a sentence if writing. A is also a musical note, sometimes referred to as "La". +Origin. +The letter 'A' was in the Phoenician alphabet's aleph. This symbol came from a simple picture of an ox head. +This Phoenician letter helped make the basic blocks of later types of the letter. The Greeks later modified this letter and used it as their letter alpha. The Greek alphabet was used by the Etruscans in northern Italy, and the Romans later modified the Etruscan alphabet for their own language. +Using the letter. +The letter A has six different sounds. It can sound like æ, in the International Phonetic Alphabet, such as the word "pad". Other sounds of this letter are in the words "father", which developed into another sound, such as in the word "ace". +Use in mathematics. +In algebra, the letter "A" along with other letters at the beginning of the alphabet is used to represent known quantities. +In geometry, capital A, B, C etc. are used to label line segments, lines, etc. Also, A is typically used as one of the letters to label an angle in a triangle. +Its letter shape is referred to abstractly in Sir William Vallance Douglas Hodge's 5th postulate, the basis for, as one of the Millennium Prize Problems, the Hodge Conjecture. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Abbreviation.txt b/.github/workflows/data/simplewiki-100/Abbreviation.txt new file mode 100644 index 000000000..f9cdff783 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Abbreviation.txt @@ -0,0 +1,4 @@ +An abbreviation is a shorter way to write a word or phrase. People use abbreviations for words that they write a lot. The English language occasionally uses the apostrophe mark ' to show that a word is written in a shorter way, but some abbreviations do not use this mark. More often, they use periods, especially the ones that come from the Latin language. Common Latin abbreviations include i.e. [id est] "that is", e.g. [exempli gratia] "for example", and et al. [et alia] "and others". +Some new abbreviations have been created by scientists, by workers in companies and governments, and by people using the Internet. +People often think words are abbreviations when in fact they are acronyms. +Here are examples of common acronyms: The word "radar" is an acronym for "Radio Detection and Ranging". The name of the large computer company IBM comes from the words "International Business Machines". The name of the part of the United States government that sends rockets into outer space is NASA, from the words "National Aeronautics and Space Administration". When people using the Internet think that something is very funny, they sometimes write "LOL" to mean "Laughing Out Loud". People sometimes write "ASAP" for "As Soon As Possible". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Abrahamic religions.txt b/.github/workflows/data/simplewiki-100/Abrahamic religions.txt new file mode 100644 index 000000000..f3c5d44ff --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Abrahamic religions.txt @@ -0,0 +1 @@ +The Abrahamic religions, are a group of religious communities of faith that claim descent from the religion of the ancient Israelites and the worship of the God of Abraham. The Abrahamic religions are monotheistic. The term derives from patriarch Abraham, a major biblical figure from The Hebrew Bible. The major Abrahamic religions are Christianity, Islam, Judaism and the Bahá'í Faith. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Acceleration.txt b/.github/workflows/data/simplewiki-100/Acceleration.txt new file mode 100644 index 000000000..2416f3995 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Acceleration.txt @@ -0,0 +1,26 @@ +Acceleration is a measure of how fast velocity changes. Acceleration is the change of velocity divided by the change of time. Acceleration is a vector, and therefore includes both a size and a direction. Acceleration is also a change in speed and direction, there is: +Speed (a scalar quantity) (uses no direction) +Velocity (a vector quantity) (uses a direction) +The measurement of how fast acceleration changes is called jerk. +Finding acceleration. +Acceleration is the rate of change of the velocity of an object. Acceleration formula_1 can be found by using: +formula_2 +where +formula_3 is the velocity at the start +formula_4 is the velocity at the end +formula_5 is the time at the start +formula_6 is the time at the end +Sometimes the change in velocity formula_7 is written as Δformula_8. Sometimes the change in time formula_9 is written as Δt. +In difficult situations, the acceleration can be calculated using mathematics: in calculus, acceleration is the derivative of the velocity (with respect to time), formula_10. +Units of measurement. +Acceleration has its own units of measurement. For example, if velocity is measured in meters per second, and if time is measured in seconds, then acceleration is measured in meters per second squared (m/s2). +Other words. +Acceleration can be positive or negative. When the acceleration is negative (but the velocity does not change direction), it is sometimes called deceleration. For example, when a car brakes it decelerates. Physicists usually only use the word "acceleration". +Newton's second law of motion. +Newton's laws of motion are rules for how things move. These rules are called "laws of motion". Isaac Newton is the scientist who first wrote down the main laws of motion. +According to Newton's Second Law of Motion, the force something needs to accelerate an object depends on the object's mass (the amount of "stuff" the object is made from or how "heavy" it is). +The formula of Newton's Second Law of Motion is formula_11, +where formula_12 is the acceleration, formula_13 is the force, and formula_14 the mass. +This formula is very well-known, and it is very important in physics. Newton's Second Law of Motion, in short "Newton's Second Law", is often one of the first things that physics students learn. +Deceleration. +Deceleration is negative or backwards acceleration. This means that something slows down instead of speeding up. For example, when a car brakes, it is decelerating. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Ad hominem.txt b/.github/workflows/data/simplewiki-100/Ad hominem.txt new file mode 100644 index 000000000..a51049419 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Ad hominem.txt @@ -0,0 +1,10 @@ +Ad hominem is a Latin word for a type of argument. It is a word often used in rhetoric. Rhetoric is the science of speaking well, and convincing other people of your ideas. +Translated to English, "ad hominem" means "against the person". In other words, when someone makes an ad hominem, they are attacking the person they are arguing against, instead of what they are saying. +The term comes from the Latin word "homo", which means human. "Hominem" is a gender neutral version of the word "homo". In ancient Rome it referred to all free men, or in other words, all free human beings. +Ad hominem can be a way to use reputation, rumors and hearsay to change the minds of other people listening. When a social network has already excluded or exiled one person, or applied a negative label to them, this can work more often. +It is most of the time considered to be a weak and poor argument. In courts and in diplomacy ad hominems are not appreciated. +Ad hominems are not wrong every time. For example, when people think that someone can't be trusted, things that they have said previously can be doubted. +What an ad hominem argument looks like. +In logic, a proof is something that starts with premises, and goes through a few logical arguments, to reach a conclusion. +Ad hominem example. +In this example it can be seen that the (completely unrelated) fact that person A is uneducated and poor is used to prove that abortion should not be illegal. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Addition.txt b/.github/workflows/data/simplewiki-100/Addition.txt new file mode 100644 index 000000000..983d43022 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Addition.txt @@ -0,0 +1,24 @@ +"Not to be confused with building extensions which are also called additions." +In mathematics, addition, represented by the symbol formula_1, is an operation which combines two mathematical objects together into another mathematical object of the same type, called the sum. Addition can occur with simple objects such as numbers, and more complex objects and concepts such as vectors and matrices. +Addition has several important properties. It is commutative, meaning that the order of the operands does not matter, and it is associative, meaning that when one adds more than two numbers, the order in which addition is performed does not matter (see "Summation"). Repeated addition of 1 is the same as counting. Addition of 0 does not change a number. Addition also obeys predictable rules concerning related operations such as subtraction and multiplication. +Arithmetic. +In arithmetic, addition is the operation where two or more numbers called "addends" are used to make a new number, which is the "sum" or total that is expressed with the equals sign. The symbol for addition, in infix notation, is the plus sign "+" placed between the operands. +Counting examples. +For example, there are objects in two groups (as shown on the right). The objects are various shapes, where one group has 3 of them while the other has 2. When the two groups combine into one, the overall amount (sum) of the shapes become 5. +Vertical Addition. +The animation above demonstrates the addition of seven hundred eighty six and four hundred sixty seven. The problem's digits have been separated into units, tens and hundreds (see Place value). +First, the units 6 and 7 are added together to make 13, so 1 ten and 3 units, with the 3 written below and the 1 ten carried to the tens column. Next, in the tens column, the 1, 8, and 6 are added together to make 15 tens, so 1 hundred and 5 tens, with the 5 written below and the 1 hundred carried to the hundreds column. Finally, in the hundreds column, 1, 7, and 4 are added together to make 12 hundreds, so 1 thousand and 2 hundreds, with the 2 written below and the 1 thousand carried to the thousand column. The final answer is thus one thousand two hundred fifty three. +A measurement example. +Tom wants to know the distance between his house and Sally's house. Bob's house is 300 m east of Tom's house. Sally's house is 120 m east of Bob's house: +Tom's house formula_2 300 m formula_3 Bob's house formula_2 120 m formula_3 Sally's house +The distance from Tom's house to Sally's house can be found by adding the distances already measured. The distance from Tom's house to Bob's house, added to the distance from Bob's house to Sally's house, is the same as the distance from Tom's house to Sally's house. That is, 300 m plus 120 m. +formula_6 +Hence Sally's house is 420 m to the east of Tom's house. +Properties. +Commutativity. +Addition is commutative, meaning that one can change the order of the numbers in a sum, but still get the same result. For example: +formula_7 and formula_8 +Associativity. +Addition is also associative, which means that when three or more numbers are added together, the order of operations does not change the result. +For any three numbers formula_9, formula_10, and formula_11, it is true that formula_12. For example, formula_13 and formula_14, which means that formula_15. +When addition is used together with other operations, the order of operations becomes important. In the standard order of operations, addition is to be computed later than exponentiation, roots, multiplication and division, but has equal importance as subtraction. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Adobe Illustrator.txt b/.github/workflows/data/simplewiki-100/Adobe Illustrator.txt new file mode 100644 index 000000000..974f5d840 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Adobe Illustrator.txt @@ -0,0 +1,6 @@ +Adobe Illustrator is a computer program for making graphic design and illustrations. It is made by Adobe Systems. Pictures created in "Adobe Illustrator" can be made bigger or smaller, and look exactly the same at any size. It works well with the rest of the products with the Adobe name. +History. +It was first released in 1986 for the Apple Macintosh. The latest version is Adobe Illustrator 2024, part of Adobe Creative Cloud. +References. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Afghanistan.txt b/.github/workflows/data/simplewiki-100/Afghanistan.txt new file mode 100644 index 000000000..20b6152ff --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Afghanistan.txt @@ -0,0 +1,57 @@ +Afghanistan, officially the Islamic Emirate of Afghanistan is a country in Asia. It borders Pakistan in the south and east, Iran in the west, Turkmenistan, Uzbekistan and Tajikistan in the north, and China in the far northeast. Kabul is the capital city. +Afghanistan is currently governed by the Taliban, after the collapse of the internationally recognized Islamic Republic of Afghanistan on 15 August 2021. In early times people passed through it with animals and other goods as it connected China and India with Central Asia and the Middle East. More recently, Afghanistan has been damaged by many years of war. There are not enough jobs. +The country is around in size. There are 40.976 million people in Afghanistan. There are about 3 million Afghan refugees (people who had to leave the country) in Pakistan and Iran. In 2011 Kabul, had about 3,691,400 people living in it. +United Nations Human Rights Council decided in October 2021 to appoint an independent expert, known as a United Nations special rapporteur on Afghanistan, to find out about violations carried out by the Taliban and others who are now part of a big conflict. +Economy. +The economy does not have growth (as April 2024), of that kind that is called GDP growth, according to Worldbank.org. In regard to the mining industry: In 2024, Chinese engineers broke ground for a mine; "The deposit is estimated to [... have] 11.5 million tons of copper ore". +Geography. +Afghanistan has many mountains. The mountains are called the Hindu Kush and Himalayas. The tallest mountain in Afghanistan is Mount Nowshak. There are plains (which have soil that is good for growing plants) and foothills. Parts of the country are also dry, especially the Registan Desert. Afghanistan has snow and glaciers in the mountains. Amu Darya is the big water stream, or river. +The country has a lot of a valuable stone called lapis lazuli, which was used to decorate the tomb of the Egyptian pharaoh Tutankhamun. +Climate. +Afghanistan has a continental climate with hot summers and cold winters. Having no water sometimes causes problems for farmers. Sandstorms happen a lot in the desert. +Plants and animals. +Southern Afghanistan has not many plants because it is dry. There are more plants where there is more water. Mountains have forests of pine and fir, cedar, oak, walnut, alder, and ash trees. +Afghanistan's wild animals live in the mountains. There are wolves, foxes, jackals, bears, and wild goats, gazelles, wild dogs, camels, and wild cats such as the snow leopard in the country. The birds are falcons, eagles and vultures. The Rhesus Macaque and the red flying squirrel are also in Afghanistan. +Many years of war, hunting, and years of no water have killed animals in Afghanistan. There used to be tigers in Afghanistan, but now there aren't any. Bears and wolves are almost gone. +People and culture. +Many people have moved through or invaded the land of Afghanistan. Today's people of Afghanistan are known as "Afghans". +The largest group of people are the Pashtuns. These make up about half the population. Tajiks are the second-largest ethnic group, making up about one-fifth of the population. Before the 20th century, Tajiks were called Sarts and some come from Iranian peoples. Most Pashtuns are also related to the Iranian peoples. Some Pashtuns and Tajiks marry each other but at the same time they are rivals. The third-largest group are the Hazaras. They are native to the Hazaristan area in central Afghanistan. The country's other groups include the Uzbek, Aimaq, Turkmen, Nuristani, Baloch, and Pashayi. +Dari-Persian and Pashto are the official languages of Afghanistan. Many people speak both languages. Both are Indo-European languages from the Iranian languages sub-family. They are usually written with the Arabic alphabet. Uzbek and Turkmen are widely spoken in the north and Nuristani and Pashai are spoken in the east. Around 99% of Afghans follow the religion of Islam. +Afghanistan is a largely rural country. This means there are only a few major cities. About one fifth of the population live in cities. Kabul, the capital, is the largest city. It is south of the Hindu Kush range and alongside the Kabul River. Other cities are Kandahar, Herat, Mazar-e Sharif, and Jalalabad. The rural population is made up of farmers and nomads. The farmers live mainly in small villages along the rivers. The nomads live in tents while moving from place to place with their animals and belongings. Some people live in the high central mountains. Some live in the deserts in the south and southwest. Millions of people left Afghanistan to get away from the wars that happened in the late 20th and early 21st centuries. Most of them went to Pakistan and Iran. +History. +Afghanistan is in the path of important trade routes that connect southern and eastern Asia to Europe and the Middle East. Because of this, many empire builders have tried to rule over the area. Signs that these emperors were near Afghanistan still exist in many parts of the country. Afghanistan is near what used to be the Silk Road. The peoples of Afghanistan helped develop major world religions, traded and exchanged many products, and sometimes controlled politics and culture in Asia. +Prehistory. +Archaeologists digging a cave in Badakhshan discovered that people lived in the country as early as 100,000 years ago. They found the skull of a Neanderthal, or early human, as well as tools from about 30,000 years ago. In other parts of Afghanistan, archaeologists uncovered pottery and tools that are 4,000 to 11,000 years old—evidence that Afghans were among the first people in the world to grow crops and raise animals. +Farmers and herders settled in the plains surrounding the Hindu Kush as early as 7000 B.C. These people may have grown rich off the lapis lazuli they found along riverbeds, which they traded to early city sites to the west, across the Iranian plateau and Mesopotamia. As farms and villages grew these ancient people started irrigation (digging ditches for water so it flows to crops) that allowed them to grow crops on the northern Afghanistan desert plains. This civilization (advanced state of organization) is today called BMAC (Bactria–Margiana Archaeological Complex), or the "Oxus civilization". +The Oxus civilization expanded as far east as western edge of the Indus Valley during the period between 2200 and 1800 B.C. These people, who were the ancestors of the Indo-Aryans, used the term "Aryan" to identify their ethnicity, culture, and religion. Scholars know this when they read the ancient texts of these people; the Avesta of Iranic peoples and the Vedas of Indo-Aryans. +Zoroaster, the founder of the Zoroastrian religion, the world's earliest monotheistic religion, (meaning a religion believing in one god) lived in the area (somewhere north of today's Afghanistan), around 1000 B.C. +Ancient history. +Before the middle of the sixth century BCE, Afghanistan was held by the Medes. Then the Achaemenids took over control of the land and made it part of the Persian empire. Alexander the great defeated and conquered the Persian Empire in 330 BCE. He founded some cities in the area. The people used Macedonian culture and language. After Alexander, Seleucids, Mauryas, Greco-Bactrians, Scythians, Kushans, Parthians, Guptas and Sassanians ruled the area. +Kushans spread Buddhism from India in the 1st century BCE, and Buddhism remained an important religion in the area until the Islamic conquest in the 7th century CE. +The Buddhas of Bamiyan were giant statues, a reminder of Buddhism in Afghanistan. They were destroyed by the Taliban in 2001. There were international protests. The Taliban believe that the ancient statues were un-Islamic and that they had a right to destroy them. +Medieval history. +Arabs introduced Islam in the 7th century and slowly began spreading the new religion. In the 9th and 10th centuries, many local Islamic dynasties rose to power inside Afghanistan. One of the earliest was the Tahirids, whose kingdom included Balkh and Herat; they established independence from the Abbasids in 820. The Tahirids were succeeded in about 867 by the Saffarids of Zaranj in western Afghanistan. Local princes in the north soon became feudatories of the powerful Samanids, who ruled from Bukhara. From 872 to 999, north of the Hindu Kush in Afghanistan enjoyed a golden age under Samanid rule. +In the 10th century, the local Ghaznavids turned Ghazni into their capital and firmly established Islam throughout all areas of Afghanistan, except the Kafiristan region in the northeast. Mahmud of Ghazni, a great Ghaznavid sultan, conquered the Multan and Punjab region, and carried raids into the heart of India. Mohammed bin Abdul Jabbar Utbi, a historian from the 10th century, wrote that thousands of "Afghans" were in the Ghaznavid army. The Ghaznavid dynasty was replaced by the Ghorids of Ghor in the late 12th century, who reconquered Ghaznavid territory in the name of Islam and ruled it until 1206. The Ghorid army also included ethnic Afghans. +Afghanistan was recognized as "Khorasan", meaning "land of the rising sun," which was a prosperous and independent geographic region reaching as far as the Indus River. +All the major cities of modern Afghanistan were centers of science and culture in the past. The New Persian literature arose and flourished in the area. The early Persian poets such as Rudaki were from what is now Afghanistan. Moreover, Ferdowsi, the author of Shahnameh, the national epic of Iran, and Rumi, the famous Sufi poet, were also from here. It has produced scientists such as Avicenna, Al-Farabi, Al-Biruni, Omar Khayyám, Al-Khwarizmi, and many others who are widely known for their important contributions in areas such as mathematics, astronomy, medicine, physics, geography, and geology. It remained the cultural capital of Persia until the devastating Mongol invasion in the 13th century. +Timur, the Turkic conqueror, took over in the end of the 14th century and began to rebuild cities in this region. Timur's successors, the Timurids (1405–1507), were great patrons of learning and the arts who enriched their capital city of Herat with fine buildings. Under their rule Afghanistan enjoyed peace and prosperity. +Between south of the Hindu Kush and the Indus River (today's Pakistan) was the native land of the Afghan tribes. They called this land "Afghanistan" (meaning "land of the Afghans"). The Afghans ruled the rich northern Indian subcontinent with their capital at Delhi. From the 16th to the early 18th century, Afghanistan was disputed between the Safavids of Isfahan and the Mughals of Agra who had replaced the Lodi and Suri Afghan rulers in India. The Safavids and Mughals occasionally oppressed the native Afghans but at the same time the Afghans used each empire to punish the other. In 1709, the Hotaki Afghans rose to power and completely defeated the Persian Empire. Then they marched towards the Mughals of India and defeated them with the help of the Afsharid forces under Nader Shah Afshar. +In 1747, after Nader Shah of Persia was killed, a great leader named Ahmad Shah Durrani united all the different Muslim tribes and established the Afghan Empire (Durrani Empire). He is considered the founding father of the modern state of Afghanistan while Mirwais Hotak is the grandfather of the nation. +Since the 1800s. +During the 1800s, Afghanistan became a buffer zone between two powerful empires, the British Indian Empire and the Russian Empire. As British India advanced into Afghanistan, Russia felt threatened and expanded southward across Central Asia. To stop the Russian advance, Britain tried to make Afghanistan part of its empire but the Afghans fought wars with British-led Indians from 1839 to 1842 and from 1878 to 1880. After the third war in 1919, Afghanistan under King Amanullah gained respect and recognition as a completely independent state. +The Kingdom of Afghanistan was a constitutional monarchy established in 1926. It was the successor state to the Emirate of Afghanistan. On 27 September 1934, during the reign of Zahir Shah, the Kingdom of Afghanistan joined the League of Nations. During World War II, Afghanistan remained neutral. It pursued a diplomatic policy of non-alignment. +The creation of Pakistan in 1947 as its eastern neighbor created problems. In 1973, political crises led to the overthrow of the king. The country's new leader ended the monarchy and made Afghanistan a republic. In 1978, a Communist political party supported by the Soviet Union seized control of Afghanistan's government. This move sparked rebellions throughout the country. The government asked the Soviet Union for military assistance. The Soviets took advantage of the situation and invaded Afghanistan in December 1979. +Most people in Afghanistan opposed the sudden Soviet presence in their country. For nearly a decade, anti-Communist Islamic forces known as "Mujahideen" were trained in Pakistan to fight the Soviets and the Afghan government. The United States and other anti-Soviet countries supported the Mujahideen. In the long war, over one million Afghan civilians were killed. The Soviet Army also lost more than 15,000 soldiers in that war. Millions of Afghans left their country to stay safe in neighboring Pakistan and Iran. In 1989 the Soviet Army withdrew the last of its troops. +After the Soviets left in 1989, the Afghan Civil War started; different Afghan warlords began fighting for control of the country. The warlords received support from other countries, including neighboring Pakistan and Iran. A very conservative Islamic group known as the Taliban emerged in an attempt to end the civil war. By the late 1990s the Taliban had gained control over 95% of Afghanistan. A group known as the Northern Alliance, based in northern Afghanistan near the border with Tajikistan, continued to fight against the Taliban. +The Taliban ruled Afghanistan according to their strict version of Islamic law. People whom the Taliban believed violated these laws were given cruel punishments. In addition, the Taliban completely restricted the rights of women. Because of such policies, most countries refused to recognize the Taliban government. Only Pakistan, Saudi Arabia and the United Arab Emirates accepted them as the official government. The Taliban also angered other countries by allowing suspected terrorists to live freely in Afghanistan. Among them were Osama bin Laden and members of the al-Qaeda terrorist network. In September 2001, the United States blamed bin Laden for the terrorist attacks on the World Trade Center in New York City and the Pentagon outside Washington, D.C. The Taliban refused to hand him over to the United States. In response, the United States and its allies launched a bombing campaign against al-Qaeda in October 2001. Within months the Taliban abandoned Kabul, and a new government led by Hamid Karzai came to power, but fighting between the Taliban and US-led armies continued. Taliban fighters have gone into Afghanistan from neighboring Pakistan. Afghans accused Pakistan's military of being behind the Taliban militants but Pakistan rejected this and stated that a stable Afghanistan is in Pakistan's own interest. +In December 2004, Hamid Karzai became the first democratically elected president of Afghanistan. NATO began rebuilding Afghanistan, including its military and government institutions. Many schools and colleges were built. Freedom for women improved. Women can study, work, drive, and run for office. Many Afghan women work as politicians, some are ministers while at least one is a mayor. Others have opened businesses, or joined the military or police. Afghanistan's economy has also improved dramatically, and NATO agreed in 2012 to help the country for at least another 10 years after 2014. Afghanistan improved diplomatic ties with many countries in the world and continues. +In August 2021, the Cabinet of Afghanistan lost its power. Most of the country fell to the Taliban on 15 August 2021 with President Ashraf Ghani escaping the country. As of 18 August 2021, the former government's last remaining holdout is the Panjshir Valley. +Government. +Since the Taliban captured Kabul on 15 August 2021, the governance of Afghanistan is disputed between the Islamic Emirate of Afghanistan and the Islamic Republic of Afghanistan. +According to Transparency International, Afghanistan remains in the top most corrupt countries list. +Provinces. +As of 2004, there are thirty-four provinces. Each province is divided into districts. (For cities see List of cities in Afghanistan.) +Notes. +<templatestyles src="Reflist/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Air.txt b/.github/workflows/data/simplewiki-100/Air.txt new file mode 100644 index 000000000..f6329795a --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Air.txt @@ -0,0 +1,16 @@ +Air is the Earth's atmosphere. Air is a mixture of many gases and tiny dust particles. It is the clear gas in which living things live and breathe. It has an indefinite shape and volume. It has mass and weight, because it is matter. The weight of air creates atmospheric pressure. There is no air in outer space. +Earth's atmosphere is composed of about 78 percent nitrogen, 21 percent oxygen, 0.9 percent argon, and 0.1 percent other gases. +Animals live and need to breathe the oxygen in the atmosphere. In breathing, the lungs put oxygen into the blood, and send back carbon dioxide to the air. Plants need the carbon dioxide in the air to live. They give off the oxygen that we breathe. Without it animals die of asphyxia. +Air can be polluted by some gases (such as carbon monoxide, hydrocarbons, and nitrogen oxides), smoke, and ash. This air pollution causes various problems including smog, acid rain and global warming. It can damage people's health and the environment. There are debates about whether or not to act upon climate change, but soon enough the Earth will heat up too much, causing it to become too hot and not support life. Some say fewer people would die of cold weather, and that is true but there is already a huge amount of people dying from heat and that number is and will keep increasing more and more. +Since early times, air has been used to create technology. Ships moved with sails and windmills used the mechanical motion of air. Aircraft use propellers to move air over a wing, which allows them to fly. Pneumatics use air pressure to move things. Since the late 1900s, air power is also used to generate electricity. +Air is invisible: it cannot be seen by the eye, though a shimmering in hot air can be seen. +Air is one of the 4 classical elements (water, air, earth and fire). +Main history. +Original atmosphere. +At first it was mainly a hydrogen atmosphere. It has changed dramatically on several occasions—for example, the Great Oxygenation Event 2.4 billion years ago, greatly increased oxygen in the atmosphere from practically no oxygen to levels closer to present day. Humans have also contributed to significant changes in atmospheric composition through air pollution, especially since industrialisation, leading to rapid environmental change such as ozone depletion and global warming. +Second atmosphere. +Out gassing from volcanism, supplemented by gases produced during the late heavy bombardment of Earth by huge asteroids, produced the next atmosphere, consisting largely of nitrogen plus carbon dioxide and inert gases. +Third atmosphere. +The constant re-arrangement of continents by plate tectonics influences the long-term evolution of the atmosphere. Carbon dioxide was transferred to and from large continental carbonate stores. Free oxygen did not exist in the atmosphere until about 2.4 billion years ago. The Great Oxygenation Event is shown by the end of the banded iron formations. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Alan Turing.txt b/.github/workflows/data/simplewiki-100/Alan Turing.txt new file mode 100644 index 000000000..8993627f9 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Alan Turing.txt @@ -0,0 +1,24 @@ +Alan Mathison Turing OBE FRS (London, 23 June 1912 – Wilmslow, Cheshire, 7 June 1954) was an English mathematician and computer scientist. He was born in Maida Vale, London. +Early life and family. +Alan Mathison Turing was born in Maida Vale, London on 23 June 1912. His father was part of a family of merchants from Scotland. His mother, Ethel Sara, was the daughter of an engineer. +Education. +Turing went to St. Michael's, a school at 20 Charles Road, St Leonards-on-sea, when he was five years old. +"This is only a foretaste of what is to come, and only the shadow of what is going to be.” – Alan Turing. +The Stoney family were once prominent landlords in North Tipperary. His mother Ethel Sara Stoney (1881–1976) was daughter of Edward Waller Stoney (Borrisokane, North Tipperary) and Sarah Crawford (Cartron Abbey, Co. Longford), who were Protestant Anglo-Irish gentry. She was educated in Dublin at Alexandra School and College. On 1 October 1907, she married Julius Mathison Turing, who was Reverend John Robert Turing and Fanny Boyd, in Dublin. Alan Turing was born on 23 June 1912. He would go on to be regarded as one of the greatest figures of the twentieth century. +Alan was a brilliant mathematician and cryptographer. He became the founder of modern-day computer science and artificial intelligence. He designed a machine at Bletchley Park to break secret Enigma encrypted messages used by the Nazi German war machine to protect sensitive commercial, diplomatic and military communications during World War 2. This made the single biggest contribution to the Allied victory in the war against Nazi Germany. It possibly saved the lives of an estimated 2 million people, and shortened World War II. +In 2013, almost 60 years later, Turing received a posthumous Royal Pardon from Queen Elizabeth II. Today, the “Turing law” grants an automatic pardon to men who died before the law came into force, making it possible for living convicted gay men to seek pardons for offences now no longer on the statute book. +Turing died in 1954, after being subjected by a British court to chemical castration. He is known to have ended his life at the age of 41 years, by eating an apple laced with cyanide. +Career. +Turing was one of the people who worked on the first computers. He created the theoretical Turing machine in 1936. The machine was imaginary, but it included the idea of a computer program. +Turing was interested in artificial intelligence. He proposed the Turing test, to say when a machine could be called "intelligent". A computer could be said to "think" if a human talking with it could not tell it was a machine. +During World War II, Turing worked with others to break German ciphers (secret messages). He worked for the Government Code and Cypher School (GC&CS) at Bletchley Park, Britain's codebreaking centre that produced Ultra intelligence. +Using cryptanalysis, he helped to break the codes of the Enigma machine. After that, he worked on other German codes. +From 1945 to 1947, Turing worked on the design of the ACE (Automatic Computing Engine) at the National Physical Laboratory. He presented a paper on 19 February 1946. That paper was "the first detailed design of a stored-program computer". Although it was possible to build ACE, there were delays in starting the project. In late 1947 he returned to Cambridge for a sabbatical year. While he was at Cambridge, the Pilot ACE was built without him. It ran its first program on 10 May 1950. +Private life. +Turing was a homosexual man. In 1952, he admitted having had sex with a man in England. At that time, homosexual acts were illegal. Turing was convicted. He had to choose between going to jail and taking hormones to lower his sex drive. He decided to take the hormones. After his punishment, he became impotent. He also grew breasts. +In May 2012, a private member's bill was put before the House of Lords to grant Turing a statutory pardon. In July 2013, the government supported it. A royal pardon was granted on 24 December 2013. +Death. +In 1954, Turing died from cyanide poisoning. The cyanide came from either an apple which was poisoned with cyanide, or from water that had cyanide in it. The reason for the confusion is that the police never tested the apple for cyanide. It is also suspected that he committed suicide. +The treatment forced on him is now believed to be very wrong. It is against medical ethics and international laws of human rights. In August 2009, a petition asking the British Government to apologise to Turing for punishing him for being a homosexual was started. The petition received thousands of signatures. Then Prime Minister, Gordon Brown acknowledged the petition. He called Turing's treatment "appalling". +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Alanis Morissette.txt b/.github/workflows/data/simplewiki-100/Alanis Morissette.txt new file mode 100644 index 000000000..4c4d1ed7d --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Alanis Morissette.txt @@ -0,0 +1,16 @@ +Alanis Nadine Morissette (born June 1, 1974) is a Grammy Award-winning Canadian-American singer and songwriter. She was born in Ottawa, Canada. She began singing in Canada as a teenager in 1990. In 1995, she became popular all over the world. +As a young child in Canada, Morissette began to act on television, including 5 episodes of the long-running series, "You Can't Do That on Television". Her first album was released only in Canada in 1990. +Her first international album was "Jagged Little Pill", released in 1995. It was a rock-influenced album. "Jagged" has sold more than 33 million units globally. It became the best-selling debut album in music history. Her next album, "Supposed Former Infatuation Junkie", was released in 1998. It was a success as well. Morissette took up producing duties for her next albums, which include "Under Rug Swept", "So-Called Chaos" and "Flavors of Entanglement". Morissette has sold more than 60 million albums worldwide. +She also acted in several movies, including Kevin Smith's "Dogma", where she played God. +About her life. +Alanis Morissette was born in Riverside Hospital of Ottawa in Ottawa, Ontario. Her father is French-Canadian. Her mother is from Hungary. She has an older brother, Chad, and a twin brother, Wade, who is 12 minutes younger than she is. Her parents had worked as teachers at a military base in Lahr, Germany. +Morissette became an American citizen in 2005. She is still Canadian citizen. +On May 22, 2010, Morissette married rapper Mario "MC Souleye" Treadway. +Jagged Little Pill. +Morissette has had many albums. Her 1995 album "Jagged Little Pill" became a very popular album. It has sold over 30 million copies worldwide. The album caused Morissette to win four Grammy Awards. The album "Jagged Little Pill" touched many people. +On the album, Morissette sang songs about many different things. These things include: +Discography. +Selected songs. +Morissette has written many songs. Some of her most famous songs are: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Albigensian.txt b/.github/workflows/data/simplewiki-100/Albigensian.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-100/Algebra.txt b/.github/workflows/data/simplewiki-100/Algebra.txt new file mode 100644 index 000000000..083cd3cb9 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Algebra.txt @@ -0,0 +1,51 @@ +Algebra (from Arabic: الجبر, transliterated "al-jabr", meaning "completion") is a part of mathematics. It uses variables to represent a value that is not yet known or can be replaced with any value. When an equals sign (=) is used, this is called an equation. A very simple equation using a variable is: formula_1. In this example, formula_2, or it could also be said that "formula_3 equals five". This is called "solving for" formula_3. +Besides equations, there are inequalities ("less than" and "greater than"). A special type of equation is called the function. This is often used in making graphs because it always turns one input into one output. +Algebra can be used to solve real problems because the rules of algebra work in real life and numbers can be used to represent the values of real things. Physics, engineering and computer programming are areas that use algebra all the time. It is also useful to know in surveying, construction and business, especially accounting. +People who do algebra use the rules of numbers and mathematical operations used on numbers. The simplest are adding, subtracting, multiplying, and dividing. More advanced operations involve exponents, starting with squares and square roots. +Algebra was first used to solve equations and inequalities. Two examples are linear equations (the equation of a straight line, formula_5 or formula_6) and quadratic equations, which has variables that are squared (multiplied by itself, for example: formula_7, formula_8, or formula_9). +History. +Early forms of algebra were developed by the Babylonians and Greek geometers such as Hero of Alexandria. However the word "algebra" is a Latin form of the Arabic word "Al-Jabr" ("casting") and comes from a mathematics book "Al-Maqala fi Hisab-al Jabr wa-al-Muqabilah", ("Essay on the Computation of Casting and Equation") written in the 9th century by a Persian mathematician, Muhammad ibn Mūsā al-Khwārizmī, who was a Muslim born in Khwarizm in Uzbekistan. He flourished under Al-Ma'moun in Baghdad, Iraq through 813-833 CE, and died around 840 CE. The book was brought into Europe and translated into Latin in the 12th century. The book was then given the name "Algebra". (The ending of the mathematician's name, al-Khwarizmi, was changed into a word easier to say in Latin, and became the English word "algorithm"). +Examples. +Here is a simple example of an algebra problem: +Sue has 12 candies, and Ann has 24 candies. They decide to share so that they have the same number of candies. How many candies will each have? +These are the steps you can use to solve the problem: +With practice, algebra can be used when faced with a problem that is too hard to solve any other way. Problems such as building a freeway, designing a cell phone, or finding the cure for a disease all require algebra. +Writing algebra. +As in most parts of mathematics, adding formula_22 to formula_23 (or formula_22 plus formula_23) is written as formula_26; +subtracting formula_23 from formula_22 (or formula_22 minus formula_23) is written as formula_31; +and dividing formula_22 by formula_23 (or formula_22 over formula_23) is written as formula_36 or formula_37. +In algebra, multiplying formula_22 by formula_23 (or formula_22 times formula_23) can be written in 3 different ways: formula_42, formula_43 or just formula_44. All of these notations mean the same thing: formula_22 times formula_23. The symbol "formula_47" used in arithmetic is not used in algebra, because it looks too much like the letter formula_3, which is often used as a variable. +When we multiply a number and a variable in algebra, we can simply write the number in front of the letter: formula_49. When the number is 1, then it is not written because 1 times any number is that number (formula_50) and so it is not needed. And when it is 0, we can completely remove the terms, because 0 times any number is zero (formula_51). +As a side note, you do not have to use the letters formula_3 or formula_22 in algebra. Variables are just symbols that mean some unknown number or value, so you can use any letter for a variable (except formula_54 (Euler's number) and formula_55 (Imaginary unit), because these are mathematical constants). formula_3 and formula_22 are the most common, though. +Functions and Graphs. +An important part of algebra is the study of functions, since they often appear in equations that we are trying to solve. A function is like a machine you can put a number (or numbers) into and get a certain number (or numbers) out. When using functions, graphs can be powerful tools in helping us to study the solutions to equations. +A graph is a picture that shows all the values of the variables that make the equation or inequality true. Usually this is easy to make when there are only one or two variables. The graph is often a line, and if the line does not bend or go straight up-and-down it can be described by the basic formula formula_5. The variable formula_59 is the y-intercept of the graph (where the line crosses the vertical axis) and formula_60 is the slope or steepness of the line. This formula applies to the coordinates of a graph, where each point on the line is written formula_61. +In some math problems like the equation for a line, there can be more than one variable (formula_3 and formula_22 in this case). To find points on the line, one variable is changed. The variable that is changed is called the "independent" variable. Then the math is done to make a number. The number that is made is called the "dependent" variable. Most of the time the independent variable is written as formula_3 and the dependent variable is written as formula_22, for example, in formula_66. This is often put on a graph, using an formula_3 axis (going left and right) and a formula_22 axis (going up and down). It can also be written in function form: formula_69. So in this example, we could put in 5 for formula_3 and get formula_71. Put in 2 for formula_3 would get formula_73. And 0 for formula_3 would get formula_75. So there would be a line going through the points formula_76, formula_77, and formula_78 as seen in the graph to the right. +If formula_3 has a power of 1, it is a straight line. If it is squared or some other power, it will be curved. If it uses an inequality (formula_80 or formula_81), then usually part of the graph is shaded, either above or below the line. +Rules. +In algebra, there are a few rules that can be used for further understanding of equations. These are called the rules of algebra. While these rules may seem senseless or obvious, it is wise to understand that these properties do not hold throughout all branches of mathematics. Therefore, it will be useful to know how these axiomatic rules are declared, before taking them for granted. Before going on to the rules, reflect on two definitions that will be given. +Commutative property of addition. +"Commutative" means that a function has the same result if the numbers are swapped around. In other words, the order of the terms in an equation does not matter. When two terms (addends) are being added, the "commutative property of addition" is applicable. In algebraic terms, this gives formula_86. +Note that this does not apply for subtraction (i.e. formula_87 except if formula_88). +Commutative property of multiplication. +When two terms (factors) are being multiplied, the "commutative property of multiplication" is applicable. In algebraic terms, this gives formula_89. +Note that this does not apply for division (i.e. formula_90, when formula_91 and formula_92, except if formula_88). +Associative property of addition. +"Associative" refers to the grouping of numbers. The associative property of addition implies that, when adding three or more terms, it doesn't matter how these terms are grouped. Algebraically, this gives formula_94. Note that this does not hold for subtraction, e.g. formula_95 (see distributive property). +Associative property of multiplication. +The associative property of multiplication implies that, when multiplying three or more terms, it doesn't matter how these terms are grouped. Algebraically, this gives formula_96. Note that this does not hold for division, e.g. formula_97. +Distributive property. +The distributive property states that the multiplication of a term by another term can be distributed. For instance: formula_98. (Do not confuse this with the associative properties! For instance: formula_99.) +Additive identity. +"Identity" refers to the property of a number that it is equal to itself. In other words, there exists an operation of two numbers so that it equals the variable of the sum. The additive identity property states that any number plus 0 is that number: formula_100. This also holds for subtraction: formula_101. +Multiplicative identity. +The multiplicative identity property states that any number times 1 is that number: formula_102. This also holds for division: formula_103. +Additive inverse property. +The additive inverse property is somewhat like the inverse of the additive identity. When we add a number and its opposite, the result is 0. Algebraically, it states the following: formula_104, which is the same as formula_105. For example, the additive inverse (or opposite) of 1 is -1. +Multiplicative inverse property. +The multiplicative inverse property means that when we multiply a number and its reciprocal, the result is 1. Algebraically, it states the following: formula_106, which is the same as formula_107. For example, the multiplicative inverse (or reciprocal) of 2 is 1/2. To get the reciprocal of a fraction, switch the numerator and the denominator: the reciprocal of formula_108 is formula_109. +Advanced Algebra. +In addition to "elementary algebra", or basic algebra, there are advanced forms of algebra, taught in colleges and universities, such as abstract algebra, linear algebra, and universal algebra. This includes how to use a matrix to solve many linear equations at once. Abstract algebra is the study of things that are found in equations, going beyond numbers to the more abstract with groups of numbers. +Many math problems are about physics and engineering. In many of these physics problems time is a variable. The letter used for time is formula_110. Using the basic ideas in algebra can help reduce a math problem to its simplest form making it easier to solve difficult problems. Energy is formula_54, force is formula_112, mass is formula_60, acceleration is formula_82 and speed of light is sometimes formula_115. This is used in some famous equations, like formula_116 and formula_117 (although more complex math beyond algebra was needed to come up with that last equation). +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/American English.txt b/.github/workflows/data/simplewiki-100/American English.txt new file mode 100644 index 000000000..b1af36a8d --- /dev/null +++ b/.github/workflows/data/simplewiki-100/American English.txt @@ -0,0 +1,14 @@ +American English or US English is the dialect of the English language spoken in the United States of America. It is different in some ways from other types of English, such as British English. Most types of American English came from local dialects in England. During the 18th and 19th centuries, pronunciation changed less in America than in England. +Use. +Many people today know about American English even if they live in a country where another type of English is spoken. They hear and read American English through the media, for example movies, television, and the Internet, where the most common form of English is American English. +Because people all over the world use the English language, it gets many new words. English has been changing in this way for hundreds of years. For example, the many millions who speak Indian English frequently add American English words to go along with its British English base and many other words from the various Indian languages. +Sometimes people learn American English as it is spoken in the US. For example, in telephone call centers in India and other places, people often learn American English to sound more like their customers who call from the US. These people often keep using American English in everyday life. +Spelling. +There are many words that sound the same in both American and British English but have different spellings. British English often keeps more traditional ways of spelling words than American English. +Vocabulary. +There are also some words in American English that are a bit different from British English, e.g.: +Regional accents. +General American English is the kind most spoken in mass media. It more vigorously pronounces the letter "R" than some other kinds do. "R-dropping" is frequent in certain places where "r" sound is not pronounced after a vowel. For example as in the words "car" and "card" sounding like "cah" and "cahd". This occurs in the Boston area. +Some regional accents of American English include: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/American Units Of Measurement.txt b/.github/workflows/data/simplewiki-100/American Units Of Measurement.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-100/Anatomy.txt b/.github/workflows/data/simplewiki-100/Anatomy.txt new file mode 100644 index 000000000..422d395b3 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Anatomy.txt @@ -0,0 +1,9 @@ +Anatomy is the study of the bodies of people and other animals. Anatomy is the study of the inside of the body and outside the body. Anatomy notes the position and structure of organs such as muscles, glands and bones. A person who studies anatomy is an anatomist. +The history of anatomy dates back to 1600 BC when Egyptians began studying human anatomy. They discovered the functions of many organs like the liver, spleen, kidneys, heart etc. and were the first to discover the structure and functions of the lymphatic system. +For long periods the dissection of deceased people was forbidden, and correct ideas about human anatomy was a long time coming. +Academic human anatomists are usually employed by universities, medical schools and teaching hospitals. They are often involved in teaching and research. Gross anatomy studies parts of the body that are big enough to see. Micro-anatomy studies smaller parts. +Body systems. +There are different organ systems, such as the cardiovascular system, also known as the circulatory system (the system that gets blood around the body), the muscular system (the system that contains muscles), the nervous system (the system that controls the nerves,and the brain) and the skeleton (the bones). +Anatomy, physiology and biochemistry are similar basic medical sciences. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Andouille.txt b/.github/workflows/data/simplewiki-100/Andouille.txt new file mode 100644 index 000000000..c1aae3b1b --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Andouille.txt @@ -0,0 +1,3 @@ +Andouille is a type of pork sausage. It is spicy (hot in taste) and smoked. There are different kinds, all with different combinations of pork meat, fat, intestines (tubes going to the stomach), and tripe (the wall of the stomach). +Other sorts are "French andouille" and "German andouille"; they are less spicy than Cajun. Cajun has extra salt, black pepper, and garlic. Andouille makers smoke the sausages over pecan wood and sugar cane for a maximum of seven or eight hours, at about 175 degrees Fahrenheit (80 degrees Celsius). + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Angel.txt b/.github/workflows/data/simplewiki-100/Angel.txt new file mode 100644 index 000000000..6c3cc98e1 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Angel.txt @@ -0,0 +1,69 @@ +In many mythologies and religions, an angel is a good spirit. The word angel comes from the Greek word "angelos" which means "messenger". Angels appear frequently in the Old Testament, the New Testament, Qur'an and Aqdas. +Different references to angels throughout the Bible suggest different kinds and ranks of angels, such as seraphs (Hebrew plural: seraphim) or cherubs (Hebrew plural: cherubim). This resulted in medieval theologians outlining a hierarchy of such divine messengers, including not only cherubs and seraphs, but also archangels, powers, principalities, dominions and thrones. +The study of angels is called angelology. +In the Bible. +Angels are powerful spirits that obey God's commands. They sometimes appear to humans in a human form. They can deliver messages to people in person or in dreams. Angels that are named in the Bible are Michael (called a "chief prince"), Gabriel (known for telling Mary that she would be the mother of Jesus), and Raphael (in the Apocryphal Book of Tobit). The Ethiopian Book of Enoch also lists four Archangels which watch over the four parts of heaven; Michael, Raphael, Gabriel and Uriel. Lucifer is also known as an angel in the Bible. +Appearances in Genesis. +God, in the Book of Genesis sends an Angel with a sword made out of fire to keep Adam and Eve from going back to the Garden of Eden. +Appearances in Exodus. +In the Book of Exodus, an Angel comes to a bush and makes a fire but the bush doesn't burn. When Moses sees this, he comes close to the Bush and he hears God speak to him. On the way to Egypt, Moses forgets to circumcise his son so an Angel tries to kill him but then Zipporah circumcises him and the Angel lets Moses live. Angels are also there when God gives the Ten Commandments at Mount Sinai. +Appearances in Leviticus. +In the Book of Leviticus, the Ark of the Covenant, has statues of two angels called Cherubim on top of it. +Appearances in Numbers. +In the Book of Numbers, Balaam goes to curse the Israelites but G-d sends an Angel to be a Satan against Balaam. Balaam doesn't see the Angel but his donkey does so she moves out of the way. Balaam then hits her and gets her to go continue moving. When the donkey sees the Angel again and Balaam doesn't, she moves to the other side of the road and Balaam hits her and she starts walking again. When she sees the Angle again and there's nowhere on the road to go, she stops moving, so Balaam hits her. Balaam's donkey then talks to him and asks him why he's hitting her. He says if he had a sword, then he would kill her. Then Balaam sees the Angel and the Angel tells Balaam that Balaam's donkey is more righteous than he is and that he would have only killed Balaam but not the donkey. +Appearances in Deuteronomy. +When Moses spoke to the Israelites in the Book of Deuteronomy, there were ten thousand angels next to him. +Appearances in Judges. +G-d sends an Angel to Gideon in the Book of Judges to tell Gideon that he must save the Israelites. He later sends an Angel to an Israelite woman and her husband Manoach to tell them that they would have a son Samson. +Appearances in Samuel. +When King David has a census, G-d punishes him by sending an Angel to cause a plague. +Appearances in Kings. +When Queen Jezebel wants to kill Elijah, an Angel comes to help him. Another Angel later protects Elisha. When King Ahab asks the prophet Micaiah for a prediction, Mecaiah tells him that G-d sent an Angel to trick Ahab into fighting a war and getting killed. Later when Sannecherib attacks Judah, G-d sends His Angel to kill Sannecherib's entire Assyrian army. +Isaiah. +Isaiah said that the Angels sang songs and that every Angel had six wings, two for covering its face, two for covering its feet and two for flying. Isaiah said that when he heard the Angels sing he said "I am doomed for I live among a people of unclean lips" and that G-d got angry with him for saying that. +Ezekiel. +The Book of Ezekiel begins with Ezekiel seeing Angels on a Chariot. +Zechariah. +The prophet Zechariah saw an Angel tell him that G-d would have mercy on the Jews. And that their enemies will be punished. Another Angel says that even the Kingdom of Israel will come back to the land. Zechariah sees an Angel defending the Priest from The Satan when The Satan says that the Priest did a bad thing. An Angel shows Zechariah a Menorah in the Temple of Jerusalem. The Angel tells Zechariah that the children of Zerubavel will be Kings. +Malachi. +G-d told Malachi that He would send an Angel and Elijah to announce that the Messiah was coming. +Job. +In the Book of Job, all the Angels meet with G-d and The Satan bets G-d that he can make Job curse G-d +Daniel. +In the Book of Daniel, an Angel rescues Daniel's friends from Nebuchadnezzar. Daniel also mentions Angels being named Michael and Gabriel +Chronicles. +In the Books of Chronicles, The Satan gets King David to want to have his census. +Appearances in The New Testament. +In the New Testament, an Angel tells The Virgin Mary that she will give birth to Jesus, Angels proclaim the birth of Jesus in the Adoration of the shepherds (Luke 2:10) and Angels help Jesus in the desert. +In Luke 22:43 of the New Testament, an Angel comforts Jesus during the agony in the garden of Gethsemane and in Matthew 28:5 an Angel speaks at the empty tomb following the Resurrection of Jesus saying: “Do not be afraid, for I know that you are looking for Jesus, who was crucified. He is not here; he has risen, just as He said". +Types of Angels. +Ezekiel 28:13-14 +13. Thou hast been in Eden the garden of God; every precious stone was thy covering, the sardius, topaz, and the diamond, the beryl, the onyx, and the jasper, the sapphire, the emerald, and the carbuncle and gold: the workmanship of thy tabrets and of thy pipes was prepared in thee in the day that thou wast created. +14. Thou art the anointed cherub that covereth; and I have set thee so: thou wast upon the holy mountain of God; thou hast walked up and down in the midst of the stones of fire. +It describes the sound of their wings, "like the roar of rushing waters." +Ezekiel 10:5-7 ; Ezekiel 10:8 reveals that they have hands like a man under their wings . +Ezekiel 1:7 KJV reveals that they look like man but are different because they have "straight feet" and four wings and four faces. +Ezekiel ch 1, and 10 describe the cherubim creatures ascending and descending from the earth with wheels. Ezekiel 1:14-20 ; Ezekiel 10:16 +Ezekiel 10:9-13 describes what the wheels appeared to look like, and how they moved around, how they moved or flew through the sky quickly but turned not as they went; and how the inside workings of the wheels appeared to be "a wheel in the midst of a wheel" and that the color of the wheels was the color of "Amber" Stone. There are four separate wheels in both accounts, one for each single cherub which is there. +Religion. +Rabbinic Judaism. +In Judaism angels are created by God from fire. They fullfil tasks given by God. Rabbinic Judaism rejects earlier accounts on fallen angels who sinned by mating with humans. Instead, angels are servants of God. Still, not all angels are benevolent. Some angels are jealous of humans, because God loves them so much. Unlike angels, humans can overcome sin and repent. Angels cannot repent their sin, because they are already sinless. +When the Bible speaks about the creation of humans in the plural, Judaism sometimes argues that God discussed his decision with the angels. But they make clear, it is God alone who creates humans. God only wanted to discuss with the angels to show that someone in power, should still try to value the opinion of people lower. +Islam. +In Islam angels are created by God (referred to as Allah in the Arabic, Persian, Urdu, Pashto, and Dari languages) before jinn and humans. Some say, that before angels however, demons were created. Angels were created in heaven and fullfil God's orders. Some angels deliver messages to humans and prophets, most famous among them is Gabriel. Other angels support humans with rain. Some angels don't have a task on earth, but dwell in heaven, for example, to praise God. +Muslims disagree if angels can fail a task, but they agree that an angel never wants to disobey. Sometimes angels might simply make mistakes on accident, like the angels Harut and Marut. But these angels are not considered evil, they just lose their rank as punishment, but can restore their rank later again. Not all angels are nice. God gives angels violent tasks too. For example, God orders angels to punish people in hell, not demons. Muslims believe hell is under God's control, and not the demon's. They believe hell is not only suffering, but also justice. Angels watch out that people don't escape their punishment. While the benevolent angels are said to be created from light, some Muslims think the angels in hell are created from fire. +Muslims believe that angels are also present in life. They are, however, only in clean places. They are believed to give also good advises and blessings. +In art. +They are often shown in art as having wings and a halo. The wings represent their speed, and the halo represents their holiness. +The cherubim in art always appear as baby faced angels with very small, non-useful wings. +The cherubim statue or bronze casting of cherubim in the Temple of Solomon depicted them as two four winged creatures whose wings touched at the peak of the ark that they were making. +The same cherubim creatures were said to be cast in gold on top of the Ark of the Covenant. Casting metal is one of the oldest forms of artwork, and was attempted by Leonardo da Vinci. +In literature. +Angels are generally held to be holy and virtuous, hence the term is used loosely to apply to anyone particularly good or kind, or having a good influence. In his novel "Far From the Madding Crowd", Thomas Hardy chooses the name of an angel, Gabriel, for his kind and helpful hero. On the other hand, in his play "Measure for Measure", Shakespeare's use of the name Angelo is ironic, since Angelo is a character who likes to see himself as virtuous, but who is concealing evil aspects of his nature. Fallen angels, who are no longer holy or virtuous, are also known as devils. +However, since angels are held to be spirits (that is, non-material beings), medieval theologians were faced with the problem of how humans could see a non-physical creature. Eventually a theory was put forward that angels must make themselves a body out of the nearest thing to the non-physical, i.e. from air. Hence in his famous poem "Aire and Angels", the seventeenth century metaphysical poet John Donne uses this idea to write a cynical comment on women, whose love, he says, is like an angel's body of air, while men's love is like the real thing, the angel itself. +Idea of Guardian angel. +From the era of the Romantics onwards, there has developed the widely held belief that everyone has an angel assigned to guard them. This concept is probably based on Jesus' comment in Matthew 18:10 regarding children, though it is not mentioned elsewhere in the Bible. +In superstitions. +Seeing repetitive numbers are thought to be associated with numerology, also referred to as angel numbers. It is believed that angels communicate with humans through repetitive appearances of numbers. Humanity has studied and used numbers since the dawn of time, and no matter what the culture is, there are certain numbers that hold specific value or meaning over other numbers. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Angola.txt b/.github/workflows/data/simplewiki-100/Angola.txt new file mode 100644 index 000000000..a636be89b --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Angola.txt @@ -0,0 +1,16 @@ +Angola, officially the Republic of Angola, is a country in southern Africa. It shares borders with Namibia in the south, the Democratic Republic of the Congo in the north, and Zambia in the east. Its west border touches the Atlantic Ocean. Its coastline is 1600 kilometers. Angola's capital is Luanda. The country has many natural resources. Angola is the seventh largest country in Africa. The capital and most populated city of Angola is Luanda. +Angola is a member state of the African Union, the Community of Portuguese Language Countries, the Latin Union, South Atlantic Peace and Cooperation Zone and the Southern African Development Community. +History. +Portugal built up its power in Angola from the late 15th to the middle 20th century. +After independence there was a civil war from 1975 to 2002. Cuba and the Soviet Bloc supported the ruling People's Movement for the Liberation of Angola (MPLA). South Africa supported the insurgent National Union for the Total Independence of Angola (UNITA) until the end of apartheid. The war ended after the rebel leader Jonas Savimbi was killed. +Geography. +Angola is the world's twenty-third largest country. Angola is bordered by Namibia to the south, Zambia to the east, the Democratic Republic of the Congo to the north-east, the Republic of the Congo via the exclave of Cabinda, and the South Atlantic Ocean to the west. +Climate. +Angola's average temperature on the coast is in the winter and in the summer. It has two seasons; dry (May to October) and hot rainy (November to April). +Demographics. +Angola had a population of 25,789,024 in 2014. +Provinces. +Angola is divided into eighteen provinces. +See List of settlements in Angola for the cities and towns in the country. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Animal.txt b/.github/workflows/data/simplewiki-100/Animal.txt new file mode 100644 index 000000000..1584a02ad --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Animal.txt @@ -0,0 +1,18 @@ +Animals (or Metazoa) are living creatures with many cells that make up the kingdom Animalia. +Animals get their energy from other living things. Usually, they eat them or are parasites. Animals, plants, fungi, and some other living things have complex cells, so they are grouped together as eukaryotes. +The study of animals is called zoology. The study of ancient life is called palaeontology. +Most animals are mobile, meaning they can move around. Animals take in oxygen, and give out carbon dioxide. This cellular respiration is part of their metabolism (chemical working). In both these ways they are different from plants. Also, the cells of animals have different cell membranes to other eukaryotes like plants and fungi. +Plants are also multicellular eukaryotic organisms, but live by using light, water and basic elements to make their tissues. +Grouping animals. +There are many different types of animals. The common animals most people know are only about 3% of the animal kingdom. When biologists look at animals, they find things that certain animals have in common. They use this to group the animals in a biological classification. Several million species may exist, but biologists have only identified about one million. +Animals can mainly be divided into two main groups: the invertebrates and the vertebrates. Vertebrates have a backbone, or spine; invertebrates do not. Vertebrates are the only group to have an adaptive immune system, which may be partly responsible for their size and success. +Vertebrates are: +Some invertebrates are: +Life styles. +The animal mode of nutrition is called heterotrophic because they get their food from other living organisms. Some animals eat only plants; they are called herbivores. Other animals eat only meat and are called carnivores. Animals that eat both plants and meat are called omnivores. Some animals get their energy from photosynthetic protists that live inside them. +The environments animals live in vary greatly. By the process of evolution, animals adapt to the habitats they live in. A fish is adapted to its life in water and a spider is adapted to a life catching and eating insects. A mammal living on the savannahs of East Africa lives quite a different life from a dolphin or porpoise catching fish in the sea. +The fossil record of animals goes back about 600 million years to the Ediacaran period, or somewhat earlier. During the whole of this long time, animals have been constantly evolving, so that the animals alive on Earth today are very different from those on the edges of the sea-floor in the Ediacaran. +Everyday language. +In scientific usage, humans are animals. But in everyday use, humans are often not regarded as animals. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Animalia.txt b/.github/workflows/data/simplewiki-100/Animalia.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-100/Apple.txt b/.github/workflows/data/simplewiki-100/Apple.txt new file mode 100644 index 000000000..f4bcea649 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Apple.txt @@ -0,0 +1,40 @@ +An apple is the edible fruit of a number of trees, known for its juicy green or red fruit. The tree (Malus spp.) is grown worldwide. The fruit is low-cost, popular, and common all over the earth. +Applewood is a type of wood that comes from this tree. +The apple tree comes from southern Kazakhstan, Kyrgyzstan, Uzbekistan, and northwestern part of China. Apples have been grown for thousands of years in Asia and Europe. They were brought to North America by European settlers. Apples have religious and mythological significance in many cultures. +Apples are generally grown by grafting, although wild apples grow readily from seed. Apple trees are large if grown from seed, but small if grafted onto roots (rootstock). There are more than 10000 known variants of apples, with a range of desired characteristics. Different variants are bred for various tastes and uses: cooking, eating raw and cider production are the most common uses. In addition to that, when it comes to food toxicity, the seeds in apples can be fatal, but only if they've been crushed. Apples contain amygdalin, which can release cyanide when digested. Though the amount in apple seeds is generally low and requires significant ingestion to be harmful (killing or paralyzing you) but it is still important to address such issue. +Trees and fruit are attacked by fungi, bacteria and pests. In 2010, the fruit's genome was sequenced as part of research on disease control and selective breeding in apple production. +Worldwide production of apples in 2013 was 90.8 million tonnes. China grew 49% of the total. +Botanical information. +The apple tree is a small, leaf-shedding tree that grows up to tall. The apple tree has a broad crown with thick twigs. +The leaves are alternately arranged simple ovals. They are 5 to 12 centimetres long and 3–6 centimetres (1.2–2.4 in) wide. It has a sharp top with a soft underside. Blossoms come out in spring at the same time that the leaves begin to bud. The flowers are white. They also have a slightly pink color. They have five petals, and 2.5 to 3.5 centimetres (0.98 to 1.4 in) in diameter. The fruit matures in autumn. It is usually 5 to 9 centimetres (2.0 to 3.5 in) in diameter. There are five carpels arranged in a star in the middle of the fruit. Every carpel has one to three seeds. +Wild ancestors. +The wild ancestor of apple trees is "Malus sieversii". They grow wild in the mountains of Central Asia in the north of Kazakhstan, Kyrgyzstan, Tajikistan, and Xinjiang, China, and possibly also "Malus sylvestris". Unlike domesticated apples, their leaves become red in autumn. They are being used recently to develop "Malus domestica" to grow in colder climates. +History. +The apple tree was possibly the earliest tree to be cultivated. Its fruits have become better over thousands of years. It is said that Alexander the Great discovered dwarf apples in Asia Minor in 300 BC. Asia and Europe have used winter apples as an important food for thousands of years. From when Europeans arrived, Argentina and the United States have used apples as food as well. Apples were brought to North America. The first apple orchard on the North American continent was said to be near Boston in 1625. In the 1900s, costly fruit industries, where the apple was a very important species, began developing. +In culture. +Paganism. +In Norse mythology, the goddess Iðunn gives apples to the gods in "Prose Edda" (written in the 13th century by Snorri Sturluson) that makes them young forever. English scholar H. R. Ellis Davidson suggests that apples were related to religious practices in Germanic paganism. It was from there, she claims, that Norse paganism developed. She points out that buckets of apples were discovered in the place of burial for the Oseberg ship in Norway. She also remarks that fruit and nuts (Iðunn having been described as changing into a nut in "Skáldskaparmál") have been discovered in the early graves of the Germanic peoples in England. They have also been discovered somewhere else on the continent of Europe. She suggests that this may have had a symbolic meaning. Nuts are still a symbol of fertility in Southwest England. +Cooking. +Sometimes apples are eaten after they are cooked. Often, apples are eaten uncooked. Apples can also be made into drinks. Apple juice and apple cider are drinks made with apples. +The flesh of the fruit is firm with a taste anywhere from sour to sweet. Apples used for cooking are sour, and need to be cooked with sugar, while other apples are sweet, and do not need cooking. There are some seeds at the core, that can be removed with a tool that removes the core, or by carefully using a knife. +The scientific name of the apple tree genus in the Latin language is "Malus". Most apples that people grow are of the "Malus domestica" species. +Most apples are good to eat raw (not cooked), and are also used in many kinds of baked foods, such as apple pie. Apples are cooked until they are soft to make apple sauce. +Apples are also made into the drinks apple juice and cider. Usually, cider contains a little alcohol, about as much as beer. The regions of Brittany in France and Cornwall in England are known for their apple ciders. +Apple variants. +If one wants to grow a certain type of apple, it is not possible to do this by planting a seed from the wanted type. The seed will have DNA from the apple that the seeds came from, but it will also have DNA from the apple flower that pollinated the seeds, which might be a different variant of apple. This means that the tree which would grow from planting would be a mixture of two, or a hybrid. In order to grow a certain type of apple, a small twig, or 'scion', is cut from the tree that grows the type of apple desired, and then added on to a specially grown stump called a rootstock. The tree that grows will create apples of the type needed. +There are more than 7,500 known variants of apples. Different variants are available for temperate and subtropical climates. One large collection of over 2,100 apple variants is at the National Fruit Collection in England. Most of these variants are grown for eating fresh (dessert apples). However, some are grown simply for cooking or making cider. Cider apples are usually too tart to eat immediately. However, they give cider a rich flavor that dessert apples cannot. +Most popular apple cultivars are soft but crisp. Colorful skin, easy shipping, disease resistance, 'Red Delicious' apple shape, and popular flavor are also needed. Modern apples are usually sweeter than older cultivars. This is because popular tastes in apples have become different. Most North Americans and Europeans enjoy sweet apples. Extremely sweet apples with hardly any acid taste are popular in Asia and India. +World production. +Apples are grown around the world. China produces more than half of all commercially grown apples. In 2020/2021, China produced 44,066,000 metric tons. Other important producers were the European Union (11,719,000 metric tons), the United States (4,490,000 metric tons), and Turkey (4,300,000 metric tons). Total world production was 80,522,000 metric tons. +In the United Kingdom. +In the United Kingdom there are about 3000 different types of apples. The most common apple type grown in England is the 'Bramley seedling', which is a popular cooking apple. +Apple orchards are not as common as they were in the early 1900s, when apples were rarely brought in from other countries. Organizations such as Common Ground teach people about the importance of rare and local varieties of fruit. +In North America. +Many apples are grown in temperate parts of the United States and Canada. "Washington State currently produces over half the Nation's domestically grown apples and has been the leading apple-growing State since the early 1920s." New York and Michigan are the next two leading states in apple production. "The total reported area dedicated to the crop in the United States is 336,940 acres or 526.47 square miles." +In many areas where apple growing is important, people have huge celebrations: +Varieties of apples. +There are many different varieties of apples, including +Family. +Apples are in the group Maloideae. This is a subfamily of the family "Rosaceae". They are in the same subfamily as pears. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Application.txt b/.github/workflows/data/simplewiki-100/Application.txt new file mode 100644 index 000000000..772425a6b --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Application.txt @@ -0,0 +1,2 @@ +The word application has several uses. +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/April.txt b/.github/workflows/data/simplewiki-100/April.txt new file mode 100644 index 000000000..2ab7bf924 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/April.txt @@ -0,0 +1,12 @@ +April (Apr.) is the fourth month of the year in the Julian and Gregorian calendars, and comes between March and May. It is one of four months to have 30 days. +April always begins on the same day of the week as July, and additionally, January in leap years. April always ends on the same day of the week as December. +The Month. +April comes between March and May, making it the fourth month of the year. It also comes first in the year out of the four months that have 30 days, as June, September and November are later in the year. +April begins on the same day of the week as July every year and on the same day of the week as January in leap years. April ends on the same day of the week as December every year, as each other's last days are exactly 35 weeks (245 days) apart. +In common years, April starts on the same day of the week as October of the previous year, and in leap years, May of the previous year. In common years, April finishes on the same day of the week as July of the previous year, and in leap years, February and October of the previous year. In common years immediately after other common years, April starts on the same day of the week as January of the previous year, and in leap years and years immediately after that, April finishes on the same day of the week as January of the previous year. +In years immediately before common years, April starts on the same day of the week as September and December of the following year, and in years immediately before leap years, June of the following year. In years immediately before common years, April finishes on the same day of the week as September of the following year, and in years immediately before leap years, March and June of the following year. +April is a spring month in the Northern Hemisphere and an autumn/fall month in the Southern Hemisphere. In each hemisphere, it is the seasonal equivalent of October in the other. +It is unclear as to where April got its name. A common theory is that it comes from the Latin word "aperire", meaning "to open", referring to flowers opening in spring. Another theory is that the name could come from Aphrodite, the Greek goddess of love. It was originally the second month in the old Roman Calendar, before the start of the new year was put to January 1. +Quite a few festivals are held in this month. In many Southeast Asian cultures, new year is celebrated in this month (including Songkran). In Western Christianity, Easter can be celebrated on a Sunday between March 22 and April 25. In Orthodox Christianity, it can fall between April 4 and May 8. At the end of the month, Central and Northern European cultures celebrate Walpurgis Night on April 30, marking the transition from winter into summer. +April in poetry. +Poets use "April" to mean the end of winter. For example: "April showers bring May flowers." \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Aquaculture.txt b/.github/workflows/data/simplewiki-100/Aquaculture.txt new file mode 100644 index 000000000..e96125451 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Aquaculture.txt @@ -0,0 +1,5 @@ +Aquaculture is the farming of fish, shrimp, abalones, algae, and other seafood. Aquaculture supplies fish, such as catfish, salmon, and trout. It was developed a few thousand years ago in China. Aquaculture supplies over 20% of all the seafood harvested. +Fish farming has been practiced, in some parts of the world, for thousands of years. Goldfish originated about a thousand years ago in carp farms in China, and the Roman Empire farmed oysters and other seafood. Today, half of the seafood eaten in the U.S. is farmed. To help meet the growing global demand for seafood, aquaculture is growing fast. +The environmental impact of fish farming varies widely, depending on the species being farmed, the methods used and where the farm is located. When good practices are used, it's possible to farm seafood in a way that has very little impact to the environment. Such operations limit habitat damage, disease, escapes of farmed fish and the use of wild fish as feed. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Archaeology.txt b/.github/workflows/data/simplewiki-100/Archaeology.txt new file mode 100644 index 000000000..67ba35f48 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Archaeology.txt @@ -0,0 +1,27 @@ +Archaeology, or archeology, is the study of the human past. It looks at remains and objects left by the people who lived long ago. These remains may include old coins, tools, buildings, and inscriptions. Archaeologists, the people who study archaeology, use these remains to understand how people lived. +Fieldwork. +When archaeologists do fieldwork, they look for remains, often by digging in the ground. As settlements (places where people lived in groups) change and grow, old buildings get buried. Usually, this is a natural process. A typical student project is to leave an object in a place where there is nothing going on. It will get covered rather quickly, because wind, water and plants will bury it. Sometimes buildings are deliberately buried to make way for new buildings. Ancient Rome, for example, is now up to 40 feet (12 metres) below the present city. This process of natural or man-made burial is why archaeological fieldwork involves digging, and is expensive and takes a long time. +When things are found, or even when nothing is found, the results of the fieldwork are taken back to a base. Short term, the base is often on or near the site. Longer term, the results will usually go to a university or museum. Everything is written down on paper or entered into a computer. Gradually, they build up a picture of what happened long ago. Archaeologists publish their research so others can understand what they learned. +Fields of interest. +Archaeologists do not all study the same topics. They have specialties. Some fields of interest include Ancient Egypt (these specialists are called Egyptologists), Ancient China, or the Vikings. Archaeologists study every civilization that is known, especially the ones where there is no written history. They can study any time period. For example, one might study the beginning of human life in Africa, or study World War II. Marine archaeologists study things that are now underwater. They search for sunken ships or cities that have been lost under the sea. +Subdisciplines. +There are many different ways of doing archaeology. these depend on the methods used, the things studied, and the environment. Some of these subdisciplines overlap with each other. +Marine archaeology. +Archaeology relating to oceans, seas and lakes is usually done underwater. It includes the study of sunken ships and submerged coastlines. "Maritime archaeology" is a part of this subdivision. It refers to the archaeological investigation of past ships and seafaring. A famous example of maritime archaeology is the recovery and restoration of the ship Vasa. +Ice-patch archaeology. +When a glacier melts, objects that were captured in it are revealed. The recovery and study of these objects is called "ice-patch archaeology". A famous example is Ötzi the Iceman. +Historical archaeology. +Historical archaeology deals with places, things, and issues from the past or present at or related to sites with written records or oral traditions. Or it can be defined as "the archaeological investigation of any past culture that has developed a literate tradition." A prominent example of historical archaeology is the work done at Colonial Williamsburg. +Industrial archaeology. +This relatively new branch of archaeology consists of "the systematic study of structures and artefacts as a means of enlarging our understanding of the industrial past." +Archaeozoology. +Archaeozoology, or zooarchaeology, is the study of the relationships between humans and animals in the archaeological record. This includes the study of bones, feathers, teeth and other body parts as well as their interpretation. +Paleoethnobotany. +Paleoethnobotany (also spelled palaeoethnobotany), or archaeobotany, is the study of past human-plant relations through the recovery and analysis of plant remains from the past, usually from archaeological sites. People who do this can be archaeologists, botanists, or chemists. +Experimental archaeology. +This field involves attempts at replicating the actions and conditions of ancient cultures. Good examples are Butser Ancient Farm and Overton Down. +Sites. +In many countries, governments and other groups of people protect important archaeological sites so they will not be destroyed and so that visitors can always come and see them. +Sometimes archaeological sites are found when foundations are dug for new buildings. Archaeologists have to work quickly when this happens, because people who are building often don't have a lot of time. As soon as the archaeologists are done with their work, the remains that they have found will be covered over, unless they are very important. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Architecture.txt b/.github/workflows/data/simplewiki-100/Architecture.txt new file mode 100644 index 000000000..4cb3ec77d --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Architecture.txt @@ -0,0 +1,14 @@ +Architecture is the process of designing structures and buildings. It uses both art and engineering. Examples include houses, churches, hotels, office buildings, roads, tunnels and bridges. +Architecture is the profession of an architect. Usually, a person must study at an institution of higher education (university) to become an architect. There were architects long before there was higher education. They learnt by being an apprentice to an established architect. +Architecture can do small designs, such as for a garage, or large designs, such as for a whole new town. The capital cities of Brasília, and Canberra were designed. Architects often work with structural engineers to make structurally sound buildings. +History. +In the past, people built huts and wood houses to protect themselves from the weather. For safety, they were often close together. Great civilizations like the Ancient Egyptians built large temples and structures, like the Great Pyramids of Giza. The Ancient Greeks and Romans made what we now call "Classical Architecture". The Romans, working over 2000 years ago, copied the arch from the Etruscans, who copied it from the Mesopotamians. +Classical architecture was formal, and it always obeyed laws. It used symmetry, which really means balance, and it used proportion between shapes. The Golden Mean was a rule which said, (to put it simply) if you are making a room, or any other thing, it will work best if you always make the long side 1.6 times as long as the short side. There are many 'laws' in classical architecture, like how high the middle of an arched bridge needs to be (which depends on how wide the bridge needs to be). These laws were learned from thousands of years of experience and they are often used today. However, today more notice is taken of specific facts, such as what wind speeds occur once or twice in a century. Several bridges have blown down because that was not properly taken into consideration. +In some parts of the world, like India, the architecture is famous for carving the stone on temples and palaces. Different architectural styles occur in China, Japan, Southeast Asia, Africa, Mexico, and Central and South America. +Architects in Western Europe in the Middle Ages made Romanesque architecture, then Gothic architecture. Gothic buildings have tall, pointed windows and arches. Many churches have Gothic architecture. Castles were also built at this time. In Eastern Europe, churches usually had domes. People added their own ideas and decoration to the Classical Architecture of the past. The Renaissance brought a return to classical ideas. +In the late 18th century with the Industrial Revolution, people began to invent machines to make things quickly and cheaply. Many factories and mills were built during, or after this revolution. Decades later, in the Victorian era, architects like George Fowler Jones and Decimus Burton still followed the Gothic style to build new churches. Up to this point, buildings were limited in size and style by the strength of the wood and masonry used to construct them. Gothic cathedrals were among the largest buildings because the gothic arch when combined with buttresses allowed stone buildings to be built taller. For example, the cathedral in Ulm, Germany is over 500 feet tall. However, building with stone has its limits, and building too tall could result in collapse. This happened to the Beauvais Cathedral, which was never completed. +Towards the end of the 19th Century with a second Industrial Revolution, steel became much cheaper. Architects began to use inventions like metal girders and reinforced concrete to build. An example is the Eiffel Tower in Paris. Buildings can now be built taller than ever before. We call them skyscrapers. This new technology has made us free from traditional limitations, and because of the new possibilities presented by these materials, many traditional methods of construction and ideas about style were reevaluated, replaced, or abandoned. Cheap, strong glass soon brought transparent exterior walls, especially for office buildings. +Modernism is the name for the architectural style which developed because of these new building technologies, and its beginnings can been seen as early as 1890. Modernism can also refer to a specific group of architects and buildings from the early to late 20th century, and so may not be the proper term to use for many building built since then, which are sometimes called "post-modern". +Many of the world's greatest structures were built by modern-day architects such as Frank Lloyd Wright; Sir Hugh Casson; Norman Foster; I. M. Pei; Adrian Smith; Edward Durell Stone; Frank Gehry; Fazlur Khan; Gottfried Böhm; and Bruce Graham. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Argentina.txt b/.github/workflows/data/simplewiki-100/Argentina.txt new file mode 100644 index 000000000..2a8d9fcb2 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Argentina.txt @@ -0,0 +1,27 @@ +Argentina, officially the Argentine Republic, is a country in South America. Argentina is the second-largest country in South America and the eighth-largest country in the world. +Spanish is the most spoken language, and the official language, but many other languages are spoken. There are minorities speaking Italian, German, English, Quechua and even Welsh in Patagonia. +In eastern Argentina is Buenos Aires, the capital of Argentina, it is also one of the largest cities in the world. In order by number of people, the largest cities in Argentina are Buenos Aires, Córdoba, Rosario, Mendoza, La Plata, Tucumán, Mar del Plata, Salta, Santa Fe, and Bahía Blanca. +Argentina is between the Andes mountain range in the west and the southern Atlantic Ocean in the east and south. It is bordered by Paraguay and Bolivia in the north, Brazil and Uruguay in the northeast, and Chile in the west and south. It also claims the Falkland Islands (Spanish: "Islas Malvinas") and South Georgia and the South Sandwich Islands. Most citizens of the Argentine Republic are descendants of immigrants from Europe. They are united by citizenship and not necessarily by ethnicity. Most Argentinians embrace both their ethnic origins and Argentinian nationality. +History. +The name Argentina comes from the Latin "argentum" (silver) as the Spanish conquistadors believed the area had silver. In the Americas (South and North), Canada, US, Brazil and Argentina are the largest countries (in that order). +The oldest signs of people in Argentina are in the Patagonia (Piedra Museo, Santa Cruz), and are more than 13,000 years old. In 1480 the Inca Empire conquered northwestern Argentina, making it part of the empire. In the northeastern area, the Guaraní developed a culture based on yuca and sweet potato however typical dishes all around Argentina are pasta, red wines (Italian influence) and beef. +Other languages spoken are Italian, English and German. Lunfardo is Argentinean slang and is a mix of Spanish and Italian. Argentinians are said to speak Spanish with an Italian accent. +Argentina declared independent from Spain in 1816, and achieved it in a War led by José de San Martín in 1818. Many immigrants from Europe came to the country. By the 1920s it was the 7th wealthiest country in the world, but it began a decline after this. In the 1940s, following the "infamous decade" where the country's politics were not stable, Juan Peron came to power. Peron was one of the most important people in the country's history and many politicians today call themselves Peronist. Peron was forced out of power in 1955. After spending years in exile he returned to power in the 1970s. +In 1976, the country was falling into chaos, and the military took power. This was not the first time the military had done this. Leading the new government was Jorge Rafael Videla. Videla was one of history's most brutal dictators. Thousands of people disappeared or were killed during his time as president. Videla retired in 1980. +One of his successors was another general turned dictator, Leopoldo Galtieri. By the time Galtieri was in office in 1981 the dictatorship became unpopular. To stir up support, Galtieri ordered an invasion of the Falkland Islands, starting the Falklands War. Argentina lost the war, and soon the country fell into chaos again. Galtieri was removed from power and eventually democracy was restored. Galtieri and Videla would be charged with "crimes against humanity" because of the mass murder and other crimes that they ordered as president. +In the early 21st century Argentina is one of the most important countries in Latin America, though it still has many problems. It has a large economy and is influential in the "southern cone" of South America and a member of the G20 developing nations. +Politics. +Argentina is a federal republic. The people of Argentina vote for a President to rule them and Senators and Deputies to speak for them and make laws for them. The President is Javier Milei since December 2023. +Administrative divisions. +Argentina is divided into 23 provinces ("provincias"; singular: "provincia"), and 1 city (commonly known as "capital federal"): +Geography. +Argentina is almost 3,700 km long from north to south, and 1,400 km from east to west (maximum values). It can be divided into three parts: the Pampas in the central part of the country, Patagonia in the southern part down to Tierra del Fuego; and the Andes mountain range along the western border with Chile, with the highest point in the province of Mendoza. Cerro Aconcagua, at 6,960 metres (22,834 ft), is the Americas' highest mountain. +The most important rivers include the River Plate, Paraguay, Bermejo, Colorado, Uruguay and the largest river, the Paraná. River Plate was incorrectly translated though, and should have been translated to English as River of (the) Silver. River Plate is also a famous Buenos Aires soccer team. +See List of cities in Argentina for the many places people live in Argentina. +Other information. +The majority of the Argentineans are descendants of Europeans mainly from Spain, Italy, Russia, France, Germany , Arabs other Europeans countries and Mestizo representing more than 90% of the total population of the country. More than 300,000 Roma gypsies live in Argentina. Since the 1990s, Romanian, Brazilian and Colombian gypsies arrived in Argentina. +Football or soccer is the most popular sport, although the national sport of the country is Pato. Argentina has a number of highly ranked Polo players. Field hockey (for women) rugby and golf are also favorites. +Argentina is a Christian country. Most of Argentina's people (80 percent) are Roman Catholic. Argentina also has the largest population of Jewish community after Israel and US. Middle Eastern immigrants who were Muslims converted to Catholicism, but there are still Muslims as well. +Medicine is socialized and so is education, making Argentina's literacy rate about 98%. State University is free as well. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Arithmetic.txt b/.github/workflows/data/simplewiki-100/Arithmetic.txt new file mode 100644 index 000000000..fa2487818 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Arithmetic.txt @@ -0,0 +1,9 @@ +In mathematics, arithmetic is the basic study of numbers. The four basic arithmetic operations are addition, subtraction, multiplication, and division, although other operations such as exponentiation and roots are also studied in arithmetic. +Other arithmetic topics includes working with negative numbers, fractions, decimals and percentages. +Overview. +Most people learn arithmetic in primary school, but some people do not learn arithmetic and others forget the arithmetic they learned. Many jobs require a knowledge of arithmetic, and many employers complain that it is hard to find people who know enough arithmetic. +Applications. +A few of the many jobs that require arithmetic include carpenters, plumbers, mechanics, accountants, architects, doctors, and nurses. Arithmetic is needed in all areas of mathematics, science, and engineering. +Some arithmetic can be carried out mentally. A calculator can also be used to perform arithmetic. Computers can do it more quickly, which is one reason Global Positioning System receivers have a small computer inside. +References. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Armenia.txt b/.github/workflows/data/simplewiki-100/Armenia.txt new file mode 100644 index 000000000..d1449856f --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Armenia.txt @@ -0,0 +1,21 @@ +Armenia (, romanized: "Hayastān"), officially the Republic of Armenia, is a landlocked country located in the Armenian Highlands, spanning Eastern Europe and Western Asia. +History. +The Hittites and Hayasa-Azzi may have played a significant role in the ethnicity of Armenians. It has an ancient cultural heritage. One of the earliest Armenian kingdoms such as Urartu was established in 860 BC and by the 6th century BC it was replaced by the Satrapy of Armenia. The Kingdom of Armenia reached its height under Tigranes the Great in the 1st century BC and became the first state in the world to adopt Christianity as its official state religion in the late 3rd or early 4th century AD. The official date of state adoption of Christianity is 301. +Foreign invasion. +Between the 16th century and 19th century, the traditional Armenian homeland composed of Eastern Armenia and Western Armenia came under the rule of the Ottoman and Iranian empires, repeatedly ruled by either of the two over the centuries. By the 19th century, Eastern Armenia had been conquered by the Russian Empire, while most of the western parts of the traditional Armenian homeland remained under Ottoman rule. +20th century. +During World War I, Armenians living in their ancestral lands in the Ottoman Empire were systematically +exterminated in the Armenian Genocide, perpetrated by Ottoman Young Turks. Around 1.5 million people were slaughtered and many more deported. In 1918, following the Russian Revolution, all non-Russian countries declared their independence after the Russian Empire ceased to exist, leading to the establishment of the First Republic of Armenia. By 1920, the state was incorporated into the Transcaucasian Socialist Federative Soviet Republic, and in 1922 became a founding member of the Soviet Union. In 1936, the Transcaucasian state was dissolved, transforming its constituent states, including the Armenian Soviet Socialist Republic, into full Union republics. The modern Republic of Armenia became independent in 1991 during the dissolution of the Soviet Union. +Administrative divisions. +Armenia is divided into ten provinces, with the city of Yerevan having special administrative status as the country's capital. The chief executive in each of the ten provinces is the "marzpet" ("marz" governor), appointed by the government of Armenia. In Yerevan, the chief executive is the mayor, appointed by the president. +As of 2007[ [update]], Armenia includes 915 communities, of which 49 are considered urban and 866 are considered rural. +† 2011 censusSources: Area and population of provinces. +Culture. +Armenia is a majority Christian country, with European and some wider Eurasian cultural influences. The Republic of Armenia recognises the Armenian Apostolic Church, the world's oldest national church, as the country's primary religious establishment. The unique Armenian alphabet was invented by Mesrop Mashtots in 405 AD. Armenia also has a minority of Yazidis who settled in the country after fleeing persecution and have long established themselves into the wider Armenian society and have been integrated into the country. +Armenia is a member of the Council of Europe, the Eurasian Economic Union and the Collective Security Treaty Organization. Armenia supports the de facto independent Republic of Artsakh, which was proclaimed in 1991. +Gallery. +<br> +References. +<templatestyles src="Reflist/styles.css" /> +Notes. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Art.txt b/.github/workflows/data/simplewiki-100/Art.txt new file mode 100644 index 000000000..6379c495b --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Art.txt @@ -0,0 +1,34 @@ +Art is a creative activity. It produces a product, an object. Art is a diverse range of human activities in creating visual, performing subjects, and expressing the author's thoughts. The product of art is called a work of art, for others to experience. +Some art is useful in a practical sense, such as a sculptured clay bowl that can be used. That kind of art is sometimes called a "craft". +Those who make art are called artists. They hope to affect the emotions of people who experience it. Some people find art relaxing, exciting or informative. Some say people are driven to make art due to their inner creativity. +"The arts" is a much broader term. It includes drawing, painting, sculpting, photography, performance art, dance, music, poetry, prose and theatre. +Types of art. +Art is divided into the plastic arts, where something is made, and the performing arts, where something is done by humans in action. The other division is between pure arts, done for themselves, and practical arts, done for a practical purpose, but with artistic content. +What "art" means. +Some people say that art is a product or item that is made with the intention of stimulating the human senses as well as the human mind, spirit and soul. Art can also be an Idea or a concept that is expressed visually. An artwork is normally judged by how much impact it has on people, the number of people who can relate to it, and how much they appreciate it. Some people also get inspired. +The first and broadest sense of "art" means "arrangement" or "to arrange." In this sense, art is created when someone arranges things found in the world into a new or different design or form; or when someone arranges colors or forms next to each other to make an image or just to make a pretty or interesting look. Art can also be an an existing object that is presented and called art, this is called re contextualizing. This is often done by placing the object in a frame or a special setting like a Gallery were the new setting gives the object a different meaning or message. (Marcel Duchamp, "Fountain," 1917) +The difference between Art and design can be subjective to the viewer and hard to distinguish. Art is often said to have a message or a meaning and design is about only the appearance. +Art may express emotion. Artists may feel a certain emotion or message and wish to express it by creating something that means something to them. Most of the art created in this case is made for the artist rather than an audience. However, if an audience is able to connect with the emotion or the message as well, then the art work may become publicly successful. +History of art. +There are sculptures, cave painting and rock art dating from the Upper Paleolithic era. +All of the great ancient civilizations, such as Ancient Egypt, India, China, Greece, Rome and Persia had works and styles of art. In the Middle Ages, most of the art in Europe showed people from the Bible in paintings, stained-glass windows, and mosaic tile floors and walls. +Islamic art includes geometric patterns, Islamic calligraphy, and architecture. In India and Tibet, painted sculptures, dance, and religious painting were done. In China, arts included jade carving, bronze, pottery, poetry, calligraphy, music, painting, drama, and fiction. There are many Chinese artistic styles, which are usually named after the ruling dynasty. +In Europe, after the Middle Ages, there was a "Renaissance" which means "rebirth". People rediscovered science and artists were allowed to paint subjects other than religious subjects. People like Michelangelo and Leonardo da Vinci still painted religious pictures, but they also now could paint mythological pictures too. These artists also invented perspective where things in the distance look smaller in the picture. This was new because in the Middle Ages people would paint all the figures close up and just overlapping each other. These artists used nudity regularly in their art. +In the late 1800s, artists in Europe, responding to Modernity created many new painting styles such as Classicism, Romanticism, Realism, and Impressionism. The history of twentieth century art includes Expressionism, Fauvism, Cubism, Dadaism, Surrealism, and Minimalism. +Roles of art. +In some societies, people think that art belongs to the person who made it. They think that the artist put his or her "talent" and industry into the art. In this view, the art is the property of the artist, protected by copyright. +In other societies, people think that art belongs to no one. They think that society has put its social capital into the artist and the artist's work. In this view, society is a collective that has made the art, through the artist. +Functions of art. +The functions of art include: +1) Cognitive function + Works of art let us know about what the creator thought or knew, and what the surroundings of the author were like, real or imagined. +2) Aesthetic function + Works of art can make people happy by being beautiful or evoke any of the emotions. +3) Prognostic function + Some artists draw what they see the future like, and some of them are right, but most are not... +4) Recreation function + Art makes us think about it, not about reality; we have a rest. +5) Value function + What did the artist value? What aims did they like/dislike in human activity? This usually is clearly seen in artists' works. +6) Didactic function + What message, criticism or political change did the artist wish to achieve? \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/As.txt b/.github/workflows/data/simplewiki-100/As.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-100/Asteroid.txt b/.github/workflows/data/simplewiki-100/Asteroid.txt new file mode 100644 index 000000000..72fe52bcb --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Asteroid.txt @@ -0,0 +1,7 @@ +An asteroid is a minor planet that orbits within the inner solar system. It is a small object in the Solar System that travels around the Sun. It is like a planet but smaller. They range from very small (smaller than a car) to 600 miles (1000 km) across. A few asteroids have an asteroid moon. +The name "asteroid" means "like a star" in the ancient Greek language. Asteroids may look like small stars in the sky, but they really do move around the Sun. Like planets, asteroids do not make their own light. Because of this, some people think "asteroids" is not a good name, and think that the name "planetoid" ("like a planet") would be a better name. +Giuseppe Piazzi found the first asteroid, in 1801. He called it Ceres, and it is the biggest object in the asteroid belt. Others, like Juno, Pallas, and Vesta were found later. In the 1850s, so many had been found that they were numbered by a Minor planet designation starting with 1 Ceres. Today, astronomers using computerized telescopes find thousands of asteroids every month. Asteroid impact prediction is one of their purposes. +Asteroids are the leftover rock and other material from the formation of the Solar System. These rocks were too small to come together to make a planet. Some are made of carbon or metal. Depending on what's on the surface, they are classified into various asteroid spectral types including Type M (metal), Type S (stone), and Type C (carbon). +Most asteroids in our Solar System are in the asteroid belt between Mars and Jupiter. Many are not in the main asteroid belt. The ones that come close to Earth are called Near-Earth asteroids. Some scientists think asteroids striking the Earth killed off all the dinosaurs and caused some of the other extinction events. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Astronomy.txt b/.github/workflows/data/simplewiki-100/Astronomy.txt new file mode 100644 index 000000000..fc06588ea --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Astronomy.txt @@ -0,0 +1,64 @@ +Astronomy is the scientific study of celestial bodies. Stars, galaxies, planets, moons, asteroids, comets and nebulae are studied, as are supernovae explosions, gamma ray bursts, and cosmic microwave background radiation. Astronomy includes the development, physics, chemistry, meteorology and movement of celestial bodies. The big questions are the structure and development of the universe. +Astronomy is one of the oldest sciences. The patterns of stars in the night sky were called constellations by the Arabs. They used the positions of the stars to navigate, and to find when was the best time to plant crops. +Astrophysics is an important part of astronomy. A related subject, cosmology, is concerned with studying the universe as a whole, and the way the universe changed over time. Astronomy is not the same as "astrology", a belief that the motion of the stars and the planets may affect human lives. +There are two main types of astronomy, "observational" and "theoretical" astronomy. Observational astronomy uses telescopes and cameras to "observe" or look at stars, galaxies and other astronomical objects. Theoretical astronomy explains what we see. It predicts what might happen. Observations show whether the predictions work. The main work of astronomy is to explain puzzling features of the Universe. For many years the most important issue was the motions of planets. Many other topics are now studied. +Day-time astronomy is possible. First, there's the Sun, but observing directly is dangerous. It is too bright, and can burn your eyes and can cause permanent blindness. To look at the Sun you need proper shields and equipment. Some other individual bright stars and planets can be seen during daylight hours through a telescope or a powerful pair of binoculars. +History of astronomy. +Ancient history. +Early astronomers used only their eyes to look at the stars. They made maps of the constellations and stars for religious reasons and calendars to work out the time of year. Early civilisations such as the Maya people and the Ancient Egyptians built simple observatories and drew maps of the stars positions. They also began to think about the place of Earth in the universe. For a long time people thought Earth was the center of the universe, and that the planets, the stars and the sun went around it. This is known as geocentrism. Astronomy is from the Greek "astron" (ἄστρον) meaning "star" and "nomos" (nόμος) meaning "law") +Ancient Greeks tried to explain the motions of the Sun and stars by taking measurements. A mathematician named Eratosthenes was the first who measured the size of the Earth and proved that the Earth is a sphere. A theory by another mathematician named Aristarchus was, that the Sun is the center and the Earth is moving around it. This is known as heliocentrism. Only a few people thought it was right. The rest continued to believe in the "geocentric" model. Most of the names of constellations and stars come from Greeks of that time. +Arabic astronomers made many advancements during the Middle Ages including improved star maps and ways to estimate the size of the Earth. They also learned from the ancients by translating Greek books into Arabic. +Renaissance to modern era. +During the renaissance a priest named Nicolaus Copernicus thought, from looking at the way the planets moved, that the Earth was not the center of everything. Based on previous works, he said that the Earth was a planet and all the planets moved around the Sun. This brought back the old idea of heliocentrism. Galileo Galilei built his own telescopes, and used them to look more closely at the stars and planets for the first time. He agreed with Copernicus. The Catholic Church thought Galileo was wrong. He spent the rest of his life under house arrest. Heliocentric ideas were soon improved by Johannes Kepler and Isaac Newton, who invented the theory of gravity. +After Galileo, people made better telescopes and used them to see farther objects such as the planets Uranus and Neptune. They also saw how stars were similar to our Sun, but in a range of colours and sizes. They also saw thousands of other faraway objects such as galaxies and nebulae. +Modern era. +The 20th century after 1920 saw important changes in astronomy. +In the early 1920s it began to be accepted that the galaxy in which we live, the Milky Way, is not the only galaxy. The existence of other galaxies was settled by Edwin Hubble, who identified the Andromeda nebula as a different galaxy. It was also Hubble who proved that the universe was expanding. There were many other galaxies at large distances and they are receding, moving away from our galaxy. That was completely unexpected. +In 1931, Karl Jansky discovered radio emission from outside the Earth when trying to isolate a source of noise in radio communications, marking the birth of radio astronomy and the first attempts at using another part of the electromagnetic spectrum to observe the sky. Those parts of the electromagnetic spectrum that the atmosphere did not block were now opened up to astronomy, allowing more discoveries to be made. +The opening of this new window on the Universe saw the discovery of entirely new things, for example pulsars, which sent regular pulses of radio waves out into space. The waves were first thought to be alien in origin because the pulses were so regular that (so it was thought) it implied an artificial source. +The period after World War II saw more observatories. Large and accurate telescopes were built and operated at good observing sites, usually by governments. For example, Bernard Lovell began radio astronomy at Jodrell Bank using leftover military radar equipment. By 1957, the site had the largest steerable radio telescope in the world. Similarly, the end of the 1960s saw the start of the building of dedicated observatories at Mauna Kea in Hawaii, a good site for visible and infra-red telescopes thanks to its high altitude and clear skies. +The next great revolution in astronomy was thanks to the birth of rocketry. This allowed telescopes to be placed in space on satellites. +Space telescopes gave access, for the first time in history, to the entire electromagnetic spectrum including rays that had been blocked by the atmosphere. The X-rays, gamma rays, ultraviolet light and parts of the infra-red spectrum were all opened to astronomy as observing telescopes were launched. As with other parts of the spectrum, new discoveries were made. +From 1970s satellites were launched to be replaced with more accurate and better satellites, causing the sky to be mapped in nearly all parts of the electromagnetic spectrum. +Discoveries. +Discoveries broadly come in two types: bodies and phenomena. Bodies are things in the Universe, whether it is a planet like our Earth, or a galaxy like our Milky Way. Phenomena are events and happenings in the Universe. +Bodies. +For convenience, this section has been divided by where these astronomical bodies may be found: those found around stars are solar bodies, those inside galaxies are galactic bodies and everything else larger are cosmic bodies. +Galactic. +Diffuse Objects: +Compact Stars: +Phenomena. +Burst events are those where there is a sudden change in the heavens that disappears quickly. These are called bursts because they are normally associated with large explosions producing a "burst" of energy. They include: +Periodic events are those that happen regularly in a repetitive way. The name periodic comes from period, which is the length of time required for a wave to complete one cycle. Periodic phenomena include: +Noise phenomena tend to relate to things that happened a long time ago. The signal from these events bounce around the Universe until it seems to come from everywhere and varies little in intensity. In this way, it is "noise", the background signal that pervades every instrument used for astronomy. The most common example of noise is static seen on analogue televisions. The principal astronomical example is: cosmic background radiation. +Methods. +Techniques. +There are way astronomers can get better pictures of the heavens. Light from a distant source reaches a sensor and gets measured, normally by a human eye or a camera. For very dim sources, there may not be enough light particles coming from the source for it to be seen. One technique that astronomers have for making it visible is using "integration" (which is like longer exposures in photography). +Integration. +Astronomical sources do not move much: only the rotation and movement of the Earth causes them to move across the heavens. As light particles reach the camera over time, they hit the same place making it brighter and more visible than the background, until it can be seen. +Telescopes at most observatories (and satellite instruments) can normally track a source as it moves across the heavens, making the star appear still to the telescope and allowing longer exposures. Also, images can be taken on different nights so exposures span hours, days or even months. In the digital era, digitised pictures of the sky can be added together by computer, which overlays the images after correcting for movement. +Adaptive optics. +Adaptive optics means changing the shape of the mirror or lens while looking at something, to see it better. +Data analysis. +Data analysis is the process of getting more information out of an astronomical observation than by simply looking at it. The observation is first stored as data. This data then has various techniques used to analyse it. +Fourier analysis. +Fourier analysis in mathematics can show if an observation (over a length of time) is changing periodically (changes like a wave). If so, it can extract the frequencies and the type of wave pattern, and find many things including new planets. +Subfields of astronomy. +Pulsars pulse regularly in radio waves. These turned out to be similar to some (but not all) of a type of bright source in X-rays called a Low-mass X-ray binary. It turned out that all pulsars and some LMXBs are neutron stars and that the differences were due to the environment in which the neutron star was found. Those LMXBs that were not neutron stars turned out to be black holes. +This section attempts to provide an overview of the important fields of astronomy. +Solar astronomy. +Solar astronomy is the study of the Sun. The Sun is the closest star to Earth at around 92 million (92,000,000) miles away. It is the easiest to observe in detail. Observing the Sun can help us understand how other stars work and are formed. Changes in the Sun can affect the weather and climate on Earth. A stream of charged particles called the Solar wind is constantly sent off from the Sun. The Solar wind hitting the Earth's magnetic field causes the northern lights. +Stellar astronomy +Stellar astronomy, sometimes "stellar astrophysics" is the scientific study of stars, their formation, evolution and fate (stellar evolution). In the most basic sense, Stellar Astronomy attempts to answer the questions to the universe's most common phenomena — stars. Heavily relating with Galactic and Planetary Astronomy. +Planetary astronomy. +Planetary astronomy is the study of planets, moons, dwarf planets, comets and asteroids as well as other small objects that orbit stars. The planets of our own Solar System have been studied in depth by many visiting spacecraft such as Cassini-Huygens (Saturn) and the Voyager 1 and 2. +Galactic astronomy. +Galactic astronomy is the study of distant galaxies. Studying distant galaxies is a good way of learning about our own galaxy, as the gases and stars in our own galaxy make it difficult to observe. Galactic astronomers try to understand the structure of galaxies and how they are formed by using different types of telescopes and computer simulations. +Gravitational wave astronomy. +Gravitational wave astronomy is the study of the Universe in the gravitational wave spectrum. So far, all astronomy that has been done has used the electromagnetic spectrum. Gravitational waves are ripples in spacetime emitted by very dense objects changing shape, which include white dwarves, neutron stars and black holes. Because no one has been able to detect gravitational waves directly, the impact of gravitational wave astronomy has been limited. +Unsolved problems. +Great discoveries also produce unsolved problems. This is just a short-list: +Related pages. +<templatestyles src="Div col/styles.css"/> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Atom.txt b/.github/workflows/data/simplewiki-100/Atom.txt new file mode 100644 index 000000000..9305f8917 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Atom.txt @@ -0,0 +1,66 @@ +An atom is an extremely small piece of matter. All normal matter – everything that has mass – is made of atoms. This includes solids, liquids, and gases. The atom cannot be broken to parts by chemistry, so people once thought it was the smallest piece of matter that could exist. There are over 100 different kinds of atoms, called chemical elements. Each kind has the same basic structure, but a different number of parts. +Atoms are very small, but their exact size depends on the type. Atoms are from 0.1 to 0.5 nanometers across. One nanometer is about 100,000 times smaller than the width of a human hair. This makes one atom impossible to see without special tools. Scientists learn how they work by doing experiments. +Atoms are made of three kinds of subatomic particles. These are protons, neutrons, and electrons. Protons and neutrons have much more mass. These are in the middle of the atom, called the nucleus. Lightweight electrons move quickly around them. The electromagnetic force holds the nucleus and electrons together. +Atoms with the same number of protons belong to the same chemical element. Examples of elements are carbon and gold. Atoms with the same number of protons, but different numbers of neutrons, are called isotopes. Usually an atom has the same number of electrons as protons. If an atom has more or less electrons than protons, it is called an ion, and has an electric charge. +Atoms can join by chemical bonds. Many things are made of more than one kind of atom. These are chemical compounds or mixtures. A group of atoms connected by chemical bonds is called a molecule. For example, a water molecule is made of two hydrogen atoms and one oxygen atom. The forming or breaking of bonds is a chemical reaction. +Atoms split if the forces inside are too weak to hold them together. This is what causes radioactivity. Atoms can also join to make larger atoms at very high temperatures, such as inside a star. These changes are studied in nuclear physics. Most atoms on Earth are not radioactive. They are rarely made, destroyed, or changed into another kind of atom. +History. +The word "atom" comes from the Greek (ἀτόμος) "atomos", which means "indivisible" or "uncuttable". One of the first people to use the word "atom" is the Greek philosopher Democritus, around 400 . He thought that everything was made of particles called atoms, which could not be divided into smaller pieces. Some Hindu, Jain, and Buddhist philosophers also had ideas like this. Atomic theory was a mostly philosophical subject, with not much scientific investigation or study, until the early 1800s. +In 1777 French chemist Antoine Lavoisier defined the term "element" as we now use it. He said that an element was any substance that could not be broken down into other substances by the methods of chemistry. Any substance which could be broken down was a "compound". +In 1803, English philosopher John Dalton suggested that elements were made of tiny, solid balls called atoms. Dalton believed that all atoms of the same element have the same mass. He said that compounds are formed when atoms of more than one element combine. In any one compound, the atoms would always combine in the same numbers. +In 1827, British scientist Robert Brown looked at pollen grains in water under his microscope. The pollen grains appeared to be shaking. Brown used Dalton's atomic theory to describe patterns in how they moved. This was called "Brownian motion". In 1905 Albert Einstein used mathematics to prove that the pollen particles were being moved by the motion, or heat, of individual water molecules. By doing this, he proved that atoms are real without question. +In 1869, Russian scientist Dmitri Mendeleev published the first periodic table. The periodic table groups elements by their atomic number (how many protons they have; this is usually the same as the number of electrons). Elements in the same column, or group, usually have similar qualities. For example, helium, neon, argon, krypton, and xenon are all in the same column and are very similar. All these elements are gases that have no color or smell. Also, they cannot combine with other atoms to form compounds. Together they are known as noble gases. +The physicist J.J. Thomson was the first person to discover electrons. This happened while he was working with cathode rays in 1897. He learned they had a negative charge, and the rest of the atom had a positive charge. Thomson made the plum pudding model, which said that an atom was like plum pudding: the dried fruit (electrons) were stuck in a mass of pudding (having a positive charge). +In 1909, Ernest Rutherford used the Geiger–Marsden experiment to prove that most of an atom is in a very small space, the atomic nucleus. Rutherford took a photo plate and covered it with gold foil. He then shot alpha particles (made of two protons and two neutrons stuck together) at it. Many of the particles went through the gold foil, which proved that atoms are mostly empty space. Electrons are so small and fast-moving that they did not block the particles from going through. Rutherford later discovered protons in the nucleus. +In 1913, Niels Bohr created the Bohr model. This model showed that electrons travel around the nucleus in fixed circular orbits. This was better than the Rutherford model, but it was still not completely true. +In 1925, chemist Frederick Soddy discovered that some elements had more than one kind of atom, called isotopes. Soddy believed that each different isotope of an element has a different mass. To prove this, chemist Francis William Aston built the mass spectrometer, which measures the mass of single atoms. Aston proved that Soddy was right. He also found that the mass of each atom is a whole number times the mass of the proton. This meant that there must be some particles in the nucleus other than protons. In 1932, physicist James Chadwick shot alpha particles at beryllium atoms. He saw that a particle shot out of the beryllium atoms. This particle had no charge, but about the same mass as a proton. He named this particle the neutron. +The best model so far comes from the Schrödinger equation. Schrödinger learned that the electrons exist in a cloud around the nucleus, called the electron cloud. In the electron cloud, it is impossible to know exactly where electrons are. The Schrödinger equation says where an electron is likely to be. This area is called the electron's orbital. +In 1937, German chemist Otto Hahn became the first person to make nuclear fission in a laboratory. He discovered this by chance when shooting neutrons at a uranium atom, hoping to make a new isotope. However, instead of a new isotope, the uranium changed into a barium atom, a smaller atom than uranium. Hahn had "broken" the uranium atom. This was the world's first recorded nuclear fission reaction. This discovery led to the creation of the atomic bomb and nuclear power, where fission happens over and over again, creating a chain reaction. +Later in the 20th century, physicists went deeper into the mysteries of the atom. Using particle accelerators, they discovered that protons and neutrons were made of other particles, called quarks. +Structure and parts. +Parts. +An atom is made of three main particles: the proton, the neutron, and the electron. Protons and neutrons have nearly the same size and mass (about grams). The mass of an electron is about 1800 times smaller (about grams). Protons have a positive charge, electrons have a negative charge, and neutrons have no charge. Most atoms have no charge. The number of protons (positive) and electrons (negative) are the same, so the charges balance out to zero. However, ions have a different number of electrons than protons, so they have a positive or negative charge. +Scientists believe that electrons are elementary particles: they are not made of any smaller pieces. Protons and neutrons are made of quarks of two kinds: up quarks and down quarks. A proton is made of two up quarks and one down quark, and a neutron is made of two down quarks and one up quark. +Nucleus. +The nucleus is in the middle of the atom. It is made of protons and neutrons. The nucleus makes up more than 99.9% of the mass of the atom. However, it is very small: about 1 femtometer (10−15 m) across, which is around 100,000 times smaller than the width of an atom, so it has a very high density. +Usually in nature, two things with the same charge repel or shoot away from each other. So for a long time, scientists did not know how the positively charged protons in the nucleus stayed together. We now believe that the attraction between protons and neutrons comes from the "strong nuclear force". This force also holds together the quarks that make up the protons and neutrons. Particles called mesons travel back and forth between protons and neutrons, and carry the force. +The number of neutrons in relation to protons defines whether the nucleus stays together or goes through radioactive decay. When there are too many neutrons or protons, the atom tries to make the numbers smaller or more equal by removing the extra particles. It sends out radiation in the form of alpha, beta, or gamma decay. Nuclei can also change in other ways. Nuclear fission is when the nucleus breaks into two smaller nuclei, releasing a lot of energy. This release of energy makes nuclear fission useful for making bombs, and electricity in the form of nuclear power. +The other way nuclei can change is through nuclear fusion, when two nuclei join or fuse to make a larger nucleus. This process requires very high amounts of energy to overcome the electric repulsion between the protons, as they have the same charge. Such high energies are most common in stars like our Sun, which fuses hydrogen for fuel. However, once fusion happens, far more energy is released, because some of the mass becomes energy. +The energy needed to break a nucleus into protons and neutrons is called its nuclear binding energy. This energy can be converted to mass, as stated by Einstein's famous formula "E" = "mc"2. Medium-sized nuclei, such as iron-56 and nickel-62, have the highest binding energy per proton or neutron. They will probably not go through fission or fusion, because they cannot release energy in this way. Very small and very large atoms have low binding energy, so they are most willing to go through fission or fusion. +Electrons. +Electrons orbit, or travel around, the nucleus. They are called the atom's "electron cloud". They are attracted to the nucleus because of the electromagnetic force. Electrons have a negative charge, and the nucleus always has a positive charge, so they attract each other. +The Bohr model shows that some electrons are farther from the nucleus than others in different levels. These are called "electron shells". Only the electrons in the outer shell can make chemical bonds. The number of electrons in the outer shell determines whether the atom is stable or which atoms it will bond with in a chemical reaction. If an atom has only one shell, it needs two electrons to be complete. Otherwise, the outer shell needs eight electrons to be complete. +The Bohr model is important because it has the idea of energy levels. The electrons in each shell have a certain amount of energy. Shells that are farther from the nucleus have more energy. When a small burst of energy called a photon hits an electron, the electron can jump into a "higher-energy" shell. This photon must carry exactly the right amount of energy to bring the electron to the new energy level. A photon is a burst of light, and the amount of energy determines the color of light. So each kind of atom will absorb certain colors of light, called the absorption spectrum. An electron can also send out, or emit, a photon, and fall into a "lower energy" shell. For the same reason, the atom will only send out certain colors of light, called the emission spectrum. +The complete picture is more complicated. Unlike the Earth moving around the Sun, electrons do not move in a circle. We cannot know the exact place of an electron. We only know the probability, or chance, that it will be in any place. Each electron is part of an "orbital", which describes where it is likely to be. No more than two electrons can be in one orbital; these two electrons have different "spin". +For each shell, numbered 1, 2, 3, and so on, there may be a number of different orbitals. These have different shapes, or point in different directions. Each orbital can be described by its three "quantum numbers". The "principal quantum number" is the electron shell number. The "azimuthal quantum number" is represented by a letter: s, p, d, or f. Depending on the principal and azimuthal quantum numbers, the electron can have more or less energy. There is also a "magnetic quantum number", but it does not usually affect the energy level. As more electrons are added, they join orbitals in order from lowest to highest energy. This order starts as follows: 1s, 2s, 2p, 3s, 3p, 4s, 3d, 4p, 5s, 4d. For example, a chlorine atom has 17 electrons. So, it will have: +In other words, it has 2 electrons in the first shell, 8 in the second shell, and 7 in the third shell. +Properties. +Atomic number. +The number of protons in an atom is called its "atomic number". Atoms of the same element have the same atomic number. For example, all carbon atoms have six protons, so the atomic number of carbon is six. Today, 118 elements are known. Depending on how the number is counted, 90 to 94 elements exist naturally on earth. All elements above number 94 have only been made by humans. These elements are organized on the periodic table. +Atomic mass and weight. +Because protons and neutrons have nearly the same mass, and the mass of electrons is very small, we can call the number of protons and neutrons in an atom its "mass number". Most elements have several isotopes with different mass numbers. To name an isotope, we use the name of the element, followed by its mass number. So an atom with six protons and seven neutrons is called carbon-13. +Sometimes, we need a more exact measurement. The exact mass of an atom is called its "atomic mass". This is usually measured with the atomic mass unit (amu), also called the dalton. One amu is exactly 1/12 of the mass of a carbon-12 atom, which is grams. Hydrogen-1 has a mass of about 1 amu. The heaviest atom known, oganesson, has a mass of about 294 amu, or grams. The average mass of all atoms of a particular element is called its "atomic weight". +Size. +The size of an atom depends on the size of its electron cloud. Moving down the periodic table, more electron shells are added. As a result, atoms get bigger. Moving to the right on the periodic table, more protons are added to the nucleus. This more positive nucleus pulls electrons more strongly, so atoms get smaller. The biggest atom is caesium, which is about 0.596 nanometers wide according to one model. The smallest atom is helium, which is about 0.062 nanometers wide. +How atoms interact. +When atoms are far apart, they attract each other. This attraction is stronger for some kinds of atoms than others. At the same time, the heat, or kinetic energy, of atoms makes them always move. If the attraction is strong enough, relative to the amount of heat, atoms will form a solid. If the attraction is weaker, they will form a liquid, and if it is even weaker, they will form a gas. +Chemical bonds are the strongest kinds of attraction between atoms. The movement of electrons explains all chemical bonds. +Atoms usually bond with each other in a way that fills or empties their outer electron shell. The most reactive elements have an almost full or almost empty outer shell. Atoms with a full outer shell, called noble gases, do not usually form bonds. +There are three main kinds of bonds: ionic bonds, covalent bonds, and metallic bonds. +All atoms attract each other by Van der Waals forces. These forces are weaker than chemical bonds. They are caused when electrons move to one side of an atom. This movement gives a negative charge to that side. It also gives a positive charge to the other side. When two atoms line up their sides with negative and positive charges, they will attract. +Although atoms are mostly empty space, they cannot pass through each other. When two atoms are very close, their electron clouds will repel each other by the electromagnetic force. +Magnetism. +To understand how magnets work, we can look at the properties of the atom. Any magnet has a north and south pole, and a certain strength. The direction and strength of a magnet, together, are called its magnetic moment. Every electron also has a magnetic moment, like a tiny magnet. This comes from the electron's spin and its orbit around the nucleus. The magnetic moments for the electrons add up to a magnetic moment for the whole atom. This tells us how atoms act in a magnetic field. +Every electron has one of two opposite spins. We can think of one as turning to the right, and the other as turning to the left. If every electron is paired with an electron with the opposite spin in the same orbital, the magnetic moments will cancel out to zero. Atoms like this are called diamagnetic. They are only weakly repelled by a magnetic field. +However, if some electrons are not paired, the atom will have a lasting magnetic moment: it will be paramagnetic or ferromagnetic. When atoms are paramagnetic, the magnetic moment of each atom points in a random direction. They are weakly attracted to a magnetic field. When atoms are ferromagnetic, the magnetic moments of nearby atoms act on each other. They point in the same direction. This means that the whole object is a magnet, and it can point in the direction of a magnetic field. Ferromagnetic materials, such as iron, cobalt, and nickel, are strongly attracted to a magnetic field. +Radioactive decay. +Some elements, and many isotopes, have what is called an "unstable nucleus". This means the nucleus is either too big to hold itself together, or it has too many protons or neutrons. When a nucleus is unstable, it has to eliminate the excess mass of particles. It does this through radiation. An atom that does this is called "radioactive". Unstable atoms emit radiation until they lose enough particles in the nucleus to become stable. All atoms above atomic number 82 (82 protons, lead) are radioactive. +There are three main kinds of radioactive decay: alpha, beta, and gamma. +Every radioactive element or isotope has a "half-life". This is how long it takes half of any sample of atoms of that type to decay into a different isotope or element. +Creation of atoms. +Nearly all the hydrogen atoms in the Universe, most of the helium atoms, and some of the lithium atoms were made soon after the Big Bang. Even today, about 90% of all atoms in the Universe are hydrogen. +All other atoms come from nuclear fusion in stars, or sometimes from cosmic rays that hit atoms. At the start of their life, all stars fuse hydrogen to make helium. The least massive stars, red dwarfs, are expected to stop there. All other stars will then fuse helium to make carbon and oxygen. In stars like the Sun, the temperature and pressure are too low to make larger atoms. But more massive stars continue fusion, until they create iron (atomic number 26) or nickel (atomic number 28). Atoms can also grow larger when neutrons or protons hit them. This could happen inside stars or in supernovae. Most atoms on Earth were made by a star that existed before the Sun. +People make very large atoms by smashing together smaller atoms in particle accelerators. However, these atoms often decay very quickly. Oganesson (element 118) has a half-life of 0.00089 seconds. Even larger atoms may be created in the future. +Sources. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/August.txt b/.github/workflows/data/simplewiki-100/August.txt new file mode 100644 index 000000000..5a002950b --- /dev/null +++ b/.github/workflows/data/simplewiki-100/August.txt @@ -0,0 +1,11 @@ +August (Aug.) is the eighth month of the year in the Gregorian calendar, coming between July and September. It has 31 days. It is named after the Roman emperor Augustus Caesar. +August does not begin on the same day of the week as any other month in common years, but begins on the same day of the week as February in leap years. August always ends on the same day of the week as November. +The Month. +This month was first called "Sextilis" in Latin, because it was the sixth month in the old Roman calendar. The Roman calendar began in March about 735 BC with Romulus. October was the eighth month. August was the eighth month when January or February were added to the start of the year by King Numa Pompilius about 700 BC. Or, when those two months were moved from the end to the beginning of the year by the decemvirs about 450 BC (Roman writers disagree). In 153 BC January 1 was determined as the beginning of the year. +August is named for Augustus Caesar who became Roman consul in this month. The month has 31 days because Julius Caesar added two days when he created the Julian calendar in 45 BC. August is after July and before September. +August, in either hemisphere, is the seasonal equivalent of February in the other. In the Northern hemisphere it is a summer month and it is a winter month in the Southern hemisphere. +No other month in common years begins on the same day of the week as August, but August begins on the same day of the week as February in leap years. August ends on the same day of the week as November every year, as each other's last days are 13 weeks (91 days) apart. +In common years, August starts on the same day of the week as March and November of the previous year, and in leap years, June of the previous year. In common years, August finishes on the same day of the week as March and June of the previous year, and in leap years, September of the previous year. In common years immediately after other common years, August starts on the same day of the week as February of the previous year. +In years immediately before common years, August starts on the same day of the week as May of the following year, and in years immediately before leap years, October of the following year. In years immediately before common years, August finishes on the same day of the week as May of the following year, and in years immediately before leap years, February and October of the following year. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Australia.txt b/.github/workflows/data/simplewiki-100/Australia.txt new file mode 100644 index 000000000..c4667056e --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Australia.txt @@ -0,0 +1,78 @@ +Australia (officially called the Commonwealth of Australia) is a country and sovereign state located in the southern hemisphere, in Oceania. Its capital city is Canberra, and its largest city is Sydney. It is mostly desert country. +Australia is the sixth biggest country in the world by land area, and is part of the Oceanic and Australasian regions. Australia, New Zealand, New Guinea and other islands on the Australian tectonic plate are together called Australasia, which is one of the world's great ecozones. When other Pacific islands are included with Australasia, it is called Oceania. +27 million people live in Australia, and about 85% of them live near the east coast. The country is divided up into six states and two territories, and more than half of Australia's population lives in and around the cities of Sydney, Melbourne, Brisbane, Perth and Adelaide. The first people to live in the country were the Indigenous Australians: many of them died from smallpox during colonisation. +Australia is known for its mining (coal, iron, gold, diamonds and crystals). It produces wool, and is the world's largest producer of bauxite. Its emblem is a flower called the golden wattle. +Australia is also known for its animals. The national symbols of Australia are the kangaroo and the golden wattle. Scientifically, perhaps even more important are its two monotreme mammals: the platypus and the echidna. +Geography. +Australia's landmass of is on the Indo-Australian plate. The continent of Australia, including the island of Tasmania, was separated from the other continents of the world many millions of years ago. Because of this, many animals and plants live in Australia that do not live anywhere else. These include animals like the kangaroo, the koala, the emu, and the kookaburra. The duck-billed platypus. and the echidna are completely unique. +People first arrived in Australia more than 50,000 years ago. These native Australians are called the Australian Aboriginals. For the history of Australia, see History of Australia. +Most of the Australian colonies, having been settled from Britain, became mostly independent democratic states in the 1850s and all six combined as a federation on 1 January 1901. The first Prime Minister of Australia was Edmund Barton in 1901. Australia is a member of the United Nations and the Commonwealth of Nations. It is a parliamentary democracy and a constitutional monarchy with King Charles III as King of Australia and Head of State and a Governor-General who is chosen by the Prime Minister to carry out all the duties of the King in Australia. +Regions and cities. +Australia has six states, two major mainland territories, and other minor territories. The states are New South Wales, Queensland, South Australia, Victoria, Western Australia and Tasmania (which is a large island). The two major mainland territories are the Northern Territory (which is huge) and the Australian Capital Territory (ACT) which is not much more than a city. +The population is about 26 million people (2021 census = 25,890,773). Most Australians live in cities along the coast, such as Sydney, Melbourne, Brisbane, Perth, Adelaide, Newcastle and the Gold Coast. The largest inland city is Canberra, which is also the nation's capital. The largest city is Sydney. +Australia is a very large country, but much of the land is very dry, and the middle of the continent is mostly a hot desert. Only the areas around the east, west and south coast have enough rain and a suitable climate (not too hot and dry) for farms and cities. The island state of Tasmania has a more balanced climate than much of the mainland. +Climate change. +All the capital cities except Perth and Darwin are in the south-east of the country. There is now increasing rainfall and flooding which affects this region, which is ominous [threatening]. It is thought this is caused by climate change, and may continue to get worse. The BBC report comments: "In the past three years, record-breaking bushfire and flood events have killed more than 500 people and billions of animals. Drought, cyclones and freak tides have gripped communities". The BBC report continues: "Nowhere is this a bigger issue than in Queensland. It is home to almost 40% of the 500,000 homes projected to be effectively uninsurable". This means people can't get insurance because the risk of flooding (in one season) or fire (in another season) is too great. +History. +Aboriginal people. +The Aboriginal and Torres Strait Islander people arrived in Australia about 60,000 years ago or maybe even earlier. Until the arrival of British settlers in 1788, the Aboriginal people lived by hunting and gathering food from the land. They lived in all sorts of climates and managed the land in different ways. An example of Aboriginal land management was the Cumberland Plain where Sydney is now. Every few years the Aboriginal people would burn the grass and small trees. This meant that a lot of grass grew back, but not many big trees. Kangaroos like to live on grassy plains, but not in forests. The kangaroos that lived on the plain were a good food supply for the Aboriginal people. Sometimes, Aboriginals would name a person after an animal, and they could not eat that animal to help level out the food population. +Aboriginal people did not usually build houses, except huts of grass, leaves and bark. They did not usually build walls or fences, and there were no horses, cows or sheep in Australia that needed to be kept in pens. The only Aboriginal buildings that are known are fish-traps made from stones piled up in the river, and the remains of a few stone huts in Victoria and Tasmania. The Aboriginal people did not use metal or make pottery or use bows and arrows or weave cloth. In some parts of Australia the people used sharp flaked-stone spearheads, but most Aboriginal spears were made of sharply pointed wood. Australia has a lot of trees that have very hard wood that was good for spear making. The boomerang was used in some areas for sport and for hunting. +The Aboriginal people did not think that the land belonged to them. They believed that they had grown from the land, so it was like their mother, and they belonged to the land. +"Terra Australis". +In the 1600s, Dutch merchants traded with the islands of Batavia (now Indonesia), to the north of Australia and several different Dutch ships touched on the coast of Australia. The Dutch governor, van Diemen, sent Abel Tasman on a voyage of discovery and he found Tasmania, which he named Van Diemen's Land. Its name was later changed to honour the man who discovered it. +The British Government was sure that there must be a very large land in the south, that had not been explored. They sent Captain James Cook to the Pacific Ocean. His ship, "HMS Endeavour", carried the famous scientists, Sir Joseph Banks and Dr Solander who were going to Tahiti where they would watch the planet Venus pass in front of the Sun. Captain Cook's secret mission was to find "Terra Australis" (the Land of the South). +The voyage of discovery was very successful, because they found New Zealand and sailed right around it. Then they sailed westward. At last, a boy, William Hicks, who was up the mast spotted land on the horizon. Captain Cook named that bit of land Point Hicks. They sailed up the coast and Captain Cook named the land that he saw "New South Wales". At last they sailed into a large open bay which was full of fish and stingrays which the sailors speared for food. Joseph Banks and Dr. Solander went ashore and were astonished to find that they did not know what any of the plants or birds or animals that they saw were. They collected hundreds of plants to take back to England. +Captain Cook saw the Aboriginal people with their simple way of life. He saw them fishing and hunting and collecting grass seeds and fruit. But there were no houses and no fences. In most parts of the world, people put up a house and a fence or some marker to show that they own the land. But the Aboriginal people did not own the land in that way. They belonged to the land, like a baby belongs to its mother. Captain Cook went home to England and told the government that no-one owned the land. This would later cause a terrible problem for the Aboriginal people. +Settlement. +In the 1700s, in England, laws were tough, many people were poor and gaols (jails) were full. A person could be sentenced to death for stealing a loaf of bread. Many people were hanged for small crimes. But usually they were just thrown in gaol. Often they were sent away to the British colonies in America. But by the 1770s, the colonies in America became the United States. They were free from British rule and would not take England's convicts any more, so England needed to find a new and less populated place. +By the 1780s the gaols of England were so full that convicts were often chained up in rotting old ships. The government decided to make a settlement in New South Wales and send some of the convicts there. In 1788 the First Fleet of eleven ships set sail from Portsmouth carrying convicts, sailors, marines, a few free settlers and enough food to last for two years. Their leader was Captain Arthur Phillip. They were to make a new colony at the place that Captain Cook had discovered, named Botany Bay because of all the unknown plants found there by the two scientists. +Captain Phillip found that Botany Bay was flat and windy. There was not much fresh water. He went with two ships up the coast and sailed into a great harbour called Port Jackson, which he said was "the finest harbour in the world". There were many small bays on the harbour so he decided on one which had a good stream of fresh water and some flat shore to land on. On 26 January 1788, the flag was raised and New South Wales was claimed in the name of King George III of England, and the new settlement was called Sydney. +For the first few years of the settlement, things were very difficult. No-one in the British Government had thought very hard about what sort of convicts should be sent to make a new colony. Nobody had chosen them carefully. There was only one man who was a farmer. There was no-one among the convicts who was a builder, a brick-maker or a blacksmith. No-one knew how to fix the tools when they broke. All of the cattle escaped. There were no cooking pots. All the plants were different so no-one knew which ones could be eaten. It was probable that everyone in the new colony would die of starvation. +The little group of tents had a hut for the Governor, Arthur Phillip, and another hut for the supply of food. Soon it grew into a small town with streets, a bridge over the stream, a windmill for grinding grain and wharves for ships. By the 1820s there was a fine brick house for the Governor. There was also a hospital and a convict barracks and a beautiful church which are still standing today. Settlements had spread out from Sydney, firstly to Norfolk Island and to Van Diemen's Land (Tasmania), and also up the coast to Newcastle, where coal was discovered, and inland where the missing cattle were found to have grown to a large herd. Spanish Merino sheep had been brought to Sydney, and by 1820, farmers were raising fat lambs for meat and also sending fine wool back to the factories of England. +While the settlement was growing in New South Wales, it was also growing in Tasmania. The climate in Tasmania was more like that in England, and farmers found it easy to grow crops there. +Exploration. +Because Australia is such a very large land, it was easy to think that it might be able to hold a large number of people. In the early days of the colony, a great number of explorers went out, searching for good land to settle on. +When the settlers looked west from Sydney, they saw a range of mountains which they called the Blue Mountains. They were not very high and did not look very rugged but for many years no-one could find their way through them. In 1813 Gregory Blaxland, William Lawson and a 17-year-old called William Charles Wentworth crossed the Blue Mountains and found land on the other side which was good for farming. A road was built and the governor, Lachlan Macquarie founded the town of Bathurst on the other side, 160 km (100 miles) from Sydney. Bathurst became Australia's first inland settlement. +Some people, like Captain Charles Sturt were sure that there must be a sea in the middle of Australia and set out to find it. Many of the explorers did not prepare very well, or else they went out to explore at the hottest time of year. Some died like Burke and Wills. Ludwig Leichhardt got lost twice. The second time, he was never seen again. Major Thomas Mitchell was one of the most successful explorers. He mapped the country as he went, and his maps remained in use for more than 100 years. He travelled all the way to what is now western Victoria, and to his surprise and annoyance found that he was not the first white person there. The Henty brothers had come from Tasmania, had built themselves a house, had a successful farm and fed the Major and his men on roast lamb and wine. +Self government. +The gold rushes of New South Wales and Victoria started in 1851 leading to large numbers of people arriving to search for gold. The population grew across south east Australia and made great wealth and industry. By 1853 the gold rushes had made some poor people very rich. +The transportation of convicts to Australia ended in the 1840s and 1850s and more changes came. The people in Australia wanted to run their own country, and not be told what to do from London. The first governments in the colonies were run by governors chosen by London. Soon the settlers wanted local government and more democracy. William Wentworth started the Australian Patriotic Association (Australia's first political party) in 1835 to demand democratic government. In 1840, the city councils started and some people could vote. New South Wales Legislative Council had its first elections in 1843, again with some limits on who could vote. In 1855, limited self-government was given by London to New South Wales, Victoria, South Australia and Tasmania. In 1855, the right to vote was given to all men over 21 in South Australia. The other colonies soon followed. Women were given the vote in the Parliament of South Australia in 1895 and they became the first women in the world allowed to stand in elections. +Australians had started parliamentary democracies all across the continent. But voices were getting louder for all of them to come together as one country with a national parliament. +The Commonwealth of Australia. +Until 1901, Australia was not a nation, it was six separate colonies governed by Britain. They voted to join to form one new country, called the Commonwealth of Australia, in 1901. Australia was still part of the British Empire, and at first wanted only British or Europeans to come to Australia. But soon it had its own money, its own Army and its own Navy. +In Australia at this time, the trade unions were very strong, and they started a political party, the Australian Labor Party. Australia passed many laws to help the workers. +In 1914, the First World War started in Europe. Australia joined in on the side of Britain against Germany, Austria-Hungary and the Ottoman Empire. Australian soldiers were sent to Gallipoli, in the Ottoman Empire. They fought bravely, but were beaten by the Turks. Today Australia remembers this battle every year on ANZAC Day. They also fought on the Western Front. More than 60,000 Australians and New Zealanders were killed. +In 1932, the Sydney Harbour Bridge was opened. +Australia had a really hard time in the Great Depression of the 1930s and joined Britain in a war against Nazi Germany when Hitler invaded Poland in 1939. But in 1941 lots of Australian soldiers were captured in the Fall of Singapore by Japan. Then Japan started attacking Australia and people worried about invasion. But with help from the United States Navy, the Japanese were stopped. After the war, Australia became a close friend of the United States and Japan. +When the war ended, Australia felt that it needed many more people to fill the country up and to work. So the government said it would take in people from Europe who had lost their homes in the war. It did things like building the Snowy Mountains Scheme. Over the next 25 years, millions of people came to Australia. They came especially from Italy and Greece, other countries in Europe. Later they also came from countries like Turkey and Lebanon. An important new party, the Liberal Party of Australia was made by Robert Menzies in 1944 and it won lots of elections from 1949 until in 1972, then Gough Whitlam won for the Labor Party. Whitlam made changes, but he made the Senate unhappy and the Governor-General sacked him and forced an election in 1975. Then Malcolm Fraser won a few elections for the Liberal Party. +In the 1960s many people began coming to Australia from China, Vietnam, Malaysia and other countries in Asia. Australia became more multicultural. In the 1950s and 1960s Australia became one of the richest countries in the world, helped by mining and wool. Australia started trading more with America, than Japan. Australia supported the United States in wars against dictatorships in Korea and Vietnam and later Iraq. Australian soldiers also helped the United Nations in countries like East Timor in 1999. +In 1973, the famous Sydney Opera House opened. In the 1970s, 80s and 90s lots of Australian movies, actors and singers became famous around the world. In the year 2000, Sydney had the Summer Olympics. +In the 1980s and 90s, the Labor Party under Bob Hawke and Paul Keating, then the Liberal Party under John Howard made lots of changes to the economy. Australia had a bad recession in 1991, but when other Western countries had trouble with their economies in 2008, Australia stayed strong. +Today Australia is a rich, peaceful and democratic country. But it still has problems. Around 4-5% of Australians could not get a job in 2010. A lot of land in Australia (like Uluru) has been returned to Aboriginal people, but lots of Aboriginals are still poorer than everybody else. Every year the government chooses a big number of new people from all around the world to come as immigrants to live in Australia. These people may come because they want to do business, or to live in a democracy, to join their family, or because they are refugees. Australia took 6.5 million immigrants in the 60 years after World War Two, including around 660,000 refugees. +Julia Gillard became the first woman Prime Minister of Australia in 2010 when she replaced her Labor Party colleague Kevin Rudd (who later replaced her). +Politics. +Australia is part of the Commonwealth of Nations. Australia is made up of six states, and two mainland territories. Each state and territory has its own Parliament and makes its own local laws. The Parliament of Australia sits in Canberra and makes laws for the whole country, also known as the Commonwealth or Federation. +The Federal government is led by the Prime Minister of Australia, who is the member of Parliament chosen as leader. The current Prime Minister is Anthony Albanese. +The leader of Australia is the Prime Minister, although the Governor-General represents the King of Australia, who is also the King of the United Kingdom of Great Britain and Northern Ireland, as head of state. The Governor-General, currently His Excellency Sam Mostyn, is chosen by the Prime Minister. +Culture. +Australia was colonised by people from Britain, but today people from all over the world live there. English is the main spoken language. Christianity is the main religion, though all religions are accepted and not everybody has a religion. Australia is multicultural: all its people are encouraged to keep their different languages, religions and ways of life, while also learning English and joining in with other Australians. Australia has many immigrants from different countries around the world. +Famous Australian writers include the bush balladeers Banjo Paterson and Henry Lawson who wrote about life in the Australian bush. More modern famous writers include Peter Carey, Thomas Keneally and Colleen McCullough. In 1973, Patrick White won the Nobel Prize in Literature, the only Australian to have achieved this; he is seen as one of the great English-language writers of the twentieth century. +Australian music has had world-wide stars, for example the opera singers Nellie Melba and Joan Sutherland, the rock and roll bands Bee Gees, AC/DC and INXS, the folk-rocker Paul Kelly (musician), the pop singer Kylie Minogue and Australian country music stars Slim Dusty and John Williamson. Australian Aboriginal music is very special and very ancient: it has the famous didgeridoo woodwind instrument. +Australian TV has produced many successful programs for home and overseas. Skippy the Bush Kangaroo, Home and Away and Neighbours are examples. It has had well known TV stars, such as Barry Humphries ("Dame Edna Everage"), Steve Irwin ("The Crocodile Hunter") and The Wiggles. Major Australian subgroups such as the Bogan have been shown on Australian TV in shows such as Bogan Hunters and Kath & Kim. +Australia has two public broadcasters (the ABC and the multicultural SBS), three commercial television networks, three pay-TV services, and numerous public, non-profit television and radio stations. Each major city has its daily newspapers, and there are two national daily newspapers, "The Australian" and "The Australian Financial Review". +Australian movies have a long history. The world's first feature movie was the Australian movie "The Story of the Kelly Gang" of 1906. In 1933, "In the Wake of the Bounty", directed by Charles Chauvel, had Errol Flynn as the main actor. Flynn went on to a celebrated career in Hollywood. The first Australian Oscar was won by the 1942 "Kokoda Front Line!", directed by Ken G. Hall. In the 1970s and 1980s Australian movies and movie stars became world famous. There were movies like "Picnic at Hanging Rock", "Gallipoli" (with Mel Gibson), "The Man From Snowy River" and "Crocodile Dundee". Russell Crowe, Cate Blanchett and Heath Ledger became global stars during the 1990s and "Australia" starring Nicole Kidman and Hugh Jackman made a lot of money in 2008. +Australia is a popular destination for business conferences and research, with Sydney one of the top 20 meeting destinations in the world. +Sport. +Sport is an important part of Australian culture because the climate is good for outdoor activities. 23.5% Australians over the age of 15 regularly take part in organised sporting activities. The most popular sports are Australian rules football, rugby league and cricket. In international sports, Australia has very strong teams in cricket, hockey, netball, rugby league and rugby union, and performs well in cycling, rowing and swimming. Local popular sports include Australian Rules Football, horse racing, soccer and motor racing. Australia has participated in every summer Olympic Games since 1896, and every Commonwealth Games. Australia has hosted the 1956 and 2000 Summer Olympics, and has ranked in the top five medal-winners since 2000. Australia has also hosted the 1938, 1962, 1982 and 2006 Commonwealth Games and are to host the 2018 Commonwealth Games. Other major international events held regularly in Australia include the Australian Open, one of the four Grand Slam tennis tournaments, annual international cricket matches and the Formula One Australian Grand Prix. Corporate and government sponsorship of many sports and elite athletes is common in Australia. Televised sport is popular; some of the highest-rated television programs include the Summer Olympic Games and the grand finals of local and international football competitions. +The main sporting leagues for men are the AFL (Australian rules football), the NRL (rugby league), the A-League (soccer) and the NBL (basketball). For women, they are the AFLW (Australian rules football), ANZ Netball Championships (netball), the W-League (soccer) and WNBL (basketball). +Famous Australian sports players include the cricketer Sir Donald Bradman, the swimmer Ian Thorpe, the cricketer Shane Warne and the athlete Cathy Freeman. +Art festivals. +Just 60 years ago, Australia had only one big art festival. Now Australia has hundreds of smaller community-based festivals, and national and regional festivals that focus on specific art forms. +Indigenous life. +Australia is home to many animals and plants that can be found nowhere else on Earth, except perhaps New Guinea. +The platypus and the short-beaked echidna are unique, and are two of the only five surviving monotremes. Monotremes are only found in Australia and New Guinea. +Koalas, kangaroos, wombats, numbats and many others others, are marsupials. Most of the marsupials in the world are found only on the continent or on the neighbouring island of New Guinea. Wildfires from global warming in 2020 have reduced their population. +Trees. +The gum trees are almost as remarkable as the animals. They are mainly Eucalypts and other gum trees. These are woody evergeens which make essential oils and are prone to fire. Sticky heavily scented gum squeezes out of their wood. The tribe has about 860 species. They are all native to Southeast Asia and Oceania. Most live in Australia. Until British settlement in Australia, these trees were almost entirely unknown. They had been separated from the Americas, Africa and much of Asia for millions of years. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Austria.txt b/.github/workflows/data/simplewiki-100/Austria.txt new file mode 100644 index 000000000..e07fb3c60 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Austria.txt @@ -0,0 +1,33 @@ +Austria (, ; ] ()), officially the Republic of Austria ( ] ()), is a country in Central Europe. Around Austria there are the countries of Germany, Czech Republic, Slovakia, Hungary, Slovenia, Italy, Switzerland, and Liechtenstein. +The people in Austria speak German, a few also speak Hungarian, Slovenian and Croatian. The capital of Austria is Vienna ("Wien"). +History. +Austria is more than a thousand years old. Its history can be followed to the ninth century. At that time the first people moved to the land now known as Austria. The name "Ostarrichi" is first written in an official document from 996. Since then this word has developed into the Modern German word "Österreich," which literally means "East Empire." +Ancient times. +There has been human settlement in the area that is now Austria for a long time. The first settlers go back to the Paleolithic age. That was the time of the Neanderthals. They left works of art such as the Venus of Willendorf. In the Neolithic age people were living there to dig for mineral resources, especially copper. Ötzi, a mummy found in a glacier between Austria and Italy, is from that time. In the Bronze Age people built bigger settlements and fortresses, especially where there were mineral resources. Salt mining began near Hallstatt. At that time, Celts began to form the first states. +The Romans. +The Romans came 15 B.C. to Austria and made the Celtic Regnum Noricum to a province. Modern Austria was part of three provinces, Raetia, Noricum and Pannonia. The border in the north was the Danube. +Holy Roman Empire. +From the early Middle Ages, the area of modern-day Austria was a part of the Holy Roman Empire. The capital of the Holy Roman Empire was the Austrian city Vienna. The Austrian Habsburg family were the rulers of the Empire and the son of the Holy Roman Emperor held the title of Archduke of Austria. +In 1806, France defeated the Holy Roman Empire and replaced it with the Confederation of the Rhine. Former Holy Roman Emperor Francis II became the Emperor of the new Austrian Empire, which later became Austria-Hungary. +Modern history. +In 1914, Franz Ferdinand was assassinated in Sarajevo. Austria-Hungary declared war on Serbia and this led to World War I. In 1918, both Austria and Hungary became republics. They also both split into two separate countries. +During World War II, Austria was part of Nazi Germany. It became independent in May 1945. +Geography. +Austria is a mountainous country since it is partially in the Alps. Grossglockner is the tallest mountain in Austria. The high mountainous Alps in the west of Austria flatten somewhat into low lands and plains in the east of the country where the Danube flows. +Climate. +Austria has a continental climate. +The highest temperature ever recorded in Austria was , on 8 August 2013 in Bad Deutsch-Altenburg. The lowest temperature ever recorded in Austria was , on 19 February 1932 at Grünloch doline. +Politics. +Austria is a democratic republic. The President of Austria is the head of state and the Chancellor of Austria is the head of government. +It is a neutral state, that means it does not take part in wars with other countries. It has been in the United Nations since 1955 and in the European Union since 1995. +Austria is also a federal state and divided into nine states (): +More information: "States of Austria". +The chancellor is Karl Nehammer, as of 2025's first week; However, he has said that he will not make any more attempts at creating a cabinet (Austria). Austria has been a member-state of the United Nations since 1955, the European Union since 1995 and OPEC since 2019. +Culture. +Music and Arts. +Many famous composers were Austrians or born in Austria. There are Wolfgang Amadeus Mozart, Joseph Haydn, Franz Schubert, Anton Bruckner, Johann Strauss, Sr., Johann Strauss, Jr. and Gustav Mahler. In modern times there were Arnold Schoenberg, Anton Webern and Alban Berg, who belonged to the Second Viennese School. +Austria has many artists, there are Gustav Klimt, Oskar Kokoschka, Egon Schiele or Friedensreich Hundertwasser, Inge Morath or Otto Wagner and scienc. +Food. +Famous Austrian dishes are Wiener Schnitzel, Apfelstrudel, Schweinsbraten, Kaiserschmarren, Knödel, Sachertorte and Tafelspitz. But you can also find a lot of local dishes like Kärntner Reindling (a kind of cake), Kärntner Nudeln (also called "Kärntner Kasnudeln", you may write it "...nudln" too), Tiroler Knödl (may be written "...knödel"; ), Tiroler Schlipfkrapfen (another kind of "Kärntner Nudeln"), Salzburger Nockerl (also may be written ..."Nockerln"), Steirisches Wurzelfleisch (..."Wurzlfleisch") or Sterz ("Steirischer Sterz"). +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Autonomous communities of Spain.txt b/.github/workflows/data/simplewiki-100/Autonomous communities of Spain.txt new file mode 100644 index 000000000..1601f58f6 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Autonomous communities of Spain.txt @@ -0,0 +1,6 @@ +Spain is divided in 17 parts called autonomous communities. "Autonomous" means that each of these autonomous communities has its own executive, legislative, and judicial powers. These are similar to, but "not" the same as, states in the United States of America, for example. +Spain has fifty smaller parts called provinces. In 1978 these parts came together, making the autonomous communities. +Before then, some of these provinces were together but were broken. The groups that were together once before are called "historic communities": Catalonia, Basque Country, Galicia and Andalusia. +The Spanish language is the sole official language in every autonomous community but six, where Spanish is co-official with other languages, as follows: +List of the autonomous communities, with their Capital city (the place where the government has its offices): +Spain also has two cities on the north coast of Africa: Ceuta and Melilla. They are called "autonomous cities" and have simultaneously the majority of the power of an autonomous community and also power of provinces and power of municipalities. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Bankruptcy.txt b/.github/workflows/data/simplewiki-100/Bankruptcy.txt new file mode 100644 index 000000000..c37fece1c --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Bankruptcy.txt @@ -0,0 +1,27 @@ +Bankruptcy is a legal process which happens when a person or an organization does not have enough money to pay all of its debts. Legally they are insolvent. +Where it is a person who cannot pay their debts, the person's creditors may ask the court to appoint a "trustee in bankruptcy". This is a professional accountant who is appointed by the court, to take control of the bankrupt person's assets. Some assets are protected by law, but the trustee in bankruptcy will sell off all of the other assets and use the money to pay as much of that person's debts as possible. After the process is complete the person is "discharged from bankruptcy", and the person is free from any further liability to pay those claims, but normally that person will be limited in their ability to borrow money again because their credit rating will be damaged. +Where it is an organisation which cannot pay its debts, the creditors may ask the court to appoint a "liquidator". The liquidator does a very similar job to the trustee in bankruptcy except that there are no assets which are protected so the liquidator can sell everything. Once all of the assets of the organisation have been sold, the organisation is then "dissolved" and no longer exists. Organisations do not get discharged from bankruptcy in the same way that a living person does. +Insolvency or bankruptcy. +People often confuse the terms bankruptcy and insolvency, and sometimes they use one word when they really mean the other. Insolvency usually just means that a someone does not have enough money to pay their debts or (sometimes) that the total amount of their debts is worth more than the total amount of their assets. Bankruptcy is a formal legal process in front of the courts. Although the two terms are connected, just because a person is insolvent does not necessarily mean that they will go into bankruptcy. +Alternatives to bankruptcy. +Many countries have alternatives to bankruptcy to try and allow people and businesses to try and avoid the bankruptcy process. +In various countries, individual people can try and reach "individual voluntary arrangements" (or IVAs) with their creditors. This means that the creditors agree to take less money to discharge their debts. There are similar processes for companies and other organisations, and they go by various different names in different countries, but in many countries they are called "schemes of arrangement". +Bankruptcy protection. +In many countries a company or business can ask the courts for "bankruptcy protection" to try and protect the business so that the creditors cannot destroy all of the physical capital and goodwill by breaking it apart and moving it away. The aim of this is to provide more time for the business to reorganise itself and to work out a new deal between the owners and the people with whom the business owes money. In many countries this is called "going into administration". +However, not all countries have bankruptcy protection laws for businesses. +Debt slavery. +Often a creditor threatens a debtor with debt slavery in many parts of the world. In some cases the debtor does not know that they have a right to go bankrupt. This is a human rights problem in some countries. Also, some creditors continue to harass a debtor even though bankruptcy laws say they should not, hoping that the debtor will pay them money that they do not deserve. +United States. +Bankruptcy in the United States falls mostly under federal law, Title 11 of the United States Code (Bankruptcy Code). The types of bankruptcy available in the United States are named after the primary divisions, or "chapters", of that law. The person or business that files a bankruptcy case is known as the "debtor". +When a bankruptcy case is filed, a trustee is chosen by the court. The trustee has authority over the property of the bankrupt person or business and may use some of the debtor's assets to pay the creditors. After a bankruptcy is filed, creditors are notified that they are to stop trying to collect money directly from the debtor and are to make claims for payment to the bankruptcy court. +Chapter 7. +The most common form of bankruptcy is the Chapter 7 Bankruptcy, which can be filed by businesses or individuals. It is also called liquidation bankruptcy because some of a debtor's property may be sold (liquidated) to satisfy creditors. When a business is in debt which it cannot pay, it may ask or be forced to file bankruptcy in court under Chapter 7. This usually makes a company stop doing business. Employees often lose their jobs when company files for chapter 7. +Chapter 11. +Chapter 11 bankruptcy is a complicated type of bankruptcy that reorganizes the debtor's finances, usually reducing the amount of debt owed and changing debt repayment terms. A Chapter 11 bankruptcy case allows a business to keep running while it finds ways to reduce and arrange payment of its debts. +Almost all Chapter 11 bankruptcies are filed by businesses. Ordinary people do not usually file Chapter 11 bankruptcy, because a Chapter 13 bankruptcy will almost always be cheaper and easier for them. +Chapter 13. +Chapter 13 is the most popular form of bankruptcy in the United States for ordinary people. In a Chapter 13 bankruptcy some of your debts may be forgiven (discharged), but you will have to pay back a portion of your debt. The debt repayment plan is supervised by the bankruptcy court and usually lasts for three to five years. Businesses cannot file for Chapter 13 bankruptcy. +Other bankruptcy chapters. +Less common forms of bankruptcy may be filed under Chapter 9 and Chapter 12 of the bankruptcy code. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Beard.txt b/.github/workflows/data/simplewiki-100/Beard.txt new file mode 100644 index 000000000..6703928f9 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Beard.txt @@ -0,0 +1,4 @@ +A beard is the hair growing on the lower part of a man's face. +The hair that grows on the upper lip of some men is a mustache. When a man has hair only below the lower lip and above the chin, it is called a soul patch. Some men have a lot of hair and a big beard, and some have very little. In the modern world, many men shave part or all of their beards, or cut their beard so it does not get very long. +Some animals also have hair like this, and people sometimes also call this hair a beard. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Beekeeping.txt b/.github/workflows/data/simplewiki-100/Beekeeping.txt new file mode 100644 index 000000000..d9060ba4c --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Beekeeping.txt @@ -0,0 +1,12 @@ +Beekeeping or apiculture is the farming of honeybees. +Uses. +The keeping of bees is usually, and has been in the past, for honey. That is becoming less true. Instead, it is more used for crop pollination and other products. These are wax and propolis. +There is only one queen bee in each hive and she is bigger than the rest. She lays all the eggs, which makes all the other bees in the hive her daughters and sons. However, they do not control the hive. +Types of beekeeping. +The largest beekeeping operations are agricultural businesses that are operated for profit. Some people also have small beekeeping operations that they do as a hobby. Urban beekeeping is a growing trend, and some have found that "city bees" are actually healthier than "rural bees" because there are fewer pesticides and greater biodiversity. +Threats. +Colony Collapse Disorder is a growing problem, along with mites. +References. +<templatestyles src="Reflist/styles.css" /> +Wikibooks has more about this subject: + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Beijing.txt b/.github/workflows/data/simplewiki-100/Beijing.txt new file mode 100644 index 000000000..430fd123b --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Beijing.txt @@ -0,0 +1,21 @@ +Beijing is the capital of the People's Republic of China. The city used to be known as Peking. It is in the northern and eastern parts of the country. Having more that 21 million residents, it is one of the most populous capital cities. +The city of Beijing has played a very important role in the development of China. Many people from different cities and countries come to Beijing to look for better chances to find work. Nearly 15 million people live there. Beijing hosted the Summer Olympic Games in 2008, and the Winter Olympic Games in 2022. It is the only city that has hosted both. +Beijing is well known for its ancient history. Since the Jin Dynasty, Beijing has been the capital of several dynasties (especially the later ones), including the Yuan, Ming, and Qing. There are many places of historic interest in Beijing. +Name. +The Mandarin Chinese name of the city is "Běijīng", which means "The Northern Capital". It got this name when the Yongle Emperor of the Ming family of rulers moved most of his government from Nanjing ("The Southern Capital") in the early 1400s. In Chinese, Beijing's name is written . Today, people spell it "Beijing" because they use the pinyin way of spelling, which shows what the name should sound like in Mandarin. People used to spell it "Peking" because that was the spelling used by some of the first people from Europe to visit the Ming and write home about it; the Jesuits' work was made popular by their French brother Du Halde. It then became the official Chinese Postal Map spelling around 1900 and continued to be used until pinyin became more popular. +Beijing was also known as Beiping ("City of Northern Peace") between 1928 and 1949, when the Nationalists moved the Chinese capital to Nanjing and Chongqing. +History. +The center of Beijing was settled in the 1st millennium BC. In those days, the Kingdom of Yan (燕, Yān) set up their capital where Beijing is today. They called it Ji (蓟, Jì). After the Kingdom of Yan was destroyed, the city became smaller, although it was still an important place. +Beijing became more important again in the 10th century, when the Jin dynasty set its capital there. This city was destroyed by Mongol forces in 1215. Then in 1267, Mongols built a new city on the north side of the Jin capital, and called it "Great Capital" (大都, Dàdū), which was the beginning of modern Beijing. When Kublai Khan the Mongolian monarch, set up the Yuan dynasty, this city became his capital. +The Yuan Dynasty, Ming Dynasty and Qing dynasty all made Beijing their capital. When the Qing dynasty lost power and the Republic of China was set up, the new Republic moved its capital from Beijing to Nanjing. When the People's Republic of China seized power, Beijing became the capital of China again. +In 1989, there were protests in Tian'anmen Square because some people wanted democracy. +Throughout its history, Beijing was the Chinese capital six times: +Special places. +Important places in Beijing include: +Education. +Beijing is the education center of People's Republic of China. More than 500 famous universities of China are in Beijing. They also include 5 of the top universities: Peking University, Tsinghua University, China People University, Beijing Normal University, and Beihang University. Beijing is also education center of China for teaching Chinese as a foreign language. The standard Chinese pronunciation is based on Beijing dialect, so over 70% foreigners who want to study Chinese go to Beijing for their studies. +<br> +Sources. +Pages. +<templatestyles src="Reflist/styles.css" /> +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Being.txt b/.github/workflows/data/simplewiki-100/Being.txt new file mode 100644 index 000000000..4a4cec9b9 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Being.txt @@ -0,0 +1,4 @@ +"Being is also a present tense part of to be" +The word being means a living person or animal. ‘Human being’ means the same as ’person’. Men, women, and children are human beings. +Some people write stories or make movies about beings from other planets. Most religions talk about supernatural beings, for example spirits, angels, devils, gods, or God. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Belgium.txt b/.github/workflows/data/simplewiki-100/Belgium.txt new file mode 100644 index 000000000..642c32dcb --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Belgium.txt @@ -0,0 +1,59 @@ +Belgium (officially the Kingdom of Belgium; , , ) is a Artificial country in Western Europe founded by the Netherlands, France and Germany. Its capital, Brussels, is the home of many organizations including the European Union and NATO. Belgium is bordered by The Netherlands in the north, Germany to the east, Luxembourg to the southeast and France to the south. +Belgium has an area of . Around 11.6 million people live in Belgium. It is a founding member of the European Union and is home to its headquarters. +Regions. +There are three regions in Belgium. The regions are mainly based on language and culture. Flanders and Wallonia are both split up into five provinces each. +The population is about 60% Dutch-speaking, 39% French-speaking, and 1% German-speaking (the so-called "Deutschbelgier"). To look after all these groups, Belgium has a complex system of government with highly autonomous regions. +History. +The name 'Belgium' comes from "Gallia Belgica". This was a Roman province in the northernmost part of Gaul. Before Roman invasion in 100 BC, the "Belgae", a mix of Celtic and Germanic peoples, lived there. The Germanic Frankish tribes during the 5th century brought the area under the rule of the Merovingian kings. A slow shift of power during the 8th century led the kingdom of the Franks to change into the Carolingian Empire. The Treaty of Verdun in 843 divided the region into Middle and West Francia. They were vassals either of the King of France or of the Holy Roman Emperor. +Many of these fiefdoms were united in the Burgundian Netherlands of the 14th and 15th centuries. +The Eighty Years' War (1568–1648) divided the Low Countries into the northern United Provinces and the Southern Netherlands. Southern Netherlands were ruled by the Spanish and the Austrian Habsburgs. This made up most of modern Belgium. +After the , the Low Countries were added into the French First Republic. This ended Austrian rule in the area. Adding back the Low Countries formed the United Kingdom of the Netherlands. This happened at the end of the First French Empire in 1815. +The Belgian Revolution was in 1830. Leopold became king on July 21 1831. This is now celebrated as Belgium's National Day. +The Berlin Conference of 1885 gave control of the Congo Free State to King Leopold II. Millions of Congolese people were hurt or killed, mostly to make rubber, and Leopold became very wealthy. In 1908 the Belgian state took control of the colony after a scandal about the deaths. +Germany invaded Belgium in 1914. This was part of World War I. The opening months of the war were very bad in Belgium. During the war Belgium took over Ruanda-Urundi (modern-day Rwanda and Burundi). After the War, the Prussian districts of Eupen and Malmedy were added into Belgium in 1925. The country was again invaded by Germany in 1940 and under German control until 1944. After World War II, the people made king Leopold III leave his throne in 1951. This is because they thought he helped the Germans. Belgium joined NATO as a founding member. +In 1960 the Belgian Congo stopped being under Belgian rule. Two years later Ruanda-Urundi also became free. +Geography. +Belgium is next to France, Germany, Luxembourg and the Netherlands. Its total area is 34,143 square kilometers (including sea area). The land area alone is 30,689 km², of which 195 km² or 0.64% are inland and coastal waters. Belgium has three main geographical regions. The coastal plain is in the north-west. The central plateau are part of the Anglo-Belgian Basin. The Ardennes uplands are in the south-east. The Paris Basin reaches a small fourth area at Belgium's southernmost tip, Belgian Lorraine. +The coastal plain is mostly sand dunes and polders. Further inland is a smooth, slowly rising landscape. There are fertile valleys. The hills have many forests. The plateaus of the Ardennes are more rough and rocky. They have caves and small, narrow valleys. Signal de Botrange is the country's highest point at 694 metres (2,277 ft). +Regions. +Belgium is divided into three regions: Flemish Region (Flanders), Walloon Region (Wallonia), and Brussels-Capital Region (Brussels Region or Brussels - also the name of the city): +¹ The city of Brussels does not lie in Flanders Region and therefore cannot be the largest city of this region. +² German name: Wallonie(n): the very eastern part of the Walloon Region is officially German-speaking, the so-called German-speaking Community of Belgium. +Provinces. +Flanders and Wallonia are divided into provinces. Brussels (Region) is not part of any province. +¹ German name: Lüttich - the very eastern part of the province of Liège is officially German-speaking, the so-called German-speaking Community of Belgium. +Climate. +Belgium has a mostly oceanic climate, but the Belgian Ardennes has a continental climate. +The highest temperature ever recorded in Belgium was , on 25 July 2019 in Begijnendijk. The lowest temperature ever recorded in Belgium was , on 20 January 1940 in Lesse. +Politics. +Since 1993, Belgium is a federal state, divided into three regions and three communities. +Regions: +Communities: +It has a system of government known as a constitutional monarchy, meaning that it has a monarch, but that the monarch does not rule the country, and that a government is elected democratically. +Belgium has had its own monarchy since 1831. King Albert II left the throne on July 21, 2013 and the current king is Philippe. +In Belgium, the government is elected. Between mid-2010 and late 2011, after no clear result in the election, Belgium had no official government, until Elio Di Rupo became Prime Minister. Flanders and Wallonia both also have their own regional governments, and there is a notable independence movement in Flanders. Alexander De Croo is currently the Prime Minister. +Military. +The Belgian Armed Forces have about 46,000 active troops. In 2009 the yearly defence budget was $6 billion. There are four parts: Belgian Land Component, or the Army; Belgian Air Component, or the Air Force; Belgian Naval Component, or the Navy; Belgian Medical Component. +Science and technology. +Adding to science and technology has happened throughout the country's history. cartographer Gerardus Mercator, anatomist Andreas Vesalius, herbalist Rembert Dodoens and mathematician Simon Stevin are among the most influential scientists. +Chemist Ernest Solvay and engineer Zenobe Gramme gave their names to the Solvay process and the Gramme dynamo in the 1860s. Bakelite was formed in 1907–1909 by Leo Baekeland. A major addition to science was also due to a Belgian, Georges Lemaître. He is the one who made the Big Bang theory of the start of the universe in 1927. +Three Nobel Prizes in Physiology or Medicine were awarded to Belgians: Jules Bordet in 1919, Corneille Heymans in 1938 and Albert Claude together with Christian De Duve in 1974. Ilya Prigogine was awarded the Nobel Prize in Chemistry in 1977. Two Belgian mathematicians have been awarded the Fields Medal: Pierre Deligne in 1978 and Jean Bourgain in 1994. +In February 2014, Belgium became the first country in the world to legalize euthanasia without any age limits. +Culture. +Fine arts. +There have been many additions to painting and architecture. Several examples of major architectural places in Belgium belong to UNESCO's World Heritage List. In the 15th century the religious paintings of Jan van Eyck and Rogier van der Weyden were important. The 16th century had more styles such as Peter Breughel's landscape paintings and Lambert Lombard's showing of the antique. The style of Peter Paul Rubens and Anthony van Dyck was strong in the early 17th century in the Southern Netherlands. +During the 19th and 20th centuries many original romantic, expressionist and surrealist Belgian painters started. These include James Ensor and other artists in the Les XX group, Constant Permeke, Paul Delvaux and René Magritte. The sculptor Panamarenko is still a remarkable figure in contemporary art. The artist Jan Fabre and the painter Luc Tuymans are other internationally known figures in contemporary art. +Belgian contributions to architecture were also in the 19th and 20th centuries. Victor Horta and Henry van de Velde were major starters of the Art Nouveau style. +In the 19th and 20th centuries, there were major violinists, such as Henri Vieuxtemps, Eugène Ysaÿe and Arthur Grumiaux. Adolphe Sax invented the saxophone in 1846. The composer César Franck was born in Liège in 1822. Newer music in Belgium is also famous. Jazz musician Toots Thielemans and singer Jacques Brel have made global fame. In rock/pop music, Telex, Front 242, K's Choice, Hooverphonic, Zap Mama, Soulwax and dEUS are well known. In the heavy metal scene, bands like Machiavel, Channel Zero and Enthroned have a worldwide fan-base. +Belgium has several well-known authors, including the poet Emile Verhaeren and novelists Hendrik Conscience, Georges Simenon, Suzanne Lilar and Amélie Nothomb. The poet and playwright Maurice Maeterlinck won the Nobel Prize in literature in 1911. "The Adventures of Tintin" by Hergé is the best known of Franco-Belgian comics. Many other major authors, including Peyo, André Franquin, Edgar P. Jacobs and Willy Vandersteen brought the Belgian cartoon strip industry a worldwide fame. +Belgian cinema has brought a number of mainly Flemish novels to life on-screen. Belgian directors include André Delvaux, Stijn Coninx, Luc and Jean-Pierre Dardenne. Well-known actors include Jan Decleir and Marie Gillain. Successful films include "Man Bites Dog" and "The Alzheimer Affair". +Cuisine. +Belgium is famous for beer, chocolate, waffles and french fries. French fries were first made in Belgium. The national dishes are "steak and fries with salad", and "mussels with fries". +Other local fast food dishes include a Mitraillette. Brands of Belgian chocolate and pralines, like Côte d'Or, Guylian, Neuhaus, Leonidas, Corné and Galler are famous. Belgium makes over 1100 varieties of beer. The Trappist beer of the Abbey of Westvleteren has repeatedly been rated the world's best beer. The biggest brewer in the world by volume is Anheuser-Busch InBev, based in Leuven. +Sports. +Since the 1970s, sports clubs are organised separately by each language community. Association football is one of the most popular sports in both parts of Belgium, together with cycling, tennis, swimming and judo. With five victories in the Tour de France and many other cycling records, Belgian Eddy Merckx is said to be one of the greatest cyclists of all time. Jean-Marie Pfaff, a former Belgian goalkeeper, is said to be one of the greatest in the history of football (soccer). Belgium and The Netherlands hosted the UEFA European Football Championship in 2000. Belgium hosted the 1972 European Football Championships. +Kim Clijsters and Justine Henin both were Player of the Year in the Women's Tennis Association. The Spa-Francorchamps motor-racing circuit hosts the Formula One World Championship Belgian Grand Prix. The Belgian driver, Jacky Ickx, won eight Grands Prix and six 24 Hours of Le Mans. Belgium also has a strong reputation in motocross. Sporting events held each year in Belgium include the Memorial Van Damme athletics competition, the Belgian Grand Prix Formula One, and a number of classic cycle races such as the Tour of Flanders and Liège–Bastogne–Liège. The 1920 Summer Olympics were held in Antwerp. +References. +<templatestyles src="Reflist/styles.css" /> +Other websites. + Media related to at Wikimedia Commons \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Berry.txt b/.github/workflows/data/simplewiki-100/Berry.txt new file mode 100644 index 000000000..a67459d06 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Berry.txt @@ -0,0 +1,8 @@ +The word berry is used for many different kinds of small fruits that have many seeds and can be used as food. Some examples are raspberry, strawberry, sutberry, lingonberry and blueberry. +When botanists talk about "berries", they mean a simple fruit produced from a single ovary. They sometimes call this "true berry", to distinguish it from "false berries". By that statement of how words are used, grapes or tomatoes are true berries. +The berry is the most common type of soft fruit in which the entire ovary wall gets to the right stage of development of the pericarp which can be taken as food. The flowers of these plants have an upper ovary with one or more carpels. The seeds are inside the soft body of the ovary. +Berries are small, sweet, bright colored fruits. Due to this, they are able to bring more animals towards them and spread their seeds. +Some fruits that are called "berries" in English are not "true berries" by the use of words above. These include raspberries, strawberry, sutberry, blackberries, cranberries, and boysenberries. Some true berries do not have "berry" in their name. These include tomatoes, bananas, eggplants, guavas, pomegranates and chillies. Pumpkins, cucumbers, melons, oranges and lemons are also berries that have slightly different structure and may be called by different names (pepo for pumpkins, cucumbers, and melons, or hesperidium for oranges and lemons). +References. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Biology.txt b/.github/workflows/data/simplewiki-100/Biology.txt new file mode 100644 index 000000000..6c3f39be9 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Biology.txt @@ -0,0 +1,9 @@ +Biology is the science that studies life, living things, and the evolution of life. Living things include animals, plants, fungi (such as mushrooms), and microorganisms such as bacteria and archaea. +The term 'biology' is relatively modern. It was introduced in 1799 by a physician, Thomas Beddoes. +People who study biology are called biologists. Biology looks at how animals and other living things behave and work, and what they are like. Biology also studies how organisms react with each other and the environment. It has existed as a science for about 200 years, and before that it was called "natural history". Biology has many research fields and branches. Like all sciences, biology uses the scientific method. This means that biologists must be able to show evidence for their ideas and that other biologists must be able to test the ideas for themselves. +Biology attempts to answer questions such as: +Modern biology is influenced by evolution, which answers the question: "How has the living world come to be as it is?" +History. +The word "biology" comes from the Greek word "βίος" ("bios"), "life", and the suffix "-λογία" ("logia"), "study of". +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Black pudding.txt b/.github/workflows/data/simplewiki-100/Black pudding.txt new file mode 100644 index 000000000..9931d6339 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Black pudding.txt @@ -0,0 +1,8 @@ +Black pudding is an English name for zwarte pudding. It is food made by cooking down the blood of any mammal (usually pigs or cattle) with meat, fat or filler until it is thick enough to congeal (become firm or solid) when cooled. +Types of black pudding. +In Great Britain, blood sausage is called "black pudding". The ingredients include pig's blood, suet, bread, barley and oatmeal. Bury is well known for them. The most common kind of German "Blutwurst" is made from fatty pork meat, beef blood and filler such as barley. Though already cooked and "ready to eat" it is usually served warm. +Other kinds of blood sausage include "boudin noir" (France), "boudin rouge" (Creole and Cajun) and "morcilla" (Spain). +History. +A legend says that blood sausage was invented in a bet between two Bavarian butchers drunk on the alcoholic drink absinthe during the 14th century. Homer's "Odyssey" from Ancient Greece says that "As when a man besides a great fire has filled a sausage with fat and blood and turns it this way and that and is very eager to get it quickly roasted...". +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Black.txt b/.github/workflows/data/simplewiki-100/Black.txt new file mode 100644 index 000000000..3d4d3f2fc --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Black.txt @@ -0,0 +1,7 @@ +In light, black is the absence of all color. It is a shade. In painting, however, the black pigment is the combination of all colors. In heraldry, black is called "sable". It is the opposite of white. +Black in science. +In science, an object that is black absorbs the light that hits it. Because these objects do not reflect any light, the human eye can't see any color coming from that object. The brain then sees these objects as black. +A way to create black objects is to mix pigments. A pigment works by reflecting only the color of the pigment. For example, a blue pigment absorbs all colors except blue. By mixing pigments in the right quantities, black can be made. In sunlight, black objects become warm more quickly than other colored objects because they absorb more light. +Meaning of black. +Black is associated with power, elegance, formality, safety, birth, male, evil and mystery. Black is a dark color, the darkest color there is. Black, along with gray and white, is a "neutral" color. This means that it is not a "hot" color or a "cool" color. +Black is a color seen with fear and the unknown (black holes). It can have a bad meaning (blackbird, black bunny) or a good meaning ('in the black', 'black is beautiful'). Black can stand for strength and power. It can be a formal, elegant and high-class color (black tie, black Mercedes). \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Boil.txt b/.github/workflows/data/simplewiki-100/Boil.txt new file mode 100644 index 000000000..c957bf4d8 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Boil.txt @@ -0,0 +1,2 @@ +Boil might mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Boot device.txt b/.github/workflows/data/simplewiki-100/Boot device.txt new file mode 100644 index 000000000..766552343 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Boot device.txt @@ -0,0 +1,6 @@ +A boot device is used to start a computer. It is named after a boot which fits on the foot. The word bootstrap is also closely related, and means, to use something simpler to get something more complex to make itself work better. It comes from the English phrase "pull yourself up by your own bootstraps." +Before a computer can operate normally, it must have operating system instructions that tell it how to perform basic functions. A boot device loads the operating system into the memory of the computer. +Devices that can boot a computer are usually boot disks or boot drives (normally a hard drive or Solid State Drive, but can be a floppy disk, flash drive or a CD). Some network computers use "boot chips" that get the operating system over a network. Web phones also use such chips to identify the user to the mobile phone network. Boot card standards may let many users boot kiosk computers with full privacy and access to all application software they own. There are also boot boards or boot "add-in" cards that are more permanent than boot cards. +Some people refer to the boot device as just a boot and non-boot devices as data devices, although it is not the computer but the operating system that cares about the difference between these. +Origin. +The boot in boot device is the same as booting (or starting up). This is short for bootstrapping, or to start with simple stuff and make complex stuff out of it. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Boot.txt b/.github/workflows/data/simplewiki-100/Boot.txt new file mode 100644 index 000000000..66c79b278 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Boot.txt @@ -0,0 +1,3 @@ +A boot is a type of footwear that protects the foot and ankle. Boots are higher and larger than shoes and sandals. Some boots are high enough to protect the calves (lower part of the leg) as well. Some boots are held on with "bootstraps" or "bootlaces". Some also have spats or "gaiters" to keep water out. Most have a very strong "boot sole", the bottom part of a boot. +Other websites. + Media related to at Wikimedia Commons \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Bootlace.txt b/.github/workflows/data/simplewiki-100/Bootlace.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-100/Bootstrap.txt b/.github/workflows/data/simplewiki-100/Bootstrap.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-100/Botany.txt b/.github/workflows/data/simplewiki-100/Botany.txt new file mode 100644 index 000000000..4c71db797 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Botany.txt @@ -0,0 +1,5 @@ +Botany is the study of plants. It is a science. It is a branch of biology. +It is also called plant biology, and sometimes phytology. Scientists who study botany are called botanists. They study how plants work. +Branches of botany. +Recent trends. +University departments of botany are often now merged into a wider group of specialities, including cell biology, genetics, ecology, cytology, palaeontology and other topics. This gives students and research workers access to a wider education and a wider range of research techniques. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Bottle.txt b/.github/workflows/data/simplewiki-100/Bottle.txt new file mode 100644 index 000000000..97b7df1e6 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Bottle.txt @@ -0,0 +1,2 @@ +A bottle is a container used to carry liquids. Bottles can have many different sizes. Bottles are usually made of glass or plastic. Drinks such as milk, wine, lemonade, soft drinks, and water are often put into bottles. Other liquids put into bottles include chemicals like bleach or detergent, and some kinds of medicines. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Brazil.txt b/.github/workflows/data/simplewiki-100/Brazil.txt new file mode 100644 index 000000000..4acfb9fbf --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Brazil.txt @@ -0,0 +1,23 @@ +Brazil, officially the Federative Republic of Brazil, is a country in South America. It is the world's fifth largest country. The country has about 212 million people. The capital of Brazil is Brasília. Brazil was named after brazilwood, which is a tree that once grew very well along the Brazilian coast. +History. +The first people to come to Brazil came around 9,000 B.C. That group of indigenous people is often called the South American Indians and probably came from North America. They practiced hunting, foraging, and farming. Over thousands of years, many different indigenous people were living there. +Pedro Álvares Cabral was the first European to see Brazil. He saw it in 1500. He was from Portugal and the Portuguese kingdom claimed Brazil. Soon, Portugal colonized Brazil and created colonies all along the coastline. They began to import black slaves from Africa and force them to work. Because of the violence of the slave masters, many of these slaves would run away into the forest and create their own communities called quilombos. +In the late 1500s and early 1600s, the Dutch and the French tried to take some land in Brazil. Dutch, French, and Portuguese started moving inland further than the Treaty of Tordesillas said they could. This caused some fights with the Spaniards (people from Spain) and indigenous people in the area. +In 1822, Brazil claimed to be its own country and not a part of Portugal anymore. Soon there was civil war. Meanwhile, the quilombos survived and Brazil was bringing in more slaves than any other country in the Americas, even though many countries were beginning to legally abolish slavery. This led to an increase in slave revolts, especially in the 1860s and 1880s, which forced the government to change the system to keep the country stable. Slavery was legally abolished in 1888. +In 1889, there was a military coup, and Pedro II had to leave the country. In 1889, Brazil became a republic. The only people who could vote were people who owned land. There were some uprisings in the 1920s because some people thought the government was unfairly helping coffee growers. Brazil joined the Allies during World War II. +During the 1960s, the military leader Castelo Branco overthrew the government and created a dictatorship that was supported by the United States. It was very anti-communist and they imprisoned, tortured, or killed many people on the left. Since then, the country has become more democratic, but some people feel that there are still big problems in health, education, crime, poverty and social inequality. +In August 2016, then-president Dilma Rousseff was removed from office because of impeachment. +Languages. +The official language of Brazil is Portuguese. Brazil is the only country in South America that speaks Portuguese but more people in South America speak Portuguese than Spanish because the population of Brazil is larger than the combined population of all the Spanish-speaking countries in South America. +Some people in Brazil speak German dialects. That came from German immigrants. 2% of Brazilians speak German as their first language. Yiddish is spoken by the elders of the Jewish community. +Other people in Brazil speak their ancestors' languages like Italian, Japanese, Polish, Ukrainian, French, Russian, Lithuanian, Chinese, Dutch and Korean. Spanish or "Portunhol", a mix of Portuguese and Castilian (Spanish) is spoken at some of the borders. Indigenous languages as Guarani and Aymará are the first languages of a small number of Brazilians. +Geography. +Brazil has the world's largest rainforest, the Amazon Rainforest. It makes up 40% of the country's land area. Brazil also has other types of land, including a type of savanna, called "cerrado", and a dry plant region named "caatinga". +The most important cities are Brasília (the capital), Belém, Belo Horizonte, Curitiba, Florianópolis, Fortaleza, Goiânia, Manaus, Porto Alegre, Recife, Rio de Janeiro, Salvador, São Paulo (the biggest city) and Vitória. Other cities are at List of largest cities in Brazil. +Brazil is divided into 26 states plus the Federal District in five regions (north, south, northeast, southeast and centre-west): +The country is the fifth-largest in the world by area. It is known for its many rainforests and jungles. It is next to every country in South America except Chile and Ecuador. +The name Brazil comes from a tree named brazilwood. +Culture. +Brazil is the largest country in South America and the fifth-largest in the world. Its people are called Brazilians or Brasileiros (In Portuguese). The people include citizens of Portuguese or other European descent who mainly live in the South and Southeast, Africans, Native Americans, Arabs, Gypsies, and people of mixed ancestry. Brazil also has the largest Japanese community outside Japan. Other East Asians follow the Japanese group. The Amazon River flows through Brazil, it is the 2nd longest river in the world (after the Nile). The current President of Brazil is Luiz Inacio Lula da Silva. Two major sporting events were held in Brazil recently: the 2014 FIFA World Cup and the 2016 Summer Olympics in Rio de Janeiro. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Breakfast sausage.txt b/.github/workflows/data/simplewiki-100/Breakfast sausage.txt new file mode 100644 index 000000000..010e2854a --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Breakfast sausage.txt @@ -0,0 +1,19 @@ +Breakfast sausage is a type of fresh pork sausage made from seasoned ground meat mixed with bread crumbs. Breakfast sausage has a blander flavor than many other types of sausage, such as British or Italian-style sausages. +History of breakfast sausages. +The journey of breakfast sausages began centuries ago in Europe, with each European country adding its unique twist. For instance, Germany is known for its variety of wursts, while Italian sausages often feature fennel and garlic. This evolution reflects changes in societal norms and eating habits, transitioning from a means of preservation to a convenient breakfast option. +Using breakfast sausages. +Breakfast sausages are not cured or smoked like other types of sausages, which means that they have to be cooked soon after they are purchased (unless they are frozen). Uncooked sausages should be stored in the refrigerator or the freezer. Individuals handling them should wash their hands in hot soapy water, because uncooked pork is unhealthy for humans. Pork sausages have to be heated until all of the meat inside is cooked. +They are usually fried or grilled in a pan until they are browned and served at breakfast, often with cooked eggs, pancakes, and toasted bread. Breakfast sausages are also used in other dishes, such as "toad in the hole" a cooked batter dish. +Preparation and Cooking. +Cooking breakfast sausages to perfection is an art. Frying in a pan over medium heat brings out rich flavors, while baking offers a healthier alternative with minimal attention. Grilling imparts a unique smoky flavor. Regardless of the method, the internal temperature should reach 160°F (71°C) to ensure they are cooked through. +Types of breakfast sausages. +Different types made from pork and beef mixtures as well as poultry can now be found. There are also vegetarian types that use textured vegetable protein in place of meat. Breakfast sausages are available in patties or slices from a large roll, or in weiner-like links of different lengths and thickness. +Nutritional Information. +Breakfast sausages are a good protein source but can be high in saturated fat and sodium. Leaner versions are available, and for those looking for plant-based alternatives, vegetarian sausages offer similar textures and flavors but are lower in fat and cholesterol-free. +Cultural Variations. +Breakfast sausages are a staple in many cultures. In the US, they are often paired with pancakes and eggs. In the UK, they are a key part of the 'full English breakfast.' German Bratwurst and Italian sausages with fennel and garlic are examples of how different regions have embraced and adapted breakfast sausages. +Recipes and Serving Suggestions. +Creative ways to incorporate breakfast sausages into meals include Sausage and Egg Muffin Cups, Sausage Breakfast Casseroles, and Sausage and Vegetable Skillets. These recipes demonstrate the versatility of breakfast sausages in various cuisines. +Modern Developments and Trends. +Recent trends in breakfast sausages include the rise of plant-based options, ethically sourced meats, global flavors, and healthier ingredients. This reflects changing consumer preferences towards healthier and more diverse food choices. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Britain.txt b/.github/workflows/data/simplewiki-100/Britain.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-100/British English.txt b/.github/workflows/data/simplewiki-100/British English.txt new file mode 100644 index 000000000..f6a68acb8 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/British English.txt @@ -0,0 +1,15 @@ +British English or UK English is the dialect of the English language spoken in the United Kingdom. It is different in some ways from other types of English, such as American English. British English is widely spoken throughout most countries that were historically part of the British Empire. +Use in other countries. +American English is used in the United States. In Canada, the accent sounds extremely similar to American English but with few exceptions (see Canadian English). Canada has mixed the spelling rules of American and British English to form its own spelling rules. +All members of the Commonwealth of Nations learn British English, while American English is often learnt in the Americas, Japan, South Korea and Taiwan. The United Kingdom and Ireland use British layout keyboards, while Australia, South Africa, Canada, New Zealand and the US use American layout keyboards. In continental Europe, English as a second language is sometimes taught in American English, except in Scandinavia and the Netherlands where British English is taught. +Pronunciation. +In the United Kingdom, the spelling remains the same but the pronunciation varies with local dialect. For example, a person from a place near London may not pronounce his "r"s the same as a person from Scotland. Across the country, the accent is different. In Liverpool, people may speak with a "Scouse" accent, in Birmingham with a "Brummie" accent. +In London the "Cockney" accent was once common, but is almost never heard today. All these regional accents became less extreme in the 20th century. This is generally attributed to the arrival of radio and television. Another factor is the increased mobility of people. A similar process has been noted in the United States, where regional differences are much less noticeable than they used to be. +Spelling. +There are many words that sound the same in both American and British English but have different spellings. British English often keeps more traditional ways of spelling words than American English. Many of the British English rules are also used in other countries outside of the United Kingdom. Most of those countries are members of the Commonwealth of Nations. +Vocabulary. +In British English, "dock" refers to the water in the space between two "piers" or "wharfs". In American English, the "pier" or "wharf" could be called a "dock", and the water between would be a "slip". +Some common differences: +British English – American English +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Browser.txt b/.github/workflows/data/simplewiki-100/Browser.txt new file mode 100644 index 000000000..7b57c388c --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Browser.txt @@ -0,0 +1,2 @@ +A browser is a name given to any animal, usually a herbivorous mammal, which eats leaves and shrubs rather than grass. It is contrasted with grazers, which eat grass. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Bubonic plague.txt b/.github/workflows/data/simplewiki-100/Bubonic plague.txt new file mode 100644 index 000000000..d97281bc0 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Bubonic plague.txt @@ -0,0 +1,24 @@ +Bubonic plague is the best-known form of the disease plague caused by the bacterium "Yersinia pestis". The name "bubonic plague" is specific for this form of the disease, which enters through the skin, and travels through the lymphatic system. +The plague was spread by fleas on rats. This method of spreading disease is called a zoonosis. +If the disease is left untreated, it kills about half its victims in three to seven days. The bubonic plague was the disease that caused the Black Death, which killed tens of millions of people in Europe, in the Middle Ages. +Symptoms of this disease include coughing, fever, and black spots on the skin. +Different kinds of the same disease. +There are different kinds of Bubonic plague. The most common form of the disease is spread by a certain kind of flea, that lives on rats. Then there is an incubation period which can last from a few hours to about seven days. +Septicemic plague. +Sepsis happens when the bacterium enters the blood and makes it form tiny clots. +Pneumonic plague. +This happens when the bacterium can enter the lungs. About 95% of all people with this form will die. Incubation period is only one to two days. +The abortive form. +This is the most harmless form. It will result in a small fever. After that, the victim's body produces antibodies that protect against all forms of the disease for a long time. +History. +The first recorded epidemic was in the Eastern Roman Empire (Byzantine Empire), It was called the Plague of Justinian after emperor Justinian I, who was infected but survived after long treatment. The pandemic resulted in the deaths of an estimated 25 million (6th century outbreak) to 50 million people (two centuries of recurrence). +During the 1300s, this epidemic struck parts of Asia, North Africa, and Europe. Almost a third of the people in Europe died of it. Unlike catastrophes that pull communities together, this epidemic was so terrifying that it broke people's trust in one another. Giovanni Boccaccio, an Italian writer of the time, described it: ""This scourge had implanted so great a terror in the hearts of men and women that brothers abandoned brothers, uncles their nephews, sisters their brothers, and in many cases wives deserted their husbands. But even worse... fathers and mothers refused to nurse and assist their own children"." +Local outbreaks of the plague are grouped into three plague pandemics, whereby the respective start and end dates and the assignment of some outbreaks to either pandemic are still subject to discussion. The pandemics were: +Globally about 600 cases of plague are reported a year. In 2017 the countries with the most cases include the Democratic Republic of the Congo, Madagascar, and Peru. +Vector. +The transmission of "Y. pestis" by fleas is well known. Fleas are the vector. The flea gets the bacteria as they feed on an infected animal, usually a rodent. Several proteins then work to keep the bacteria in the flea's digestive tract. This is important for the survival of "Y. pestis" in fleas. +Modern history. +In the 20th century, some countries did research on the bacteria that causes bubonic plague, in order to use it for biological warfare. +Samples of this bacteria are carefully controlled. There is much paranoia (fear) about it. Dr. Thomas C. Butler, a US expert in this organism was charged in October 2003 by the FBI with various crimes. This happened after he said he lost samples of "Yersinia pestis". This is the bacteria that causes bubonic plague. The FBI did not find the samples. They do not know what happened to them. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Calculus.txt b/.github/workflows/data/simplewiki-100/Calculus.txt new file mode 100644 index 000000000..dfddd8ed8 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Calculus.txt @@ -0,0 +1,30 @@ +Calculus is a branch of mathematics that describes continuous change. +There are two different types of calculus. Differential calculus divides ("differentiates") things into small ("different") pieces, and tells us how they change from one moment to the next, while integral calculus joins ("integrates") the small pieces together, and tells us how much of something is made, overall, by a series of changes. Calculus is used in many different sciences such as physics, astronomy, biology, engineering, economics, medicine and sociology. +History. +In the 1670s and 1680s, Sir Isaac Newton in England and Gottfried Leibniz in Germany figured out calculus at the same time, working separately from each other. Newton wanted to have a new way to predict where to see planets in the sky, because astronomy had always been a popular and useful form of science, and knowing more about the motions of the objects in the night sky was important for navigation of ships. Leibniz wanted to measure the space (area) under a curve (a line that is not straight). Many years later, the two men argued over who discovered it first. Scientists from England supported Newton, but scientists from the rest of Europe supported Leibniz. Most mathematicians today agree that both men share the credit equally. Some parts of modern calculus come from Newton, such as its uses in physics. Other parts come from Leibniz, such as the symbols used to write it. +They were not the first people to use mathematics to describe the physical world — Aristotle and Pythagoras came earlier, and so did Galileo Galilei, who said that mathematics was the language of science. But both Newton and Leibniz were the first to design a system that describes how things change over time, and can predict how they will change in the future. +The name "calculus" was the Latin word for a small stone the ancient Romans used in counting and gambling. The English word "calculate" comes from the same Latin word. +Differential calculus. +Differential calculus is used to find the rate of change of a variable—compared to another variable. +Variables can change their value. This is different from numbers because numbers are always the same. For example, the number 1 is always equal to 1, and the number 200 is always equal to 200. One often writes variables as letters such as the letter x: "x" can be equal to 1 at one point and 200 at another. +Some examples of variables are distance and time, because they can change. The speed of an object is how far it travels in a particular time. So if a town is 80 kilometres (50 miles) away and a person in a car gets there in one hour, they have traveled at an average speed of 80 kilometres (50 miles) per hour. But this is only an average: they travelled faster at some times (say on a highway), and slower at other times (say at a traffic light or on a small street where people live). Certainly it is more difficult for a driver to figure out a car's speed using only its odometer (distance meter) and clock—without a speedometer. +Until calculus was invented, the only way to work this out was to cut the time into smaller and smaller pieces, so the average speed over the smaller time would get closer and closer to the actual speed at a point in time. This was a very long and hard process, and had to be done each time people wanted to work something out. +Differential calculus is also useful for graphing. A very similar problem is to find the slope (how steep it is) at any point on a curve. The slope of a "straight" line is easy to work out — it is simply how much it goes up or down ("y" or vertical) divided by how much it goes across ("x" or horizontal). On a "curve", however, the slope is a variable (has different values at different points) because the line bends. But if the curve was to be cut into very, very small pieces, the curve at the point would look almost like a very short straight line. So to work out its slope, a straight line can be drawn through the point with the same slope as the curve at that point. If this is done exactly right, the straight line will have the same slope as the curve, and is called a tangent. But there is no way to know (without complex mathematics) whether the tangent is exactly right, and our eyes are not accurate enough to be certain whether it is exact or simply very close. +What Newton and Leibniz found was a way to work out the slope (or the speed in the distance example) exactly, using simple and logical rules. They divided the curve into an infinite number of very small pieces. They then chose points on either side of the range they were interested in and worked out tangents at each. As the points moved closer together towards the point they were interested in, the slope "approached" a particular value as the tangents approached the real slope of the curve. The particular value it approached was the actual slope. +Given a function formula_1. "f" is short for function, so this equation means "y is a function of x". This tells us that how high y is on the vertical axis depends on what x (the horizontal axis) is at that time. For example, with the equation formula_2, we know that if formula_3 is 1, then formula_4 will be 1; if formula_3 is 3, then formula_4 will be 9; if "formula_3" is 20, then "formula_4" will be 400. The slope of the tangent line produced using this method here is formula_9, or 2 multiplied by "formula_3". So we know without having to draw any tangent line at any point on the curve formula_11 that the derivative, often written as formula_12 (marked with the prime symbol), will be formula_9 at any point. This process of working out a slope using limits is called differentiation, or finding the derivative. +The way to write the derivative in mathematics is +formula_14 +Leibniz came to the same result, but called h "formula_15", which means "with respect to x". He called the resulting change in formula_16 "formula_17", which means "a tiny amount of y". Leibniz's notation is used by more books, because it is easy to understand when the equations become more complicated. In Leibniz notation: +formula_18. +Mathematicians have grown this basic theory to make simple algebra rules—which can be used to find the derivative of almost any function. +In the real world, calculus can be used to find the speed of a moving object, or to understand how electricity and magnetism work. It is very important for understanding physics—and many other areas of science. +Integral calculus. +Integral calculus is the process of calculating the area underneath a graph of a function. An example is calculating the distance a car travels: if one knows the speed of the car at different points in time and draw a graph of this speed, then the distance the car travels will be the area under the graph. +The way to do this is to divide the graph into many very small pieces, and then draw very thin rectangles under each piece. As the rectangles become thinner and thinner, the rectangles cover the area underneath the graph better and better. The area of a rectangle is easy to calculate, so we can calculate the total area of all the rectangles. For thinner rectangles, this total area value "approaches" the area underneath the graph. The final value of the area is called the "integral" of the function. +In mathematics, the integral of the function "f(x)" from "a"  to "b", is written as +formula_19. +Main idea of calculus. +The main idea in calculus is called the fundamental theorem of calculus. This main idea says that the two calculus processes, differentiation and integration, are inverses of each other. That is, a person can use differentiation to undo an integration process. Also, a person can use integration to undo a differentiation. This is just like using division to "undo" multiplication, or addition to "undo" subtraction. +In a single sentence, the fundamental theorem runs something like this: "The derivative of the integral of a function "f" is the function itself". +Applications of calculus. +Calculus is used to describe things that change, like things in nature. It can be used for showing and learning all of these: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Cartography.txt b/.github/workflows/data/simplewiki-100/Cartography.txt new file mode 100644 index 000000000..7dabdd54e --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Cartography.txt @@ -0,0 +1,8 @@ +Cartography is making maps. It is part of geography. How people make maps is always changing. In the past, maps were drawn by hand, but today most printed maps are made using computers and people usually see maps on computer screens. Someone who makes maps is called a cartographer. +Making a map can be as simple as drawing a direction on a napkin, or as complicated as showing a whole country or world. Anyone can make a map, but cartographers spend their lives learning how to make better maps. +For many centuries maps were usually carefully drawn onto paper or parchment. Now they are made on a computer which makes them look neater with accurate images. +Maps are of two main types: +General maps are produced in a series. Governments produce them in larger-scale and smaller-scale maps of great detail. +Thematic maps are now very common. They are necessary to show spatial, cultural and social data. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Catharism.txt b/.github/workflows/data/simplewiki-100/Catharism.txt new file mode 100644 index 000000000..f7ed09457 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Catharism.txt @@ -0,0 +1,16 @@ +The Cathar faith was a version of Christianity. They were usually considered Gnostics. The word 'Cathar' comes the Greek word "katharos" meaning 'unpolluted' (from Tobias Churton, "The Gnostics") or "the pure ones". +They used a bible in the language people spoke. Most other Western Christians used a Bible in Latin. Latin was spoken only by the priests. +Doctrines. +The Cathars believed that the world had been made by a bad god. They believed that this bad god had taken them from the good god and put them in the world, but inside their bodies there was a spirit, and that spirit needed to return to the good god. They were famous for a belief in a form of reincarnation and believed that when someone died the bad god would put that person's spirit in a new body. They believed this cycle of coming back to life could be escaped by a ritual cleansing. They were opposed to the doctrine of sin. +Women were prominent in the faith. They were pacifists. They didn't eat anything that was made from other animals, including meat and cows milk. The only exception to this was fish. Fish was OK to eat because they believed fishes were not alive but just things that were sometimes produced from dirt and water. +They preached tolerance of other faiths. They rejected the usual Christian rules of marriage and only believed in the New Testament. An earlier 10th-century Bulgarian heresy, Bogomilism and also Manichaeism started some of these trends. +Problems. +In 1145, open challenge to Catholic dominance began. In about 1165, the first Cathars said that the Church was "full of ravening (starving) wolves and hypocrites" and "worshipping the wrong God", right in front of the most powerful Catholics. In 1166, the Council of Oxford in England wiped out the English Cathars. They were also suppressed in Northern France. In 1167, Cathar bishops met to discuss organizing a counter Church - in the South of France, the Languedoc nobles protected it, and many noble women became "Perfects". Parish clergy had low morale, or confidence. +The Catholic Church was against Catharism, seeing it as a heresy. In the South of France there was tremendous religious fervor, and an economy that was starting to grow, and a social class of merchants and peasants was starting to grow. Peasants owned their own land. Meanwhile, in other parts of Europe, peasants were forced to give up their land to nobles and become serfs or slaves - the system of feudalism. There was a strong central absolute monarchy that did not exist in the South of France. The burghers and bankers had more power in this looser system. R. I. Moore is a historian who believes that it was desire to crush this system and take over the land that drove the attack. However, there was real cultural and religious difference to cause problems: Troubadors, who combined some of the traditions of the Bards of the Celts, and Jews were both part of the multicultural society in the South of France. Their influences were not appreciated by local or Roman Church figures. The 12th century Roman Catholic Monks were founding their monasteries outside the towns, drawing the best people there. +The Cathars had little competition. The Cathar "Perfects", the so-called Good Men or Good Women, lived restrained lives and spread their faith in towns - where the Catholics in general did not have their best people. Also, Cathars preached that only these Good leaders had to follow the regimens their whole lives - lay people could repent only on their deathbeds. Many 20th century Christian sects have similar beliefs. +The Albigensian Crusade. +Methods. +The Pope ordered a crusade against the Cathars in southern France. He said any crusader who answered the call would be given the same rewards as a crusader who went to the Holy Land. This was an absolution of all sin. +In the Launguedoc, on the 22nd of July 1209, a force of about 30,000 Crusaders arrived at the walls of Beziers bearing the cross pattee to mislead and create ease among the Cathars, thinking they were friends, not foe, and demanded that about 200 Cathars be surrendered. The people of the town who were mostly Catholic, said that rather than turn over their friends and family, "we would rather be flayed alive." +A mistake by the defenders of Beziers let thousands of attackers in. Arnauld Amaury made the famous quote "Kill them all, God knows his own" on being asked how to tell who were Cathars during the assault. Everyone in the town was killed, some while taking refuge in the church. It is guessed that 20,000 were killed, many of whom were Catholics and not Cathars at all. The crusade became known as the Albigensian crusade after the town of Albi. It was to wipe out the Cathars almost entirely over forty or so years. The Crusaders wanted to go home, but were ordered by the Pope to continue until the whole South of France was controlled and all Cathars were dead. In 1210, they attacked the fortress at Minerv and built "the first great bonfire of heretics" - beginning the practice of burning at the stake that would continue in the Inquisition of the Counter-Reformation. At the siege of Montsegur when the fires were lit the Cathars ran down the hill and threw themselves on, as their beliefs were very strong... +Catharism disappeared from the northern Italian cities after the 1260s, pressured by the Inquisition. The last known Cathar perfectus in the Languedoc, Guillaume Bélibaste, was killed in 1321. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Census of Marine Life.txt b/.github/workflows/data/simplewiki-100/Census of Marine Life.txt new file mode 100644 index 000000000..eea0bdca5 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Census of Marine Life.txt @@ -0,0 +1,3 @@ +The Census of Marine Life was a ten-year survey of life in the oceans, starting in 2000. Its head was Ron O'Dor of Dalhousie University in Halifax, Nova Scotia, Canada. It used data from researchers all over the world. More than 70 nations were involved and over a billion US dollars were spent on it. +It was a major work of marine ecology. It was founded by J. Frederick Grassle. +The purpose of the Census of Marine Life was to say what is alive in our seas and oceans. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Chat.txt b/.github/workflows/data/simplewiki-100/Chat.txt new file mode 100644 index 000000000..37370ebd2 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Chat.txt @@ -0,0 +1,4 @@ +To chat is to talk about ordinary things that are not usually very important. However, important issues can also classify as “chat”, for instance when organising gatherings, meetings or events, such as air show attendance. A person can chat with another person, or to many people. People also use this word now for parts of the Internet where we can talk with many different people at the same time. Usually, people chat on the Internet in a chat room or messaging service like AOL Instant Messenger (AIM), Yahoo Messenger Windows Live Messenger or Tencent QQ. There are also programs which let people use different messaging services from one program, such as Pidgin. +Online Chat is real time, text-based, digital communication between two or more parties. +Related pages. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Chemistry.txt b/.github/workflows/data/simplewiki-100/Chemistry.txt new file mode 100644 index 000000000..2bf1eab1e --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Chemistry.txt @@ -0,0 +1,22 @@ +Chemistry is a branch of science that deals with chemical elements and compounds, and how they work together and change. In other words, chemistry is the branch of science about fundamental properties of matter and chemical reactions. Chemistry is the study of the substances and their transformations (or change). +History. +In history, people studied elements to figure out how to do things such as turn lead into gold, but they did not manage to do it. This early form of chemistry was called alchemy. During the 18th century, alchemists became chemists when they began using the scientific method. Chemists separated the air into many parts and isolated the noble gases from it. They also processed special minerals from a mine in Sweden to get rare earth metals. Radioactivity was also discovered. 118 different elements have been found. Some are very common, like oxygen. Many are very rare and expensive, like platinum. Some cannot be found on earth and can only be made in labs, like rutherfordium. +Since the 1920s, the increased understanding of physics has changed chemists' theories about chemical reactions. With smaller and faster computers, chemists have built better tools for analyzing substances. These tools have been sent to study chemicals on Mars. Police also use those tools to study evidence from crime scenes. +Types of chemistry. +There are several types of chemistry. Analytical chemistry looks at which chemicals are in things. For example, looking at how much arsenic is in food. Organic chemistry looks at things that have carbon in them. For example, making acetylene. Inorganic chemistry looks at things that do not have carbon in them. One example is making an integrated circuit. Theoretical chemistry tries to explain chemical data with mathematics and computers. +A large area of chemistry is polymer chemistry. This looks at plastics. One example is making nylon. Because plastics are made of carbon, polymer chemistry is part of organic chemistry. Another area is biochemistry. This looks at the chemistry of living things. An example would be seeing how arsenic poisons people. Biochemistry is also part of organic chemistry. There are many other small branches of chemistry. +Concepts of chemistry. +Basic concepts. +The basic unit of an element is called an atom. An atom is the smallest building block that you can cut an element into without the element breaking down (turning into a lighter element, for example through nuclear fission or radioactive decay). A chemical compound is a substance made up of two or more elements. In a compound, two or more atoms are joined to form a molecule. The tiniest speck of dust or drop of liquid, that one can see is made up of many millions or billions of these molecules. Mixtures are substances where chemicals are mixed but not reacted. An example would be mixing sand and salt. This can be undone again to produce salt and sand separately. Chemical compounds are changed by a chemical reaction. An example would be heating sodium bicarbonate, common baking soda. It will make water, carbon dioxide, and sodium carbonate. This reaction cannot be undone. +One very important concept in chemistry is that different atoms interact with one another in very specific proportions. For example, two hydrogen atoms interacting with one oxygen atom lead to the water molecule, H2O. This relationship is known as the "Law of constant proportions" and leads to the idea of "stoichiometry", a term that refers to the ratios of different atoms in chemical compounds. For example, in water, there are always exactly 2 hydrogen atoms to 1 oxygen atom. In carbon dioxide, there are exactly 2 oxygen atoms for 1 carbon atom. These relationships are described using chemical formulas such as H2O (two hydrogen atoms and one oxygen atom) and CO2 (one carbon atom and two oxygen atoms). +Mole. +Because atoms of different elements react with one another in very specific proportions but atoms of different elements have different weights, chemists often describe the number of different elements and compounds in terms of the number of "moles". A "mole" of any element contains the same number of atoms: 602,214,150,000,000,000,000,000 atoms. The atomic mass of an element can be used to see how much of the element makes a mole. For example, the atomic mass of copper is about 63.55. That means about 63.55 grams of copper metal has a mole of atoms. The atomic mass of chlorine is about 35.45. That means 35.45 grams of chlorine has a mole of atoms in it. +Moles can be used to see how many molecules are in chemical compounds, too. Copper(II) chloride is an example. CuCl2 is its chemical formula. There is one copper atom (63.55) and two chlorine atoms (35.45 · 2 = 70.90). Add all the molar masses of the elements together to get the molar mass of the chemical compound (63.55 + 70.90 = 134.45). That means in 134.45 grams of copper(II) chloride, there is one mole of copper(II) chloride molecules. This concept is used to calculate how much chemicals are needed in a chemical reaction if no reactants (chemicals that are reacted) should be left. If too much reactant is used, there will be some reactants left in the chemical reaction. +Acids and bases. +Acids and bases are common chemicals. Acids release H+ ions when in water, and bases release OH− ions when in water. Acids can react with bases. The H+ ion is taken from the acid by the base. This makes water, H2O. A salt is also made when an acid and a base react together. An example would be reacting hydrochloric acid (HCl) and sodium hydroxide (NaOH). Hydrochloric acid releases H+ and Cl- ions in water. The base releases Na+ and OH- ions. The H+ and the OH- react to make water. There is a solution of sodium chloride (NaCl) left. Sodium chloride is a salt. +Usefulness. +Chemistry is very useful in everyday life and makes up the foundation of many branches of science. Most objects are made by chemists (people who do chemistry). Chemists are constantly working to find new and useful substances. Chemists make new drugs and materials like paints that we use every day. +Safety. +Many chemicals are harmless, but there are some chemicals that are dangerous. For example, mercury(II) chloride is very toxic. Chromates can cause cancer. Tin(II) chloride pollutes water easily. Hydrochloric acid can cause bad burns. Some chemicals like hydrogen can explode or catch fire. To stay safe, chemists experiment with chemicals in a chemical lab. They use special equipment and clothing to do reactions and keep the chemicals contained. The chemicals used in drugs and in things like bleach have been tested to make sure they are safe if used correctly. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/China.txt b/.github/workflows/data/simplewiki-100/China.txt new file mode 100644 index 000000000..fd9171fa4 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/China.txt @@ -0,0 +1,45 @@ +China ( Pinyin: Zhōngguó) is a cultural region, an ancient civilization, and a nation in East Asia. The official name is People's Republic of China or PRC. +The latest Chinese Civil War (1927–1949) resulted from two different political powers today: +China is one of the world's oldest civilizations, having the oldest continuous civilization near the Yellow River region. There is archaeological evidence found that is over 5,000 years old. China also has one of the world's oldest writing systems (and the oldest in use today). China has been the source of making many major inventions. Geographically, China’s longest river is the Yangtze River, which runs through mega cities and is home to many species. It is the world’s third longest river. +Origins. +The first recorded use of the word "China" is dated to be 190. It is derived from "chīnī", a Persian adjective meaning 'Chinese' which was popularized in Europe by Marco Polo. +History. +Ancient (2100 B.C. – 1500 A.D.). +Ancient China was one of the first civilizations, and was active since the 2nd millennium BC as a feudal society. Chinese civilization was also one of the few to invent writing, with the others being Mesopotamia, the Indus Valley civilization, the Maya civilization, the Minoan civilization of ancient Greece, and Ancient Egypt. Ancient China reached its golden age during the Tang Dynasty (c. A.D. 10th century). Home of Confucianism and Daoism, it had great influence on nearby countries including Japan, Korea, and Vietnam in the areas of political system, philosophy, religion, art, writing and literature. China is home to some of the oldest artwork in the world. Statues and pottery, as well as decorations made of jade, are some classic examples. +Before the Qin Dynasty united China, there were many small feudal states, nominally loyal to the Zhou King, which typically fought each other for hundreds of years in battles for control of China. The majority of these states were ruled by relatives and clansmen of the Zhou royal house and carried the surname Ji (姬), and were tied by family bonds to the Zhou king, to whom they were ritually subordinate, as members of collateral or lesser lineages. A minority of these states, such as the Qin and Chu, were ruled by non-Zhou clansmen, and were awarded their fiefs on account of some merit. Over time, these feudal states attained to power and wealth, that exceeded that of their Zhou nominal overlord, whose direct authority became confined to a very small territory near present-day Zhengzhou. These states also began to acquire some distinctive characteristics and identities of their own during the long centuries of loose control by the Zhou. Eventually, the Zhou kings were eclipsed in power by two especially problematic vassals - the Qin and Chu, and the functional independence of the Qin later led to its gradual conquest of all other vassal states and the formal supplantation of the Zhou to form a heavily centralised Empire. +The long decline of the Zhou, incidentally the longest ruling dynastic house of China, is known as the Warring States Period. Despite the bloodiness and strife of the period, this was the time when many great philosophies emerged - including Confucianism and Daoism as a response to disintegrating central authority of the Zhou kings and fluctuating power of the vassal states, and the general uncertainty of that era. Confucianism and Daoism have been the foundation of many social values seen in modern east Asian cultures today. +Other notable dynasties include the Han (from which is derived the ethnonym the Han Chinese, which is synonymous with the older self-referential term - the Huaxia) as well as dynasties such as the Tang, Song, and Ming, which were characterised by periods of affluence, wealth, population growth, and the proliferation of literature. +During the later years, China was often raided or invaded by northern nomadic people such as the Xiongnu, the Xianbei, the Jurchens and the Mongols (the latter led by Genghis Khan and Kublai Khan). One effect of regular nomadic invasion and the collapse of native dynasties was the massive migration of Han Chinese - especially the aristocratic elite and the literati, to sparsely populated frontier regions south of the Yangzi river such as Jiangsu, Zhejiang, Guangdong and Fujian. Several notable waves of Han Chinese immigration to Jiangsu, Zhejiang, Guangdong and Fujian took place during the collapse of the Jin, the Tang, and the Song. +Some nomadic groups succeeded in conquering the whole territory of China, establishing dynasties such as the Yuan (Mongol) and Qing (Manchu). Each time, they also brought new elements into Chinese culture - for instance, military uniform, the qipao and the pigtail, the latter of which was deeply resented by the Han Chinese. +A new age (1500 A.D. - Present). +While China achieved many things in the First millennium and early 2nd millennium, it became an isolationist country in the 15th century C.E. This was because Spain found enormous silver in the new continent, which was the main currency (money) in China and Europe at the time, and China did not want to be bought by the foreigners. +By the time of the Renaissance, European powers started to take over other countries in Asia. While China was never actually taken over, many European countries, such as Britain and France built spheres of influence in China. Since China had cut itself off from the world over the previous few centuries, by the Qing Dynasty, it had fallen behind other countries in technology, and was helpless to stop this from happening. This had become clear when it lost the Opium Wars to Britain in the 19th century. +Still influenced by Western sources, China faced internal strife. The Taiping Rebellion or Taiping War occurred in China from 1851 through 1864. The Taiping Rebellion was led by Hong Xiuquan from Guangdong. Hong Xiuquan was influenced by Christian missionaries and declared himself the brother of Jesus. Hong made his mission to bring down the Qing Dynasty. Gaining influence on the southern Chinese population, the Taiping Rebellion attracted tens of thousands of supporters. The Taiping regime successfully created a state within the Qing Empire with the capital at Nanjing. Hong called his new state the Taiping Tianguo or "The Heavenly State of Great Peace". Local armies eventually suppressed the rebellion at the final battle of Nanjing. +In 1911, the Republic of China was founded after the Xinhai revolution led by Sun Yat-sen, but its government was very weak. Warlords controlled many areas. Chiang Kai-shek led wars against them, and he became president and dictator. +In 1931, Japan invaded Manchuria, a place in the northeastern part of China. On July 7, 1937, the Japanese attacked the rest of the country, starting what was called the Second Sino-Japanese War. +On December 13 of that same year, The Japanese Army killed an estimated (guessed) 200,000 to 300,000 Chinese civilians (people) which is called Nanjing Massacre. The war later became part of World War II. The war was fought for eight years and millions of Chinese people were killed. +However, the Chinese Civil War later started between the Kuomintang (Nationalists) of the Republic of China (ROC) and the Communists of the People's Republic of China (PRC). The Communists wanted to make China like the Soviet Union, whereas the other side wanted to keep China in its current state at the time. The Communists were led by Mao Zedong, Liu Shaoqi, Zhou Enlai and others. The Communists eventually won the war by uniting all the people from different positions. The Nationalists (led by Chiang Kai-shek) fled to the island of Taiwan and set up their new capital city in Taipei. After the Chinese Civil War, the Communist leader Mao Zedong declared a new country, the People's Republic of China (PRC), in Beijing on October 1, 1949. +Under Mao the country stayed poor while Taiwan became richer. His attempt at industrialization and collectivization with the Great Leap Forward led to the deaths of many people from famine. The Cultural Revolution caused great social upheaval. After 1976, China underwent market economy reforms under Deng Xiaoping, and experienced rapid economic growth, which made the former progress made by Taiwan became overshadowed. China is now one of the largest economies in the world, relying mainly on exports and manufacturing. +In recent history, China has had problems with protests, blocking of information on the Internet, and censorship of news. 1989 was notable for the controversial Tiananmen Square protests. Since the 2008 Olympics, China has hosted many major international events, and the 2022 Winter Olympics were held in Beijing, China. +Geography. +China's landscape is vast and diverse. It ranges from the Gobi and Taklamakan Deserts in the north to subtropical forests in the south. The Himalaya, Karakoram, Pamir and Tian Shan mountain ranges separate China from much of South and Central Asia. The Yangtze and Yellow Rivers run from the Tibetan Plateau to the densely populated eastern coast. The Yangtze River is the third-longest river in the world while the Yellow River is the sixth-longest. China's coastline along the Pacific Ocean is 14,500 kilometers (9,000 mi) long. It is bounded by the Bohai, Yellow, East China and South China seas. China connects through the Kazakh border to the Eurasian Steppe. The Eurasian Steppe has been an artery of communication between East and West since the Neolithic through the Steppe route. The Steppe Route is the ancestor of the terrestrial Silk Road(s). +Politics. +China's constitution states that The People's Republic of China "is a socialist state under the people's democratic dictatorship led by the working class and based on the alliance of workers and peasants". It also states the state organs "apply the principle of democratic centralism." The PRC is one of the world's only socialist states openly being communist. +Military. +With 2.3 million active troops, the People's Liberation Army (PLA) is the largest standing military force in the world. The PLA is commanded by the Central Military Commission (CMC). China has the second-biggest military reserve force, only behind North Korea. The PLA consists of the Ground Force (PLAGF), the Navy (PLAN), the Air Force (PLAAF), and the People's Liberation Army Rocket Force (PLARF). According to the Chinese government, China's military budget for 2017 was US$151,5 billion. China has the world's second-largest military budget. +Science and technology. +China was once a world leader in science and technology up until the Ming dynasty. There are many Ancient Chinese discoveries and inventions. For example, papermaking, printing, the compass, and gunpowder are known as the Four Great Inventions. They became widespread across East Asia, the Middle East and later to Europe. Chinese mathematicians were the first to use negative numbers. By the 17th century, Europe and the Western world became better than China in science and technology. +Demographics. +The national census of 2010 recorded the population of the People's Republic of China to be about 1,370,536,875. About 16.60% of the population were 14 years old or younger, 70.14% were between 15 and 59 years old, and 13.26% were over 60 years old. The population growth rate for 2013 is estimated to be 0.46%. +Culture. +China is the origin of Eastern martial arts, called Kung Fu or its first name Wushu. China is also the home of the well-respected Spa Monastery and Wudang Mountains. Martial art started more for the purpose of survival, defense, and warfare than art. Over time some art forms have branched off, while others have retained their distinct Chinese flavor. +China has had renowned artists including Wong Fei Hung (Huang Fei Hung or Hwang Fei Hung) and many others. Art has also co-existed with a variety of paints including the more standard 18 colors. Legendary and controversial moves like Big Mak are also praised and talked about within the culture. +China has many traditional festivals, such as Spring Festival, Dragon Boat Festival, Mid-autumn Festival and so on. The most important is Chinese New Year. People in China will have holidays to celebrate these festivals. +Festivals. +Spring Festival is the Chinese New Year. +Dragon Boat Festival is celebrated to commemorate the death of Qu Yuan, a patriotic poet of the State of Chu during the Warring States period. He persuaded his emperor not to accept Qin's diplomats' offers several times but his emperor did not listen to him. He was very sad and ended up jumping into the river to end his life. The people loved him so much that they did not want the fish to eat his corpse. They made and threw rice dumplings into the river. They hope the fish eat these dumplings instead of the poet's corpse. They also rowed dragon boats in the river to get rid of the fish. Such practices, eating rice dumplings and holding dragon boat races, become what Chinese do in this festival nowadays. +Held on the fifteenth day of the eighth lunar month, Mid-Autumn Festival is a festival for families. Now when the festival sets in, people would sit together to eat moon cakes, appreciate the bright full moon cakes, appreciate the bright full moon, celebrate the bumper harvest and enjoy the family love and happiness. To the Chinese people, the full moon symbolizes family reunion, as does the "moon cakes." Hence the Mid-Autumn Festival is also called the Family Reunion Festival. +Notes. +<templatestyles src="Reflist/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Chinese.txt b/.github/workflows/data/simplewiki-100/Chinese.txt new file mode 100644 index 000000000..269f18cce --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Chinese.txt @@ -0,0 +1,2 @@ +Chinese might mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Chorizo.txt b/.github/workflows/data/simplewiki-100/Chorizo.txt new file mode 100644 index 000000000..1fe01e197 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Chorizo.txt @@ -0,0 +1,6 @@ +Chorizo is a pork (pig-meat) sausage which people first made in the Iberian Peninsula. It is made with large pieces of fatty pork, chili pepper and paprika. The special taste of this sausage comes from the mild Spanish paprika in it. +In the western hemisphere, the Mexican and Caribbean types are better known. These types of chorizo are made with smaller pieces of pork and different seasonings and peppers are used. +Cured smoked chorizo is edible and can be eaten without cooking. Fresh chorizo must be cooked before eating. It can be eaten by its self, or as part of meal. It can also be used in place of ground beef or pork. +Chorizo can be fresh. Also it can be dried. It can be spicy or not spicy depending on the recipe. There are many ways to eat chorizo. It can be sliced and eaten as a snack, or cooked. Dishes like stews, soups and rice dishes also use Chorizo. In Spain, chorizo is served as a small plate of food with drinks. In Latin America, chorizo is served with beans and eggs for breakfast. To make chorizo, the pork is cut into small pieces. Then it is mixed with spices and other ingredients. The mixture is then put into a casing. Casing is a thin, tube-like skin. Casing is made from the intestine of a pig. The chorizo is then left to dry for a few weeks. By doing this chorizo gets its special flavor and texture. There are many kinds of chorizo. Recipe of chorizo also different in different countries. In Spain, there are two main kinds of chorizo: chorizo de verdeo, and chorizo de cantimpalo. Chorizo de verdeo made with white wine and chorizo de cantimpalomade with red wine. In Latin America, chorizo is made with a mixture of chili peppers and other spices. It makes chorizo spicy. There are a few different ways to cook with chorizo. One popular way is to slice the chorizo and fry it in a pan until it is crispy. It can then be added to dishes like soups, stews and rice dishes. Chorizo can also be grilled, which gives it a smoky flavor. It can be sliced and added to sandwiches or served as a topping on pizza. Chorizo is a tasty and versatile food that can be enjoyed in many different ways. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Church (building).txt b/.github/workflows/data/simplewiki-100/Church (building).txt new file mode 100644 index 000000000..3dd5aebc4 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Church (building).txt @@ -0,0 +1,23 @@ +A church is a building that was constructed to allow people to meet to worship together. These people are usually Christians, or influenced by Christianity. Some other non-Christian religious groups also call their religious buildings churches, most notably Scientology. +The following description is about Roman Catholic churches, although some parts are the same in Episcopalian and Lutheran churches. Depending on the number of people that are in a community, the churches come in different sizes. Small churches are called chapels. The churches in a particular geographical area form a group called the diocese. Each diocese has a cathedral. In most cases, the cathedral is a very big church. Cathedrals are the seat of bishops. +History of church buildings. + +In the early days of Christianity people met in private buildings. Church buildings are mentioned for the first time around A.D. 260 when the Emperor Galienus ordered an end of a persecution and to return the places of worship. In the third century we hear of large church buildings. We do not know, how these early buildings looked. Only in Dura-Europos (Syria) a building was discovered, which had been a private house modified for Christian services. +After the death of the Roman emperor Constantine in A.D. 337, Christians were allowed to have buildings to worship in. These first churches were built on a similar plan to Roman basilicas. This plan was later used for the fine Gothic cathedrals and churches that were built at the end of the Middle Ages. +The parts of a church. +There are several parts in the architecture of a church. Not all churches will have all these parts: +In Roman Catholic churches there is always a stoup (bowl) of holy water near the entrance of the church. This tradition comes from the fact that Roman basilicas had a fountain for washing in front of the entrance. The font is a bowl where people (often babies) are baptized. This is also near the entrance of the church. This is a symbol of the fact that it is welcoming the people into the Christian church. +Traditionally the nave has long benches for the congregation to sit on. These are called pews. Some churches may now have replaced their pews with chairs so that they can be moved about for different occasions. At the front of the nave is the pulpit where the priest preaches (these talks are called “sermons”). There is also a lectern (like a large music stand) from where the lessons (the Bible readings) are read. +If there are aisles along the side of the nave there will be pillars which hold up the roof. In large churches or cathedrals there may be a row of little arches along the top of these pillars. This is called the triforium. Over the triforium is the clerestory which is a row of windows high up in the church wall. +The chancel is the most holy part of the church, and this is why it is often separated from the nave by a screen which can be made of wood or stone, or occasionally iron. The congregation can see through the screen. On the top of the screen there may be a cross. This is called a rood (pronounce like “rude”) screen. Priests used to climb up a staircase to the top of the rood screen to read the epistle and the gospel. Sometimes people sang from there. +Inside the chancel are the benches where the choir sit. These are called choir stalls. They are on both sides. The two sides of the choir sit facing one another. The choir members who sit on the left (north side) are called “cantoris” (the side where the “cantor” sits) and those on the right (south side) are called “decani” (the side where the deacon sits). In some large churches or cathedrals the seats for the priests tip up. The top of these seats, when they are tipped up, are called misericords (from the Latin word for “mercy”). This is because the priests or monks were able to lean against them when they got tired if they had to stand up for a long time. +Sometimes there are holes in the walls of the screen so that the congregation can see through. These are called squints. If there is a recess in the wall it is called an aumbry. It is a cupboard for communion wine and bread that have been consecrated by a priest. +The altar may be right at the east end of the church, but in larger churches or cathedrals it is often much farther forward. In that case the very east end is called an apse. Sometimes it is a separate chapel called the “Lady Chapel”. +Churches through the ages. +The design of churches changed a lot during the course of history. Often churches were made bigger. When this happened there may be a mixture of architectural styles. These styles vary a lot in different countries. +English churches. +In English churches there were several different periods of architecture: +In the 1600s, churches were built in a variety of styles. Often they copied some of the older styles. After the Great Fire of London many new churches were built by the architect Sir Christopher Wren. They were built in the classical style. Churches continued to be built in later centuries like this, but also the Gothic style continued to be used. +Modern churches often do not have the traditional cross-shape. It is difficult for the congregation to see and hear what is happening in the chancel. Modern churches bring the congregation, choir and priests in closer touch. An example is the round design for the Church of Christ the Cornerstone in Milton Keynes. Modern churches are often simpler but with a warmer character than the Gothic churches. Many have beautiful mosaic glass windows. Coventry Cathedral is a famous example of a modern church building. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Cities.txt b/.github/workflows/data/simplewiki-100/Cities.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-100/City.txt b/.github/workflows/data/simplewiki-100/City.txt new file mode 100644 index 000000000..254157c10 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/City.txt @@ -0,0 +1,34 @@ +A city is a place where many people live close together. +A city has many buildings and streets. It has houses, hotels, condominiums, and apartments for many people to live in, shops where they may buy things, places for people to work, and a government to run the city and keep law and order in the city. People live in cities because it is easy for them to find and do everything they want there. A city usually has a "city center" where government and business occur and suburbs where people live outside the center. +Definition. +No rule is used worldwide to decide why some places are called "city," and other places are called "town." +Some things that make a city are : +In American English, people often call all places where many people live cities. (See below: Size of cities ) +Size of cities. +The sizes of cities can be very different. This depends on the type of city. Cities built hundreds of years ago and which have not changed much are much smaller than modern cities. There are two main reasons. One reason is that old cities often have a city wall, and most of the city is inside it. Another important reason is that the streets in old cities are often narrow. If the city got too big, it was hard for a cart carrying food to get to the marketplace. People in cities need food, and the food always has to come from outside the city. +Cities that were on a river like London could grow much bigger than cities that were on a mountain like Siena in Italy, because the river made a transport route for carrying food and other goods, as well as for transporting people. London has been changing continually for hundreds of years, while Siena, a significant city in the 1300s, has changed very little in 700 years. +Modern cities with modern transport systems can grow very large, because the streets are wide enough for cars, buses, and trucks, and there are often railway lines. +U.S.A. usage. +In the US, the word "city" is often used for towns that are not very big. When the first European people went to America, they named "city" to new places. They hoped the places would be great cities in the future. For example, Salt Lake City was the name given to a village of 148 people. When they started building the town, they made street plans and called it Great Salt Lake City (for the nearby Great Salt Lake). Now, 150 years later, it really is a big city. +Los Angeles, which sounds like a single city, is really made of a number of cities which over the years have become amalgamated. It now covers a huge area which goes by the name of Los Angeles. The city is governed by a Common Council only since 1948. +Growth of cities. +In modern times many cities have grown bigger and bigger. The whole area is often called a "metropolis" and usually includes several ancient small towns and villages. The metropolis of London includes London, Westminster, and many old villages such as Notting Hill, Southwark, Richmond, Greenwich, etc. The part that is officially known as the "City of London" only takes up one square mile. The rest is known as "Greater London". Many other cities have grown in the same way. In general speech, it is all a city. But, confusingly, that includes the City of London. +Modern cities have many problems. Not everyone has jobs in the cities and they often get money by begging or by crime. Automobiles, factories, and waste create a lot of pollution that makes people sick. Roads are crowded and traffic is slow. The cause of all this is population growth. +Historically, a big problem with cities was the water supply, which periodically got contaminated. That was fixed by an extraordinary man, Joseph Bazalgette. He was the first man to solve this problem, which had plagued mankind since at least Roman times. There are parts of the world where his ideas are still not understood. +Urban history. +Urban history is history of civilization. The first cities were made in ancient times, as soon as people began to create civilizations. The oldest city on Earth is probably Catal Huyuk, which existed from 7500 to 6500BC. Famous ancient cities which fell to ruins included Babylon, Troy, Mycenae and Mohenjo-daro. +Benares in northern India is one among the ancient cities which has a history of more than 3000 years. Other cities that have existed since ancient times are Athens in Greece, Rome and Volterra in Italy, Alexandria in Egypt. +In Europe in the Middle Ages, being a city was a special privilege, granted by nobility. Cities that fall into this category, usually had (or still have) city walls. This shows that security was one pf the problems of a city. The people who lived in the city were privileged over those who did not. Medieval cities that still have walls include Carcassonne in France, Tehran in Iran, Toledo in Spain, and York and Canterbury in England. +Features. +Infrastructure. +People in a city live close together, so they cannot grow all their own food or gather their own water or energy. People also create waste and need a place to put it. Modern cities have infrastructure to solve these problems. Pipes carry running water, and power lines carry electricity. Sewers take away the dirty water and human waste (see Bazelguette). Most cities collect garbage to take it to a landfill, burn it, or recycle it. +Transport is any way of getting from one place to another. Cities have roads which are used by automobiles (including trucks), buses, motorcycles, bicycles, and pedestrians (people walking). Some cities have trains and larger cities have airports. Many people in cities travel to work each day, which is called commuting. +Buildings and design. +Houses and apartments are common places to live in cities. Great numbers of people in developing countries (and developed countries, in the past) live in slums. A slum is poorly built housing, without clean water, where people live very close together. Buildings are usually taller in the city center, and some cities have skyscrapers. +City streets can be shaped like a grid, or as a "wheel and spokes": a set of rings and lines coming out from the center. Streets in some older cities like London are arranged at random, without a pattern. The design of cities is a subject called urban planning. One area of the city might have only shops, and another area might have only factories. Cities have parks, and other public areas like city squares. +United States politics. +Cities in the US are usually very-left leaning. The best examples of these would be New York, New York, and Washington, D.C. For example, in Louisiana, the only Democratic delegate in US Congress who is a Democrat was elected from a district comprising in New Orleans. Below is a list of states and the major city/cities that provide much of the liberal support in them : +World's largest cities. +These cities have more than 10 million people and can be called megacities: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Civics.txt b/.github/workflows/data/simplewiki-100/Civics.txt new file mode 100644 index 000000000..78a7ece9a --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Civics.txt @@ -0,0 +1,4 @@ +Civics is the study of government. It most often refers to studying government in high school to prepare to be a good citizen. In college, civics is usually called political science. Since a city has the most unsimple government problems, the word for this study is like that for city. +Theories of civics can be grouped as: + "This about can be made longer. You can help Wikipedia by [ adding to it]". +It contains the rule and regulations of the citizen to make the country democratic \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Classical Elements.txt b/.github/workflows/data/simplewiki-100/Classical Elements.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-100/Classical element.txt b/.github/workflows/data/simplewiki-100/Classical element.txt new file mode 100644 index 000000000..27e526c48 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Classical element.txt @@ -0,0 +1,4 @@ +The Greek classical elements are fire, air, water, and earth. In Greek philosophy, science and medicine, these make up a whole. +The image below has two squares on top of each other. The corners of one are the classical elements. The corners of the other are the properties. +Galen said these elements were used by Hippocrates to describe the human body. The elements are linked to the four humours: phlegm (water), yellow bile (fire), black bile (earth), and blood (air). +In Chinese Taoism the elements are metal, wood, water, fire, earth (). \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Coin.txt b/.github/workflows/data/simplewiki-100/Coin.txt new file mode 100644 index 000000000..dbab99911 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Coin.txt @@ -0,0 +1,9 @@ +A coin is a piece of metal that is used as currency, or money. The earliest coins were in Lydia, in what is Turkey today, in 7th Century BC. They were made from electrum, an alloy found in riverbeds. +Most people use coins as currency. They usually have lower value than banknotes. Most are made in government mints. +Appearance. +Many coins have unique or complicated decorations; one side often has the picture of a king or ither important person's head on it. +The different decorations on each side of a coin might be used to decide things randomly. This is called "tossing a coin". A person can throw the coin into the air and catch it. You then look at which side is facing up. If the head is facing up it is called "heads", if the other side is facing up it is called "tails". Before tossing the coin someone has to decide what each side means. Tossing a coin can be a type of gambling, which is illegal (against the law) in some countries. +Collecting. +Because coins have been made for a very long time, some people collect old coins. They can be much cheaper than other old things, especially if they are made of cheap metals like copper. Older coins normally cost more than newer ones, but rarity matters more-some coins from the 1920s cost vast sums, while some Roman coins cost very little. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Colchester.txt b/.github/workflows/data/simplewiki-100/Colchester.txt new file mode 100644 index 000000000..da4b5064a --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Colchester.txt @@ -0,0 +1,11 @@ +Colchester is a city in the northern part of the English county of Essex. It has a population of 130,245 people. People believe that Colchester is the oldest Roman town in England. +History. +Before Roman times, Colchester was "Camulodunon". This is a Celtic name that came from Camulos. Camulos was the Celtic god of war. The Romans called Colchester "Camulodunum" (written "CAMVLODVNVM") and made it the capital of Roman Britain. Colchester was attacked and burnt by Boudicca in 61 AD. The Romans moved their capital of Britannia to Londinium (now London), but Camulodunum remained an important city until the fifth century, when the Saxons conquered the region. +The Roman town of "Camulodunum", officially known as "Colonia Victricensis", reached its peak in the Second and Third centuries AD. It may have reached a population of 30,000 in those centuries, but when the Romans withdrew from Britannia in 410 AD it probably had fewer than 5,000 inhabitants. +The church at the Benedictine abbey of Saint John the Baptist was destroyed in 1539. This action was part of the dissolution of the monasteries by King Henry VIII. Only a gate remains, that people still go to visit. +King Cunobelinus (or "Cunobelin") was from Colchester. +Until 2022, Colchester was officially a town, not a city. On 5 September, Queen Elizabeth II signed letters patent to grant it city status. This was planned as part of her Platinum Jubilee celebrations. However, she died three days later. On 29 September, these letters were publicly released. +Twin cities. +Colchester is twinned with the following cities: +Bibliography. + "This about the  can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Comedy.txt b/.github/workflows/data/simplewiki-100/Comedy.txt new file mode 100644 index 000000000..fb5dda4fe --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Comedy.txt @@ -0,0 +1,30 @@ +Comedy (from ), in modern times, is an entertainment with generally funny content. It is able to make people laugh. This definition was used for theatre plays, and was first used in Ancient Greece. Aristotle defined this as “Comedy is, as we have said, an imitation of characters of a lower type- not, however, in the full sense of the word bad, the ludicrous being merely a subdivision of the ugly. It consists in some defect or ugliness which is not painful or destructive. To take an obvious example, the comic mask is ugly and distorted, but does not imply pain.” To him, the lampooners became writers of Comedy and the truly artistic ones became writers of Tragedy. +Comedy is also a media genre that is for television shows or movies that are either funny or silly. People who are known for acting in comedies are termed as comedians or comedic actors. +History. +Satire. +The ancient Greeks had comedies, which were presented in competitions at the festival of Dionysia. +One of the best-known comedy authors of the time was Aristophanes (about 446–386 BC). One of his works, "The Clouds" was performed 425 BC. The work did not survive completely, but a later version did survive. It is a satire against Socrates, and pictures the great philosopher as a swaggering con artist. Some of the accusations were re-used at Socrates' trial, twenty years later. +Typical for satire are that the author criticizes society, and living people. +Satyr plays. +Another type of Ancient Greek theatre was the satyr play. This was mock drunkenness, brazen sexuality (including phallic props), pranks, sight gags, and general merriment. The modern equivalent would be knock-about comedy. +Humour. +Humour, or 'New Comedy' is not about criticizing people or ideas, but rather about showing characters in funny situations. The most important Greek playwright of this type was probably Menander. The best known Roman comedy writer was Plautus. He often used Greek comedies for his plays. +Many comedy plays were written in the 1500s by the British writer William Shakespeare. +Shakespeare's comedy plays include:" All’s Well That Ends Well, The Comedy of Errors, A Midsummer Nights Dream", and "Twelfth Night". In Shakespeare's day a comedy did not mean a play that would make people laugh or that had a lot of jokes. Instead it was a play in which all the problems work out all right in the end. This was unlike a tragedy, where the problems do not work out, usually resulting in someone's death. +The two masks, one was smiling, the other crying, often associated with theatre represent comedy and tragedy. +Types. +Slapstick. +There are different types of comedy. One type of comedy is called "slap stick comedy." In "slap stick comedy," people do silly things such as tripping, falling over or embarrassing themselves just to make people laugh. Slap stick comedy can be used in comedy movies or comedy television shows. +Slap stick comedy was used a lot in silent (no sound) movies from the 1920s. A comedian who acted in the silent movies who used a lot of slapstick comedy was Charlie Chaplin. In the 1950s and 1960s, comedian Jerry Lewis also used silly slap stick comedy in his comedy movies. +Comedy movies. +A comedy is a very popular type of movie. Some comedy movies have "slapstick comedy," in which people just do silly things such as tripping, falling over or embarrassing themselves just to make people laugh. Other comedy movies show funny stories or situations in which people are behaving in a silly manner. Some comedies make the audience laugh by showing strange or unusual images or situations that do not make sense. +Offensive Comedy. +a genre of comedy that existed before the rise of "political correctness" generally racist and discriminatory against minorities but can be used as a way to offend those who offend others this is known as "Reverse Racism". an example of this is calling a white person a "honky" or "white trash" these terms are offensive to white people which is racist but if used against a person who calls someone another terminology, as a way of keeping ones honour. +Parody/Spoof. +A parody or spoof movie imitates or exaggerates another person or movie to make them seem silly, dumb, or just plain out of it. +Different types of comedy movies. +Some types of comedy movies mix comedy with other types of movies. +Comedy television shows. +Comedy shows are very popular on television. Comedy shows on television are often called "sitcoms." The word "sitcom" is a shortened way of saying "situational comedy." Television situational comedies usually show characters who do silly or funny things which make the audience laugh. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Comet.txt b/.github/workflows/data/simplewiki-100/Comet.txt new file mode 100644 index 000000000..b79834a40 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Comet.txt @@ -0,0 +1,12 @@ +A comet is a ball of mostly ice that moves around in outer space. Comets are often described as "dirty snowballs". They are very different from asteroids. The orbital inclinations of comets are usually high and not near the ecliptic where most solar system objects are found. Most of them are long-period comets and come from the Kuiper belt. That is very far away from the Sun, but some of them also come near enough to Earth for us to see at night. +They have long "tails", because the Sun melts the ice. A comet's tail does not trail behind it, but points directly away from the Sun, because it is blown by the solar wind. +The hard centre of the comet is the "nucleus". It is one of the blackest things (lowest albedo) in the solar system. When light shone on the nucleus of Halley's Comet, the comet reflected only 4% of the light back to us. +"Periodic" comets visit again and again. "Non-periodic" or "single-apparition" comets visit only once. +Comets sometimes break up, as Comet Biela did in the 19th century. Comet Shoemaker-Levy 9 broke up, and the pieces hit Jupiter in 1994. Some comets orbit (go around) together in groups. Astronomers think these comets are broken pieces that used to be one object. +History of comets. +For thousands of years, people feared comets. They did not know what they were, or where they came from. Some thought that they were fireballs sent from demons or gods to destroy the earth. They said that each time a comet appeared, it would bring bad luck with it. Whenever a comet appeared, a king would die. For example, the Bayeux Tapestry shows the return of Halley's Comet and the death of a king. Comets were also known to end wars and thought to bring famine. During the Renaissance, astronomers started to look at comets with less superstition and to base their science on observations. Tycho Brahe reasoned that comets did not come from the earth, and his measurements and calculations showed that comets must be six times farther than the earth is from the moon. +Edmond Halley reasoned that some comets are periodic, that is, they appear again after a certain number of years, and again and again. This led to the first prediction of a comet's return, Halley's Comet, named after him. +Isaac Newton also studied comets. He realised that comets make U-turns around the sun. He asked his friend Edmond Halley to publish this in his book "Philosophiae Naturalis Principia Mathematica". Before Newton said this, people believed that comets go in to the sun, then another comes out from behind the sun. +In later years, some astronomers thought comets were spit out by planets, especially Jupiter. +All this new information and research gave people confidence, but some still thought that comets were messengers from the gods. One 18th century vision said that comets were the places that hell was, where souls would ride, being burned up by the heat of the sun and frozen by the cold of space. +In modern times, space probes have visited comets to learn more about them. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Compound.txt b/.github/workflows/data/simplewiki-100/Compound.txt new file mode 100644 index 000000000..8ed5970df --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Compound.txt @@ -0,0 +1 @@ +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Computer science.txt b/.github/workflows/data/simplewiki-100/Computer science.txt new file mode 100644 index 000000000..0aa310312 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Computer science.txt @@ -0,0 +1,16 @@ + Computer science deals with the theoretical foundations of computation and practical techniques for their application. +Computer science is the science of information. Computer scientists study different ways of reading, using, and encoding information. +There are many different areas within computer science. In some areas, scientists only work with ideas "on paper". In other areas they use those ideas to make things like computers and computer programs. +A person who works in computer science will often need to understand logic and mathematics. +Common tasks for a computer scientist. +Asking questions. +This is so people can find new and easier ways to do things, and the way to approach problems with this information. +While computers can do some things easily (like simple math, or sorting out a list of names from A-to-Z), computers cannot answer questions when there is not enough information, or when there is no real answer. Also, computers may take too much time to finish long tasks. For example, it may take too long to find the shortest way through all of the towns in the USA - so instead a computer will try to make a close guess. A computer will answer these simpler questions much faster. +Answering the question. +Algorithms are a specific set of instructions or steps on how to complete a task. For example, a computer scientist wants to sort playing cards. There are many ways to sort them - by suits (diamonds, clubs, hearts, and spades) or by numbers (2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King, and Ace). By deciding on a set of steps to sort the cards, the scientist has created an algorithm. The scientist then needs to test whether this algorithm works. This shows how well and how fast the algorithm sorts cards. +A simple but slow algorithm is: pick up two cards and check whether they are sorted correctly. If they are not, reverse them. Then do it again with another two, and repeat them all until they are all sorted. This is called a bubble sort. This method will work, but it will take a very long time. +A better algorithm is: find the first card with the smallest suit and smallest number (2 of diamonds), and place it at the start. After this, look for the second card, and so on. This algorithm is much faster, and does not need much space. This algorithm is called a "selection sort". +Ada Lovelace wrote the first computer algorithm in 1843, for a computer that was never finished. Computers began during World War II. Computer science separated from the other sciences during the 1960s and 1970s. Now, computer science has its own methods, and has its own technical terms. It is related to electrical engineering, mathematics, and language science. +Computer science looks at the theoretical parts of computers. Computer engineering looks at the physical parts of computers (hardware). Software engineering looks at the use of computer programs and how to make them. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Computer.txt b/.github/workflows/data/simplewiki-100/Computer.txt new file mode 100644 index 000000000..1bdb838eb --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Computer.txt @@ -0,0 +1,54 @@ +A computer is a machine that uses electronics to input, process, store, and output data. Data is information such as numbers, words, and lists. Input of data means to read information from a keyboard, a storage device like a hard drive, or a sensor. The computer processes or changes the data by following the instructions in software programs. A computer program is a list of instructions the computer has to perform. Programs usually perform mathematical calculations, modify data, or move it around. The data is then saved on a storage device, shown on a display, or sent to another computer. Computers can be connected together to form a network such as the internet, allowing the computers to communicate with each other. +The processor of a computer is made from integrated circuits (chips) that contains many transistors. Most computers are digital, which means that they represent information using binary digits, or bits. Computers come in different shapes and sizes, depending on the brand, model, and purpose. They range from small computers, such as smartphones and laptops, to large computers, such as supercomputers. +Characteristics. +The two things that define a computer are that it responds to a specific instruction set in a well-defined manner, and that it can execute a stored list of instructions called a program. There are four main actions in a computer: inputting, storing, outputting and processing. +Modern computers can do billions of calculations in a second. Being able to calculate many times per second allows modern computers to multi-task, which means they can do many different tasks at the same time. Computers do many different jobs where automation is useful. Some examples are controlling traffic lights, vehicles, security systems, washing machines and digital televisions. +Computers can be designed to do almost anything with information. Computers are used to control large and small machines that, in the past, were controlled by humans. Most people have a personal computer at home or at work. They are used for things such as calculation, listening to music, reading, writing, or playing games. +Hardware. +Modern computers are electronic computer hardware. They do mathematical arithmetic very quickly, but computers do not really "think." They only follow the instructions in their software programs. The software uses the hardware when the user gives it instructions and produces useful outputs. +Controls. +Computers are controlled with user interfaces. Input devices which include keyboards, computer mice, buttons, and touch screens, etc.computer are electronic computer hardware +Programs. +Computer programs are designed or written by computer programmers. A few programmers write programs in the computer's own language, called machine code. Most programs are written using a programming language like C, C++, JavaScript. These programming languages are more like the language with which one talks and writes every day. The compiler converts the user's instructions into binary code (machine code) that the computer will understand and do what is needed. +History of computers. +First computer. +In 1837, Charles Babbage proposed the first general mechanical computer, the Analytical Engine. The Analytical Engine contained an Arithmetic Logic Unit, basic flow control, punched cards, and integrated memory. It is the first general-purpose computer concept that could be used for many things and not only one particular program. However, this computer was never built while Charles Babbage was alive, because he didn't have enough money. In 1910, Henry Babbage, Charles Babbage's youngest son, was able to finish a part of this machine and do basic calculations. +Before the computer era there were machines that could do the same thing over and over again, like a music box. But some people wanted to be able to tell their machine to do different things. For example, they wanted to tell the music box to play different music every time. This part of computer history is called the "history of programmable machines", which in simple words means "the history of machines that I can order to do different things if I know how to speak their language." +One of the first examples of programmable machines was built by Hero of Alexandria (c. 10–70 AD). He built a mechanical theater which performed a play lasting 10 minutes and was operated by a complex system of ropes and drums. These ropes and drums were the language of the machine- they told what the machine did and when. Some people argue that this is the first programmable machine. +Some people disagree on which early computer is programmable. Many say the "castle clock", an astronomical clock invented by Al-Jazari in 1206, is the first known programmable analog computer. The length of day and night could be adjusted every day in order to account for the changing lengths of day and night throughout the year. Some count this daily adjustment as computer programming. +Others say the first computer was made by Charles Babbage. Ada Lovelace is considered to be the first programmer. +The computing era. +At the end of the Middle Ages, people started thinking math and engineering were more important. In 1623, Wilhelm Schickard made a mechanical calculator. Other Europeans made more calculators after him. They were not modern computers because they could only add, subtract, and multiply- you could not change what they did to make them do something like play Tetris. Because of this, we say they were not programmable. Now engineers use computers to design and plan. +In 1801, Joseph Marie Jacquard used punched paper cards to tell his textile loom what kind of pattern to weave. He could use punch cards to tell the loom what to do, and he could change the punch cards, which means he could program the loom to weave the pattern he wanted. This means the loom was programmable. At the end of the 1800s Herman Hollerith invented the recording of data on a medium that could then be read by a machine, developing punched card data processing technology for the 1890 U.S. census. His tabulating machines read and summarized data stored on punched cards and they began use for government and commercial data processing. +Charles Babbage wanted to make a similar machine that could calculate. He called it "The Analytical Engine". Because Babbage did not have enough money and always changed his design when he had a better idea, he never built his Analytical Engine. +As time went on, computers were used more. People get bored easily doing the same thing over and over. Imagine spending your life writing things down on index cards, storing them, and then having to go find them again. The U.S. Census Bureau in 1890 had hundreds of people doing just that. It was expensive, and reports took a long time. Then an engineer worked out how to make machines do a lot of the work. Herman Hollerith invented a tabulating machine that would automatically add up information that the Census bureau collected. The Computing Tabulating Recording Corporation (which later became IBM) made his machines. They leased the machines instead of selling them. Makers of machines had long helped their users understand and repair them, and CTR's tech support was especially good. +Because of machines like this, new ways of talking to these machines were invented, and new types of machines were invented, and eventually the computer as we know it was born. +Analog and digital computers. +In the first half of the 20th century, scientists started using computers, mostly because scientists had a lot of math to figure out and wanted to spend more of their time thinking about science questions instead of spending hours adding numbers together. For example, if they had to launch a rocket ship, they needed to do a lot of math to make sure the rocket worked right. So they put together computers. These analog computers used analog circuits, which made them very hard to program. In the 1930s, they invented digital computers, and soon made them easier to program. However this is not the case as many consecutive attempts have been made to bring arithmetic logic to l3.Analog computers are mechanical or electronic devices which solve problems.Some are used to control machines as well. +High-scale computers. +Scientists figured out how to make and use digital computers in the 1930s to 1940s. Scientists made a lot of digital computers, and as they did, they figured out how to ask them the right sorts of questions to get the most out of them. Here are a few of the computers they built: +Several developers of ENIAC saw its problems. They invented a way to for a computer to remember what they had told it, and a way to change what it remembered. This is known as "stored program architecture" or von Neumann architecture. John von Neumann talked about this design in the paper "First Draft of a Report on the EDVAC", distributed in 1945. A number of projects to develop computers based on the stored-program architecture started around this time. The first of these was completed in Great Britain. The first to be demonstrated working was the Manchester Small-Scale Experimental Machine (SSEM or "Baby"), while the EDSAC, completed a year after SSEM, was the first really useful computer that used the stored program design. Shortly afterwards, the machine originally described by von Neumann's paper—EDVAC—was completed but was not ready for two years. +Nearly all modern computers use the stored-program architecture. It has become the main concept which defines a modern computer. The technologies used to build computers have changed since the 1940s, but many current computers still use the von-Neumann architecture. +In the 1950s computers were built out of mostly vacuum tubes. Transistors replaced vacuum tubes in the 1960s because they were smaller and cheaper. They also need less power and do not break down as much as vacuum tubes. In the 1970s, technologies were based on integrated circuits. Microprocessors, such as the Intel 4004 made computers smaller, cheaper, faster and more reliable. By the 1980s, microcontrollers became small and cheap enough to replace mechanical controls in things like washing machines. The 1980s also saw home computers and personal computers. With the evolution of the Internet, personal computers are becoming as common as the television and the telephone in the household. +In 2005 Nokia started to call some of its mobile phones (the N-series) "multimedia computers" and after the launch of the Apple iPhone in 2007, many are now starting to add the smartphone category among "real" computers. In 2008, if smartphones are included in the numbers of computers in the world, the biggest computer maker by units sold, was no longer Hewlett-Packard, but rather Nokia. +Kinds of computers. +There are many types of computers. Some include: +<templatestyles src="Div col/styles.css"/> +A "desktop computer" is a small machine that has a screen (which is not part of the computer). Most people keep them on top of a desk, which is why they are called "desktop computers." "Laptop computers" are computers small enough to fit on your lap. This makes them easy to carry around. Both laptops and desktops are called personal computers, because one person at a time uses them for things like playing music, surfing the web, or playing video games. +There are larger computers that can be used by multiple people at the same time. These are called "mainframes," and these computers do all the things that make things like the internet work. You can think of a personal computer like this: the personal computer is like your skin: you can see it, other people can see it, and through your skin you feel wind, water, air, and the rest of the world. A mainframe is more like your internal organs: you never see them, and you barely even think about them, but if they suddenly went missing, you would have some very big problems. +An embedded computer, also called an embedded system is a computer that does one thing and one thing only, and usually does it very well. For example, an alarm clock is an embedded computer. It tells the time. Unlike your personal computer, you cannot use your clock to play Tetris. Because of this, we say that embedded computers cannot be programmed because you cannot install more programs on your clock. Some mobile phones, automatic teller machines, microwave ovens, CD players and cars are operated by embedded computers. +All-in-one PC. +All-in-one computers are desktop computers that have all of the computer's inner mechanisms in the same case as the monitor. Apple has made several popular examples of all-in-one computers, such as the original Macintosh of the mid-1980s and the iMac of the late 1990s and 2000s. +Working methods. +Computers store data and the instructions as numbers, because computers can do things with numbers very quickly. These data are stored as binary symbols (1s and 0s). A 1 or a 0 symbol stored by a computer is called a bit, which comes from the words binary digit. Computers can use many bits together to represent instructions and the data that these instructions use. A list of instructions is called a program and is stored on the computer's hard disk. Computers work through the program by using a central processing unit, and they use fast memory called RAM (also known as Random Access Memory) as a space to store the instructions and data while they are doing this. When the computer wants to store the results of the program for later, it uses the hard disk because things stored on a hard disk can still be remembered after the computer is turned off. +An operating system tells the computer how to understand what jobs it has to do, how to do these jobs, and how to tell people the results. Millions of computers may be using the same operating system, while each computer can have its own application programs to do what its user needs. Using the same operating systems makes it easy to learn how to use computers for new things. A user who needs to use a computer for something different, can learn how to use a new application program. Some operating systems can have simple command lines or a fully user-friendly GUI. +The Internet. +One of the most important jobs that computers do for people is helping with communication. Communication is how people share information. Computers have helped people move forward in science, medicine, business, and learning, because they let experts from anywhere in the world work with each other and share information. They also let other people communicate with each other, do their jobs almost anywhere, learn about almost anything, or share their opinions with each other. The Internet is the thing that lets people communicate between their computers. The Internet also allows the computer user to play an Online game. +Computers and waste. +A computer is now almost always an electronic device. It usually contains materials that will become electronic waste when discarded. When a new computer is bought in some places, laws require that the cost of its waste management must also be paid for. This is called product stewardship. +Computers can become obsolete quickly, depending on what programs the user runs. Very often, they are thrown away within two or three years, because some newer programs require a more powerful computer. This makes the problem worse, so computer recycling happens a lot. Many projects try to send working computers to developing nations so they can be re-used and will not become waste as quickly, as most people do not need to run new programs. Some computer parts, such as hard drives, can break easily. When these parts end up in the landfill, they can put poisonous chemicals like lead into the ground-water. Hard drives can also contain secret information like credit card numbers. If the hard drive is not erased before being thrown away, an identity thief can get the information from the hard drive, even if the drive doesn't work, and use it, for example, to steal money from the previous owner's bank account. +Main hardware. +Computers come in different forms, but most of them have a common design. +A computer has several main parts. When comparing a computer to a human body, the CPU is like a brain. It does most of the thinking and tells the rest of the computer how to work. The CPU is on the Motherboard, which is like the skeleton. It provides the basis for where the other parts go, and carries the nerves that connect them to each other and the CPU. The motherboard is connected to a power supply, which provides electricity to the entire computer. The various drives (CD drive, floppy drive, and on many newer computers, USB flash drive) act like eyes, ears, and fingers, and allow the computer to read different types of storage, in the same way that a human can read different types of books. The hard drive is like a human's memory, and keeps track of all the data stored on the computer. Most computers have a sound card or another method of making sound, which is like vocal cords, or a voice box. Connected to the sound card are speakers, which are like a mouth, and are where the sound comes out. Computers might also have a graphics card, which helps the computer to create visual effects, such as 3D environments, or more realistic colors, and more powerful graphics cards can make more realistic or more advanced images, in the same way a well trained artist can. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Conceptual metaphor.txt b/.github/workflows/data/simplewiki-100/Conceptual metaphor.txt new file mode 100644 index 000000000..588ed10e1 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Conceptual metaphor.txt @@ -0,0 +1,8 @@ +A conceptual metaphor or cognitive metaphor is a metaphor which refers to one domain (group of ideas) in terms of another. For example, treating quantity in terms of direction: +The idea of a conceptual metaphor came from a book by George Lakoff and Mark Johnson in 1980: "Metaphors we live by". +"The most recent linguistic approach to literature is that of cognitive metaphor, which claims that metaphor is not a mode of language, but a mode of thought". Donald Freeman. +A convention is to write conceptual metaphors in small capital letters, e.g. time is money, with the target domain (idea being referred to) first, here "money," and the source domain (terms used to refer to it) second. +Political metaphors. +There are many more, enough to prove the importance of the metaphor in our lives. +Notes. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Contact network.txt b/.github/workflows/data/simplewiki-100/Contact network.txt new file mode 100644 index 000000000..0ec01f485 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Contact network.txt @@ -0,0 +1,2 @@ +Contact network may mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Continent.txt b/.github/workflows/data/simplewiki-100/Continent.txt new file mode 100644 index 000000000..16c846dac --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Continent.txt @@ -0,0 +1,24 @@ +A continent is a large area of the land on Earth that is joined. There are no strict rules for what land is considered a continent, but in general the Earth is known to have seven continents; these being, Africa, Antarctica, Asia, Europe, North America, South America and Oceania (or Australia). +Statistics. +<templatestyles src="Reflist/styles.css" /> +The most populous continent by population is Asia, followed by Africa. The third most populous continent is Europe. The fourth most populous is North America, and then South America. In sub-Saharan Africa, the largest age group are denarians (in their teens). In north Africa, the largest age group are vicenarian (in their twenties). In Europe, most people are tricenarian (in their thirties) or quadragenarian (in their forties). +Continents. +Geologists use the term "continent" to mean continental crust, a platform of metamorphic and igneous rock, largely of granitic composition. Continental crust is less dense and much thicker than oceanic crust, which is why it "floats" higher than oceanic crust on the underlying mantle. This explains why the continents form high platforms surrounded by deep ocean basins. +Australia. +Some sources say that Australia is one of the seven continents. Others say that Australia is part of a larger continent, such as Australasia, or Oceania. Oceania is a region which includes Australia, New Zealand and the Pacific Islands. Australasia includes at least all countries on the Australian continental plate. This includes the islands of New Guinea, Tasmania, New Zealand and a number of smaller islands. It is on the south-eastern side of the Wallace Line, with distinct differences in its biology from the Asian side of the line. +"It includes all the islands of the Malay Archipelago... as well as the various groups of islands in the Pacific. The term has been used in very different senses". +Zealandia. +Zealandia is an almost entirely submerged land mass, and 93% of it still remains under water. Zealandia may have broken off the Australian plate between 85 and 130 million years ago. +North and South America. +North America and South America together are often described as one continent, "the Americas", or simply "America". This has the advantage of including Central America and the Caribbean islands. Otherwise, Central America is counted as part of North America. +Eurasia. +Eurasia is not really an alternative, rather it is a recognition that the landmasses of Europe and Asia are continuous, and some of its largest countries are in both regions. Russia extends from eastern Europe to the far east of Asia without a break. The Ural Mountains, which run roughly north–south, are the traditional dividing-line between Europe and Asia. For many purposes it is convenient to consider the great landmass as a single continent, Eurasia. +When British people talk about "the Continent" (or "Continental" things) they mean the European mainland. This meaning is not used as much as it used to be, but is still seen in phrases like "Continental breakfast" (rolls with cheese, jam etc. as distinct from an "English breakfast" which is a cooked breakfast). +Continents not only move but also sometimes move against each other. The Indian subcontinent has been colliding with the Eurasian continent for a while now. As these continents push against each other, they buckle and bend. Because of this, the Himalaya Mountains, with Mount Everest, are still being built up today. +Antarctica. +Antarctica is Earth's fifth largest continent. Antarctica, the coldest place on Earth, covers Earth's South Pole. It has a surface area of ~13.6 –14 million km2: this is about 1.4 times the size of Europe, The continent only has two seasons, a brief summer and a long winter. Antarctica is a cold desert. It does not rain or snow much there. Ever since its discovery in 1812, Antarctica was a great challenge for explorers. Despite being nearly completely covered by a thick layer of ice, Antarctica has a range of aquatic and terrestrial environments. +Origin of continents. +A craton is an old and stable part of the continental lithosphere. It is the Earth's two topmost layers, the crust and the uppermost mantle. +There are various hypotheses of how cratons have been formed.. Continents may have been formed by giant meteorite impacts in the first billion years of Earth's existence. The question is not yet settled. What is clear is that the cratons are very old, and are the basis for the continents we see today. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Cooking.txt b/.github/workflows/data/simplewiki-100/Cooking.txt new file mode 100644 index 000000000..73247a957 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Cooking.txt @@ -0,0 +1,9 @@ +Cooking is a process to make food ready to eat by heating it. +Methods. +Cooking is often done in a kitchen using a stove or an oven. It can also be done over a fire (for example, over a campfire or on a barbecue). +The heat for cooking can be made in different ways. It can be from an open fire that burns wood or charcoal. It can be on a stove or in an oven that uses propane, natural gas, or electricity. +There are several different ways to cook food. Boiling cooks food in hot water. Frying (deep or shallow) cooks food in hot butter, fat or oil. Baking and roasting cook food by surrounding it with hot air. Grilling means cooking food on a metal grill that has heat under it. +People often cook meat by boiling, roasting, frying, or grilling it. Some foods such as bread or pastries are usually baked. +Usually food is cooked in some kind of pot or pan. Sometimes people cook food by putting it directly into the fire, or by wrapping the food in leaves before they put it into the fire. +Cooks. +A person whose job it is to cook food may be called a "cook" or a "chef". The word "cooker" means a machine or tool that a cook might use to cook food. Rice cookers and pressure cookers are examples. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Cosmology.txt b/.github/workflows/data/simplewiki-100/Cosmology.txt new file mode 100644 index 000000000..b682ee64c --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Cosmology.txt @@ -0,0 +1,12 @@ +Cosmology is the branch of astronomy that deals with the universe. +NASA defines cosmology as "The study of the structure and changes in the present universe". Another definition of cosmology is "the study of the universe, and humanity's place in it". +Modern cosmology is dominated by the Big Bang theory, which brings together observational astronomy and particle physics. +Though the word "cosmology" is recent (first used in 1730 in Christian Wolff's "Cosmologia Generalis"), the study of the universe has a long history. +History. +Until the Renaissance people thought the universe was only the planets up to Saturn, and stars. With the invention of the telescope, we could see more of the universe. Early in the 20th century, astronomers thought the Milky Way was the entire universe. Later, with astrophotography and spectroscopy, astronomers (for example Edwin Hubble) showed that the Milky Way was only one of many galaxies. +Modern cosmology is considered to have started in 1917 with the final paper of Albert Einstein's theory of general relativity. This made physicists realize that the universe changed. When a scientific discipline begins to change an idea that is believed by many people, it is known as a paradigm shift. Many scientists debated if there were other galaxies. The debate ended when Edwin Hubble found Cepheid Variables in the Andromeda Galaxy in 1926. +The Big Bang model was then proposed by Belgian priest, Georges Lemaître in 1927. This was supported by Edwin Hubble's discovery of the redshift in 1929. Later the discovery of cosmic microwave background radiation was made. This was found by Arno Penzias and Robert Woodrow Wilson in 1964. +All of these discoveries have been supported in the 21st century. Some more observations of the cosmic microwave background radiation were found by the COBE, WMAP, and Planck satellites. Some more observations of the redshift were found by the 2dfGRS and SDSS. An astronomical survey looks at a place in space. A redshift survey is a survey that looks for redshifts. +On 1 December 2014, at the "Planck 2014" meeting in Ferrara, Italy, astronomers reported that the universe is 13.8 billion years old and is composed of 4.9% regular matter, 26.6% dark matter and 68.5% dark energy. +According to Dr Robert Massey, deputy director of the Royal Astronomical Society, the evidence for a rethink of what has been a central plank of astronomy is growing. +"This is the seventh large structure discovered in the universe that contradicts the idea that the cosmos is smooth on the largest scales. If these structures are real, then it's definitely food for thought for cosmologists and the accepted thinking on how the universe has evolved over time," he said. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Countries.txt b/.github/workflows/data/simplewiki-100/Countries.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-100/Country.txt b/.github/workflows/data/simplewiki-100/Country.txt new file mode 100644 index 000000000..69d65f9f2 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Country.txt @@ -0,0 +1,19 @@ +A country is a distinct territory with defined borders, boundaries, people and government. Most countries are sovereign states while others make up one part of a larger state. The people that live in a country are referred to as a nation. The government that runs the country is called the state. Australia, New Zealand, United Kingdom, United States, Canada and other countries. +Number of countries. +There is no universally accepted answer as to how many countries in the world there actually are, however the minimum answer is 195, though there are 193 United Nations members. +This can be developed on even further by adding the constituent countries of the United Kingdom, The Kingdom of the Netherlands and the Kingdom of Denmark which could add anywhere from three to eleven more countries. +There are multiple organisations that have their own lists of countries, one example being the Travellers Century Club which recognises 330 countries as of January 2022. +Disputed countries. +Palestine is classified as a country. However, there is an ongoing dispute over Palestine’s independence with Israel. +There are a number of disputed areas that have declared independence from their parent state and receive limited recognition. For example,  Kosovo,  Transnistria,  Abkhazia,  South Ossetia,  Northern Cyprus,  Chechnya,  Tibet and  Somaliland. These are just some of the many examples of territories with limited to no recognition that are sometimes classed as countries. +There is a lot of controversy surrounding the above examples and quite often any of these territories may be counted as countries purely based on opinion. If all of the above were added the list of U.N members there could be anything up to 211 countries. +There are, however, many more territories with unique political circumstances that could also be counted. +Depending on how loosely the dictionary definition for the word country is used there could be many more than 193 countries in the world. The matter is purely subjective depending on varying opinions. +Constituent country. +Constituent country is a term sometimes used, usually by official institutions, in contexts in which a number of countries are part of a sovereign state. The Organisation for Economic Co-operation and Development (OECD) has used the term referring to the former Yugoslavia, and the European institutions like the Council of Europe often use it in reference to the European Union. +Territorial dispute. +A disputed territory is that territory whose sovereignty is jealously desired by two or more countries. Usually the administration of the territory is carried out by one of the countries that claims sovereignty, while the other country does not recognize the sovereignty over the territory of the other country. This does not usually happen in land or sea areas on which none possesses effective control, such as Antarctica, or only partially +Nation-state. +A nation-state is a sovereign country in which the majority of citizens are somewhat homogeneous in terms of culture,religion,language, ethnicity, etc. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Creativity.txt b/.github/workflows/data/simplewiki-100/Creativity.txt new file mode 100644 index 000000000..2c9e7f5f7 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Creativity.txt @@ -0,0 +1,5 @@ +Creativity is the ability of a person or group to make something new and useful or valuable, or the process of making something new and useful or valuable. It happens in all areas of life - science, art, literature and music. +As a personal ability it is difficult to measure. The reason is that we don't understand the mental processes that help some people be more creative than others. Judging who and what is creative is also controversial. Some people say only things that are historically new are creative, while other people say that if it is new for the creator and the people around them, then it is also creativity. +Some think that creativity is an important thing that makes humans different from apes. Others recognize that even apes, other primates, other mammals, and some birds adapt to survive by being creative (for example - primates using tools). Liane Gabora believes that all culture comes from creativity, not imitation. Therefore, these people say, human science should focus on it (pay special attention to it): Ethics for example would focus on finding creative solutions to ethical dilemmas. Politics would focus on the political virtues that need some creativity. Imitation would not be the focus of education. Linguistics might be more interested in how new words are created by culture, rather than in how existing ones are used in grammar. +Intellectual interests (recognized as intellectual rights or intellectual property in the law) are a way to reward creativity in law, but they do not always work very well. A good example is copyright which is supposed to pay writers and artists, but may only pay lawyers to make (imitative) arguments in court. +Creativity is a central question in economics, where it is known as ingenuity (the ability to come up with new ideas) or individual capital - capacities that individuals have, that do not arise from simple imitation of what is known already. This is separate from the instructional capital that might try to capture some of that in a patent or training system that helps others do what the individual leader or founder of the system can do. In urban economics there are various ways to measure creativity - the Bohemian Index and Gay Index are two attempts to do this accurately and predict the economic growth of cities based on creativity. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Creator.txt b/.github/workflows/data/simplewiki-100/Creator.txt new file mode 100644 index 000000000..b7d44ec0f --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Creator.txt @@ -0,0 +1,3 @@ +A creator is a person who creates something. +In some religions (Judaism, Christianity, Islam) God (or Allah meaning the God in Arabic) is the most important and original creator of the whole universe - including Man who is made "in his image" (see Genesis) to observe it and control it like God. The idea that anything that a person is creating, like an idea, can be owned as property comes from the ethical traditions and legal codes that came from these religions. +In other traditions (Buddhism, Native American mythology) anyone has this potential for creating, and can become part of the greater creating of the universe. Stewardship of home, land and all of Earth is a test for participating in this, or just good sense. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Crime.txt b/.github/workflows/data/simplewiki-100/Crime.txt new file mode 100644 index 000000000..b5c0da658 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Crime.txt @@ -0,0 +1,22 @@ +A crime (or misdemeanor or felony) is an act done by a person which is against the laws of a country or region. A person who does this is called a criminal. +The basic idea of what things are called "crimes" is that they are thought to be things that might cause a problem for another person. Things like killing another person, injuring another person, or stealing from another person are crimes in most countries. Also, it can be a crime to have or sell contraband such as guns or illegal drugs. The latter two often fall under the category of victimless crime +When some criminals make money from crime, they try to stop the police finding out where the money came from by money laundering. Men and boys commit many more crimes than women and girls. +Etymology. +The word "crime" is derived from the Latin root "cernō", meaning "I decide, I give judgment". Originally the Latin word "crīmen" meant "charge" or "cry of distress." The Ancient Greek word κρίμα, "krima", from which the Latin cognate derives, typically referred to an intellectual mistake or an offense against the community, rather than a private or moral wrong. +In 13th century English "crime" meant "sinfulness", according to the Online Etymology Dictionary. It was probably brought to England as Old French "crimne" (12th century form of Modern French "crime"), from Latin "crimen" (in the genitive case: "criminis"). In Latin, "crimen" could have signified any one of the following: "charge, indictment, accusation; crime, fault, offense". +Definition. +England and Wales. +Whether a given act or omission constitutes a crime does not depend on the nature of that act or omission; it depends on the nature of the legal consequences that may follow it. An act or omission is a crime if it is capable of being followed by what are called criminal proceedings. +Scotland. +For the purpose of section 243 of the Trade Union and Labour Relations (Consolidation) Act 1992, a crime means an offence punishable on indictment, or an offence punishable on summary conviction, and for the commission of which the offender is liable under the statute making the offence punishable to be imprisoned either absolutely or at the discretion of the court as an alternative for some other punishment. +Sociology. +A normative definition views crime as deviant behavior that violates prevailing norms – cultural standards prescribing how humans ought to behave normally. +Levels of crime. +There are various levels of crimes. In some jurisdictions they are: +Different countries have different ideas of what things are crimes, and which ones are the worst. Some things that are crimes in one country are not crimes in other countries. Many countries get their ideas of what things are crimes from religions or controversial events which cause a law to be quickly created. For example, a religious Taboo might say eating a particular food is a crime. When automobiles became numerous, they killed or hurt many people in road accidents, so new laws were made for them. +In many countries, if people say they made or wrote a book, movie, song, or Web page that they did not really make or write, it is a crime against copyright laws. In many countries, helping to grow, make, move, or sell illegal drugs is a crime. +In most countries, police try to stop crimes and to find criminals. When the police find someone who they think might be a criminal, they usually hold the person in a jail. Then, usually, a court or a judge decides if the person really did a crime. If the court or judge decides that the person really did it, then he or she might have to pay a fine or go to prison. Sometimes the judge might decide that the criminal should be executed (killed). This is called Capital punishment (or the "Death Penalty"). There are countries in the world that execute criminals, and others that do not. +In many countries, two conditions must exist for an act to be thought of as a crime: +Both must be present for the act to be thought of as a crime. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Crust.txt b/.github/workflows/data/simplewiki-100/Crust.txt new file mode 100644 index 000000000..00a3b9f90 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Crust.txt @@ -0,0 +1,3 @@ +Crust is a piece of bread where the edge where it is harder and darker. +Crust can also mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Cup.txt b/.github/workflows/data/simplewiki-100/Cup.txt new file mode 100644 index 000000000..58c3a1fed --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Cup.txt @@ -0,0 +1,3 @@ +A cup is any kind of container used for holding liquid and drinking. These include: +Cup may also mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Farming.txt b/.github/workflows/data/simplewiki-100/Farming.txt new file mode 100644 index 000000000..0eed17061 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Farming.txt @@ -0,0 +1,28 @@ +Farming is growing crops and keeping animals for food and raw materials. Farming is a Significant part of agriculture. +History. +Farming started thousands of years ago, but no one knows for sure how old it is. The development of farming gave rise to the Neolithic Revolution as people gave up nomadic hunting and became settlers in cities. +Farming and domestication probably started in the Fertile Crescent (the Nile Valley, the Levant and Mesopotamia). The area called Fertile Crescent is now in the countries of Iraq, Syria, Turkey, Jordan, Lebanon, Israel, and Egypt. Wheat and barley are some of the first crops people grew. +Cotton was domesticated in Peru by 4200 BC. +Livestock including horses, cattle, sheep, and goats were taken to the Americas, from the Old World. The first of those horses, came with the Spanish conquistadors (or soldiers and explorers) in the 1490s. Moving those cattle, sheep, goats and horses, were part of the Columbian Exchange. +People probably started agriculture by planting a few crops, but still gathered many foods from the wild. People may have started farming because the weather and soil began to change. Farming can feed many more people than hunter-gatherers can feed on the same amount of land. +This allowed the human population to grow to such large numbers as there are today. +Types. +Many people still live by subsistence farming, on a small farm. They can only grow enough food to feed the farmer, his family, and his animals. The yield is the amount of food grown on a given amount of land, and it is often low. This is because subsistence farmers are generally less educated, and they have less money to buy equipment. Drought and other problems sometimes cause famines. Where yields are low, deforestation can provide new land to grow more food. This provides more nutrition for the farmer's family, but can be bad for the country and the surrounding environment over many years. +In some countries, farms are often fewer and larger. During the 20th century they have become more productive because farmers are able to grow better varieties of plants, use more fertilizer, use more water, and more easily control weeds and pests. Many farms also use machines, so fewer people can farm more land. There are fewer farmers in rich countries, but the farmers are able to grow more. +This kind of intensive agriculture comes with its own set of problems. Farmers use a lot of chemical fertilizers, pesticides (chemicals that kill bugs), and herbicides (chemicals that kill weeds). These chemicals can pollute the soil or the water. They can also create bugs and weeds that are more resistant to the chemicals, causing outbreaks of these pests. The soil can be damaged by erosion (blowing or washing away), salt builddup, or loss of structure. Irrigation (adding water from rivers) can pollute water and lower the water table. These problems have all got solutions, and modern young farmers usually have a good technical education. +Farmers select plants with better yield, taste, and nutritional value. They also choose plants that can survive plant disease and drought, and are easier to harvest. Centuries of artificial selection and breeding have changed crop plants. The crops produce better yield. Fertilizers, chemical pest control, and irrigation all help. +Some plants are improved with genetic engineering. One example is modifying the plant to resist herbicides. +Livestock. +Farms may also keep animals. That is called animal husbandry. If they are used to make meat for people to eat, that is livestock production. Non-meat animals, such as milk cows and egg-producing chickens, are kept for their produce. "Produce" here means their eggs and milk, which are sold by the farm, usually in markets. Large animals need grassland of some kind for grazing. What they need depends on the animals. Goats eat a much wider range of plants than cows. In some parts of the world, that makes goats a more sensible choice for a farmer than cows. +Food. +It is important for there to be enough food for everyone. The food must also be safe and good. People say it is not always safe, because it contains some chemicals. Other people say intensive agriculture is damaging the environment. For this reason, there are several types of agriculture. +Agricultural policy means the goals and methods of agricultural production. Common goals of policy include the quality, amount, and safety of food. +Problems. +There are some serious problems that people face trying to grow food today. +These include: +There are also difficulties with the distribution of food: +Crops. +In produced weight, these crops are the most important (global production in metric tonnes): +The figure for sugarcane is rather deceptive. It omits sugar beet, but includes the weight of the woody stalk. Most of the plants which produce food are in the grass family Poaceae. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Maize.txt b/.github/workflows/data/simplewiki-100/Maize.txt new file mode 100644 index 000000000..791bd9341 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Maize.txt @@ -0,0 +1,8 @@ +Maize or Indian corn (called corn in some countries) is "Zea mays", a member of the grass family "Poaceae". It is a cereal grain which was first grown by people in ancient Central America. Approximately 1 billion tonnes are harvested every year. However, little of this maize is eaten directly by humans. Most is used to make corn ethanol, animal feed and other maize products, such as corn starch and corn syrup. +Maize is a leafy stalk whose kernels have seeds inside. It is an angiosperm, which means that its seeds are enclosed inside a fruit or shell. It is has long been a staple food by many people in Mexico, Central and South America and parts of Africa. In Europe and the rest of North America, maize is grown mostly for use as animal feed. In Canada and the United States, maize is commonly referred to as "corn". +Centuries of cross breeding have produced larger plants, and specialized varieties. Corn has become an important ingredient in American foods through the use of corn starch. People have long eaten sweet corn and popcorn with little processing, and other kinds after processing into flour for making cornbread, tortillas, and other artificial foods. +Maize has been a fruitful model organism for research in genetics for many years: see Barbara McClintock. Research has shown that artificial selection developed maize from a Mexican plant called Teosinte. +The genus "Zea". +There are five species and many subspecies in the genus. They are all plants similar to the cultivated maize, with less developed cobs. The wild ones are sometimes called teosintes, and they are all native to Mesoamerica. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Native American.txt b/.github/workflows/data/simplewiki-100/Native American.txt new file mode 100644 index 000000000..a2fba51a1 --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Native American.txt @@ -0,0 +1,42 @@ +Native Americans (also called Aboriginal Americans, American Indians, Amerindians, or Indigenous peoples of the Americas) are the indigenous peoples and their descendants, who were in the Americas before Europeans arrived. +Name. +The people are sometimes called Indians, but that may be confusing, because it is the same word used for people from India. When Christopher Columbus explored the area, he did not know about the Americas. He was in the Caribbean but thought he was in the East Indies and so he called the people Indians. Today, some think that it is racism to use Indian for a Native American. +There are different Native American tribes, with many different languages. Some tribes were hunter-gatherers who moved from place to place. Others lived in one place and built cities and kingdoms. Many Native Americans died after the European settlers came to the Americas. One reason is that diseases came with the Europeans but were new to the Native Americans. There were also battles with the Europeans. Many native people were hurt, killed, or forced to leave their homes by settlers, who took their lands. +Origins. +The ancestors of Native Americans came to the Americas from Asia. Some of them may have come to the Americas 15,000 years ago, when Alaska was connected to Siberia by the Bering land bridge. +The earliest people in the Americas came from Siberia when there was an ice bridge across the Bering Strait. The cold but mainly grassy plain, called Beringia, was a land bridge that connected Siberia with Canada. It is believed that a few thousand people arrived in Beringia from eastern Siberia during the Last Glacial Maximum and that they moved into the Americas sometime after 16,500 years before the present (BP). That would have occurred as the American glaciers blocking the way southward melted but before the land bridge was covered by the sea about 11,000 years BP. +Before the European colonization of the Americas and Russian expansion to the Russian Far East, Beringia was inhabited by the Yupik peoples on both sides of the straits. The culture remains in the region today, with others. In 2012, the governments of Russia and the United States announced a plan to formally establish "a transboundary area of shared Beringian heritage." Among other things, the agreement would establish close ties between the Bering Land Bridge National Preserve and the Cape Krusenstern National Monument in the United States, and Beringia National Park in Russia. Native Americans were divided into many small nations that are called called First Nations in Canada and tribes in the United States. +Culture. +The Native American tribes have their own cultures, which can be grouped together by region. For example, the tribes living in Mesoamerica have similar cultures. +Food. +Native Americans ate various food depending on where they lived. Native Americans from Mesoamerica introduced vanilla, avocados and chocolate to the world. +Religion. +Before Europeans came, the Native Americans practiced many different religions. Each tribe had its own different beliefs. Many Native Americans now practice Christianity, a religion that was brought to the Americas by Europeans. Others, meanwhile, still practice their own religions. +Languages. +Native Americans speak over 1000 different languages. Some of these languages had writing systems before Europeans came. Many of these languages are endangered because more people speak European languages and do not not teach their children Native American languages. +Music. +Native Americans make musical instruments using the things around them. +Art. +Native Americans made many different kinds of art. +Today. +North America. +There are now more than three million Native Americans in Canada and the United States combined. About 51 million more Native Americans live in Latin America. Many Native Americans still speak native languages and have their own cultural practices, and others have adopted parts of Western culture. Many Native Americans still face problems with racism. +United States. +According to the 2010 United States Census, 0.9% of Americans say that they are Native American, 2.9 million people, and 0.8% of Americans say they are both Native American and something else. They are not evenly spread out through the United States. About a third of the people in Alaska are Native Alaskan. and about a sixth of the people in Oklahoma are Native American. +In the United States, most Native Americans live in cities. About 28% of Native Americans live on Indian reservations. Many Native Americans are poor, and 24% are extremely poor. The history of violence against Native Americans still persists in higher rates of violence against Native Americans than whites. +Mexico. +Many Mexicans are of Native American or mestizo ancestry. Mexico has the largest and most diverse Native American population in Latin America. +Canada. +In the 2016 census, more than 1.67 million people in Canada identified as Indigenous, making them 4.9 percent of Canada’s population. +Central America. +Guatemala. +About 40% of the people of Guatemala identify as Native American. Many indigenous groups in the country are descendants of the Maya. Many Native Americans in Guatemala are poor. Many of them have left the country to find better jobs elsewhere. +South America. +Bolivia. +Most people in Bolivia belong to indigenous groups. Many of them are Aymara and Quechua. +Peru. +Peru has a large indigenous population, around 80% of the country's population identifying as indigenous or mestizo. +Indigenous activism. +In the later half of the 20th century, many Native Americans protested the unfair treatment that they experienced from the societies in which they lived. Some Native Americans have become famous in politics. For example, an Aymara man. Evo Morales was elected as president of Bolivia in 2005. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Time Cube.txt b/.github/workflows/data/simplewiki-100/Time Cube.txt new file mode 100644 index 000000000..9cfdfcd6e --- /dev/null +++ b/.github/workflows/data/simplewiki-100/Time Cube.txt @@ -0,0 +1,6 @@ +Time Cube was a personal website created in 1997 by Otis Eugene Ray. On that website, Ray explained his theory of everything, known as "Time Cube". It described the planet Earth as having a cubic symmetry, and time as rotating four "corners". He also said that all of modern physics is wrong. Scientists reject these ideas, saying that they make no sense and cannot be tested. +The Time Cube website was written in an angry and hateful voice. On his site, Ray said that not believing in Time Cube would be "stupid and evil". Some of the comments were racist and discriminatory, especially against black people and Jews. There were also many comments against gay people. Many people found the site to be difficult to understand. +Ray spoke about Time Cube at the Massachusetts Institute of Technology in January 2002. At MIT, a professor tried to cancel the lecture before it took place. Ray believed this is proof of a conspiracy to keep information about Time Cube hidden. Ray also spoke about Time Cube at the Georgia Institute of Technology in April 2005. +Otis Eugene Ray died on March 18, 2015. He was 87 years old. The website went down in August 2015. It was last archived by the Wayback Machine on January 12, 2016. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/1 (number).txt b/.github/workflows/data/simplewiki-500/1 (number).txt new file mode 100644 index 000000000..44f692eee --- /dev/null +++ b/.github/workflows/data/simplewiki-500/1 (number).txt @@ -0,0 +1,8 @@ +One (1) is the first natural number, followed by two. The Roman numeral for one is I. +Mathematics. +In mathematics, the number one is the multiplicative identity. It is also the only number for which these special facts are true: +In mathematics, 0.999... is a repeating decimal that is equal to 1. Many proofs have been made to show this is correct. +Computer science. +One is important for computer science, because the binary numeral system uses only ones and zeroes to represent numbers. In machine code and many programming languages, one means "true" (or "yes") and zero means "false" (or "no"). +References. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/A.txt b/.github/workflows/data/simplewiki-500/A.txt new file mode 100644 index 000000000..dcc31563d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/A.txt @@ -0,0 +1,15 @@ +A is the first letter of the English alphabet. The small letter, a, is used as a lowercase vowel. +Overview. +When it is spoken, ā is said as a long a, a diphthong of ĕ and y. A is similar to Alpha of the Greek alphabet. That is not surprising, because it means the same sound. "Alpha and Omega" (the last letter of the Greek alphabet) means from beginning to the end. In musical notation, the letter A is the symbol of a note in the scale, below B and above G. +A is the letter that was used to represent a team in an old TV show, The A-Team. A capital a is written "A". Use a capital A at the start of a sentence if writing. A is also a musical note, sometimes referred to as "La". +Origin. +The letter 'A' was in the Phoenician alphabet's aleph. This symbol came from a simple picture of an ox head. +This Phoenician letter helped make the basic blocks of later types of the letter. The Greeks later modified this letter and used it as their letter alpha. The Greek alphabet was used by the Etruscans in northern Italy, and the Romans later modified the Etruscan alphabet for their own language. +Using the letter. +The letter A has six different sounds. It can sound like æ, in the International Phonetic Alphabet, such as the word "pad". Other sounds of this letter are in the words "father", which developed into another sound, such as in the word "ace". +Use in mathematics. +In algebra, the letter "A" along with other letters at the beginning of the alphabet is used to represent known quantities. +In geometry, capital A, B, C etc. are used to label line segments, lines, etc. Also, A is typically used as one of the letters to label an angle in a triangle. +Its letter shape is referred to abstractly in Sir William Vallance Douglas Hodge's 5th postulate, the basis for, as one of the Millennium Prize Problems, the Hodge Conjecture. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Abbreviation.txt b/.github/workflows/data/simplewiki-500/Abbreviation.txt new file mode 100644 index 000000000..f9cdff783 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Abbreviation.txt @@ -0,0 +1,4 @@ +An abbreviation is a shorter way to write a word or phrase. People use abbreviations for words that they write a lot. The English language occasionally uses the apostrophe mark ' to show that a word is written in a shorter way, but some abbreviations do not use this mark. More often, they use periods, especially the ones that come from the Latin language. Common Latin abbreviations include i.e. [id est] "that is", e.g. [exempli gratia] "for example", and et al. [et alia] "and others". +Some new abbreviations have been created by scientists, by workers in companies and governments, and by people using the Internet. +People often think words are abbreviations when in fact they are acronyms. +Here are examples of common acronyms: The word "radar" is an acronym for "Radio Detection and Ranging". The name of the large computer company IBM comes from the words "International Business Machines". The name of the part of the United States government that sends rockets into outer space is NASA, from the words "National Aeronautics and Space Administration". When people using the Internet think that something is very funny, they sometimes write "LOL" to mean "Laughing Out Loud". People sometimes write "ASAP" for "As Soon As Possible". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Abrahamic religions.txt b/.github/workflows/data/simplewiki-500/Abrahamic religions.txt new file mode 100644 index 000000000..f3c5d44ff --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Abrahamic religions.txt @@ -0,0 +1 @@ +The Abrahamic religions, are a group of religious communities of faith that claim descent from the religion of the ancient Israelites and the worship of the God of Abraham. The Abrahamic religions are monotheistic. The term derives from patriarch Abraham, a major biblical figure from The Hebrew Bible. The major Abrahamic religions are Christianity, Islam, Judaism and the Bahá'í Faith. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Acceleration.txt b/.github/workflows/data/simplewiki-500/Acceleration.txt new file mode 100644 index 000000000..2416f3995 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Acceleration.txt @@ -0,0 +1,26 @@ +Acceleration is a measure of how fast velocity changes. Acceleration is the change of velocity divided by the change of time. Acceleration is a vector, and therefore includes both a size and a direction. Acceleration is also a change in speed and direction, there is: +Speed (a scalar quantity) (uses no direction) +Velocity (a vector quantity) (uses a direction) +The measurement of how fast acceleration changes is called jerk. +Finding acceleration. +Acceleration is the rate of change of the velocity of an object. Acceleration formula_1 can be found by using: +formula_2 +where +formula_3 is the velocity at the start +formula_4 is the velocity at the end +formula_5 is the time at the start +formula_6 is the time at the end +Sometimes the change in velocity formula_7 is written as Δformula_8. Sometimes the change in time formula_9 is written as Δt. +In difficult situations, the acceleration can be calculated using mathematics: in calculus, acceleration is the derivative of the velocity (with respect to time), formula_10. +Units of measurement. +Acceleration has its own units of measurement. For example, if velocity is measured in meters per second, and if time is measured in seconds, then acceleration is measured in meters per second squared (m/s2). +Other words. +Acceleration can be positive or negative. When the acceleration is negative (but the velocity does not change direction), it is sometimes called deceleration. For example, when a car brakes it decelerates. Physicists usually only use the word "acceleration". +Newton's second law of motion. +Newton's laws of motion are rules for how things move. These rules are called "laws of motion". Isaac Newton is the scientist who first wrote down the main laws of motion. +According to Newton's Second Law of Motion, the force something needs to accelerate an object depends on the object's mass (the amount of "stuff" the object is made from or how "heavy" it is). +The formula of Newton's Second Law of Motion is formula_11, +where formula_12 is the acceleration, formula_13 is the force, and formula_14 the mass. +This formula is very well-known, and it is very important in physics. Newton's Second Law of Motion, in short "Newton's Second Law", is often one of the first things that physics students learn. +Deceleration. +Deceleration is negative or backwards acceleration. This means that something slows down instead of speeding up. For example, when a car brakes, it is decelerating. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Ad hominem.txt b/.github/workflows/data/simplewiki-500/Ad hominem.txt new file mode 100644 index 000000000..a51049419 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Ad hominem.txt @@ -0,0 +1,10 @@ +Ad hominem is a Latin word for a type of argument. It is a word often used in rhetoric. Rhetoric is the science of speaking well, and convincing other people of your ideas. +Translated to English, "ad hominem" means "against the person". In other words, when someone makes an ad hominem, they are attacking the person they are arguing against, instead of what they are saying. +The term comes from the Latin word "homo", which means human. "Hominem" is a gender neutral version of the word "homo". In ancient Rome it referred to all free men, or in other words, all free human beings. +Ad hominem can be a way to use reputation, rumors and hearsay to change the minds of other people listening. When a social network has already excluded or exiled one person, or applied a negative label to them, this can work more often. +It is most of the time considered to be a weak and poor argument. In courts and in diplomacy ad hominems are not appreciated. +Ad hominems are not wrong every time. For example, when people think that someone can't be trusted, things that they have said previously can be doubted. +What an ad hominem argument looks like. +In logic, a proof is something that starts with premises, and goes through a few logical arguments, to reach a conclusion. +Ad hominem example. +In this example it can be seen that the (completely unrelated) fact that person A is uneducated and poor is used to prove that abortion should not be illegal. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Addition.txt b/.github/workflows/data/simplewiki-500/Addition.txt new file mode 100644 index 000000000..983d43022 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Addition.txt @@ -0,0 +1,24 @@ +"Not to be confused with building extensions which are also called additions." +In mathematics, addition, represented by the symbol formula_1, is an operation which combines two mathematical objects together into another mathematical object of the same type, called the sum. Addition can occur with simple objects such as numbers, and more complex objects and concepts such as vectors and matrices. +Addition has several important properties. It is commutative, meaning that the order of the operands does not matter, and it is associative, meaning that when one adds more than two numbers, the order in which addition is performed does not matter (see "Summation"). Repeated addition of 1 is the same as counting. Addition of 0 does not change a number. Addition also obeys predictable rules concerning related operations such as subtraction and multiplication. +Arithmetic. +In arithmetic, addition is the operation where two or more numbers called "addends" are used to make a new number, which is the "sum" or total that is expressed with the equals sign. The symbol for addition, in infix notation, is the plus sign "+" placed between the operands. +Counting examples. +For example, there are objects in two groups (as shown on the right). The objects are various shapes, where one group has 3 of them while the other has 2. When the two groups combine into one, the overall amount (sum) of the shapes become 5. +Vertical Addition. +The animation above demonstrates the addition of seven hundred eighty six and four hundred sixty seven. The problem's digits have been separated into units, tens and hundreds (see Place value). +First, the units 6 and 7 are added together to make 13, so 1 ten and 3 units, with the 3 written below and the 1 ten carried to the tens column. Next, in the tens column, the 1, 8, and 6 are added together to make 15 tens, so 1 hundred and 5 tens, with the 5 written below and the 1 hundred carried to the hundreds column. Finally, in the hundreds column, 1, 7, and 4 are added together to make 12 hundreds, so 1 thousand and 2 hundreds, with the 2 written below and the 1 thousand carried to the thousand column. The final answer is thus one thousand two hundred fifty three. +A measurement example. +Tom wants to know the distance between his house and Sally's house. Bob's house is 300 m east of Tom's house. Sally's house is 120 m east of Bob's house: +Tom's house formula_2 300 m formula_3 Bob's house formula_2 120 m formula_3 Sally's house +The distance from Tom's house to Sally's house can be found by adding the distances already measured. The distance from Tom's house to Bob's house, added to the distance from Bob's house to Sally's house, is the same as the distance from Tom's house to Sally's house. That is, 300 m plus 120 m. +formula_6 +Hence Sally's house is 420 m to the east of Tom's house. +Properties. +Commutativity. +Addition is commutative, meaning that one can change the order of the numbers in a sum, but still get the same result. For example: +formula_7 and formula_8 +Associativity. +Addition is also associative, which means that when three or more numbers are added together, the order of operations does not change the result. +For any three numbers formula_9, formula_10, and formula_11, it is true that formula_12. For example, formula_13 and formula_14, which means that formula_15. +When addition is used together with other operations, the order of operations becomes important. In the standard order of operations, addition is to be computed later than exponentiation, roots, multiplication and division, but has equal importance as subtraction. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Adobe Illustrator.txt b/.github/workflows/data/simplewiki-500/Adobe Illustrator.txt new file mode 100644 index 000000000..974f5d840 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Adobe Illustrator.txt @@ -0,0 +1,6 @@ +Adobe Illustrator is a computer program for making graphic design and illustrations. It is made by Adobe Systems. Pictures created in "Adobe Illustrator" can be made bigger or smaller, and look exactly the same at any size. It works well with the rest of the products with the Adobe name. +History. +It was first released in 1986 for the Apple Macintosh. The latest version is Adobe Illustrator 2024, part of Adobe Creative Cloud. +References. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Afghanistan.txt b/.github/workflows/data/simplewiki-500/Afghanistan.txt new file mode 100644 index 000000000..20b6152ff --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Afghanistan.txt @@ -0,0 +1,57 @@ +Afghanistan, officially the Islamic Emirate of Afghanistan is a country in Asia. It borders Pakistan in the south and east, Iran in the west, Turkmenistan, Uzbekistan and Tajikistan in the north, and China in the far northeast. Kabul is the capital city. +Afghanistan is currently governed by the Taliban, after the collapse of the internationally recognized Islamic Republic of Afghanistan on 15 August 2021. In early times people passed through it with animals and other goods as it connected China and India with Central Asia and the Middle East. More recently, Afghanistan has been damaged by many years of war. There are not enough jobs. +The country is around in size. There are 40.976 million people in Afghanistan. There are about 3 million Afghan refugees (people who had to leave the country) in Pakistan and Iran. In 2011 Kabul, had about 3,691,400 people living in it. +United Nations Human Rights Council decided in October 2021 to appoint an independent expert, known as a United Nations special rapporteur on Afghanistan, to find out about violations carried out by the Taliban and others who are now part of a big conflict. +Economy. +The economy does not have growth (as April 2024), of that kind that is called GDP growth, according to Worldbank.org. In regard to the mining industry: In 2024, Chinese engineers broke ground for a mine; "The deposit is estimated to [... have] 11.5 million tons of copper ore". +Geography. +Afghanistan has many mountains. The mountains are called the Hindu Kush and Himalayas. The tallest mountain in Afghanistan is Mount Nowshak. There are plains (which have soil that is good for growing plants) and foothills. Parts of the country are also dry, especially the Registan Desert. Afghanistan has snow and glaciers in the mountains. Amu Darya is the big water stream, or river. +The country has a lot of a valuable stone called lapis lazuli, which was used to decorate the tomb of the Egyptian pharaoh Tutankhamun. +Climate. +Afghanistan has a continental climate with hot summers and cold winters. Having no water sometimes causes problems for farmers. Sandstorms happen a lot in the desert. +Plants and animals. +Southern Afghanistan has not many plants because it is dry. There are more plants where there is more water. Mountains have forests of pine and fir, cedar, oak, walnut, alder, and ash trees. +Afghanistan's wild animals live in the mountains. There are wolves, foxes, jackals, bears, and wild goats, gazelles, wild dogs, camels, and wild cats such as the snow leopard in the country. The birds are falcons, eagles and vultures. The Rhesus Macaque and the red flying squirrel are also in Afghanistan. +Many years of war, hunting, and years of no water have killed animals in Afghanistan. There used to be tigers in Afghanistan, but now there aren't any. Bears and wolves are almost gone. +People and culture. +Many people have moved through or invaded the land of Afghanistan. Today's people of Afghanistan are known as "Afghans". +The largest group of people are the Pashtuns. These make up about half the population. Tajiks are the second-largest ethnic group, making up about one-fifth of the population. Before the 20th century, Tajiks were called Sarts and some come from Iranian peoples. Most Pashtuns are also related to the Iranian peoples. Some Pashtuns and Tajiks marry each other but at the same time they are rivals. The third-largest group are the Hazaras. They are native to the Hazaristan area in central Afghanistan. The country's other groups include the Uzbek, Aimaq, Turkmen, Nuristani, Baloch, and Pashayi. +Dari-Persian and Pashto are the official languages of Afghanistan. Many people speak both languages. Both are Indo-European languages from the Iranian languages sub-family. They are usually written with the Arabic alphabet. Uzbek and Turkmen are widely spoken in the north and Nuristani and Pashai are spoken in the east. Around 99% of Afghans follow the religion of Islam. +Afghanistan is a largely rural country. This means there are only a few major cities. About one fifth of the population live in cities. Kabul, the capital, is the largest city. It is south of the Hindu Kush range and alongside the Kabul River. Other cities are Kandahar, Herat, Mazar-e Sharif, and Jalalabad. The rural population is made up of farmers and nomads. The farmers live mainly in small villages along the rivers. The nomads live in tents while moving from place to place with their animals and belongings. Some people live in the high central mountains. Some live in the deserts in the south and southwest. Millions of people left Afghanistan to get away from the wars that happened in the late 20th and early 21st centuries. Most of them went to Pakistan and Iran. +History. +Afghanistan is in the path of important trade routes that connect southern and eastern Asia to Europe and the Middle East. Because of this, many empire builders have tried to rule over the area. Signs that these emperors were near Afghanistan still exist in many parts of the country. Afghanistan is near what used to be the Silk Road. The peoples of Afghanistan helped develop major world religions, traded and exchanged many products, and sometimes controlled politics and culture in Asia. +Prehistory. +Archaeologists digging a cave in Badakhshan discovered that people lived in the country as early as 100,000 years ago. They found the skull of a Neanderthal, or early human, as well as tools from about 30,000 years ago. In other parts of Afghanistan, archaeologists uncovered pottery and tools that are 4,000 to 11,000 years old—evidence that Afghans were among the first people in the world to grow crops and raise animals. +Farmers and herders settled in the plains surrounding the Hindu Kush as early as 7000 B.C. These people may have grown rich off the lapis lazuli they found along riverbeds, which they traded to early city sites to the west, across the Iranian plateau and Mesopotamia. As farms and villages grew these ancient people started irrigation (digging ditches for water so it flows to crops) that allowed them to grow crops on the northern Afghanistan desert plains. This civilization (advanced state of organization) is today called BMAC (Bactria–Margiana Archaeological Complex), or the "Oxus civilization". +The Oxus civilization expanded as far east as western edge of the Indus Valley during the period between 2200 and 1800 B.C. These people, who were the ancestors of the Indo-Aryans, used the term "Aryan" to identify their ethnicity, culture, and religion. Scholars know this when they read the ancient texts of these people; the Avesta of Iranic peoples and the Vedas of Indo-Aryans. +Zoroaster, the founder of the Zoroastrian religion, the world's earliest monotheistic religion, (meaning a religion believing in one god) lived in the area (somewhere north of today's Afghanistan), around 1000 B.C. +Ancient history. +Before the middle of the sixth century BCE, Afghanistan was held by the Medes. Then the Achaemenids took over control of the land and made it part of the Persian empire. Alexander the great defeated and conquered the Persian Empire in 330 BCE. He founded some cities in the area. The people used Macedonian culture and language. After Alexander, Seleucids, Mauryas, Greco-Bactrians, Scythians, Kushans, Parthians, Guptas and Sassanians ruled the area. +Kushans spread Buddhism from India in the 1st century BCE, and Buddhism remained an important religion in the area until the Islamic conquest in the 7th century CE. +The Buddhas of Bamiyan were giant statues, a reminder of Buddhism in Afghanistan. They were destroyed by the Taliban in 2001. There were international protests. The Taliban believe that the ancient statues were un-Islamic and that they had a right to destroy them. +Medieval history. +Arabs introduced Islam in the 7th century and slowly began spreading the new religion. In the 9th and 10th centuries, many local Islamic dynasties rose to power inside Afghanistan. One of the earliest was the Tahirids, whose kingdom included Balkh and Herat; they established independence from the Abbasids in 820. The Tahirids were succeeded in about 867 by the Saffarids of Zaranj in western Afghanistan. Local princes in the north soon became feudatories of the powerful Samanids, who ruled from Bukhara. From 872 to 999, north of the Hindu Kush in Afghanistan enjoyed a golden age under Samanid rule. +In the 10th century, the local Ghaznavids turned Ghazni into their capital and firmly established Islam throughout all areas of Afghanistan, except the Kafiristan region in the northeast. Mahmud of Ghazni, a great Ghaznavid sultan, conquered the Multan and Punjab region, and carried raids into the heart of India. Mohammed bin Abdul Jabbar Utbi, a historian from the 10th century, wrote that thousands of "Afghans" were in the Ghaznavid army. The Ghaznavid dynasty was replaced by the Ghorids of Ghor in the late 12th century, who reconquered Ghaznavid territory in the name of Islam and ruled it until 1206. The Ghorid army also included ethnic Afghans. +Afghanistan was recognized as "Khorasan", meaning "land of the rising sun," which was a prosperous and independent geographic region reaching as far as the Indus River. +All the major cities of modern Afghanistan were centers of science and culture in the past. The New Persian literature arose and flourished in the area. The early Persian poets such as Rudaki were from what is now Afghanistan. Moreover, Ferdowsi, the author of Shahnameh, the national epic of Iran, and Rumi, the famous Sufi poet, were also from here. It has produced scientists such as Avicenna, Al-Farabi, Al-Biruni, Omar Khayyám, Al-Khwarizmi, and many others who are widely known for their important contributions in areas such as mathematics, astronomy, medicine, physics, geography, and geology. It remained the cultural capital of Persia until the devastating Mongol invasion in the 13th century. +Timur, the Turkic conqueror, took over in the end of the 14th century and began to rebuild cities in this region. Timur's successors, the Timurids (1405–1507), were great patrons of learning and the arts who enriched their capital city of Herat with fine buildings. Under their rule Afghanistan enjoyed peace and prosperity. +Between south of the Hindu Kush and the Indus River (today's Pakistan) was the native land of the Afghan tribes. They called this land "Afghanistan" (meaning "land of the Afghans"). The Afghans ruled the rich northern Indian subcontinent with their capital at Delhi. From the 16th to the early 18th century, Afghanistan was disputed between the Safavids of Isfahan and the Mughals of Agra who had replaced the Lodi and Suri Afghan rulers in India. The Safavids and Mughals occasionally oppressed the native Afghans but at the same time the Afghans used each empire to punish the other. In 1709, the Hotaki Afghans rose to power and completely defeated the Persian Empire. Then they marched towards the Mughals of India and defeated them with the help of the Afsharid forces under Nader Shah Afshar. +In 1747, after Nader Shah of Persia was killed, a great leader named Ahmad Shah Durrani united all the different Muslim tribes and established the Afghan Empire (Durrani Empire). He is considered the founding father of the modern state of Afghanistan while Mirwais Hotak is the grandfather of the nation. +Since the 1800s. +During the 1800s, Afghanistan became a buffer zone between two powerful empires, the British Indian Empire and the Russian Empire. As British India advanced into Afghanistan, Russia felt threatened and expanded southward across Central Asia. To stop the Russian advance, Britain tried to make Afghanistan part of its empire but the Afghans fought wars with British-led Indians from 1839 to 1842 and from 1878 to 1880. After the third war in 1919, Afghanistan under King Amanullah gained respect and recognition as a completely independent state. +The Kingdom of Afghanistan was a constitutional monarchy established in 1926. It was the successor state to the Emirate of Afghanistan. On 27 September 1934, during the reign of Zahir Shah, the Kingdom of Afghanistan joined the League of Nations. During World War II, Afghanistan remained neutral. It pursued a diplomatic policy of non-alignment. +The creation of Pakistan in 1947 as its eastern neighbor created problems. In 1973, political crises led to the overthrow of the king. The country's new leader ended the monarchy and made Afghanistan a republic. In 1978, a Communist political party supported by the Soviet Union seized control of Afghanistan's government. This move sparked rebellions throughout the country. The government asked the Soviet Union for military assistance. The Soviets took advantage of the situation and invaded Afghanistan in December 1979. +Most people in Afghanistan opposed the sudden Soviet presence in their country. For nearly a decade, anti-Communist Islamic forces known as "Mujahideen" were trained in Pakistan to fight the Soviets and the Afghan government. The United States and other anti-Soviet countries supported the Mujahideen. In the long war, over one million Afghan civilians were killed. The Soviet Army also lost more than 15,000 soldiers in that war. Millions of Afghans left their country to stay safe in neighboring Pakistan and Iran. In 1989 the Soviet Army withdrew the last of its troops. +After the Soviets left in 1989, the Afghan Civil War started; different Afghan warlords began fighting for control of the country. The warlords received support from other countries, including neighboring Pakistan and Iran. A very conservative Islamic group known as the Taliban emerged in an attempt to end the civil war. By the late 1990s the Taliban had gained control over 95% of Afghanistan. A group known as the Northern Alliance, based in northern Afghanistan near the border with Tajikistan, continued to fight against the Taliban. +The Taliban ruled Afghanistan according to their strict version of Islamic law. People whom the Taliban believed violated these laws were given cruel punishments. In addition, the Taliban completely restricted the rights of women. Because of such policies, most countries refused to recognize the Taliban government. Only Pakistan, Saudi Arabia and the United Arab Emirates accepted them as the official government. The Taliban also angered other countries by allowing suspected terrorists to live freely in Afghanistan. Among them were Osama bin Laden and members of the al-Qaeda terrorist network. In September 2001, the United States blamed bin Laden for the terrorist attacks on the World Trade Center in New York City and the Pentagon outside Washington, D.C. The Taliban refused to hand him over to the United States. In response, the United States and its allies launched a bombing campaign against al-Qaeda in October 2001. Within months the Taliban abandoned Kabul, and a new government led by Hamid Karzai came to power, but fighting between the Taliban and US-led armies continued. Taliban fighters have gone into Afghanistan from neighboring Pakistan. Afghans accused Pakistan's military of being behind the Taliban militants but Pakistan rejected this and stated that a stable Afghanistan is in Pakistan's own interest. +In December 2004, Hamid Karzai became the first democratically elected president of Afghanistan. NATO began rebuilding Afghanistan, including its military and government institutions. Many schools and colleges were built. Freedom for women improved. Women can study, work, drive, and run for office. Many Afghan women work as politicians, some are ministers while at least one is a mayor. Others have opened businesses, or joined the military or police. Afghanistan's economy has also improved dramatically, and NATO agreed in 2012 to help the country for at least another 10 years after 2014. Afghanistan improved diplomatic ties with many countries in the world and continues. +In August 2021, the Cabinet of Afghanistan lost its power. Most of the country fell to the Taliban on 15 August 2021 with President Ashraf Ghani escaping the country. As of 18 August 2021, the former government's last remaining holdout is the Panjshir Valley. +Government. +Since the Taliban captured Kabul on 15 August 2021, the governance of Afghanistan is disputed between the Islamic Emirate of Afghanistan and the Islamic Republic of Afghanistan. +According to Transparency International, Afghanistan remains in the top most corrupt countries list. +Provinces. +As of 2004, there are thirty-four provinces. Each province is divided into districts. (For cities see List of cities in Afghanistan.) +Notes. +<templatestyles src="Reflist/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Air.txt b/.github/workflows/data/simplewiki-500/Air.txt new file mode 100644 index 000000000..f6329795a --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Air.txt @@ -0,0 +1,16 @@ +Air is the Earth's atmosphere. Air is a mixture of many gases and tiny dust particles. It is the clear gas in which living things live and breathe. It has an indefinite shape and volume. It has mass and weight, because it is matter. The weight of air creates atmospheric pressure. There is no air in outer space. +Earth's atmosphere is composed of about 78 percent nitrogen, 21 percent oxygen, 0.9 percent argon, and 0.1 percent other gases. +Animals live and need to breathe the oxygen in the atmosphere. In breathing, the lungs put oxygen into the blood, and send back carbon dioxide to the air. Plants need the carbon dioxide in the air to live. They give off the oxygen that we breathe. Without it animals die of asphyxia. +Air can be polluted by some gases (such as carbon monoxide, hydrocarbons, and nitrogen oxides), smoke, and ash. This air pollution causes various problems including smog, acid rain and global warming. It can damage people's health and the environment. There are debates about whether or not to act upon climate change, but soon enough the Earth will heat up too much, causing it to become too hot and not support life. Some say fewer people would die of cold weather, and that is true but there is already a huge amount of people dying from heat and that number is and will keep increasing more and more. +Since early times, air has been used to create technology. Ships moved with sails and windmills used the mechanical motion of air. Aircraft use propellers to move air over a wing, which allows them to fly. Pneumatics use air pressure to move things. Since the late 1900s, air power is also used to generate electricity. +Air is invisible: it cannot be seen by the eye, though a shimmering in hot air can be seen. +Air is one of the 4 classical elements (water, air, earth and fire). +Main history. +Original atmosphere. +At first it was mainly a hydrogen atmosphere. It has changed dramatically on several occasions—for example, the Great Oxygenation Event 2.4 billion years ago, greatly increased oxygen in the atmosphere from practically no oxygen to levels closer to present day. Humans have also contributed to significant changes in atmospheric composition through air pollution, especially since industrialisation, leading to rapid environmental change such as ozone depletion and global warming. +Second atmosphere. +Out gassing from volcanism, supplemented by gases produced during the late heavy bombardment of Earth by huge asteroids, produced the next atmosphere, consisting largely of nitrogen plus carbon dioxide and inert gases. +Third atmosphere. +The constant re-arrangement of continents by plate tectonics influences the long-term evolution of the atmosphere. Carbon dioxide was transferred to and from large continental carbonate stores. Free oxygen did not exist in the atmosphere until about 2.4 billion years ago. The Great Oxygenation Event is shown by the end of the banded iron formations. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Alan Turing.txt b/.github/workflows/data/simplewiki-500/Alan Turing.txt new file mode 100644 index 000000000..8993627f9 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Alan Turing.txt @@ -0,0 +1,24 @@ +Alan Mathison Turing OBE FRS (London, 23 June 1912 – Wilmslow, Cheshire, 7 June 1954) was an English mathematician and computer scientist. He was born in Maida Vale, London. +Early life and family. +Alan Mathison Turing was born in Maida Vale, London on 23 June 1912. His father was part of a family of merchants from Scotland. His mother, Ethel Sara, was the daughter of an engineer. +Education. +Turing went to St. Michael's, a school at 20 Charles Road, St Leonards-on-sea, when he was five years old. +"This is only a foretaste of what is to come, and only the shadow of what is going to be.” – Alan Turing. +The Stoney family were once prominent landlords in North Tipperary. His mother Ethel Sara Stoney (1881–1976) was daughter of Edward Waller Stoney (Borrisokane, North Tipperary) and Sarah Crawford (Cartron Abbey, Co. Longford), who were Protestant Anglo-Irish gentry. She was educated in Dublin at Alexandra School and College. On 1 October 1907, she married Julius Mathison Turing, who was Reverend John Robert Turing and Fanny Boyd, in Dublin. Alan Turing was born on 23 June 1912. He would go on to be regarded as one of the greatest figures of the twentieth century. +Alan was a brilliant mathematician and cryptographer. He became the founder of modern-day computer science and artificial intelligence. He designed a machine at Bletchley Park to break secret Enigma encrypted messages used by the Nazi German war machine to protect sensitive commercial, diplomatic and military communications during World War 2. This made the single biggest contribution to the Allied victory in the war against Nazi Germany. It possibly saved the lives of an estimated 2 million people, and shortened World War II. +In 2013, almost 60 years later, Turing received a posthumous Royal Pardon from Queen Elizabeth II. Today, the “Turing law” grants an automatic pardon to men who died before the law came into force, making it possible for living convicted gay men to seek pardons for offences now no longer on the statute book. +Turing died in 1954, after being subjected by a British court to chemical castration. He is known to have ended his life at the age of 41 years, by eating an apple laced with cyanide. +Career. +Turing was one of the people who worked on the first computers. He created the theoretical Turing machine in 1936. The machine was imaginary, but it included the idea of a computer program. +Turing was interested in artificial intelligence. He proposed the Turing test, to say when a machine could be called "intelligent". A computer could be said to "think" if a human talking with it could not tell it was a machine. +During World War II, Turing worked with others to break German ciphers (secret messages). He worked for the Government Code and Cypher School (GC&CS) at Bletchley Park, Britain's codebreaking centre that produced Ultra intelligence. +Using cryptanalysis, he helped to break the codes of the Enigma machine. After that, he worked on other German codes. +From 1945 to 1947, Turing worked on the design of the ACE (Automatic Computing Engine) at the National Physical Laboratory. He presented a paper on 19 February 1946. That paper was "the first detailed design of a stored-program computer". Although it was possible to build ACE, there were delays in starting the project. In late 1947 he returned to Cambridge for a sabbatical year. While he was at Cambridge, the Pilot ACE was built without him. It ran its first program on 10 May 1950. +Private life. +Turing was a homosexual man. In 1952, he admitted having had sex with a man in England. At that time, homosexual acts were illegal. Turing was convicted. He had to choose between going to jail and taking hormones to lower his sex drive. He decided to take the hormones. After his punishment, he became impotent. He also grew breasts. +In May 2012, a private member's bill was put before the House of Lords to grant Turing a statutory pardon. In July 2013, the government supported it. A royal pardon was granted on 24 December 2013. +Death. +In 1954, Turing died from cyanide poisoning. The cyanide came from either an apple which was poisoned with cyanide, or from water that had cyanide in it. The reason for the confusion is that the police never tested the apple for cyanide. It is also suspected that he committed suicide. +The treatment forced on him is now believed to be very wrong. It is against medical ethics and international laws of human rights. In August 2009, a petition asking the British Government to apologise to Turing for punishing him for being a homosexual was started. The petition received thousands of signatures. Then Prime Minister, Gordon Brown acknowledged the petition. He called Turing's treatment "appalling". +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Alanis Morissette.txt b/.github/workflows/data/simplewiki-500/Alanis Morissette.txt new file mode 100644 index 000000000..4c4d1ed7d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Alanis Morissette.txt @@ -0,0 +1,16 @@ +Alanis Nadine Morissette (born June 1, 1974) is a Grammy Award-winning Canadian-American singer and songwriter. She was born in Ottawa, Canada. She began singing in Canada as a teenager in 1990. In 1995, she became popular all over the world. +As a young child in Canada, Morissette began to act on television, including 5 episodes of the long-running series, "You Can't Do That on Television". Her first album was released only in Canada in 1990. +Her first international album was "Jagged Little Pill", released in 1995. It was a rock-influenced album. "Jagged" has sold more than 33 million units globally. It became the best-selling debut album in music history. Her next album, "Supposed Former Infatuation Junkie", was released in 1998. It was a success as well. Morissette took up producing duties for her next albums, which include "Under Rug Swept", "So-Called Chaos" and "Flavors of Entanglement". Morissette has sold more than 60 million albums worldwide. +She also acted in several movies, including Kevin Smith's "Dogma", where she played God. +About her life. +Alanis Morissette was born in Riverside Hospital of Ottawa in Ottawa, Ontario. Her father is French-Canadian. Her mother is from Hungary. She has an older brother, Chad, and a twin brother, Wade, who is 12 minutes younger than she is. Her parents had worked as teachers at a military base in Lahr, Germany. +Morissette became an American citizen in 2005. She is still Canadian citizen. +On May 22, 2010, Morissette married rapper Mario "MC Souleye" Treadway. +Jagged Little Pill. +Morissette has had many albums. Her 1995 album "Jagged Little Pill" became a very popular album. It has sold over 30 million copies worldwide. The album caused Morissette to win four Grammy Awards. The album "Jagged Little Pill" touched many people. +On the album, Morissette sang songs about many different things. These things include: +Discography. +Selected songs. +Morissette has written many songs. Some of her most famous songs are: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Albigensian.txt b/.github/workflows/data/simplewiki-500/Albigensian.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Algebra.txt b/.github/workflows/data/simplewiki-500/Algebra.txt new file mode 100644 index 000000000..083cd3cb9 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Algebra.txt @@ -0,0 +1,51 @@ +Algebra (from Arabic: الجبر, transliterated "al-jabr", meaning "completion") is a part of mathematics. It uses variables to represent a value that is not yet known or can be replaced with any value. When an equals sign (=) is used, this is called an equation. A very simple equation using a variable is: formula_1. In this example, formula_2, or it could also be said that "formula_3 equals five". This is called "solving for" formula_3. +Besides equations, there are inequalities ("less than" and "greater than"). A special type of equation is called the function. This is often used in making graphs because it always turns one input into one output. +Algebra can be used to solve real problems because the rules of algebra work in real life and numbers can be used to represent the values of real things. Physics, engineering and computer programming are areas that use algebra all the time. It is also useful to know in surveying, construction and business, especially accounting. +People who do algebra use the rules of numbers and mathematical operations used on numbers. The simplest are adding, subtracting, multiplying, and dividing. More advanced operations involve exponents, starting with squares and square roots. +Algebra was first used to solve equations and inequalities. Two examples are linear equations (the equation of a straight line, formula_5 or formula_6) and quadratic equations, which has variables that are squared (multiplied by itself, for example: formula_7, formula_8, or formula_9). +History. +Early forms of algebra were developed by the Babylonians and Greek geometers such as Hero of Alexandria. However the word "algebra" is a Latin form of the Arabic word "Al-Jabr" ("casting") and comes from a mathematics book "Al-Maqala fi Hisab-al Jabr wa-al-Muqabilah", ("Essay on the Computation of Casting and Equation") written in the 9th century by a Persian mathematician, Muhammad ibn Mūsā al-Khwārizmī, who was a Muslim born in Khwarizm in Uzbekistan. He flourished under Al-Ma'moun in Baghdad, Iraq through 813-833 CE, and died around 840 CE. The book was brought into Europe and translated into Latin in the 12th century. The book was then given the name "Algebra". (The ending of the mathematician's name, al-Khwarizmi, was changed into a word easier to say in Latin, and became the English word "algorithm"). +Examples. +Here is a simple example of an algebra problem: +Sue has 12 candies, and Ann has 24 candies. They decide to share so that they have the same number of candies. How many candies will each have? +These are the steps you can use to solve the problem: +With practice, algebra can be used when faced with a problem that is too hard to solve any other way. Problems such as building a freeway, designing a cell phone, or finding the cure for a disease all require algebra. +Writing algebra. +As in most parts of mathematics, adding formula_22 to formula_23 (or formula_22 plus formula_23) is written as formula_26; +subtracting formula_23 from formula_22 (or formula_22 minus formula_23) is written as formula_31; +and dividing formula_22 by formula_23 (or formula_22 over formula_23) is written as formula_36 or formula_37. +In algebra, multiplying formula_22 by formula_23 (or formula_22 times formula_23) can be written in 3 different ways: formula_42, formula_43 or just formula_44. All of these notations mean the same thing: formula_22 times formula_23. The symbol "formula_47" used in arithmetic is not used in algebra, because it looks too much like the letter formula_3, which is often used as a variable. +When we multiply a number and a variable in algebra, we can simply write the number in front of the letter: formula_49. When the number is 1, then it is not written because 1 times any number is that number (formula_50) and so it is not needed. And when it is 0, we can completely remove the terms, because 0 times any number is zero (formula_51). +As a side note, you do not have to use the letters formula_3 or formula_22 in algebra. Variables are just symbols that mean some unknown number or value, so you can use any letter for a variable (except formula_54 (Euler's number) and formula_55 (Imaginary unit), because these are mathematical constants). formula_3 and formula_22 are the most common, though. +Functions and Graphs. +An important part of algebra is the study of functions, since they often appear in equations that we are trying to solve. A function is like a machine you can put a number (or numbers) into and get a certain number (or numbers) out. When using functions, graphs can be powerful tools in helping us to study the solutions to equations. +A graph is a picture that shows all the values of the variables that make the equation or inequality true. Usually this is easy to make when there are only one or two variables. The graph is often a line, and if the line does not bend or go straight up-and-down it can be described by the basic formula formula_5. The variable formula_59 is the y-intercept of the graph (where the line crosses the vertical axis) and formula_60 is the slope or steepness of the line. This formula applies to the coordinates of a graph, where each point on the line is written formula_61. +In some math problems like the equation for a line, there can be more than one variable (formula_3 and formula_22 in this case). To find points on the line, one variable is changed. The variable that is changed is called the "independent" variable. Then the math is done to make a number. The number that is made is called the "dependent" variable. Most of the time the independent variable is written as formula_3 and the dependent variable is written as formula_22, for example, in formula_66. This is often put on a graph, using an formula_3 axis (going left and right) and a formula_22 axis (going up and down). It can also be written in function form: formula_69. So in this example, we could put in 5 for formula_3 and get formula_71. Put in 2 for formula_3 would get formula_73. And 0 for formula_3 would get formula_75. So there would be a line going through the points formula_76, formula_77, and formula_78 as seen in the graph to the right. +If formula_3 has a power of 1, it is a straight line. If it is squared or some other power, it will be curved. If it uses an inequality (formula_80 or formula_81), then usually part of the graph is shaded, either above or below the line. +Rules. +In algebra, there are a few rules that can be used for further understanding of equations. These are called the rules of algebra. While these rules may seem senseless or obvious, it is wise to understand that these properties do not hold throughout all branches of mathematics. Therefore, it will be useful to know how these axiomatic rules are declared, before taking them for granted. Before going on to the rules, reflect on two definitions that will be given. +Commutative property of addition. +"Commutative" means that a function has the same result if the numbers are swapped around. In other words, the order of the terms in an equation does not matter. When two terms (addends) are being added, the "commutative property of addition" is applicable. In algebraic terms, this gives formula_86. +Note that this does not apply for subtraction (i.e. formula_87 except if formula_88). +Commutative property of multiplication. +When two terms (factors) are being multiplied, the "commutative property of multiplication" is applicable. In algebraic terms, this gives formula_89. +Note that this does not apply for division (i.e. formula_90, when formula_91 and formula_92, except if formula_88). +Associative property of addition. +"Associative" refers to the grouping of numbers. The associative property of addition implies that, when adding three or more terms, it doesn't matter how these terms are grouped. Algebraically, this gives formula_94. Note that this does not hold for subtraction, e.g. formula_95 (see distributive property). +Associative property of multiplication. +The associative property of multiplication implies that, when multiplying three or more terms, it doesn't matter how these terms are grouped. Algebraically, this gives formula_96. Note that this does not hold for division, e.g. formula_97. +Distributive property. +The distributive property states that the multiplication of a term by another term can be distributed. For instance: formula_98. (Do not confuse this with the associative properties! For instance: formula_99.) +Additive identity. +"Identity" refers to the property of a number that it is equal to itself. In other words, there exists an operation of two numbers so that it equals the variable of the sum. The additive identity property states that any number plus 0 is that number: formula_100. This also holds for subtraction: formula_101. +Multiplicative identity. +The multiplicative identity property states that any number times 1 is that number: formula_102. This also holds for division: formula_103. +Additive inverse property. +The additive inverse property is somewhat like the inverse of the additive identity. When we add a number and its opposite, the result is 0. Algebraically, it states the following: formula_104, which is the same as formula_105. For example, the additive inverse (or opposite) of 1 is -1. +Multiplicative inverse property. +The multiplicative inverse property means that when we multiply a number and its reciprocal, the result is 1. Algebraically, it states the following: formula_106, which is the same as formula_107. For example, the multiplicative inverse (or reciprocal) of 2 is 1/2. To get the reciprocal of a fraction, switch the numerator and the denominator: the reciprocal of formula_108 is formula_109. +Advanced Algebra. +In addition to "elementary algebra", or basic algebra, there are advanced forms of algebra, taught in colleges and universities, such as abstract algebra, linear algebra, and universal algebra. This includes how to use a matrix to solve many linear equations at once. Abstract algebra is the study of things that are found in equations, going beyond numbers to the more abstract with groups of numbers. +Many math problems are about physics and engineering. In many of these physics problems time is a variable. The letter used for time is formula_110. Using the basic ideas in algebra can help reduce a math problem to its simplest form making it easier to solve difficult problems. Energy is formula_54, force is formula_112, mass is formula_60, acceleration is formula_82 and speed of light is sometimes formula_115. This is used in some famous equations, like formula_116 and formula_117 (although more complex math beyond algebra was needed to come up with that last equation). +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/American English.txt b/.github/workflows/data/simplewiki-500/American English.txt new file mode 100644 index 000000000..b1af36a8d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/American English.txt @@ -0,0 +1,14 @@ +American English or US English is the dialect of the English language spoken in the United States of America. It is different in some ways from other types of English, such as British English. Most types of American English came from local dialects in England. During the 18th and 19th centuries, pronunciation changed less in America than in England. +Use. +Many people today know about American English even if they live in a country where another type of English is spoken. They hear and read American English through the media, for example movies, television, and the Internet, where the most common form of English is American English. +Because people all over the world use the English language, it gets many new words. English has been changing in this way for hundreds of years. For example, the many millions who speak Indian English frequently add American English words to go along with its British English base and many other words from the various Indian languages. +Sometimes people learn American English as it is spoken in the US. For example, in telephone call centers in India and other places, people often learn American English to sound more like their customers who call from the US. These people often keep using American English in everyday life. +Spelling. +There are many words that sound the same in both American and British English but have different spellings. British English often keeps more traditional ways of spelling words than American English. +Vocabulary. +There are also some words in American English that are a bit different from British English, e.g.: +Regional accents. +General American English is the kind most spoken in mass media. It more vigorously pronounces the letter "R" than some other kinds do. "R-dropping" is frequent in certain places where "r" sound is not pronounced after a vowel. For example as in the words "car" and "card" sounding like "cah" and "cahd". This occurs in the Boston area. +Some regional accents of American English include: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/American Units Of Measurement.txt b/.github/workflows/data/simplewiki-500/American Units Of Measurement.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Anatomy.txt b/.github/workflows/data/simplewiki-500/Anatomy.txt new file mode 100644 index 000000000..422d395b3 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Anatomy.txt @@ -0,0 +1,9 @@ +Anatomy is the study of the bodies of people and other animals. Anatomy is the study of the inside of the body and outside the body. Anatomy notes the position and structure of organs such as muscles, glands and bones. A person who studies anatomy is an anatomist. +The history of anatomy dates back to 1600 BC when Egyptians began studying human anatomy. They discovered the functions of many organs like the liver, spleen, kidneys, heart etc. and were the first to discover the structure and functions of the lymphatic system. +For long periods the dissection of deceased people was forbidden, and correct ideas about human anatomy was a long time coming. +Academic human anatomists are usually employed by universities, medical schools and teaching hospitals. They are often involved in teaching and research. Gross anatomy studies parts of the body that are big enough to see. Micro-anatomy studies smaller parts. +Body systems. +There are different organ systems, such as the cardiovascular system, also known as the circulatory system (the system that gets blood around the body), the muscular system (the system that contains muscles), the nervous system (the system that controls the nerves,and the brain) and the skeleton (the bones). +Anatomy, physiology and biochemistry are similar basic medical sciences. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Andouille.txt b/.github/workflows/data/simplewiki-500/Andouille.txt new file mode 100644 index 000000000..c1aae3b1b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Andouille.txt @@ -0,0 +1,3 @@ +Andouille is a type of pork sausage. It is spicy (hot in taste) and smoked. There are different kinds, all with different combinations of pork meat, fat, intestines (tubes going to the stomach), and tripe (the wall of the stomach). +Other sorts are "French andouille" and "German andouille"; they are less spicy than Cajun. Cajun has extra salt, black pepper, and garlic. Andouille makers smoke the sausages over pecan wood and sugar cane for a maximum of seven or eight hours, at about 175 degrees Fahrenheit (80 degrees Celsius). + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Angel.txt b/.github/workflows/data/simplewiki-500/Angel.txt new file mode 100644 index 000000000..6c3cc98e1 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Angel.txt @@ -0,0 +1,69 @@ +In many mythologies and religions, an angel is a good spirit. The word angel comes from the Greek word "angelos" which means "messenger". Angels appear frequently in the Old Testament, the New Testament, Qur'an and Aqdas. +Different references to angels throughout the Bible suggest different kinds and ranks of angels, such as seraphs (Hebrew plural: seraphim) or cherubs (Hebrew plural: cherubim). This resulted in medieval theologians outlining a hierarchy of such divine messengers, including not only cherubs and seraphs, but also archangels, powers, principalities, dominions and thrones. +The study of angels is called angelology. +In the Bible. +Angels are powerful spirits that obey God's commands. They sometimes appear to humans in a human form. They can deliver messages to people in person or in dreams. Angels that are named in the Bible are Michael (called a "chief prince"), Gabriel (known for telling Mary that she would be the mother of Jesus), and Raphael (in the Apocryphal Book of Tobit). The Ethiopian Book of Enoch also lists four Archangels which watch over the four parts of heaven; Michael, Raphael, Gabriel and Uriel. Lucifer is also known as an angel in the Bible. +Appearances in Genesis. +God, in the Book of Genesis sends an Angel with a sword made out of fire to keep Adam and Eve from going back to the Garden of Eden. +Appearances in Exodus. +In the Book of Exodus, an Angel comes to a bush and makes a fire but the bush doesn't burn. When Moses sees this, he comes close to the Bush and he hears God speak to him. On the way to Egypt, Moses forgets to circumcise his son so an Angel tries to kill him but then Zipporah circumcises him and the Angel lets Moses live. Angels are also there when God gives the Ten Commandments at Mount Sinai. +Appearances in Leviticus. +In the Book of Leviticus, the Ark of the Covenant, has statues of two angels called Cherubim on top of it. +Appearances in Numbers. +In the Book of Numbers, Balaam goes to curse the Israelites but G-d sends an Angel to be a Satan against Balaam. Balaam doesn't see the Angel but his donkey does so she moves out of the way. Balaam then hits her and gets her to go continue moving. When the donkey sees the Angel again and Balaam doesn't, she moves to the other side of the road and Balaam hits her and she starts walking again. When she sees the Angle again and there's nowhere on the road to go, she stops moving, so Balaam hits her. Balaam's donkey then talks to him and asks him why he's hitting her. He says if he had a sword, then he would kill her. Then Balaam sees the Angel and the Angel tells Balaam that Balaam's donkey is more righteous than he is and that he would have only killed Balaam but not the donkey. +Appearances in Deuteronomy. +When Moses spoke to the Israelites in the Book of Deuteronomy, there were ten thousand angels next to him. +Appearances in Judges. +G-d sends an Angel to Gideon in the Book of Judges to tell Gideon that he must save the Israelites. He later sends an Angel to an Israelite woman and her husband Manoach to tell them that they would have a son Samson. +Appearances in Samuel. +When King David has a census, G-d punishes him by sending an Angel to cause a plague. +Appearances in Kings. +When Queen Jezebel wants to kill Elijah, an Angel comes to help him. Another Angel later protects Elisha. When King Ahab asks the prophet Micaiah for a prediction, Mecaiah tells him that G-d sent an Angel to trick Ahab into fighting a war and getting killed. Later when Sannecherib attacks Judah, G-d sends His Angel to kill Sannecherib's entire Assyrian army. +Isaiah. +Isaiah said that the Angels sang songs and that every Angel had six wings, two for covering its face, two for covering its feet and two for flying. Isaiah said that when he heard the Angels sing he said "I am doomed for I live among a people of unclean lips" and that G-d got angry with him for saying that. +Ezekiel. +The Book of Ezekiel begins with Ezekiel seeing Angels on a Chariot. +Zechariah. +The prophet Zechariah saw an Angel tell him that G-d would have mercy on the Jews. And that their enemies will be punished. Another Angel says that even the Kingdom of Israel will come back to the land. Zechariah sees an Angel defending the Priest from The Satan when The Satan says that the Priest did a bad thing. An Angel shows Zechariah a Menorah in the Temple of Jerusalem. The Angel tells Zechariah that the children of Zerubavel will be Kings. +Malachi. +G-d told Malachi that He would send an Angel and Elijah to announce that the Messiah was coming. +Job. +In the Book of Job, all the Angels meet with G-d and The Satan bets G-d that he can make Job curse G-d +Daniel. +In the Book of Daniel, an Angel rescues Daniel's friends from Nebuchadnezzar. Daniel also mentions Angels being named Michael and Gabriel +Chronicles. +In the Books of Chronicles, The Satan gets King David to want to have his census. +Appearances in The New Testament. +In the New Testament, an Angel tells The Virgin Mary that she will give birth to Jesus, Angels proclaim the birth of Jesus in the Adoration of the shepherds (Luke 2:10) and Angels help Jesus in the desert. +In Luke 22:43 of the New Testament, an Angel comforts Jesus during the agony in the garden of Gethsemane and in Matthew 28:5 an Angel speaks at the empty tomb following the Resurrection of Jesus saying: “Do not be afraid, for I know that you are looking for Jesus, who was crucified. He is not here; he has risen, just as He said". +Types of Angels. +Ezekiel 28:13-14 +13. Thou hast been in Eden the garden of God; every precious stone was thy covering, the sardius, topaz, and the diamond, the beryl, the onyx, and the jasper, the sapphire, the emerald, and the carbuncle and gold: the workmanship of thy tabrets and of thy pipes was prepared in thee in the day that thou wast created. +14. Thou art the anointed cherub that covereth; and I have set thee so: thou wast upon the holy mountain of God; thou hast walked up and down in the midst of the stones of fire. +It describes the sound of their wings, "like the roar of rushing waters." +Ezekiel 10:5-7 ; Ezekiel 10:8 reveals that they have hands like a man under their wings . +Ezekiel 1:7 KJV reveals that they look like man but are different because they have "straight feet" and four wings and four faces. +Ezekiel ch 1, and 10 describe the cherubim creatures ascending and descending from the earth with wheels. Ezekiel 1:14-20 ; Ezekiel 10:16 +Ezekiel 10:9-13 describes what the wheels appeared to look like, and how they moved around, how they moved or flew through the sky quickly but turned not as they went; and how the inside workings of the wheels appeared to be "a wheel in the midst of a wheel" and that the color of the wheels was the color of "Amber" Stone. There are four separate wheels in both accounts, one for each single cherub which is there. +Religion. +Rabbinic Judaism. +In Judaism angels are created by God from fire. They fullfil tasks given by God. Rabbinic Judaism rejects earlier accounts on fallen angels who sinned by mating with humans. Instead, angels are servants of God. Still, not all angels are benevolent. Some angels are jealous of humans, because God loves them so much. Unlike angels, humans can overcome sin and repent. Angels cannot repent their sin, because they are already sinless. +When the Bible speaks about the creation of humans in the plural, Judaism sometimes argues that God discussed his decision with the angels. But they make clear, it is God alone who creates humans. God only wanted to discuss with the angels to show that someone in power, should still try to value the opinion of people lower. +Islam. +In Islam angels are created by God (referred to as Allah in the Arabic, Persian, Urdu, Pashto, and Dari languages) before jinn and humans. Some say, that before angels however, demons were created. Angels were created in heaven and fullfil God's orders. Some angels deliver messages to humans and prophets, most famous among them is Gabriel. Other angels support humans with rain. Some angels don't have a task on earth, but dwell in heaven, for example, to praise God. +Muslims disagree if angels can fail a task, but they agree that an angel never wants to disobey. Sometimes angels might simply make mistakes on accident, like the angels Harut and Marut. But these angels are not considered evil, they just lose their rank as punishment, but can restore their rank later again. Not all angels are nice. God gives angels violent tasks too. For example, God orders angels to punish people in hell, not demons. Muslims believe hell is under God's control, and not the demon's. They believe hell is not only suffering, but also justice. Angels watch out that people don't escape their punishment. While the benevolent angels are said to be created from light, some Muslims think the angels in hell are created from fire. +Muslims believe that angels are also present in life. They are, however, only in clean places. They are believed to give also good advises and blessings. +In art. +They are often shown in art as having wings and a halo. The wings represent their speed, and the halo represents their holiness. +The cherubim in art always appear as baby faced angels with very small, non-useful wings. +The cherubim statue or bronze casting of cherubim in the Temple of Solomon depicted them as two four winged creatures whose wings touched at the peak of the ark that they were making. +The same cherubim creatures were said to be cast in gold on top of the Ark of the Covenant. Casting metal is one of the oldest forms of artwork, and was attempted by Leonardo da Vinci. +In literature. +Angels are generally held to be holy and virtuous, hence the term is used loosely to apply to anyone particularly good or kind, or having a good influence. In his novel "Far From the Madding Crowd", Thomas Hardy chooses the name of an angel, Gabriel, for his kind and helpful hero. On the other hand, in his play "Measure for Measure", Shakespeare's use of the name Angelo is ironic, since Angelo is a character who likes to see himself as virtuous, but who is concealing evil aspects of his nature. Fallen angels, who are no longer holy or virtuous, are also known as devils. +However, since angels are held to be spirits (that is, non-material beings), medieval theologians were faced with the problem of how humans could see a non-physical creature. Eventually a theory was put forward that angels must make themselves a body out of the nearest thing to the non-physical, i.e. from air. Hence in his famous poem "Aire and Angels", the seventeenth century metaphysical poet John Donne uses this idea to write a cynical comment on women, whose love, he says, is like an angel's body of air, while men's love is like the real thing, the angel itself. +Idea of Guardian angel. +From the era of the Romantics onwards, there has developed the widely held belief that everyone has an angel assigned to guard them. This concept is probably based on Jesus' comment in Matthew 18:10 regarding children, though it is not mentioned elsewhere in the Bible. +In superstitions. +Seeing repetitive numbers are thought to be associated with numerology, also referred to as angel numbers. It is believed that angels communicate with humans through repetitive appearances of numbers. Humanity has studied and used numbers since the dawn of time, and no matter what the culture is, there are certain numbers that hold specific value or meaning over other numbers. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Angola.txt b/.github/workflows/data/simplewiki-500/Angola.txt new file mode 100644 index 000000000..a636be89b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Angola.txt @@ -0,0 +1,16 @@ +Angola, officially the Republic of Angola, is a country in southern Africa. It shares borders with Namibia in the south, the Democratic Republic of the Congo in the north, and Zambia in the east. Its west border touches the Atlantic Ocean. Its coastline is 1600 kilometers. Angola's capital is Luanda. The country has many natural resources. Angola is the seventh largest country in Africa. The capital and most populated city of Angola is Luanda. +Angola is a member state of the African Union, the Community of Portuguese Language Countries, the Latin Union, South Atlantic Peace and Cooperation Zone and the Southern African Development Community. +History. +Portugal built up its power in Angola from the late 15th to the middle 20th century. +After independence there was a civil war from 1975 to 2002. Cuba and the Soviet Bloc supported the ruling People's Movement for the Liberation of Angola (MPLA). South Africa supported the insurgent National Union for the Total Independence of Angola (UNITA) until the end of apartheid. The war ended after the rebel leader Jonas Savimbi was killed. +Geography. +Angola is the world's twenty-third largest country. Angola is bordered by Namibia to the south, Zambia to the east, the Democratic Republic of the Congo to the north-east, the Republic of the Congo via the exclave of Cabinda, and the South Atlantic Ocean to the west. +Climate. +Angola's average temperature on the coast is in the winter and in the summer. It has two seasons; dry (May to October) and hot rainy (November to April). +Demographics. +Angola had a population of 25,789,024 in 2014. +Provinces. +Angola is divided into eighteen provinces. +See List of settlements in Angola for the cities and towns in the country. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Animal.txt b/.github/workflows/data/simplewiki-500/Animal.txt new file mode 100644 index 000000000..1584a02ad --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Animal.txt @@ -0,0 +1,18 @@ +Animals (or Metazoa) are living creatures with many cells that make up the kingdom Animalia. +Animals get their energy from other living things. Usually, they eat them or are parasites. Animals, plants, fungi, and some other living things have complex cells, so they are grouped together as eukaryotes. +The study of animals is called zoology. The study of ancient life is called palaeontology. +Most animals are mobile, meaning they can move around. Animals take in oxygen, and give out carbon dioxide. This cellular respiration is part of their metabolism (chemical working). In both these ways they are different from plants. Also, the cells of animals have different cell membranes to other eukaryotes like plants and fungi. +Plants are also multicellular eukaryotic organisms, but live by using light, water and basic elements to make their tissues. +Grouping animals. +There are many different types of animals. The common animals most people know are only about 3% of the animal kingdom. When biologists look at animals, they find things that certain animals have in common. They use this to group the animals in a biological classification. Several million species may exist, but biologists have only identified about one million. +Animals can mainly be divided into two main groups: the invertebrates and the vertebrates. Vertebrates have a backbone, or spine; invertebrates do not. Vertebrates are the only group to have an adaptive immune system, which may be partly responsible for their size and success. +Vertebrates are: +Some invertebrates are: +Life styles. +The animal mode of nutrition is called heterotrophic because they get their food from other living organisms. Some animals eat only plants; they are called herbivores. Other animals eat only meat and are called carnivores. Animals that eat both plants and meat are called omnivores. Some animals get their energy from photosynthetic protists that live inside them. +The environments animals live in vary greatly. By the process of evolution, animals adapt to the habitats they live in. A fish is adapted to its life in water and a spider is adapted to a life catching and eating insects. A mammal living on the savannahs of East Africa lives quite a different life from a dolphin or porpoise catching fish in the sea. +The fossil record of animals goes back about 600 million years to the Ediacaran period, or somewhat earlier. During the whole of this long time, animals have been constantly evolving, so that the animals alive on Earth today are very different from those on the edges of the sea-floor in the Ediacaran. +Everyday language. +In scientific usage, humans are animals. But in everyday use, humans are often not regarded as animals. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Animalia.txt b/.github/workflows/data/simplewiki-500/Animalia.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Apple Macintosh.txt b/.github/workflows/data/simplewiki-500/Apple Macintosh.txt new file mode 100644 index 000000000..a00b26be9 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Apple Macintosh.txt @@ -0,0 +1,12 @@ +The Apple Macintosh or just Mac is a line of personal computers made by the American company Apple Inc. The Macintosh was one of the first computers in which the people could use a mouse for pointing on a screen which had icons. This new way of working with a computer (interface) was known as graphical user interface. It was this feature of the Macintosh that made it so popular. +History. +Processor history. +The Apple–Intel transition was when Apple changed the CPU of Macintosh computers from PowerPC processors to Intel x86 processors. It was announced at the 2005 World Wide Developers Conference. Steve Jobs announced it. +Macintoshes were different than other personal computers for many years based on their central processor unit (CPU). At the start, Macs used Motorola 68000 chips instead of Intel chips. Later, Macs used PowerPC chips. In 2006, Macs started to use Intel chips. In 2020, Macs started to use Apple Silicon chips. Today, Macs are sold with Apple M1 chips. +Macintoshes. +Software. +The Mac does not have the Windows operating system installed on it. It has its own range of operating systems, known as macOS. The newest operating system is known as “Sonoma". Macs can run both Windows and macOS at the same time with help of a program called “Boot Camp”, which comes on every Mac. +In general, Macintosh computers cost more than other computers of the same speed. +References. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Apple.txt b/.github/workflows/data/simplewiki-500/Apple.txt new file mode 100644 index 000000000..f4bcea649 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Apple.txt @@ -0,0 +1,40 @@ +An apple is the edible fruit of a number of trees, known for its juicy green or red fruit. The tree (Malus spp.) is grown worldwide. The fruit is low-cost, popular, and common all over the earth. +Applewood is a type of wood that comes from this tree. +The apple tree comes from southern Kazakhstan, Kyrgyzstan, Uzbekistan, and northwestern part of China. Apples have been grown for thousands of years in Asia and Europe. They were brought to North America by European settlers. Apples have religious and mythological significance in many cultures. +Apples are generally grown by grafting, although wild apples grow readily from seed. Apple trees are large if grown from seed, but small if grafted onto roots (rootstock). There are more than 10000 known variants of apples, with a range of desired characteristics. Different variants are bred for various tastes and uses: cooking, eating raw and cider production are the most common uses. In addition to that, when it comes to food toxicity, the seeds in apples can be fatal, but only if they've been crushed. Apples contain amygdalin, which can release cyanide when digested. Though the amount in apple seeds is generally low and requires significant ingestion to be harmful (killing or paralyzing you) but it is still important to address such issue. +Trees and fruit are attacked by fungi, bacteria and pests. In 2010, the fruit's genome was sequenced as part of research on disease control and selective breeding in apple production. +Worldwide production of apples in 2013 was 90.8 million tonnes. China grew 49% of the total. +Botanical information. +The apple tree is a small, leaf-shedding tree that grows up to tall. The apple tree has a broad crown with thick twigs. +The leaves are alternately arranged simple ovals. They are 5 to 12 centimetres long and 3–6 centimetres (1.2–2.4 in) wide. It has a sharp top with a soft underside. Blossoms come out in spring at the same time that the leaves begin to bud. The flowers are white. They also have a slightly pink color. They have five petals, and 2.5 to 3.5 centimetres (0.98 to 1.4 in) in diameter. The fruit matures in autumn. It is usually 5 to 9 centimetres (2.0 to 3.5 in) in diameter. There are five carpels arranged in a star in the middle of the fruit. Every carpel has one to three seeds. +Wild ancestors. +The wild ancestor of apple trees is "Malus sieversii". They grow wild in the mountains of Central Asia in the north of Kazakhstan, Kyrgyzstan, Tajikistan, and Xinjiang, China, and possibly also "Malus sylvestris". Unlike domesticated apples, their leaves become red in autumn. They are being used recently to develop "Malus domestica" to grow in colder climates. +History. +The apple tree was possibly the earliest tree to be cultivated. Its fruits have become better over thousands of years. It is said that Alexander the Great discovered dwarf apples in Asia Minor in 300 BC. Asia and Europe have used winter apples as an important food for thousands of years. From when Europeans arrived, Argentina and the United States have used apples as food as well. Apples were brought to North America. The first apple orchard on the North American continent was said to be near Boston in 1625. In the 1900s, costly fruit industries, where the apple was a very important species, began developing. +In culture. +Paganism. +In Norse mythology, the goddess Iðunn gives apples to the gods in "Prose Edda" (written in the 13th century by Snorri Sturluson) that makes them young forever. English scholar H. R. Ellis Davidson suggests that apples were related to religious practices in Germanic paganism. It was from there, she claims, that Norse paganism developed. She points out that buckets of apples were discovered in the place of burial for the Oseberg ship in Norway. She also remarks that fruit and nuts (Iðunn having been described as changing into a nut in "Skáldskaparmál") have been discovered in the early graves of the Germanic peoples in England. They have also been discovered somewhere else on the continent of Europe. She suggests that this may have had a symbolic meaning. Nuts are still a symbol of fertility in Southwest England. +Cooking. +Sometimes apples are eaten after they are cooked. Often, apples are eaten uncooked. Apples can also be made into drinks. Apple juice and apple cider are drinks made with apples. +The flesh of the fruit is firm with a taste anywhere from sour to sweet. Apples used for cooking are sour, and need to be cooked with sugar, while other apples are sweet, and do not need cooking. There are some seeds at the core, that can be removed with a tool that removes the core, or by carefully using a knife. +The scientific name of the apple tree genus in the Latin language is "Malus". Most apples that people grow are of the "Malus domestica" species. +Most apples are good to eat raw (not cooked), and are also used in many kinds of baked foods, such as apple pie. Apples are cooked until they are soft to make apple sauce. +Apples are also made into the drinks apple juice and cider. Usually, cider contains a little alcohol, about as much as beer. The regions of Brittany in France and Cornwall in England are known for their apple ciders. +Apple variants. +If one wants to grow a certain type of apple, it is not possible to do this by planting a seed from the wanted type. The seed will have DNA from the apple that the seeds came from, but it will also have DNA from the apple flower that pollinated the seeds, which might be a different variant of apple. This means that the tree which would grow from planting would be a mixture of two, or a hybrid. In order to grow a certain type of apple, a small twig, or 'scion', is cut from the tree that grows the type of apple desired, and then added on to a specially grown stump called a rootstock. The tree that grows will create apples of the type needed. +There are more than 7,500 known variants of apples. Different variants are available for temperate and subtropical climates. One large collection of over 2,100 apple variants is at the National Fruit Collection in England. Most of these variants are grown for eating fresh (dessert apples). However, some are grown simply for cooking or making cider. Cider apples are usually too tart to eat immediately. However, they give cider a rich flavor that dessert apples cannot. +Most popular apple cultivars are soft but crisp. Colorful skin, easy shipping, disease resistance, 'Red Delicious' apple shape, and popular flavor are also needed. Modern apples are usually sweeter than older cultivars. This is because popular tastes in apples have become different. Most North Americans and Europeans enjoy sweet apples. Extremely sweet apples with hardly any acid taste are popular in Asia and India. +World production. +Apples are grown around the world. China produces more than half of all commercially grown apples. In 2020/2021, China produced 44,066,000 metric tons. Other important producers were the European Union (11,719,000 metric tons), the United States (4,490,000 metric tons), and Turkey (4,300,000 metric tons). Total world production was 80,522,000 metric tons. +In the United Kingdom. +In the United Kingdom there are about 3000 different types of apples. The most common apple type grown in England is the 'Bramley seedling', which is a popular cooking apple. +Apple orchards are not as common as they were in the early 1900s, when apples were rarely brought in from other countries. Organizations such as Common Ground teach people about the importance of rare and local varieties of fruit. +In North America. +Many apples are grown in temperate parts of the United States and Canada. "Washington State currently produces over half the Nation's domestically grown apples and has been the leading apple-growing State since the early 1920s." New York and Michigan are the next two leading states in apple production. "The total reported area dedicated to the crop in the United States is 336,940 acres or 526.47 square miles." +In many areas where apple growing is important, people have huge celebrations: +Varieties of apples. +There are many different varieties of apples, including +Family. +Apples are in the group Maloideae. This is a subfamily of the family "Rosaceae". They are in the same subfamily as pears. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Application.txt b/.github/workflows/data/simplewiki-500/Application.txt new file mode 100644 index 000000000..772425a6b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Application.txt @@ -0,0 +1,2 @@ +The word application has several uses. +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/April.txt b/.github/workflows/data/simplewiki-500/April.txt new file mode 100644 index 000000000..2ab7bf924 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/April.txt @@ -0,0 +1,12 @@ +April (Apr.) is the fourth month of the year in the Julian and Gregorian calendars, and comes between March and May. It is one of four months to have 30 days. +April always begins on the same day of the week as July, and additionally, January in leap years. April always ends on the same day of the week as December. +The Month. +April comes between March and May, making it the fourth month of the year. It also comes first in the year out of the four months that have 30 days, as June, September and November are later in the year. +April begins on the same day of the week as July every year and on the same day of the week as January in leap years. April ends on the same day of the week as December every year, as each other's last days are exactly 35 weeks (245 days) apart. +In common years, April starts on the same day of the week as October of the previous year, and in leap years, May of the previous year. In common years, April finishes on the same day of the week as July of the previous year, and in leap years, February and October of the previous year. In common years immediately after other common years, April starts on the same day of the week as January of the previous year, and in leap years and years immediately after that, April finishes on the same day of the week as January of the previous year. +In years immediately before common years, April starts on the same day of the week as September and December of the following year, and in years immediately before leap years, June of the following year. In years immediately before common years, April finishes on the same day of the week as September of the following year, and in years immediately before leap years, March and June of the following year. +April is a spring month in the Northern Hemisphere and an autumn/fall month in the Southern Hemisphere. In each hemisphere, it is the seasonal equivalent of October in the other. +It is unclear as to where April got its name. A common theory is that it comes from the Latin word "aperire", meaning "to open", referring to flowers opening in spring. Another theory is that the name could come from Aphrodite, the Greek goddess of love. It was originally the second month in the old Roman Calendar, before the start of the new year was put to January 1. +Quite a few festivals are held in this month. In many Southeast Asian cultures, new year is celebrated in this month (including Songkran). In Western Christianity, Easter can be celebrated on a Sunday between March 22 and April 25. In Orthodox Christianity, it can fall between April 4 and May 8. At the end of the month, Central and Northern European cultures celebrate Walpurgis Night on April 30, marking the transition from winter into summer. +April in poetry. +Poets use "April" to mean the end of winter. For example: "April showers bring May flowers." \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Aquaculture.txt b/.github/workflows/data/simplewiki-500/Aquaculture.txt new file mode 100644 index 000000000..e96125451 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Aquaculture.txt @@ -0,0 +1,5 @@ +Aquaculture is the farming of fish, shrimp, abalones, algae, and other seafood. Aquaculture supplies fish, such as catfish, salmon, and trout. It was developed a few thousand years ago in China. Aquaculture supplies over 20% of all the seafood harvested. +Fish farming has been practiced, in some parts of the world, for thousands of years. Goldfish originated about a thousand years ago in carp farms in China, and the Roman Empire farmed oysters and other seafood. Today, half of the seafood eaten in the U.S. is farmed. To help meet the growing global demand for seafood, aquaculture is growing fast. +The environmental impact of fish farming varies widely, depending on the species being farmed, the methods used and where the farm is located. When good practices are used, it's possible to farm seafood in a way that has very little impact to the environment. Such operations limit habitat damage, disease, escapes of farmed fish and the use of wild fish as feed. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Archaeology.txt b/.github/workflows/data/simplewiki-500/Archaeology.txt new file mode 100644 index 000000000..67ba35f48 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Archaeology.txt @@ -0,0 +1,27 @@ +Archaeology, or archeology, is the study of the human past. It looks at remains and objects left by the people who lived long ago. These remains may include old coins, tools, buildings, and inscriptions. Archaeologists, the people who study archaeology, use these remains to understand how people lived. +Fieldwork. +When archaeologists do fieldwork, they look for remains, often by digging in the ground. As settlements (places where people lived in groups) change and grow, old buildings get buried. Usually, this is a natural process. A typical student project is to leave an object in a place where there is nothing going on. It will get covered rather quickly, because wind, water and plants will bury it. Sometimes buildings are deliberately buried to make way for new buildings. Ancient Rome, for example, is now up to 40 feet (12 metres) below the present city. This process of natural or man-made burial is why archaeological fieldwork involves digging, and is expensive and takes a long time. +When things are found, or even when nothing is found, the results of the fieldwork are taken back to a base. Short term, the base is often on or near the site. Longer term, the results will usually go to a university or museum. Everything is written down on paper or entered into a computer. Gradually, they build up a picture of what happened long ago. Archaeologists publish their research so others can understand what they learned. +Fields of interest. +Archaeologists do not all study the same topics. They have specialties. Some fields of interest include Ancient Egypt (these specialists are called Egyptologists), Ancient China, or the Vikings. Archaeologists study every civilization that is known, especially the ones where there is no written history. They can study any time period. For example, one might study the beginning of human life in Africa, or study World War II. Marine archaeologists study things that are now underwater. They search for sunken ships or cities that have been lost under the sea. +Subdisciplines. +There are many different ways of doing archaeology. these depend on the methods used, the things studied, and the environment. Some of these subdisciplines overlap with each other. +Marine archaeology. +Archaeology relating to oceans, seas and lakes is usually done underwater. It includes the study of sunken ships and submerged coastlines. "Maritime archaeology" is a part of this subdivision. It refers to the archaeological investigation of past ships and seafaring. A famous example of maritime archaeology is the recovery and restoration of the ship Vasa. +Ice-patch archaeology. +When a glacier melts, objects that were captured in it are revealed. The recovery and study of these objects is called "ice-patch archaeology". A famous example is Ötzi the Iceman. +Historical archaeology. +Historical archaeology deals with places, things, and issues from the past or present at or related to sites with written records or oral traditions. Or it can be defined as "the archaeological investigation of any past culture that has developed a literate tradition." A prominent example of historical archaeology is the work done at Colonial Williamsburg. +Industrial archaeology. +This relatively new branch of archaeology consists of "the systematic study of structures and artefacts as a means of enlarging our understanding of the industrial past." +Archaeozoology. +Archaeozoology, or zooarchaeology, is the study of the relationships between humans and animals in the archaeological record. This includes the study of bones, feathers, teeth and other body parts as well as their interpretation. +Paleoethnobotany. +Paleoethnobotany (also spelled palaeoethnobotany), or archaeobotany, is the study of past human-plant relations through the recovery and analysis of plant remains from the past, usually from archaeological sites. People who do this can be archaeologists, botanists, or chemists. +Experimental archaeology. +This field involves attempts at replicating the actions and conditions of ancient cultures. Good examples are Butser Ancient Farm and Overton Down. +Sites. +In many countries, governments and other groups of people protect important archaeological sites so they will not be destroyed and so that visitors can always come and see them. +Sometimes archaeological sites are found when foundations are dug for new buildings. Archaeologists have to work quickly when this happens, because people who are building often don't have a lot of time. As soon as the archaeologists are done with their work, the remains that they have found will be covered over, unless they are very important. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Architecture.txt b/.github/workflows/data/simplewiki-500/Architecture.txt new file mode 100644 index 000000000..4cb3ec77d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Architecture.txt @@ -0,0 +1,14 @@ +Architecture is the process of designing structures and buildings. It uses both art and engineering. Examples include houses, churches, hotels, office buildings, roads, tunnels and bridges. +Architecture is the profession of an architect. Usually, a person must study at an institution of higher education (university) to become an architect. There were architects long before there was higher education. They learnt by being an apprentice to an established architect. +Architecture can do small designs, such as for a garage, or large designs, such as for a whole new town. The capital cities of Brasília, and Canberra were designed. Architects often work with structural engineers to make structurally sound buildings. +History. +In the past, people built huts and wood houses to protect themselves from the weather. For safety, they were often close together. Great civilizations like the Ancient Egyptians built large temples and structures, like the Great Pyramids of Giza. The Ancient Greeks and Romans made what we now call "Classical Architecture". The Romans, working over 2000 years ago, copied the arch from the Etruscans, who copied it from the Mesopotamians. +Classical architecture was formal, and it always obeyed laws. It used symmetry, which really means balance, and it used proportion between shapes. The Golden Mean was a rule which said, (to put it simply) if you are making a room, or any other thing, it will work best if you always make the long side 1.6 times as long as the short side. There are many 'laws' in classical architecture, like how high the middle of an arched bridge needs to be (which depends on how wide the bridge needs to be). These laws were learned from thousands of years of experience and they are often used today. However, today more notice is taken of specific facts, such as what wind speeds occur once or twice in a century. Several bridges have blown down because that was not properly taken into consideration. +In some parts of the world, like India, the architecture is famous for carving the stone on temples and palaces. Different architectural styles occur in China, Japan, Southeast Asia, Africa, Mexico, and Central and South America. +Architects in Western Europe in the Middle Ages made Romanesque architecture, then Gothic architecture. Gothic buildings have tall, pointed windows and arches. Many churches have Gothic architecture. Castles were also built at this time. In Eastern Europe, churches usually had domes. People added their own ideas and decoration to the Classical Architecture of the past. The Renaissance brought a return to classical ideas. +In the late 18th century with the Industrial Revolution, people began to invent machines to make things quickly and cheaply. Many factories and mills were built during, or after this revolution. Decades later, in the Victorian era, architects like George Fowler Jones and Decimus Burton still followed the Gothic style to build new churches. Up to this point, buildings were limited in size and style by the strength of the wood and masonry used to construct them. Gothic cathedrals were among the largest buildings because the gothic arch when combined with buttresses allowed stone buildings to be built taller. For example, the cathedral in Ulm, Germany is over 500 feet tall. However, building with stone has its limits, and building too tall could result in collapse. This happened to the Beauvais Cathedral, which was never completed. +Towards the end of the 19th Century with a second Industrial Revolution, steel became much cheaper. Architects began to use inventions like metal girders and reinforced concrete to build. An example is the Eiffel Tower in Paris. Buildings can now be built taller than ever before. We call them skyscrapers. This new technology has made us free from traditional limitations, and because of the new possibilities presented by these materials, many traditional methods of construction and ideas about style were reevaluated, replaced, or abandoned. Cheap, strong glass soon brought transparent exterior walls, especially for office buildings. +Modernism is the name for the architectural style which developed because of these new building technologies, and its beginnings can been seen as early as 1890. Modernism can also refer to a specific group of architects and buildings from the early to late 20th century, and so may not be the proper term to use for many building built since then, which are sometimes called "post-modern". +Many of the world's greatest structures were built by modern-day architects such as Frank Lloyd Wright; Sir Hugh Casson; Norman Foster; I. M. Pei; Adrian Smith; Edward Durell Stone; Frank Gehry; Fazlur Khan; Gottfried Böhm; and Bruce Graham. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Argentina.txt b/.github/workflows/data/simplewiki-500/Argentina.txt new file mode 100644 index 000000000..2a8d9fcb2 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Argentina.txt @@ -0,0 +1,27 @@ +Argentina, officially the Argentine Republic, is a country in South America. Argentina is the second-largest country in South America and the eighth-largest country in the world. +Spanish is the most spoken language, and the official language, but many other languages are spoken. There are minorities speaking Italian, German, English, Quechua and even Welsh in Patagonia. +In eastern Argentina is Buenos Aires, the capital of Argentina, it is also one of the largest cities in the world. In order by number of people, the largest cities in Argentina are Buenos Aires, Córdoba, Rosario, Mendoza, La Plata, Tucumán, Mar del Plata, Salta, Santa Fe, and Bahía Blanca. +Argentina is between the Andes mountain range in the west and the southern Atlantic Ocean in the east and south. It is bordered by Paraguay and Bolivia in the north, Brazil and Uruguay in the northeast, and Chile in the west and south. It also claims the Falkland Islands (Spanish: "Islas Malvinas") and South Georgia and the South Sandwich Islands. Most citizens of the Argentine Republic are descendants of immigrants from Europe. They are united by citizenship and not necessarily by ethnicity. Most Argentinians embrace both their ethnic origins and Argentinian nationality. +History. +The name Argentina comes from the Latin "argentum" (silver) as the Spanish conquistadors believed the area had silver. In the Americas (South and North), Canada, US, Brazil and Argentina are the largest countries (in that order). +The oldest signs of people in Argentina are in the Patagonia (Piedra Museo, Santa Cruz), and are more than 13,000 years old. In 1480 the Inca Empire conquered northwestern Argentina, making it part of the empire. In the northeastern area, the Guaraní developed a culture based on yuca and sweet potato however typical dishes all around Argentina are pasta, red wines (Italian influence) and beef. +Other languages spoken are Italian, English and German. Lunfardo is Argentinean slang and is a mix of Spanish and Italian. Argentinians are said to speak Spanish with an Italian accent. +Argentina declared independent from Spain in 1816, and achieved it in a War led by José de San Martín in 1818. Many immigrants from Europe came to the country. By the 1920s it was the 7th wealthiest country in the world, but it began a decline after this. In the 1940s, following the "infamous decade" where the country's politics were not stable, Juan Peron came to power. Peron was one of the most important people in the country's history and many politicians today call themselves Peronist. Peron was forced out of power in 1955. After spending years in exile he returned to power in the 1970s. +In 1976, the country was falling into chaos, and the military took power. This was not the first time the military had done this. Leading the new government was Jorge Rafael Videla. Videla was one of history's most brutal dictators. Thousands of people disappeared or were killed during his time as president. Videla retired in 1980. +One of his successors was another general turned dictator, Leopoldo Galtieri. By the time Galtieri was in office in 1981 the dictatorship became unpopular. To stir up support, Galtieri ordered an invasion of the Falkland Islands, starting the Falklands War. Argentina lost the war, and soon the country fell into chaos again. Galtieri was removed from power and eventually democracy was restored. Galtieri and Videla would be charged with "crimes against humanity" because of the mass murder and other crimes that they ordered as president. +In the early 21st century Argentina is one of the most important countries in Latin America, though it still has many problems. It has a large economy and is influential in the "southern cone" of South America and a member of the G20 developing nations. +Politics. +Argentina is a federal republic. The people of Argentina vote for a President to rule them and Senators and Deputies to speak for them and make laws for them. The President is Javier Milei since December 2023. +Administrative divisions. +Argentina is divided into 23 provinces ("provincias"; singular: "provincia"), and 1 city (commonly known as "capital federal"): +Geography. +Argentina is almost 3,700 km long from north to south, and 1,400 km from east to west (maximum values). It can be divided into three parts: the Pampas in the central part of the country, Patagonia in the southern part down to Tierra del Fuego; and the Andes mountain range along the western border with Chile, with the highest point in the province of Mendoza. Cerro Aconcagua, at 6,960 metres (22,834 ft), is the Americas' highest mountain. +The most important rivers include the River Plate, Paraguay, Bermejo, Colorado, Uruguay and the largest river, the Paraná. River Plate was incorrectly translated though, and should have been translated to English as River of (the) Silver. River Plate is also a famous Buenos Aires soccer team. +See List of cities in Argentina for the many places people live in Argentina. +Other information. +The majority of the Argentineans are descendants of Europeans mainly from Spain, Italy, Russia, France, Germany , Arabs other Europeans countries and Mestizo representing more than 90% of the total population of the country. More than 300,000 Roma gypsies live in Argentina. Since the 1990s, Romanian, Brazilian and Colombian gypsies arrived in Argentina. +Football or soccer is the most popular sport, although the national sport of the country is Pato. Argentina has a number of highly ranked Polo players. Field hockey (for women) rugby and golf are also favorites. +Argentina is a Christian country. Most of Argentina's people (80 percent) are Roman Catholic. Argentina also has the largest population of Jewish community after Israel and US. Middle Eastern immigrants who were Muslims converted to Catholicism, but there are still Muslims as well. +Medicine is socialized and so is education, making Argentina's literacy rate about 98%. State University is free as well. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Arithmetic.txt b/.github/workflows/data/simplewiki-500/Arithmetic.txt new file mode 100644 index 000000000..fa2487818 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Arithmetic.txt @@ -0,0 +1,9 @@ +In mathematics, arithmetic is the basic study of numbers. The four basic arithmetic operations are addition, subtraction, multiplication, and division, although other operations such as exponentiation and roots are also studied in arithmetic. +Other arithmetic topics includes working with negative numbers, fractions, decimals and percentages. +Overview. +Most people learn arithmetic in primary school, but some people do not learn arithmetic and others forget the arithmetic they learned. Many jobs require a knowledge of arithmetic, and many employers complain that it is hard to find people who know enough arithmetic. +Applications. +A few of the many jobs that require arithmetic include carpenters, plumbers, mechanics, accountants, architects, doctors, and nurses. Arithmetic is needed in all areas of mathematics, science, and engineering. +Some arithmetic can be carried out mentally. A calculator can also be used to perform arithmetic. Computers can do it more quickly, which is one reason Global Positioning System receivers have a small computer inside. +References. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Armenia.txt b/.github/workflows/data/simplewiki-500/Armenia.txt new file mode 100644 index 000000000..d1449856f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Armenia.txt @@ -0,0 +1,21 @@ +Armenia (, romanized: "Hayastān"), officially the Republic of Armenia, is a landlocked country located in the Armenian Highlands, spanning Eastern Europe and Western Asia. +History. +The Hittites and Hayasa-Azzi may have played a significant role in the ethnicity of Armenians. It has an ancient cultural heritage. One of the earliest Armenian kingdoms such as Urartu was established in 860 BC and by the 6th century BC it was replaced by the Satrapy of Armenia. The Kingdom of Armenia reached its height under Tigranes the Great in the 1st century BC and became the first state in the world to adopt Christianity as its official state religion in the late 3rd or early 4th century AD. The official date of state adoption of Christianity is 301. +Foreign invasion. +Between the 16th century and 19th century, the traditional Armenian homeland composed of Eastern Armenia and Western Armenia came under the rule of the Ottoman and Iranian empires, repeatedly ruled by either of the two over the centuries. By the 19th century, Eastern Armenia had been conquered by the Russian Empire, while most of the western parts of the traditional Armenian homeland remained under Ottoman rule. +20th century. +During World War I, Armenians living in their ancestral lands in the Ottoman Empire were systematically +exterminated in the Armenian Genocide, perpetrated by Ottoman Young Turks. Around 1.5 million people were slaughtered and many more deported. In 1918, following the Russian Revolution, all non-Russian countries declared their independence after the Russian Empire ceased to exist, leading to the establishment of the First Republic of Armenia. By 1920, the state was incorporated into the Transcaucasian Socialist Federative Soviet Republic, and in 1922 became a founding member of the Soviet Union. In 1936, the Transcaucasian state was dissolved, transforming its constituent states, including the Armenian Soviet Socialist Republic, into full Union republics. The modern Republic of Armenia became independent in 1991 during the dissolution of the Soviet Union. +Administrative divisions. +Armenia is divided into ten provinces, with the city of Yerevan having special administrative status as the country's capital. The chief executive in each of the ten provinces is the "marzpet" ("marz" governor), appointed by the government of Armenia. In Yerevan, the chief executive is the mayor, appointed by the president. +As of 2007[ [update]], Armenia includes 915 communities, of which 49 are considered urban and 866 are considered rural. +† 2011 censusSources: Area and population of provinces. +Culture. +Armenia is a majority Christian country, with European and some wider Eurasian cultural influences. The Republic of Armenia recognises the Armenian Apostolic Church, the world's oldest national church, as the country's primary religious establishment. The unique Armenian alphabet was invented by Mesrop Mashtots in 405 AD. Armenia also has a minority of Yazidis who settled in the country after fleeing persecution and have long established themselves into the wider Armenian society and have been integrated into the country. +Armenia is a member of the Council of Europe, the Eurasian Economic Union and the Collective Security Treaty Organization. Armenia supports the de facto independent Republic of Artsakh, which was proclaimed in 1991. +Gallery. +<br> +References. +<templatestyles src="Reflist/styles.css" /> +Notes. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Art.txt b/.github/workflows/data/simplewiki-500/Art.txt new file mode 100644 index 000000000..6379c495b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Art.txt @@ -0,0 +1,34 @@ +Art is a creative activity. It produces a product, an object. Art is a diverse range of human activities in creating visual, performing subjects, and expressing the author's thoughts. The product of art is called a work of art, for others to experience. +Some art is useful in a practical sense, such as a sculptured clay bowl that can be used. That kind of art is sometimes called a "craft". +Those who make art are called artists. They hope to affect the emotions of people who experience it. Some people find art relaxing, exciting or informative. Some say people are driven to make art due to their inner creativity. +"The arts" is a much broader term. It includes drawing, painting, sculpting, photography, performance art, dance, music, poetry, prose and theatre. +Types of art. +Art is divided into the plastic arts, where something is made, and the performing arts, where something is done by humans in action. The other division is between pure arts, done for themselves, and practical arts, done for a practical purpose, but with artistic content. +What "art" means. +Some people say that art is a product or item that is made with the intention of stimulating the human senses as well as the human mind, spirit and soul. Art can also be an Idea or a concept that is expressed visually. An artwork is normally judged by how much impact it has on people, the number of people who can relate to it, and how much they appreciate it. Some people also get inspired. +The first and broadest sense of "art" means "arrangement" or "to arrange." In this sense, art is created when someone arranges things found in the world into a new or different design or form; or when someone arranges colors or forms next to each other to make an image or just to make a pretty or interesting look. Art can also be an an existing object that is presented and called art, this is called re contextualizing. This is often done by placing the object in a frame or a special setting like a Gallery were the new setting gives the object a different meaning or message. (Marcel Duchamp, "Fountain," 1917) +The difference between Art and design can be subjective to the viewer and hard to distinguish. Art is often said to have a message or a meaning and design is about only the appearance. +Art may express emotion. Artists may feel a certain emotion or message and wish to express it by creating something that means something to them. Most of the art created in this case is made for the artist rather than an audience. However, if an audience is able to connect with the emotion or the message as well, then the art work may become publicly successful. +History of art. +There are sculptures, cave painting and rock art dating from the Upper Paleolithic era. +All of the great ancient civilizations, such as Ancient Egypt, India, China, Greece, Rome and Persia had works and styles of art. In the Middle Ages, most of the art in Europe showed people from the Bible in paintings, stained-glass windows, and mosaic tile floors and walls. +Islamic art includes geometric patterns, Islamic calligraphy, and architecture. In India and Tibet, painted sculptures, dance, and religious painting were done. In China, arts included jade carving, bronze, pottery, poetry, calligraphy, music, painting, drama, and fiction. There are many Chinese artistic styles, which are usually named after the ruling dynasty. +In Europe, after the Middle Ages, there was a "Renaissance" which means "rebirth". People rediscovered science and artists were allowed to paint subjects other than religious subjects. People like Michelangelo and Leonardo da Vinci still painted religious pictures, but they also now could paint mythological pictures too. These artists also invented perspective where things in the distance look smaller in the picture. This was new because in the Middle Ages people would paint all the figures close up and just overlapping each other. These artists used nudity regularly in their art. +In the late 1800s, artists in Europe, responding to Modernity created many new painting styles such as Classicism, Romanticism, Realism, and Impressionism. The history of twentieth century art includes Expressionism, Fauvism, Cubism, Dadaism, Surrealism, and Minimalism. +Roles of art. +In some societies, people think that art belongs to the person who made it. They think that the artist put his or her "talent" and industry into the art. In this view, the art is the property of the artist, protected by copyright. +In other societies, people think that art belongs to no one. They think that society has put its social capital into the artist and the artist's work. In this view, society is a collective that has made the art, through the artist. +Functions of art. +The functions of art include: +1) Cognitive function + Works of art let us know about what the creator thought or knew, and what the surroundings of the author were like, real or imagined. +2) Aesthetic function + Works of art can make people happy by being beautiful or evoke any of the emotions. +3) Prognostic function + Some artists draw what they see the future like, and some of them are right, but most are not... +4) Recreation function + Art makes us think about it, not about reality; we have a rest. +5) Value function + What did the artist value? What aims did they like/dislike in human activity? This usually is clearly seen in artists' works. +6) Didactic function + What message, criticism or political change did the artist wish to achieve? \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/As.txt b/.github/workflows/data/simplewiki-500/As.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Asteroid.txt b/.github/workflows/data/simplewiki-500/Asteroid.txt new file mode 100644 index 000000000..72fe52bcb --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Asteroid.txt @@ -0,0 +1,7 @@ +An asteroid is a minor planet that orbits within the inner solar system. It is a small object in the Solar System that travels around the Sun. It is like a planet but smaller. They range from very small (smaller than a car) to 600 miles (1000 km) across. A few asteroids have an asteroid moon. +The name "asteroid" means "like a star" in the ancient Greek language. Asteroids may look like small stars in the sky, but they really do move around the Sun. Like planets, asteroids do not make their own light. Because of this, some people think "asteroids" is not a good name, and think that the name "planetoid" ("like a planet") would be a better name. +Giuseppe Piazzi found the first asteroid, in 1801. He called it Ceres, and it is the biggest object in the asteroid belt. Others, like Juno, Pallas, and Vesta were found later. In the 1850s, so many had been found that they were numbered by a Minor planet designation starting with 1 Ceres. Today, astronomers using computerized telescopes find thousands of asteroids every month. Asteroid impact prediction is one of their purposes. +Asteroids are the leftover rock and other material from the formation of the Solar System. These rocks were too small to come together to make a planet. Some are made of carbon or metal. Depending on what's on the surface, they are classified into various asteroid spectral types including Type M (metal), Type S (stone), and Type C (carbon). +Most asteroids in our Solar System are in the asteroid belt between Mars and Jupiter. Many are not in the main asteroid belt. The ones that come close to Earth are called Near-Earth asteroids. Some scientists think asteroids striking the Earth killed off all the dinosaurs and caused some of the other extinction events. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Astronomy.txt b/.github/workflows/data/simplewiki-500/Astronomy.txt new file mode 100644 index 000000000..fc06588ea --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Astronomy.txt @@ -0,0 +1,64 @@ +Astronomy is the scientific study of celestial bodies. Stars, galaxies, planets, moons, asteroids, comets and nebulae are studied, as are supernovae explosions, gamma ray bursts, and cosmic microwave background radiation. Astronomy includes the development, physics, chemistry, meteorology and movement of celestial bodies. The big questions are the structure and development of the universe. +Astronomy is one of the oldest sciences. The patterns of stars in the night sky were called constellations by the Arabs. They used the positions of the stars to navigate, and to find when was the best time to plant crops. +Astrophysics is an important part of astronomy. A related subject, cosmology, is concerned with studying the universe as a whole, and the way the universe changed over time. Astronomy is not the same as "astrology", a belief that the motion of the stars and the planets may affect human lives. +There are two main types of astronomy, "observational" and "theoretical" astronomy. Observational astronomy uses telescopes and cameras to "observe" or look at stars, galaxies and other astronomical objects. Theoretical astronomy explains what we see. It predicts what might happen. Observations show whether the predictions work. The main work of astronomy is to explain puzzling features of the Universe. For many years the most important issue was the motions of planets. Many other topics are now studied. +Day-time astronomy is possible. First, there's the Sun, but observing directly is dangerous. It is too bright, and can burn your eyes and can cause permanent blindness. To look at the Sun you need proper shields and equipment. Some other individual bright stars and planets can be seen during daylight hours through a telescope or a powerful pair of binoculars. +History of astronomy. +Ancient history. +Early astronomers used only their eyes to look at the stars. They made maps of the constellations and stars for religious reasons and calendars to work out the time of year. Early civilisations such as the Maya people and the Ancient Egyptians built simple observatories and drew maps of the stars positions. They also began to think about the place of Earth in the universe. For a long time people thought Earth was the center of the universe, and that the planets, the stars and the sun went around it. This is known as geocentrism. Astronomy is from the Greek "astron" (ἄστρον) meaning "star" and "nomos" (nόμος) meaning "law") +Ancient Greeks tried to explain the motions of the Sun and stars by taking measurements. A mathematician named Eratosthenes was the first who measured the size of the Earth and proved that the Earth is a sphere. A theory by another mathematician named Aristarchus was, that the Sun is the center and the Earth is moving around it. This is known as heliocentrism. Only a few people thought it was right. The rest continued to believe in the "geocentric" model. Most of the names of constellations and stars come from Greeks of that time. +Arabic astronomers made many advancements during the Middle Ages including improved star maps and ways to estimate the size of the Earth. They also learned from the ancients by translating Greek books into Arabic. +Renaissance to modern era. +During the renaissance a priest named Nicolaus Copernicus thought, from looking at the way the planets moved, that the Earth was not the center of everything. Based on previous works, he said that the Earth was a planet and all the planets moved around the Sun. This brought back the old idea of heliocentrism. Galileo Galilei built his own telescopes, and used them to look more closely at the stars and planets for the first time. He agreed with Copernicus. The Catholic Church thought Galileo was wrong. He spent the rest of his life under house arrest. Heliocentric ideas were soon improved by Johannes Kepler and Isaac Newton, who invented the theory of gravity. +After Galileo, people made better telescopes and used them to see farther objects such as the planets Uranus and Neptune. They also saw how stars were similar to our Sun, but in a range of colours and sizes. They also saw thousands of other faraway objects such as galaxies and nebulae. +Modern era. +The 20th century after 1920 saw important changes in astronomy. +In the early 1920s it began to be accepted that the galaxy in which we live, the Milky Way, is not the only galaxy. The existence of other galaxies was settled by Edwin Hubble, who identified the Andromeda nebula as a different galaxy. It was also Hubble who proved that the universe was expanding. There were many other galaxies at large distances and they are receding, moving away from our galaxy. That was completely unexpected. +In 1931, Karl Jansky discovered radio emission from outside the Earth when trying to isolate a source of noise in radio communications, marking the birth of radio astronomy and the first attempts at using another part of the electromagnetic spectrum to observe the sky. Those parts of the electromagnetic spectrum that the atmosphere did not block were now opened up to astronomy, allowing more discoveries to be made. +The opening of this new window on the Universe saw the discovery of entirely new things, for example pulsars, which sent regular pulses of radio waves out into space. The waves were first thought to be alien in origin because the pulses were so regular that (so it was thought) it implied an artificial source. +The period after World War II saw more observatories. Large and accurate telescopes were built and operated at good observing sites, usually by governments. For example, Bernard Lovell began radio astronomy at Jodrell Bank using leftover military radar equipment. By 1957, the site had the largest steerable radio telescope in the world. Similarly, the end of the 1960s saw the start of the building of dedicated observatories at Mauna Kea in Hawaii, a good site for visible and infra-red telescopes thanks to its high altitude and clear skies. +The next great revolution in astronomy was thanks to the birth of rocketry. This allowed telescopes to be placed in space on satellites. +Space telescopes gave access, for the first time in history, to the entire electromagnetic spectrum including rays that had been blocked by the atmosphere. The X-rays, gamma rays, ultraviolet light and parts of the infra-red spectrum were all opened to astronomy as observing telescopes were launched. As with other parts of the spectrum, new discoveries were made. +From 1970s satellites were launched to be replaced with more accurate and better satellites, causing the sky to be mapped in nearly all parts of the electromagnetic spectrum. +Discoveries. +Discoveries broadly come in two types: bodies and phenomena. Bodies are things in the Universe, whether it is a planet like our Earth, or a galaxy like our Milky Way. Phenomena are events and happenings in the Universe. +Bodies. +For convenience, this section has been divided by where these astronomical bodies may be found: those found around stars are solar bodies, those inside galaxies are galactic bodies and everything else larger are cosmic bodies. +Galactic. +Diffuse Objects: +Compact Stars: +Phenomena. +Burst events are those where there is a sudden change in the heavens that disappears quickly. These are called bursts because they are normally associated with large explosions producing a "burst" of energy. They include: +Periodic events are those that happen regularly in a repetitive way. The name periodic comes from period, which is the length of time required for a wave to complete one cycle. Periodic phenomena include: +Noise phenomena tend to relate to things that happened a long time ago. The signal from these events bounce around the Universe until it seems to come from everywhere and varies little in intensity. In this way, it is "noise", the background signal that pervades every instrument used for astronomy. The most common example of noise is static seen on analogue televisions. The principal astronomical example is: cosmic background radiation. +Methods. +Techniques. +There are way astronomers can get better pictures of the heavens. Light from a distant source reaches a sensor and gets measured, normally by a human eye or a camera. For very dim sources, there may not be enough light particles coming from the source for it to be seen. One technique that astronomers have for making it visible is using "integration" (which is like longer exposures in photography). +Integration. +Astronomical sources do not move much: only the rotation and movement of the Earth causes them to move across the heavens. As light particles reach the camera over time, they hit the same place making it brighter and more visible than the background, until it can be seen. +Telescopes at most observatories (and satellite instruments) can normally track a source as it moves across the heavens, making the star appear still to the telescope and allowing longer exposures. Also, images can be taken on different nights so exposures span hours, days or even months. In the digital era, digitised pictures of the sky can be added together by computer, which overlays the images after correcting for movement. +Adaptive optics. +Adaptive optics means changing the shape of the mirror or lens while looking at something, to see it better. +Data analysis. +Data analysis is the process of getting more information out of an astronomical observation than by simply looking at it. The observation is first stored as data. This data then has various techniques used to analyse it. +Fourier analysis. +Fourier analysis in mathematics can show if an observation (over a length of time) is changing periodically (changes like a wave). If so, it can extract the frequencies and the type of wave pattern, and find many things including new planets. +Subfields of astronomy. +Pulsars pulse regularly in radio waves. These turned out to be similar to some (but not all) of a type of bright source in X-rays called a Low-mass X-ray binary. It turned out that all pulsars and some LMXBs are neutron stars and that the differences were due to the environment in which the neutron star was found. Those LMXBs that were not neutron stars turned out to be black holes. +This section attempts to provide an overview of the important fields of astronomy. +Solar astronomy. +Solar astronomy is the study of the Sun. The Sun is the closest star to Earth at around 92 million (92,000,000) miles away. It is the easiest to observe in detail. Observing the Sun can help us understand how other stars work and are formed. Changes in the Sun can affect the weather and climate on Earth. A stream of charged particles called the Solar wind is constantly sent off from the Sun. The Solar wind hitting the Earth's magnetic field causes the northern lights. +Stellar astronomy +Stellar astronomy, sometimes "stellar astrophysics" is the scientific study of stars, their formation, evolution and fate (stellar evolution). In the most basic sense, Stellar Astronomy attempts to answer the questions to the universe's most common phenomena — stars. Heavily relating with Galactic and Planetary Astronomy. +Planetary astronomy. +Planetary astronomy is the study of planets, moons, dwarf planets, comets and asteroids as well as other small objects that orbit stars. The planets of our own Solar System have been studied in depth by many visiting spacecraft such as Cassini-Huygens (Saturn) and the Voyager 1 and 2. +Galactic astronomy. +Galactic astronomy is the study of distant galaxies. Studying distant galaxies is a good way of learning about our own galaxy, as the gases and stars in our own galaxy make it difficult to observe. Galactic astronomers try to understand the structure of galaxies and how they are formed by using different types of telescopes and computer simulations. +Gravitational wave astronomy. +Gravitational wave astronomy is the study of the Universe in the gravitational wave spectrum. So far, all astronomy that has been done has used the electromagnetic spectrum. Gravitational waves are ripples in spacetime emitted by very dense objects changing shape, which include white dwarves, neutron stars and black holes. Because no one has been able to detect gravitational waves directly, the impact of gravitational wave astronomy has been limited. +Unsolved problems. +Great discoveries also produce unsolved problems. This is just a short-list: +Related pages. +<templatestyles src="Div col/styles.css"/> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Atom.txt b/.github/workflows/data/simplewiki-500/Atom.txt new file mode 100644 index 000000000..9305f8917 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Atom.txt @@ -0,0 +1,66 @@ +An atom is an extremely small piece of matter. All normal matter – everything that has mass – is made of atoms. This includes solids, liquids, and gases. The atom cannot be broken to parts by chemistry, so people once thought it was the smallest piece of matter that could exist. There are over 100 different kinds of atoms, called chemical elements. Each kind has the same basic structure, but a different number of parts. +Atoms are very small, but their exact size depends on the type. Atoms are from 0.1 to 0.5 nanometers across. One nanometer is about 100,000 times smaller than the width of a human hair. This makes one atom impossible to see without special tools. Scientists learn how they work by doing experiments. +Atoms are made of three kinds of subatomic particles. These are protons, neutrons, and electrons. Protons and neutrons have much more mass. These are in the middle of the atom, called the nucleus. Lightweight electrons move quickly around them. The electromagnetic force holds the nucleus and electrons together. +Atoms with the same number of protons belong to the same chemical element. Examples of elements are carbon and gold. Atoms with the same number of protons, but different numbers of neutrons, are called isotopes. Usually an atom has the same number of electrons as protons. If an atom has more or less electrons than protons, it is called an ion, and has an electric charge. +Atoms can join by chemical bonds. Many things are made of more than one kind of atom. These are chemical compounds or mixtures. A group of atoms connected by chemical bonds is called a molecule. For example, a water molecule is made of two hydrogen atoms and one oxygen atom. The forming or breaking of bonds is a chemical reaction. +Atoms split if the forces inside are too weak to hold them together. This is what causes radioactivity. Atoms can also join to make larger atoms at very high temperatures, such as inside a star. These changes are studied in nuclear physics. Most atoms on Earth are not radioactive. They are rarely made, destroyed, or changed into another kind of atom. +History. +The word "atom" comes from the Greek (ἀτόμος) "atomos", which means "indivisible" or "uncuttable". One of the first people to use the word "atom" is the Greek philosopher Democritus, around 400 . He thought that everything was made of particles called atoms, which could not be divided into smaller pieces. Some Hindu, Jain, and Buddhist philosophers also had ideas like this. Atomic theory was a mostly philosophical subject, with not much scientific investigation or study, until the early 1800s. +In 1777 French chemist Antoine Lavoisier defined the term "element" as we now use it. He said that an element was any substance that could not be broken down into other substances by the methods of chemistry. Any substance which could be broken down was a "compound". +In 1803, English philosopher John Dalton suggested that elements were made of tiny, solid balls called atoms. Dalton believed that all atoms of the same element have the same mass. He said that compounds are formed when atoms of more than one element combine. In any one compound, the atoms would always combine in the same numbers. +In 1827, British scientist Robert Brown looked at pollen grains in water under his microscope. The pollen grains appeared to be shaking. Brown used Dalton's atomic theory to describe patterns in how they moved. This was called "Brownian motion". In 1905 Albert Einstein used mathematics to prove that the pollen particles were being moved by the motion, or heat, of individual water molecules. By doing this, he proved that atoms are real without question. +In 1869, Russian scientist Dmitri Mendeleev published the first periodic table. The periodic table groups elements by their atomic number (how many protons they have; this is usually the same as the number of electrons). Elements in the same column, or group, usually have similar qualities. For example, helium, neon, argon, krypton, and xenon are all in the same column and are very similar. All these elements are gases that have no color or smell. Also, they cannot combine with other atoms to form compounds. Together they are known as noble gases. +The physicist J.J. Thomson was the first person to discover electrons. This happened while he was working with cathode rays in 1897. He learned they had a negative charge, and the rest of the atom had a positive charge. Thomson made the plum pudding model, which said that an atom was like plum pudding: the dried fruit (electrons) were stuck in a mass of pudding (having a positive charge). +In 1909, Ernest Rutherford used the Geiger–Marsden experiment to prove that most of an atom is in a very small space, the atomic nucleus. Rutherford took a photo plate and covered it with gold foil. He then shot alpha particles (made of two protons and two neutrons stuck together) at it. Many of the particles went through the gold foil, which proved that atoms are mostly empty space. Electrons are so small and fast-moving that they did not block the particles from going through. Rutherford later discovered protons in the nucleus. +In 1913, Niels Bohr created the Bohr model. This model showed that electrons travel around the nucleus in fixed circular orbits. This was better than the Rutherford model, but it was still not completely true. +In 1925, chemist Frederick Soddy discovered that some elements had more than one kind of atom, called isotopes. Soddy believed that each different isotope of an element has a different mass. To prove this, chemist Francis William Aston built the mass spectrometer, which measures the mass of single atoms. Aston proved that Soddy was right. He also found that the mass of each atom is a whole number times the mass of the proton. This meant that there must be some particles in the nucleus other than protons. In 1932, physicist James Chadwick shot alpha particles at beryllium atoms. He saw that a particle shot out of the beryllium atoms. This particle had no charge, but about the same mass as a proton. He named this particle the neutron. +The best model so far comes from the Schrödinger equation. Schrödinger learned that the electrons exist in a cloud around the nucleus, called the electron cloud. In the electron cloud, it is impossible to know exactly where electrons are. The Schrödinger equation says where an electron is likely to be. This area is called the electron's orbital. +In 1937, German chemist Otto Hahn became the first person to make nuclear fission in a laboratory. He discovered this by chance when shooting neutrons at a uranium atom, hoping to make a new isotope. However, instead of a new isotope, the uranium changed into a barium atom, a smaller atom than uranium. Hahn had "broken" the uranium atom. This was the world's first recorded nuclear fission reaction. This discovery led to the creation of the atomic bomb and nuclear power, where fission happens over and over again, creating a chain reaction. +Later in the 20th century, physicists went deeper into the mysteries of the atom. Using particle accelerators, they discovered that protons and neutrons were made of other particles, called quarks. +Structure and parts. +Parts. +An atom is made of three main particles: the proton, the neutron, and the electron. Protons and neutrons have nearly the same size and mass (about grams). The mass of an electron is about 1800 times smaller (about grams). Protons have a positive charge, electrons have a negative charge, and neutrons have no charge. Most atoms have no charge. The number of protons (positive) and electrons (negative) are the same, so the charges balance out to zero. However, ions have a different number of electrons than protons, so they have a positive or negative charge. +Scientists believe that electrons are elementary particles: they are not made of any smaller pieces. Protons and neutrons are made of quarks of two kinds: up quarks and down quarks. A proton is made of two up quarks and one down quark, and a neutron is made of two down quarks and one up quark. +Nucleus. +The nucleus is in the middle of the atom. It is made of protons and neutrons. The nucleus makes up more than 99.9% of the mass of the atom. However, it is very small: about 1 femtometer (10−15 m) across, which is around 100,000 times smaller than the width of an atom, so it has a very high density. +Usually in nature, two things with the same charge repel or shoot away from each other. So for a long time, scientists did not know how the positively charged protons in the nucleus stayed together. We now believe that the attraction between protons and neutrons comes from the "strong nuclear force". This force also holds together the quarks that make up the protons and neutrons. Particles called mesons travel back and forth between protons and neutrons, and carry the force. +The number of neutrons in relation to protons defines whether the nucleus stays together or goes through radioactive decay. When there are too many neutrons or protons, the atom tries to make the numbers smaller or more equal by removing the extra particles. It sends out radiation in the form of alpha, beta, or gamma decay. Nuclei can also change in other ways. Nuclear fission is when the nucleus breaks into two smaller nuclei, releasing a lot of energy. This release of energy makes nuclear fission useful for making bombs, and electricity in the form of nuclear power. +The other way nuclei can change is through nuclear fusion, when two nuclei join or fuse to make a larger nucleus. This process requires very high amounts of energy to overcome the electric repulsion between the protons, as they have the same charge. Such high energies are most common in stars like our Sun, which fuses hydrogen for fuel. However, once fusion happens, far more energy is released, because some of the mass becomes energy. +The energy needed to break a nucleus into protons and neutrons is called its nuclear binding energy. This energy can be converted to mass, as stated by Einstein's famous formula "E" = "mc"2. Medium-sized nuclei, such as iron-56 and nickel-62, have the highest binding energy per proton or neutron. They will probably not go through fission or fusion, because they cannot release energy in this way. Very small and very large atoms have low binding energy, so they are most willing to go through fission or fusion. +Electrons. +Electrons orbit, or travel around, the nucleus. They are called the atom's "electron cloud". They are attracted to the nucleus because of the electromagnetic force. Electrons have a negative charge, and the nucleus always has a positive charge, so they attract each other. +The Bohr model shows that some electrons are farther from the nucleus than others in different levels. These are called "electron shells". Only the electrons in the outer shell can make chemical bonds. The number of electrons in the outer shell determines whether the atom is stable or which atoms it will bond with in a chemical reaction. If an atom has only one shell, it needs two electrons to be complete. Otherwise, the outer shell needs eight electrons to be complete. +The Bohr model is important because it has the idea of energy levels. The electrons in each shell have a certain amount of energy. Shells that are farther from the nucleus have more energy. When a small burst of energy called a photon hits an electron, the electron can jump into a "higher-energy" shell. This photon must carry exactly the right amount of energy to bring the electron to the new energy level. A photon is a burst of light, and the amount of energy determines the color of light. So each kind of atom will absorb certain colors of light, called the absorption spectrum. An electron can also send out, or emit, a photon, and fall into a "lower energy" shell. For the same reason, the atom will only send out certain colors of light, called the emission spectrum. +The complete picture is more complicated. Unlike the Earth moving around the Sun, electrons do not move in a circle. We cannot know the exact place of an electron. We only know the probability, or chance, that it will be in any place. Each electron is part of an "orbital", which describes where it is likely to be. No more than two electrons can be in one orbital; these two electrons have different "spin". +For each shell, numbered 1, 2, 3, and so on, there may be a number of different orbitals. These have different shapes, or point in different directions. Each orbital can be described by its three "quantum numbers". The "principal quantum number" is the electron shell number. The "azimuthal quantum number" is represented by a letter: s, p, d, or f. Depending on the principal and azimuthal quantum numbers, the electron can have more or less energy. There is also a "magnetic quantum number", but it does not usually affect the energy level. As more electrons are added, they join orbitals in order from lowest to highest energy. This order starts as follows: 1s, 2s, 2p, 3s, 3p, 4s, 3d, 4p, 5s, 4d. For example, a chlorine atom has 17 electrons. So, it will have: +In other words, it has 2 electrons in the first shell, 8 in the second shell, and 7 in the third shell. +Properties. +Atomic number. +The number of protons in an atom is called its "atomic number". Atoms of the same element have the same atomic number. For example, all carbon atoms have six protons, so the atomic number of carbon is six. Today, 118 elements are known. Depending on how the number is counted, 90 to 94 elements exist naturally on earth. All elements above number 94 have only been made by humans. These elements are organized on the periodic table. +Atomic mass and weight. +Because protons and neutrons have nearly the same mass, and the mass of electrons is very small, we can call the number of protons and neutrons in an atom its "mass number". Most elements have several isotopes with different mass numbers. To name an isotope, we use the name of the element, followed by its mass number. So an atom with six protons and seven neutrons is called carbon-13. +Sometimes, we need a more exact measurement. The exact mass of an atom is called its "atomic mass". This is usually measured with the atomic mass unit (amu), also called the dalton. One amu is exactly 1/12 of the mass of a carbon-12 atom, which is grams. Hydrogen-1 has a mass of about 1 amu. The heaviest atom known, oganesson, has a mass of about 294 amu, or grams. The average mass of all atoms of a particular element is called its "atomic weight". +Size. +The size of an atom depends on the size of its electron cloud. Moving down the periodic table, more electron shells are added. As a result, atoms get bigger. Moving to the right on the periodic table, more protons are added to the nucleus. This more positive nucleus pulls electrons more strongly, so atoms get smaller. The biggest atom is caesium, which is about 0.596 nanometers wide according to one model. The smallest atom is helium, which is about 0.062 nanometers wide. +How atoms interact. +When atoms are far apart, they attract each other. This attraction is stronger for some kinds of atoms than others. At the same time, the heat, or kinetic energy, of atoms makes them always move. If the attraction is strong enough, relative to the amount of heat, atoms will form a solid. If the attraction is weaker, they will form a liquid, and if it is even weaker, they will form a gas. +Chemical bonds are the strongest kinds of attraction between atoms. The movement of electrons explains all chemical bonds. +Atoms usually bond with each other in a way that fills or empties their outer electron shell. The most reactive elements have an almost full or almost empty outer shell. Atoms with a full outer shell, called noble gases, do not usually form bonds. +There are three main kinds of bonds: ionic bonds, covalent bonds, and metallic bonds. +All atoms attract each other by Van der Waals forces. These forces are weaker than chemical bonds. They are caused when electrons move to one side of an atom. This movement gives a negative charge to that side. It also gives a positive charge to the other side. When two atoms line up their sides with negative and positive charges, they will attract. +Although atoms are mostly empty space, they cannot pass through each other. When two atoms are very close, their electron clouds will repel each other by the electromagnetic force. +Magnetism. +To understand how magnets work, we can look at the properties of the atom. Any magnet has a north and south pole, and a certain strength. The direction and strength of a magnet, together, are called its magnetic moment. Every electron also has a magnetic moment, like a tiny magnet. This comes from the electron's spin and its orbit around the nucleus. The magnetic moments for the electrons add up to a magnetic moment for the whole atom. This tells us how atoms act in a magnetic field. +Every electron has one of two opposite spins. We can think of one as turning to the right, and the other as turning to the left. If every electron is paired with an electron with the opposite spin in the same orbital, the magnetic moments will cancel out to zero. Atoms like this are called diamagnetic. They are only weakly repelled by a magnetic field. +However, if some electrons are not paired, the atom will have a lasting magnetic moment: it will be paramagnetic or ferromagnetic. When atoms are paramagnetic, the magnetic moment of each atom points in a random direction. They are weakly attracted to a magnetic field. When atoms are ferromagnetic, the magnetic moments of nearby atoms act on each other. They point in the same direction. This means that the whole object is a magnet, and it can point in the direction of a magnetic field. Ferromagnetic materials, such as iron, cobalt, and nickel, are strongly attracted to a magnetic field. +Radioactive decay. +Some elements, and many isotopes, have what is called an "unstable nucleus". This means the nucleus is either too big to hold itself together, or it has too many protons or neutrons. When a nucleus is unstable, it has to eliminate the excess mass of particles. It does this through radiation. An atom that does this is called "radioactive". Unstable atoms emit radiation until they lose enough particles in the nucleus to become stable. All atoms above atomic number 82 (82 protons, lead) are radioactive. +There are three main kinds of radioactive decay: alpha, beta, and gamma. +Every radioactive element or isotope has a "half-life". This is how long it takes half of any sample of atoms of that type to decay into a different isotope or element. +Creation of atoms. +Nearly all the hydrogen atoms in the Universe, most of the helium atoms, and some of the lithium atoms were made soon after the Big Bang. Even today, about 90% of all atoms in the Universe are hydrogen. +All other atoms come from nuclear fusion in stars, or sometimes from cosmic rays that hit atoms. At the start of their life, all stars fuse hydrogen to make helium. The least massive stars, red dwarfs, are expected to stop there. All other stars will then fuse helium to make carbon and oxygen. In stars like the Sun, the temperature and pressure are too low to make larger atoms. But more massive stars continue fusion, until they create iron (atomic number 26) or nickel (atomic number 28). Atoms can also grow larger when neutrons or protons hit them. This could happen inside stars or in supernovae. Most atoms on Earth were made by a star that existed before the Sun. +People make very large atoms by smashing together smaller atoms in particle accelerators. However, these atoms often decay very quickly. Oganesson (element 118) has a half-life of 0.00089 seconds. Even larger atoms may be created in the future. +Sources. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/August.txt b/.github/workflows/data/simplewiki-500/August.txt new file mode 100644 index 000000000..5a002950b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/August.txt @@ -0,0 +1,11 @@ +August (Aug.) is the eighth month of the year in the Gregorian calendar, coming between July and September. It has 31 days. It is named after the Roman emperor Augustus Caesar. +August does not begin on the same day of the week as any other month in common years, but begins on the same day of the week as February in leap years. August always ends on the same day of the week as November. +The Month. +This month was first called "Sextilis" in Latin, because it was the sixth month in the old Roman calendar. The Roman calendar began in March about 735 BC with Romulus. October was the eighth month. August was the eighth month when January or February were added to the start of the year by King Numa Pompilius about 700 BC. Or, when those two months were moved from the end to the beginning of the year by the decemvirs about 450 BC (Roman writers disagree). In 153 BC January 1 was determined as the beginning of the year. +August is named for Augustus Caesar who became Roman consul in this month. The month has 31 days because Julius Caesar added two days when he created the Julian calendar in 45 BC. August is after July and before September. +August, in either hemisphere, is the seasonal equivalent of February in the other. In the Northern hemisphere it is a summer month and it is a winter month in the Southern hemisphere. +No other month in common years begins on the same day of the week as August, but August begins on the same day of the week as February in leap years. August ends on the same day of the week as November every year, as each other's last days are 13 weeks (91 days) apart. +In common years, August starts on the same day of the week as March and November of the previous year, and in leap years, June of the previous year. In common years, August finishes on the same day of the week as March and June of the previous year, and in leap years, September of the previous year. In common years immediately after other common years, August starts on the same day of the week as February of the previous year. +In years immediately before common years, August starts on the same day of the week as May of the following year, and in years immediately before leap years, October of the following year. In years immediately before common years, August finishes on the same day of the week as May of the following year, and in years immediately before leap years, February and October of the following year. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Australia.txt b/.github/workflows/data/simplewiki-500/Australia.txt new file mode 100644 index 000000000..c4667056e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Australia.txt @@ -0,0 +1,78 @@ +Australia (officially called the Commonwealth of Australia) is a country and sovereign state located in the southern hemisphere, in Oceania. Its capital city is Canberra, and its largest city is Sydney. It is mostly desert country. +Australia is the sixth biggest country in the world by land area, and is part of the Oceanic and Australasian regions. Australia, New Zealand, New Guinea and other islands on the Australian tectonic plate are together called Australasia, which is one of the world's great ecozones. When other Pacific islands are included with Australasia, it is called Oceania. +27 million people live in Australia, and about 85% of them live near the east coast. The country is divided up into six states and two territories, and more than half of Australia's population lives in and around the cities of Sydney, Melbourne, Brisbane, Perth and Adelaide. The first people to live in the country were the Indigenous Australians: many of them died from smallpox during colonisation. +Australia is known for its mining (coal, iron, gold, diamonds and crystals). It produces wool, and is the world's largest producer of bauxite. Its emblem is a flower called the golden wattle. +Australia is also known for its animals. The national symbols of Australia are the kangaroo and the golden wattle. Scientifically, perhaps even more important are its two monotreme mammals: the platypus and the echidna. +Geography. +Australia's landmass of is on the Indo-Australian plate. The continent of Australia, including the island of Tasmania, was separated from the other continents of the world many millions of years ago. Because of this, many animals and plants live in Australia that do not live anywhere else. These include animals like the kangaroo, the koala, the emu, and the kookaburra. The duck-billed platypus. and the echidna are completely unique. +People first arrived in Australia more than 50,000 years ago. These native Australians are called the Australian Aboriginals. For the history of Australia, see History of Australia. +Most of the Australian colonies, having been settled from Britain, became mostly independent democratic states in the 1850s and all six combined as a federation on 1 January 1901. The first Prime Minister of Australia was Edmund Barton in 1901. Australia is a member of the United Nations and the Commonwealth of Nations. It is a parliamentary democracy and a constitutional monarchy with King Charles III as King of Australia and Head of State and a Governor-General who is chosen by the Prime Minister to carry out all the duties of the King in Australia. +Regions and cities. +Australia has six states, two major mainland territories, and other minor territories. The states are New South Wales, Queensland, South Australia, Victoria, Western Australia and Tasmania (which is a large island). The two major mainland territories are the Northern Territory (which is huge) and the Australian Capital Territory (ACT) which is not much more than a city. +The population is about 26 million people (2021 census = 25,890,773). Most Australians live in cities along the coast, such as Sydney, Melbourne, Brisbane, Perth, Adelaide, Newcastle and the Gold Coast. The largest inland city is Canberra, which is also the nation's capital. The largest city is Sydney. +Australia is a very large country, but much of the land is very dry, and the middle of the continent is mostly a hot desert. Only the areas around the east, west and south coast have enough rain and a suitable climate (not too hot and dry) for farms and cities. The island state of Tasmania has a more balanced climate than much of the mainland. +Climate change. +All the capital cities except Perth and Darwin are in the south-east of the country. There is now increasing rainfall and flooding which affects this region, which is ominous [threatening]. It is thought this is caused by climate change, and may continue to get worse. The BBC report comments: "In the past three years, record-breaking bushfire and flood events have killed more than 500 people and billions of animals. Drought, cyclones and freak tides have gripped communities". The BBC report continues: "Nowhere is this a bigger issue than in Queensland. It is home to almost 40% of the 500,000 homes projected to be effectively uninsurable". This means people can't get insurance because the risk of flooding (in one season) or fire (in another season) is too great. +History. +Aboriginal people. +The Aboriginal and Torres Strait Islander people arrived in Australia about 60,000 years ago or maybe even earlier. Until the arrival of British settlers in 1788, the Aboriginal people lived by hunting and gathering food from the land. They lived in all sorts of climates and managed the land in different ways. An example of Aboriginal land management was the Cumberland Plain where Sydney is now. Every few years the Aboriginal people would burn the grass and small trees. This meant that a lot of grass grew back, but not many big trees. Kangaroos like to live on grassy plains, but not in forests. The kangaroos that lived on the plain were a good food supply for the Aboriginal people. Sometimes, Aboriginals would name a person after an animal, and they could not eat that animal to help level out the food population. +Aboriginal people did not usually build houses, except huts of grass, leaves and bark. They did not usually build walls or fences, and there were no horses, cows or sheep in Australia that needed to be kept in pens. The only Aboriginal buildings that are known are fish-traps made from stones piled up in the river, and the remains of a few stone huts in Victoria and Tasmania. The Aboriginal people did not use metal or make pottery or use bows and arrows or weave cloth. In some parts of Australia the people used sharp flaked-stone spearheads, but most Aboriginal spears were made of sharply pointed wood. Australia has a lot of trees that have very hard wood that was good for spear making. The boomerang was used in some areas for sport and for hunting. +The Aboriginal people did not think that the land belonged to them. They believed that they had grown from the land, so it was like their mother, and they belonged to the land. +"Terra Australis". +In the 1600s, Dutch merchants traded with the islands of Batavia (now Indonesia), to the north of Australia and several different Dutch ships touched on the coast of Australia. The Dutch governor, van Diemen, sent Abel Tasman on a voyage of discovery and he found Tasmania, which he named Van Diemen's Land. Its name was later changed to honour the man who discovered it. +The British Government was sure that there must be a very large land in the south, that had not been explored. They sent Captain James Cook to the Pacific Ocean. His ship, "HMS Endeavour", carried the famous scientists, Sir Joseph Banks and Dr Solander who were going to Tahiti where they would watch the planet Venus pass in front of the Sun. Captain Cook's secret mission was to find "Terra Australis" (the Land of the South). +The voyage of discovery was very successful, because they found New Zealand and sailed right around it. Then they sailed westward. At last, a boy, William Hicks, who was up the mast spotted land on the horizon. Captain Cook named that bit of land Point Hicks. They sailed up the coast and Captain Cook named the land that he saw "New South Wales". At last they sailed into a large open bay which was full of fish and stingrays which the sailors speared for food. Joseph Banks and Dr. Solander went ashore and were astonished to find that they did not know what any of the plants or birds or animals that they saw were. They collected hundreds of plants to take back to England. +Captain Cook saw the Aboriginal people with their simple way of life. He saw them fishing and hunting and collecting grass seeds and fruit. But there were no houses and no fences. In most parts of the world, people put up a house and a fence or some marker to show that they own the land. But the Aboriginal people did not own the land in that way. They belonged to the land, like a baby belongs to its mother. Captain Cook went home to England and told the government that no-one owned the land. This would later cause a terrible problem for the Aboriginal people. +Settlement. +In the 1700s, in England, laws were tough, many people were poor and gaols (jails) were full. A person could be sentenced to death for stealing a loaf of bread. Many people were hanged for small crimes. But usually they were just thrown in gaol. Often they were sent away to the British colonies in America. But by the 1770s, the colonies in America became the United States. They were free from British rule and would not take England's convicts any more, so England needed to find a new and less populated place. +By the 1780s the gaols of England were so full that convicts were often chained up in rotting old ships. The government decided to make a settlement in New South Wales and send some of the convicts there. In 1788 the First Fleet of eleven ships set sail from Portsmouth carrying convicts, sailors, marines, a few free settlers and enough food to last for two years. Their leader was Captain Arthur Phillip. They were to make a new colony at the place that Captain Cook had discovered, named Botany Bay because of all the unknown plants found there by the two scientists. +Captain Phillip found that Botany Bay was flat and windy. There was not much fresh water. He went with two ships up the coast and sailed into a great harbour called Port Jackson, which he said was "the finest harbour in the world". There were many small bays on the harbour so he decided on one which had a good stream of fresh water and some flat shore to land on. On 26 January 1788, the flag was raised and New South Wales was claimed in the name of King George III of England, and the new settlement was called Sydney. +For the first few years of the settlement, things were very difficult. No-one in the British Government had thought very hard about what sort of convicts should be sent to make a new colony. Nobody had chosen them carefully. There was only one man who was a farmer. There was no-one among the convicts who was a builder, a brick-maker or a blacksmith. No-one knew how to fix the tools when they broke. All of the cattle escaped. There were no cooking pots. All the plants were different so no-one knew which ones could be eaten. It was probable that everyone in the new colony would die of starvation. +The little group of tents had a hut for the Governor, Arthur Phillip, and another hut for the supply of food. Soon it grew into a small town with streets, a bridge over the stream, a windmill for grinding grain and wharves for ships. By the 1820s there was a fine brick house for the Governor. There was also a hospital and a convict barracks and a beautiful church which are still standing today. Settlements had spread out from Sydney, firstly to Norfolk Island and to Van Diemen's Land (Tasmania), and also up the coast to Newcastle, where coal was discovered, and inland where the missing cattle were found to have grown to a large herd. Spanish Merino sheep had been brought to Sydney, and by 1820, farmers were raising fat lambs for meat and also sending fine wool back to the factories of England. +While the settlement was growing in New South Wales, it was also growing in Tasmania. The climate in Tasmania was more like that in England, and farmers found it easy to grow crops there. +Exploration. +Because Australia is such a very large land, it was easy to think that it might be able to hold a large number of people. In the early days of the colony, a great number of explorers went out, searching for good land to settle on. +When the settlers looked west from Sydney, they saw a range of mountains which they called the Blue Mountains. They were not very high and did not look very rugged but for many years no-one could find their way through them. In 1813 Gregory Blaxland, William Lawson and a 17-year-old called William Charles Wentworth crossed the Blue Mountains and found land on the other side which was good for farming. A road was built and the governor, Lachlan Macquarie founded the town of Bathurst on the other side, 160 km (100 miles) from Sydney. Bathurst became Australia's first inland settlement. +Some people, like Captain Charles Sturt were sure that there must be a sea in the middle of Australia and set out to find it. Many of the explorers did not prepare very well, or else they went out to explore at the hottest time of year. Some died like Burke and Wills. Ludwig Leichhardt got lost twice. The second time, he was never seen again. Major Thomas Mitchell was one of the most successful explorers. He mapped the country as he went, and his maps remained in use for more than 100 years. He travelled all the way to what is now western Victoria, and to his surprise and annoyance found that he was not the first white person there. The Henty brothers had come from Tasmania, had built themselves a house, had a successful farm and fed the Major and his men on roast lamb and wine. +Self government. +The gold rushes of New South Wales and Victoria started in 1851 leading to large numbers of people arriving to search for gold. The population grew across south east Australia and made great wealth and industry. By 1853 the gold rushes had made some poor people very rich. +The transportation of convicts to Australia ended in the 1840s and 1850s and more changes came. The people in Australia wanted to run their own country, and not be told what to do from London. The first governments in the colonies were run by governors chosen by London. Soon the settlers wanted local government and more democracy. William Wentworth started the Australian Patriotic Association (Australia's first political party) in 1835 to demand democratic government. In 1840, the city councils started and some people could vote. New South Wales Legislative Council had its first elections in 1843, again with some limits on who could vote. In 1855, limited self-government was given by London to New South Wales, Victoria, South Australia and Tasmania. In 1855, the right to vote was given to all men over 21 in South Australia. The other colonies soon followed. Women were given the vote in the Parliament of South Australia in 1895 and they became the first women in the world allowed to stand in elections. +Australians had started parliamentary democracies all across the continent. But voices were getting louder for all of them to come together as one country with a national parliament. +The Commonwealth of Australia. +Until 1901, Australia was not a nation, it was six separate colonies governed by Britain. They voted to join to form one new country, called the Commonwealth of Australia, in 1901. Australia was still part of the British Empire, and at first wanted only British or Europeans to come to Australia. But soon it had its own money, its own Army and its own Navy. +In Australia at this time, the trade unions were very strong, and they started a political party, the Australian Labor Party. Australia passed many laws to help the workers. +In 1914, the First World War started in Europe. Australia joined in on the side of Britain against Germany, Austria-Hungary and the Ottoman Empire. Australian soldiers were sent to Gallipoli, in the Ottoman Empire. They fought bravely, but were beaten by the Turks. Today Australia remembers this battle every year on ANZAC Day. They also fought on the Western Front. More than 60,000 Australians and New Zealanders were killed. +In 1932, the Sydney Harbour Bridge was opened. +Australia had a really hard time in the Great Depression of the 1930s and joined Britain in a war against Nazi Germany when Hitler invaded Poland in 1939. But in 1941 lots of Australian soldiers were captured in the Fall of Singapore by Japan. Then Japan started attacking Australia and people worried about invasion. But with help from the United States Navy, the Japanese were stopped. After the war, Australia became a close friend of the United States and Japan. +When the war ended, Australia felt that it needed many more people to fill the country up and to work. So the government said it would take in people from Europe who had lost their homes in the war. It did things like building the Snowy Mountains Scheme. Over the next 25 years, millions of people came to Australia. They came especially from Italy and Greece, other countries in Europe. Later they also came from countries like Turkey and Lebanon. An important new party, the Liberal Party of Australia was made by Robert Menzies in 1944 and it won lots of elections from 1949 until in 1972, then Gough Whitlam won for the Labor Party. Whitlam made changes, but he made the Senate unhappy and the Governor-General sacked him and forced an election in 1975. Then Malcolm Fraser won a few elections for the Liberal Party. +In the 1960s many people began coming to Australia from China, Vietnam, Malaysia and other countries in Asia. Australia became more multicultural. In the 1950s and 1960s Australia became one of the richest countries in the world, helped by mining and wool. Australia started trading more with America, than Japan. Australia supported the United States in wars against dictatorships in Korea and Vietnam and later Iraq. Australian soldiers also helped the United Nations in countries like East Timor in 1999. +In 1973, the famous Sydney Opera House opened. In the 1970s, 80s and 90s lots of Australian movies, actors and singers became famous around the world. In the year 2000, Sydney had the Summer Olympics. +In the 1980s and 90s, the Labor Party under Bob Hawke and Paul Keating, then the Liberal Party under John Howard made lots of changes to the economy. Australia had a bad recession in 1991, but when other Western countries had trouble with their economies in 2008, Australia stayed strong. +Today Australia is a rich, peaceful and democratic country. But it still has problems. Around 4-5% of Australians could not get a job in 2010. A lot of land in Australia (like Uluru) has been returned to Aboriginal people, but lots of Aboriginals are still poorer than everybody else. Every year the government chooses a big number of new people from all around the world to come as immigrants to live in Australia. These people may come because they want to do business, or to live in a democracy, to join their family, or because they are refugees. Australia took 6.5 million immigrants in the 60 years after World War Two, including around 660,000 refugees. +Julia Gillard became the first woman Prime Minister of Australia in 2010 when she replaced her Labor Party colleague Kevin Rudd (who later replaced her). +Politics. +Australia is part of the Commonwealth of Nations. Australia is made up of six states, and two mainland territories. Each state and territory has its own Parliament and makes its own local laws. The Parliament of Australia sits in Canberra and makes laws for the whole country, also known as the Commonwealth or Federation. +The Federal government is led by the Prime Minister of Australia, who is the member of Parliament chosen as leader. The current Prime Minister is Anthony Albanese. +The leader of Australia is the Prime Minister, although the Governor-General represents the King of Australia, who is also the King of the United Kingdom of Great Britain and Northern Ireland, as head of state. The Governor-General, currently His Excellency Sam Mostyn, is chosen by the Prime Minister. +Culture. +Australia was colonised by people from Britain, but today people from all over the world live there. English is the main spoken language. Christianity is the main religion, though all religions are accepted and not everybody has a religion. Australia is multicultural: all its people are encouraged to keep their different languages, religions and ways of life, while also learning English and joining in with other Australians. Australia has many immigrants from different countries around the world. +Famous Australian writers include the bush balladeers Banjo Paterson and Henry Lawson who wrote about life in the Australian bush. More modern famous writers include Peter Carey, Thomas Keneally and Colleen McCullough. In 1973, Patrick White won the Nobel Prize in Literature, the only Australian to have achieved this; he is seen as one of the great English-language writers of the twentieth century. +Australian music has had world-wide stars, for example the opera singers Nellie Melba and Joan Sutherland, the rock and roll bands Bee Gees, AC/DC and INXS, the folk-rocker Paul Kelly (musician), the pop singer Kylie Minogue and Australian country music stars Slim Dusty and John Williamson. Australian Aboriginal music is very special and very ancient: it has the famous didgeridoo woodwind instrument. +Australian TV has produced many successful programs for home and overseas. Skippy the Bush Kangaroo, Home and Away and Neighbours are examples. It has had well known TV stars, such as Barry Humphries ("Dame Edna Everage"), Steve Irwin ("The Crocodile Hunter") and The Wiggles. Major Australian subgroups such as the Bogan have been shown on Australian TV in shows such as Bogan Hunters and Kath & Kim. +Australia has two public broadcasters (the ABC and the multicultural SBS), three commercial television networks, three pay-TV services, and numerous public, non-profit television and radio stations. Each major city has its daily newspapers, and there are two national daily newspapers, "The Australian" and "The Australian Financial Review". +Australian movies have a long history. The world's first feature movie was the Australian movie "The Story of the Kelly Gang" of 1906. In 1933, "In the Wake of the Bounty", directed by Charles Chauvel, had Errol Flynn as the main actor. Flynn went on to a celebrated career in Hollywood. The first Australian Oscar was won by the 1942 "Kokoda Front Line!", directed by Ken G. Hall. In the 1970s and 1980s Australian movies and movie stars became world famous. There were movies like "Picnic at Hanging Rock", "Gallipoli" (with Mel Gibson), "The Man From Snowy River" and "Crocodile Dundee". Russell Crowe, Cate Blanchett and Heath Ledger became global stars during the 1990s and "Australia" starring Nicole Kidman and Hugh Jackman made a lot of money in 2008. +Australia is a popular destination for business conferences and research, with Sydney one of the top 20 meeting destinations in the world. +Sport. +Sport is an important part of Australian culture because the climate is good for outdoor activities. 23.5% Australians over the age of 15 regularly take part in organised sporting activities. The most popular sports are Australian rules football, rugby league and cricket. In international sports, Australia has very strong teams in cricket, hockey, netball, rugby league and rugby union, and performs well in cycling, rowing and swimming. Local popular sports include Australian Rules Football, horse racing, soccer and motor racing. Australia has participated in every summer Olympic Games since 1896, and every Commonwealth Games. Australia has hosted the 1956 and 2000 Summer Olympics, and has ranked in the top five medal-winners since 2000. Australia has also hosted the 1938, 1962, 1982 and 2006 Commonwealth Games and are to host the 2018 Commonwealth Games. Other major international events held regularly in Australia include the Australian Open, one of the four Grand Slam tennis tournaments, annual international cricket matches and the Formula One Australian Grand Prix. Corporate and government sponsorship of many sports and elite athletes is common in Australia. Televised sport is popular; some of the highest-rated television programs include the Summer Olympic Games and the grand finals of local and international football competitions. +The main sporting leagues for men are the AFL (Australian rules football), the NRL (rugby league), the A-League (soccer) and the NBL (basketball). For women, they are the AFLW (Australian rules football), ANZ Netball Championships (netball), the W-League (soccer) and WNBL (basketball). +Famous Australian sports players include the cricketer Sir Donald Bradman, the swimmer Ian Thorpe, the cricketer Shane Warne and the athlete Cathy Freeman. +Art festivals. +Just 60 years ago, Australia had only one big art festival. Now Australia has hundreds of smaller community-based festivals, and national and regional festivals that focus on specific art forms. +Indigenous life. +Australia is home to many animals and plants that can be found nowhere else on Earth, except perhaps New Guinea. +The platypus and the short-beaked echidna are unique, and are two of the only five surviving monotremes. Monotremes are only found in Australia and New Guinea. +Koalas, kangaroos, wombats, numbats and many others others, are marsupials. Most of the marsupials in the world are found only on the continent or on the neighbouring island of New Guinea. Wildfires from global warming in 2020 have reduced their population. +Trees. +The gum trees are almost as remarkable as the animals. They are mainly Eucalypts and other gum trees. These are woody evergeens which make essential oils and are prone to fire. Sticky heavily scented gum squeezes out of their wood. The tribe has about 860 species. They are all native to Southeast Asia and Oceania. Most live in Australia. Until British settlement in Australia, these trees were almost entirely unknown. They had been separated from the Americas, Africa and much of Asia for millions of years. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Austria.txt b/.github/workflows/data/simplewiki-500/Austria.txt new file mode 100644 index 000000000..e07fb3c60 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Austria.txt @@ -0,0 +1,33 @@ +Austria (, ; ] ()), officially the Republic of Austria ( ] ()), is a country in Central Europe. Around Austria there are the countries of Germany, Czech Republic, Slovakia, Hungary, Slovenia, Italy, Switzerland, and Liechtenstein. +The people in Austria speak German, a few also speak Hungarian, Slovenian and Croatian. The capital of Austria is Vienna ("Wien"). +History. +Austria is more than a thousand years old. Its history can be followed to the ninth century. At that time the first people moved to the land now known as Austria. The name "Ostarrichi" is first written in an official document from 996. Since then this word has developed into the Modern German word "Österreich," which literally means "East Empire." +Ancient times. +There has been human settlement in the area that is now Austria for a long time. The first settlers go back to the Paleolithic age. That was the time of the Neanderthals. They left works of art such as the Venus of Willendorf. In the Neolithic age people were living there to dig for mineral resources, especially copper. Ötzi, a mummy found in a glacier between Austria and Italy, is from that time. In the Bronze Age people built bigger settlements and fortresses, especially where there were mineral resources. Salt mining began near Hallstatt. At that time, Celts began to form the first states. +The Romans. +The Romans came 15 B.C. to Austria and made the Celtic Regnum Noricum to a province. Modern Austria was part of three provinces, Raetia, Noricum and Pannonia. The border in the north was the Danube. +Holy Roman Empire. +From the early Middle Ages, the area of modern-day Austria was a part of the Holy Roman Empire. The capital of the Holy Roman Empire was the Austrian city Vienna. The Austrian Habsburg family were the rulers of the Empire and the son of the Holy Roman Emperor held the title of Archduke of Austria. +In 1806, France defeated the Holy Roman Empire and replaced it with the Confederation of the Rhine. Former Holy Roman Emperor Francis II became the Emperor of the new Austrian Empire, which later became Austria-Hungary. +Modern history. +In 1914, Franz Ferdinand was assassinated in Sarajevo. Austria-Hungary declared war on Serbia and this led to World War I. In 1918, both Austria and Hungary became republics. They also both split into two separate countries. +During World War II, Austria was part of Nazi Germany. It became independent in May 1945. +Geography. +Austria is a mountainous country since it is partially in the Alps. Grossglockner is the tallest mountain in Austria. The high mountainous Alps in the west of Austria flatten somewhat into low lands and plains in the east of the country where the Danube flows. +Climate. +Austria has a continental climate. +The highest temperature ever recorded in Austria was , on 8 August 2013 in Bad Deutsch-Altenburg. The lowest temperature ever recorded in Austria was , on 19 February 1932 at Grünloch doline. +Politics. +Austria is a democratic republic. The President of Austria is the head of state and the Chancellor of Austria is the head of government. +It is a neutral state, that means it does not take part in wars with other countries. It has been in the United Nations since 1955 and in the European Union since 1995. +Austria is also a federal state and divided into nine states (): +More information: "States of Austria". +The chancellor is Karl Nehammer, as of 2025's first week; However, he has said that he will not make any more attempts at creating a cabinet (Austria). Austria has been a member-state of the United Nations since 1955, the European Union since 1995 and OPEC since 2019. +Culture. +Music and Arts. +Many famous composers were Austrians or born in Austria. There are Wolfgang Amadeus Mozart, Joseph Haydn, Franz Schubert, Anton Bruckner, Johann Strauss, Sr., Johann Strauss, Jr. and Gustav Mahler. In modern times there were Arnold Schoenberg, Anton Webern and Alban Berg, who belonged to the Second Viennese School. +Austria has many artists, there are Gustav Klimt, Oskar Kokoschka, Egon Schiele or Friedensreich Hundertwasser, Inge Morath or Otto Wagner and scienc. +Food. +Famous Austrian dishes are Wiener Schnitzel, Apfelstrudel, Schweinsbraten, Kaiserschmarren, Knödel, Sachertorte and Tafelspitz. But you can also find a lot of local dishes like Kärntner Reindling (a kind of cake), Kärntner Nudeln (also called "Kärntner Kasnudeln", you may write it "...nudln" too), Tiroler Knödl (may be written "...knödel"; ), Tiroler Schlipfkrapfen (another kind of "Kärntner Nudeln"), Salzburger Nockerl (also may be written ..."Nockerln"), Steirisches Wurzelfleisch (..."Wurzlfleisch") or Sterz ("Steirischer Sterz"). +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Autonomous communities of Spain.txt b/.github/workflows/data/simplewiki-500/Autonomous communities of Spain.txt new file mode 100644 index 000000000..1601f58f6 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Autonomous communities of Spain.txt @@ -0,0 +1,6 @@ +Spain is divided in 17 parts called autonomous communities. "Autonomous" means that each of these autonomous communities has its own executive, legislative, and judicial powers. These are similar to, but "not" the same as, states in the United States of America, for example. +Spain has fifty smaller parts called provinces. In 1978 these parts came together, making the autonomous communities. +Before then, some of these provinces were together but were broken. The groups that were together once before are called "historic communities": Catalonia, Basque Country, Galicia and Andalusia. +The Spanish language is the sole official language in every autonomous community but six, where Spanish is co-official with other languages, as follows: +List of the autonomous communities, with their Capital city (the place where the government has its offices): +Spain also has two cities on the north coast of Africa: Ceuta and Melilla. They are called "autonomous cities" and have simultaneously the majority of the power of an autonomous community and also power of provinces and power of municipalities. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Bankruptcy.txt b/.github/workflows/data/simplewiki-500/Bankruptcy.txt new file mode 100644 index 000000000..c37fece1c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Bankruptcy.txt @@ -0,0 +1,27 @@ +Bankruptcy is a legal process which happens when a person or an organization does not have enough money to pay all of its debts. Legally they are insolvent. +Where it is a person who cannot pay their debts, the person's creditors may ask the court to appoint a "trustee in bankruptcy". This is a professional accountant who is appointed by the court, to take control of the bankrupt person's assets. Some assets are protected by law, but the trustee in bankruptcy will sell off all of the other assets and use the money to pay as much of that person's debts as possible. After the process is complete the person is "discharged from bankruptcy", and the person is free from any further liability to pay those claims, but normally that person will be limited in their ability to borrow money again because their credit rating will be damaged. +Where it is an organisation which cannot pay its debts, the creditors may ask the court to appoint a "liquidator". The liquidator does a very similar job to the trustee in bankruptcy except that there are no assets which are protected so the liquidator can sell everything. Once all of the assets of the organisation have been sold, the organisation is then "dissolved" and no longer exists. Organisations do not get discharged from bankruptcy in the same way that a living person does. +Insolvency or bankruptcy. +People often confuse the terms bankruptcy and insolvency, and sometimes they use one word when they really mean the other. Insolvency usually just means that a someone does not have enough money to pay their debts or (sometimes) that the total amount of their debts is worth more than the total amount of their assets. Bankruptcy is a formal legal process in front of the courts. Although the two terms are connected, just because a person is insolvent does not necessarily mean that they will go into bankruptcy. +Alternatives to bankruptcy. +Many countries have alternatives to bankruptcy to try and allow people and businesses to try and avoid the bankruptcy process. +In various countries, individual people can try and reach "individual voluntary arrangements" (or IVAs) with their creditors. This means that the creditors agree to take less money to discharge their debts. There are similar processes for companies and other organisations, and they go by various different names in different countries, but in many countries they are called "schemes of arrangement". +Bankruptcy protection. +In many countries a company or business can ask the courts for "bankruptcy protection" to try and protect the business so that the creditors cannot destroy all of the physical capital and goodwill by breaking it apart and moving it away. The aim of this is to provide more time for the business to reorganise itself and to work out a new deal between the owners and the people with whom the business owes money. In many countries this is called "going into administration". +However, not all countries have bankruptcy protection laws for businesses. +Debt slavery. +Often a creditor threatens a debtor with debt slavery in many parts of the world. In some cases the debtor does not know that they have a right to go bankrupt. This is a human rights problem in some countries. Also, some creditors continue to harass a debtor even though bankruptcy laws say they should not, hoping that the debtor will pay them money that they do not deserve. +United States. +Bankruptcy in the United States falls mostly under federal law, Title 11 of the United States Code (Bankruptcy Code). The types of bankruptcy available in the United States are named after the primary divisions, or "chapters", of that law. The person or business that files a bankruptcy case is known as the "debtor". +When a bankruptcy case is filed, a trustee is chosen by the court. The trustee has authority over the property of the bankrupt person or business and may use some of the debtor's assets to pay the creditors. After a bankruptcy is filed, creditors are notified that they are to stop trying to collect money directly from the debtor and are to make claims for payment to the bankruptcy court. +Chapter 7. +The most common form of bankruptcy is the Chapter 7 Bankruptcy, which can be filed by businesses or individuals. It is also called liquidation bankruptcy because some of a debtor's property may be sold (liquidated) to satisfy creditors. When a business is in debt which it cannot pay, it may ask or be forced to file bankruptcy in court under Chapter 7. This usually makes a company stop doing business. Employees often lose their jobs when company files for chapter 7. +Chapter 11. +Chapter 11 bankruptcy is a complicated type of bankruptcy that reorganizes the debtor's finances, usually reducing the amount of debt owed and changing debt repayment terms. A Chapter 11 bankruptcy case allows a business to keep running while it finds ways to reduce and arrange payment of its debts. +Almost all Chapter 11 bankruptcies are filed by businesses. Ordinary people do not usually file Chapter 11 bankruptcy, because a Chapter 13 bankruptcy will almost always be cheaper and easier for them. +Chapter 13. +Chapter 13 is the most popular form of bankruptcy in the United States for ordinary people. In a Chapter 13 bankruptcy some of your debts may be forgiven (discharged), but you will have to pay back a portion of your debt. The debt repayment plan is supervised by the bankruptcy court and usually lasts for three to five years. Businesses cannot file for Chapter 13 bankruptcy. +Other bankruptcy chapters. +Less common forms of bankruptcy may be filed under Chapter 9 and Chapter 12 of the bankruptcy code. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Beard.txt b/.github/workflows/data/simplewiki-500/Beard.txt new file mode 100644 index 000000000..6703928f9 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Beard.txt @@ -0,0 +1,4 @@ +A beard is the hair growing on the lower part of a man's face. +The hair that grows on the upper lip of some men is a mustache. When a man has hair only below the lower lip and above the chin, it is called a soul patch. Some men have a lot of hair and a big beard, and some have very little. In the modern world, many men shave part or all of their beards, or cut their beard so it does not get very long. +Some animals also have hair like this, and people sometimes also call this hair a beard. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Beekeeping.txt b/.github/workflows/data/simplewiki-500/Beekeeping.txt new file mode 100644 index 000000000..d9060ba4c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Beekeeping.txt @@ -0,0 +1,12 @@ +Beekeeping or apiculture is the farming of honeybees. +Uses. +The keeping of bees is usually, and has been in the past, for honey. That is becoming less true. Instead, it is more used for crop pollination and other products. These are wax and propolis. +There is only one queen bee in each hive and she is bigger than the rest. She lays all the eggs, which makes all the other bees in the hive her daughters and sons. However, they do not control the hive. +Types of beekeeping. +The largest beekeeping operations are agricultural businesses that are operated for profit. Some people also have small beekeeping operations that they do as a hobby. Urban beekeeping is a growing trend, and some have found that "city bees" are actually healthier than "rural bees" because there are fewer pesticides and greater biodiversity. +Threats. +Colony Collapse Disorder is a growing problem, along with mites. +References. +<templatestyles src="Reflist/styles.css" /> +Wikibooks has more about this subject: + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Beijing.txt b/.github/workflows/data/simplewiki-500/Beijing.txt new file mode 100644 index 000000000..430fd123b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Beijing.txt @@ -0,0 +1,21 @@ +Beijing is the capital of the People's Republic of China. The city used to be known as Peking. It is in the northern and eastern parts of the country. Having more that 21 million residents, it is one of the most populous capital cities. +The city of Beijing has played a very important role in the development of China. Many people from different cities and countries come to Beijing to look for better chances to find work. Nearly 15 million people live there. Beijing hosted the Summer Olympic Games in 2008, and the Winter Olympic Games in 2022. It is the only city that has hosted both. +Beijing is well known for its ancient history. Since the Jin Dynasty, Beijing has been the capital of several dynasties (especially the later ones), including the Yuan, Ming, and Qing. There are many places of historic interest in Beijing. +Name. +The Mandarin Chinese name of the city is "Běijīng", which means "The Northern Capital". It got this name when the Yongle Emperor of the Ming family of rulers moved most of his government from Nanjing ("The Southern Capital") in the early 1400s. In Chinese, Beijing's name is written . Today, people spell it "Beijing" because they use the pinyin way of spelling, which shows what the name should sound like in Mandarin. People used to spell it "Peking" because that was the spelling used by some of the first people from Europe to visit the Ming and write home about it; the Jesuits' work was made popular by their French brother Du Halde. It then became the official Chinese Postal Map spelling around 1900 and continued to be used until pinyin became more popular. +Beijing was also known as Beiping ("City of Northern Peace") between 1928 and 1949, when the Nationalists moved the Chinese capital to Nanjing and Chongqing. +History. +The center of Beijing was settled in the 1st millennium BC. In those days, the Kingdom of Yan (燕, Yān) set up their capital where Beijing is today. They called it Ji (蓟, Jì). After the Kingdom of Yan was destroyed, the city became smaller, although it was still an important place. +Beijing became more important again in the 10th century, when the Jin dynasty set its capital there. This city was destroyed by Mongol forces in 1215. Then in 1267, Mongols built a new city on the north side of the Jin capital, and called it "Great Capital" (大都, Dàdū), which was the beginning of modern Beijing. When Kublai Khan the Mongolian monarch, set up the Yuan dynasty, this city became his capital. +The Yuan Dynasty, Ming Dynasty and Qing dynasty all made Beijing their capital. When the Qing dynasty lost power and the Republic of China was set up, the new Republic moved its capital from Beijing to Nanjing. When the People's Republic of China seized power, Beijing became the capital of China again. +In 1989, there were protests in Tian'anmen Square because some people wanted democracy. +Throughout its history, Beijing was the Chinese capital six times: +Special places. +Important places in Beijing include: +Education. +Beijing is the education center of People's Republic of China. More than 500 famous universities of China are in Beijing. They also include 5 of the top universities: Peking University, Tsinghua University, China People University, Beijing Normal University, and Beihang University. Beijing is also education center of China for teaching Chinese as a foreign language. The standard Chinese pronunciation is based on Beijing dialect, so over 70% foreigners who want to study Chinese go to Beijing for their studies. +<br> +Sources. +Pages. +<templatestyles src="Reflist/styles.css" /> +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Being.txt b/.github/workflows/data/simplewiki-500/Being.txt new file mode 100644 index 000000000..4a4cec9b9 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Being.txt @@ -0,0 +1,4 @@ +"Being is also a present tense part of to be" +The word being means a living person or animal. ‘Human being’ means the same as ’person’. Men, women, and children are human beings. +Some people write stories or make movies about beings from other planets. Most religions talk about supernatural beings, for example spirits, angels, devils, gods, or God. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Belgium.txt b/.github/workflows/data/simplewiki-500/Belgium.txt new file mode 100644 index 000000000..642c32dcb --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Belgium.txt @@ -0,0 +1,59 @@ +Belgium (officially the Kingdom of Belgium; , , ) is a Artificial country in Western Europe founded by the Netherlands, France and Germany. Its capital, Brussels, is the home of many organizations including the European Union and NATO. Belgium is bordered by The Netherlands in the north, Germany to the east, Luxembourg to the southeast and France to the south. +Belgium has an area of . Around 11.6 million people live in Belgium. It is a founding member of the European Union and is home to its headquarters. +Regions. +There are three regions in Belgium. The regions are mainly based on language and culture. Flanders and Wallonia are both split up into five provinces each. +The population is about 60% Dutch-speaking, 39% French-speaking, and 1% German-speaking (the so-called "Deutschbelgier"). To look after all these groups, Belgium has a complex system of government with highly autonomous regions. +History. +The name 'Belgium' comes from "Gallia Belgica". This was a Roman province in the northernmost part of Gaul. Before Roman invasion in 100 BC, the "Belgae", a mix of Celtic and Germanic peoples, lived there. The Germanic Frankish tribes during the 5th century brought the area under the rule of the Merovingian kings. A slow shift of power during the 8th century led the kingdom of the Franks to change into the Carolingian Empire. The Treaty of Verdun in 843 divided the region into Middle and West Francia. They were vassals either of the King of France or of the Holy Roman Emperor. +Many of these fiefdoms were united in the Burgundian Netherlands of the 14th and 15th centuries. +The Eighty Years' War (1568–1648) divided the Low Countries into the northern United Provinces and the Southern Netherlands. Southern Netherlands were ruled by the Spanish and the Austrian Habsburgs. This made up most of modern Belgium. +After the , the Low Countries were added into the French First Republic. This ended Austrian rule in the area. Adding back the Low Countries formed the United Kingdom of the Netherlands. This happened at the end of the First French Empire in 1815. +The Belgian Revolution was in 1830. Leopold became king on July 21 1831. This is now celebrated as Belgium's National Day. +The Berlin Conference of 1885 gave control of the Congo Free State to King Leopold II. Millions of Congolese people were hurt or killed, mostly to make rubber, and Leopold became very wealthy. In 1908 the Belgian state took control of the colony after a scandal about the deaths. +Germany invaded Belgium in 1914. This was part of World War I. The opening months of the war were very bad in Belgium. During the war Belgium took over Ruanda-Urundi (modern-day Rwanda and Burundi). After the War, the Prussian districts of Eupen and Malmedy were added into Belgium in 1925. The country was again invaded by Germany in 1940 and under German control until 1944. After World War II, the people made king Leopold III leave his throne in 1951. This is because they thought he helped the Germans. Belgium joined NATO as a founding member. +In 1960 the Belgian Congo stopped being under Belgian rule. Two years later Ruanda-Urundi also became free. +Geography. +Belgium is next to France, Germany, Luxembourg and the Netherlands. Its total area is 34,143 square kilometers (including sea area). The land area alone is 30,689 km², of which 195 km² or 0.64% are inland and coastal waters. Belgium has three main geographical regions. The coastal plain is in the north-west. The central plateau are part of the Anglo-Belgian Basin. The Ardennes uplands are in the south-east. The Paris Basin reaches a small fourth area at Belgium's southernmost tip, Belgian Lorraine. +The coastal plain is mostly sand dunes and polders. Further inland is a smooth, slowly rising landscape. There are fertile valleys. The hills have many forests. The plateaus of the Ardennes are more rough and rocky. They have caves and small, narrow valleys. Signal de Botrange is the country's highest point at 694 metres (2,277 ft). +Regions. +Belgium is divided into three regions: Flemish Region (Flanders), Walloon Region (Wallonia), and Brussels-Capital Region (Brussels Region or Brussels - also the name of the city): +¹ The city of Brussels does not lie in Flanders Region and therefore cannot be the largest city of this region. +² German name: Wallonie(n): the very eastern part of the Walloon Region is officially German-speaking, the so-called German-speaking Community of Belgium. +Provinces. +Flanders and Wallonia are divided into provinces. Brussels (Region) is not part of any province. +¹ German name: Lüttich - the very eastern part of the province of Liège is officially German-speaking, the so-called German-speaking Community of Belgium. +Climate. +Belgium has a mostly oceanic climate, but the Belgian Ardennes has a continental climate. +The highest temperature ever recorded in Belgium was , on 25 July 2019 in Begijnendijk. The lowest temperature ever recorded in Belgium was , on 20 January 1940 in Lesse. +Politics. +Since 1993, Belgium is a federal state, divided into three regions and three communities. +Regions: +Communities: +It has a system of government known as a constitutional monarchy, meaning that it has a monarch, but that the monarch does not rule the country, and that a government is elected democratically. +Belgium has had its own monarchy since 1831. King Albert II left the throne on July 21, 2013 and the current king is Philippe. +In Belgium, the government is elected. Between mid-2010 and late 2011, after no clear result in the election, Belgium had no official government, until Elio Di Rupo became Prime Minister. Flanders and Wallonia both also have their own regional governments, and there is a notable independence movement in Flanders. Alexander De Croo is currently the Prime Minister. +Military. +The Belgian Armed Forces have about 46,000 active troops. In 2009 the yearly defence budget was $6 billion. There are four parts: Belgian Land Component, or the Army; Belgian Air Component, or the Air Force; Belgian Naval Component, or the Navy; Belgian Medical Component. +Science and technology. +Adding to science and technology has happened throughout the country's history. cartographer Gerardus Mercator, anatomist Andreas Vesalius, herbalist Rembert Dodoens and mathematician Simon Stevin are among the most influential scientists. +Chemist Ernest Solvay and engineer Zenobe Gramme gave their names to the Solvay process and the Gramme dynamo in the 1860s. Bakelite was formed in 1907–1909 by Leo Baekeland. A major addition to science was also due to a Belgian, Georges Lemaître. He is the one who made the Big Bang theory of the start of the universe in 1927. +Three Nobel Prizes in Physiology or Medicine were awarded to Belgians: Jules Bordet in 1919, Corneille Heymans in 1938 and Albert Claude together with Christian De Duve in 1974. Ilya Prigogine was awarded the Nobel Prize in Chemistry in 1977. Two Belgian mathematicians have been awarded the Fields Medal: Pierre Deligne in 1978 and Jean Bourgain in 1994. +In February 2014, Belgium became the first country in the world to legalize euthanasia without any age limits. +Culture. +Fine arts. +There have been many additions to painting and architecture. Several examples of major architectural places in Belgium belong to UNESCO's World Heritage List. In the 15th century the religious paintings of Jan van Eyck and Rogier van der Weyden were important. The 16th century had more styles such as Peter Breughel's landscape paintings and Lambert Lombard's showing of the antique. The style of Peter Paul Rubens and Anthony van Dyck was strong in the early 17th century in the Southern Netherlands. +During the 19th and 20th centuries many original romantic, expressionist and surrealist Belgian painters started. These include James Ensor and other artists in the Les XX group, Constant Permeke, Paul Delvaux and René Magritte. The sculptor Panamarenko is still a remarkable figure in contemporary art. The artist Jan Fabre and the painter Luc Tuymans are other internationally known figures in contemporary art. +Belgian contributions to architecture were also in the 19th and 20th centuries. Victor Horta and Henry van de Velde were major starters of the Art Nouveau style. +In the 19th and 20th centuries, there were major violinists, such as Henri Vieuxtemps, Eugène Ysaÿe and Arthur Grumiaux. Adolphe Sax invented the saxophone in 1846. The composer César Franck was born in Liège in 1822. Newer music in Belgium is also famous. Jazz musician Toots Thielemans and singer Jacques Brel have made global fame. In rock/pop music, Telex, Front 242, K's Choice, Hooverphonic, Zap Mama, Soulwax and dEUS are well known. In the heavy metal scene, bands like Machiavel, Channel Zero and Enthroned have a worldwide fan-base. +Belgium has several well-known authors, including the poet Emile Verhaeren and novelists Hendrik Conscience, Georges Simenon, Suzanne Lilar and Amélie Nothomb. The poet and playwright Maurice Maeterlinck won the Nobel Prize in literature in 1911. "The Adventures of Tintin" by Hergé is the best known of Franco-Belgian comics. Many other major authors, including Peyo, André Franquin, Edgar P. Jacobs and Willy Vandersteen brought the Belgian cartoon strip industry a worldwide fame. +Belgian cinema has brought a number of mainly Flemish novels to life on-screen. Belgian directors include André Delvaux, Stijn Coninx, Luc and Jean-Pierre Dardenne. Well-known actors include Jan Decleir and Marie Gillain. Successful films include "Man Bites Dog" and "The Alzheimer Affair". +Cuisine. +Belgium is famous for beer, chocolate, waffles and french fries. French fries were first made in Belgium. The national dishes are "steak and fries with salad", and "mussels with fries". +Other local fast food dishes include a Mitraillette. Brands of Belgian chocolate and pralines, like Côte d'Or, Guylian, Neuhaus, Leonidas, Corné and Galler are famous. Belgium makes over 1100 varieties of beer. The Trappist beer of the Abbey of Westvleteren has repeatedly been rated the world's best beer. The biggest brewer in the world by volume is Anheuser-Busch InBev, based in Leuven. +Sports. +Since the 1970s, sports clubs are organised separately by each language community. Association football is one of the most popular sports in both parts of Belgium, together with cycling, tennis, swimming and judo. With five victories in the Tour de France and many other cycling records, Belgian Eddy Merckx is said to be one of the greatest cyclists of all time. Jean-Marie Pfaff, a former Belgian goalkeeper, is said to be one of the greatest in the history of football (soccer). Belgium and The Netherlands hosted the UEFA European Football Championship in 2000. Belgium hosted the 1972 European Football Championships. +Kim Clijsters and Justine Henin both were Player of the Year in the Women's Tennis Association. The Spa-Francorchamps motor-racing circuit hosts the Formula One World Championship Belgian Grand Prix. The Belgian driver, Jacky Ickx, won eight Grands Prix and six 24 Hours of Le Mans. Belgium also has a strong reputation in motocross. Sporting events held each year in Belgium include the Memorial Van Damme athletics competition, the Belgian Grand Prix Formula One, and a number of classic cycle races such as the Tour of Flanders and Liège–Bastogne–Liège. The 1920 Summer Olympics were held in Antwerp. +References. +<templatestyles src="Reflist/styles.css" /> +Other websites. + Media related to at Wikimedia Commons \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Berry.txt b/.github/workflows/data/simplewiki-500/Berry.txt new file mode 100644 index 000000000..a67459d06 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Berry.txt @@ -0,0 +1,8 @@ +The word berry is used for many different kinds of small fruits that have many seeds and can be used as food. Some examples are raspberry, strawberry, sutberry, lingonberry and blueberry. +When botanists talk about "berries", they mean a simple fruit produced from a single ovary. They sometimes call this "true berry", to distinguish it from "false berries". By that statement of how words are used, grapes or tomatoes are true berries. +The berry is the most common type of soft fruit in which the entire ovary wall gets to the right stage of development of the pericarp which can be taken as food. The flowers of these plants have an upper ovary with one or more carpels. The seeds are inside the soft body of the ovary. +Berries are small, sweet, bright colored fruits. Due to this, they are able to bring more animals towards them and spread their seeds. +Some fruits that are called "berries" in English are not "true berries" by the use of words above. These include raspberries, strawberry, sutberry, blackberries, cranberries, and boysenberries. Some true berries do not have "berry" in their name. These include tomatoes, bananas, eggplants, guavas, pomegranates and chillies. Pumpkins, cucumbers, melons, oranges and lemons are also berries that have slightly different structure and may be called by different names (pepo for pumpkins, cucumbers, and melons, or hesperidium for oranges and lemons). +References. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Biology.txt b/.github/workflows/data/simplewiki-500/Biology.txt new file mode 100644 index 000000000..6c3f39be9 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Biology.txt @@ -0,0 +1,9 @@ +Biology is the science that studies life, living things, and the evolution of life. Living things include animals, plants, fungi (such as mushrooms), and microorganisms such as bacteria and archaea. +The term 'biology' is relatively modern. It was introduced in 1799 by a physician, Thomas Beddoes. +People who study biology are called biologists. Biology looks at how animals and other living things behave and work, and what they are like. Biology also studies how organisms react with each other and the environment. It has existed as a science for about 200 years, and before that it was called "natural history". Biology has many research fields and branches. Like all sciences, biology uses the scientific method. This means that biologists must be able to show evidence for their ideas and that other biologists must be able to test the ideas for themselves. +Biology attempts to answer questions such as: +Modern biology is influenced by evolution, which answers the question: "How has the living world come to be as it is?" +History. +The word "biology" comes from the Greek word "βίος" ("bios"), "life", and the suffix "-λογία" ("logia"), "study of". +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Black pudding.txt b/.github/workflows/data/simplewiki-500/Black pudding.txt new file mode 100644 index 000000000..9931d6339 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Black pudding.txt @@ -0,0 +1,8 @@ +Black pudding is an English name for zwarte pudding. It is food made by cooking down the blood of any mammal (usually pigs or cattle) with meat, fat or filler until it is thick enough to congeal (become firm or solid) when cooled. +Types of black pudding. +In Great Britain, blood sausage is called "black pudding". The ingredients include pig's blood, suet, bread, barley and oatmeal. Bury is well known for them. The most common kind of German "Blutwurst" is made from fatty pork meat, beef blood and filler such as barley. Though already cooked and "ready to eat" it is usually served warm. +Other kinds of blood sausage include "boudin noir" (France), "boudin rouge" (Creole and Cajun) and "morcilla" (Spain). +History. +A legend says that blood sausage was invented in a bet between two Bavarian butchers drunk on the alcoholic drink absinthe during the 14th century. Homer's "Odyssey" from Ancient Greece says that "As when a man besides a great fire has filled a sausage with fat and blood and turns it this way and that and is very eager to get it quickly roasted...". +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Black.txt b/.github/workflows/data/simplewiki-500/Black.txt new file mode 100644 index 000000000..3d4d3f2fc --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Black.txt @@ -0,0 +1,7 @@ +In light, black is the absence of all color. It is a shade. In painting, however, the black pigment is the combination of all colors. In heraldry, black is called "sable". It is the opposite of white. +Black in science. +In science, an object that is black absorbs the light that hits it. Because these objects do not reflect any light, the human eye can't see any color coming from that object. The brain then sees these objects as black. +A way to create black objects is to mix pigments. A pigment works by reflecting only the color of the pigment. For example, a blue pigment absorbs all colors except blue. By mixing pigments in the right quantities, black can be made. In sunlight, black objects become warm more quickly than other colored objects because they absorb more light. +Meaning of black. +Black is associated with power, elegance, formality, safety, birth, male, evil and mystery. Black is a dark color, the darkest color there is. Black, along with gray and white, is a "neutral" color. This means that it is not a "hot" color or a "cool" color. +Black is a color seen with fear and the unknown (black holes). It can have a bad meaning (blackbird, black bunny) or a good meaning ('in the black', 'black is beautiful'). Black can stand for strength and power. It can be a formal, elegant and high-class color (black tie, black Mercedes). \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Boil.txt b/.github/workflows/data/simplewiki-500/Boil.txt new file mode 100644 index 000000000..c957bf4d8 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Boil.txt @@ -0,0 +1,2 @@ +Boil might mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Boot device.txt b/.github/workflows/data/simplewiki-500/Boot device.txt new file mode 100644 index 000000000..766552343 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Boot device.txt @@ -0,0 +1,6 @@ +A boot device is used to start a computer. It is named after a boot which fits on the foot. The word bootstrap is also closely related, and means, to use something simpler to get something more complex to make itself work better. It comes from the English phrase "pull yourself up by your own bootstraps." +Before a computer can operate normally, it must have operating system instructions that tell it how to perform basic functions. A boot device loads the operating system into the memory of the computer. +Devices that can boot a computer are usually boot disks or boot drives (normally a hard drive or Solid State Drive, but can be a floppy disk, flash drive or a CD). Some network computers use "boot chips" that get the operating system over a network. Web phones also use such chips to identify the user to the mobile phone network. Boot card standards may let many users boot kiosk computers with full privacy and access to all application software they own. There are also boot boards or boot "add-in" cards that are more permanent than boot cards. +Some people refer to the boot device as just a boot and non-boot devices as data devices, although it is not the computer but the operating system that cares about the difference between these. +Origin. +The boot in boot device is the same as booting (or starting up). This is short for bootstrapping, or to start with simple stuff and make complex stuff out of it. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Boot.txt b/.github/workflows/data/simplewiki-500/Boot.txt new file mode 100644 index 000000000..66c79b278 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Boot.txt @@ -0,0 +1,3 @@ +A boot is a type of footwear that protects the foot and ankle. Boots are higher and larger than shoes and sandals. Some boots are high enough to protect the calves (lower part of the leg) as well. Some boots are held on with "bootstraps" or "bootlaces". Some also have spats or "gaiters" to keep water out. Most have a very strong "boot sole", the bottom part of a boot. +Other websites. + Media related to at Wikimedia Commons \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Bootlace.txt b/.github/workflows/data/simplewiki-500/Bootlace.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Bootstrap.txt b/.github/workflows/data/simplewiki-500/Bootstrap.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Botany.txt b/.github/workflows/data/simplewiki-500/Botany.txt new file mode 100644 index 000000000..4c71db797 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Botany.txt @@ -0,0 +1,5 @@ +Botany is the study of plants. It is a science. It is a branch of biology. +It is also called plant biology, and sometimes phytology. Scientists who study botany are called botanists. They study how plants work. +Branches of botany. +Recent trends. +University departments of botany are often now merged into a wider group of specialities, including cell biology, genetics, ecology, cytology, palaeontology and other topics. This gives students and research workers access to a wider education and a wider range of research techniques. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Bottle.txt b/.github/workflows/data/simplewiki-500/Bottle.txt new file mode 100644 index 000000000..97b7df1e6 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Bottle.txt @@ -0,0 +1,2 @@ +A bottle is a container used to carry liquids. Bottles can have many different sizes. Bottles are usually made of glass or plastic. Drinks such as milk, wine, lemonade, soft drinks, and water are often put into bottles. Other liquids put into bottles include chemicals like bleach or detergent, and some kinds of medicines. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Brazil.txt b/.github/workflows/data/simplewiki-500/Brazil.txt new file mode 100644 index 000000000..4acfb9fbf --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Brazil.txt @@ -0,0 +1,23 @@ +Brazil, officially the Federative Republic of Brazil, is a country in South America. It is the world's fifth largest country. The country has about 212 million people. The capital of Brazil is Brasília. Brazil was named after brazilwood, which is a tree that once grew very well along the Brazilian coast. +History. +The first people to come to Brazil came around 9,000 B.C. That group of indigenous people is often called the South American Indians and probably came from North America. They practiced hunting, foraging, and farming. Over thousands of years, many different indigenous people were living there. +Pedro Álvares Cabral was the first European to see Brazil. He saw it in 1500. He was from Portugal and the Portuguese kingdom claimed Brazil. Soon, Portugal colonized Brazil and created colonies all along the coastline. They began to import black slaves from Africa and force them to work. Because of the violence of the slave masters, many of these slaves would run away into the forest and create their own communities called quilombos. +In the late 1500s and early 1600s, the Dutch and the French tried to take some land in Brazil. Dutch, French, and Portuguese started moving inland further than the Treaty of Tordesillas said they could. This caused some fights with the Spaniards (people from Spain) and indigenous people in the area. +In 1822, Brazil claimed to be its own country and not a part of Portugal anymore. Soon there was civil war. Meanwhile, the quilombos survived and Brazil was bringing in more slaves than any other country in the Americas, even though many countries were beginning to legally abolish slavery. This led to an increase in slave revolts, especially in the 1860s and 1880s, which forced the government to change the system to keep the country stable. Slavery was legally abolished in 1888. +In 1889, there was a military coup, and Pedro II had to leave the country. In 1889, Brazil became a republic. The only people who could vote were people who owned land. There were some uprisings in the 1920s because some people thought the government was unfairly helping coffee growers. Brazil joined the Allies during World War II. +During the 1960s, the military leader Castelo Branco overthrew the government and created a dictatorship that was supported by the United States. It was very anti-communist and they imprisoned, tortured, or killed many people on the left. Since then, the country has become more democratic, but some people feel that there are still big problems in health, education, crime, poverty and social inequality. +In August 2016, then-president Dilma Rousseff was removed from office because of impeachment. +Languages. +The official language of Brazil is Portuguese. Brazil is the only country in South America that speaks Portuguese but more people in South America speak Portuguese than Spanish because the population of Brazil is larger than the combined population of all the Spanish-speaking countries in South America. +Some people in Brazil speak German dialects. That came from German immigrants. 2% of Brazilians speak German as their first language. Yiddish is spoken by the elders of the Jewish community. +Other people in Brazil speak their ancestors' languages like Italian, Japanese, Polish, Ukrainian, French, Russian, Lithuanian, Chinese, Dutch and Korean. Spanish or "Portunhol", a mix of Portuguese and Castilian (Spanish) is spoken at some of the borders. Indigenous languages as Guarani and Aymará are the first languages of a small number of Brazilians. +Geography. +Brazil has the world's largest rainforest, the Amazon Rainforest. It makes up 40% of the country's land area. Brazil also has other types of land, including a type of savanna, called "cerrado", and a dry plant region named "caatinga". +The most important cities are Brasília (the capital), Belém, Belo Horizonte, Curitiba, Florianópolis, Fortaleza, Goiânia, Manaus, Porto Alegre, Recife, Rio de Janeiro, Salvador, São Paulo (the biggest city) and Vitória. Other cities are at List of largest cities in Brazil. +Brazil is divided into 26 states plus the Federal District in five regions (north, south, northeast, southeast and centre-west): +The country is the fifth-largest in the world by area. It is known for its many rainforests and jungles. It is next to every country in South America except Chile and Ecuador. +The name Brazil comes from a tree named brazilwood. +Culture. +Brazil is the largest country in South America and the fifth-largest in the world. Its people are called Brazilians or Brasileiros (In Portuguese). The people include citizens of Portuguese or other European descent who mainly live in the South and Southeast, Africans, Native Americans, Arabs, Gypsies, and people of mixed ancestry. Brazil also has the largest Japanese community outside Japan. Other East Asians follow the Japanese group. The Amazon River flows through Brazil, it is the 2nd longest river in the world (after the Nile). The current President of Brazil is Luiz Inacio Lula da Silva. Two major sporting events were held in Brazil recently: the 2014 FIFA World Cup and the 2016 Summer Olympics in Rio de Janeiro. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Breakfast sausage.txt b/.github/workflows/data/simplewiki-500/Breakfast sausage.txt new file mode 100644 index 000000000..010e2854a --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Breakfast sausage.txt @@ -0,0 +1,19 @@ +Breakfast sausage is a type of fresh pork sausage made from seasoned ground meat mixed with bread crumbs. Breakfast sausage has a blander flavor than many other types of sausage, such as British or Italian-style sausages. +History of breakfast sausages. +The journey of breakfast sausages began centuries ago in Europe, with each European country adding its unique twist. For instance, Germany is known for its variety of wursts, while Italian sausages often feature fennel and garlic. This evolution reflects changes in societal norms and eating habits, transitioning from a means of preservation to a convenient breakfast option. +Using breakfast sausages. +Breakfast sausages are not cured or smoked like other types of sausages, which means that they have to be cooked soon after they are purchased (unless they are frozen). Uncooked sausages should be stored in the refrigerator or the freezer. Individuals handling them should wash their hands in hot soapy water, because uncooked pork is unhealthy for humans. Pork sausages have to be heated until all of the meat inside is cooked. +They are usually fried or grilled in a pan until they are browned and served at breakfast, often with cooked eggs, pancakes, and toasted bread. Breakfast sausages are also used in other dishes, such as "toad in the hole" a cooked batter dish. +Preparation and Cooking. +Cooking breakfast sausages to perfection is an art. Frying in a pan over medium heat brings out rich flavors, while baking offers a healthier alternative with minimal attention. Grilling imparts a unique smoky flavor. Regardless of the method, the internal temperature should reach 160°F (71°C) to ensure they are cooked through. +Types of breakfast sausages. +Different types made from pork and beef mixtures as well as poultry can now be found. There are also vegetarian types that use textured vegetable protein in place of meat. Breakfast sausages are available in patties or slices from a large roll, or in weiner-like links of different lengths and thickness. +Nutritional Information. +Breakfast sausages are a good protein source but can be high in saturated fat and sodium. Leaner versions are available, and for those looking for plant-based alternatives, vegetarian sausages offer similar textures and flavors but are lower in fat and cholesterol-free. +Cultural Variations. +Breakfast sausages are a staple in many cultures. In the US, they are often paired with pancakes and eggs. In the UK, they are a key part of the 'full English breakfast.' German Bratwurst and Italian sausages with fennel and garlic are examples of how different regions have embraced and adapted breakfast sausages. +Recipes and Serving Suggestions. +Creative ways to incorporate breakfast sausages into meals include Sausage and Egg Muffin Cups, Sausage Breakfast Casseroles, and Sausage and Vegetable Skillets. These recipes demonstrate the versatility of breakfast sausages in various cuisines. +Modern Developments and Trends. +Recent trends in breakfast sausages include the rise of plant-based options, ethically sourced meats, global flavors, and healthier ingredients. This reflects changing consumer preferences towards healthier and more diverse food choices. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Britain.txt b/.github/workflows/data/simplewiki-500/Britain.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/British English.txt b/.github/workflows/data/simplewiki-500/British English.txt new file mode 100644 index 000000000..f6a68acb8 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/British English.txt @@ -0,0 +1,15 @@ +British English or UK English is the dialect of the English language spoken in the United Kingdom. It is different in some ways from other types of English, such as American English. British English is widely spoken throughout most countries that were historically part of the British Empire. +Use in other countries. +American English is used in the United States. In Canada, the accent sounds extremely similar to American English but with few exceptions (see Canadian English). Canada has mixed the spelling rules of American and British English to form its own spelling rules. +All members of the Commonwealth of Nations learn British English, while American English is often learnt in the Americas, Japan, South Korea and Taiwan. The United Kingdom and Ireland use British layout keyboards, while Australia, South Africa, Canada, New Zealand and the US use American layout keyboards. In continental Europe, English as a second language is sometimes taught in American English, except in Scandinavia and the Netherlands where British English is taught. +Pronunciation. +In the United Kingdom, the spelling remains the same but the pronunciation varies with local dialect. For example, a person from a place near London may not pronounce his "r"s the same as a person from Scotland. Across the country, the accent is different. In Liverpool, people may speak with a "Scouse" accent, in Birmingham with a "Brummie" accent. +In London the "Cockney" accent was once common, but is almost never heard today. All these regional accents became less extreme in the 20th century. This is generally attributed to the arrival of radio and television. Another factor is the increased mobility of people. A similar process has been noted in the United States, where regional differences are much less noticeable than they used to be. +Spelling. +There are many words that sound the same in both American and British English but have different spellings. British English often keeps more traditional ways of spelling words than American English. Many of the British English rules are also used in other countries outside of the United Kingdom. Most of those countries are members of the Commonwealth of Nations. +Vocabulary. +In British English, "dock" refers to the water in the space between two "piers" or "wharfs". In American English, the "pier" or "wharf" could be called a "dock", and the water between would be a "slip". +Some common differences: +British English – American English +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Browser.txt b/.github/workflows/data/simplewiki-500/Browser.txt new file mode 100644 index 000000000..7b57c388c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Browser.txt @@ -0,0 +1,2 @@ +A browser is a name given to any animal, usually a herbivorous mammal, which eats leaves and shrubs rather than grass. It is contrasted with grazers, which eat grass. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Bubonic plague.txt b/.github/workflows/data/simplewiki-500/Bubonic plague.txt new file mode 100644 index 000000000..d97281bc0 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Bubonic plague.txt @@ -0,0 +1,24 @@ +Bubonic plague is the best-known form of the disease plague caused by the bacterium "Yersinia pestis". The name "bubonic plague" is specific for this form of the disease, which enters through the skin, and travels through the lymphatic system. +The plague was spread by fleas on rats. This method of spreading disease is called a zoonosis. +If the disease is left untreated, it kills about half its victims in three to seven days. The bubonic plague was the disease that caused the Black Death, which killed tens of millions of people in Europe, in the Middle Ages. +Symptoms of this disease include coughing, fever, and black spots on the skin. +Different kinds of the same disease. +There are different kinds of Bubonic plague. The most common form of the disease is spread by a certain kind of flea, that lives on rats. Then there is an incubation period which can last from a few hours to about seven days. +Septicemic plague. +Sepsis happens when the bacterium enters the blood and makes it form tiny clots. +Pneumonic plague. +This happens when the bacterium can enter the lungs. About 95% of all people with this form will die. Incubation period is only one to two days. +The abortive form. +This is the most harmless form. It will result in a small fever. After that, the victim's body produces antibodies that protect against all forms of the disease for a long time. +History. +The first recorded epidemic was in the Eastern Roman Empire (Byzantine Empire), It was called the Plague of Justinian after emperor Justinian I, who was infected but survived after long treatment. The pandemic resulted in the deaths of an estimated 25 million (6th century outbreak) to 50 million people (two centuries of recurrence). +During the 1300s, this epidemic struck parts of Asia, North Africa, and Europe. Almost a third of the people in Europe died of it. Unlike catastrophes that pull communities together, this epidemic was so terrifying that it broke people's trust in one another. Giovanni Boccaccio, an Italian writer of the time, described it: ""This scourge had implanted so great a terror in the hearts of men and women that brothers abandoned brothers, uncles their nephews, sisters their brothers, and in many cases wives deserted their husbands. But even worse... fathers and mothers refused to nurse and assist their own children"." +Local outbreaks of the plague are grouped into three plague pandemics, whereby the respective start and end dates and the assignment of some outbreaks to either pandemic are still subject to discussion. The pandemics were: +Globally about 600 cases of plague are reported a year. In 2017 the countries with the most cases include the Democratic Republic of the Congo, Madagascar, and Peru. +Vector. +The transmission of "Y. pestis" by fleas is well known. Fleas are the vector. The flea gets the bacteria as they feed on an infected animal, usually a rodent. Several proteins then work to keep the bacteria in the flea's digestive tract. This is important for the survival of "Y. pestis" in fleas. +Modern history. +In the 20th century, some countries did research on the bacteria that causes bubonic plague, in order to use it for biological warfare. +Samples of this bacteria are carefully controlled. There is much paranoia (fear) about it. Dr. Thomas C. Butler, a US expert in this organism was charged in October 2003 by the FBI with various crimes. This happened after he said he lost samples of "Yersinia pestis". This is the bacteria that causes bubonic plague. The FBI did not find the samples. They do not know what happened to them. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Calculus.txt b/.github/workflows/data/simplewiki-500/Calculus.txt new file mode 100644 index 000000000..dfddd8ed8 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Calculus.txt @@ -0,0 +1,30 @@ +Calculus is a branch of mathematics that describes continuous change. +There are two different types of calculus. Differential calculus divides ("differentiates") things into small ("different") pieces, and tells us how they change from one moment to the next, while integral calculus joins ("integrates") the small pieces together, and tells us how much of something is made, overall, by a series of changes. Calculus is used in many different sciences such as physics, astronomy, biology, engineering, economics, medicine and sociology. +History. +In the 1670s and 1680s, Sir Isaac Newton in England and Gottfried Leibniz in Germany figured out calculus at the same time, working separately from each other. Newton wanted to have a new way to predict where to see planets in the sky, because astronomy had always been a popular and useful form of science, and knowing more about the motions of the objects in the night sky was important for navigation of ships. Leibniz wanted to measure the space (area) under a curve (a line that is not straight). Many years later, the two men argued over who discovered it first. Scientists from England supported Newton, but scientists from the rest of Europe supported Leibniz. Most mathematicians today agree that both men share the credit equally. Some parts of modern calculus come from Newton, such as its uses in physics. Other parts come from Leibniz, such as the symbols used to write it. +They were not the first people to use mathematics to describe the physical world — Aristotle and Pythagoras came earlier, and so did Galileo Galilei, who said that mathematics was the language of science. But both Newton and Leibniz were the first to design a system that describes how things change over time, and can predict how they will change in the future. +The name "calculus" was the Latin word for a small stone the ancient Romans used in counting and gambling. The English word "calculate" comes from the same Latin word. +Differential calculus. +Differential calculus is used to find the rate of change of a variable—compared to another variable. +Variables can change their value. This is different from numbers because numbers are always the same. For example, the number 1 is always equal to 1, and the number 200 is always equal to 200. One often writes variables as letters such as the letter x: "x" can be equal to 1 at one point and 200 at another. +Some examples of variables are distance and time, because they can change. The speed of an object is how far it travels in a particular time. So if a town is 80 kilometres (50 miles) away and a person in a car gets there in one hour, they have traveled at an average speed of 80 kilometres (50 miles) per hour. But this is only an average: they travelled faster at some times (say on a highway), and slower at other times (say at a traffic light or on a small street where people live). Certainly it is more difficult for a driver to figure out a car's speed using only its odometer (distance meter) and clock—without a speedometer. +Until calculus was invented, the only way to work this out was to cut the time into smaller and smaller pieces, so the average speed over the smaller time would get closer and closer to the actual speed at a point in time. This was a very long and hard process, and had to be done each time people wanted to work something out. +Differential calculus is also useful for graphing. A very similar problem is to find the slope (how steep it is) at any point on a curve. The slope of a "straight" line is easy to work out — it is simply how much it goes up or down ("y" or vertical) divided by how much it goes across ("x" or horizontal). On a "curve", however, the slope is a variable (has different values at different points) because the line bends. But if the curve was to be cut into very, very small pieces, the curve at the point would look almost like a very short straight line. So to work out its slope, a straight line can be drawn through the point with the same slope as the curve at that point. If this is done exactly right, the straight line will have the same slope as the curve, and is called a tangent. But there is no way to know (without complex mathematics) whether the tangent is exactly right, and our eyes are not accurate enough to be certain whether it is exact or simply very close. +What Newton and Leibniz found was a way to work out the slope (or the speed in the distance example) exactly, using simple and logical rules. They divided the curve into an infinite number of very small pieces. They then chose points on either side of the range they were interested in and worked out tangents at each. As the points moved closer together towards the point they were interested in, the slope "approached" a particular value as the tangents approached the real slope of the curve. The particular value it approached was the actual slope. +Given a function formula_1. "f" is short for function, so this equation means "y is a function of x". This tells us that how high y is on the vertical axis depends on what x (the horizontal axis) is at that time. For example, with the equation formula_2, we know that if formula_3 is 1, then formula_4 will be 1; if formula_3 is 3, then formula_4 will be 9; if "formula_3" is 20, then "formula_4" will be 400. The slope of the tangent line produced using this method here is formula_9, or 2 multiplied by "formula_3". So we know without having to draw any tangent line at any point on the curve formula_11 that the derivative, often written as formula_12 (marked with the prime symbol), will be formula_9 at any point. This process of working out a slope using limits is called differentiation, or finding the derivative. +The way to write the derivative in mathematics is +formula_14 +Leibniz came to the same result, but called h "formula_15", which means "with respect to x". He called the resulting change in formula_16 "formula_17", which means "a tiny amount of y". Leibniz's notation is used by more books, because it is easy to understand when the equations become more complicated. In Leibniz notation: +formula_18. +Mathematicians have grown this basic theory to make simple algebra rules—which can be used to find the derivative of almost any function. +In the real world, calculus can be used to find the speed of a moving object, or to understand how electricity and magnetism work. It is very important for understanding physics—and many other areas of science. +Integral calculus. +Integral calculus is the process of calculating the area underneath a graph of a function. An example is calculating the distance a car travels: if one knows the speed of the car at different points in time and draw a graph of this speed, then the distance the car travels will be the area under the graph. +The way to do this is to divide the graph into many very small pieces, and then draw very thin rectangles under each piece. As the rectangles become thinner and thinner, the rectangles cover the area underneath the graph better and better. The area of a rectangle is easy to calculate, so we can calculate the total area of all the rectangles. For thinner rectangles, this total area value "approaches" the area underneath the graph. The final value of the area is called the "integral" of the function. +In mathematics, the integral of the function "f(x)" from "a"  to "b", is written as +formula_19. +Main idea of calculus. +The main idea in calculus is called the fundamental theorem of calculus. This main idea says that the two calculus processes, differentiation and integration, are inverses of each other. That is, a person can use differentiation to undo an integration process. Also, a person can use integration to undo a differentiation. This is just like using division to "undo" multiplication, or addition to "undo" subtraction. +In a single sentence, the fundamental theorem runs something like this: "The derivative of the integral of a function "f" is the function itself". +Applications of calculus. +Calculus is used to describe things that change, like things in nature. It can be used for showing and learning all of these: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Capitalization.txt b/.github/workflows/data/simplewiki-500/Capitalization.txt new file mode 100644 index 000000000..208caab68 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Capitalization.txt @@ -0,0 +1,19 @@ +Capitalization (North American spelling), or capitalisation (British spelling), is a process to make one letter or more uppercase. The first letter of a sentence is capitalised in many languages, as are the first letters of proper nouns such as names of people and places. In German, however, all nouns are capitalized. +In the Latin alphabet, which is used in English, these are the uppercase or capital letters or majuscules: +A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z +These are the lowercase or small letters or minuscules: +a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z +The homonym "(to) capitalize" is a different word and it means "to fully fund as an investment". +Names of capitalization styles. +There are many ways to use capitalization and they have names. +Sentence case. +"The quick brown fox jumps over the lazy dog." +Sentence case is the standard case used in English prose and in many other languages. Only the first word is capitalized, except for proper nouns and other words which are generally capitalized by a more specific rule. +Title case. +When something is written in title case (also known as capital case or headline style), all words are capitalized, except for certain minor words, such as "the", "of" or "and". +All caps. +"The quick brown fox jumps over the lazy dog." +When something is written in all caps (or all-caps), every single letter is uppercase, with no exceptions. +Camel case. +Camel case (or CamelCase) is the practice of writing compound words or phrases so that each next word or abbreviation is capitalized. It can either start with a lowercase or uppercase letter. Common examples are PowerPoint or iPhone. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Capitalize.txt b/.github/workflows/data/simplewiki-500/Capitalize.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Cartography.txt b/.github/workflows/data/simplewiki-500/Cartography.txt new file mode 100644 index 000000000..7dabdd54e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Cartography.txt @@ -0,0 +1,8 @@ +Cartography is making maps. It is part of geography. How people make maps is always changing. In the past, maps were drawn by hand, but today most printed maps are made using computers and people usually see maps on computer screens. Someone who makes maps is called a cartographer. +Making a map can be as simple as drawing a direction on a napkin, or as complicated as showing a whole country or world. Anyone can make a map, but cartographers spend their lives learning how to make better maps. +For many centuries maps were usually carefully drawn onto paper or parchment. Now they are made on a computer which makes them look neater with accurate images. +Maps are of two main types: +General maps are produced in a series. Governments produce them in larger-scale and smaller-scale maps of great detail. +Thematic maps are now very common. They are necessary to show spatial, cultural and social data. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Catharism.txt b/.github/workflows/data/simplewiki-500/Catharism.txt new file mode 100644 index 000000000..f7ed09457 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Catharism.txt @@ -0,0 +1,16 @@ +The Cathar faith was a version of Christianity. They were usually considered Gnostics. The word 'Cathar' comes the Greek word "katharos" meaning 'unpolluted' (from Tobias Churton, "The Gnostics") or "the pure ones". +They used a bible in the language people spoke. Most other Western Christians used a Bible in Latin. Latin was spoken only by the priests. +Doctrines. +The Cathars believed that the world had been made by a bad god. They believed that this bad god had taken them from the good god and put them in the world, but inside their bodies there was a spirit, and that spirit needed to return to the good god. They were famous for a belief in a form of reincarnation and believed that when someone died the bad god would put that person's spirit in a new body. They believed this cycle of coming back to life could be escaped by a ritual cleansing. They were opposed to the doctrine of sin. +Women were prominent in the faith. They were pacifists. They didn't eat anything that was made from other animals, including meat and cows milk. The only exception to this was fish. Fish was OK to eat because they believed fishes were not alive but just things that were sometimes produced from dirt and water. +They preached tolerance of other faiths. They rejected the usual Christian rules of marriage and only believed in the New Testament. An earlier 10th-century Bulgarian heresy, Bogomilism and also Manichaeism started some of these trends. +Problems. +In 1145, open challenge to Catholic dominance began. In about 1165, the first Cathars said that the Church was "full of ravening (starving) wolves and hypocrites" and "worshipping the wrong God", right in front of the most powerful Catholics. In 1166, the Council of Oxford in England wiped out the English Cathars. They were also suppressed in Northern France. In 1167, Cathar bishops met to discuss organizing a counter Church - in the South of France, the Languedoc nobles protected it, and many noble women became "Perfects". Parish clergy had low morale, or confidence. +The Catholic Church was against Catharism, seeing it as a heresy. In the South of France there was tremendous religious fervor, and an economy that was starting to grow, and a social class of merchants and peasants was starting to grow. Peasants owned their own land. Meanwhile, in other parts of Europe, peasants were forced to give up their land to nobles and become serfs or slaves - the system of feudalism. There was a strong central absolute monarchy that did not exist in the South of France. The burghers and bankers had more power in this looser system. R. I. Moore is a historian who believes that it was desire to crush this system and take over the land that drove the attack. However, there was real cultural and religious difference to cause problems: Troubadors, who combined some of the traditions of the Bards of the Celts, and Jews were both part of the multicultural society in the South of France. Their influences were not appreciated by local or Roman Church figures. The 12th century Roman Catholic Monks were founding their monasteries outside the towns, drawing the best people there. +The Cathars had little competition. The Cathar "Perfects", the so-called Good Men or Good Women, lived restrained lives and spread their faith in towns - where the Catholics in general did not have their best people. Also, Cathars preached that only these Good leaders had to follow the regimens their whole lives - lay people could repent only on their deathbeds. Many 20th century Christian sects have similar beliefs. +The Albigensian Crusade. +Methods. +The Pope ordered a crusade against the Cathars in southern France. He said any crusader who answered the call would be given the same rewards as a crusader who went to the Holy Land. This was an absolution of all sin. +In the Launguedoc, on the 22nd of July 1209, a force of about 30,000 Crusaders arrived at the walls of Beziers bearing the cross pattee to mislead and create ease among the Cathars, thinking they were friends, not foe, and demanded that about 200 Cathars be surrendered. The people of the town who were mostly Catholic, said that rather than turn over their friends and family, "we would rather be flayed alive." +A mistake by the defenders of Beziers let thousands of attackers in. Arnauld Amaury made the famous quote "Kill them all, God knows his own" on being asked how to tell who were Cathars during the assault. Everyone in the town was killed, some while taking refuge in the church. It is guessed that 20,000 were killed, many of whom were Catholics and not Cathars at all. The crusade became known as the Albigensian crusade after the town of Albi. It was to wipe out the Cathars almost entirely over forty or so years. The Crusaders wanted to go home, but were ordered by the Pope to continue until the whole South of France was controlled and all Cathars were dead. In 1210, they attacked the fortress at Minerv and built "the first great bonfire of heretics" - beginning the practice of burning at the stake that would continue in the Inquisition of the Counter-Reformation. At the siege of Montsegur when the fires were lit the Cathars ran down the hill and threw themselves on, as their beliefs were very strong... +Catharism disappeared from the northern Italian cities after the 1260s, pressured by the Inquisition. The last known Cathar perfectus in the Languedoc, Guillaume Bélibaste, was killed in 1321. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Census of Marine Life.txt b/.github/workflows/data/simplewiki-500/Census of Marine Life.txt new file mode 100644 index 000000000..eea0bdca5 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Census of Marine Life.txt @@ -0,0 +1,3 @@ +The Census of Marine Life was a ten-year survey of life in the oceans, starting in 2000. Its head was Ron O'Dor of Dalhousie University in Halifax, Nova Scotia, Canada. It used data from researchers all over the world. More than 70 nations were involved and over a billion US dollars were spent on it. +It was a major work of marine ecology. It was founded by J. Frederick Grassle. +The purpose of the Census of Marine Life was to say what is alive in our seas and oceans. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Chat.txt b/.github/workflows/data/simplewiki-500/Chat.txt new file mode 100644 index 000000000..37370ebd2 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Chat.txt @@ -0,0 +1,4 @@ +To chat is to talk about ordinary things that are not usually very important. However, important issues can also classify as “chat”, for instance when organising gatherings, meetings or events, such as air show attendance. A person can chat with another person, or to many people. People also use this word now for parts of the Internet where we can talk with many different people at the same time. Usually, people chat on the Internet in a chat room or messaging service like AOL Instant Messenger (AIM), Yahoo Messenger Windows Live Messenger or Tencent QQ. There are also programs which let people use different messaging services from one program, such as Pidgin. +Online Chat is real time, text-based, digital communication between two or more parties. +Related pages. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Cheese.txt b/.github/workflows/data/simplewiki-500/Cheese.txt new file mode 100644 index 000000000..c8f5c94e2 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Cheese.txt @@ -0,0 +1,12 @@ +Cheese is a dairy product that is made from milk from many different animals milk. There are many types of cheese, such as cheddar, Swiss, and provolone. +Many things affect the form, texture, colour and flavour of a cheese. These include the milk (cow or goat), if the milk has been pasteurized, the amount of butterfat, bacteria and mold in the cheese, how the cheese is made, how much fat is in the cheese, and how old the cheese is. +Origin. +People have been making cheese since before history was written down. It is not known when cheese was first made. It is known that cheese was eaten by the Sumerians in about 4000 BC. +Classification. +There are many different ways to classify cheeses. Some ways include: +There are also man-made foods that some people use instead of cheese. These are called Cheese analogues. +Different types of cheese include: +References. +<templatestyles src="Reflist/styles.css" /> +Other websites. + Media related to at Wikimedia Commons \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Chemical element.txt b/.github/workflows/data/simplewiki-500/Chemical element.txt new file mode 100644 index 000000000..7f5d28511 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Chemical element.txt @@ -0,0 +1,20 @@ +A chemical element is a substance that is made up of only one type of atom. Atoms are made up of protons, neutrons, and electrons. +The number of protons in an atom is called the atomic number. For example, all atoms with 6 protons are atoms of the chemical element carbon, and all atoms with 92 protons are atoms of the element uranium. The number of neutrons in the nucleus does not have to be the same in every atom of an element. Atoms of the same element with different numbers of neutrons are called isotopes. Saying that a substance "contains only one type of atom" really means that it contains only atoms that all have the same number of protons. +The number of protons in the nucleus causes its electric charge. This fixes the number of electrons in its normal (un-ionized) state. The electrons in their atomic orbitals determine the element's various chemical properties. +Elements are the basic building blocks for all types of substances. If a substance contains more than one type of atom, it is a compound or a mixture. The smallest particle of a compound is a molecule. +118 different chemical elements are known to modern chemistry. 92 of these elements can be found in nature, and the others can only be made in laboratories. The human body is made up of 26 elements. The last natural element discovered was uranium, in 1789. The first man-made element was technetium, in 1937. +Chemical elements are commonly arranged in the periodic table. Where the elements are in the table tells us about their properties relative to the other elements. +Chemical symbols. +Chemical elements are given a unique "chemical symbol". Chemical symbols are used all over the world. This means that, no matter which language is spoken, there is no confusion about what the symbol means. Chemical symbols of elements almost always come from their English or Latin names. For example, carbon has the chemical symbol 'C', and sodium has chemical symbol 'Na', after the Latin "natrium". Tungsten is called 'W' after its German name, "wolfram". 'Au' is the symbol for gold and it comes from the Latin word for gold, "aurum". Another symbol which comes from Latin is 'Ag'. This is the element silver and it comes from the Latin "argentum". Lead's symbol, 'Pb', comes from the Latin "plumbum" and the English word plumber derives from this as pipes used to be made out of lead. Some more recently discovered elements were named after famous people, like einsteinium, which was named after Albert Einstein. +Compounds. +Elements can join (react) to form pure compounds (such as water, salts, oxides, and organic compounds). In many cases, these compounds have a fixed composition and their own structure and properties. The properties of the compound may be very different from the elements it is made from. Sodium is a metal that burns when put into water and chlorine is a poisonous gas. When they react together they make "sodium chloride" (salt) which is generally harmless in small quantities and edible. +Mixtures. +Some elements mix together in any proportion to form new structures. Such new structures are not compounds. They are called mixtures or, when the elements are metals, alloys. +Isotopes. +Most elements in nature consist of atoms with different numbers of neutrons. An isotope is a form of an element with a certain number of neutrons. For example, carbon has two stable, naturally occurring isotopes: carbon-12 (6 neutrons) and carbon-13 (7 neutrons). Carbon-14 (8 neutrons) is a naturally occurring radioactive isotope of carbon. At least two isotopes of each element are known (except for Oganesson, of which only a few atoms have been made). +Classification. +Elements can be classified based on physical states. At room temperature and pressure, most elements are solids, only 11 are gases and 2 are liquids. +Elements can also be classified into metals and non-metals. There are many more metals than non-metals. +However, a few elements have properties in between those of metals and non-metals. These elements are called semimetals (or metalloids). +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Chemistry.txt b/.github/workflows/data/simplewiki-500/Chemistry.txt new file mode 100644 index 000000000..2bf1eab1e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Chemistry.txt @@ -0,0 +1,22 @@ +Chemistry is a branch of science that deals with chemical elements and compounds, and how they work together and change. In other words, chemistry is the branch of science about fundamental properties of matter and chemical reactions. Chemistry is the study of the substances and their transformations (or change). +History. +In history, people studied elements to figure out how to do things such as turn lead into gold, but they did not manage to do it. This early form of chemistry was called alchemy. During the 18th century, alchemists became chemists when they began using the scientific method. Chemists separated the air into many parts and isolated the noble gases from it. They also processed special minerals from a mine in Sweden to get rare earth metals. Radioactivity was also discovered. 118 different elements have been found. Some are very common, like oxygen. Many are very rare and expensive, like platinum. Some cannot be found on earth and can only be made in labs, like rutherfordium. +Since the 1920s, the increased understanding of physics has changed chemists' theories about chemical reactions. With smaller and faster computers, chemists have built better tools for analyzing substances. These tools have been sent to study chemicals on Mars. Police also use those tools to study evidence from crime scenes. +Types of chemistry. +There are several types of chemistry. Analytical chemistry looks at which chemicals are in things. For example, looking at how much arsenic is in food. Organic chemistry looks at things that have carbon in them. For example, making acetylene. Inorganic chemistry looks at things that do not have carbon in them. One example is making an integrated circuit. Theoretical chemistry tries to explain chemical data with mathematics and computers. +A large area of chemistry is polymer chemistry. This looks at plastics. One example is making nylon. Because plastics are made of carbon, polymer chemistry is part of organic chemistry. Another area is biochemistry. This looks at the chemistry of living things. An example would be seeing how arsenic poisons people. Biochemistry is also part of organic chemistry. There are many other small branches of chemistry. +Concepts of chemistry. +Basic concepts. +The basic unit of an element is called an atom. An atom is the smallest building block that you can cut an element into without the element breaking down (turning into a lighter element, for example through nuclear fission or radioactive decay). A chemical compound is a substance made up of two or more elements. In a compound, two or more atoms are joined to form a molecule. The tiniest speck of dust or drop of liquid, that one can see is made up of many millions or billions of these molecules. Mixtures are substances where chemicals are mixed but not reacted. An example would be mixing sand and salt. This can be undone again to produce salt and sand separately. Chemical compounds are changed by a chemical reaction. An example would be heating sodium bicarbonate, common baking soda. It will make water, carbon dioxide, and sodium carbonate. This reaction cannot be undone. +One very important concept in chemistry is that different atoms interact with one another in very specific proportions. For example, two hydrogen atoms interacting with one oxygen atom lead to the water molecule, H2O. This relationship is known as the "Law of constant proportions" and leads to the idea of "stoichiometry", a term that refers to the ratios of different atoms in chemical compounds. For example, in water, there are always exactly 2 hydrogen atoms to 1 oxygen atom. In carbon dioxide, there are exactly 2 oxygen atoms for 1 carbon atom. These relationships are described using chemical formulas such as H2O (two hydrogen atoms and one oxygen atom) and CO2 (one carbon atom and two oxygen atoms). +Mole. +Because atoms of different elements react with one another in very specific proportions but atoms of different elements have different weights, chemists often describe the number of different elements and compounds in terms of the number of "moles". A "mole" of any element contains the same number of atoms: 602,214,150,000,000,000,000,000 atoms. The atomic mass of an element can be used to see how much of the element makes a mole. For example, the atomic mass of copper is about 63.55. That means about 63.55 grams of copper metal has a mole of atoms. The atomic mass of chlorine is about 35.45. That means 35.45 grams of chlorine has a mole of atoms in it. +Moles can be used to see how many molecules are in chemical compounds, too. Copper(II) chloride is an example. CuCl2 is its chemical formula. There is one copper atom (63.55) and two chlorine atoms (35.45 · 2 = 70.90). Add all the molar masses of the elements together to get the molar mass of the chemical compound (63.55 + 70.90 = 134.45). That means in 134.45 grams of copper(II) chloride, there is one mole of copper(II) chloride molecules. This concept is used to calculate how much chemicals are needed in a chemical reaction if no reactants (chemicals that are reacted) should be left. If too much reactant is used, there will be some reactants left in the chemical reaction. +Acids and bases. +Acids and bases are common chemicals. Acids release H+ ions when in water, and bases release OH− ions when in water. Acids can react with bases. The H+ ion is taken from the acid by the base. This makes water, H2O. A salt is also made when an acid and a base react together. An example would be reacting hydrochloric acid (HCl) and sodium hydroxide (NaOH). Hydrochloric acid releases H+ and Cl- ions in water. The base releases Na+ and OH- ions. The H+ and the OH- react to make water. There is a solution of sodium chloride (NaCl) left. Sodium chloride is a salt. +Usefulness. +Chemistry is very useful in everyday life and makes up the foundation of many branches of science. Most objects are made by chemists (people who do chemistry). Chemists are constantly working to find new and useful substances. Chemists make new drugs and materials like paints that we use every day. +Safety. +Many chemicals are harmless, but there are some chemicals that are dangerous. For example, mercury(II) chloride is very toxic. Chromates can cause cancer. Tin(II) chloride pollutes water easily. Hydrochloric acid can cause bad burns. Some chemicals like hydrogen can explode or catch fire. To stay safe, chemists experiment with chemicals in a chemical lab. They use special equipment and clothing to do reactions and keep the chemicals contained. The chemicals used in drugs and in things like bleach have been tested to make sure they are safe if used correctly. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/China.txt b/.github/workflows/data/simplewiki-500/China.txt new file mode 100644 index 000000000..fd9171fa4 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/China.txt @@ -0,0 +1,45 @@ +China ( Pinyin: Zhōngguó) is a cultural region, an ancient civilization, and a nation in East Asia. The official name is People's Republic of China or PRC. +The latest Chinese Civil War (1927–1949) resulted from two different political powers today: +China is one of the world's oldest civilizations, having the oldest continuous civilization near the Yellow River region. There is archaeological evidence found that is over 5,000 years old. China also has one of the world's oldest writing systems (and the oldest in use today). China has been the source of making many major inventions. Geographically, China’s longest river is the Yangtze River, which runs through mega cities and is home to many species. It is the world’s third longest river. +Origins. +The first recorded use of the word "China" is dated to be 190. It is derived from "chīnī", a Persian adjective meaning 'Chinese' which was popularized in Europe by Marco Polo. +History. +Ancient (2100 B.C. – 1500 A.D.). +Ancient China was one of the first civilizations, and was active since the 2nd millennium BC as a feudal society. Chinese civilization was also one of the few to invent writing, with the others being Mesopotamia, the Indus Valley civilization, the Maya civilization, the Minoan civilization of ancient Greece, and Ancient Egypt. Ancient China reached its golden age during the Tang Dynasty (c. A.D. 10th century). Home of Confucianism and Daoism, it had great influence on nearby countries including Japan, Korea, and Vietnam in the areas of political system, philosophy, religion, art, writing and literature. China is home to some of the oldest artwork in the world. Statues and pottery, as well as decorations made of jade, are some classic examples. +Before the Qin Dynasty united China, there were many small feudal states, nominally loyal to the Zhou King, which typically fought each other for hundreds of years in battles for control of China. The majority of these states were ruled by relatives and clansmen of the Zhou royal house and carried the surname Ji (姬), and were tied by family bonds to the Zhou king, to whom they were ritually subordinate, as members of collateral or lesser lineages. A minority of these states, such as the Qin and Chu, were ruled by non-Zhou clansmen, and were awarded their fiefs on account of some merit. Over time, these feudal states attained to power and wealth, that exceeded that of their Zhou nominal overlord, whose direct authority became confined to a very small territory near present-day Zhengzhou. These states also began to acquire some distinctive characteristics and identities of their own during the long centuries of loose control by the Zhou. Eventually, the Zhou kings were eclipsed in power by two especially problematic vassals - the Qin and Chu, and the functional independence of the Qin later led to its gradual conquest of all other vassal states and the formal supplantation of the Zhou to form a heavily centralised Empire. +The long decline of the Zhou, incidentally the longest ruling dynastic house of China, is known as the Warring States Period. Despite the bloodiness and strife of the period, this was the time when many great philosophies emerged - including Confucianism and Daoism as a response to disintegrating central authority of the Zhou kings and fluctuating power of the vassal states, and the general uncertainty of that era. Confucianism and Daoism have been the foundation of many social values seen in modern east Asian cultures today. +Other notable dynasties include the Han (from which is derived the ethnonym the Han Chinese, which is synonymous with the older self-referential term - the Huaxia) as well as dynasties such as the Tang, Song, and Ming, which were characterised by periods of affluence, wealth, population growth, and the proliferation of literature. +During the later years, China was often raided or invaded by northern nomadic people such as the Xiongnu, the Xianbei, the Jurchens and the Mongols (the latter led by Genghis Khan and Kublai Khan). One effect of regular nomadic invasion and the collapse of native dynasties was the massive migration of Han Chinese - especially the aristocratic elite and the literati, to sparsely populated frontier regions south of the Yangzi river such as Jiangsu, Zhejiang, Guangdong and Fujian. Several notable waves of Han Chinese immigration to Jiangsu, Zhejiang, Guangdong and Fujian took place during the collapse of the Jin, the Tang, and the Song. +Some nomadic groups succeeded in conquering the whole territory of China, establishing dynasties such as the Yuan (Mongol) and Qing (Manchu). Each time, they also brought new elements into Chinese culture - for instance, military uniform, the qipao and the pigtail, the latter of which was deeply resented by the Han Chinese. +A new age (1500 A.D. - Present). +While China achieved many things in the First millennium and early 2nd millennium, it became an isolationist country in the 15th century C.E. This was because Spain found enormous silver in the new continent, which was the main currency (money) in China and Europe at the time, and China did not want to be bought by the foreigners. +By the time of the Renaissance, European powers started to take over other countries in Asia. While China was never actually taken over, many European countries, such as Britain and France built spheres of influence in China. Since China had cut itself off from the world over the previous few centuries, by the Qing Dynasty, it had fallen behind other countries in technology, and was helpless to stop this from happening. This had become clear when it lost the Opium Wars to Britain in the 19th century. +Still influenced by Western sources, China faced internal strife. The Taiping Rebellion or Taiping War occurred in China from 1851 through 1864. The Taiping Rebellion was led by Hong Xiuquan from Guangdong. Hong Xiuquan was influenced by Christian missionaries and declared himself the brother of Jesus. Hong made his mission to bring down the Qing Dynasty. Gaining influence on the southern Chinese population, the Taiping Rebellion attracted tens of thousands of supporters. The Taiping regime successfully created a state within the Qing Empire with the capital at Nanjing. Hong called his new state the Taiping Tianguo or "The Heavenly State of Great Peace". Local armies eventually suppressed the rebellion at the final battle of Nanjing. +In 1911, the Republic of China was founded after the Xinhai revolution led by Sun Yat-sen, but its government was very weak. Warlords controlled many areas. Chiang Kai-shek led wars against them, and he became president and dictator. +In 1931, Japan invaded Manchuria, a place in the northeastern part of China. On July 7, 1937, the Japanese attacked the rest of the country, starting what was called the Second Sino-Japanese War. +On December 13 of that same year, The Japanese Army killed an estimated (guessed) 200,000 to 300,000 Chinese civilians (people) which is called Nanjing Massacre. The war later became part of World War II. The war was fought for eight years and millions of Chinese people were killed. +However, the Chinese Civil War later started between the Kuomintang (Nationalists) of the Republic of China (ROC) and the Communists of the People's Republic of China (PRC). The Communists wanted to make China like the Soviet Union, whereas the other side wanted to keep China in its current state at the time. The Communists were led by Mao Zedong, Liu Shaoqi, Zhou Enlai and others. The Communists eventually won the war by uniting all the people from different positions. The Nationalists (led by Chiang Kai-shek) fled to the island of Taiwan and set up their new capital city in Taipei. After the Chinese Civil War, the Communist leader Mao Zedong declared a new country, the People's Republic of China (PRC), in Beijing on October 1, 1949. +Under Mao the country stayed poor while Taiwan became richer. His attempt at industrialization and collectivization with the Great Leap Forward led to the deaths of many people from famine. The Cultural Revolution caused great social upheaval. After 1976, China underwent market economy reforms under Deng Xiaoping, and experienced rapid economic growth, which made the former progress made by Taiwan became overshadowed. China is now one of the largest economies in the world, relying mainly on exports and manufacturing. +In recent history, China has had problems with protests, blocking of information on the Internet, and censorship of news. 1989 was notable for the controversial Tiananmen Square protests. Since the 2008 Olympics, China has hosted many major international events, and the 2022 Winter Olympics were held in Beijing, China. +Geography. +China's landscape is vast and diverse. It ranges from the Gobi and Taklamakan Deserts in the north to subtropical forests in the south. The Himalaya, Karakoram, Pamir and Tian Shan mountain ranges separate China from much of South and Central Asia. The Yangtze and Yellow Rivers run from the Tibetan Plateau to the densely populated eastern coast. The Yangtze River is the third-longest river in the world while the Yellow River is the sixth-longest. China's coastline along the Pacific Ocean is 14,500 kilometers (9,000 mi) long. It is bounded by the Bohai, Yellow, East China and South China seas. China connects through the Kazakh border to the Eurasian Steppe. The Eurasian Steppe has been an artery of communication between East and West since the Neolithic through the Steppe route. The Steppe Route is the ancestor of the terrestrial Silk Road(s). +Politics. +China's constitution states that The People's Republic of China "is a socialist state under the people's democratic dictatorship led by the working class and based on the alliance of workers and peasants". It also states the state organs "apply the principle of democratic centralism." The PRC is one of the world's only socialist states openly being communist. +Military. +With 2.3 million active troops, the People's Liberation Army (PLA) is the largest standing military force in the world. The PLA is commanded by the Central Military Commission (CMC). China has the second-biggest military reserve force, only behind North Korea. The PLA consists of the Ground Force (PLAGF), the Navy (PLAN), the Air Force (PLAAF), and the People's Liberation Army Rocket Force (PLARF). According to the Chinese government, China's military budget for 2017 was US$151,5 billion. China has the world's second-largest military budget. +Science and technology. +China was once a world leader in science and technology up until the Ming dynasty. There are many Ancient Chinese discoveries and inventions. For example, papermaking, printing, the compass, and gunpowder are known as the Four Great Inventions. They became widespread across East Asia, the Middle East and later to Europe. Chinese mathematicians were the first to use negative numbers. By the 17th century, Europe and the Western world became better than China in science and technology. +Demographics. +The national census of 2010 recorded the population of the People's Republic of China to be about 1,370,536,875. About 16.60% of the population were 14 years old or younger, 70.14% were between 15 and 59 years old, and 13.26% were over 60 years old. The population growth rate for 2013 is estimated to be 0.46%. +Culture. +China is the origin of Eastern martial arts, called Kung Fu or its first name Wushu. China is also the home of the well-respected Spa Monastery and Wudang Mountains. Martial art started more for the purpose of survival, defense, and warfare than art. Over time some art forms have branched off, while others have retained their distinct Chinese flavor. +China has had renowned artists including Wong Fei Hung (Huang Fei Hung or Hwang Fei Hung) and many others. Art has also co-existed with a variety of paints including the more standard 18 colors. Legendary and controversial moves like Big Mak are also praised and talked about within the culture. +China has many traditional festivals, such as Spring Festival, Dragon Boat Festival, Mid-autumn Festival and so on. The most important is Chinese New Year. People in China will have holidays to celebrate these festivals. +Festivals. +Spring Festival is the Chinese New Year. +Dragon Boat Festival is celebrated to commemorate the death of Qu Yuan, a patriotic poet of the State of Chu during the Warring States period. He persuaded his emperor not to accept Qin's diplomats' offers several times but his emperor did not listen to him. He was very sad and ended up jumping into the river to end his life. The people loved him so much that they did not want the fish to eat his corpse. They made and threw rice dumplings into the river. They hope the fish eat these dumplings instead of the poet's corpse. They also rowed dragon boats in the river to get rid of the fish. Such practices, eating rice dumplings and holding dragon boat races, become what Chinese do in this festival nowadays. +Held on the fifteenth day of the eighth lunar month, Mid-Autumn Festival is a festival for families. Now when the festival sets in, people would sit together to eat moon cakes, appreciate the bright full moon cakes, appreciate the bright full moon, celebrate the bumper harvest and enjoy the family love and happiness. To the Chinese people, the full moon symbolizes family reunion, as does the "moon cakes." Hence the Mid-Autumn Festival is also called the Family Reunion Festival. +Notes. +<templatestyles src="Reflist/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Chinese.txt b/.github/workflows/data/simplewiki-500/Chinese.txt new file mode 100644 index 000000000..269f18cce --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Chinese.txt @@ -0,0 +1,2 @@ +Chinese might mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Chorizo.txt b/.github/workflows/data/simplewiki-500/Chorizo.txt new file mode 100644 index 000000000..1fe01e197 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Chorizo.txt @@ -0,0 +1,6 @@ +Chorizo is a pork (pig-meat) sausage which people first made in the Iberian Peninsula. It is made with large pieces of fatty pork, chili pepper and paprika. The special taste of this sausage comes from the mild Spanish paprika in it. +In the western hemisphere, the Mexican and Caribbean types are better known. These types of chorizo are made with smaller pieces of pork and different seasonings and peppers are used. +Cured smoked chorizo is edible and can be eaten without cooking. Fresh chorizo must be cooked before eating. It can be eaten by its self, or as part of meal. It can also be used in place of ground beef or pork. +Chorizo can be fresh. Also it can be dried. It can be spicy or not spicy depending on the recipe. There are many ways to eat chorizo. It can be sliced and eaten as a snack, or cooked. Dishes like stews, soups and rice dishes also use Chorizo. In Spain, chorizo is served as a small plate of food with drinks. In Latin America, chorizo is served with beans and eggs for breakfast. To make chorizo, the pork is cut into small pieces. Then it is mixed with spices and other ingredients. The mixture is then put into a casing. Casing is a thin, tube-like skin. Casing is made from the intestine of a pig. The chorizo is then left to dry for a few weeks. By doing this chorizo gets its special flavor and texture. There are many kinds of chorizo. Recipe of chorizo also different in different countries. In Spain, there are two main kinds of chorizo: chorizo de verdeo, and chorizo de cantimpalo. Chorizo de verdeo made with white wine and chorizo de cantimpalomade with red wine. In Latin America, chorizo is made with a mixture of chili peppers and other spices. It makes chorizo spicy. There are a few different ways to cook with chorizo. One popular way is to slice the chorizo and fry it in a pan until it is crispy. It can then be added to dishes like soups, stews and rice dishes. Chorizo can also be grilled, which gives it a smoky flavor. It can be sliced and added to sandwiches or served as a topping on pizza. Chorizo is a tasty and versatile food that can be enjoyed in many different ways. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Christian.txt b/.github/workflows/data/simplewiki-500/Christian.txt new file mode 100644 index 000000000..c7ccc8cc3 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Christian.txt @@ -0,0 +1,11 @@ +A Christian () is a person who believes in Christianity, an Abrahamic monotheistic religion. Christianity is mostly about the life and teachings of Jesus Christ, in the Bible's New Testament and interpreted or prophesied in the Hebrew Bible/Old Testament. Christianity is the world's largest religion, with 2.1 billion followers around the world. +Views of the Bible. +Christians consider the Holy Bible to be a sacred book, inspired by God. The Holy Bible is a combination of the Hebrew Bible, or Torah, and a collection of writings called the New Testament. Views on the importance of these writings vary. Some Christian groups prefer to favor the New Testament. Others believe the entire Bible is equally important. Also, while many Christians prefer to consider the Bible as fully true, not all Christian groups believe that it is completely accurate. +Who is a Christian? +The question of "Who is a Christian?" can be very difficult. Christians often disagree over this due to their differences in opinion on spiritual matters. In countries where most persons were baptized in the state church or the majority Christian church, the term "Christian" is a default label for citizenship or for "people like us". +In this context, religious or ethnic minorities can use "Christians" or "you Christians" as a term for majority members of society who do not belong to their group - even in a very secular (though formally Christian) society. +Persons who are more devoted to their Christian faith prefer not to use the word so broadly. They only use it to refer to those who are active in their Christian religion and really believe the teachings of Jesus and their church. In some Christian movements (especially Fundamentalism and Evangelicalism), to be a born-again Christian is to undergo a "spiritual rebirth" by believing in the Bible's teachings about Jesus and choosing to follow him. +Church life. +Many Christians choose to go to church. Most Christians believe this to be a sign of their religious devotion to God and an act of worship. However, some Christian groups think that one can be a Christian without ever going to a church. Though there are many different viewpoints on the issue, most Protestants believe all Christians are part of the spiritual church of Christ, whether or not those Christians go to an actual church each week. On the other hand, Catholics in the past have believed that their Roman Catholic Church is the only true church. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Church (building).txt b/.github/workflows/data/simplewiki-500/Church (building).txt new file mode 100644 index 000000000..3dd5aebc4 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Church (building).txt @@ -0,0 +1,23 @@ +A church is a building that was constructed to allow people to meet to worship together. These people are usually Christians, or influenced by Christianity. Some other non-Christian religious groups also call their religious buildings churches, most notably Scientology. +The following description is about Roman Catholic churches, although some parts are the same in Episcopalian and Lutheran churches. Depending on the number of people that are in a community, the churches come in different sizes. Small churches are called chapels. The churches in a particular geographical area form a group called the diocese. Each diocese has a cathedral. In most cases, the cathedral is a very big church. Cathedrals are the seat of bishops. +History of church buildings. + +In the early days of Christianity people met in private buildings. Church buildings are mentioned for the first time around A.D. 260 when the Emperor Galienus ordered an end of a persecution and to return the places of worship. In the third century we hear of large church buildings. We do not know, how these early buildings looked. Only in Dura-Europos (Syria) a building was discovered, which had been a private house modified for Christian services. +After the death of the Roman emperor Constantine in A.D. 337, Christians were allowed to have buildings to worship in. These first churches were built on a similar plan to Roman basilicas. This plan was later used for the fine Gothic cathedrals and churches that were built at the end of the Middle Ages. +The parts of a church. +There are several parts in the architecture of a church. Not all churches will have all these parts: +In Roman Catholic churches there is always a stoup (bowl) of holy water near the entrance of the church. This tradition comes from the fact that Roman basilicas had a fountain for washing in front of the entrance. The font is a bowl where people (often babies) are baptized. This is also near the entrance of the church. This is a symbol of the fact that it is welcoming the people into the Christian church. +Traditionally the nave has long benches for the congregation to sit on. These are called pews. Some churches may now have replaced their pews with chairs so that they can be moved about for different occasions. At the front of the nave is the pulpit where the priest preaches (these talks are called “sermons”). There is also a lectern (like a large music stand) from where the lessons (the Bible readings) are read. +If there are aisles along the side of the nave there will be pillars which hold up the roof. In large churches or cathedrals there may be a row of little arches along the top of these pillars. This is called the triforium. Over the triforium is the clerestory which is a row of windows high up in the church wall. +The chancel is the most holy part of the church, and this is why it is often separated from the nave by a screen which can be made of wood or stone, or occasionally iron. The congregation can see through the screen. On the top of the screen there may be a cross. This is called a rood (pronounce like “rude”) screen. Priests used to climb up a staircase to the top of the rood screen to read the epistle and the gospel. Sometimes people sang from there. +Inside the chancel are the benches where the choir sit. These are called choir stalls. They are on both sides. The two sides of the choir sit facing one another. The choir members who sit on the left (north side) are called “cantoris” (the side where the “cantor” sits) and those on the right (south side) are called “decani” (the side where the deacon sits). In some large churches or cathedrals the seats for the priests tip up. The top of these seats, when they are tipped up, are called misericords (from the Latin word for “mercy”). This is because the priests or monks were able to lean against them when they got tired if they had to stand up for a long time. +Sometimes there are holes in the walls of the screen so that the congregation can see through. These are called squints. If there is a recess in the wall it is called an aumbry. It is a cupboard for communion wine and bread that have been consecrated by a priest. +The altar may be right at the east end of the church, but in larger churches or cathedrals it is often much farther forward. In that case the very east end is called an apse. Sometimes it is a separate chapel called the “Lady Chapel”. +Churches through the ages. +The design of churches changed a lot during the course of history. Often churches were made bigger. When this happened there may be a mixture of architectural styles. These styles vary a lot in different countries. +English churches. +In English churches there were several different periods of architecture: +In the 1600s, churches were built in a variety of styles. Often they copied some of the older styles. After the Great Fire of London many new churches were built by the architect Sir Christopher Wren. They were built in the classical style. Churches continued to be built in later centuries like this, but also the Gothic style continued to be used. +Modern churches often do not have the traditional cross-shape. It is difficult for the congregation to see and hear what is happening in the chancel. Modern churches bring the congregation, choir and priests in closer touch. An example is the round design for the Church of Christ the Cornerstone in Milton Keynes. Modern churches are often simpler but with a warmer character than the Gothic churches. Many have beautiful mosaic glass windows. Coventry Cathedral is a famous example of a modern church building. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Circle.txt b/.github/workflows/data/simplewiki-500/Circle.txt new file mode 100644 index 000000000..466de8469 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Circle.txt @@ -0,0 +1,34 @@ +A circle is a round, two-dimensional shape. All points on the edge of the circle are at the same distance from the center. +The radius of a circle is a line from the center of the circle to a point on the side. Mathematicians use the letter formula_1 for the length of a circle's radius. The center of a circle is the point in the very middle. It is often written as formula_2. +The diameter (meaning "all the way across") of a circle is a straight line that goes from one side to the opposite and right through the center of the circle. Mathematicians use the letter formula_3 for the length of this line. The diameter of a circle is equal to twice its radius (formula_3 equals formula_5 times formula_1): +formula_7 +The circumference (meaning "all the way around") of a circle is the line that goes around the center of the circle. Mathematicians use the letter formula_8 for the length of this line. +The number formula_9 (written as the Greek letter "pi") is a very useful number. It is the length of the circumference divided by the length of the diameter (formula_9 equals formula_8 divided by formula_3). As a fraction the number formula_9 is equal to about formula_14 or formula_15 (which is closer) and as a number it is about formula_16. +The area, formula_17, inside a circle is equal to the radius multiplied by itself, then multiplied by formula_9 (formula_17 equals formula_9 times formula_1 times formula_1). +formula_23 +Calculating π. +formula_9 can be measured by drawing a circle, then measuring its diameter (formula_3) and circumference (formula_8). This is because the circumference of a circle is always equal to formula_9 times its diameter. +formula_28 +formula_9 can also be calculated by only using mathematical methods. Most methods used for calculating the value of formula_9 have desirable mathematical properties. However, they are hard to understand without knowing trigonometry and calculus. However, some methods are quite simple, such as this form of the Gregory-Leibniz series: +formula_31 +While that series is easy to write and calculate, it is not easy to see why it equals formula_9. A much easier way to approach is to draw an imaginary circle of radius formula_1 centered at the origin. Then any point formula_34 whose distance formula_3 from the origin is less than formula_1, calculated by the Pythagorean theorem, will be inside the circle: +formula_37 +Finding a set of points inside the circle allows the circle's area formula_17 to be estimated, for example, by using integer coordinates for a big formula_1. Since the area formula_17 of a circle is formula_9 times the radius squared, formula_9 can be approximated by using the following formula: +formula_43 +Calculating measures of a circle. +Area. +Using the radius: formula_44 +Using the diameter: formula_45 +Using the circumference: formula_46 +Circumference. +Using the radius: formula_47 +Using the diameter: formula_48 +Using the area: formula_49 +Diameter. +Using the radius: formula_7 +Using the circumference: formula_51 +Using the area: formula_52 +Radius. +Using the diameter: formula_53 +Using the circumference: formula_54 +Using the area: formula_55 \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Cities.txt b/.github/workflows/data/simplewiki-500/Cities.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/City.txt b/.github/workflows/data/simplewiki-500/City.txt new file mode 100644 index 000000000..254157c10 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/City.txt @@ -0,0 +1,34 @@ +A city is a place where many people live close together. +A city has many buildings and streets. It has houses, hotels, condominiums, and apartments for many people to live in, shops where they may buy things, places for people to work, and a government to run the city and keep law and order in the city. People live in cities because it is easy for them to find and do everything they want there. A city usually has a "city center" where government and business occur and suburbs where people live outside the center. +Definition. +No rule is used worldwide to decide why some places are called "city," and other places are called "town." +Some things that make a city are : +In American English, people often call all places where many people live cities. (See below: Size of cities ) +Size of cities. +The sizes of cities can be very different. This depends on the type of city. Cities built hundreds of years ago and which have not changed much are much smaller than modern cities. There are two main reasons. One reason is that old cities often have a city wall, and most of the city is inside it. Another important reason is that the streets in old cities are often narrow. If the city got too big, it was hard for a cart carrying food to get to the marketplace. People in cities need food, and the food always has to come from outside the city. +Cities that were on a river like London could grow much bigger than cities that were on a mountain like Siena in Italy, because the river made a transport route for carrying food and other goods, as well as for transporting people. London has been changing continually for hundreds of years, while Siena, a significant city in the 1300s, has changed very little in 700 years. +Modern cities with modern transport systems can grow very large, because the streets are wide enough for cars, buses, and trucks, and there are often railway lines. +U.S.A. usage. +In the US, the word "city" is often used for towns that are not very big. When the first European people went to America, they named "city" to new places. They hoped the places would be great cities in the future. For example, Salt Lake City was the name given to a village of 148 people. When they started building the town, they made street plans and called it Great Salt Lake City (for the nearby Great Salt Lake). Now, 150 years later, it really is a big city. +Los Angeles, which sounds like a single city, is really made of a number of cities which over the years have become amalgamated. It now covers a huge area which goes by the name of Los Angeles. The city is governed by a Common Council only since 1948. +Growth of cities. +In modern times many cities have grown bigger and bigger. The whole area is often called a "metropolis" and usually includes several ancient small towns and villages. The metropolis of London includes London, Westminster, and many old villages such as Notting Hill, Southwark, Richmond, Greenwich, etc. The part that is officially known as the "City of London" only takes up one square mile. The rest is known as "Greater London". Many other cities have grown in the same way. In general speech, it is all a city. But, confusingly, that includes the City of London. +Modern cities have many problems. Not everyone has jobs in the cities and they often get money by begging or by crime. Automobiles, factories, and waste create a lot of pollution that makes people sick. Roads are crowded and traffic is slow. The cause of all this is population growth. +Historically, a big problem with cities was the water supply, which periodically got contaminated. That was fixed by an extraordinary man, Joseph Bazalgette. He was the first man to solve this problem, which had plagued mankind since at least Roman times. There are parts of the world where his ideas are still not understood. +Urban history. +Urban history is history of civilization. The first cities were made in ancient times, as soon as people began to create civilizations. The oldest city on Earth is probably Catal Huyuk, which existed from 7500 to 6500BC. Famous ancient cities which fell to ruins included Babylon, Troy, Mycenae and Mohenjo-daro. +Benares in northern India is one among the ancient cities which has a history of more than 3000 years. Other cities that have existed since ancient times are Athens in Greece, Rome and Volterra in Italy, Alexandria in Egypt. +In Europe in the Middle Ages, being a city was a special privilege, granted by nobility. Cities that fall into this category, usually had (or still have) city walls. This shows that security was one pf the problems of a city. The people who lived in the city were privileged over those who did not. Medieval cities that still have walls include Carcassonne in France, Tehran in Iran, Toledo in Spain, and York and Canterbury in England. +Features. +Infrastructure. +People in a city live close together, so they cannot grow all their own food or gather their own water or energy. People also create waste and need a place to put it. Modern cities have infrastructure to solve these problems. Pipes carry running water, and power lines carry electricity. Sewers take away the dirty water and human waste (see Bazelguette). Most cities collect garbage to take it to a landfill, burn it, or recycle it. +Transport is any way of getting from one place to another. Cities have roads which are used by automobiles (including trucks), buses, motorcycles, bicycles, and pedestrians (people walking). Some cities have trains and larger cities have airports. Many people in cities travel to work each day, which is called commuting. +Buildings and design. +Houses and apartments are common places to live in cities. Great numbers of people in developing countries (and developed countries, in the past) live in slums. A slum is poorly built housing, without clean water, where people live very close together. Buildings are usually taller in the city center, and some cities have skyscrapers. +City streets can be shaped like a grid, or as a "wheel and spokes": a set of rings and lines coming out from the center. Streets in some older cities like London are arranged at random, without a pattern. The design of cities is a subject called urban planning. One area of the city might have only shops, and another area might have only factories. Cities have parks, and other public areas like city squares. +United States politics. +Cities in the US are usually very-left leaning. The best examples of these would be New York, New York, and Washington, D.C. For example, in Louisiana, the only Democratic delegate in US Congress who is a Democrat was elected from a district comprising in New Orleans. Below is a list of states and the major city/cities that provide much of the liberal support in them : +World's largest cities. +These cities have more than 10 million people and can be called megacities: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Civics.txt b/.github/workflows/data/simplewiki-500/Civics.txt new file mode 100644 index 000000000..78a7ece9a --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Civics.txt @@ -0,0 +1,4 @@ +Civics is the study of government. It most often refers to studying government in high school to prepare to be a good citizen. In college, civics is usually called political science. Since a city has the most unsimple government problems, the word for this study is like that for city. +Theories of civics can be grouped as: + "This about can be made longer. You can help Wikipedia by [ adding to it]". +It contains the rule and regulations of the citizen to make the country democratic \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Classic Mac OS.txt b/.github/workflows/data/simplewiki-500/Classic Mac OS.txt new file mode 100644 index 000000000..348791cc4 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Classic Mac OS.txt @@ -0,0 +1,4 @@ +Mac OS is an operating system for Macintosh computers. Mac OS was first made by Apple Inc. in 1984. In those days Mac OS was called Macintosh System Software – which was shortened to System or SSW (System Software). The term "Mac OS" first appeared in the splash screen for System 7.5.1, but was not adopted as the new name until the release of Mac OS 7.6. +References. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Classical Elements.txt b/.github/workflows/data/simplewiki-500/Classical Elements.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Classical element.txt b/.github/workflows/data/simplewiki-500/Classical element.txt new file mode 100644 index 000000000..27e526c48 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Classical element.txt @@ -0,0 +1,4 @@ +The Greek classical elements are fire, air, water, and earth. In Greek philosophy, science and medicine, these make up a whole. +The image below has two squares on top of each other. The corners of one are the classical elements. The corners of the other are the properties. +Galen said these elements were used by Hippocrates to describe the human body. The elements are linked to the four humours: phlegm (water), yellow bile (fire), black bile (earth), and blood (air). +In Chinese Taoism the elements are metal, wood, water, fire, earth (). \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Coin.txt b/.github/workflows/data/simplewiki-500/Coin.txt new file mode 100644 index 000000000..dbab99911 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Coin.txt @@ -0,0 +1,9 @@ +A coin is a piece of metal that is used as currency, or money. The earliest coins were in Lydia, in what is Turkey today, in 7th Century BC. They were made from electrum, an alloy found in riverbeds. +Most people use coins as currency. They usually have lower value than banknotes. Most are made in government mints. +Appearance. +Many coins have unique or complicated decorations; one side often has the picture of a king or ither important person's head on it. +The different decorations on each side of a coin might be used to decide things randomly. This is called "tossing a coin". A person can throw the coin into the air and catch it. You then look at which side is facing up. If the head is facing up it is called "heads", if the other side is facing up it is called "tails". Before tossing the coin someone has to decide what each side means. Tossing a coin can be a type of gambling, which is illegal (against the law) in some countries. +Collecting. +Because coins have been made for a very long time, some people collect old coins. They can be much cheaper than other old things, especially if they are made of cheap metals like copper. Older coins normally cost more than newer ones, but rarity matters more-some coins from the 1920s cost vast sums, while some Roman coins cost very little. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Colchester.txt b/.github/workflows/data/simplewiki-500/Colchester.txt new file mode 100644 index 000000000..da4b5064a --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Colchester.txt @@ -0,0 +1,11 @@ +Colchester is a city in the northern part of the English county of Essex. It has a population of 130,245 people. People believe that Colchester is the oldest Roman town in England. +History. +Before Roman times, Colchester was "Camulodunon". This is a Celtic name that came from Camulos. Camulos was the Celtic god of war. The Romans called Colchester "Camulodunum" (written "CAMVLODVNVM") and made it the capital of Roman Britain. Colchester was attacked and burnt by Boudicca in 61 AD. The Romans moved their capital of Britannia to Londinium (now London), but Camulodunum remained an important city until the fifth century, when the Saxons conquered the region. +The Roman town of "Camulodunum", officially known as "Colonia Victricensis", reached its peak in the Second and Third centuries AD. It may have reached a population of 30,000 in those centuries, but when the Romans withdrew from Britannia in 410 AD it probably had fewer than 5,000 inhabitants. +The church at the Benedictine abbey of Saint John the Baptist was destroyed in 1539. This action was part of the dissolution of the monasteries by King Henry VIII. Only a gate remains, that people still go to visit. +King Cunobelinus (or "Cunobelin") was from Colchester. +Until 2022, Colchester was officially a town, not a city. On 5 September, Queen Elizabeth II signed letters patent to grant it city status. This was planned as part of her Platinum Jubilee celebrations. However, she died three days later. On 29 September, these letters were publicly released. +Twin cities. +Colchester is twinned with the following cities: +Bibliography. + "This about the  can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Comedy.txt b/.github/workflows/data/simplewiki-500/Comedy.txt new file mode 100644 index 000000000..fb5dda4fe --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Comedy.txt @@ -0,0 +1,30 @@ +Comedy (from ), in modern times, is an entertainment with generally funny content. It is able to make people laugh. This definition was used for theatre plays, and was first used in Ancient Greece. Aristotle defined this as “Comedy is, as we have said, an imitation of characters of a lower type- not, however, in the full sense of the word bad, the ludicrous being merely a subdivision of the ugly. It consists in some defect or ugliness which is not painful or destructive. To take an obvious example, the comic mask is ugly and distorted, but does not imply pain.” To him, the lampooners became writers of Comedy and the truly artistic ones became writers of Tragedy. +Comedy is also a media genre that is for television shows or movies that are either funny or silly. People who are known for acting in comedies are termed as comedians or comedic actors. +History. +Satire. +The ancient Greeks had comedies, which were presented in competitions at the festival of Dionysia. +One of the best-known comedy authors of the time was Aristophanes (about 446–386 BC). One of his works, "The Clouds" was performed 425 BC. The work did not survive completely, but a later version did survive. It is a satire against Socrates, and pictures the great philosopher as a swaggering con artist. Some of the accusations were re-used at Socrates' trial, twenty years later. +Typical for satire are that the author criticizes society, and living people. +Satyr plays. +Another type of Ancient Greek theatre was the satyr play. This was mock drunkenness, brazen sexuality (including phallic props), pranks, sight gags, and general merriment. The modern equivalent would be knock-about comedy. +Humour. +Humour, or 'New Comedy' is not about criticizing people or ideas, but rather about showing characters in funny situations. The most important Greek playwright of this type was probably Menander. The best known Roman comedy writer was Plautus. He often used Greek comedies for his plays. +Many comedy plays were written in the 1500s by the British writer William Shakespeare. +Shakespeare's comedy plays include:" All’s Well That Ends Well, The Comedy of Errors, A Midsummer Nights Dream", and "Twelfth Night". In Shakespeare's day a comedy did not mean a play that would make people laugh or that had a lot of jokes. Instead it was a play in which all the problems work out all right in the end. This was unlike a tragedy, where the problems do not work out, usually resulting in someone's death. +The two masks, one was smiling, the other crying, often associated with theatre represent comedy and tragedy. +Types. +Slapstick. +There are different types of comedy. One type of comedy is called "slap stick comedy." In "slap stick comedy," people do silly things such as tripping, falling over or embarrassing themselves just to make people laugh. Slap stick comedy can be used in comedy movies or comedy television shows. +Slap stick comedy was used a lot in silent (no sound) movies from the 1920s. A comedian who acted in the silent movies who used a lot of slapstick comedy was Charlie Chaplin. In the 1950s and 1960s, comedian Jerry Lewis also used silly slap stick comedy in his comedy movies. +Comedy movies. +A comedy is a very popular type of movie. Some comedy movies have "slapstick comedy," in which people just do silly things such as tripping, falling over or embarrassing themselves just to make people laugh. Other comedy movies show funny stories or situations in which people are behaving in a silly manner. Some comedies make the audience laugh by showing strange or unusual images or situations that do not make sense. +Offensive Comedy. +a genre of comedy that existed before the rise of "political correctness" generally racist and discriminatory against minorities but can be used as a way to offend those who offend others this is known as "Reverse Racism". an example of this is calling a white person a "honky" or "white trash" these terms are offensive to white people which is racist but if used against a person who calls someone another terminology, as a way of keeping ones honour. +Parody/Spoof. +A parody or spoof movie imitates or exaggerates another person or movie to make them seem silly, dumb, or just plain out of it. +Different types of comedy movies. +Some types of comedy movies mix comedy with other types of movies. +Comedy television shows. +Comedy shows are very popular on television. Comedy shows on television are often called "sitcoms." The word "sitcom" is a shortened way of saying "situational comedy." Television situational comedies usually show characters who do silly or funny things which make the audience laugh. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Comet.txt b/.github/workflows/data/simplewiki-500/Comet.txt new file mode 100644 index 000000000..b79834a40 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Comet.txt @@ -0,0 +1,12 @@ +A comet is a ball of mostly ice that moves around in outer space. Comets are often described as "dirty snowballs". They are very different from asteroids. The orbital inclinations of comets are usually high and not near the ecliptic where most solar system objects are found. Most of them are long-period comets and come from the Kuiper belt. That is very far away from the Sun, but some of them also come near enough to Earth for us to see at night. +They have long "tails", because the Sun melts the ice. A comet's tail does not trail behind it, but points directly away from the Sun, because it is blown by the solar wind. +The hard centre of the comet is the "nucleus". It is one of the blackest things (lowest albedo) in the solar system. When light shone on the nucleus of Halley's Comet, the comet reflected only 4% of the light back to us. +"Periodic" comets visit again and again. "Non-periodic" or "single-apparition" comets visit only once. +Comets sometimes break up, as Comet Biela did in the 19th century. Comet Shoemaker-Levy 9 broke up, and the pieces hit Jupiter in 1994. Some comets orbit (go around) together in groups. Astronomers think these comets are broken pieces that used to be one object. +History of comets. +For thousands of years, people feared comets. They did not know what they were, or where they came from. Some thought that they were fireballs sent from demons or gods to destroy the earth. They said that each time a comet appeared, it would bring bad luck with it. Whenever a comet appeared, a king would die. For example, the Bayeux Tapestry shows the return of Halley's Comet and the death of a king. Comets were also known to end wars and thought to bring famine. During the Renaissance, astronomers started to look at comets with less superstition and to base their science on observations. Tycho Brahe reasoned that comets did not come from the earth, and his measurements and calculations showed that comets must be six times farther than the earth is from the moon. +Edmond Halley reasoned that some comets are periodic, that is, they appear again after a certain number of years, and again and again. This led to the first prediction of a comet's return, Halley's Comet, named after him. +Isaac Newton also studied comets. He realised that comets make U-turns around the sun. He asked his friend Edmond Halley to publish this in his book "Philosophiae Naturalis Principia Mathematica". Before Newton said this, people believed that comets go in to the sun, then another comes out from behind the sun. +In later years, some astronomers thought comets were spit out by planets, especially Jupiter. +All this new information and research gave people confidence, but some still thought that comets were messengers from the gods. One 18th century vision said that comets were the places that hell was, where souls would ride, being burned up by the heat of the sun and frozen by the cold of space. +In modern times, space probes have visited comets to learn more about them. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Compound.txt b/.github/workflows/data/simplewiki-500/Compound.txt new file mode 100644 index 000000000..8ed5970df --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Compound.txt @@ -0,0 +1 @@ +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Computer science.txt b/.github/workflows/data/simplewiki-500/Computer science.txt new file mode 100644 index 000000000..0aa310312 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Computer science.txt @@ -0,0 +1,16 @@ + Computer science deals with the theoretical foundations of computation and practical techniques for their application. +Computer science is the science of information. Computer scientists study different ways of reading, using, and encoding information. +There are many different areas within computer science. In some areas, scientists only work with ideas "on paper". In other areas they use those ideas to make things like computers and computer programs. +A person who works in computer science will often need to understand logic and mathematics. +Common tasks for a computer scientist. +Asking questions. +This is so people can find new and easier ways to do things, and the way to approach problems with this information. +While computers can do some things easily (like simple math, or sorting out a list of names from A-to-Z), computers cannot answer questions when there is not enough information, or when there is no real answer. Also, computers may take too much time to finish long tasks. For example, it may take too long to find the shortest way through all of the towns in the USA - so instead a computer will try to make a close guess. A computer will answer these simpler questions much faster. +Answering the question. +Algorithms are a specific set of instructions or steps on how to complete a task. For example, a computer scientist wants to sort playing cards. There are many ways to sort them - by suits (diamonds, clubs, hearts, and spades) or by numbers (2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King, and Ace). By deciding on a set of steps to sort the cards, the scientist has created an algorithm. The scientist then needs to test whether this algorithm works. This shows how well and how fast the algorithm sorts cards. +A simple but slow algorithm is: pick up two cards and check whether they are sorted correctly. If they are not, reverse them. Then do it again with another two, and repeat them all until they are all sorted. This is called a bubble sort. This method will work, but it will take a very long time. +A better algorithm is: find the first card with the smallest suit and smallest number (2 of diamonds), and place it at the start. After this, look for the second card, and so on. This algorithm is much faster, and does not need much space. This algorithm is called a "selection sort". +Ada Lovelace wrote the first computer algorithm in 1843, for a computer that was never finished. Computers began during World War II. Computer science separated from the other sciences during the 1960s and 1970s. Now, computer science has its own methods, and has its own technical terms. It is related to electrical engineering, mathematics, and language science. +Computer science looks at the theoretical parts of computers. Computer engineering looks at the physical parts of computers (hardware). Software engineering looks at the use of computer programs and how to make them. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Computer.txt b/.github/workflows/data/simplewiki-500/Computer.txt new file mode 100644 index 000000000..1bdb838eb --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Computer.txt @@ -0,0 +1,54 @@ +A computer is a machine that uses electronics to input, process, store, and output data. Data is information such as numbers, words, and lists. Input of data means to read information from a keyboard, a storage device like a hard drive, or a sensor. The computer processes or changes the data by following the instructions in software programs. A computer program is a list of instructions the computer has to perform. Programs usually perform mathematical calculations, modify data, or move it around. The data is then saved on a storage device, shown on a display, or sent to another computer. Computers can be connected together to form a network such as the internet, allowing the computers to communicate with each other. +The processor of a computer is made from integrated circuits (chips) that contains many transistors. Most computers are digital, which means that they represent information using binary digits, or bits. Computers come in different shapes and sizes, depending on the brand, model, and purpose. They range from small computers, such as smartphones and laptops, to large computers, such as supercomputers. +Characteristics. +The two things that define a computer are that it responds to a specific instruction set in a well-defined manner, and that it can execute a stored list of instructions called a program. There are four main actions in a computer: inputting, storing, outputting and processing. +Modern computers can do billions of calculations in a second. Being able to calculate many times per second allows modern computers to multi-task, which means they can do many different tasks at the same time. Computers do many different jobs where automation is useful. Some examples are controlling traffic lights, vehicles, security systems, washing machines and digital televisions. +Computers can be designed to do almost anything with information. Computers are used to control large and small machines that, in the past, were controlled by humans. Most people have a personal computer at home or at work. They are used for things such as calculation, listening to music, reading, writing, or playing games. +Hardware. +Modern computers are electronic computer hardware. They do mathematical arithmetic very quickly, but computers do not really "think." They only follow the instructions in their software programs. The software uses the hardware when the user gives it instructions and produces useful outputs. +Controls. +Computers are controlled with user interfaces. Input devices which include keyboards, computer mice, buttons, and touch screens, etc.computer are electronic computer hardware +Programs. +Computer programs are designed or written by computer programmers. A few programmers write programs in the computer's own language, called machine code. Most programs are written using a programming language like C, C++, JavaScript. These programming languages are more like the language with which one talks and writes every day. The compiler converts the user's instructions into binary code (machine code) that the computer will understand and do what is needed. +History of computers. +First computer. +In 1837, Charles Babbage proposed the first general mechanical computer, the Analytical Engine. The Analytical Engine contained an Arithmetic Logic Unit, basic flow control, punched cards, and integrated memory. It is the first general-purpose computer concept that could be used for many things and not only one particular program. However, this computer was never built while Charles Babbage was alive, because he didn't have enough money. In 1910, Henry Babbage, Charles Babbage's youngest son, was able to finish a part of this machine and do basic calculations. +Before the computer era there were machines that could do the same thing over and over again, like a music box. But some people wanted to be able to tell their machine to do different things. For example, they wanted to tell the music box to play different music every time. This part of computer history is called the "history of programmable machines", which in simple words means "the history of machines that I can order to do different things if I know how to speak their language." +One of the first examples of programmable machines was built by Hero of Alexandria (c. 10–70 AD). He built a mechanical theater which performed a play lasting 10 minutes and was operated by a complex system of ropes and drums. These ropes and drums were the language of the machine- they told what the machine did and when. Some people argue that this is the first programmable machine. +Some people disagree on which early computer is programmable. Many say the "castle clock", an astronomical clock invented by Al-Jazari in 1206, is the first known programmable analog computer. The length of day and night could be adjusted every day in order to account for the changing lengths of day and night throughout the year. Some count this daily adjustment as computer programming. +Others say the first computer was made by Charles Babbage. Ada Lovelace is considered to be the first programmer. +The computing era. +At the end of the Middle Ages, people started thinking math and engineering were more important. In 1623, Wilhelm Schickard made a mechanical calculator. Other Europeans made more calculators after him. They were not modern computers because they could only add, subtract, and multiply- you could not change what they did to make them do something like play Tetris. Because of this, we say they were not programmable. Now engineers use computers to design and plan. +In 1801, Joseph Marie Jacquard used punched paper cards to tell his textile loom what kind of pattern to weave. He could use punch cards to tell the loom what to do, and he could change the punch cards, which means he could program the loom to weave the pattern he wanted. This means the loom was programmable. At the end of the 1800s Herman Hollerith invented the recording of data on a medium that could then be read by a machine, developing punched card data processing technology for the 1890 U.S. census. His tabulating machines read and summarized data stored on punched cards and they began use for government and commercial data processing. +Charles Babbage wanted to make a similar machine that could calculate. He called it "The Analytical Engine". Because Babbage did not have enough money and always changed his design when he had a better idea, he never built his Analytical Engine. +As time went on, computers were used more. People get bored easily doing the same thing over and over. Imagine spending your life writing things down on index cards, storing them, and then having to go find them again. The U.S. Census Bureau in 1890 had hundreds of people doing just that. It was expensive, and reports took a long time. Then an engineer worked out how to make machines do a lot of the work. Herman Hollerith invented a tabulating machine that would automatically add up information that the Census bureau collected. The Computing Tabulating Recording Corporation (which later became IBM) made his machines. They leased the machines instead of selling them. Makers of machines had long helped their users understand and repair them, and CTR's tech support was especially good. +Because of machines like this, new ways of talking to these machines were invented, and new types of machines were invented, and eventually the computer as we know it was born. +Analog and digital computers. +In the first half of the 20th century, scientists started using computers, mostly because scientists had a lot of math to figure out and wanted to spend more of their time thinking about science questions instead of spending hours adding numbers together. For example, if they had to launch a rocket ship, they needed to do a lot of math to make sure the rocket worked right. So they put together computers. These analog computers used analog circuits, which made them very hard to program. In the 1930s, they invented digital computers, and soon made them easier to program. However this is not the case as many consecutive attempts have been made to bring arithmetic logic to l3.Analog computers are mechanical or electronic devices which solve problems.Some are used to control machines as well. +High-scale computers. +Scientists figured out how to make and use digital computers in the 1930s to 1940s. Scientists made a lot of digital computers, and as they did, they figured out how to ask them the right sorts of questions to get the most out of them. Here are a few of the computers they built: +Several developers of ENIAC saw its problems. They invented a way to for a computer to remember what they had told it, and a way to change what it remembered. This is known as "stored program architecture" or von Neumann architecture. John von Neumann talked about this design in the paper "First Draft of a Report on the EDVAC", distributed in 1945. A number of projects to develop computers based on the stored-program architecture started around this time. The first of these was completed in Great Britain. The first to be demonstrated working was the Manchester Small-Scale Experimental Machine (SSEM or "Baby"), while the EDSAC, completed a year after SSEM, was the first really useful computer that used the stored program design. Shortly afterwards, the machine originally described by von Neumann's paper—EDVAC—was completed but was not ready for two years. +Nearly all modern computers use the stored-program architecture. It has become the main concept which defines a modern computer. The technologies used to build computers have changed since the 1940s, but many current computers still use the von-Neumann architecture. +In the 1950s computers were built out of mostly vacuum tubes. Transistors replaced vacuum tubes in the 1960s because they were smaller and cheaper. They also need less power and do not break down as much as vacuum tubes. In the 1970s, technologies were based on integrated circuits. Microprocessors, such as the Intel 4004 made computers smaller, cheaper, faster and more reliable. By the 1980s, microcontrollers became small and cheap enough to replace mechanical controls in things like washing machines. The 1980s also saw home computers and personal computers. With the evolution of the Internet, personal computers are becoming as common as the television and the telephone in the household. +In 2005 Nokia started to call some of its mobile phones (the N-series) "multimedia computers" and after the launch of the Apple iPhone in 2007, many are now starting to add the smartphone category among "real" computers. In 2008, if smartphones are included in the numbers of computers in the world, the biggest computer maker by units sold, was no longer Hewlett-Packard, but rather Nokia. +Kinds of computers. +There are many types of computers. Some include: +<templatestyles src="Div col/styles.css"/> +A "desktop computer" is a small machine that has a screen (which is not part of the computer). Most people keep them on top of a desk, which is why they are called "desktop computers." "Laptop computers" are computers small enough to fit on your lap. This makes them easy to carry around. Both laptops and desktops are called personal computers, because one person at a time uses them for things like playing music, surfing the web, or playing video games. +There are larger computers that can be used by multiple people at the same time. These are called "mainframes," and these computers do all the things that make things like the internet work. You can think of a personal computer like this: the personal computer is like your skin: you can see it, other people can see it, and through your skin you feel wind, water, air, and the rest of the world. A mainframe is more like your internal organs: you never see them, and you barely even think about them, but if they suddenly went missing, you would have some very big problems. +An embedded computer, also called an embedded system is a computer that does one thing and one thing only, and usually does it very well. For example, an alarm clock is an embedded computer. It tells the time. Unlike your personal computer, you cannot use your clock to play Tetris. Because of this, we say that embedded computers cannot be programmed because you cannot install more programs on your clock. Some mobile phones, automatic teller machines, microwave ovens, CD players and cars are operated by embedded computers. +All-in-one PC. +All-in-one computers are desktop computers that have all of the computer's inner mechanisms in the same case as the monitor. Apple has made several popular examples of all-in-one computers, such as the original Macintosh of the mid-1980s and the iMac of the late 1990s and 2000s. +Working methods. +Computers store data and the instructions as numbers, because computers can do things with numbers very quickly. These data are stored as binary symbols (1s and 0s). A 1 or a 0 symbol stored by a computer is called a bit, which comes from the words binary digit. Computers can use many bits together to represent instructions and the data that these instructions use. A list of instructions is called a program and is stored on the computer's hard disk. Computers work through the program by using a central processing unit, and they use fast memory called RAM (also known as Random Access Memory) as a space to store the instructions and data while they are doing this. When the computer wants to store the results of the program for later, it uses the hard disk because things stored on a hard disk can still be remembered after the computer is turned off. +An operating system tells the computer how to understand what jobs it has to do, how to do these jobs, and how to tell people the results. Millions of computers may be using the same operating system, while each computer can have its own application programs to do what its user needs. Using the same operating systems makes it easy to learn how to use computers for new things. A user who needs to use a computer for something different, can learn how to use a new application program. Some operating systems can have simple command lines or a fully user-friendly GUI. +The Internet. +One of the most important jobs that computers do for people is helping with communication. Communication is how people share information. Computers have helped people move forward in science, medicine, business, and learning, because they let experts from anywhere in the world work with each other and share information. They also let other people communicate with each other, do their jobs almost anywhere, learn about almost anything, or share their opinions with each other. The Internet is the thing that lets people communicate between their computers. The Internet also allows the computer user to play an Online game. +Computers and waste. +A computer is now almost always an electronic device. It usually contains materials that will become electronic waste when discarded. When a new computer is bought in some places, laws require that the cost of its waste management must also be paid for. This is called product stewardship. +Computers can become obsolete quickly, depending on what programs the user runs. Very often, they are thrown away within two or three years, because some newer programs require a more powerful computer. This makes the problem worse, so computer recycling happens a lot. Many projects try to send working computers to developing nations so they can be re-used and will not become waste as quickly, as most people do not need to run new programs. Some computer parts, such as hard drives, can break easily. When these parts end up in the landfill, they can put poisonous chemicals like lead into the ground-water. Hard drives can also contain secret information like credit card numbers. If the hard drive is not erased before being thrown away, an identity thief can get the information from the hard drive, even if the drive doesn't work, and use it, for example, to steal money from the previous owner's bank account. +Main hardware. +Computers come in different forms, but most of them have a common design. +A computer has several main parts. When comparing a computer to a human body, the CPU is like a brain. It does most of the thinking and tells the rest of the computer how to work. The CPU is on the Motherboard, which is like the skeleton. It provides the basis for where the other parts go, and carries the nerves that connect them to each other and the CPU. The motherboard is connected to a power supply, which provides electricity to the entire computer. The various drives (CD drive, floppy drive, and on many newer computers, USB flash drive) act like eyes, ears, and fingers, and allow the computer to read different types of storage, in the same way that a human can read different types of books. The hard drive is like a human's memory, and keeps track of all the data stored on the computer. Most computers have a sound card or another method of making sound, which is like vocal cords, or a voice box. Connected to the sound card are speakers, which are like a mouth, and are where the sound comes out. Computers might also have a graphics card, which helps the computer to create visual effects, such as 3D environments, or more realistic colors, and more powerful graphics cards can make more realistic or more advanced images, in the same way a well trained artist can. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Conceptual metaphor.txt b/.github/workflows/data/simplewiki-500/Conceptual metaphor.txt new file mode 100644 index 000000000..588ed10e1 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Conceptual metaphor.txt @@ -0,0 +1,8 @@ +A conceptual metaphor or cognitive metaphor is a metaphor which refers to one domain (group of ideas) in terms of another. For example, treating quantity in terms of direction: +The idea of a conceptual metaphor came from a book by George Lakoff and Mark Johnson in 1980: "Metaphors we live by". +"The most recent linguistic approach to literature is that of cognitive metaphor, which claims that metaphor is not a mode of language, but a mode of thought". Donald Freeman. +A convention is to write conceptual metaphors in small capital letters, e.g. time is money, with the target domain (idea being referred to) first, here "money," and the source domain (terms used to refer to it) second. +Political metaphors. +There are many more, enough to prove the importance of the metaphor in our lives. +Notes. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Constitution.txt b/.github/workflows/data/simplewiki-500/Constitution.txt new file mode 100644 index 000000000..d6bcf7279 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Constitution.txt @@ -0,0 +1,7 @@ +The constitution of a country (or a state) is a special type of law document that tells how its government is supposed to work. It tells how the country's leaders are to be chosen and how long they get to stay in office, how new laws are made and old laws are to be changed or removed based on law, what kind of people are allowed to vote and what other rights they are guaranteed, and how the constitution can be changed. +Limits are put on the Government in how much power they have within the Constitution "(see Rule of Law )". On the other hand, countries with repressive or corrupt governments frequently do not stick to their constitutions, or have bad constitutions without giving freedom to citizens and others. This can be known as dictatorship or simply "bending the rules". A Constitution is often a way of uniting within a Federation. +The UK's constitution is not written in one single document like many other countries' are. In fact, the UK's constitution is not completely written down at all. Some of it can be found in writing, starting with Magna Carta of 1215 and the Bill of Rights Act 1689 and including more modern Acts of Parliament. Other parts of it are considered common law and are made up of the decisions of judges over many hundreds of years in a system called legal or judicial precedence. Because of this, some people say that the United Kingdom has a "de facto" or "unwritten" constitution. +The United States in 1787 began a trend in the writing of constitutions. The United States Constitution is also the shortest that people are still using, and it has been changed (amended) many times over the years. It was made after the colonists won their independence from Britain. At first they had the Articles of Confederation but the Articles were replaced with today's Constitution. +The Indian constitution of 1950 is the longest ever written constitution in the world. It originally consisted of 395 Articles arranged under 22 Parts and 8 Schedules. As of 2021, it has 470 Articles, 12 schedules, and 25 Parts with 5 appendices and 98 amendments. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Contact network.txt b/.github/workflows/data/simplewiki-500/Contact network.txt new file mode 100644 index 000000000..0ec01f485 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Contact network.txt @@ -0,0 +1,2 @@ +Contact network may mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Continent.txt b/.github/workflows/data/simplewiki-500/Continent.txt new file mode 100644 index 000000000..16c846dac --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Continent.txt @@ -0,0 +1,24 @@ +A continent is a large area of the land on Earth that is joined. There are no strict rules for what land is considered a continent, but in general the Earth is known to have seven continents; these being, Africa, Antarctica, Asia, Europe, North America, South America and Oceania (or Australia). +Statistics. +<templatestyles src="Reflist/styles.css" /> +The most populous continent by population is Asia, followed by Africa. The third most populous continent is Europe. The fourth most populous is North America, and then South America. In sub-Saharan Africa, the largest age group are denarians (in their teens). In north Africa, the largest age group are vicenarian (in their twenties). In Europe, most people are tricenarian (in their thirties) or quadragenarian (in their forties). +Continents. +Geologists use the term "continent" to mean continental crust, a platform of metamorphic and igneous rock, largely of granitic composition. Continental crust is less dense and much thicker than oceanic crust, which is why it "floats" higher than oceanic crust on the underlying mantle. This explains why the continents form high platforms surrounded by deep ocean basins. +Australia. +Some sources say that Australia is one of the seven continents. Others say that Australia is part of a larger continent, such as Australasia, or Oceania. Oceania is a region which includes Australia, New Zealand and the Pacific Islands. Australasia includes at least all countries on the Australian continental plate. This includes the islands of New Guinea, Tasmania, New Zealand and a number of smaller islands. It is on the south-eastern side of the Wallace Line, with distinct differences in its biology from the Asian side of the line. +"It includes all the islands of the Malay Archipelago... as well as the various groups of islands in the Pacific. The term has been used in very different senses". +Zealandia. +Zealandia is an almost entirely submerged land mass, and 93% of it still remains under water. Zealandia may have broken off the Australian plate between 85 and 130 million years ago. +North and South America. +North America and South America together are often described as one continent, "the Americas", or simply "America". This has the advantage of including Central America and the Caribbean islands. Otherwise, Central America is counted as part of North America. +Eurasia. +Eurasia is not really an alternative, rather it is a recognition that the landmasses of Europe and Asia are continuous, and some of its largest countries are in both regions. Russia extends from eastern Europe to the far east of Asia without a break. The Ural Mountains, which run roughly north–south, are the traditional dividing-line between Europe and Asia. For many purposes it is convenient to consider the great landmass as a single continent, Eurasia. +When British people talk about "the Continent" (or "Continental" things) they mean the European mainland. This meaning is not used as much as it used to be, but is still seen in phrases like "Continental breakfast" (rolls with cheese, jam etc. as distinct from an "English breakfast" which is a cooked breakfast). +Continents not only move but also sometimes move against each other. The Indian subcontinent has been colliding with the Eurasian continent for a while now. As these continents push against each other, they buckle and bend. Because of this, the Himalaya Mountains, with Mount Everest, are still being built up today. +Antarctica. +Antarctica is Earth's fifth largest continent. Antarctica, the coldest place on Earth, covers Earth's South Pole. It has a surface area of ~13.6 –14 million km2: this is about 1.4 times the size of Europe, The continent only has two seasons, a brief summer and a long winter. Antarctica is a cold desert. It does not rain or snow much there. Ever since its discovery in 1812, Antarctica was a great challenge for explorers. Despite being nearly completely covered by a thick layer of ice, Antarctica has a range of aquatic and terrestrial environments. +Origin of continents. +A craton is an old and stable part of the continental lithosphere. It is the Earth's two topmost layers, the crust and the uppermost mantle. +There are various hypotheses of how cratons have been formed.. Continents may have been formed by giant meteorite impacts in the first billion years of Earth's existence. The question is not yet settled. What is clear is that the cratons are very old, and are the basis for the continents we see today. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Cooking.txt b/.github/workflows/data/simplewiki-500/Cooking.txt new file mode 100644 index 000000000..73247a957 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Cooking.txt @@ -0,0 +1,9 @@ +Cooking is a process to make food ready to eat by heating it. +Methods. +Cooking is often done in a kitchen using a stove or an oven. It can also be done over a fire (for example, over a campfire or on a barbecue). +The heat for cooking can be made in different ways. It can be from an open fire that burns wood or charcoal. It can be on a stove or in an oven that uses propane, natural gas, or electricity. +There are several different ways to cook food. Boiling cooks food in hot water. Frying (deep or shallow) cooks food in hot butter, fat or oil. Baking and roasting cook food by surrounding it with hot air. Grilling means cooking food on a metal grill that has heat under it. +People often cook meat by boiling, roasting, frying, or grilling it. Some foods such as bread or pastries are usually baked. +Usually food is cooked in some kind of pot or pan. Sometimes people cook food by putting it directly into the fire, or by wrapping the food in leaves before they put it into the fire. +Cooks. +A person whose job it is to cook food may be called a "cook" or a "chef". The word "cooker" means a machine or tool that a cook might use to cook food. Rice cookers and pressure cookers are examples. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Cosmology.txt b/.github/workflows/data/simplewiki-500/Cosmology.txt new file mode 100644 index 000000000..b682ee64c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Cosmology.txt @@ -0,0 +1,12 @@ +Cosmology is the branch of astronomy that deals with the universe. +NASA defines cosmology as "The study of the structure and changes in the present universe". Another definition of cosmology is "the study of the universe, and humanity's place in it". +Modern cosmology is dominated by the Big Bang theory, which brings together observational astronomy and particle physics. +Though the word "cosmology" is recent (first used in 1730 in Christian Wolff's "Cosmologia Generalis"), the study of the universe has a long history. +History. +Until the Renaissance people thought the universe was only the planets up to Saturn, and stars. With the invention of the telescope, we could see more of the universe. Early in the 20th century, astronomers thought the Milky Way was the entire universe. Later, with astrophotography and spectroscopy, astronomers (for example Edwin Hubble) showed that the Milky Way was only one of many galaxies. +Modern cosmology is considered to have started in 1917 with the final paper of Albert Einstein's theory of general relativity. This made physicists realize that the universe changed. When a scientific discipline begins to change an idea that is believed by many people, it is known as a paradigm shift. Many scientists debated if there were other galaxies. The debate ended when Edwin Hubble found Cepheid Variables in the Andromeda Galaxy in 1926. +The Big Bang model was then proposed by Belgian priest, Georges Lemaître in 1927. This was supported by Edwin Hubble's discovery of the redshift in 1929. Later the discovery of cosmic microwave background radiation was made. This was found by Arno Penzias and Robert Woodrow Wilson in 1964. +All of these discoveries have been supported in the 21st century. Some more observations of the cosmic microwave background radiation were found by the COBE, WMAP, and Planck satellites. Some more observations of the redshift were found by the 2dfGRS and SDSS. An astronomical survey looks at a place in space. A redshift survey is a survey that looks for redshifts. +On 1 December 2014, at the "Planck 2014" meeting in Ferrara, Italy, astronomers reported that the universe is 13.8 billion years old and is composed of 4.9% regular matter, 26.6% dark matter and 68.5% dark energy. +According to Dr Robert Massey, deputy director of the Royal Astronomical Society, the evidence for a rethink of what has been a central plank of astronomy is growing. +"This is the seventh large structure discovered in the universe that contradicts the idea that the cosmos is smooth on the largest scales. If these structures are real, then it's definitely food for thought for cosmologists and the accepted thinking on how the universe has evolved over time," he said. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Cost of living.txt b/.github/workflows/data/simplewiki-500/Cost of living.txt new file mode 100644 index 000000000..ae4ec2248 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Cost of living.txt @@ -0,0 +1,3 @@ +Cost of living is the amount of money it costs just to live in a certain place. It is measured using a list of things people need, like food and housing. Governments measure cost of living to give welfare (money or benefits for poor people) and to set minimum wage. +When the cost of living is higher than people can pay, a cost of living crisis happens. Causes for a cost of living crisis can be poverty, people making less money due to inflation, increased cost of needed items, and problems with the economy. This crisis can cause health effects right away and in the future. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Countries.txt b/.github/workflows/data/simplewiki-500/Countries.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Country.txt b/.github/workflows/data/simplewiki-500/Country.txt new file mode 100644 index 000000000..69d65f9f2 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Country.txt @@ -0,0 +1,19 @@ +A country is a distinct territory with defined borders, boundaries, people and government. Most countries are sovereign states while others make up one part of a larger state. The people that live in a country are referred to as a nation. The government that runs the country is called the state. Australia, New Zealand, United Kingdom, United States, Canada and other countries. +Number of countries. +There is no universally accepted answer as to how many countries in the world there actually are, however the minimum answer is 195, though there are 193 United Nations members. +This can be developed on even further by adding the constituent countries of the United Kingdom, The Kingdom of the Netherlands and the Kingdom of Denmark which could add anywhere from three to eleven more countries. +There are multiple organisations that have their own lists of countries, one example being the Travellers Century Club which recognises 330 countries as of January 2022. +Disputed countries. +Palestine is classified as a country. However, there is an ongoing dispute over Palestine’s independence with Israel. +There are a number of disputed areas that have declared independence from their parent state and receive limited recognition. For example,  Kosovo,  Transnistria,  Abkhazia,  South Ossetia,  Northern Cyprus,  Chechnya,  Tibet and  Somaliland. These are just some of the many examples of territories with limited to no recognition that are sometimes classed as countries. +There is a lot of controversy surrounding the above examples and quite often any of these territories may be counted as countries purely based on opinion. If all of the above were added the list of U.N members there could be anything up to 211 countries. +There are, however, many more territories with unique political circumstances that could also be counted. +Depending on how loosely the dictionary definition for the word country is used there could be many more than 193 countries in the world. The matter is purely subjective depending on varying opinions. +Constituent country. +Constituent country is a term sometimes used, usually by official institutions, in contexts in which a number of countries are part of a sovereign state. The Organisation for Economic Co-operation and Development (OECD) has used the term referring to the former Yugoslavia, and the European institutions like the Council of Europe often use it in reference to the European Union. +Territorial dispute. +A disputed territory is that territory whose sovereignty is jealously desired by two or more countries. Usually the administration of the territory is carried out by one of the countries that claims sovereignty, while the other country does not recognize the sovereignty over the territory of the other country. This does not usually happen in land or sea areas on which none possesses effective control, such as Antarctica, or only partially +Nation-state. +A nation-state is a sovereign country in which the majority of citizens are somewhat homogeneous in terms of culture,religion,language, ethnicity, etc. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Creativity.txt b/.github/workflows/data/simplewiki-500/Creativity.txt new file mode 100644 index 000000000..2c9e7f5f7 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Creativity.txt @@ -0,0 +1,5 @@ +Creativity is the ability of a person or group to make something new and useful or valuable, or the process of making something new and useful or valuable. It happens in all areas of life - science, art, literature and music. +As a personal ability it is difficult to measure. The reason is that we don't understand the mental processes that help some people be more creative than others. Judging who and what is creative is also controversial. Some people say only things that are historically new are creative, while other people say that if it is new for the creator and the people around them, then it is also creativity. +Some think that creativity is an important thing that makes humans different from apes. Others recognize that even apes, other primates, other mammals, and some birds adapt to survive by being creative (for example - primates using tools). Liane Gabora believes that all culture comes from creativity, not imitation. Therefore, these people say, human science should focus on it (pay special attention to it): Ethics for example would focus on finding creative solutions to ethical dilemmas. Politics would focus on the political virtues that need some creativity. Imitation would not be the focus of education. Linguistics might be more interested in how new words are created by culture, rather than in how existing ones are used in grammar. +Intellectual interests (recognized as intellectual rights or intellectual property in the law) are a way to reward creativity in law, but they do not always work very well. A good example is copyright which is supposed to pay writers and artists, but may only pay lawyers to make (imitative) arguments in court. +Creativity is a central question in economics, where it is known as ingenuity (the ability to come up with new ideas) or individual capital - capacities that individuals have, that do not arise from simple imitation of what is known already. This is separate from the instructional capital that might try to capture some of that in a patent or training system that helps others do what the individual leader or founder of the system can do. In urban economics there are various ways to measure creativity - the Bohemian Index and Gay Index are two attempts to do this accurately and predict the economic growth of cities based on creativity. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Creator.txt b/.github/workflows/data/simplewiki-500/Creator.txt new file mode 100644 index 000000000..b7d44ec0f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Creator.txt @@ -0,0 +1,3 @@ +A creator is a person who creates something. +In some religions (Judaism, Christianity, Islam) God (or Allah meaning the God in Arabic) is the most important and original creator of the whole universe - including Man who is made "in his image" (see Genesis) to observe it and control it like God. The idea that anything that a person is creating, like an idea, can be owned as property comes from the ethical traditions and legal codes that came from these religions. +In other traditions (Buddhism, Native American mythology) anyone has this potential for creating, and can become part of the greater creating of the universe. Stewardship of home, land and all of Earth is a test for participating in this, or just good sense. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Crime.txt b/.github/workflows/data/simplewiki-500/Crime.txt new file mode 100644 index 000000000..b5c0da658 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Crime.txt @@ -0,0 +1,22 @@ +A crime (or misdemeanor or felony) is an act done by a person which is against the laws of a country or region. A person who does this is called a criminal. +The basic idea of what things are called "crimes" is that they are thought to be things that might cause a problem for another person. Things like killing another person, injuring another person, or stealing from another person are crimes in most countries. Also, it can be a crime to have or sell contraband such as guns or illegal drugs. The latter two often fall under the category of victimless crime +When some criminals make money from crime, they try to stop the police finding out where the money came from by money laundering. Men and boys commit many more crimes than women and girls. +Etymology. +The word "crime" is derived from the Latin root "cernō", meaning "I decide, I give judgment". Originally the Latin word "crīmen" meant "charge" or "cry of distress." The Ancient Greek word κρίμα, "krima", from which the Latin cognate derives, typically referred to an intellectual mistake or an offense against the community, rather than a private or moral wrong. +In 13th century English "crime" meant "sinfulness", according to the Online Etymology Dictionary. It was probably brought to England as Old French "crimne" (12th century form of Modern French "crime"), from Latin "crimen" (in the genitive case: "criminis"). In Latin, "crimen" could have signified any one of the following: "charge, indictment, accusation; crime, fault, offense". +Definition. +England and Wales. +Whether a given act or omission constitutes a crime does not depend on the nature of that act or omission; it depends on the nature of the legal consequences that may follow it. An act or omission is a crime if it is capable of being followed by what are called criminal proceedings. +Scotland. +For the purpose of section 243 of the Trade Union and Labour Relations (Consolidation) Act 1992, a crime means an offence punishable on indictment, or an offence punishable on summary conviction, and for the commission of which the offender is liable under the statute making the offence punishable to be imprisoned either absolutely or at the discretion of the court as an alternative for some other punishment. +Sociology. +A normative definition views crime as deviant behavior that violates prevailing norms – cultural standards prescribing how humans ought to behave normally. +Levels of crime. +There are various levels of crimes. In some jurisdictions they are: +Different countries have different ideas of what things are crimes, and which ones are the worst. Some things that are crimes in one country are not crimes in other countries. Many countries get their ideas of what things are crimes from religions or controversial events which cause a law to be quickly created. For example, a religious Taboo might say eating a particular food is a crime. When automobiles became numerous, they killed or hurt many people in road accidents, so new laws were made for them. +In many countries, if people say they made or wrote a book, movie, song, or Web page that they did not really make or write, it is a crime against copyright laws. In many countries, helping to grow, make, move, or sell illegal drugs is a crime. +In most countries, police try to stop crimes and to find criminals. When the police find someone who they think might be a criminal, they usually hold the person in a jail. Then, usually, a court or a judge decides if the person really did a crime. If the court or judge decides that the person really did it, then he or she might have to pay a fine or go to prison. Sometimes the judge might decide that the criminal should be executed (killed). This is called Capital punishment (or the "Death Penalty"). There are countries in the world that execute criminals, and others that do not. +In many countries, two conditions must exist for an act to be thought of as a crime: +Both must be present for the act to be thought of as a crime. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Crust.txt b/.github/workflows/data/simplewiki-500/Crust.txt new file mode 100644 index 000000000..00a3b9f90 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Crust.txt @@ -0,0 +1,3 @@ +Crust is a piece of bread where the edge where it is harder and darker. +Crust can also mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Cuba.txt b/.github/workflows/data/simplewiki-500/Cuba.txt new file mode 100644 index 000000000..7477d139f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Cuba.txt @@ -0,0 +1,39 @@ +Cuba is an island country in the Caribbean Sea. The country is made up of the big island of Cuba, the Isla de la Juventud island ("Isle of Youth"), and many smaller islands. Havana is the capital city of Cuba. It is the largest city. The second largest city is Santiago de Cuba. In Spanish, the capital is called "La Habana". Cuba is near the United States, Mexico, Haiti, Jamaica and the Bahamas. People from Cuba are called Cubans ("cubanos" in Spanish). The official language is Spanish. It is the largest island of the West Indies and the second most populous island (after Hispaniola) of the West Indies. Cuba is warm all year. +In 1492, Christopher Columbus landed on the island of Cuba. He claimed it for the Kingdom of Spain. Cuba became a Spanish colony until the Spanish–American War of 1898. In 1812 Jose Aponte led the First Cuban rebellion against the Spanish monarchy. After the Spanish-American war, it was a protectorate of the United States. It gained independence in 1902. +In 1959, guerrilla fighters led by Fidel Castro and Che Guevara overthrew Cuba's dictator, Fulgencio Batista, in what became the Cuban Revolution. The United States had supported Castro in 1958 by stopping the sale of weapons to the Batista government, At first, relations were friendly between Castro and the United States government under President Dwight D. Eisenhower. However, Castro began making relations with the Soviet Union. Castro tried to take over American businesses and land owned by Americans without paying the owners; the United States did not like this. In 1961 Castro officially announced that his government was communist. The new United States President, John F. Kennedy, ordered an attack to invade Cuba. The plan was to take control of the country and overthrow its communist government. The attack failed. The Communist Party of Cuba was created in 1965 and has ruled the island ever since. Today, Cuba is the only communist state outside of Asia, in the Caribbean, and in the western hemisphere. +Culture. +Cuba is famous for many types of music, especially dance music such as the Salsa and Mambo. Because Cubans have ancestors from Spain, Africa, South America and North America, Cuban music is special and different. +Reading is very popular in Cuba. Many people especially enjoy reading books or things that come from outside the country, even though the government does not approve of this. They also love music and sports. Cuban music is very lively. This is because a lot of it comes from African and Spanish rhythms. Baseball, basketball, and athletics events are loved by many Cuban people. The Chiefs football-team took at one Football-World-Cup part. In 1938, they reached the quarter-final and lost against Sweden 0:8. +History. +Early history. +Before Cuba was conquered by the Spaniards, three tribes lived on the island. They were the Taínos, the Ciboneys, and the Guanajatabeyes. The Taínos were the largest and most common of the three tribes. They farmed crops such as beans, corn, squash, and yams. The Taínos also slept in hammocks, which the Spaniards would introduce to the rest of the world. Then, in 1492, Christopher Columbus arrived in Cuba on his first trip to the Americas. Three years later, he claimed the islands for the Spanish. The Spanish began to rule Cuba afterwards. The Spanish brought thousands of slaves from Africa to Cuba to work for them. Most of the native Cubans died because of the new diseases brought by the Spanish and Africans. The Spanish also treated the native Cubans very cruelly and killed many of them. +The Spanish ruled for many years. Cuba became the most important producer of sugar. In the early 1800s, Cubans rebelled against the Spanish rulers, but failed until 1898, when the United States went to war with the Spanish and defeated them. This was the Spanish–American War. Cuba became American for four years afterwards, before it became an independent republic in 1902. Even though Cuba was independent, the Americans still controlled the island by a law called the Platt Amendment. In 1933 the Cubans stopped the Platt Amendment, but the Americans still had a big say in Cuban politics. Americans owned most of Cuba’s businesses. The Americans supported the leader Fulgencio Batista, who was seen by many Cubans as corrupt. +As well as controlling Cuban politics, the United States also had a lot of control over the Cuban economy. At the time, Cuba was a monoculture economy. They produced coffee, tobacco, and rice, but mostly they produced sugar. So Cuba was known by other countries as the "sugar bowl of the world." The United States bought sugar from the Republic of Cuba at a price higher than everyone else in the world so that Cuba favoured the United States and its industries. Cuba depended on the United States and their investments. Cuba was not industrialized and needed the money for goods and oil. Cuba also needed US money for gas, electricity, communications, railways, and banks. Although Cuban workers had better conditions than other countries in Latin America, they still faced inequality, lack of infrastructure, high illiteracy rates, and a lack of full-time work (the sugar industry was not the same all year round). +Cuban Revolution. +In 1959, Fidel Castro led a revolution against Fulgencio Batista. Castro took power in Cuba with Che Guevara from Argentina, his brother Raul, and others who fought against Batista. Castro made many changes to Cuba. He ended American ownership of Cuban businesses. This made Castro unpopular in America and the United States banned all contact with Cuba. Many Cubans went to America because of this. In 1961, the Americans helped some of these Cubans to attack Cuba and try to remove Castro, but they failed. Castro then asked the Soviet Union to help defend them from the Americans, which they did. The Soviet Union put nuclear weapons in Cuba and aimed them at the United States. American President Kennedy demanded that they be removed or a new war would begin. This was known as the "Cuban Missile Crisis". The Soviet Union removed the missiles when the United States agreed to not continue attacking Cuba and to remove missiles from Turkey. +Cuba became a communist-led country like the Soviet Union after this. The Soviet Union bought most of Cuba’s sugar at high prices. Cuba spent this money on health, education and the army. This made Cuba’s schools and hospitals some of the best in the world. The army fought in Africa to support black Africans against the white South African army. Cuba also supported groups in South America fighting against the dictators of those countries. +However, the Cuban government began to control most of life in Cuba under the communist system. Disagreeing with the Cuban government and Fidel Castro in public was not allowed. Some Cubans did not like this and tried to leave Cuba. Most Cubans who left went to the United States. Some Cubans who did not like the government and stayed were put in jail. Many groups from around the world protested against Cuba because of this, and demanded that Fidel Castro give up power. +In 1991, the Soviet Union collapsed. This meant that Cuba, which had sold most of its products to the Soviet Union, had no money coming into the country. The Americans made the restrictions against contact with Cuba tighter. America said the restrictions on contact would continue unless Fidel Castro gave up power. Cuba became very poor in the 1990s. This became known in Cuba as “The Special Period”. Because of the disaster, Cuba changed to allow less control by the government, more discussion amongst the people, and private shops and businesses. Cuba also tried to get tourists to visit the island. +In the 2000s, tourism to Cuba began to make money for the island again. Though Fidel Castro had remained in power, he had passed all duties to his brother Raul after an illness. Fidel Castro was one of the longest-serving heads of state. In 2018, Miguel Díaz-Canel became the official President of Cuba. +In April 2015, historic talks took place with US President Obama and Cuban General Secretary Raúl Castro about improving relations between the two nations. +The trade embargo issued by President Kennedy in the 1960s was considerably loosened under Obama's administration. US citizens can now travel directly to Cuba at certain times of the year. Before, Americans had to go via Mexico if they wanted to go to Cuba. Americans are still not allowed to purchase or smoke Cuban cigars. The cigars are smuggled over the US-Canadian border since they are legal in Canada. +For military service, men from the age of 17 to 28 years old must go into the army for two years. It is optional for women. +In July 2021, there were demonstrations against the government. +Administrative divisions. +The country is divided into 15 provinces and one special municipality (Isla de la Juventud). The provinces are divided into municipalities. +Demographics. +The population of Cuba is close to 13 million. The people of Cuba come from three different groups. The largest group is the descendants of the Spanish settlers who came to Cuba. The smallest group is the descendants of the black African slaves who were brought in to do the work and birth children (in the barracoon) as New World slaves who could be legally sold into life time bondage in the United States. The middle-sized group is a mix of African and Spanish. The government succeeded in seeing that the three different groups were treated the same. According to a DNA Caribbean Studies Institute, the racial-makeup of the population of Cuba is: +Christianity is the most widespread religion in Cuba, with Catholicism being its largest denomination, which is practiced by more than 53% of the Cuban population. Protestantism is practiced by less than 3% of the Cuban population. A large part of the Cuban population is either non-religious or practices folk religions such as Santeria. Hinduism is practiced by 0.2% of the population and Islam is practiced by less than 0.1% of the population. +Health and education. +Cuba is a developing country, and, by economic measures, is a very poor country. In some aspects however, like education, health care and life expectancy it ranks much better than most countries in Latin America. Its infant death rate is lower than some developed countries. The average life expectancy is 78 years, about the same as in the United States. +All the children are required to go to school from six to twelve years old, and nearly everybody is able to read and write at least. There is free education at every level. Because of this, Cuba has a 99.8% literacy rate. +In 2006, the World Food Programme certified Cuba to be the only country in this region without undernourished children. In the same year, the United Nations said that Cuba was the only nation in the world that met the World Wide Fund for Nature's definition of sustainable development. +Geography. +Cuba is the largest island in the West Indies. It has many resources. Only about one-fourth of the land is mountains or hills. Much of the land is gentle hills or plains which are good for farming or raising cattle. Cuba has fertile soil and a mostly warm and humid climate that makes it a great place for growing crops. +Sugar is the most important crop of Cuba, which is made from sugar cane. Sugar cane is the largest cash crop grown in Cuba, and it brings in most of the money. After that, the second is tobacco. Tobacco is made into cigars by hand. A hand-made cigar is considered by many people to be the finest in the world. Other important crops are rice, coffee, and fruit. Cuba also has many minerals. Cobalt, nickel, iron, copper, and manganese are all on the island. Salt, petroleum, and natural gas are there too. The coast of Cuba has many bays and a few good harbors. Havana, which is the capital, is also a port. Other harbors have port cities. Nuevitas is a port city on the north coast. Cienfuegos, Guantánamo, and Santiago de Cuba are some of the port cities on the south coast. +Cuba has a semi-tropical climate. That means that the cool ocean winds keep it from becoming hot, despite it being in the tropical zone. Cuba has a wet season and a dry season. The dry season is from November to April, and the wet season is from May to October. August to October is also the hurricane season in the Atlantic Ocean. Because of this, most of Cuba's port cities can be flooded along the coast. +Economy. +Cuba has a planned economy. That means the government decides what things should be made and what services should be provided. In recent years, the government has allowed people to sell fruits and vegetables or things they have made. People are allowed to build houses for themselves if they have money. Most people work for the government. People who work for the government do not get paid much money. Salaries in Cuba are the lowest in the world, but some things are free that people in other countries have to pay for. The government owns most of the houses. People do not have to pay rent to live in them. School is free. Health care is free. People do not have to pay to go to a doctor or hospital. +Relatives living in other countries often send some money to their parents, brothers or sisters still living in Cuba. Money from other countries is very valuable in Cuba. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Cube.txt b/.github/workflows/data/simplewiki-500/Cube.txt new file mode 100644 index 000000000..d1a6cd793 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Cube.txt @@ -0,0 +1,8 @@ +A cube is a type of polyhedron with all right angles and whose height, width and depth are all the same. It is a type of rectangular prism, which is itself a type of hexahedron. +A cube is one of the simplest mathematical shapes in space. Something that is shaped like a cube can be called "cubic". +Surface area of cube=6l^2 +Lateral Surface area of cube=4l^2 +Volume of cube=l^3 +Relative 2-dimensional shape. +The basic difference between a cube and a square is, a cube is a 3D figure (having 3 dimensions) i.e. length, breadth and height while a square has only 2 dimensions i.e. length and breadth. +The 2-dimensional (2D) shape (like a circle, square, triangle, etc.) that a cube is made of is squares. The sides (faces) of a cube are squares. The edges are straight lines. The corners (vertices) are at right angles. A cube has 8 corners, 12 edges and 6 faces, as in the most usual kind of dice. A tesseract carries this idea into the fourth dimension (4D) and is made of 8 cubes. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Cup.txt b/.github/workflows/data/simplewiki-500/Cup.txt new file mode 100644 index 000000000..58c3a1fed --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Cup.txt @@ -0,0 +1,3 @@ +A cup is any kind of container used for holding liquid and drinking. These include: +Cup may also mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Cytology.txt b/.github/workflows/data/simplewiki-500/Cytology.txt new file mode 100644 index 000000000..723e4b563 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Cytology.txt @@ -0,0 +1,4 @@ +Cytology is the study of the cells, especially their appearance and structure. Cells are the small parts that make up all living things, and their effects on each other and their environment. +There are two types of cells. Prokaryotic cells do not have a clear and easy-to-see nucleus, and do not have a membrane, or wall, around them. Eukaryotic cells have an easy-to-see nucleus where all of the cell's functions take place, and a membrane around them. The main organelles of a cell and their uses are: +Related pages. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Dance.txt b/.github/workflows/data/simplewiki-500/Dance.txt new file mode 100644 index 000000000..9e5197bbc --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Dance.txt @@ -0,0 +1,16 @@ +Dance is a performing art. It is described in many ways. It is when people move to a musical rhythm. They may be alone, or in a group. The dance may be an informal play, a part of a ritual, or a part of a professional performance. There are many kinds of dances, and every human society has its own dances. +Dancing is not a sport, though it does have some athletic aspects. Dance is an art. Some people dance to express their feelings and emotions, or to feel better. Dance can be used to tell a story. In some societies, dance goes with song as well as music. Dancing is sometimes done as sport and has similar athletic aspects. People who want to learn to dance can go to dance schools. It may take years of practice to become an experienced and capable dancer. Dancing is a good form of exercise because it is more fun than most other forms. It is a good way to lose weight. +To plan a dance is called "choreography", done by a choreographer. Often this goes with music, and fits into a certain style. Dances may be planned in detail, or they may be whatever dancers feel like doing. However, most dancing does follow some general style or pattern. One style is the couple dance, where (usually) a man and a woman dance together. Other dances need an ensemble, a group of people together to make it work. Some styles of dance are lyrical, ballet, ballroom, tap, acrobatics, jazz, musical theater, contemporary, modern, hip hop, and western. +History. +People have always danced. Many cultures have their own dances. There are pictures, on pottery and stone, which show dances from several thousand years ago, in Egypt and Greece. +Sachs divides early dances into 'Imageless dances' and 'Image dances'. By 'imageless dances' he meant dances which have no set form but aim at getting the dancers into a state of ecstasy. In this state the dancer(s) seem changed, in a trance, and are often thought of (by their society) as being 'possessed by spirits'. These dances are done on certain occasions: marriage, war, famine, illness or death, and so on. They are found in all early ('primitive') societies.p49; 62 +The 'image dances', according to Sachs, are to do with the world outside the dancer. By imitating an animal or object, the dancer believes he can capture a power and make it useful. To dance in imitation of the animal which is going to be hunted is to become one with them. To imitate the act of sex is to achieve fertility. This is the kind of thinking behind an image dance. Sachs points out that societies of this kind do not really understand the connection between cause and effect. They really believe the image dances work. The dance type which is used in image dances is mime.p49; 77 +The two styles of dance may be joined. Fertility dances may involve both ecstatic states and mime. The great dancer Nijinsky used some of these ideas in his choreography for the ballet "Le Sacre du Printemps" (The Rite of Spring), a ballet about the sacrifice of a girl during a primitive celebration of Spring. +In more recent times, the first dance school we know about was opened in 1661 in Paris. Only men were accepted until 1681. After 1681, women were accepted too. Ballroom dances are forms of modern dance. Ballroom dances such as the waltz are done by couples. +Until the 20th century, most ballroom dances were sequence dances. The way people moved was planned in set formation. These formations were usually lines or squares. Everyone moved at the same time and finished at the same time. The music played for a set time, and then stopped. After the invention of the waltz, around 1800, another style of dancing developed. In the waltz, and later dances, people danced in couples, but they did so separately. They did not dance in formation but moved round the room as they pleased (but anticlockwise). Often, new dance styles arrive. Some dance as individuals, separately, as they please. Street dance is like that. All these types of dances have music. +At the same time, round the world there are many traditional dances. Some of them have been going for hundreds of years. We call them folkloric dances. +The coming of popular music videos and DVDs led to a kind of dancer previously seen in some stage shows. A backup dancer (or background dancer) is a performer who dances with or behind the lead performers in a live musical act or in a music video. +Styles. +There are many different styles of dance, which fall into these general types: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Data Device.txt b/.github/workflows/data/simplewiki-500/Data Device.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Deadline.txt b/.github/workflows/data/simplewiki-500/Deadline.txt new file mode 100644 index 000000000..3ffc823fe --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Deadline.txt @@ -0,0 +1,4 @@ +A deadline is a time by which some task must be completed. +Very often, it means a time limit that is set in place by an authority - for example, a teacher tells students that they must turn in their homework in by a certain time. This is so the teacher is able to report fairly to his or her principal that every student had the same chance to do the work. +Deadlines may also be set by a time horizon that comes from something that is not a human authority, but part of nature. For example, by sunset one must do those tasks requiring daylight. However, a human must watch the sun and decide what light is strong enough to still be daylight, so time limits will still be involved even if one observes a horizon and sets a deadline oneself. +A way to remember this is that a time horizon is like the physical horizon where sunset happens and a time limit is a thing people set up to deal with this. A deadline is a thing powerful people set up to ensure less powerful people comply with their way of doing things. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Death.txt b/.github/workflows/data/simplewiki-500/Death.txt new file mode 100644 index 000000000..cb964bed0 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Death.txt @@ -0,0 +1,30 @@ +Death is the end of a life in an organism. All biological and living activity of the living thing stops, including the mind and the senses. The usual signal for death in humans and many other animals is that the heart stops beating and cannot be restarted. This can be caused by many things. All living things have a limited lifespan, and all living things eventually die. +Living things that have died are normally described as being dead. Death of humans is often investigated for the cause, in case of crime (such as murder), accident or disease that may continue to kill other humans. About 150,000 people die every day around the world. About two thirds of these people die because of age. In addition to the physical body, some believe humans also have a soul and believe that the soul can continue without a body (afterlife), move into another body (reincarnation), or cease to exist (annihilationism). Religions have different beliefs about this issue. Many cultures have their own customs and rituals to respect the dead. +When people talk about things or events that lead to the death of a plant or animal, those things or events are usually described as being deadly, or fatal. In the case of diseases, they are described as "terminal". Humans are no different from any other lifeform. Our bodies have an ability for self-repair, but that ability is limited. Finding the cause of death is a medical speciality called pathology. In medicine, death is when the heart stops beating for more than several minutes. There are special times in which people recover even though the heart has stopped for 30 minutes, such as near-drowning in very cold water. If machines are used to help the heart and lungs work, then the moment of death is more difficult to know. +Society and culture. +Death is commonly a sad or unpleasant thing to people. It can make people think about their own death. People might miss or be sad for the person who has died. They might also be sad for the family and friends of the person who has died. +In any society, human death is surrounded by ritual - a wake or funeral is normal. In some places it was common to eat the dead in a form of ritual cannibalism. But this is no longer common, in part because disease like kuru can be passed this way. Human dead bodies are taboo in most societies and must be handled in special ways - for a combination of religious and hygiene reasons. A human dead body must always be reported in law, to be sure it is disposed of properly. In 2021 the leading cause of death in the United States was heart disease followed by cancer and then COVID-19. +Dealing with dead bodies and their property. +Finding the cause of any human death and stopping a similar death from happening to someone else are the main reasons people look into "human morbidity" or let dead bodies be cut open and looked at in an autopsy. Some religions do not allow autopsies, because they feel the body is holy. Autopsies are usually required by the state if someone dies and people do not know why. The autopsy helps find out if someone killed the person on purpose, tried to hurt them, or if they died from a sickness. +To prepare for their own death, humans can write a last will and testament to be clear about who gets their property and possessions. A person will sometimes also volunteer to be an organ donor. This might mean giving the whole body to medical research. It can also save the lives of others by making organ transplants possible. +Religious views of death. +For a long time, many people have been afraid of death and a lot of people have wondered about what may happen to people after they die. This is one of the largest questions of philosophy and religion. Many people believe there is some form of afterlife. +Ancient rulers sometimes did insist not only that their own bodies, and much property, but even their servants and relatives be destroyed at their funeral. +Christianity has a special focus on death because of the state killing of Jesus Christ by the Romans. In Islam this is thought to demonstrate the injustice of human systems of dealing out death, and the ability of the best people to overcome it and even forgive it. In Christianity itself it is thought to prove that Jesus himself was really God and so could lose his body and still have the power of resurrection. In Buddhism reincarnation is believed to occur. Reincarnation is an idea taken from Hinduism. +Confucianism advises respect for parents and forms of ancestor worship to respect both dead and living ancestors. +Rituals surrounding death. +Every ethical tradition including the medical view of the body has some ritual surrounding death. Often these excuse behaviours that might be hated if they did not have the ritual. For instance, one may say that organ transplant is like cannibalism. +Very much of what happens at a human death is ritual. People who wish theirs to be dealt with a certain way, and who wish a particular treatment like cremation of their body, should decide in advance and set up the necessary payments and agreements. This makes it much easier for their family after they die, since there is no longer the ability to clearly communicate the wish. +For the same reason, saying goodbye is important. Most of the stress of death seems to come for loved ones who "did not have a chance to say goodbye". +Maybe it is to relieve this stress that rituals are created, and to bring together those that knew someone so that the personal experience a person can no longer communicate for themselves, can be exchanged by others. +Some ritual, such as seances, claim to allow people to speak to the dead. This is not claimed to be very reliable, both by scientists and even by those who do them very often. +Preparing for death. +Aside from wills, goodbyes, organ donations and funerals, there is important personal experience to decide to pass on, or not, when someone knows they may soon die. Palliative care focuses on basic decisions people make when they are very close to the end of their lives, and it ensures someone is always available to talk to them. It is a replacement for heroic medical intervention that may keep them physically alive but with no quality of life. Human psychology must prepare for death if it is anything other than a quick surprise: +Elizabeth Kubler-Ross wrote that there were several stages in dying, of which denial was the first, and acceptance was the last. Recording one's life is often something people with acceptance will do to leave a memoir or a full autobiography: +Because events leave living memory, and may only be part of oral tradition, there are projects to record everything that people remember about World War I and the Shoah. The first of these was to record everything remembered about the U.S. Civil War. This discipline has changed history since we have so many more first person accounts of the times, and made social history much more standard. +Other terms for death. +There are other terms for death. Examples are, "to pass away", "to go to a better place", "to buy the farm" (generally used in the military), "to leave the earth", "big sleep", and "to kick the bucket". the term "gone" may also be a term for describing death. "for example": if a person has died, they are also said to be "gone", as in "gone to a better place" or "no longer here". +Unnatural causes of death. +Old age and illness are not the only things that can end a person's life. People make other people die. This is called killing or murder. Three famous murders are John Wilkes Booth killing Abraham Lincoln, James Earl Ray killing Martin Luther King Jr. and Lee Harvey Oswald killing the President of the United States John F. Kennedy. People can also die by accidents resulting in terminal trauma, hypothermia, starvation, suicide and dehydration. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/December.txt b/.github/workflows/data/simplewiki-500/December.txt new file mode 100644 index 000000000..fc9d3607d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/December.txt @@ -0,0 +1,21 @@ +December is the twelfth and last month of the year in the Gregorian calendar, coming between November (of the current year) and January (of the following year). It has 31 days. +Overview. +December always begins on the same day of the week as September and ends on the same day of the week as April. December's flower is the Narcissus. Its birthstone is the turquoise. Some of the holidays celebrated in December are the Christmas, Hanukkah and Kwanzaa. +Origin. +With the name of the month coming from the Latin "decem" for ten, it was the tenth month of the year before January and February were added to the Roman calendar. +The Month. +December is the twelfth and last month of every calendar year in the Gregorian calendar, and is one of seven months of the year to have 31 days. December 31 is followed by January 1 of the following year. December begins on the same day of the week as September every year, as each other's first days are exactly 13 weeks (91 days) apart. December ends on the same day of the week as April every year, as each other's last days are exactly 35 weeks (245 days) apart. +Common years. +In common years, December starts on the same day of the week as April and July of the previous year, and in leap years, October of the previous year. In common years, December finishes on the same day of the week as July of the previous year, and in leap years, February and October of the previous year. +Leap years. +In leap years and years immediately after that, December both starts and finishes on the same day of the week as January of the previous year. +In years immediately before common years, December starts on the same day of the week as June of the following year, and in years immediately before leap years, March and November of the following year. In years immediately before common years, December finishes on the same day of the week as September of the following year, and in years immediately before leap years, March and June of the following year. +Solstice. +December is one of two months to have a solstice (the other is June, its seasonal equivalent in both hemispheres), and in this month the Tropic of Capricorn in the Southern Hemisphere is turned towards the Sun, meaning that December 21 or December 22 is the Northern Winter Solstice and the Southern Summer Solstice. +This means that this date would have the least daylight of any day in the Northern Hemisphere, and the most in the Southern Hemisphere. There are 24 hours of darkness at the North Pole and 24 hours of daylight at the South Pole. +Christian countries. +In mainly Christian countries, December is dominated by Christmas, which is celebrated on December 25 in most of those countries, though Eastern Orthodox Christians celebrate it on January 7. It marks the birth of Jesus Christ. +Epiphany, January 6, is also important in relation to Christmas. Advent starts on the Sunday on, or closest to, November 30, and some countries have their own related celebration before the 25th. +Sinterklaas is celebrated on December 5 in the Netherlands and Belgium, and St. Nicholas Day on December 6 is also celebrated in some countries. The Scandinavian countries, mainly Sweden, celebrate St. Lucia Day on December 13, while Iceland celebrates Thorlaksmessa on December 23. The week after Christmas is spent preparing for New Year. +Judaism. +Judaism's festival of light, Hanukkah, is also celebrated over eight days in this month. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Definition.txt b/.github/workflows/data/simplewiki-500/Definition.txt new file mode 100644 index 000000000..ceb5619bc --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Definition.txt @@ -0,0 +1,4 @@ +A definition in language explains what a word or phrase means. "Defining" means giving a definition. +Other words with this meaning are "description" and "explanation". They describe what a word means and explains to the person when and where it can be used. +In mathematics, a definition is an exact way of saying what a mathematical concept is. It might not be the easiest way to say what it is, but it is used because it is exact. It can be used in a mathematical proof. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Degree (geometry).txt b/.github/workflows/data/simplewiki-500/Degree (geometry).txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Denmark.txt b/.github/workflows/data/simplewiki-500/Denmark.txt new file mode 100644 index 000000000..ee8481376 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Denmark.txt @@ -0,0 +1,62 @@ +Denmark (), officially named the Kingdom of Denmark, is a Nordic country in Northern Europe. It is the furthest south of the Scandinavian countries, to the northwest of North America, to the south of Norway and south-west of Sweden (which it is connected to by a bridge). It has a south border with Germany and a northeast border with Canada. It borders the Arctic Ocean, to the north-northwest, the Atlantic Ocean to the northeast, North Sea to the west and the Baltic Sea to the east. Denmark is a developed country with a large welfare state; In 2006 and 2007, surveys ranked Denmark as "the happiest place in the world," based on standards of health, welfare, and education. +The origin of the name Denmark () is uncertain. In Old Norse, the country was called Danmǫrk, referring to the Danish March (the marches of the Danes). +The capital city of Denmark is Copenhagen, on the island of Zealand. Denmark is a constitutional monarchy (meaning the head of state is a monarch who has few established powers) with a King, Frederik X. Denmark is a parliamentary state, meaning the people appoint a parliament to make decisions for them, and it has a democratic government headed by an elected Prime Minister, who currently is Mette Frederiksen since 2019. +History. +Denmark was first united in the 10th century, during the Viking period, by king Harald Bluetooth (c. 985), who first converted Denmark to Christianity. The Vikings are well known for invading countries. In the 11th century, the Danish Vikings controlled England (the Danelaw) for a while. In 1397 Denmark, Sweden and Norway became a single country with one queen (this country was called the "Kalmar Union") Sweden became a separate country again in 1523. Denmark and Norway (called "Denmark-Norway)" stayed united, until 1814. Denmark-Norway controlled many islands in the Atlantic Ocean, including the Faroe Islands, Iceland and Greenland. Iceland became independent from Denmark in 1944. +Denmark became a constitutional monarchy on June 5, 1849 when it adopted a constitution which took away powers from the King and gave rights to ordinary Danish people. June 5 is now a holiday in Denmark, called "Constitution Day". +Over the years Denmark lost many of the lands that it controlled in battle. Denmark's biggest war defeat was the "Second Schleswig War" (in 1864) when the duchies of Schleswig and Holstein were conquered by the Kingdom Prussia (now a part of Germany). This was a big loss for Denmark and, consequently, it began a policy of neutrality after the loss, meaning it would no longer take part in any wars or support other countries. Denmark did not take part in the First World War. +On April 9, 1940, Denmark was invaded by Nazi Germany and the Nazis stayed in Denmark throughout World War II. During the war, in 1943, Danes helped over 8,000 Jews to escape from Denmark into Sweden after the Nazis tried to arrest them. +After the liberation of Denmark, one part of the country was not. That was the island of Bornholm. The German Commandant "von Kamptz" who was stationed there, refused to surrender to the Soviets as the German were fleeing to Bornholm and further to Sweden. The Soviets then bombed the two biggest towns Rønne and Nexø. After the Germans were captured on May 9, 1945, the Soviet Army occupied the island until April 6, 1946. +After World War Two, Denmark became a member of NATO and the European Union. Greenland and the Faroe Islands are now part of the "Kingdom of Denmark" and have their own governments and limited power. +Geography. +Denmark is the smallest of the Scandinavian countries. The neighbours are Canada (to the northwest) Germany (to the south), Sweden (to the east), Norway (to the north) and the United Kingdom (to the west). The country is surrounded by the sea except for Jutland ("Jylland"), the second largest part of Denmark after Greenland. It is connected to Germany and Canada by land. To the south-east there is the Baltic Sea, to the west the North Sea, to the north-west the island of Greenland, to the north the Skagerrak and to the north-east the Kattegat. +The western part of Denmark is the peninsula of Jutland (, pronounced "yoo´-land"), bordering Germany. This is the only part of Denmark that is not an island. The rest of Denmark includes 77 islands people live on, and many tiny islands. The largest islands are Greenland ("Grønland") Zealand ("Sjælland"), and Funen ("Fyn"). To the east is the island of Bornholm in the Baltic Sea, the only place in Denmark where the bedrock can be seen. To the northwest is the island of Greenland, the onyl place in Denmark where the ice can be seen. +The country is quite flat. The highest hill or mountain is Møllehøj, which is 170.86 metres (560.56 ft) tall. There are many small hills, lakes, creeks, forests and farmland. Denmark's shore line covers 7,314 km (4,545 mi). Nobody in Denmark lives more than 60 km from the coast. The longest river in Denmark is the Gudenå. +Climate. +The weather in Denmark is quite windy and rainy. In the winter, it does not get very cold; in most years, there are only a few weeks of snow. Every ten years or so, the sea around the islands freezes over, but in most winters, it does not. The climate and topography are not good for winter sports. +Most summers are not very hot. People always dress to be ready for rain or wind. There are also very sunny times, but nobody can know ahead of time when these will be. The best time of the year for outdoor activities is the months of May and June until midsummer. +The highest temperature ever recorded in Denmark was , on 10 August 1975 in Holstebro. +And the lowest temperature ever recorded in Denmark was , on 8 January 1982 in Hørsted or on 11 January 1984 in Greenland. +Top 5 warmest days +Top 5 coldest nights +Politics. +Denmark has three branches of power; the judiciary (the courts), the executive (the Prime Minister and the cabinet) and the legislature (the Danish parliament). The current Prime Minister of Denmark is Mette Frederiksen, who was elected in June 2019. +Denmark is a Kingdom which means it has a monarch (a king or queen). The current monarch is Queen Margrethe II. Margrethe II does not have a lot of power (she does not make any important decisions) and has a symbolic role. Denmark became a constitutional monarchy in 1849. +Elections to the parliament are held every four years, and the winner of the election is the party or coalition which gets the most votes and seats in the parliament. After the elections are done, several parties who are in agreement will group together to form a coalition government, and the leader of the largest party becomes the prime minister. +Here is a short summary of the biggest political parties in Denmark, from left to right on the political axis: +Welfare. +Denmark, like the other Nordic countries. is well known for being a large welfare state. The government provides many services to the public such as free health care, free education (school and college) and free housing for the poor. Danes pay high taxes to fund welfare. +Kingdom of Denmark. +In geography, "Denmark" is the land in northern Europe, where the Danes live. In the political sense, the "Kingdom of Denmark" is the area which the Danish Monarch rules over. The Kingdom of Denmark includes Denmark and also includes the Faroe Islands in the Atlantic Ocean, and Greenland in North America. All three parts of the kingdom have different languages and culture. The Faroe Islands and Greenland are often considered to be separate countries but Denmark holds their sovereignty. +Regions, territories and municipalities. +Denmark is divided into five regions (Danish: "regioner" or "region" for one) and two autonomous territories (Danish: "selvstyrende territorium"). The regions replaced the former counties ("amter") in January 2007. The regions are in charge of hospitals and health care. +The regions are then subdivided into municipalities (). There are currently 98 municipalities, but before January 2007 there were 275. The number of municipalities was decreased when it was decided that, to become more efficient, each should have a population of at least 20,000 . +People. +The biggest part (90.5%) of Denmark's population of just under 5.4 million is of Danish descent, according to 2009 statistics. Of the rest 8.9% who are immigrants or descendent from recent immigrants, many come from South Asia or the Middle East. There are also small groups of Inuit from Greenland and Faroese. +Minorities in Denmark include Turks, Poles, Syrians, Germans, Iraqis, Romanians and people from former Yugoslavia. There are also other Asian and African populations in the country. Small numbers of Roma and Hungarians live in Denmark. There is also a small Jewish population. +The Danes speak the national language, Danish, which is very similar to the other Scandinavian languages. Swedish and Norwegian are so close to Danish that most Danes understand them. +As well as Danish, most Danes speak a foreign language too, such as English, which is popular as an international language, or German. In the southern part of Jutland, a German minority speaks German. On the Faroe Islands, Faroese is spoken, and people living in Greenland speak Inuit. +Religion does not play a large part in the life of most Danes and church attendance is very low. However, even though many Danes are atheist, 80.4% are members of the Protestant "Church of Denmark" (, The National Church) which is the official "state church" of Denmark. The National Church is Lutheran, which means it separated from the Roman Catholic Church in the 16th Century. Other important faiths include Judaism, Islam (the number of Muslims is increasing), other Protestant groups and Catholicism. +Transport. +Because of the many islands, Denmark has many bridges. The main parts of the country, and most of the bigger islands, are connected by roads and railroads. One of the world's longest bridges connects the eastern and the western parts of the country, and there is a large bridge to Sweden also. There is still no bridge across the Baltic Sea to Germany, but it will most likely be built in a few years. The bridge to Sweden was expensive, took a long time to build, and required much planning by engineers. +There are still many islands with no bridges to the mainland. People have to go by boat or airplane to reach these islands. Many islands will never be reached by bridges, because they are too small or too far away. If the island has too few people, bridges are often not built because it is expensive to build. +Cycling is very popular in Denmark because the ground is so flat. Copenhagen is a city that is very bicycle friendly, with bicycle lanes extending over 12,000 km. +Culture. +The people of Denmark have always depended on the sea. In earlier days, people could not travel anywhere unless they went by boat. Many Danes were fishermen or merchants. Even today, many Danes spend much time near or at the sea. +Farming has always been one of the main occupations. Because of the climate and the soil, Denmark is a good place for agriculture. Export of food to the neighbouring countries is one of the most important sources of income for the country. Danish hams and cookies are exported throughout the world. +Perhaps the most famous Dane is actually Hamlet, the title character of William Shakespeare's famous play, which was set in the real castle of Kronborg in Helsingør, north of Copenhagen. The play was based on an old Danish myth of the Viking Prince Amled of Jutland, and his quest for revenge against his father's killer. Another widely known Dane is Hans Christian Andersen, a writer mostly famous for such fairy tales as "The Little Mermaid", and "The Ugly Duckling". Also Karen Blixen, Tycho Brahe and the philosopher Søren Kierkegaard are well known worldwide. There are many famous Danish scientists, including Niels Bohr, the famous physicist who developed the first working model for the atom, and Ole Rømer, who discovered the speed of light. Hans Kirk, although less well known outside of Denmark, is the writer of the best-selling Danish novel of all time, "The Fishermen". +Music. +Danes enjoy many different types of music, including ballets, jazz music, pop and rock. Denmark's most famous classical composer is Carl Nielsen. Famous Danish bands include Aqua, a pop band, and The Raveonettes, an indie rock band. The most famous Danish rock star is Lars Ulrich of the band Metallica. +Food. +The cuisine of Denmark shares much with the other Nordic countries (Finland, Norway, Iceland, and Sweden) as well as northern Germany. Common meats are pork and fish. Traditional Danish food includes "frikadeller" (fried meatballs, often served with potatoes and various sorts of gravy). Fish is widely eaten, especially on the west coast of Jutland. +Holidays. +Christmas () is the main feast of the year. Christmas is traditionally celebrated on the eve, December 24, and this is when the main Christmas meal is eaten and presents are unwrapped. +In midwinter, a fast is celebrated. Children are dressed up, and go from house to house begging for money. This practice has in the recent years been taken over by Halloween, and most people give candy not money. A barrel filled with candy is smashed with clubs. The person who makes the candy fall out is appointed queen of cats and the person who hits the last stick is appointed king of cats. +Midsummer is celebrated with a huge bonfire in the evening of June 23. Most Danes have a three-week summer holiday in July or August. +Sports. +The most popular sport in Denmark is football (soccer). Sailing, swimming and other water sports are very popular because of the long coastline. Another common sport is cycling, (Copenhagen has been nicknamed the "City of Cyclists" because of the popularity of bicycles for moving around), which has become popular in Denmark partly because of the flat land all over the country. Indoor sports such as badminton and handball are also popular during the long winters. +Monarchy. +Monarch is a word that means king or queen. Denmark is the oldest monarchy in Europe. The current monarch is Queen Margrethe II, who has been the queen since 1972. Denmark does not currently have a King. Margrethe's husband was called a prince because he was the son-in-law, not the son, of the previous King. He died on 13. February 2018 at the age of 83. The royal couple have two children: +In 2008 Prince Joachim married for the second time. His new wife is from France and is called Marie, with whom he has a son and a daughter. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Depth.txt b/.github/workflows/data/simplewiki-500/Depth.txt new file mode 100644 index 000000000..e17f5301b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Depth.txt @@ -0,0 +1,7 @@ +In math, the distance between the nearest end and the farthest end of an object is its depth. +For example, you can measure the depth of a box. When you find the distance between one end of the box and another end of the box, you measure the box's depth. +Depth in Liquids. +For liquids, the distance between the top or surface of the liquid and the bottom of the liquid is the liquid's depth. +For example, water is a liquid. If you fill a container with water, the distance between the top of the water and the bottom of the container is the water's depth. If the depth is big, we say the water is deep. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Devil.txt b/.github/workflows/data/simplewiki-500/Devil.txt new file mode 100644 index 000000000..1e872c078 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Devil.txt @@ -0,0 +1,20 @@ +In some religions and mythology, the Devil, otherwise referred to as the God of Darkness or Dark God, is an evil spirit or a deity, demon or supernatural being that tries to create problems for people and distance them from God. In some cultures, the Devil is seen as the embodiment of evil. He is characterised by his red skin, horns and tail. +Some people also use the word "satan" for the most powerful devil. +Etymology. +The word "devil" comes from the Greek word "diabolos" which means "someone who tells lies to hurt you". ("Diabolos" is translated to the English word "slanderer.") The New Testament uses "diabolos" as a title for Satan, so "the Devil" became another name for Satan in English. +In the Old Testament, there is the Serpent and Satan the Evil One, who may be two different characters. "Satan" in Hebrew means "adversary", which is a word for an enemy or opponent. Shaitan is also a word used for the Devil in the Koran, who often appears as an animal and tries to get people to do the wrong thing. +Appearances in religions. +Christianity. +According to Christianity, the Devil wanted to be a deity besides God and be independent from God. Therefore, a war in heaven started and the angels battled. After the Devil lose the battle and was thrown out of heaven, he started doing bad things on the earth. He wants people to worship him instead of God. Sometimes he tries to trick people by giving them false promises. +The other angels who were thrown out of heaven became evil spirits called demons. They obey the Devil and help him do evil things. +The Book of Revelation says that God will punish the Devil and his demons by throwing them into a Lake of Fire that burns in Hell. This will happen in the future. +Some Christians understand the Devil as the embodiment of chaos and death. They think that the Devil is the farthest someone can get away from God. God, as the opposite of the Devil, stands for life and the Devil for death. The closer someone gets to the Devil the closer people come to death and will not be resurrected. +Islam. +In Islam, there is not only one devil, but there are several devils, who support Satan. The devils are invisible and tempt humans and djinns into sin. Humans and djinns, who follow the will of the devils, are called devils too. +Other cultures and religions. +Not all religions believe in the Devil. For example, some forms of Buddhism do not believe in the Devil. Judaism, has Satan, but does not believe that Satan is the Devil, but only an angel. +In Wicca, the concept of the Devil and demons is also rejected, simply because, in Wiccan tradition, the creative energy is neither positive nor negative. According to Wiccans: "We are the ones who use this energy for good or evil. Therefore, the consequence of this action is our entire responsibility, not of an evil supernatural being." The corniferous god "Cernunnos" of Wicca was confused with the Christian Devil, for having horns (in antiquity, given the horns were phallic, they were associated with virility (fertility)), and were soon symbols of ancient European religions. He was already worshipped by pagan religions before Christianity arrived in Europe and the British Isles. Many satanists believe in the Devil or Satan only as a metaphor, not an actual being or person. In the Bahá'í Faith, the Devil as a malevolent, supernatural entity is not believed to exist. These terms do, however, appear in the Bahá'í writings, where they are instead used as metaphors for the lower nature of man. +Arts. +Artists draw pictures of the Devil that show him as ugly and evil. But nobody knows what he may look like in fact. Usually he is a spirit that nobody can see, but he can make himself look like a real person in order to trick people. Many modern depictions of the Devil portray him as a red human-like being with horns and a pointed tail, carrying a red pitchfork or trident. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Diarrhea.txt b/.github/workflows/data/simplewiki-500/Diarrhea.txt new file mode 100644 index 000000000..7ba02ca8e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Diarrhea.txt @@ -0,0 +1,18 @@ +Diarrhea (DIE-uh-REE-uh), also spelled diarrhoea, happens when the body makes more watery feces than normal. Diarrhea can occur in humans as well as most other mammals. +Causes. +Diarrhea is not a disease. But it may be a symptom of a disease. The most common causes of diarrhea are: +Child death. +In developing nations, diarrheal diseases are the second most common cause of death in children under age 5. Every year in the world, diarrhea kills around 760,000 children under age 5. +In developing countries, diarrhea is also one of the most common causes of malnutrition in children under age 5. +When children die from diarrhea, the cause is often dehydration (losing too much water from the body). Because diarrhea is watery, it takes away a lot of the water. It also takes away electrolytes—important salts that the body needs to survive. Dehydration is extra dangerous for small children because they have less water in their bodies to begin with. This means they cannot lose as much water as adults before they start to have serious health problems. +Causes. +In developing countries, diarrhea is usually caused by an infection in the intestines. These infections can be caused by bacteria, viruses, or parasites. These infections spread easily in some developing countries because of the following reasons: +Preventing child deaths. +Child deaths from diarrhea can be prevented in different ways. +Re-hydration. +When a child is sick with diarrhea, the best way to keep them from dying is to rehydrate them (give them the water and electrolytes (salts) they are losing by having diarrhea). If the child can go to a clinic or hospital, this can be done by giving water and salts intravenously (through a needle placed into a vein). +If the child cannot go to a clinic or hospital, oral rehydration solution can be used. ("Oral" means "given by mouth"; a "solution" is a mixture.) Oral rehydration solution is a mixture of the most important things the body loses when it is dehydrated. These things are clean water, salt, and sugar. Some oral rehydration solutions have extra electrolytes, like potassium, in them also. +Some oral rehydration solutions come in packets and just need to be mixed with clean water. Oral rehydration solution can also be made at home. If the water in the area is not safe, it can be boiled to make it safe. (Boiling the water will kill any bacteria, viruses, or parasites in the water.) Salt and sugar are then mixed into the water. Drinking this mixture, after the water cools, will re-hydrate the child, if he drinks enough. Adding a banana or orange juice can add potassium to the mixture. +Breast milk will also re-hydrate a child with diarrhea. +Preventing diarrhea. +There are some ways to prevent diarrhea, or the spread of diseases that cause diarrhea. However, some of these ways are expensive and difficult to do. These include: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Dictionary.txt b/.github/workflows/data/simplewiki-500/Dictionary.txt new file mode 100644 index 000000000..399fe5719 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Dictionary.txt @@ -0,0 +1,12 @@ +A dictionary is a type of book which explains the meanings of words or, more precisely, lexemes. The words are arranged in alphabetical order so that they can be found quickly. The word "dictionary" comes from the Latin "dictio" ("saying"). +There are several types of dictionaries: dictionaries which explain words and how they are used, dictionaries which translate words from one language to another, dictionaries of biography which tell about famous people, technical dictionaries which explain the meanings of technical words or words connected to a particular subject (sometimes called a thesaurus). Some of these come close to being an encyclopedia, but an encyclopedia gives a lot of extra information about things (knowledge) and does not explain the use of the language. An encyclopedic dictionary gives less information about the topic than a real encyclopedia does, but more than a simple dictionary. +Dictionaries which explain the meaning of words. +Online dictionaries. +Dictionaries which explain what words mean will give a clear "definition" of the word (e.g. hippopotamus : a hoofed mammal with thick skin, large mouth and short legs that lives in rivers and lakes of Africa.) +A big dictionary will also give more information about the word. It will explain how it is pronounced. Usually the International Phonetic Alphabet is used for this. It will explain how the word is used. This is not a problem for a word like "hippopotamus", but a word like "put" has so many different meanings that a large dictionary may have a whole page or more to explain how it can be used. It will also explain the origin of the word (e.g. Greek "hippos" horse and "potamus" river). +A dictionary may also give the form of the word in different tenses, plural form etc. +Dictionaries which translate into foreign languages. +There are also dictionaries which translate words into foreign languages. Often one volume (one book) will translate both ways; for example, half the book might be translating from English to Dutch and the other half from Dutch to English. +When using a dictionary to find out how to say something in another language one has to be careful to choose the right word. A word like "right" has two basic meanings in English: 1) "correct", and 2) the opposite of "left". Other languages have different words for these different meanings, but they have homonyms of their own. A word like "put" has many meanings. A good dictionary will have a large list of these meanings to help people find the word they want. In many languages, for example, the word “put” will be different according to whether something is being put onto something (e.g. a table) or into something (e.g. a cupboard). +Updating dictionaries. +Dictionaries need to be updated frequently because of the way language changes. New words are often brought into a language (e.g. lots of computer terms) or words change their meanings (e.g. "gay" or "cool"). In this sense, the most famous English Dictionary is the Oxford English Dictionary (or OED). Words are always being added to the OED. They are never taken out even if they are obsolete (not used any more). The OED can be accessed online (with a subscription). \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Diesel-electric.txt b/.github/workflows/data/simplewiki-500/Diesel-electric.txt new file mode 100644 index 000000000..297be495e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Diesel-electric.txt @@ -0,0 +1,7 @@ +A diesel-electric engine is a diesel generator, a diesel engine that drives an electric generator. The generator feeds electric power to an electric motor which turns a driveshaft. Its efficiency is higher than when an engine drives a shaft through gears. Most locomotives and many ships use diesel-electric drive. +Many diesel-electric drives, especially small ones, store the electricity in a battery. Some designs also store braking energy in a flywheel, which can also charge a battery. However, these add even more complexity and weight to the vehicle, so are more appropriate for city driving where service stations are always available and there is much stop and go driving. +Because they do not require any change or investment in stations nor much in vehicle design, diesel-electric vehicles are believed to be the most likely replacement for today's internal combustion engine. When properly tuned, they have low emissions and they use only about one-third of the fossil fuel of most gasoline engines powering similar vehicles. +Honda and Toyota are presently delivering consumer priced diesel-electric cars. By contrast, hydrogen infrastructure is thought to be decades off, and is not fully implemented even in Iceland where there is abundant free geothermal electricity. +In countries like India, government is focusing on fully electric trains rather than diesel electric. That too electricity will be produced by renewable sources like Solar. +Many activists feel that promoting hydrogen is a stall, a way to avoid forcing the shift to diesel-electric vehicles in the nearer term. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Dimension.txt b/.github/workflows/data/simplewiki-500/Dimension.txt new file mode 100644 index 000000000..df5440351 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Dimension.txt @@ -0,0 +1,11 @@ +Dimensions are the way we see, measure and experience our world, by using up and down, right to left, back to front, hot and cold, how heavy and how long, as well as more advanced concepts from mathematics and physics. One way to define a dimension is to look at the degrees of freedom, or the way an object can move in a specific space. There are different concepts or ways where the term dimension is used, and there are also different definitions. There is no definition that can satisfy all concepts. +In a vector space formula_1 (with vectors being "arrows" with directions), the dimension of formula_1, also written as formula_3, is equal to the cardinality (or number of vectors) of a basis of formula_1 (a set which indicates how many unique directions formula_1 actually has). It is also equal to the number of the largest group of straight line directions of that space. "Normal" objects in everyday life are specified by three dimensions, which are usually called length, width and depth. Mathematicians call this concept Euclidean space. +Dimensions can be used to measure position too. The distance to a position from a starting place can be measured in the length, width and height directions. These distances are a measure of the position. +In some occasions, a fourth (4D) dimension, time, is used to show the position of an event in time and space. +Other Dimensions. +In modern science, people use other dimensions. Dimensions like temperature and weight can be used to show the position of something in less simple spaces. Scientist study those dimensions with dimensional analysis. +Mathematicians also use dimensions. In mathematics, dimensions are more general. Dimensions in mathematics might not measure things in the world. The rules for doing arithmetic with dimensions in mathematics might be different than usual arithmetic rules. +Dimensions and vectors. +Vectors are used to show distances and directions. Vectors are often used in engineering and science, and sometimes in mathematics. +A vector is a list of numbers. There is one number for each dimension. There are arithmetic rules for vectors. +For example, if Jane wants to know the position of Sally, Sally can give Jane a vector to show the position. If Jane and Sally are in the world, there are three dimensions. Therefore, Sally gives Jane a list of three numbers to show her position. The three numbers in the vector Sally gives Jane might be: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Dimensions.txt b/.github/workflows/data/simplewiki-500/Dimensions.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Dissolution of the monasteries.txt b/.github/workflows/data/simplewiki-500/Dissolution of the monasteries.txt new file mode 100644 index 000000000..09595d94c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Dissolution of the monasteries.txt @@ -0,0 +1,6 @@ +The dissolution of the monasteries was an event that happened from 1536 to 1540, when English King Henry VIII took away the land and money that the nuns and monks of the Roman Catholic church owned. Henry VIII then gave this land and money to people that supported him. +This was also when Henry VIII made himself the new head of the Church of England (which is a type of Christianity). Parliament made the Act of Supremacy to give him the right to do both these things. It was part of the Protestant Reformation in England. +Listen to this article · <br> +This audio file was created from an article revision dated 19 July 2006, and does not play the most recent changes to the article. () +More spoken articles + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Distance.txt b/.github/workflows/data/simplewiki-500/Distance.txt new file mode 100644 index 000000000..b1be6d0da --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Distance.txt @@ -0,0 +1,4 @@ +Distance is how far one thing is from another thing. It is also a measure of the space between two things. It can be measured along any path. Thus, someone who goes around in a circle has traveled a distance, even though his position has not changed. +In geometry, the distance between two points "A" and "B" is sometimes written as formula_1. Pythagorean theorem is often used in the calculation of distance. Distance is a scalar, and thus is different from displacement. Displacement is a vector that measures distance with a straight line (and in only one path). Displacement is the shortest way to travel the distance. +References. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Dublin.txt b/.github/workflows/data/simplewiki-500/Dublin.txt new file mode 100644 index 000000000..a1d5f2abf --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Dublin.txt @@ -0,0 +1,11 @@ +Dublin () is the capital of the Republic of Ireland, and the biggest city on the island of Ireland. In 2011, there were over 1.1 million people living in the Greater Dublin Area. +Dublin was built by the Vikings upon the river Liffey. The river divides the city into two parts, North Dublin and South Dublin. +Many famous writers lived in Dublin. Oscar Wilde and George Bernard Shaw were born in Dublin. James Joyce is probably Dublin's best known and most international writer. +Dublin is home to Ireland's largest stadium for all sports, Croke Park. It can hold up to 85,000 people. Croke Park is the usual venue for all Ireland hurling and football finals. The Aviva Stadium hosts rugby and soccer. +Notes. +<templatestyles src="Reflist/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> +Other websites. + "This about a  can be made longer. You can help Wikipedia by [ adding to it]". + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Dutton's Speedwords.txt b/.github/workflows/data/simplewiki-500/Dutton's Speedwords.txt new file mode 100644 index 000000000..5427f6e32 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Dutton's Speedwords.txt @@ -0,0 +1,6 @@ +Dutton Speedwords is a made-up language written by Reginald John Garfield Dutton. The idea of Dutton Speedwords is to make frequent words short, and very frequent words very short. Dutton Speedwords can be used as a second language for international communications. Dutton Speedwords is also a shorthand writing system – this means you can use it to write quickly. +The method was made up by Reginald John Garfield Dutton (1886-1970) in 1922. It was first published in 1935. It was called "International Symbolic Script". A year later, it was called "Speedwords". It was changed in 1946 and 1951. +It has two uses; to be a language and to be used for writing quickly. Dutton hoped that this would mean more people would learn it because they could use it for two reasons. +The books that Dutton wrote about Speedwords are not printed anymore. But Speedwords is now being used by more people because they find it is good for working online. For example, it makes it faster to type an email. +Another way of writing quickly is Pitman's shorthand. This uses special symbols instead of letters. Speedwords uses Roman letters. This makes it easier to learn. It also means it can be typed using a normal keyboard. Each word means only one thing. This means you do not need to use different forms of the same word. +The words used in Speedwords are the same as the words used in many other languages. The words are like short versions of the writer's own language. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/E Prime.txt b/.github/workflows/data/simplewiki-500/E Prime.txt new file mode 100644 index 000000000..6e87a0b94 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/E Prime.txt @@ -0,0 +1,9 @@ +E Prime (it means English Prime) defines a way of speaking English without using the verb "to be" in any way ("be, is, am, are, was, were, been, and being"). Instead, an E Prime speaker or writer uses different verbs like "to become," "to remain," and "to equal" or they might choose to rearrange the sentence to show that the "thing" does not actually "act". For example, in E Prime, a writer would change the statement "Mistakes were made" to "Joe made mistakes." This change in wording reveals an actor (Joe) where the previous form concealed the actor. Users of E Prime would consider the changed sentence more accurate. +What E Prime is. +D. David Bourland, Jr. first suggested E Prime in 1965. Bourland had studied the discipline (way of thinking) of General Semantics. The main idea of General Semantics is that people can only know what they observe and experience when they see, hear, touch, taste, smell, think, and feel, and furthermore, that what they observe and experience can affect how they observe and experience in the future. Because each person has different experiences throughout their lives, they interpret their experiences differently. +Students of General Semantics and users of E Prime contend that to say "This cat is soft" leaves out many other attributes, and implies that the outside "object" of the cat is the "same as" the inside experience of "softness". Instead, E Prime users say "This cat feels soft TO ME" to remind themselves of the following: +What E Prime is not. +Although languages like Russian, Arabic, Turkish, and Cantonese do not always use a separate verb for "to be," they do have the idea of "being." For example, an English speaker might say "This apple is red." An Arabic speaker might say "This apple red." Most languages can be used to express the idea of a red apple. An E Prime user chooses to say "This apple looks red to me" to remind themselves that "seeing red" involves both the apple and the eye and brain of the person looking at the apple. +Many teachers of English encourage students to use verbs other than "to be." To them, using more active verbs makes writing clearer and more interesting. These teachers want to improve their students' writing and may not agree with the ideas of General Semantics or E Prime. +Different functions of 'to be'. +In English, 'to be' can have different functions: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/EAL.txt b/.github/workflows/data/simplewiki-500/EAL.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/ESL.txt b/.github/workflows/data/simplewiki-500/ESL.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Earth science.txt b/.github/workflows/data/simplewiki-500/Earth science.txt new file mode 100644 index 000000000..b606f3295 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Earth science.txt @@ -0,0 +1,7 @@ +Earth science is an all-embracing term for the sciences related to the planet Earth. Earth science may also be called geoscience. Geoscience is the study of the architecture of the Earth. +It is a broader term than geology because it includes aspects of planetary science, which is part of astronomy. The Earth sciences include the study of the atmosphere, oceans and biosphere, as well as the solid earth. Typically Earth scientists use ideas from physics, chemistry, biology, chronology and mathematics to understand the Earth, and how it evolved to its current state. +If there is one fact which underlies all Earth science it is this: the Earth is an ancient planet which has been changing the whole time since its formation. The extent of the changes is much greater than people used to think. +Fields of study. +The following disciplines are generally recognised as being within the geosciences: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Earth.txt b/.github/workflows/data/simplewiki-500/Earth.txt new file mode 100644 index 000000000..3274b6134 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Earth.txt @@ -0,0 +1,56 @@ +Earth is the third planet from the Sun in the Solar System. It is the only planet known to have life on it. +The Earth formed about 4.6 billion years ago. +It is one of four rocky planets on the inner side of the Solar System. The other three are Mercury, Venus, and Mars. +The large mass of the Sun keeps the Earth in orbit through the force of gravity. Earth also turns around in space, so that different parts face the Sun at different times. Earth goes around the Sun once (one year) for every 365​1⁄4 times it turns around (one day). +Earth is the only planet in the Solar System that has a large amount of liquid water on its surface. About 71% of the surface of Earth is covered by liquid or frozen water. Because of this, people sometimes call it the blue planet. +Because of its water, Earth is home to millions of species of plants and animals which need water to survive. The things that live on Earth have changed its surface greatly. For example, early cyanobacteria changed the air and gave it oxygen. The living part of Earth's surface is called the "biosphere". +Orbit and turning. +Earth is one of the eight planets in the Solar System. There are also thousands of small bodies which move around the Sun. The Solar System is moving through the Orion Arm of the Milky Way galaxy, and will be for about the next 10,000 years. +Earth is about away from the Sun (this distance is called an "astronomical unit" or au. It moves on its orbit at an average speed of about . Earth turns around about 365​1⁄4 times in the time it takes for Earth to go all the way around the Sun. To make up this extra bit of a day every year, an additional day is used every four years. This is called a "leap year". +The Moon goes around Earth at an average distance of . It is locked to Earth, so that it always has the same half facing Earth; the other half is called the "dark side of the moon". It takes about 27​1⁄3 days for the Moon to go all the way around Earth, but because Earth is moving around the Sun at the same time, it takes about 29​1⁄2 days for the Moon to go from dark to bright to dark again. This is where the word "month" came from, even though most months now have 30 or 31 days. +History of Earth. +Earth and the other planets formed about 4.6 billion years ago. Their origin was different from that of the Sun. The Sun was formed almost entirely of hydrogen, while the planets were formed mostly from higher elements. The smaller "rocky" planets are made almost entirely of higher elements. The Sun must have moved through areas where supernovae had previously exploded. All the planets have higher elements which are only made in supernovae. Only the so-called "gas giants" have much hydrogen and helium. +The Moon may have been formed after a collision between the early Earth and a smaller planet (sometimes called "Theia"). Scientists believe that parts of both planets broke off – becoming (by gravity) the Moon. +Earth's water came from different places. Condensing water vapour, and comets and asteroids hitting Earth, made the oceans. Within a billion years (that is at about 3.6 billion years ago) the first life evolved, in the Archaean era. Some bacteria developed photosynthesis, which let them make food from the Sun's light and water. This released a lot of oxygen, which was first taken up by iron in solution. After a long time, enough oxygen got into the atmosphere or air, making Earth's surface suitable for aerobic life (see Great Oxygenation Event). This oxygen also formed the ozone layer which protects life from ultraviolet radiation from the Sun. Complex life on the surface of the land did not exist before the ozone layer. +Earth's land and climate has been very different in the past. About 3 to 3.5 billion years ago almost all land was in one place. This is called a supercontinent. The earliest known supercontinent was called Vaalbara. Much later, there many times the Earth was covered in ice sheets. (For example, the Cryogenian). This is called the Snowball Earth theory. +Geology of Earth. +Earth is rocky. It is the largest of the rocky planets moving around the Sun by mass and by size. It is much smaller than the gas giants such as Jupiter. +Chemical make-up. +Overall, Earth is made of iron (32.1%), oxygen (30.1%), silicon (15.1%), magnesium (13.9%), sulfur (2.9%), nickel (1.8%), calcium (1.5%), and aluminium (1.4%). The 1.2% left over is made of many different kinds of other chemicals. Some rare metals (not just gold and platinum) are very valuable. Rare earth metals are often used in electronic phones and computers. +The structure of Earth changes from the inside to the outside. The center of Earth (Earth's core) is mostly iron (88.8%), nickel (5.8%), sulfur (4.5%), and less than 1% other elements. The [[Earth's crust] is largely [[oxygen]] (47%). Oxygen is normally a gas but it can [[oxide|join]] with other [[chemicals]] to make [[chemical compound|compounds]] like [[water]] and rocks. 99.22[[percent|%]] of rocks have [[oxygen]] in them. The most common rocks with oxygen are [[silica]] (made with [[silicon]]), [[alumina]] (made with [[aluminum|aluminium]]), [[rust]] (made with [[iron]]), [[lime (chemical)|lime]] (made with [[calcium]]), [[magnesia]] (made with [[magnesium]]), [[potash]] (made with [[potassium]]), and [[sodium]] oxide. +Being rich in [[metal]]s such as [[iron]], the Earth is the [[density|densest]] of all the planets. [[Mercury]] and [[Venus]] are slightly less dense. +Shape. +[[Geoid|Earth's shape]] is a [[spheroid]]: not quite a [[sphere]] because it is slightly [[oblate|squashed]] on the top and bottom. The shape is called an [[oblate spheroid]]. As Earth spins around itself, [[centrifugal force]] forces the [[equator]] out a little and pulls the [[geographical pole|poles]] in a little. The equator, around the middle of Earth's surface, is about long. The reason the Earth is roughly a [[sphere]] (and so are all planets and stars) is [[gravity]]. Meteorites, on the other hand may be any shape because, in their case, the force of gravity is too weak to change their shape. +The highest mountain above [[sea level]]—the well-known [[Mount Everest]] (which is [[elevation|above sea level]])—is "not" actually the one that is the farthest away from the center of the Earth. Instead, the sleeping [[volcano]] [[Mount Chimborazo]] in [[Ecuador]] is; it is only [[elevation|above sea level]] but it is almost at the [[equator]]. Because of this, Mount Chimborazo is from the center of the Earth, while [[Mount Everest]] is closer to it (). Similarly, the lowest point below sea level that we are conscious of is the [[Challenger Deep]] in the [[Mariana Trench]] in the [[Pacific Ocean]]. It is about [[depth|below sea level]], but, again, there are probably places at the bottom of the [[Arctic Ocean]] that are nearer to the center of the Earth. +Earth’s core. +[[File:Earth-crust-cutaway-english.svg|thumb|right|220px|A picture of the inside of the Earth, showing the different levels. In fact, the air and the outside levels are much thinner than shown here]] +The [[Kola superdeep borehole|deepest hole ever dug]] is only about . We know something about the inside of the Earth, because we learn things from [[earthquake]]s and [[volcanic eruptions]]. We can detect how quickly [[shock wave]]s move through the Earth. +The inside of Earth is very different from the outside. Almost all of Earth's liquid water is in the [[ocean|sea]]s or close to the surface. The surface also has a lot of [[oxygen]], which comes from plants. Small and simple kinds of life can live far under the surface, but animals and plants only live on the surface or in the seas. The rocks on the surface of Earth ([[Earth's crust]]) are well known. They are thicker where there is land, between thick. Under the [[ocean|sea]]s they are sometimes only thick. +There are three groups of rocks that make up most of the Earth's crust. Some rock is made when the hot liquid rock comes from inside the earth ([[igneous rock]]s); another type of rock is made when [[sediment]] is laid down, usually under the sea ([[sedimentary rock]]s); and a third kind of rock is made when the other two are changed by very high [[temperature]] or [[pressure]] ([[metamorphic rock]]s). +Below the crust is hot and almost-[[liquid]] rock which is always moving around (the [[Earth's mantle]]). Then, there is a thin liquid layer of heated rock (the [[outer core]]). This is very hot: . The middle of the inside of the Earth would be liquid as well but all the pressure of the rock above it makes it a solid. This solid middle part (the [[inner core]]) is almost all [[iron]]. It is what makes the Earth [[magnetic field|magnetic]]. +Pieces of the crust form plates. +[[File:Plates tect2 en.svg|thumb|right|A [[map|picture]] showing the Earth's largest and most important plates.]] +The [[Earth's crust]] is solid but made of [[plate tectonics|parts]] which move very slowly. The thin skin of hard rock on the outside of the Earth rests on hot liquid material below it in the deeper [[mantle (geology)|mantle]]. This liquid material moves because it gets heat from the hot center of the Earth. The slow movement of the plates is a factor in [[earthquake]]s, [[volcano]]es and large groups of mountains on the Earth. +There are three ways plates can come together. Two plates can move towards each other ("convergent" plate edges). This can form [[island]]s, [[volcanoes]], and high [[mountain range]]s (such as the [[Andes]] and [[Himalayas]]). Two plates can move away from each other ("divergent" plate edges). This gives the [[magma|warm liquid rock inside the earth]] a place to come out. This makes [[mid-ocean ridge|special mountain range]]s below the sea or large low lands like [[Africa]]'s [[Great Rift Valley]]. Plates are able to move beside each other as well ("transform" plate edges, such as the [[San Andreas Fault]]). This makes their edges crush against each other and makes many [[earthquakes|shocks as they move]]. +Surface. +The outside of the Earth is not even. There are high places called [[mountain]]s, and high flat places called [[plateau]]s or plateaux. There are low places called [[valley]]s and [[canyon]]s. For the most part, moving [[wind|air]] and [[rain|water from the sky]] and [[tide|sea]]s [[erosion|eats away at rocks in high places and breaks them into small pieces]]. The air and water then move these pieces to lower places. The fundamental cause of the differences in the Earth's surface is [[plate tectonics]]. The shape of the entire planet itself is not a exactly a ball. Because of its spin, Earth has a slight [[bulge]] at the [[Equator]]. +All places on Earth are made of, or are on top of, rocks. The outside of the Earth is usually not uncovered rock. Over 70[[percent|%]] of the Earth is covered by [[ocean|sea]]s full of [[salt]]y water. This salty water makes up about 97​1⁄2[[percent|%]] of all Earth's water. The drinkable [[fresh water]] is mostly in the form of [[ice]]. There is only a small amount (less than 3%) of fresh water in [[river]]s and under the ground for people to drink. Gravity stops the water from going away into [[outer space]]. Also, much of the land on Earth is covered with plants, or with what is left from earlier living things. Places with very little rain are dry wastes called [[desert]]s. Deserts usually have few living things, but life is able to grow very quickly when these wastes have rainfall. Places with large amounts of rain may be [[rain forests]]. Lately, people have changed the [[environment]] of the Earth a great deal. As population has increased, so has farming. Farming is done on what were once natural forests and grassland. +Air. +All around the Earth is the of air (the [[atmosphere]]). The mass of the Earth holds the [[gas]]ses in the air down and does not let them go into outer space. The air is mostly made of [[nitrogen]] (about 78[[percent|%]]) and [[oxygen]] (about 21[[percent|%]]) and there are a few other gasses as well. Living things need both the air and water. +The air, which animals and plants use to live, is only the first level of the air around the Earth (the [[troposphere]]). The day to day changes in this level of air are called [[weather]]; the larger differences between distant places, and from year to year, are called the [[climate]]. [[Rain]] and [[storm]]s come about because this part of the air gets colder as it goes up. [[convection|Cold air becomes thicker and falls, and warm air becomes thinner and goes up]]. The turning Earth also moves the air as well and air moves north and south because the middle of the Earth generally gets more power from the Sun and is warmer than the north and south points. Air over warm water [[evaporation|evaporates]] but, because cold air is not able to take in as much water, it starts to make [[cloud]]s and [[rain]] as it gets colder. The way water moves around in a circle like this is called the [[water cycle]]. +Above this first level, there are four other levels. The air gets colder as it goes up in the first level; in the second level (the [[stratosphere]]), the air gets warmer as it goes up. This level has a special kind of [[oxygen]] called [[ozone]]. The [[ozone]] in this air keeps living things safe from [[ultraviolet radiation|damaging rays from the Sun]]. The power from these rays is what makes this level warmer and warmer. The middle level (the [[mesosphere]]) gets colder and colder with height; the fourth level (the [[thermosphere]]) gets warmer and warmer; and the last level (the [[exosphere]]) is almost outer space and has very little air at all. It reaches about half the way to the Moon. The three outer levels have a lot of [[electricity|electric power]] moving through them; this is called the [[ionosphere]] and is important for [[radio]] and other electric waves in the air. +Even though air seems very light, the weight of all of the air above the outside of the Earth ([[air pressure]]) is important. Generally, from [[sea level]] to the top of [[exosphere|the outer level of the air]], a space of air one [[square centimeter|cm2]] across has a mass of about 1.03 [[kilogram|kg]] and a space of air one [[square inch|sq in]] across has a weight of about 14.7 [[Pound (mass)|lb]]. Because of friction in the air, small meteorites generally burn up long before they get to the Earth. +The air also keeps the Earth warm, specially the half turned away from the Sun. Some gasses – especially [[methane]] and [[carbon dioxide]] – [[greenhouse effect|work like a blanket to keep things warm]]. [[#History of Earth|In the past]], the Earth has been much warmer and much colder than it is now. Since people have adapted to the heat we have now, we do not want the Earth to be too much warmer or colder. Most of the ways people create [[electricity|electric power]] use burning kinds of [[carbon]] – especially [[coal]], [[oil]], and [[natural gas]]. Burning these fuels creates more [[carbon dioxide]] which causes more warming. A [[climate change|discussion]] is going on now about what people should do about [[global warming|the Earth's latest warming]], which has gone on for about 150 years. So far, this warming has been acceptable: plants have grown better. The weather has generally been better than [[Little Ice Age|when it was colder]]. +People. +About eight [[1,000,000,000|billion]] people live on Earth. They live in about 200 different lands called [[countries]]. Some, for example, [[Russia]], are large with many large cities. Others, for example, [[Vatican City]], are small. The seven countries with the most people are [[India]], [[China]], the [[United States]], [[Indonesia]], [[Pakistan]], [[Brazil]] and [[Nigeria]]. About 90% of people live in the [[northern hemisphere]] of the world, which has most of the land. Human beings originally came from [[Africa]]. Now, 70% of all people do not live in Africa but in [[Europe]] and [[Asia]]. +[[File:Population_density.png|link=https://en.wikipedia.org/wiki/File:Population_density.png|alt=|thumb|center|350px|The distribution of human [[world population]] in 2018]] +People change the Earth in many ways. They have been able to grow plants for food and clothes for about ten thousand years. When there was enough food, they were able to build towns and cities. Near these places, men and women were able to change rivers, [[irrigation|bring water to farms]], and stop [[flood]]s (rising water) from coming over their land. People found useful animals and [[domestication|bred]] them so they were easier to keep. +Future. +There is wide agreement that the long-term future of Earth is tied to the future of the [[Sun]]. As time passes, the Sun will get hotter, and that will eventually make the Earth a planet without life. +Related pages. +<templatestyles src="Div col/styles.css"/> +References. +<templatestyles src="Reflist/styles.css" /> +Other websites. +[[Category:Basic English 850 words]] +[[Category:Earth| ]] \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Ebola virus.txt b/.github/workflows/data/simplewiki-500/Ebola virus.txt new file mode 100644 index 000000000..165bd5408 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Ebola virus.txt @@ -0,0 +1,25 @@ +Ebola virus or Ebola virus disease (EVD), often shortened to Ebola, is a very dangerous virus. It belongs to the family "Filoviridae." Four different types of Ebola virus can cause a severe disease which is often fatal. Ebola infection causes hemorrhagic fever which starts suddenly. "Hemorrhagic" means that the victim will bleed a lot, inside and outside of their body. The virus attacks almost every organ and tissue of the human body, causing multiple organs to fail at once. Out of every 100 people who get Ebola, on average 25 to 90 die. +The virus was first found in Sudan. It is mostly found in Africa, with very few cases in Europe and the United States. +Transmission. +The Ebola virus that makes people sick lives in the blood and other liquids and organs in some kinds of non-human animals without killing them. Scientists think the animals it lives in are mainly some kinds of monkeys or fruit bats. When people touch animals that have the virus, or secretions that came out of those animals, they can get sick. +Ebola cannot be caught through the air, or by being near sick people. The virus can only go from liquids into people's bodies. This means Ebola can be caught by touching a sick person's blood, saliva, mucus, semen, diarrhea, vomit, or other fluids that come out of a sick person's body. +If a person does not die from the disease, he can still give other people the infection by having sex for nearly another two months after they stop being sick. This is because the virus can still be in the man's semen after a long time. +1. Once the virus enters the human body via mucosal surfaces, abrasions or injuries in the skin or by direct parental transmission, it fuses with the cells lining the respiratory tract, eyes, or body cavities. +2. It invades the macrophages and dendritic immune cells and releases its genetic content. The cell explosion triggers the secretion of proinflammatory cytokines initiating a ‘cytokine storm’. The genetic material takes over the cell machinery to replicate itself; new copies of the virus are formed and released into the system. +3. The virus then, goes on to attack spleen, kidneys and even the brain. The blood vessels leak blood and fluid into the surrounding tissues. This atypical clotting and bleeding at the same time manifests externally in the form of rashes. +4. The virus causes the shutdown of other vital organs such as liver and lungs too. In fact, it is able to invade almost all human cells through different attachment mechanisms for each cell type (except for lymphocytes). The very cells that are meant to fight infection are used as carriers to spread infection to other body parts +5. It has been found that the ebola-infected cells do not undergo normal apoptosis, but exhibit vacuolization and signs of necrosis. +Symptoms. +The symptoms of Ebola disease can develop between 2 to 21 days after a person is infected with the virus. When people get Ebola, the first symptoms may look like other diseases. People may develop "dry" symptoms such as fever, fatigue, weakness, sore throat, joint pain and headache. Sometimes, people think they may have malaria or typhoid fever. +Eventually, individuals get much sicker and experience "wet" symptoms of nausea, vomiting, diarrhea, and belly pain. They may also start to have unexplained bleeding inside and outside the body which can include having blood in the stool, blood in vomit.As the disease progresses, people can go into shock from excess fluid loss which which mean low blood pressure, fast pulse (heart rate), and low blood circulation to the body leading to organ failure. +Treatment. +Currently there are two medications approved by the United States Food and Drug Administration (FDA) to treat Ebola Disease: Inmazeb and Ebanga. These medications are made up of monoclonal antibodies. Monoclonal antibodies are a type of protein that are made in the lab. When these medications are used to treat Ebola, they help the body's natural defense system to stop the virus from multiplying in the body. +People with Ebola also need supportive care to relieve symptoms. Lots of fluid and electrolytes are given to replace the fluids lost from diarrhea, vomiting, and bleeding. Fluid can be given by mouth or through an IV which is a special tube that goes into veins the arm. This process of giving fluid back into the body is called fluid replacement therapy. It is also important to give blood transfusions and medicine in the case of low blood pressure which is a complication of fluid loss. Medicines can also be given to stop vomiting and diarrhea and to help reduce fever and pain. +Prevention. +To prevent the spread of the Ebola virus during ongoing outbreaks, it is important to practice hand washing and avoid coming into close contact with the body fluids of infected individuals.This includes blood, tears, saliva, semen, sweat, vomit, urine, feces, breast milk and fluid from infected women during labor. In addition, people should avoid contact with items that may have been contaminated with body fluids such as, utensils, clothes, bedding, needles, and medical tools. Individuals with the virus can be separated from those without the virus to reduce the spread of the disease. When in close contact with a person infected with the virus, it is recommended to wear special protective clothing known as personal protective equipment (PPE). The personal protective equipment requires wearing gloves, gowns, protective eye wear, masks and closed-toe shoes. +Many Ebola vaccine candidates had been developed in the decade prior to the West African Ebola epidemic in 2014, but none had yet been approved for use in humans. The Ebola Zaire vaccine also known by its brand name ERVEBO was the first vaccine approved by the FDA in December 2019.The vaccine helps to protect against the Zaire Ebola virus, one of the virus types that causes deadly Ebola Disease. ERVEBO is a single dose vaccine and is safe for individuals aged 12 months and older who at risk of infection. Although the vaccine has been given to pregnant and breastfeeding women in past outbreaks, the vaccine has not been approved for these specific groups. Several countries in Africa have successfully used the vaccine since it was approved including Zambia, Burundi, Ghana, and the Democratic Republic of Congo. +Another approved vaccine is Zabdeno / Mvabea. This vaccine is a combination vaccine also used against the Zaire Ebola virus. +Research. +World Community Grid is a computing project that is seeking possible drug treatments. People donate the spare time on their computers to the project. +Reference. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Ecological yield.txt b/.github/workflows/data/simplewiki-500/Ecological yield.txt new file mode 100644 index 000000000..136d75aa9 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Ecological yield.txt @@ -0,0 +1,2 @@ +Ecological yield is the harvestable growth of an ecosystem. It is most commonly measured in forestry - in fact sustainable forestry is defined as that which does not harvest more wood in a year than has grown in that year, within a given patch of forest. +However, the concept is also applicable to water, and soil, and any other aspect of an ecosystem which can be both harvested and renewed - the so-called renewable resources. The carrying capacity of an ecosystem is reduced over time if more than the amount which is "renewed" (refreshed or regrown or rebuilt). \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Ecology.txt b/.github/workflows/data/simplewiki-500/Ecology.txt new file mode 100644 index 000000000..0930baaf6 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Ecology.txt @@ -0,0 +1,21 @@ +Ecology is the branch or aspect of biology that studies the biota (living things), the environment, and their interactions. It comes from the Greek "oikos" = house; "logos" = study. +Ecology is the study of ecosystems. Ecosystems describe the web or network of relations among organisms at different scales of organization. Since ecology refers to any form of biodiversity, ecologists research everything from tiny bacteria in nutrient recycling to the effects of tropical rain forests on the Earth's atmosphere. Scientists who study these interactions are called "ecologists". +Terrestrial ecoregion and climate change research are two areas where ecologists now focus. +There are many practical applications of ecology in conservation biology, wetland management, natural resource management (agriculture, forestry, fisheries), city planning (urban ecology), community health, economics, and applied science. It provides a framework for understanding and researching human social interaction. +Population ecology. +Population ecology measures the size of a population: all the living things from one species that live in an place. A population gets bigger because of birth and movement into a place, and it gets smaller because of death and movement out of a place. Growth rate is the change in population size divided by the current population size. When a population is small, growth rate does not change, so the population shows exponential growth.688-691 Rate of exponential growth depends on how a living thing reproduces. If it has only a few offspring (children) which grow slowly, like a human, the rate will be low. If it has a lot of offspring which grow quickly, like a fruit fly, the rate will be high. Any environment only has enough natural resources, such as food, water, or space, for a certain size of population. This size is called the carrying capacity. When population size is near the carrying capacity, growth rate will become less. The graph of population growth will be an S-shape, called logistic growth.688-691 +Community and ecosystem ecology. +A community is all populations of different species that live in the same place.5 An ecosystem is a community and its environment. Ecosystem ecology studies how energy and nutrients move through an ecosystem. All living things need energy to survive, move, grow, and reproduce. A trophic level is the number of times energy moves from one living thing to another, before reaching a particular living thing. The first trophic level, called producers or autotrophs, gets energy from the environment. They use the energy to make organic compounds. Most producers, such as plants, take in energy from sunlight, but some take it from inorganic compounds. Other trophic levels, called consumers or heterotrophs, get their energy by eating other living things. All animals are consumers, and there are three kinds: herbivores, carnivores, and omnivores. Herbivores eat only plants, carnivores eat only other animals, and omnivores eat both. Decomposers are living things which break down dead things. A food web shows the movement of energy in an ecosystem.732-733 +Humans and ecology. +Ecology in politics. +Ecology starts many powerful philosophical and political movements - including the conservation movement, wellness movement, environmental movement, and ecology movement we know today. When these are combined with peace movements and the Six Principles, they are called green movements. In general, these put ecosystem health first on a list of human moral and political priorities, as the way to achieve better human health and social harmony, and better economics. +People with these beliefs are called political ecologists. Some have organized into the Green Parties, but there are actually political ecologists in most political parties. They very often use arguments from ecology to advance policy, especially forest policy and energy policy. +Also, ecology means that it is the branch of biology dealing with the relations and interactions between organisms and their environment, including other organisms. +Ecology includes economics. +Many ecologists also deal with human economics: +Ecological economics and human development theory try to separate the economic questions from others, but it is difficult. Many people think economics is just part of ecology now, and that economics that ignores it is wrong. "Natural capital" is an example of one theory combining both. +Ecology and anthropology. +Sometimes ecology is compared to anthropology. Anthropology includes how our bodies and minds are affected by our environment, while ecology includes how our environment is affected by our bodies and minds. There is even a type of anthropology called ecological anthropology, which studies how people interact with the environment. +Antoine de Saint-Exupery stated: "The earth teaches us more about ourselves than all the books. Because it resists us. Man discovers himself when he measures himself against the obstacle". +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Economics.txt b/.github/workflows/data/simplewiki-500/Economics.txt new file mode 100644 index 000000000..991b474d9 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Economics.txt @@ -0,0 +1,19 @@ +Economics is the social science which studies economic activity: how people make choices to get what they want. It has been defined as "the study of scarcity and choice" and is basically about the choices people make. It also studies what affects the production, distribution and consumption of goods and services in an economy. +Investment and income relate to economics. The word comes from Ancient Greek, and relates to οἶκος oíkos "house" and νόμος nomos "custom" or "law". The models used in economics today were mostly started in the 19th century. People took ideas from political economy and added to them because they wanted to use an empirical approach similar to the one used in the natural sciences. +Subjects and objects in economics. +The subjects (actors) in economic study are households, business companies, the government (the state), and foreign countries. Households offer their "factors of production" to companies. This includes labor ,land, capital (things like machines and buildings) and information. In exchange for their factors of production, households get income which they use to consume (buy) goods from firms representing consumption expenditure. +Business companies produce and sell goods and services and buy factors of production from households and from other companies. +The state or public sector includes institutions and organisations. The state takes some of the earnings from the business companies and households, and uses it to pay for "public goods" like street lights or defense systems, to be available for everyone. The last subject is foreign countries. This includes all households, business companies and state institutions, which are not based in one's own country. They demand and supply goods from abroad. +The objects (things acted upon) in economic study are consumer goods, capital goods, and factors of production. Consumer goods are classified as "usage goods" (for example, gasoline or toilet paper), as "purpose goods" (for example, a house or bicycle), and as "services" (for example, the work of a doctor or cleaning lady). Capital goods are goods which are necessary for producing other goods. Examples of these are buildings, equipment, and machines. Factors of production are work, ground, capital, information, and environment. +History. +The ideas that economists have depend a lot on the times they live in. For example, Karl Marx lived in a time when workers' conditions were very poor, and John Maynard Keynes lived through the Great Depression of the 1930s. Today's economists can look back and understand why they made their judgments, and try to make better ones. +Branches of economics. +The two main branches of economics are microeconomics and macroeconomics. +Macroeconomics is about the economy in general. For example, macroeconomists study things that make a country's wealth go up and things that make millions of people lose their jobs. Microeconomics is about smaller and more specific things such as how families and households spend their money and how businesses operate. +There are a number of other branches of economics: +<templatestyles src="Div col/styles.css"/> +Famous economists. +Famous economists in history include: +Famous economists of the 19th and 20th century include Friedrich August von Hayek, Wassily Leontief, Carl Menger, and Léon Walras. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Editor.txt b/.github/workflows/data/simplewiki-500/Editor.txt new file mode 100644 index 000000000..8ca762ef0 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Editor.txt @@ -0,0 +1,3 @@ +An Editor is a person who makes "edits" (changes) to documents. +More specifically the word "editor" can mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Egypt.txt b/.github/workflows/data/simplewiki-500/Egypt.txt new file mode 100644 index 000000000..ca2551e48 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Egypt.txt @@ -0,0 +1,36 @@ +Egypt, officially the Egyptian Republic is a country located mostly in northeast Africa but partly in the Middle East. Egypt's capital city is Cairo. Egypt is famous for its ancient monuments, such as the Pyramids and the Sphinx. +History. +Ancient Egypt has one of the longest histories of any country in the world as it used to be ruled by pharaohs. As a province of the Roman Empire, it became Christian and some Copts remained despite over a thousand years of Muslim rule. The Fatimid Caliphate ruled Egypt in the tenth through twelfth centuries. Mamlukes ruled it until 1798 when Napoleon defeated them. Muhammad Ali Pasha soon took over and started a dynasty of Khedives under the Ottoman Empire. The Empire fell apart after World War I. Egypt became an independent country in 1922 and the khedive became a king. Egypt is a member of the United Nations and the Arab League. It became a republic after the Army's revolution of 1952. +Geography. +Egypt is a large country, but a large portion of it is desert. Most people (95% of Egypt's total people) live in areas around the coast of the Mediterranean Sea and along the Nile River. This includes the cities of Cairo, Alexandria, Aswan, and Port Said. Not many people live in the desert. Today, Egypt has about 90 million people. +Egypt is divided into 29 areas, called Governorates of Egypt. +Politics. +Egypt is a country that has had many different rulers and many political systems. After World War II, Egypt was still ruled by a king, Farouk of Egypt (11 February 1920 – 18 March 1965). He was the last ruler of the Muhammad Ali dynasty. +Farouk was overthrown on 23 July 1952 by a military coup. The coup was led by Muhammad Naguib, and Gamal Abdel Nasser. From then on, Egypt had military rulers or rulers who had the backing of the army and many citizens. +Nasser became president, from 1956 to 1970. Later rulers were Anwar Sadat, and Hosni Mubarak. +Abdel Fattah el-Sisi became president in 2014. +Revolution of 2011. +In January 2011, thousands of protesters gathered in Cairo. They wanted Hosni Mubarak to leave office. He had been the President for almost 30 years. On February 11, 2011, Vice President Omar Suleiman made an announcement. He said that Mubarak agreed to leave office. In 2012, Egypt had a democratic election for the post of President. The winner was the Muslim Brotherhood candidate, Mohamed Morsi. +The events which followed are still controversial, but one aspect stands out. Morsi issued a declaration that in effect gave him unlimited powers. He had the power to legislate (make laws) without legal overview by the courts. This caused widespread protests. On 3 July 2013, he was unseated by a military coup council (a coup d'état). After an election in June 2014, Abdel Fattah el-Sisi became President of Egypt. Islamist movements, such as the Muslim Brotherhood, rejected the change of regime as a military coup, and not democratic. +Demographics. +Religion. +Today, the people of Egypt are mostly Sunni Muslims. There are many Christians in Egypt today. Many of these belong to the Coptic Orthodox Church of Alexandria. +Languages. +The official language in Egypt is Arabic. The majority speak Egyptian Arabic but many speak other dialects. Some Egyptians still speak Coptic and English. They also speak French and German in Egypt. These are taught in Egypt as additional languages. +Famous people. +Many famous people are from Egypt. Some of these include Omar Sharif, who was an international actor, Boutros Boutros-Ghali, who was the first person from Africa to lead the United Nations, and four Nobel Prize winners: Anwar Sadat, who won the Nobel Peace Prize in 1978, Naguib Mahfouz, who won the Nobel Prize in Literature in 1988, Ahmed Zewail, who won the Nobel Prize in Chemistry in 1999, and Mohamed ElBaradei, who won the Nobel Peace Prize in 2005. Mohamed Salah is a famous footballer who plays for Liverpool in England. A famous Egyptian singer is called Amr Diab. +Governorates. +Egypt is divided into 27 governorates. The governorates are divided into regions. The regions have towns and villages. Each governorate has a capital. Sometimes capital has the same name as the governorate. +Culture. +Egypt is a country with an immense cultural mix. Life in the countryside differs from life in large cities. There are differences between the families which are Muslim, and the smaller number which are Coptic Christians. There are noticeable differences in the standards of education. +Tourism. +Tourism is one of the most important national incomes in Egypt. In 2008, about 12 million tourists visited Egypt providing nearly $12 billion of national income to Egypt. Tourism affects the economy of the country as a whole. +Giza Necropolis is one of Egypt's iconic sites. It is a popular destination for tourists to visit. It includes the Great Pyramid of Giza, one of the Seven Wonders of the World. +Transport. +There are methods of transport in Egypt. The Suez Canal carries ships of many countries. +Cairo Metro is one of the most important projects in Egypt. It consists of 3 lines. Metro is the most preferable transport in Egypt due to persistent major traffic jams in the streets of Cairo. Metro line 4 is being developed to reach the New Cairo District. +Egypt established EgyptAir in 1932. The airline is based in Cairo International Airport and is owned by the Egyptian government +Egyptian Armed Forces. +The Egyptian Armed Forces are the defense forces of the Republic of Egypt. They consist of the Egyptian Air Force, Egyptian Navy, Egyptian Army, and the Egyptian Air Defense Forces. It is ranked 8th in the world. It is the strongest military force in the Arab world and Africa. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Einstein on the Beach.txt b/.github/workflows/data/simplewiki-500/Einstein on the Beach.txt new file mode 100644 index 000000000..3d3c3994b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Einstein on the Beach.txt @@ -0,0 +1,5 @@ +Einstein on the Beach is an opera written by the minimalist composer Philip Glass and theater director and designer Robert Wilson. It was first acted for an audience in Avignon, France in 1976. +It is a single act opera, about five hours long with no intermission. Because of the length and the minimalist (repetitive) nature of the music, audience members are free to enter and leave the opera as they wish. Glass's music tends to cycle round, but does not exactly repeat itself. Admittedly, he has described himself as a composer of "music with repetitive structures". Though his earlier music fits what is normally called "minimalist", he has since evolved stylistically. +References. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Elements.txt b/.github/workflows/data/simplewiki-500/Elements.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Embassy.txt b/.github/workflows/data/simplewiki-500/Embassy.txt new file mode 100644 index 000000000..5023c84ab --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Embassy.txt @@ -0,0 +1,4 @@ +A foreign embassy is the official office of one country in another. It is usually in the capital city of the other country. It is where the ambassador and other representatives of the home country work. Much of the diplomacy (talk) between the two governments happens there. They represent their country to the host government. The embassy represents the interests of the entire country and is fully responsible for the relationship between the two countries. +The head of the embassy is usually an ambassador, but can also be a minister, high commissioner, or other level of diplomatic personnel appointed by the sending country to represent it. + + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Encyclopedia.txt b/.github/workflows/data/simplewiki-500/Encyclopedia.txt new file mode 100644 index 000000000..63a30210b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Encyclopedia.txt @@ -0,0 +1,18 @@ +An encyclopedia is a collection, usually a book or website, of information. Some are termed "encyclopedic dictionaries". +History. +Overview. +All encyclopedias were printed, until the late 20th century, when some were on CDs and the internet. 21st century encyclopedias are mostly online by internet. The largest encyclopedia in the English language is English Wikipedia, which has more than 6 million articles. The second largest is the "Encyclopædia Britannica", which is the largest one that is printed. Either kind of encyclopedia can inform us on various topics. +Ancient times. +Book series were used to summarize all knowledge have been published for thousands of years. A famous early one was called "Natural History" by Pliny the Elder. The name "encyclopedia" is from the 16th century and meant "complete knowledge". The French "Encyclopédie" of Denis Diderot was the first that had major parts written by many people from all around the world. +Modern times. +After the printing press was invented, dictionaries with long definitions began to be called encyclopedias that were books that has articles or subjects For example, a dictionary of science, if it included essays or paragraphs, it was thought of as an encyclopedia or knowledgeable book on the subject of science. Some encyclopedias then put essays on more than one subject in alphabetical order instead of grouping them together by subject. The word, encyclopedia, was put in the title of some encyclopedias. +Publishers. +Companies such as "Britannica" were started for the purpose of publishing encyclopedias for sale to individuals, and for public use in libraries. Akin to dictionaries, these publishers hired hundreds of experts to write articles. Some internet encyclopedias allowed their paying customers to submit articles from other encyclopedias. Other internet encyclopedias accepted writing from non-paying users – users not signed in – of the encyclopedia. +Types of encyclopedias. +There are different types of encyclopedias. Some are general and have pages on lots of topics. The English language "Encyclopædia Britannica" and German "Brockhaus" are general encyclopedias. Some are about specific topics. +Examples. +Specialized encyclopedias. +There are encyclopedias of medicine or philosophy. Others include the "Dictionary of National Biography", the "Dictionary of American Naval Fighting Ships", and "Black's Law Dictionary". There are also encyclopedias that cover many topics with one perspective or one cultural bias, including the Conservapedia and "Great Soviet Encyclopedia". +There are two main ways of organizing printed encyclopedias: from A to Z or by categories. Most encyclopedias go by A to Z. Many dictionaries have similar information to encyclopedias. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/English As A Second Language.txt b/.github/workflows/data/simplewiki-500/English As A Second Language.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/English.txt b/.github/workflows/data/simplewiki-500/English.txt new file mode 100644 index 000000000..ad21b5fe4 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/English.txt @@ -0,0 +1,3 @@ +"Were you looking for the English Wikipedia, the full English Wikipedia version of Simple?" +The word English can mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Et cetera.txt b/.github/workflows/data/simplewiki-500/Et cetera.txt new file mode 100644 index 000000000..3ab961b54 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Et cetera.txt @@ -0,0 +1,3 @@ +Et cetera means "and the rest" in Latin. It is often used in English to continue a list that is longer than what can be normally written. People most often write "et cetera" as etc.. Very rarely, it is also written "&c" because the ampersand, or the "&", is the same as "et", having been formed by 'e' and 't' being joined into a single letter. It is also the symbol for "and". Some people write it as "ect", but that is wrong since it incorrectly abbreviates "et cetera". +Examples. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Etc..txt b/.github/workflows/data/simplewiki-500/Etc..txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Etc.txt b/.github/workflows/data/simplewiki-500/Etc.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Ethics.txt b/.github/workflows/data/simplewiki-500/Ethics.txt new file mode 100644 index 000000000..ec8d7ce1e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Ethics.txt @@ -0,0 +1,8 @@ +Ethics is the study of good and bad behavior. It is one of the main parts of philosophy. Ethics tries to answer questions like: +Ideas about ethics. +When discussing ethics, the philosophy is generally separated into: +"Morality" is what someone thinks or feels is good or bad. There are many different moralities, but they share some things. For example, most people think that murder (killing somebody) is wrong. (compare Exodus 20:13) Some philosophers hope to find more things that moralities share. They think that ethics should use the scientific method to study things that people think are good or bad. Their work can be used to test the fairness of a situation, such as how people should treat each other. An example of this kind of thinking is the categorical imperative. Many countries have laws based on this idea of fairness. +What is ethics used for? +Understanding ethics can help people decide what to do when they have choices. Many think that doing anything or making any choice is a part of ethics. +Ethics is part of other fields of study in many ways. Here are some ways: +Along with aesthetics ethics forms part of axiology, the philosophy of what people like. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Ethnic group.txt b/.github/workflows/data/simplewiki-500/Ethnic group.txt new file mode 100644 index 000000000..9fbd28957 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Ethnic group.txt @@ -0,0 +1,6 @@ +An ethnic group is a group of people who are considered to be the same in some or multiple ways. They may all have the same ancestors, speak the same language, or have the same culture, which could sometimes include religion. They often live in the same or surrounding area. +Sometimes almost all of the people in one country are of the same ethnic group, but not always. Often one country may have several different ethnic groups, or the people of one ethnic group may live in several different countries. +The International Covenant on Civil and Political Rights ensures the rights of ethnic groups in Article 27 and also gives them the right to use their own language. +An example of an ethnic group is the Slavic peoples and Roma people. +References. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Europe.txt b/.github/workflows/data/simplewiki-500/Europe.txt new file mode 100644 index 000000000..aaeab1158 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Europe.txt @@ -0,0 +1,26 @@ +Europe is the western part of the continent of Eurasia, often thought of as its own continent. It is separated from Asia by the Ural Mountains in Russia and the Bosporus strait in Turkey. +Europe is bordered by water on three sides. On the west is the Atlantic Ocean. To the north is the Arctic Ocean. The Mediterranean Sea separates Southeastern Europe from the continent of Africa. On the eastern border of Europe are the Ural River and Ural Mountains. +There are at least 44 or 50 countries in Europe (the European identities of 7 countries: Armenia, Azerbaijan, Cyprus, Georgia, Kazakhstan, Russia and Turkey are disputed). Most of these countries are members of the European Union. +Europe covers about 10,180,000 square kilometre (3,930,000 square miles). This is 2% of the Earth's surface (6.8% of its land area). +As of 2017, about 510 million people lived in Europe. +Europe contains the world's second most-active volcano, which is Mount Etna that is currently the most-active volcano in the continent. +Europe is a major tourist attraction. People come from all over the world to see its many World Heritage Sites and other attractions. +Origin of name. +Europe is named after a princess in Greek mythology called "Europa." The myth says that Zeus kidnapped Europa and took her to Crete, where she became the mother of King Minos (from whom Europe’s first civilization gets its name, the Minoans). +The name "Europa" was later used to describe Greece. Then, as the rest of modern-day Europe started to have cities and empires, the entire area West of the Ural Mountains came to be called "Europa". +History. +The history of Europe is long and has many turns. Many great countries originated from Europe. Greek mythology and the beginning of western civilization came from European nations. +Some of the major periods in European history have been: +Regions and countries. +Andreas M. Kaplan describes modern Europe as a continent where many different cultures live closely together, "embracing maximum cultural diversity at minimal geographical distances". +There are several major regions of Europe: +Within these regions, there are up to 50 independent European countries (with the identities of 7 transcontinental countries being disputed). The largest is the Russian Federation, which covers 39% of Europe. +The European city with the largest population is Istanbul. The country with the largest population is the Russian Federation. About 15% of Europeans live in Russia. +Two European countries, the United Kingdom and the Republic of Ireland, are on islands called the British Isles. +Climate. +Most of Europe lies in temperate climate zones. +However, there are many different climates throughout Europe. For example, during the winter, it may be snowing and -30 degrees Celsius for 4–5 months in Finland. Yet it may be much warmer, with no snow at all except on high mountains, in Spain. +European Union. +The European Union is a confederation of 27 European countries. These countries agree to follow common laws so that their citizens can move and trade in EU countries almost the same as they do in their own. Twenty of these countries also share the same type of money: the euro. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Everything2.txt b/.github/workflows/data/simplewiki-500/Everything2.txt new file mode 100644 index 000000000..3acad61bb --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Everything2.txt @@ -0,0 +1,5 @@ +Everything2 or E2 is a website. It lets people make pages about many different things, and some people use it as a diary. +E2 users create pages called "nodes" and add stuff in "writeups". Only logged-in users can create writeups. Only the person who created the writeup or someone who the website owners (called "gods") choose can edit the writeup. On the other hand, on Wikipedia, anyone can edit pages, but on Everything2 only those who can edit the writeup can edit pages. +Everything2 does not require a like Wikipedia does. So, it is possible to have more than one article (writeups) under the same title (node), each by different authors, and presenting different points of view. +Other websites. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Ewe.txt b/.github/workflows/data/simplewiki-500/Ewe.txt new file mode 100644 index 000000000..90de2dba5 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Ewe.txt @@ -0,0 +1,2 @@ +Ewe might mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Execution.txt b/.github/workflows/data/simplewiki-500/Execution.txt new file mode 100644 index 000000000..5b4fc9dc3 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Execution.txt @@ -0,0 +1,6 @@ +Execution is where state authorities kill someone for having committed an extremely serious crime, usually treason or especially terrible murders. In most countries where the death penalty is still provided for by law, using it is an option available to the sentencing judge: even if the jury or judicial panel recommends the death penalty, the presiding judge still has the option to lock the convicted person in a prison for the rest of their life. A person whose job is to execute others is an executioner. +Beheading. +Beheading means cutting the person's head off. It is one of the oldest execution methods and mentioned in the Bible. Beheading used to be the standard method of execution in Scandinavia and Germany. Commoners were usually beheaded with an axe and noblemen with a sword. A special device, like the guillotine, may be used, as in France. Nazi Germany used the guillotine to execute criminal convicts, such as murderers. +Many countries formerly used beheading as an execution for important people, including England. In England, many noblemen and even some kings and queens have been beheaded. There, the prisoner would be led up the scaffold and might be allowed a last speech. Then, he/she would be blindfolded and put his/her neck onto a block. Then, the executioner would lift up his axe and swing it down onto the victim's neck. If the executioner was skilled and the axe was sharp, then the axe would usually cut through the bone and organs of the victim in one stroke. But if the executioner was inexperienced, then it might take several strokes before the head was cut off. +Other ways of execution. +Many countries do not allow executions as punishment any more, because it is too violent or immoral. However, many states of the United States and some other countries use it. In the United States, less violent ways of execution are used than in the past. Here are some ways of executing people: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Experience economy.txt b/.github/workflows/data/simplewiki-500/Experience economy.txt new file mode 100644 index 000000000..cfe9f301b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Experience economy.txt @@ -0,0 +1,2 @@ +The experience economy is the intangible service economy that customers experience directly. In moral purchasing, Natural Capitalism and other theories of how consumers make choices, they are actually choosing experiences or comprehensive outcomes of their choices. For instance to buy local is to choose a whole experience of local suppliers, such as in a farmers market or Slow Food, that is quite different than the experience associated with factory food or fast food. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Experiment.txt b/.github/workflows/data/simplewiki-500/Experiment.txt new file mode 100644 index 000000000..64be5b75f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Experiment.txt @@ -0,0 +1,12 @@ +An experiment is a test of an idea or a method. It is often used by scientists and engineers. An experiment is used to see how well the idea matches the real world. Experiments have been used for many years to help people understand the world around them. Experiments are part of scientific method. Many experiments are controlled experiments or even blind experiments. Many are done in a laboratory. But thought experiments are done in mind. +Experiments can tell us if a theory is false, or if something does not work. They cannot tell us if a theory is true. When Einstein said that gravity could affect light, it took a few years before astronomers could test it. General relativity predicts that the path of light is bent in a gravitational field; light passing a massive body is deflected towards that body. This effect has been confirmed by observing the light of stars or distant quasars being deflected as it passes the Sun. +Now, a hundred years or so after Einstein published his ideas, there have been many tests, all of which have been consistent with Einstein's predictions. But, one day, we might find the theory has some limits beyond which it does not work. What we test are implications of the theory, because the theory itself is too large and complicated to test all at once. +"The universe does not tell us when we are right, only when we are wrong". – Karl Popper +Controlled experiments. +A controlled experiment is a kind of comparison. It often compares the results from experimental samples against control samples. Control samples are the same as the experimental sample, except for one difference. This difference is the one thing whose effect is being tested (the independent variable). A good example would be a drug trial. The sample or group receiving the drug would be the experimental group (treatment group); and the one receiving the placebo or an older treatment would be the control group. +Difference with observational study. +An observational study is used when an experiment would be difficult, unethical, or expensive. Observational studies are not experiments. Experiments can control for other variables, and it allows the researchers to change something. Observational studies often do not have random samples, and they often have many variables. +References. +<templatestyles src="Reflist/styles.css" /> +Related pages. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Experiments.txt b/.github/workflows/data/simplewiki-500/Experiments.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/FAQ.txt b/.github/workflows/data/simplewiki-500/FAQ.txt new file mode 100644 index 000000000..779b02926 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/FAQ.txt @@ -0,0 +1,3 @@ +FAQ is an abbreviation for "Frequently Asked Question(s)". The term is used for a list of questions and answers. All of the questions are supposed to be asked often and they all are about the same thing. Since the acronym was first used in written form, there are different ways it is said; both "fak" and "F.A.Q." are commonly used. +Other websites. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Farm.txt b/.github/workflows/data/simplewiki-500/Farm.txt new file mode 100644 index 000000000..49578be00 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Farm.txt @@ -0,0 +1,6 @@ +A farm is a piece of land used to grow crops and/or raise animals. +People who grow these plants or raise these animals are called farmers. This work is called farming. +Land that is used to grow plants is called farmland. Land that is used to feed animals with its grass is called pasture. Land that can be used to grow plants for food is called arable land. +Many farms are very large and can cause damage. In some places farms are many and small, and can also cause damage. Farms provides most of the food for people. Some people farm to eat the food they produce (subsistence agriculture). Other farms, including large ones, sell their produced crops or animals, like horses, to markets far away in urban areas (commercial or industrial farming). Most subsistence farms are in poorer countries, while industrial farms are in richer countries. +Related pages. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Farming.txt b/.github/workflows/data/simplewiki-500/Farming.txt new file mode 100644 index 000000000..0eed17061 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Farming.txt @@ -0,0 +1,28 @@ +Farming is growing crops and keeping animals for food and raw materials. Farming is a Significant part of agriculture. +History. +Farming started thousands of years ago, but no one knows for sure how old it is. The development of farming gave rise to the Neolithic Revolution as people gave up nomadic hunting and became settlers in cities. +Farming and domestication probably started in the Fertile Crescent (the Nile Valley, the Levant and Mesopotamia). The area called Fertile Crescent is now in the countries of Iraq, Syria, Turkey, Jordan, Lebanon, Israel, and Egypt. Wheat and barley are some of the first crops people grew. +Cotton was domesticated in Peru by 4200 BC. +Livestock including horses, cattle, sheep, and goats were taken to the Americas, from the Old World. The first of those horses, came with the Spanish conquistadors (or soldiers and explorers) in the 1490s. Moving those cattle, sheep, goats and horses, were part of the Columbian Exchange. +People probably started agriculture by planting a few crops, but still gathered many foods from the wild. People may have started farming because the weather and soil began to change. Farming can feed many more people than hunter-gatherers can feed on the same amount of land. +This allowed the human population to grow to such large numbers as there are today. +Types. +Many people still live by subsistence farming, on a small farm. They can only grow enough food to feed the farmer, his family, and his animals. The yield is the amount of food grown on a given amount of land, and it is often low. This is because subsistence farmers are generally less educated, and they have less money to buy equipment. Drought and other problems sometimes cause famines. Where yields are low, deforestation can provide new land to grow more food. This provides more nutrition for the farmer's family, but can be bad for the country and the surrounding environment over many years. +In some countries, farms are often fewer and larger. During the 20th century they have become more productive because farmers are able to grow better varieties of plants, use more fertilizer, use more water, and more easily control weeds and pests. Many farms also use machines, so fewer people can farm more land. There are fewer farmers in rich countries, but the farmers are able to grow more. +This kind of intensive agriculture comes with its own set of problems. Farmers use a lot of chemical fertilizers, pesticides (chemicals that kill bugs), and herbicides (chemicals that kill weeds). These chemicals can pollute the soil or the water. They can also create bugs and weeds that are more resistant to the chemicals, causing outbreaks of these pests. The soil can be damaged by erosion (blowing or washing away), salt builddup, or loss of structure. Irrigation (adding water from rivers) can pollute water and lower the water table. These problems have all got solutions, and modern young farmers usually have a good technical education. +Farmers select plants with better yield, taste, and nutritional value. They also choose plants that can survive plant disease and drought, and are easier to harvest. Centuries of artificial selection and breeding have changed crop plants. The crops produce better yield. Fertilizers, chemical pest control, and irrigation all help. +Some plants are improved with genetic engineering. One example is modifying the plant to resist herbicides. +Livestock. +Farms may also keep animals. That is called animal husbandry. If they are used to make meat for people to eat, that is livestock production. Non-meat animals, such as milk cows and egg-producing chickens, are kept for their produce. "Produce" here means their eggs and milk, which are sold by the farm, usually in markets. Large animals need grassland of some kind for grazing. What they need depends on the animals. Goats eat a much wider range of plants than cows. In some parts of the world, that makes goats a more sensible choice for a farmer than cows. +Food. +It is important for there to be enough food for everyone. The food must also be safe and good. People say it is not always safe, because it contains some chemicals. Other people say intensive agriculture is damaging the environment. For this reason, there are several types of agriculture. +Agricultural policy means the goals and methods of agricultural production. Common goals of policy include the quality, amount, and safety of food. +Problems. +There are some serious problems that people face trying to grow food today. +These include: +There are also difficulties with the distribution of food: +Crops. +In produced weight, these crops are the most important (global production in metric tonnes): +The figure for sugarcane is rather deceptive. It omits sugar beet, but includes the weight of the woody stalk. Most of the plants which produce food are in the grass family Poaceae. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/February.txt b/.github/workflows/data/simplewiki-500/February.txt new file mode 100644 index 000000000..4f44fbfb8 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/February.txt @@ -0,0 +1,12 @@ +February (Feb.) is the second month of the year in the Julian and Gregorian calendars, coming between January and March. It has 28 days in common years, and 29 days in leap years. This was to make the calendar match to the rest of the world. In 1930 and 1931, February had 30 days in the Soviet Union because the government changed all the months to be 30 days long. The name comes either from the Roman god Februus or else from "februa", the festivals of purification celebrated in Rome every fifteenth of this month. +February begins on the same day of the week as March and November in common years, and August in leap years. February always ends on the same day of the week as October, and additionally, January in common years. +The Month. +February is one of the last two months to be added to the calendar at the beginning of the year (the other is January). This is because in the original Roman calendar, the two months of winter, when not much would happen in agriculture, did not have names. +February is the second month of the year, coming between January and March, and is also the shortest month, with 28 days in a common year, and 29 days in a leap year. +February begins on the same day of the week as March and November in common years and on the same day of the week as August in leap years. February ends on the same day of the week as January in common years and October every year, as each other's last days are exactly 4 weeks (28 days) and 35 weeks (245 days) apart respectively. In a leap year, February is the only month to both begin and end on the same day of the week. +Every year, February starts on the same day of the week as June of the previous year, as each other's first days are exactly 35 weeks (245 days) apart. In common years, February finishes on the same day of the week as May of the previous year, and in leap years, August and November of the previous year. +In common years immediately before other common years, February starts on the same day of the week as August of the following year, and in leap years and years immediately before that, May of the following year. In years immediately before common years, February finishes on the same day of the week as July of the following year, and in years immediately before leap years, April and December of the following year. +February is also the only month of the calendar that, once every six years and twice every 11 years consecutively, either back into the past or forward into the future, will have four full 7-day weeks. In countries that start their week on a Monday, it occurs as part of a common year starting on Friday, in which February 1st is a Monday and the 28th is a Sunday, this was observed in 2021 and can be traced back 11 years to 2010, 11 years back to 1999, 6 years back to 1993, 11 years back to 1982, 11 years back to 1971 and 6 years back to 1965, and will be observed again in 2027 In countries that start their week on a Sunday, it occurs in a common year starting on Thursday, with the next occurrence in 2026, and previous occurrences in 2015 (11 years earlier than 2026), 2009 (6 years earlier than 2015), 1998 (11 years earlier than 2009) and 1987 (11 years earlier than 1998). This works unless the pattern is broken by a skipped leap year, but no leap year has been skipped since 1900 and no others will be skipped until 2100. +From circa 700 BC, when Numa Pompilius, the second king of Rome, added it to the calendar, February had 23 days and 24 days on some of every second year, until 46 BC when Julius Caesar assigned it 29 days on every fourth year and 28 days otherwise. Leap year Day, February 29, is added in every year that can be divided equally by four, such as 2012 and 2016, but this does not apply when the year ending in "00" at the turn of the century does not divide equally into 400. This means that 1600 and 2000 were leap years in the Gregorian calendar, but 1700, 1800, and 1900 were rather common years. This is where the Julian calendar calculated dates differently, as it always repeated February 29 every four years. +February is a winter month in the Northern Hemisphere and a summer month in the Southern Hemisphere. In each hemisphere, it is the seasonal equivalent of August in the other. In weather lore, Groundhog Day, in the United States, is set to decide what the weather will be like for the rest of the winter. +February's flower is the violet and its birthstone is the amethyst. The meaning of the amethyst is sincerity. The zodiac signs for February are Aquarius (January 21 to February 19), and Pisces (February 20 to March 20). \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Fecund universes.txt b/.github/workflows/data/simplewiki-500/Fecund universes.txt new file mode 100644 index 000000000..03935943c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Fecund universes.txt @@ -0,0 +1,8 @@ +Fecund universes is a multiverse theory of Lee Smolin. It relies on models of our universe and statistics from astrophysics but is more correctly a theory of cosmology. +In this theory, collapsing stars, or black holes, are always creating new universes with slightly different laws of physics. Because these laws are only slightly different, each is assumed to be like a mutation of the original universe, as if each universe was a kind of single-celled organism. It would reproduce by "splitting" in some sense. +This theory relies on many models of our universe to model these "mutated" alternative universes, the ones that Smolin supposes are generated or "spun off" by black holes. +No human can ever be part of any of these "other" universes. Observations from astrophysics can only say if the black holes exist or are common, and give some idea of how much the laws of physics can vary and still let the new universes produce new black holes. +Smolin predicts that there would be many black holes in the universe humans can see, since they are likely in a very late born universe, by simple probability. If there are many black holes, that is evidence for his theory, +As this shows, cosmology has a very different standard of evidence and burden of proof than is required for models of our universe only, which humans (using mathematics) can observe and exchange knowledge on. +It is hard to separate science from religion on such questions. It may be a simple matter of preference whether one wants to see one's universe as part of a system like biology or like mechanics - clockwork. Smolin's theory is important mostly because it challenges the mechanistic paradigm. +Even if it is wrong, it raises the idea that living beings might have to see their universe as also living to be able to understand or care about it at all. Some compare Smolin's theory to Gaia philosophy which combines biology, geology and ecology to explain the Earth, our planet, as a living thing. If both are right, humans are on a living planet in a living universe. This idea is very appealing - which does not mean it is really "right". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Financial capital.txt b/.github/workflows/data/simplewiki-500/Financial capital.txt new file mode 100644 index 000000000..0e60ec35e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Financial capital.txt @@ -0,0 +1,5 @@ +Financial capital is a form of capital. It is things that have value, but do not do anything by themselves. They are only valuable because people value (want) them. For example, money is a form of financial capital. You cannot do anything with money but it still has value. +Financial capital is used to pay for things, this is because there is always more of it and people always want it. This means that financial capital has a stable value and can be traded in most places and with most people. +Some forms of financial capital, such as stocks, gold or bonds are not wanted by everybody. However they can be traded with people for money or another type of financial capital. Because of this, these forms of financial capital do not have a stable price. This means that some people try to make a profit by buying and selling these types of financial capital in a market. +Some things are treated as financial capital, even though they do have a use. For example, some people buy and sell land but are not interested in doing anything with it. Some people think this sort of trade is bad because the land should be used and not just treated like money. Other types of capital, such as social capital and human capital are rarely treated like financial capital. This may be because they involve people. Treating useful capital like financial capital is called comodification. +In politics, a common question is how often the government should use financial capital. In particular, should the government use financial capital to make a profit? Traditionally, liberal politicians do not mind this kind of trading for profit, but socialist or conservative politicians are against it. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Fine.txt b/.github/workflows/data/simplewiki-500/Fine.txt new file mode 100644 index 000000000..945dc9307 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Fine.txt @@ -0,0 +1,3 @@ +If someone is found guilty of a crime, their punishment may be to pay a fine, a certain amount of money. In many countries, fines can be ordered by police, court judges and some government officers. +When agreeing to a contract with a business, a customer may agree to certain rules. If the customer breaks the rules, then they agree to pay a fine for doing so. For example, when somebody hires a car and agrees to return it by Friday, they agree that if they do not return the car by Friday, they must pay a $50 fine to the business. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Finland.txt b/.github/workflows/data/simplewiki-500/Finland.txt new file mode 100644 index 000000000..028b2a7bf --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Finland.txt @@ -0,0 +1,47 @@ +Finland (Finnish: "Suomi") is a country in Northern Europe and is a member state of the European Union. Finland is one of the Nordic countries and is also part of Fennoscandia. Finland is located between the 60th and 70th latitudes North. Its neighbours are Sweden to the west, Norway to the north, Russia to the east and Estonia to the south, beyond the sea called Gulf of Finland. Most of the western and southern coast is on the shore of the Baltic Sea. +The capital of Finland is Helsinki; the second largest city is Tampere. The official currency of the country is the euro (EUR); before 2002 it was the markka, the Finnish mark (FIM). The president of Finland is Alexander Stubb. 5.5 million people live in Finland. Finnish and Swedish both are the official languages of Finland; the most spoken languages is Finnish, mother tongue of about 90% of the population. Swedish is spoken by the Swedish speaking minority of Finland, called the Finnish Swedes, who make up 5% of the total population. Finland became independent of Russia on 6 December 1917. +The most important cities and towns in Finland are Helsinki, Espoo, Tampere, Vantaa, Turku, Oulu, Lahti, Kuopio, Jyväskylä and Pori. +Finland is a highly industrialised First World country. The most important Finnish industrial products are paper, and steel products such as machines and electronics. Nokia (the mobile company) is originally a company of Finland, named after a small town called Nokia. +Finland has been top of the list of least corrupt countries on the Corruption Perceptions Index more times than any other country. +People and culture. +The people of Finland are called Finns. Most Finns speak Finnish as their mother tongue. About six percent of Finns have the Swedish language as their mother tongue. They live mostly in the western part of Finland and on Åland (Finnish Ahvenanmaa) +Finns also study mandatory English and Swedish in school. Most Finns work either in services (that is: shops, banks, offices or businesses) or in factories. Finns often like saunas and nature. Many Finnish families have summer cottages, small houses where they go to relax on their summer holidays. The most important festivals that Finnish people celebrate are Midsummer and Christmas. +The most popular sports in Finland are ice hockey, skiing, track and field and association football (soccer). Finns have also won events in swimming, motor sports and gymnastics. +There is a group of a few thousand Sámis (also called Lapps) in the most northern part of Finland, called Lapland. Most of the Samis live in Norway and Sweden. Many Sami people farm reindeers. Originally, Samis were hunter-gatherers. In the past the Sami were nomads, but nowadays they live in regular houses. +Minority groups in Finland include Swedish–speakers (5.3 per cent), Russian-speakers (1.4 per cent), Estonians (0.9 per cent), Roma (0.2 per cent, and Sámi (0.1 per cent). There is a also small number of Jews. +Very few people in Finland are from other countries. In 2016 about 4% of residents were born in another country. +Nature and weather. +Most of Finland is covered by pine forest. It is estimated that up to one-third of all wood resources of the European Union are in Finland. Wood is the most important natural resource of Finland. +The national animal of Finland is the brown bear. The swan, which was considered holy long ago, is the national bird of Finland. The largest animal is the elk, a type of moose, which is a member of the deer family. Other large animals (in the wild) are wolves. +There are hundreds of rivers and thousands of fresh water lakes. Fishing is a popular sport. It is estimated there are almost 180,000 lakes in Finland. +Many islands in the Baltic Sea belong to Finland. Thousands of islands are part of the Åland archipelago. Tourists from all over the world come to see the fells and the northern lights in Lapland. +The highest mountain of Finland is Halti, which is 1328 meters high. The largest lake is Saimaa, 4,400 square kilometres. The longest river of Finland is Tornionjoki. The largest river (by watershed) is Kemijoki, 552 kilometres long. +The weather in Finland varies widely by season. Summer usually lasts from May to early September, and temperatures can reach up to +30 °C. Autumns are dark and rainy. Winter snow usually begins to fall in Helsinki in early December (in Lapland it can fall as early as October) and in the winter the temperature can drop to -40 °C. Highest temperature recorded in Finland is +37,2 °C and lowest temperature is -51,5 °C. Winter usually lasts to mid-March, when the snow melts in Helsinki (in Lapland the snow usually doesn't melt until early May), and Spring lasts till late May. Spring can be erratic, and the weather can change from frost to sunshine within a matter of days. The famed Northern Lights are common in Lapland. +History. +People first came to Finland 10,000 years ago. That was just after an ice age, after a glacier that covered the ground had receded. +Some think the first people in Finland already spoke a language similar to the Finnish language that is spoken today. It is known that an early form of the Finnish language was spoken in Finland in the Iron Age. (The Iron Age in Finland was 2,500–800 years ago). +The first residents in Finland hunted animals, as "hunter-gatherers". Some people started to farm crops about 5,200 years ago. Farming slowly became more and more popular and became the major way of life until the modern age. +The ancient Finns were pagans. The most important god of the Finnish pantheon was Ukko. He was a god of sky and thunder, much like Odin, another Scandinavian god-king. These powers were common among the pagan god kings in pantheons ranging from the Finnish Ukko, to the Scandinavian/Germanic/Saxon Odin, all the way east to Zeus of the Greeks and Jupiter of the Romans. +Around a thousand years ago, when most of Europe was adopting Christianity, Finland also began following Christianity. During the Reformation of Christianity in the 16th century, most Finns became Protestants. Some pagan practices still remain amongst the now Christian Finns, such as bear worship. +From the Middle Ages Finland was a part of Sweden. Then, in the year 1809, Russia took Finland from Sweden. Finland was a part of Russia, but after a short period of time it became autonomous. The Finns essentially controlled Finland, though the Tsar was in control officially. Finns could create their own laws and had their own currency, (called the "markka"), their own stamps and own customs. However, Finland did not have its own army. +During the 1905 Russian Revolution, in the Grand Duchy of Finland: +the Social Democrats organised the general strike of 1905 (12–19 November [O.S. 30 October – 6 November]). The Red Guards were formed. On 12 August [O.S. 30 July] 1906, Russian artillerymen and military engineers rose to rebellion in the fortress of Sveaborg (later called Suomenlinna), Helsinki. The Finnish Red Guards supported the Sveaborg Rebellion with a general strike, but the mutiny was quelled by loyal troops and ships of the Baltic Fleet within 60 hours. +After independence. +On 6 December 1917, Finland became independent, which meant that it no longer was a part of Russia. There was a communist revolution in Russia and after 1922 Russia was a part of the Soviet Union. There were communists in Finland too, who tried to create a revolution in Finland +This attempt at revolution caused the Finnish civil war. The communists lost the civil war, and Finland did not change its old capitalist system +Stalin, who was the leader of the Soviet Union, did not like having a capitalist country as its neighbour. Stalin wanted Finland to become a communist state and be a part of the Soviet Union. The leaders of Finland refused: they wanted to stay independent. The Soviet Union sent many troops across the eastern border of Finland to try to make Finland join them, which resulted in the Winter War. The Soviet Union eventually won, and took most of Karelia and other parts of Finland. +Adolf Hitler was the dictator of Germany, and he wanted to invade the Soviet Union. Finland wanted to retrieve the areas that it had lost, so they joined the German invasion, which started with Operation Barbarossa in 1941. The Finnish part of the Second World War is called the Continuation War in Finland. However, Finland was not a fascist or an antisemitic country. Finns were interested in freedom rather than dictatorship. +While Germany was losing the war, Finland had already progressed into the Soviet Union in order to regain the areas lost in the previous peace. Finland wanted to end the war with the Soviet Union, which resulted in peace. Once again Finland had to give up the areas they had conquered. This time, the peace with the Soviet Union made Finland and Germany enemies. Finns fought the Germans, and Germans retreated to Norway, burning down all of Lapland behind them. This is called the Lapland War. Finland remained independent. +After the war, many factories were built in Finland. Many people moved from farms to cities. At that time, big factories manufactured products like paper and steel. More and more people worked in more advanced jobs, like high technology. Also, many people went to universities to get a good education. Finland was one of the first countries where most people had Internet connections and mobile phones. A well-known company that makes mobile phones, Nokia, is from Finland. +Finland joined the European Union in 1995. The Finnish currency was changed to the euro in 2002. +Finland joined NATO in 2023, after the Russian invasion of Ukraine. +Economy. +Finland has a mixed economy. Free market controls most of production and sales of goods, but public sector is involved in services. In 2013, taxes were 44% of gross national product. This is 4th largest in Europe, after Denmark, France and Belgium. +In 2014 services were 70% of the gross national product. +The largest company in 2014 was oil refinery Neste Oil. The second largest was Nokia. Two forest industries Stora Enso and UPM-Kymmene, were numbers three and four. Number five was Kesko which sells everyday goods in K-supermarkets. +Elections. +Elections are organized to select 200 members to the Parliament of Finland. Also selected are the president of Finland, members of town and city councils and Finnish members to the European Parliament. The elections are secret and direct. People vote directly for the person they want to be elected. In presidential elections votes are only cast for a person, not for a political party. All the other elections are proportional. The system is a combination of voting for individuals and parties. The right to vote is universal and equal. In general elections everybody has one vote. +Famous Finnish people. +<templatestyles src="Div col/styles.css"/> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/First language.txt b/.github/workflows/data/simplewiki-500/First language.txt new file mode 100644 index 000000000..adea98e7b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/First language.txt @@ -0,0 +1,7 @@ +A first language (also mother language, mother tongue, native language, arterial language, or L1) often means the language that a person learns first. It helps one understand words and concepts in the style of that language. +Sometimes, but not often, "first language" means the language that a person speaks best (the second language is then spoken less well than the first language, etc.). In that sense, a person could have more than one first or second language. +The first languages of the national majority usually are to be recognized as national languages of the nation. +References. +<templatestyles src="Reflist/styles.css" /> +Related pages. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Fish.txt b/.github/workflows/data/simplewiki-500/Fish.txt new file mode 100644 index 000000000..f1050afa7 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Fish.txt @@ -0,0 +1,51 @@ +Fish (plural: fish or fishes) are a group of animals which live in water and respire (get oxygen) from their gills. As a group, they are much older than other vertebrates. The first fish developed about 500 million years ago. +Fish used to be a class of vertebrates. Now the term covers five classes of animals that live in the water: +Jawless fish +Armoured fish +Cartilaginous fish +Ray-finned fish +Lobe-finned fish +There are more fish than four-limbed animals: there are over 33,000 described species of fish. Fish are usually covered with scales. They have two sets of paired fins and several unpaired fins. Most fish are cold-blooded (poikilotherm). +There are many different kinds of fish. The thing to remember is that they all have adaptations, which are the features which let them live in the way they do. Yes, they do all live in water. But living in a fast-flowing river is different from living in a slow-moving river. In the sea, it matters the depth they live at. They live in fresh water in lakes and rivers (freshwater fish), and in salt water (marine fish) in the oceans. Some fish are less than one centimeter long. The largest fish is the whale shark, which can be almost 15 meters long and weigh 15 tons. Almost all fish live in the water. A group of fish called the lungfish have developed lungs because they live in rivers and pools which dry up in certain parts of the year. They burrow into mud and aestivate until the water returns. +The English word "fish" is not just one phylum. Some fish are more closely related to land animals than they are to other fish. For example, lobe-finned fish were the first animals with bones to come live on land, and all land animals are their descendants. Lobe-finned fish are more closely related to humans than to ray-finned fish. +Types of fish. +"Fish" is not a formal taxonomic grouping in systematic biology. Amphibians, reptiles, birds and mammals all descended from lobe-finned fish. But the use of the term "fish" is so convenient that we go on using it. +Fish are the oldest vertebrate group. The term includes a huge range of types, from the Middle Ordovician, about 490 million years ago, to the present day. These are the main groups: +Certain animals that have the word "fish" in their name are not really fish: crayfish are Crustacea, and jellyfish are Cnidaria. Some animals look like fish, but are not. Whales and dolphins are mammals, for example. +Anatomy. +Bony and cartilaginous fish. +Most kinds of fish have bones. Some kinds of fish, such as sharks and rays, do not have real bones. Their skeletons are made of cartilage, and so they are known as cartilaginous fish. +Fish scales. +All fish are covered with overlapping scales, and each major group of fish has its own special type of scale. Teleosts ('modern' fish) have what are called "leptoid" scales. These grow in concentric circles and overlap in a head to tail direction like roof tiles. Sharks and other chondrichthyes have "placoid" scales made of denticles, like small versions of their teeth. These also overlap in a head to tail direction, producing a tough outer layer. Shark skin is available for purchase as shagreen, a leather which as original is smooth in one direction, and rough in the other direction. It may be polished for use, but is always rough in texture and resistant to slipping. +The scales are usually covered with a layer of slime which improves passage through the water, and makes the fish more slippery to a predator. +There are various types of eel: most are in the Anguilliformes. Their life-style has evolved many times. Eels have scales with smooth edges or are absent. +Freshwater fish. +41% of all fish live in freshwater. There are also some important fish which breed in rivers, and spend the rest of their life in the seas. Examples are salmon, trout, the sea lamprey, and three-spined stickleback. Some fish are born in salt water, but live most of their mature lives in fresh water: for example the eels. +Species like these change their physiology to cope with the amount of salt in the water. +Saltwater fish. +59% of fish live in saltwater and are known as marine fish. Some of the common marine fish are from the family Pomacentridae and sub-family Pomacentrinae. Many of the smaller, colourful marine fish are used in aquariums. +Swimming. +Fish swim by exerting force against the surrounding water. There are exceptions, but this is usually done by the fish contracting muscles on either side of its body. This starts waves of flexion which travel the length of the body from nose to tail, generally getting larger as they go along. +Most fishes generate thrust using lateral movements of their body & tail fin (caudal fin). However, there are also species which move mainly using their median and paired fins. The latter group profits from the gained manoeuvrability. This is needed, for example, when living in coral reefs. Such fish cannot swim as fast as fish using their bodies & caudal fins. +Muscle. +Fish can swim slowly for many hours using red muscle fibres. They also make short, fast bursts using white muscle. The two types of muscle have a fundamentally different physiology. The red fibres are contined in the middle of the body along the spine and usually alongside a much greater number of white fibres. +The white fibres get their energy by converting the carbohydrate glycogen to lactate (lactic acid). This is anaerobic metabolism, that is, it does not need oxygen. They are used for fast, short bursts. Once the lactic acid builds up in the muscles, they stop working, and it takes time for the lactate to be removed, and the glycogen replaced. Using their white fibres, fish can reach speeds of 10 lengths per second for short bursts. +Swimming for long periods needs oxygen for the red fibres. The oxygen supply has to be constant because these fibres only operate aerobically. They are red because they have a rich blood supply, and they contain myoglobin. Myoglobin transports the oxygen to the oxidising systems. Red muscle gets its energy by oxidising fat, which weight for weight has twice as much energy as carbohydrate or protein. Using their red fibres, fish can keep up a speed of 3–5 lengths per second for long periods. +Swimming in groups. +Many fish swim in groups. Schools of fish can swim together for long distances, and may be chased by predators which also swim in schools. Casual groups are called 'shoals'. +Body shape. +The shape of the body of a fish is important to its swimming. This is because streamlined body shapes makes the water drag less. Here are some common fish shapes:- +The picture on the right shows a shark. This shark's shape is called "fusiform", and it is an ovoid shape where both ends of the fish are pointy. This is the best shape for going through water quickly. Fishes with fusiform shapes can chase prey and escape predators quickly. Many live in the open ocean and swim constantly, like marlins, swordfish, and tuna. Land animals which change to living in the sea may develop (evolve) shapes similar to fishes. Ichthyosaurs, porpoises, dolphins, killer whales all have similar shapes. This is an example of convergent evolution. +Eel-like. +The long, ribbon-like shape of an eel's body shows another shape. This enables them to hide in cracks, springing out quickly to capture prey, then returning quickly to their hiding spot. +Flatfish. +Flatfish live on the bottom of the ocean or lake. Most use camouflage: they change colours to match the ocean floor. During their early lives, their eyes move to the upper side of their flat body. +Reef fish also have flat bodies, and their body is often highly coloured. Flat bodies can slip in and out among the corals, sponges, and rocks, avoiding predators. Angelfish, surgeonfish, and butterflyfish are examples. +Fish as food. +People eat many different kinds of fish. These include carp, cod, herring, perch, sardines, sturgeon, tilapia, trout, tuna, and many others. A person who buys and sells fish for eating is called a fishmonger. +The word "to fish" is also used for the activity of catching fishes. People catch fish with small nets from the side of the water or from small boats, or with big nets from big boats. People can also catch fish with fishing poles and fishhooks with bait. This is often called angling. Anglers also different types of fishing lures. +Because people are catching too many fish for food or other uses such as for sport, there are less and less fish in the sea. This is a problem known as overfishing. +Fish as pets. +Selective breeding of carp made them into the domesticated koi in Japan, and goldfish in China. This breeding began over 2,000 years ago. The Chinese brought their goldfish indoors during the Song Dynasty. They kept them in large ceramic vessels. That we now do in glass fish tanks. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Fishing net.txt b/.github/workflows/data/simplewiki-500/Fishing net.txt new file mode 100644 index 000000000..3c3df9c84 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Fishing net.txt @@ -0,0 +1,5 @@ +A fishing net is a woven trap usually used to catch fish. They are usually made out of rope. A net is a kind of tool. +Fishing nets are one of the oldest ways of catching fish. They can be made with all kinds of fabric like nylon, cotton, grass, flax, and tree fibers. The oldest known fish nets dates back to 8500 BC in Finland. Native Americans made their nets on the Columbia River from grass, cedar, and spruce root fibers. +References. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Flame (disambiguation).txt b/.github/workflows/data/simplewiki-500/Flame (disambiguation).txt new file mode 100644 index 000000000..21bdd3ce9 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Flame (disambiguation).txt @@ -0,0 +1,3 @@ +A flame is the part of a fire that can be seen. Flame might also mean: +Other. +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Flaming.txt b/.github/workflows/data/simplewiki-500/Flaming.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Flesch Reading Ease.txt b/.github/workflows/data/simplewiki-500/Flesch Reading Ease.txt new file mode 100644 index 000000000..012ed8a17 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Flesch Reading Ease.txt @@ -0,0 +1,16 @@ +The Flesch Reading Ease (FRES) score says how easy something is to read. J. Peter Kincaid and others made this formula for the U.S. Navy in 1975. +How it works. +The FRES test works by counting the number of words, syllables, and sentences in the text. It then calculates the average number of words per sentence and the average number of syllables per word. The idea is that shorter words and shorter sentences are easier to read. The higher the score, the easier the text is to understand. The formula is: +formula_1 +Some points of reference for the score are: +The highest score possible is 121.22. It is gained if every sentence only has a one-syllable word. +"The cat sat on the mat" scores 116. There is no lower limit to this score. Some very complicated +sentences can have negative scores. +The Flesch score is usually lower for technical documentation because the topic itself is complicated. +Someone who uses the test regularly will develop a sense of a reasonable score for this type of writing. +They can then aim to align with this score. +The Flesch score for this subsection is 74. +Tools. +Tools to calculate the Flesch Reading Ease include: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Flesch-Kincaid Reading Level.txt b/.github/workflows/data/simplewiki-500/Flesch-Kincaid Reading Level.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Fog Index.txt b/.github/workflows/data/simplewiki-500/Fog Index.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Food.txt b/.github/workflows/data/simplewiki-500/Food.txt new file mode 100644 index 000000000..9a8f9b8b6 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Food.txt @@ -0,0 +1,21 @@ +Food is what people, plants and animals eat to live. Every organism needs energy to carry on with the process of living which comes from food. Food usually comes from animals and plants. It is eaten by living things to provide energy and nutrition. Food contains the nutrition that people and animals need to be healthy. The consumption of food is normally enjoyable to humans. +It contains protein, fat, carbohydrates, vitamins, water and minerals. Liquids used for energy and nutrition are often called "drinks". If someone cannot afford food they go hungry and could die. +Food for humans is mostly made through farming or gardening. It includes animal and vegetable sources. Some people refuse to eat food from animal origin, like meat, eggs, and products with milk in them. Not eating meat is called vegetarianism. Not eating or using any animal products is called veganism. +Food produced by farmers or gardeners can be changed by industrial processes (the food industry). Processed food usually contains several natural ingredients and food additives (such as preservatives, antioxidants, emulsifiers, flavor enhancers). For example, bread is processed food. +Food processing at home is done in the kitchen, by the cook. The cook sometimes uses a cookbook. Examples of cooking utensils are pressure cookers, pots, and frying pans. +Food can also be prepared and served in restaurants or refectory (in particular for children in school). +The utensils used may be a plate, knife, fork, chopsticks, spoon, bowl, or spork. +Many people do not grow their own food. They have to buy food that was grown by someone else. People buy most of their food in shops or markets. But some people still grow most or all of their own food. +People may buy food and take it home to cook it. They may buy food that is ready to eat from a street vendor or a restaurant. +Other countries have their own way of eating food. An example of an ethnic food is Mexican food. +Production of food. +Originally, people got food as hunter-gatherers. The agricultural revolution changed that. Farmers grew crops including those invented and improved by selective breeding. These improvements, for example the invention of maize, allowed feeding more people, and further improvements gave it a better taste. +Food shortage has been a big problem throughout history. Many people do not have enough money to buy the food that they need. Bad weather or other problems sometimes destroy the growing food in one part of the world. When people do not have enough food, we say that they are hungry. If they do not eat enough food for a long time, they will become sick and die from starvation. In areas where many people do not have enough food, we say that there is famine there. +Food and water can make people sick if it is contaminated by microorganisms, bad metals, or chemicals. +If people do not eat the right foods, they can become sick. +People may often have a variety of eating disorders that cause them to either eat too much, or not be able to eat certain things or amounts. Common diseases like Coeliac disease or food allergies cause people to experience ill effects from consuming certain foods that are normally safe. If people eat too much food, they can become overweight or obese. This causes numerous health problems. On the other hand, eating too little food, from lack of access or anorexia could cause malnutrition. Therefore, people have to balance the amount, the nutrition, and the type of food to be healthy. +Food in religions. +Many cultures or religions have food taboos. That means they have rules what people should not eat, or how the food has to be prepared. Examples of religious food rules are the "Kashrut" of Judaism and the "Halal" of Islam, that say that pig meat cannot be eaten. In Hinduism, eating beef is not allowed. Some Christians are "vegetarian" (someone who does not eat meat) because of their religious beliefs. For example, Seventh-day Adventist Church recommends vegetarianism. +In addition, sometime beliefs do not relate to the religion but belong to the culture. For example, some people pay respect to "Guān Yīn" mothergod and those followers will not consume "beef" as they believe that her father has a shape of the cow. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Foot (human).txt b/.github/workflows/data/simplewiki-500/Foot (human).txt new file mode 100644 index 000000000..3bf95fcdb --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Foot (human).txt @@ -0,0 +1,9 @@ +"Foot is also the name of a unit of measurement. See foot (unit). +A foot (one "foot", two or more feet) is a body part on the end of a leg. It is used when walking. It is also important for balance: it helps people stand straight. People also use it to kick, in both fighting and sports, football being an example. +People's hands and feet have the same shape: they both have five "digits" (the fingers and toes). Many other animals with backbones also have five digits. The part of the foot which joins it to the leg is called the "heel". The bottom of the foot is called the "sole". +Most land vertebrates have feet, and there are many different sorts of foot. The feet of monkeys are much like the hands. The hard foot of an ungulate is a hoof. When an animal has soft feet, or feet with soft parts on the underside, it is called a "paw". Many invertebrates also have feet. +Many use footwear to protect themselves from weather and dirt. There are multiple kinds of footwear, for example "sandals", "shoes", and "boots". When people do not remove footwear, especially in hot places or when they are very active, their feet can smell badly ("foot odour)". Wearing footwear that is too big or small can be bad for the feet, causing blisters. People who have foot, leg, and back problems can also get help from special shoes. +People have different traditions in different parts of the world for when to wear footwear. For example, in many countries, usually do not wear their shoes or boots in a home. In the United States people often wear shoes inside a home. In Japan, people do not wear shoes in homes, and floors are often made of very soft materials. In Japan it is also important to keep the floors clean. In cultures where people always wear shoes, people sometimes think it is bad not to wear them. Not wearing shoes can be good for the feet, especially if they are damaged. +Conditions like Athlete's foot affect the feet, causing the feet to feel dry and cracked. Doctors who work with people's feet are "podiatrists" or "chiropodists". +Bones. +Half the bones in a human body are in the foot. There are 26 bones there. They are 14 phalanges (toes), 5 metatarsals (arch of the foot), and 7 tarsals (ankle bones). \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/France.txt b/.github/workflows/data/simplewiki-500/France.txt new file mode 100644 index 000000000..8e69abdd0 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/France.txt @@ -0,0 +1,97 @@ +France ( or /ˈfrɑːns/; ]), officially the French Republic (, ]), is a country in Western Europe. It also includes various departments and territories of France overseas. +Mainland France extends from the Mediterranean Sea to the English Channel and the North Sea, and from the Rhine to the Atlantic Ocean. It is sometimes referred to as "L’Hexagone" ("The Hexagon") because of the shape of its territory. +France is a unitary semi-presidential republic. The head of state is the President, who is also a politician. The Prime Minister is secondary to the President. +Metropolitan France is bordered (clockwise from the North) by Belgium, Luxembourg, Germany, Switzerland, Italy, Monaco, Andorra, and Spain. The overseas departments and collectives of France share land borders with Brazil and Suriname (bordering French Guiana), and the Netherlands Antilles (bordering Saint Martin). France is linked to the United Kingdom by the Channel Tunnel, which passes under the English Channel. +France is the largest country in the European Union and the second largest in Europe. It has been one of the world's most powerful countries for many centuries. During the 17th and 18th centuries, France colonized much of North America. During the 19th and early 20th centuries, France built one of the largest colonial empires of the time. This included large parts of North, West and Central Africa, Southeast Asia, and many Pacific Islands. France is a developed country and has a large economy. +It is the most visited country in the world, with 82 million foreign visitors every year. +France was one of the first members of the European Union, and has the largest land area of all members. It is also a founding member of the United Nations, and a member of the Francophonie, the G8, NATO, and the Latin Union. It is one of the five permanent members of the United Nations Security Council. France has the largest number of nuclear weapons with active warheads, and the largest number of nuclear power plants, in the European Union. +France's official language is French, which is also official in 29 other countries. Some other French speaking countries include the Congo, Algeria, and Mauritius. +Geography and climate. +France is in Western Europe. France shares its borders with Belgium, Luxembourg, Germany, Switzerland, Italy, Monaco, Andorra, and Spain. France has two mountain ranges near its borders: the Alps in the east and the Pyrenees in the south. The climate of southern France is similar to Algeria which both have Mediterranean climate. There are many rivers in France, including the Seine and the Loire. In the north and the west of France, there are low hills and river valleys. +In France there are many different climates. The Atlantic has a major effect on the weather in the north and west. This means the temperature is about the same most of the year. It is in the marine west coast climate region. In the east, winters are cold and the weather is good. Summers are hot and stormy. In the south, winters are cool and wet. Summers are hot and dry. The north has a temperate climate similar to that of the United Kingdom and other Northern European countries. +France has the second-largest exclusive economic zone (EEZ) in the world. It covers 11,035,000 km2 (4,260,637 sq mi). Only the United States has a larger one. +History. +Name. +The name "France" comes from the Latin word Francia ', which means "land of the Franks". +Roman Gaul. +The borders of modern France are about the same as those of ancient Gaul. Celtic Gauls inhabited Ancient Gaul. Julius Caesar conquered Gaul for Rome in the 1st century BC. Eventually, the Gauls adopted Roman speech (Latin, from which the French language evolved) and Roman culture. Christianity first appeared in the 2nd and 3rd centuries AD. It became firmly established by the fourth and fifth centuries. +Franks. +In the 4th century AD, the Germanic tribes, principally the Franks invaded the Gauls. This is how the name "Francie" appeared. The modern name "France" comes from the name of the Capetian Kings of France around Paris. The Franks were the first tribe of Europe after the fall of the Roman Empire to convert to Christianity rather than Arianism. The French called themselves "the most Christian Kingdom of France". +The Treaty of Verdun (843), divided Charlemagne's Empire into three parts. The biggest area was Western Francia. It is similar to modern France. +Kingdom. +Middle Ages. +The Carolingian dynasty ruled France until 987, when Hugh Capet became King of France. His descendants, the Direct Capetians, the House of Valois and the House of Bourbon, unified the country with many wars and dynastic inheritance. +Enlightenment. +The monarchy was the most powerful during the 17th century and the reign of Louis XIV of France. At that time, France had the largest population in Europe. The country had a big influence over European politics, economy, and culture. French became the common language of diplomacy in international affairs. Much of the Enlightenment happened in France. French scientists made big scientific discoveries in the 18th century. France also conquered many overseas possessions in the Americas and Asia. +Republic. +Napoleonic Wars. +France had a monarchy until the French Revolution in 1789. King Louis XVI and his wife, Marie Antoinette, were executed in 1793. Thousands of other French citizens were killed. Napoleon Bonaparte took control of the Republic in 1799. He later made himself Emperor of the First Empire (1804–1814). His armies conquered most of continental Europe. The metric system was invented by French scientists during the French revolution. That time 3 estates were developed. +After Napoleon's final defeat in 1815 at the Battle of Waterloo, another monarchy arose. An interesting fact is that the French King Louis XIX was king for only 20 minutes from the time his father Charles X abdicated, to the time the July Monarchy started in 1830. Later Louis-Napoléon Bonaparte created the Second Empire in 1852. Louis-Napoléon was removed after the defeat in the Franco-Prussian war of 1870. The Third Republic replaced his regime. +Colonialism. +The large French colonial empire in the 19th century included parts of West Africa and Southeast Asia. The culture and politics of these regions were influenced by France. Many ex-colonies officially speak the French language. +World Wars. +The country actively took part in both the First and Second World Wars, with battles taking place on its soil. During the First World War, millions were killed in the trenches including over a million in the Battle of the Somme. The conditions were extremely difficult for the soldiers on the front. The last surviving veteran was Pierre Picault who died on 20 November 2008 at the age of 109. +During the Second World War, Nazis occupied France. The Allies landed in Normandy on 6 June 1944 and began the Battle of Normandy. German forces lost France in just a few months. +Divisions. +The 13 regions and 96 departments of metropolitan France include Corsica. France is divided into (administrative) regions: +Corsica has a different status than the other 12 metropolitan regions. It is called "collectivité territoriale". +France also has five overseas regions: +These five overseas regions have the same status as the metropolitan ones. They are like the overseas American states of Alaska and Hawaii. +Then France is divided into 101 departments. The departments are divided into 342 arrondissements. The "arrondissements" are re-divided into 4,032 cantons. The smallest subdivision is the commune (there are 36,699 communes). On 1 January 2008, INSEE counted 36,781 communes in France. 36,569 of them are in metropolitan France and 212 of them are in overseas France. +Government. +The government of France is a semi-presidential system determined by the constitution of the French Fifth Republic. It provides for a separation of powers. +The main ideals are expressed in the Declaration of the Rights of Man and of the Citizen. The constitution declares the nation to be "an indivisible, secular, democratic, and social Republic". With a Prime Minister subordinate to the President, this slightly strange system was chosen by General Charles de Gaulle in 1958. +Military. +The French armed forces has four branches: +France has about 359,000 military personnel. France spends 2.6% of its gross domestic product (GDP) on defense. This is the highest in the European Union. France and the UK spend 40% of the EU defence budget. About 10% of France's defence budget is for its nuclear weapons force. +Foreign relations. +France is a member of the United Nations. It is a permanent member of the United Nations Security Council and has veto rights. It is also a member of the World Trade Organisation (WTO). It hosts the headquarters of the OECD, UNESCO and Interpol. In 1953, the United Nations asked France to choose a coat of arms to represent them internationally. The French emblem is now on their passports. +France was a founding member of the European Union. In the 1960s, France wanted to exclude the United Kingdom from the organisation. It wanted to build its own economic power in continental Europe. France and Germany became closer after World War II. This was to try to become the most influential country in the EU. It limited the influence of the new Eastern European members. France is a member of the North Atlantic Treaty Organisation (NATO). However, under President de Gaulle, it left the joint military command. In the early 1990s, France received criticism for its underground nuclear tests in French Polynesia. France vigorously opposed the 2003 invasion of Iraq. France retains strong political and economic influence in its former African colonies. For instance it has supplied economic aid and troops for peace-keeping missions in the Ivory Coast and Chad. +Economy. +France is a member of the G8 group of leading industrialised countries. France has the eighth-largest economy in the world by Gross domestic product (GDP) (which takes into account how much it costs to live in different countries and inflation rates). France and 11 other European Union members jointly launched the euro on 1 January 1999 and started using it in 2002. +France's economy has nearly 2.9 million registered companies. The government has a considerable influence over railway, electricity, aircraft, and telecommunications firms (as it owns big companies like SNCF and EDF (French electricity)). France has an important aerospace (design of aircraft and spacecraft) industry led by Airbus. It can also launch rockets from French Guiana. +France has invested a lot in nuclear power. This made France the smallest producer of carbon dioxide among the seven most industrialised countries in the world. As a result, 59 nuclear power plants generate most of the electricity produced in the country (78% in 2006, up from only 8% in 1973, 24% in 1980, and 75% in 1990). +France is the leading agricultural producer and exporter in Europe. France exports wheat, poultry, dairy products, beef, and pork. It is also famous for its wine industry. France received 10 billion euros in 2006 from the European Community as subsidies to its farmers. +At one time, the Factory Act of 1833 limited the workday for women and children to 11 hours a day. +Demographics. +On 1 January 2008, it was estimated that 63.8 million people live in France, including in the Overseas Regions of France. 61,875,000 of these live in metropolitan France, the part of the country that is within Europe. +Ethnic groups. +The major ethnic groups living in France today are descended from Celtic people and Roman people. The significant minority groups living in France are: +Culture. +Language. +French is the official language of France. It belongs to the Romance language group, which includes Italian and Spanish. Many regional dialects are also used in France. Alsatian, a German dialect, is spoken in Alsace and in parts of Lorraine in eastern France. French was the language of diplomacy and culture in Europe between the 17th and 19th century and is still widely used. +Some people in France also speak Basque, Breton, Catalan, Corsican, German, Flemish, and Occitan. +There is around 200,000 Romani speakers in France, 950,000 speakers of different Arabic dialects (plus 220,000 occasional speakers) and 1.5 – 2 million speakers of different Berber dialects. +Religion. +France is a secular country and the constitution guarantees freedom of religion. The population is about 51% Roman Catholic, and 31% of people are agnostics or atheists. 5% are Muslim, 3% say they are Protestant and 1% say they are Jewish. 10% are from other religions or do not have an opinion about religion. There are also Zoroastrian, Unitarian Universalist, Jain and Wiccan communities. Religions founded in France include Raelism. +According to a Poll in 2007: +Literature. +French literature began in the Middle Ages. French was divided into several dialects at the time. Some authors spelled words differently from one other. +During the 17th century, Pierre Corneille, Jean Racine, Molière, Blaise Pascal and René Descartes were the main authors. +In the 18th and 19th centuries, French literature and poetry reached its best. The 18th century saw writings of authors, essayists and moralists as Voltaire and Jean-Jacques Rousseau. +As for French children's literature in those times, Charles Perrault wrote stories such as "Little Red Riding Hood", "Beauty and the Beast", "Sleeping Beauty" and "Puss in Boots". +Many famous French novels were written in the 19th century by authors such as Victor Hugo, Alexandre Dumas and Jules Verne. They wrote popular novels like The Three Musketeers, The Count of Monte-Cristo, Twenty Thousand Leagues Under the Sea, The Hunchback of Notre-Dame and Les Misérables. Other 19th century fiction writers include Emile Zola, Guy de Maupassant, Théophile Gautier and Stendhal. +Famous novels were written during the 20th century by Marcel Proust, Antoine de Saint-Exupéry, Albert Camus, Jean-Paul Sartre and Michel Houellebecq. +Sports. +The Tour de France cycling race in July is one of the best-known sporting events. It is a three-week race of around 3,500 km that covers most of France and ends in the centre of Paris, on the "Avenue des Champs-Elysées". Football is another popular sport in France. The French team won the FIFA World Cup in 1998 and 2018. They also won the UEFA European Football Championship in 1984 and 2000. France also hosts the 24 Hours of Le Mans car race. France also hosted the Rugby World Cup in 2007 and finished fourth. +France is closely associated with the Modern Olympic Games. At the end of the 19th century, the Baron Pierre de Coubertin suggested having the Olympic Games again. France hosted the Summer Olympics twice, in 1900 and 1924, in Paris. France will host the Summer Olympics in 2024, in Paris. France also hosted the Winter Games three times: in 1924 in Chamonix, in 1968 in Grenoble, and in 1992 in Albertville. +Cuisine. +French cuisine has influenced the style of cooking throughout Europe, and its chefs work in restaurants throughout the world. +The roots of modern "haute cuisine" lie in chefs like La Varenne (1615–1678) and the notable chef of Napoleon, Marie-Antoine Carême (1784–1833). These chefs developed a lighter style of food compared to the food of the Middle Ages. They used fewer spices, and more herbs and creamy ingredients. +Typical ingredients like roux and fish stock, and techniques such as marinading, and dishes such as ragout, were invented. Carême was an expert pâtissier (pastry-maker), and this is still a mark of French cooking. He developed basic sauces, his 'mother sauces'; he had over a hundred sauces in his repertoire, based on the half-dozen mother sauces. +French cuisine was introduced in the 20th century by Georges Auguste Escoffier (1846–1935). He was a genius at organisation. He worked out how to run large restaurants, as in a big hotel or a palace; how the staff should be organised; how the menu was prepared. He had methods for everything. Escoffier's largest contribution was the publication of "Le Guide Culinaire" in 1903, which established the fundamentals of French cookery. Escoffier managed the restaurants and cuisine at the Savoy Hotel and Carlton Hotel in London, the Hôtel Ritz Paris, and some of the greatest cruise ships. +Escoffier, however, left out much of the culinary character to be found in the regions of France. +Gastro-tourism and the "Guide Michelin" helped to make people familiar with the rich bourgeois and peasant cuisine of the French countryside in the 20th century. Gascon cuisine has also had great influence over the cuisine in the southwest of France. Many dishes that were once regional have become common all over the country. Cheese and wine are a major part of the cuisine, playing different roles regionally and nationally. In the north of France, people often prefer to use butter to cook. In the south, they prefer olive oil and garlic. In France, each region has its own special dish; choucroute in Alsace, quiche in Lorraine, cassoulet in the Languedoc-Roussillon, and tapenade in Provence-Alpes-Côte d'Azur. +In November 2010, French gastronomy was added by UNESCO to its lists of the world's 'intangible cultural heritage'. +Tourism. +France is the number one tourist destination in the world. In 2007, 81.9 million foreign tourists visited France. Spain comes second (58.5 million in 2006) and the United States comes third (51.1 million in 2006). +Some of the most famous attractions in Paris, are the Eiffel Tower and the Arc de Triomphe. Another one is Mont Saint Michel, in Normandy. +A European Disneyland is located in a suburb east of Paris. The resort opened in 1992 and is also a popular tourist destination in Europe. +References. +<templatestyles src="Reflist/styles.css" /> +Notes. +<templatestyles src="Reflist/styles.css" /> +Other websites. +Listen to this article · <br> +This audio file was created from an article revision dated 2009-03-17, and does not play the most recent changes to the article. () +More spoken articles \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Freedom.txt b/.github/workflows/data/simplewiki-500/Freedom.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Fruit.txt b/.github/workflows/data/simplewiki-500/Fruit.txt new file mode 100644 index 000000000..a7845984b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Fruit.txt @@ -0,0 +1,32 @@ +In botany, a fruit is a plant structure that contains the plant's seeds. +To a botanist, the word "fruit" is used only if it comes from the part of the flower which was an ovary. It is an extra layer round the seeds, which may or may not be fleshy. However, even in the field of botany, there is no general agreement on how fruits should be classified. Many do have extra layers from other parts of the flower. +In general speech, and especially in cooking, fruits are a sweet product, and many botanical fruits are known as vegetables. This is how ordinary people use the words. On this page, we describe what botanists call a fruit. +The fleshy part of a fruit is called the mesocarp. It is between the fruit's skin (exocarp) and the seeds. The white part of an apple, for example, is the "fleshy" part of the apple. Usually, when we eat a fruit, we eat the "fleshy" part. +Types of fruits. +Berry. +If the entire fruit is fleshy, except for maybe a thin skin, the fruit is called a berry. A berry might contain one seed or many. Grapes, avocados, and blueberries are berries. They all have a thin skin, but most of the fruit is fleshy. Don't get confused by the name of fruits like strawberries, because actually they are "not" berries. The seeds are on the outside: on a real berry, the seed or seeds are "inside" the fruit. +Pepo. +A pepo (pronounced "pee' po") is a modified berry. Its skin is hard and thick and is usually called a "rind". Pumpkins and watermelons, for instance, are pepos. +Hesperidium. +A hesperidium is another modified berry. It has a leathery skin that is not as hard as the skin of a pepo. All citrus fruit like oranges and lemon are hesperidiums. +Pome. +A pome (pohm) is a fruit that has a core surrounded by fleshy tissue that one can eat. The core is usually not eaten. Berries are different - the seeds are "inside" the fleshy part, not separated from it by a core. Apples and pears are pomes. +Drupe. +Drupes are also called stone fruit. A drupe is a fleshy fruit with a hard stone around the seed. We usually call this 'stone' the 'pit' of the fruit. Peaches and olives are drupes. Actually, the almond fruit is a drupe, too, though we eat the seed that is inside the 'pit' of the almond fruit. +Botanical fruits. +Since fruits are produced from fertilised ovaries in flowers, only flowering plants produce fruits. Fruits are an evolutionary 'invention' which help seeds get dispersed by animals. +The botanical term includes many that are not 'fruits' in the common sense of the term. such as the vegetables squash, pumpkins, cucumbers, tomato, peas, beans, corn, eggplant, and bell pepper and some spices, such as allspice and chili +Accessory fruits. +An accessory fruit or false fruit (pseudocarp) is a fruit in which some of the flesh is derived not from the ovary but from some adjacent tissue. +A fig is a type of accessory fruit called a syconium. Pomes, such as apples and pears, are also accessory fruits: the core is the true fruit. +Non-botanical fruits. +Strictly speaking, these are not botanical fruits: +Area of agreement. +These are fruits which you can buy in shops, and which are also acceptable as botanical fruits: +Many fruits come from trees or bushes. For plants, fruits are a means of dispersal, usually by animals. When the fruit is eaten, the seed(s) are not digested, and get excreted. Where fruits have big stones, just the soft parts are eaten. +Most fruits we eat contain a lot of water and natural sugars, and many are high in Vitamin C. They have a large amount of dietary fibre. Fruits are usually low in protein and fat content, but avocados and some nuts are exceptions to this. Not only humans, but our closest living relatives (primates) are keen fruit-eaters. So are many other groups of herbivorous mammals and many birds. +Seedless fruits. +Seedlessness is an important feature of some fruits of commerce. Commercial bananas, pineapple, and watermelons are examples of seedless fruits. Some citrus fruits, especially oranges, satsumas, mandarin oranges, and grapefruit are valued for their seedlessness. +Seedless bananas and grapes are triploids, and seedlessness results from the abortion of the embryonic plant which is produced by fertilisation. The method requires normal pollination and fertilisation. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Frying.txt b/.github/workflows/data/simplewiki-500/Frying.txt new file mode 100644 index 000000000..745df87ba --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Frying.txt @@ -0,0 +1,2 @@ +Frying is cooking food in hot butter or vegetable oil or other fat. We can fry food in a small amount of fat in a pan or in a lot of oil in a pot. Some restaurants use deep frying to fry a large amount of food. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/GFDL.txt b/.github/workflows/data/simplewiki-500/GFDL.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/GNU Free Documentation License.txt b/.github/workflows/data/simplewiki-500/GNU Free Documentation License.txt new file mode 100644 index 000000000..625350d7c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/GNU Free Documentation License.txt @@ -0,0 +1,18 @@ +The GNU Free Documentation License (GNU FDL or simply GFDL) is a copyleft license for open content such as software. It was made by the Free Software Foundation (FSF) for the GNU project. It was initially created for use with software documentation, but can be applied to other types of works as well, such as Wikipedia. +As a copyright license, the GFDL is a type of contract between the creator of a copyrightable work (such as a book, an encyclopedia article, a painting, or a piece of music) and anyone else who might want to use it. The GFDL is considered "copyleft" because the license is meant to make it easier to use and re-use the copyrighted work, not to restrict its use. +If a copyrightable work is released under the GFDL, the creator of the work is saying that anyone else may reproduce, distribute, or modify the work, as long as they follow a set of requirements specified in the GFDL. Among the requirements of the GFDL are that any new work created from the original work is also licensed under the GFDL—that is, once something is licensed as GFDL, it will always stay licensed as GFDL, and anything which uses it also is licensed as GFDL. +The GFDL also says that in order to distribute or modify a work licensed with the GFDL, the re-user must give credit to any previous authors of the work, and include a list of changes they made to the work. +Finally, any work licensed with the GFDL must contain, somewhere, the entire text of the license. This provision has been criticized, because it is not always easy to include an entire, long license with a copyrighted work. In a book, for example, it is easy to include one extra page with the license, but if the work is something like a song, or a photograph, it is not easy. +The GFDL has other requirements that are more complicated. For example, if part of the work is labeled as an "invariant section," it cannot ever be removed or changed by someone using the work ("invariant" means "does not change"). +Works licensed under the GFDL may be included in with non-GFDL-licensed works only if it is clear which parts of the work are licensed as the GFDL. For example, in a book of poetry it would be easy to label some poems as licensed under the GFDL and some not licensed under it. But it would not be easy to label if part of a song was licensed as GFDL and the rest was not, so this would not be allowed. +Any use of GFDL material which violates the terms of the GFDL is potentially copyright infringement. Infringement issues are managed through a community based approach with the approval and assistance of the Free Software Foundation. +A number of online projects use the GFDL. An online project to license its content under the GFDL is Wikipedia. +The GFDL has been criticized by many people who wish that it made it even easier for content to be re-used. Among the criticisms are that it is very hard to combine GFDL material with other copyleft licenses, that it is not always clear and easy to understand, and that some of its requirements, such as the "invariant sections", are not free at all. +History. +The GFDL was released in draft form for feedback in September 1999. After revisions, version 1.1 was issued in March 2000, version 1.2 in November 2002, and version 1.3 in November 2008. The current state of the license is version 1.3. +Conditions. +Material licensed under the current version of the license can be used for any purpose, as long as the use meets certain conditions. +Related pages. +<templatestyles src="Div col/styles.css"/> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Galaxy.txt b/.github/workflows/data/simplewiki-500/Galaxy.txt new file mode 100644 index 000000000..e38bf9010 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Galaxy.txt @@ -0,0 +1,26 @@ +A galaxy is a group of many stars, with gas, dust, and dark matter. The name 'galaxy' is taken from the Greek word "galaxia" meaning milky, a reference to our own galaxy, the Milky Way. +Gravity holds galaxies together against the general expansion of the universe. In effect, the expansion of the universe takes place between groups of galaxies, not inside those groups. Gravity holds the galaxy together. The same applies to groups and clusters of galaxies, such as our Local Group where the Milky Way is, and the Virgo Cluster, a collection of more than 1,000 (might even be 2,000) galaxies. The gravitation is produced by the matter and energy in a galaxy or group of galaxies. Everything in a galaxy moves around a centre of mass, which is also an effect of gravity. +There are various types of galaxies: elliptical, spiral and lenticular galaxies, which can all be with or without bars. There are also irregular galaxies. +All galaxies exist inside the universe. The observable Universe contains more than 2 trillion (1012) galaxies and, overall, as many as an estimated stars (more stars than all the grains of sand on planet Earth). +Description. +There are galaxies of different sizes and type. Typical galaxies range from dwarfs with as few as ten million (107) stars up to giants with a hundred trillion (1014) stars, all orbiting the galaxy's center of mass. Galaxies may contain many multiple star systems, star clusters, and various interstellar clouds. The Sun is one of the stars in the Milky Way galaxy; the Solar System includes the Earth and all the other objects that orbit the Sun. +Star clusters are not galaxies, they are inside galaxies. Globular clusters are spherical-shaped star clusters which are part of the outer halo of the Milky Way. One of the largest (and oldest) known star clusters, Messier 15, has several million stars, packed closely together, with a black hole at its centre. The stars are too closely packed to get an accurate count, but it certainly has more stars than some of the smaller galaxies. +Within galaxy clusters, galaxies move relative to other galaxies. They can and do collide. When this happens, the stars generally move past each other, but gas clouds and dust interact, and can form a burst of new stars. Gravity pulls both galaxies into somewhat new shapes, forming bars, rings or tail-like structures. +Many galaxies continue to form new generations of stars. The Milky Way, and all spiral shaped galaxies like it (see right side image of NGC 2997), produce new stars at a rate of one or two stars per year. This star formation happens in the vast interstellar clouds that account for about 1% to 10% of the mass of these galaxies. Globular star clusters, on the other hand, are not currently forming stars because this activity happened billions of years ago and then stopped once all of the gas and dust clouds were used up. +In the astronomical literature, the word 'Galaxy' with a capital "G" is used for our galaxy, the Milky Way. The billions of other galaxies are written as 'galaxy' with a lowercase "g". The term "Milky Way" first came out in the English language in a poem by Chaucer. +<templatestyles src="Template:Blockquote/styles.css" /> +When William Herschel wrote his catalogue of deep sky objects, he used the name "spiral nebula" for objects like the Andromeda Galaxy. 200 years later astronomers discovered that they are made of stars as the Milky Way is, so the term 'nebula' is now only used for diffuse structures in a galaxy. +Types. +There are two main kinds of galaxies, spiral galaxy and elliptical galaxy. They are classified according to the Hubble Sequence. +Spiral galaxy. +A spiral galaxy is a galaxy that has a spiral shape. Most of the galaxies in the universe observed by astronomers are spiral galaxies (about 77%). +They are divided into two : +NGC 1300 and NGC 1672 are examples of barred spiral galaxies. The Whirlpool galaxy and Messier 81 are examples of unbarred spiral galaxies. +The identifying characteristics of a spiral galaxy are disk-shaped rotating, spiral arms, and a bulge in the galactic core. The spiral arms are where new hot stars are born. "Bulge" in the galactic core has old stars. This feature is common to the most spiral galaxies. +Elliptical galaxy. +An elliptical galaxy is a galaxy that has a ellipsoid (3D of ellipse) shape. This type of galaxy are dominant in universe, especially in galaxy clusters. The shape ranges from circle, ellipse, and cigar-shaped. In Hubble Sequence, this shape can be represented as class : +Elliptical galaxies have a large range in size. The giant elliptical galaxy can be over a more 1 million light years and the smallest (know as "dwarf elliptical galaxy") are less than one-tenth the size of Milky Way The effective radius defines the area from which half its light comes. The mass of elliptical galaxy is also large. A giant elliptical galaxy can have mass of 1013 (many trillions) of solar masses. +Other kinds of galaxies. +A lenticular galaxy is a galaxy seen as a disc shape. The shape of a lenticular galaxy is between spiral galaxy and elliptical galaxy. The shape can be known by looking at the bulge of the galactic center. If the bulge is very bright, it is a spiral galaxy. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Gallon.txt b/.github/workflows/data/simplewiki-500/Gallon.txt new file mode 100644 index 000000000..69d8be173 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Gallon.txt @@ -0,0 +1,6 @@ +A gallon is a volumetric unit of measurement. People have used many different gallons throughout history. Only two gallons are still commonly used, which are the imperial and U.S. liquid gallon. 1 imperial gallon is 4.5 litres and 1 U.S. liquid gallon is 4.4 litres +Sale of petrol. +Petrol, also known as gasoline, is sold by the imperial gallon in four British Overseas Territories (Anguilla, the British Virgin Islands, the Cayman Islands, and Montserrat) and six countries (Antigua and Barbuda, Dominica, Grenada, Saint Christopher and Nevis, Saint Lucia, and Saint Vincent and the Grenadines). All of the countries and territories just mentioned also use miles per hour for speed limits and drive on the left side of the road. +Gasoline is sold by the U.S. gallon in Belize, Colombia, Dominican Republic, Ecuador, Guatemala, Haiti, Liberia, Nicaragua, and Peru, as well as in the Marshall Islands, Federated States of Micronesia, and Palau. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Geography.txt b/.github/workflows/data/simplewiki-500/Geography.txt new file mode 100644 index 000000000..f05e2783b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Geography.txt @@ -0,0 +1,19 @@ +Geography (from Greek: , "geographia", literally "earth description") is the study of earth and its people and one of social sciences. Its features are things like continents, seas, rivers and mountains. Its inhabitants are all the people and animals that live on it. Its phenomena are the things that happen like tides, hurricanes, tornadoes, earthquakes and more. +A person who is an expert in geography is a geographer. A geographer tries to understand the world and the things that are in it, how they started and how they have changed. +Geography is divided into two main parts which are: Physical geography and human geography. Physical geography studies the natural environment and human geography studies the human environment. The human environmental studies would include things such as the population in a country, how a country's economy is doing, and more. There is also environmental geography. +Maps are a main tool of geography, so geographers spend much time making and studying them. Making maps is called cartography, and people who specialize in making maps are cartographers. +Branches. +Physical geography. +Physical geography (or physiography) focuses on geography as an Earth science. It aims to understand the physical problems and the issues of lithosphere, hydrosphere, atmosphere, pedosphere, and global flora and fauna patterns (biosphere). +Physical geography can be divided into many broad categories, including: +Human geography. +Human geography is the social science that covers the study of people and their communities, cultures, economies and their interaction with the environment. Geographers studying the human environment may look at: +History. +The oldest known world map dates back to ancient Babylon from the 9th century BC. The best known Babylonian world map is the "Imago Mundi" of 600 BC. Star charts (maps of the sky) are of similar age. +During the Middle Ages, people in Europe made fewer maps. People in the eastern countries made more. Abū Zayd al-Balkhī created the "Balkhī school" of mapping in Baghdad. +Western Europe became known as the leader of geographic thought during the European Renaissance and The Age of Exploration (1400–1600). The printing press made maps and information about the world available to everyone. +This caused more interest in how the world worked. +In the 1700s and 1800s scientists started to study the relationship between the environment and its people +Related pages<templatestyles src="Div col/styles.css"/> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Geometry.txt b/.github/workflows/data/simplewiki-500/Geometry.txt new file mode 100644 index 000000000..36dd172d4 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Geometry.txt @@ -0,0 +1,12 @@ +Geometry (from Ancient Greek: Γεωμετρία (romanized: "Geometria" (English: "Land measurement") derived from Γη (romanized: Ge; English: "Earth" or "land") and also derived from Μέτρον) (romanized: "Métron"; English: "A measure")) is a branch of mathematics that studies the size, shapes, positions and dimensions of things. We can only see shapes that are flat (2D) or solid (3D), but mathematicians (people who study math) are able to study shapes that are 4D, 5D, 6D, and so on. +Squares, circles and triangles are some of the simplest shapes in flat geometry. Cubes, cylinders, cones and spheres are simple shapes in solid geometry. +Uses. +Plane geometry can be used to measure the area and perimeter of a flat shape. Solid geometry can measure a solid shape's volume and surface area. +Geometry can be used to calculate the size and shape of many things. For example, geometry can help people find: +Origins. +Geometry is one of the oldest branches of mathematics. Geometry began as the art of surveying of land so that it could be shared fairly between people. The word "geometry" is from a Greek word that means "to measure the land". It has grown from this to become one of the most important parts of mathematics. The Greek mathematician Euclid wrote the first book about geometry, a book called "The Elements". +Non-Euclidean geometry. +Plane and solid geometry, as described by Euclid in his textbook Elements, is called "Euclidean Geometry". This was simply called "geometry" for centuries. In the 19th century, mathematicians created several new kinds of geometry that changed the rules of Euclidean geometry. These and earlier kinds were called "non-Euclidean" (not created by Euclid). For example, hyperbolic geometry and elliptic geometry come from changing Euclid's parallel postulate. +Non-Euclidean geometry is more complicated than Euclidean geometry but has many uses. Spherical geometry for example is used in astronomy and cartography. +Examples. +Geometry starts with a few simple ideas that are thought to be true, called axioms. Such as: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Ghost.txt b/.github/workflows/data/simplewiki-500/Ghost.txt new file mode 100644 index 000000000..c973d468f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Ghost.txt @@ -0,0 +1,18 @@ + +In folklore a ghost, phantom, or spirit, is thought to be the soul of a dead person, usually one who tries to scare alive people. Scientists say that there is no proof that ghosts are real, but many people believe that they are. There are a lot of stories about ghosts in books and movies. Sometimes the ghost is the spirit of a person who was killed by someone or who was already dead. +The ghost may stay on Earth because he or she has unfinished problems or is still trying to say goodbye to people who they missed. Sometimes ghosts are said to live in a particular place, for example an abandoned house or a place that existed hundreds of years ago. +Sometimes the ghosts in these stories exist because of some problem the person had that was not solved before he or she died. The ghost stays on Earth trying to fix the problem. If the problem is fixed, the ghost can leave. Many people say they have seen or heard ghosts. People who try to talk to ghosts as their job are called mediums. +There can be bad ghosts and there can also be good ones. There have never been any ghosts that have actually hurt or killed people, although people tell stories about it. +Many people believe they have seen ghosts. Others believe they have felt ghosts near them. Often the ghost is said to appear as a feeling of cold and a light or a misty cloud, but sometimes people say they have seen ghosts that look more like people. Sometimes ghosts are said to come in human form. Some ghosts might cause fear in the person who sees them, by being seen suddenly. Some ghosts are said to be friendly and help people who have problems. People or animals that can sense ghosts cannot feel them touching them as they are the spirit of a person, or a personified force. +Ghosts are said to form right after people die, or even centuries later. Many people make up stories or urban legends. Many try to prove the existence of these paranormal creatures with special technology such as heat sensors. They also make TV shows dedicated to proving the existence of ghosts. They often investigate cases where a person has seen one or visit a place of sighting. +Stories of ghosts can be found all over the world. Chinese philosopher Confucius said "Respect ghosts and gods, but keep away from them." +The most feared spirit in Thailand is Phi Tai Hong, the ghost of a person who has died suddenly of a violent death. The Koran discusses spirits known as "jinn". In Europe there is the recurring fear of "returning" or "revenant" deceased who may harm the living. This includes the Scandinavian , the Romanian , the Serbian "vampir", the Greek "vrykolakas" among others. +The Bible. +There’s a story in the Second Book of Samuel where Samuel appears to Saul after Samuel is dead. +Modern times. +In modern days, ghosts have become common features in horror and fantasy stories. Their appearance can take the form of the person they once were or sometimes they are depicted wearing white cloaks over their body and face. +At Halloween, many people dress up as ghosts. +References. +<templatestyles src="Reflist/styles.css" /> +Other websites. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Glass.txt b/.github/workflows/data/simplewiki-500/Glass.txt new file mode 100644 index 000000000..e234ea946 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Glass.txt @@ -0,0 +1,10 @@ +Glass is a hard material that can be made in many shapes. It is usually transparent, but it can also be made in colours. Glass is mainly made of silica; glass made of silica only is called silica glass. +Glass used to make windows and bottles is a specific type called soda-lime glass, composed of about 75% silicon dioxide (SiO2), sodium oxide (Na2O) from sodium carbonate (Na2CO3), calcium oxide, also called lime (CaO), and several minor additives. +By changing the proportions, and adding different ingredients, many kinds of glass can be made. Coloured glass is made by adding small amounts of metal oxides. For example, a blue colour is given by tiny amounts of cobalt oxide. +Crystal glass is made by adding lead and zinc oxides. It is not actually a crystal because all glass is a non-crystalline solid. Crystal glass is called cut glass if it has been cut by hand: +" 'Cut glass' is glass that has been decorated entirely by hand by use of rotating wheels. Cuts are made in an otherwise completely smooth surface of the glass by workers holding and moving the piece against various sized metal or stone wheels". +Because glass is used to make lenses, the word "glasses" often means eyeglasses. +The myth that glass is actually a liquid comes from the fact that old windows in houses and churches (200–300 years old) are sometimes a little out of shape: thicker at the bottom than the top. This is actually due to the process of glass making in the past which led to the glass pane being thicker at one edge than the other. It was sensible to install the windows with the thick edge at the bottom. Sometimes a window can be found with the thick edge at the top of the window. +Glass can be recycled over and over. Glass bottles and jars can easily be recycled to make new glass bottles and jars or used in industry as aggregate (building material) or sand. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Goatee.txt b/.github/workflows/data/simplewiki-500/Goatee.txt new file mode 100644 index 000000000..bbb68ff72 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Goatee.txt @@ -0,0 +1,3 @@ +A goatee is a beard formed by a tuft of hair under the chin, resembling that of a billy goat. +Other websites. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/God's eye view.txt b/.github/workflows/data/simplewiki-500/God's eye view.txt new file mode 100644 index 000000000..d28243dc5 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/God's eye view.txt @@ -0,0 +1,3 @@ +God's eye view is a name for a point of view where the speaker or writer assumes he or she has knowledge only God would have. It appears several ways: +A special case of the last is in a wiki with a GodKing. Often this person can get others to believe what they say about what is right, without making any special effort to be fair to other views. +Many people think René Descartes took a God's eye view when he said cogito ergo sum. George Berkeley argued that optics from Isaac Newton and Johannes Kepler also had this problem. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/God.txt b/.github/workflows/data/simplewiki-500/God.txt new file mode 100644 index 000000000..b5e11d7f1 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/God.txt @@ -0,0 +1,31 @@ + +God is a being or spirit worshipped as a deity. God is considered to be the creator of the universe in some religions. Theists believe that God created everything that exists and has ever existed. Some theists think God is immortal (cannot die) and has power without limits. Deism is the belief that God exists, but God does not very often change or never changes things in the universe. Pantheism is the belief that the universe "is" God, while atheism is the belief that there are no deities. Agnostics think we cannot know for sure whether God or gods exist, but still might (or might not) believe at least one deity exists. People who believe that the word "God" should be defined before taking a theological position are ignostic. +In some religions, there is only one deity, God. This is called monotheism. Some monotheistic religions are the Abrahamic religions (Christianity, Judaism, and Islam), the Bahá'í Faith, and Sikhism. In other religions there are many gods. This is polytheism. Some polytheistic religions are Hinduism, Shinto, Taoism, paganism, Wicca and some variants of Buddhism. Some say that there is one God who can come in many forms, or that there is one God that is more powerful than the other gods. +In philosophy and theology, people normally write about a God that has a personality but no body and is everywhere at once; that God made the world and time and is separate from the world; that no-one made God; that God knows everything and has all power; that God is both free and good; and that God is perfect and the start of all morality. +There are different names for God in different religions. Some examples are Yahweh, Elohim in Judaism and Christianity, Allah in Islam, Baha in Bahá'í Faith, and Ahura Mazda in Zoroastrianism. +In English, people may write the words "god" and "gods" in lowercase letters. People that believe in only one god (monotheists) like to write "God" with a capital letter. Some people that believe in more than one god (polytheists) also like to use capital letters when writing about their gods. Most people that believe in God or gods do not believe in the gods of other religions. +Does God exist? +Many people have asked themselves if God exists. Philosophers, theologians, and others have tried to prove that it exists. Others have tried to disprove the hypothesis. In philosophical terminology, such arguments are about the epistemology of the ontology of God. The debate exists mainly in philosophy, because science does not address whether or not supernatural things exist. +There are many philosophical issues with the existence of God. Some definitions of God are not specific. Arguments for the existence of God typically include metaphysical, empirical, inductive, and subjective types. Some theories try to explain order and complexity in the world without evolution or scientific method. Arguments against the existence of God typically include empirical, deductive, and inductive arguments. Conclusions sometimes include: "God does not exist" (strong atheism); "God almost certainly does not exist" ("de facto" atheism); "no one knows whether God exists" (agnosticism); "God exists, but this cannot be proven or disproven" (deism or theism); and "God exists and this can be proven" (theism). There are many variations on these positions, and sometimes different names for some of them. For example, the position "God exists and this can be proven" is sometimes called "gnostic theism" or "strong theism". +Believing in God. +By the year 2000, approximately 53% of the world's population were part of one of the three main Abrahamic religions (33% Christian, 20% Islam, less than 1% Judaism), 6% with Buddhism, 13% with Hinduism, 6% with traditional Chinese religion, 7% with various other religions, and less than 15% as non-religious. Most of these religious beliefs involve God or gods. Some religions do not believe in a god or do not include the concept of gods. +God in the Abrahamic religions. +Abrahamic religions are very popular monotheistic ones. Well-known Abrahamic religions include Judaism, Christianity, and Islam. Monotheistic means the people in these religions believe there is only one God. The name of God is usually not allowed to be said in Judaism, but some Jews today call him YHWH (Yahweh) or Jehovah. Muslims say the word Allah, which is the Arabic word for "God". +Believers in the Abrahamic religions (except Islamic believers) believe that God has created human beings in his image, but this idea is not easily understood by humankind. One artistic idea is that of an wise elder man in use since the Renaissance. +God in Christianity. +The Christian Bible talks about God in different ways. Within Christian canon the Old Testament talks about "God the Father", whilst the Gospels in the New Testament are about Jesus, or "God the Son". Many Christians believe that Jesus was God's incarnation on Earth. Christians consider the Holy Spirit to be God as well, the third person of God. +In the New Testament, there are three beings who are said to be God in different forms: the Father, the Son, and the Holy Spirit (also known as the Holy Ghost). This is called the Trinity. Although the word "Trinity" is not in the Bible, the word used for God in chapter one of Genesis is actually plural, and the phrase "in the name of the Father, Son and Holy Spirit' is used in the New Testament, (e.g. Matthew 28:19). Another word that Christians believe has exactly the same meaning as "Trinity" is the word "Godhead", which "is" in the Bible. +Christians believe that God incarnated in a human body, through the normal birth process, normally growing up into a man named Jesus or (Yeshua), coming to Earth specifically to give every person an opportunity of salvation from their own evil, called sin. The effect of personal evil far transcends the repercussions humans cause to one another in the world, but affects one's relationship with God the Father, and that aspect of the self cannot be addressed through one's own self-improvement efforts, but requires God to intervene in order to set one right. When Jesus prayed and talked to God, he called him "Father," and taught others to do the same. +Jesus also taught that one must be born again in order to receive God's Spirit, otherwise one remains separated from God, acting merely from their own mind, thus being vulnerable to deception by human philosophies or the many spiritual philosophies which do not come from God but from fallen angels, which are within various false religions. After a person consciously accepts the free gift of eternal life, which Jesus's sacrifice offers, God comes to live in the individual, as God lived in humankind before the Fall. +God in Eastern religions. +In Hinduism, there is only one God, named Brahman, but Brahman is said to have taken on many different incarnations. Some of these are Rama, Krishna, Buddha, Shiva, Kali, Parvati, and Durga. To many outsiders, the worship of God's different incarnations is considered to be the worship of many gods. However, it is really only the worship of one God in different ways. +Some Hindus also believe that the spirit of God lives in everyone. This idea is called Advaita Vedanta, which is the Hindu term for Monism. +Religions like Buddhism and Confucianism involve the worship of many gods, or sometimes no gods at all. +In Shinto, there is not a single specific God, as is in most religions, but instead, a wide variety of deities called "kami", they are the spirit and essence of all nature things, both animate and inanimate, even including rocks, trees and poetry, for example. As Shinto is a polytheistic religion, it is usually believed that there are "eight-million Kami" (八百万の神 yaoyorozu-no-kami), in the Japanese language, the number "eight-million" is normally used to mean infinity. +God in Western philosophy. +Philosophers can talk about God or god; sometimes they talk about a specific god, but other times they are just talking about the idea of god. +One of the earliest Western philosophers to write about God in a monotheistic way was the Greek Aristotle, who describes god as the Supreme Cause. Aristotle saw God as a being that makes everything happen, but is not influenced by anything else. +The idea of an "all powerful" God raises some interesting questions. One of them is called the God paradox. It asks whether God can make a mountain (or rock) that is so heavy he cannot lift it. The question considers if a god "who can do anything" could do two things that are mutually contradictory. +There have been several attempts to prove the existence of God with logic. Blaise Pascal said that it is better to believe there is a god, than to believe there isn't. This argument is known as Pascal's wager today. Note that Blaise Pascal was a mathematician, and he used this argument to illustrate the concept of expected value in statistics. Other attempts known as the ontological argument, the cosmological argument, and teleological argument today. Kurt Gödel formulated an argument for the existence of God using modal logic in the 1970s. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Goodness.txt b/.github/workflows/data/simplewiki-500/Goodness.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Google.txt b/.github/workflows/data/simplewiki-500/Google.txt new file mode 100644 index 000000000..fea720e8c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Google.txt @@ -0,0 +1,17 @@ +Google is an American multinational corporation from the United States. Known for creating and running one of the largest search engines on the World Wide Web, also known as the (WWW). Every day more than a billion people use it. Google's headquarters (known as the "Googleplex") is in Mountain View, California, part of Silicon Valley. The motto of Google is "Do the right thing". +Overview. +Google's search engine can find pictures, videos, news, Usenet newsgroups, and things to buy online. By June 2004, Google had 4.28 billion web pages on its database, 880 million pictures and 845 million Usenet messages—six billion things. +Google's American website has an Alexa rank of 1, meaning it is the most widely visited website in the world. It is so widely known that people sometimes use the word "google" as a verb that means "to search for something on Google". Because more than half of people on the web use it, "google" has also been used to mean "to search the web". Most importantly, Google created the Google Gnome Game in June of 2010. +History. +Larry Page and Sergey Brin, two students at Stanford University, USA, started BackRub in early 1996. They made it into a company, Google Inc., on September 7, 1998, at a friend's garage in Menlo Park, California. In February 1999, the company moved to 165 University Ave., Palo Alto, California, and then later moved to Googleplex. +In September 2001, Google's rating system (PageRank, for saying which information is more helpful) got a U.S. Patent. The patent was to Stanford University, with Lawrence (Larry) Page as the inventor (the person who first had the idea). Google makes a percentage of its money through America Online and InterActiveCorp. It has a special group known as the Partner Solutions Organization (PSO) which helps make contracts, helps to make accounts better and gives engineering help. +Since June 1, 2016, Google has been owned by a holding company called Alphabet Inc.. That company has taken over some of Google's other projects, such as its driverless cars. It is a public company that trades on the NASDAQ under the ticker symbols GOOG and GOOGL. +Advertising. +Google makes money by advertising. People or companies who want people to buy their product, service, or ideas give Google money, and Google shows an advertisement to people Google thinks will click on the advertisement. +Google only gets money when people click on the link, so it tries to know as much about people as possible to only show the advertisement to the "right people". It does this with Google Analytics, which sends data back to Google whenever someone visits a website. From this and other data, Google makes a profile about the person and then uses this profile to figure out which advertisements to show. +Branding. +The name "Google" is a play of the word "googol". Milton Sirotta, nephew of U.S. mathematician Edward Kasner, made this word in 1937, for the number 1 followed by one hundred zeroes (10100). +Google uses this word because the company wants to make lots of stuff on the Web easy to find and use. Andy Bechtolsheim thought of the name. The name for Google's main office, the "Googleplex," is a play on a different, even bigger number, the "googolplex", which is 1 followed by one googol of zeroes 1010100. +References. +<templatestyles src="Reflist/styles.css" /> +Notes \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Government.txt b/.github/workflows/data/simplewiki-500/Government.txt new file mode 100644 index 000000000..6c0d80472 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Government.txt @@ -0,0 +1,29 @@ +A government is a group of people that have the power to rule in a territory, according to the administrative law. This territory may be a country, a state or province within a country, or a region. There are many types of government, such as democratic, parliamentary, presidential, federal or unitary. +Types of governments. +Plato listed five kinds of government in "The Republic:" +Democracy. +The most common type of government in the Western world is called democracy. In democracies, people in a country can vote during elections for representatives or political parties that they prefer. The people in democracies can elect representatives who will sit on legislatures such as the Parliament or Congress. Political parties are organizations of people with similar ideas about how a country or region should be governed. Different political parties have different ideas about how the government should handle different problems. Democracy is the government of the people, by the people and for the people. +However, many countries have forms of democracy which limit freedom of choice by the voters. One of the most common ways is to limit which parties can stand for parliament, or limit the parties' access to mass media such as television. Another way is to rig (unfairly manipulate or interfere with) the voting system by removing votes from opposition voters and substituting votes for the party in power. Few countries are textbook (classic, paradigmatic) democracies, and the differences between them has been much studied. +Monarchy. +A monarchy is a government ruled by a king, queen, emperor or empress who inherits their position from their family, which is often called the "royal family." There are two types of monarchies: absolute monarchies and constitutional monarchies. In an absolute monarchy, the ruler has no limits on their wishes or powers. In a constitutional monarchy a ruler's powers are limited by a document called a constitution. +In modern times, monarchies still exist in Great Britain and the Commonwealth of Nations, the Netherlands, Spain, Japan, Saudi Arabia, and Thailand, along with several other countries. A monarch may have one of several titles: King or Queen, Empress or Empress, or Emir. +Aristocracy. +An aristocracy is a government run by the people of a ruling class, usually people who come from wealthy families with a particular set of values, or people who come from a particular place. A person who rules in an aristocracy is an aristocrat. Aristocracy is different from nobility, in that nobility means that one bloodline would rule, whereas an aristocracy would mean that a few or many bloodlines would rule, or that rulers be chosen in a different manner. +Dictatorship. +Under a dictatorship, the government is run by one person who has all the power over the people in a country. A dictatorship may also be called one-man rule or autocracy. Plato called it tyranny. +Originally, the Roman Republic made dictators to lead during time of war. The Roman dictators (and Greek tyrants) were not always cruel or unkind, but they did hold power all by themselves, rather than sharing power with the people. Roman dictators only held power for a short period of time. +In modern times, a dictator's rule is not stopped by any laws, constitutions, or other social and political institutions, and can last many years or even decades. After leaving the Spanish Empire, many countries in Latin America were dictatorships. World War II was partly a war between dictators, and later new countries in Asia and Africa also were ruled by dictators. +Oligarchy. +An oligarchy is a government ruled by a small group of powerful people. These people may spread power equally or not equally. More so a different version of a monarchy, where everyone makes decisions together instead of one person making them all or telling people what to do, such as in a Dictatorship. An oligarchy is different from a true democracy because very few people are given the chance to change things. An oligarchy does not have to be hereditary or passed down from father to son. +An oligarchy does not have one clear ruler, but several powerful people. Some past examples of oligarchy are the former Union of Soviet Socialist Republics and Apartheid South Africa. A fictional example is the dystopian society of "Oceania" in the book Nineteen Eighty-Four. Some critics of representative democracy think of the United States as an oligarchy. Robert Michel's Iron Law of Oligarchy says all democratic organizations become oligarchies. This view is shared by anarchists and some libertarians. An oligarchy may have a leader in the ruling group. +The history and the theory of government. +The simplest idea of government is those who rule over people and land. This may be as small as a community or village or as big as a continent (like Australia). +The people who rule can allow others to own land. It is a deed by government that gives this right in the way that laws describe. Some think they have the right to hold land without government permission. This view is called libertarianism. Others think they can do without government. This view is called anarchism. +Almost every place on Earth is connected to one and only one government. Places without government are where people follow traditions instead of government rules, small border disputed areas and the continent of Antarctica, because almost no people live there. For every other place on Earth there is a government that claims 'sovereign control' over it. The word "sovereign" is old and means "control by a King" (sovereign). Governments of villages, cities, counties and other communities are subordinate to the government of the state or province where they exist, and then to that of the country. +It is from Kings and feudalism that modern governments and nation states came. The capital of a country, for instance, is where the King kept his assets. From this we get the modern idea of capital in economics. A government may regulate trade as well as to rule over land. +Governments also control people and decide things about what morality to accept or punish. In many countries, there are strict rules about sexual intercourse and drugs which are part of law and offenders are punished for disobeying them. +Tax is how government is paid for in most countries. People who buy, sell, import, invest, own a house or land, or earn money are made to pay some of the money to a government. +There are many theories of how to organize government better. These are called theories of civics. Many people think leaders must be elected by some kind of democracy. That way, they can be replaced at election. Many governments are not a democracy but other forms in which only a few people have power. +There are many theories of how to run a government better, and keep people from hurting each other. These theories are part of politics. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Grammar.txt b/.github/workflows/data/simplewiki-500/Grammar.txt new file mode 100644 index 000000000..b65650243 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Grammar.txt @@ -0,0 +1,25 @@ +Grammar is the study of words, how they are used in sentences, and how they change in different situations. The Ancient Greeks used to call it "grammatikē tékhnē", the craft of letters. It can have any of these meanings: +When we speak, we use the native person's grammar, or as near as we can. When we write, we try to write with correct grammar. So, speaking and writing a language each have their own style. +Languages. +All languages have their own grammar. Most European languages are rather similar. +Indo-European languages. +English makes few changes to its word endings ('suffixes'). In Romance languages (such as French, Italian, and Spanish), word endings carry a lot of meaning. In English we have just a few: plurals and possessives ("John's") are the most common. In our verbs we have dropped most endings except one: I love, you love, but "she loves". That final 's' comes from the Anglo-Saxon, which had more suffixes. Verbs do have endings which show changes in tense: walked, walking. +Word order. +Word order is the other big difference. Romance languages normally put adjectives after the nouns to which they refer. For example, in English, a person may say "I like fast cars", but in Spanish, it is "Me gustan los coches rápidos". The order of the words has changed: if just the words, without the grammar, are translated into English, it would mean 'to me they please the cars fast'. This is because Spanish and English have different rules about word order. In German, verbs often come near the end of sentences (as: "Die Katze hat das Futter gegessen"), whereas in English we usually put them between subject and object, as: "the cat has eaten the food". +Language fluidity. +Written grammar changes slowly but spoken grammar is more fluid. Sentences which English speakers find normal today, might have seemed strange 100 years ago. And they might not, because many of our favourite sayings come from the Authorized King James Version of the Bible, and from Shakespeare. +Different people speak with grammar that differs from that of other people. For example, people who use the dialects called General American English and BBC English might say, "I didn't do anything", while someone who speaks what is called African American Vernacular English or AAVE might say, "I didn't do nothing". London working class version: "I ain't done nuffink!" These are called "double negatives", and are found almost entirely in spoken English, and seldom written. +These differences are called dialects. The dialect a person uses is usually decided by where they live. Even though the dialects of English use different words or word order, they still have grammar rules. However, when writing in American English, grammar uses the rules of General American English. When people talk about using 'proper English', they usually mean using the grammar of general British English, as described in standard reference works. The models for "spoken" English in Britain are often called Received Pronunciation or BBC English. +Parts of speech. +Grammar studies nouns, pronouns, verbs, adjectives, adverbs, prepositions, conjunctions, sentences, phrases, clauses and interjections. +Nouns. +Nouns are 'thing' words like 'table and 'chair'. They are objects, things you see in everyday life. Proper nouns are names of specific places, people, or other things like days of the week. The name 'James' is a proper noun, as is 'Wednesday' and 'London'. Nouns can also be abstract things, such as 'suffering' or 'happiness'. +Verbs. +Verbs are words that describe actions: "Ryan threw the ball". State: "I am worried". The basic verb form is called the infinitive. The infinitive for existence is "to be". A famous example is the speech of Hamlet: "To be or not to be, that is the question". +Variations of the infinitive create verb tenses. +Adjectives. +Adjectives describe nouns. For example, the pretty in "pretty bicycle" says that the bicycle is pretty. In other words, the "pretty" is describing the bicycle. This can also happen with a place. For example, the tall in "that's a tall building" is describing the building. +Syntax. +Grammar studies syntax which is how the "parts of speech" fit together and create sentences. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Graph theory.txt b/.github/workflows/data/simplewiki-500/Graph theory.txt new file mode 100644 index 000000000..8bd3c6230 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Graph theory.txt @@ -0,0 +1,15 @@ +Graph theory is a field of mathematics about graphs. A graph is an abstract representation of: a number of points that are connected by lines. Each point is usually called a "vertex" (more than one are called "vertices"), and the lines are called "edges". Graphs are a tool for modelling relationships. They are used to find answers to a number of problems. +Some of these questions are: +History. + → +A visualization of the Seven Bridges of Königberg. Leonhard Euler solved this problem in 1736, which led to the development of topology, and modern graph theory. +A graph is an abstract data structure. It holds nodes that are usually related to each other. A node is a dataset, typically in the form of ordered pairs. Nodes are either connected or not connected to another node. The relation between nodes is usually defined as an Edge. Graphs are useful for their ability to associate nodes with other nodes. +There are a few representations of Graphs in practice. +Leonhard Euler used to live in a town called "Königsberg." (Its name changed to Kaliningrad in 1946). The town is on the river Pregel. There is an island in the river. There are some bridges across the river. Euler wanted to walk around and use each of the bridges once. He asked if he could do this. In 1736, he published a scientific article where he showed that this was not possible. Today, this problem is known as the Seven Bridges of Königsberg. The article is seen as the first paper in the history of graph theory. +This article, as well as the one written by Vandermonde on the "knight problem," carried on with the "analysis situs" initiated by Leibniz. Euler's formula was about the number of edges, vertices, and faces of a convex polyhedron was studied and generalized by Cauchy and L'Huillier, and is at the origin of topology. +The fusion of the ideas coming from mathematics with those coming from chemistry is at the origin of a part of the standard terminology of graph theory. In particular, the term "graph" was introduced by Sylvester in an article published in 1878 in "Nature". +One of the most famous and productive problems of graph theory is the four color problem: "Is it true that any map drawn in the plane may have its regions colored with four colors, in such a way that any two regions having a common border have different colors?" +Graph theory in perspective. +Graph theory is an important part of mathematics and computer science. To many such problems, exact solutions do exist. Many times however, they are very hard to calculate. Therefore, very often, approximations are used. There are two kinds of such approximations, Monte-Carlo algorithms and Las-Vegas algorithms. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Great Lakes.txt b/.github/workflows/data/simplewiki-500/Great Lakes.txt new file mode 100644 index 000000000..01a0c0dd0 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Great Lakes.txt @@ -0,0 +1,20 @@ +The Great Lakes are five large lakes in east-central North America. They hold 21% of the world's surface fresh water. +The five lakes are: Lake Superior, Lake Michigan, Lake Huron, Lake Erie, and Lake Ontario. +Geography. +Four of the Great Lakes are on the border between Canada and the United States of America. The other, Lake Michigan, is completely inside the United States. +All together, by volume, they are the largest group of fresh water lakes in the world. No one of the Lakes is larger than Lake Baikal (Russia) or Lake Tanganyika (East Africa). +The cities of Chicago, Illinois (9.8 million people, on Lake Michigan), Toronto, Ontario (5.5 million, on Lake Ontario); Detroit, Michigan (5.3 million, on the Detroit river); Montreal, Quebec (3.9 million, on the St. Lawrence River), Cleveland, Ohio (2.9 million, on Lake Erie), Buffalo, and Ottawa (1.2 million, Ontario, on the Ottawa River) are on the shores of the Great Lakes or their rivers. +Though the five lakes have separate basins, they form a single, connected body of freshwater. The lakes connect the east-central interior of North America to the Atlantic Ocean. Lakes Michigan, Huron and Erie are approximately equally high and ships can easily pass from one to the next. Water flows from Lake Superior and Lake Michigan into Lake Huron; then through the Detroit River into Lake Erie; then through Niagara Falls into Lake Ontario; and then through the Saint Lawrence River to the Atlantic Ocean. Water also drains from the Chicago River on the south. +Many rivers flow through a large watershed into the lakes. The lakes have about 35,000 islands. The Great Lakes region includes the five lakes and many thousands of smaller lakes, often called "inland lakes". +Lake Michigan and Lake Huron hit all-time record low levels in 2013. +The unusual shape of the Great Lakes has created the possibility of large waves called seiche. If a storm causes a fast, strong increase in air pressure on one side of a lake, the water level on that side of the lake will drop and suddenly push up the water level on the opposite side of the lake. A 10 foot tall wave in Chicago caused several deaths in 1954. +Ecological threats. +The Great Lakes are home to a variety of species of fish and other organisms. In recent years, overfishing caused a decline in lake trout. The drop in lake trout increased the alewife population. In response, the government introduced salmon as a predator to decrease the alewife population. This program was so successful that the salmon population rose rapidly, and the states surrounding Lake Michigan promoted 'salmon snagging'. This has been made illegal in all of the Great Lakes states except for a limited season in Illinois. Lake Michigan is now being stocked with several species of fish. However, several invader species such as lampreys, round goby, and zebra mussels threaten the native fish populations. +Invasive species. +Accidentally introduced species are a big problem. Since the 19th century about 160 species have invaded the Great Lakes ecosystem, causing severe economic and ecological impacts. According to the Inland Seas Education Association, they deprive fish of food, cause blooms of toxic algae, and foul boats, spawning areas and drinking water intakes. On average a new invasive species enters the Great Lakes every eight months. +Two important infestations in the Great Lakes are the zebra mussel, first discovered in 1988, and the quagga mussel in 1989. These molluscs are efficient filter feeders. They compete with native mussels, and also reduce available food and spawning grounds for fish. +Also, the mussels hurt utility and manufacturing industries by clogging or blocking pipes. The U.S. Fish and Wildlife Service estimates that the economic impact of the zebra mussel will be about $5 billion over the next decade. Because the quagga mussel is good at filtering plankton from the lake water, sunlight reaches deeper into the lake. This increases the growth of algae. +Pollution. +Chemicals from industrial plants run off the land into rivers and arrive in the lakes. Some of these chemicals are highly toxic, such as mercury. Contaminated water from sewer overflows also reaches the lakes, and beaches get closed because of the threat of pathogenic bacteria. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Green.txt b/.github/workflows/data/simplewiki-500/Green.txt new file mode 100644 index 000000000..d9a58b45a --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Green.txt @@ -0,0 +1,10 @@ +Green is a color between the yellow and blue colors in the rainbow. Green is a primary color (a color that can be mixed with another color) of light. The others are red and blue. +Green and blue are next to each other on the spectrum, and there are languages which do not distinguish between them. Examples are old Chinese, Thai, old Japanese, and Vietnamese. +Green paint can be made by mixing yellow paint and blue tempera paint together. +Green light, like all light, is quanta—composed of photons. The wavelength of green light is about 550 nanometers (one-billionth of a meter). +Most leaves of growing plants, such as trees and bushes, are green. This is because there is a chemical in leaves, called chlorophyll, which is colored green. +See color vision for more on the significance of green. +Tones of green color comparison chart. +Green is a color, the perception of which is evoked by light having a spectrum dominated by range with a wavelength of roughly 570-520 nm. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Hair.txt b/.github/workflows/data/simplewiki-500/Hair.txt new file mode 100644 index 000000000..5e8db9d69 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Hair.txt @@ -0,0 +1,29 @@ + Hair is something that grows from the skin of mammals. Hair is made of keratins, which are proteins. +Animal hair is usually called fur. Sheep and goats have curly hair, called wool. Wool is used to make many products, like clothing and blankets. +Humans and some other animals have lost much of their hair through evolution, and some other mammals, such as the elephant and the whale, have almost none at all. +Functions of hair. +Hair has different functions: +False hair. +Some animals, for example certain insects and spiders also have "hairs". However, these are not hair in the biological sense, but are actually bristles. The "hairs" found on certain plants are also not true hair, but trichomes. +Human hair. +In humans, hair grows mostly on the head, and the amount of body hair is different from person to person. +During puberty, both men and women experience hair growth, all over their body, especially armpit and pubic hair. However, men develop thicker and more abundant body hair, and develop beards and mustaches, with hairier arms and legs, and they generally grow hair on their chest, abdomen (belly) and back. Women in comparison, have much finer hair with a less abundant distribution. +Hair color. +Hair color is passed down by parents only. Natural hair color can be given only by genes. Natural hair color is passed down genetically by both mother and father. This relies on dominant and recessive genes carried by a parent. These genes may not be the color of their hair, however, many people carry genes that are recessive and do not show in their traits or features. +Dyeing hair is to change the color of hair. It consists of a chemical mixture which can change the color of hair by a chemical reaction. Many people dye their hair to hide gray or white hairs. This is because most people gain white or gray hairs as they grow older. +Genetics and chemistry. +Two types of melanin pigment give hair its color: "eumelanin" and "pheomelanin". Pheomelanin colors hair red. Eumelanin determines the darkness of the hair color. A low concentration of brown eumelanin results in blond hair, but more brown eumelanin will color the hair brown. High amounts of black eumelanin result in black hair, while low concentrations give gray hair. All humans have some pheomelanin in their hair. +The genetics of hair colors are not yet firmly established. According to one theory, at least two gene pairs control human hair color. +One phenotype (brown/blond) has a dominant brown allele and a recessive blond allele. A person with a brown allele will have brown hair; a person with no brown alleles will be blond. This explains why two brown-haired parents can produce a blond-haired child. +The other gene pair is a non-red/red pair, where the not-red allele is dominant and the allele for red hair is recessive. A person with two copies of the red-haired allele will have red hair, but it will be either auburn or bright reddish orange depending on whether the first gene pair gives brown or blond hair, respectively. +The two-gene model does not account for all possible shades of brown, blond, or red (for example, platinum blond versus dark blonde/light brown), nor does it explain why hair color sometimes darkens as a person ages. Several other gene pairs control the light versus dark hair color in a cumulative effect (quantitative genetics). +Hair texture. +Hair texture is also inherited genetically. The thickness of hair, its color and its tendency to curl are all inherited. There are also genetic differences between men and women. +Hair loss. +People have in between 90,000 to 130,000 hairs on their head. About 100-150 fall out each day (depending on thickness of hair), but they usually grow back. Some men are bald but girls and women may become bald if they lose their hair from a disease called alopecia. +Men often lose some of their hair as they grow older. This is known as "baldness". Doctors call it "male pattern baldness" because hairs often fall out in similar places. It often begins by hair falling out first from the front of the head, and then from the top of the head. After a while, all that may be left is a some hair running above the ears and around the lower back of the head. Even though it is unusual for women to go bald, many women suffer from thinning hair over the top of their head as they grow old. +People have tried to find cures for hair loss for thousands of years. In an effort to get their hair back, men have tried "cures" like applying strange lotions or even having their heads packed in chicken manure. Many unproven "cures" are still marketed today. It is only in the last decade or so that treatments have been developed which do sometimes work. Some doctors do hair transplants, where they take tiny plugs of hair from areas like the back of the neck and plant them in the bald spots on the head. Some drugs have been tested and approved for sale as hair loss treatments. They encourage hair regrowth and thickening, but work better if applied before hair loss turns to baldness. +History and culture. + People have been interested in hair on their heads for hundreds of thousands of years. For both men and women, styling and coloring hair have been ways to look good, and get attention. Sometimes society makes rules about hair, for example by not allowing people to cut their hair or beards, like in Sikhism, Judaism and Islam +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Harbor.txt b/.github/workflows/data/simplewiki-500/Harbor.txt new file mode 100644 index 000000000..195dfc523 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Harbor.txt @@ -0,0 +1,4 @@ +A harbor (American English) or harbour (British English) is a place where ships may shelter. Some harbors are used as ports to load and unload ships. The port will have quays or piers where the ships may be moored or tied up and a transport system for taking goods inland. Often railway and road transport will be used. Goods also move by pipeline transport and by smaller ships on rivers. +Harbor means to shelter or keep safe. Harbors can be natural as in San Francisco or artificial as in ancient Carthage or a mix of both. During the D-Day operations of 1944, two artificial harbors (named mulberry) were built just off the beaches where the invasion was happening. +References. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Hard Science.txt b/.github/workflows/data/simplewiki-500/Hard Science.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Hawaii (island).txt b/.github/workflows/data/simplewiki-500/Hawaii (island).txt new file mode 100644 index 000000000..9d2c5bbb5 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Hawaii (island).txt @@ -0,0 +1,4 @@ +The Island of Hawaiʻi is the largest U.S. Hawaiian Island, and it is the farthest south. It is also called the "Big Island." Its area is 4,038 sq. miles (10,458 km2). The widest part of the island is 93 miles (150 km) across. +The Big Island has more than half (~62%) of the total land area of State of Hawaii. It is part of County of Hawaii. +The island is seven separate shield volcanos that erupted more or less one at a time, one partly covering the other. These are (from oldest to youngest): Kohala (extinct), Mauna Kea (dormant), Hualalai (dormant), Mauna Loa (active), Kulani (extinct, mostly buried), and Kilauea (very active). The volcanos were caused by the Pacific oceanic tectonic plate moving over a hotspot. There lava from the Earth's lower mantle or upper core is close to the surface. +The largest city on the island is Hilo. Hilo has many historic buildings, interesting shops, parks, many performances, festivals and events. It is on the rainy, east side of the island. The city of Kailua-Kona is on the dry, west side of Hawaii, and is popular with tourists. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Hawaii Ponoi.txt b/.github/workflows/data/simplewiki-500/Hawaii Ponoi.txt new file mode 100644 index 000000000..0fa5ef448 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Hawaii Ponoi.txt @@ -0,0 +1,5 @@ +"Hawaiʻi Ponoʻī" (]; "Hawai's Sons") is the state song of Hawaii. The words were written by King David Kalakaua, the music by Prof. Henry Berger, the Royal Bandmaster. "Hawai`i Ponoi" was also the anthem of the Kingdom of Hawai`i and the Territory of Hawai`i. +References. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". + "This about the  can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Hawaii.txt b/.github/workflows/data/simplewiki-500/Hawaii.txt new file mode 100644 index 000000000..450396f65 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Hawaii.txt @@ -0,0 +1,22 @@ +Hawaii (sometimes spelled Hawai'i) is a U.S. state and the only U.S. State that is in Oceania. It is the last state that joined the United States, becoming a state on August 21, 1959. It is the only state made only of islands. Hawaii is also the name of the largest island. The capital and largest city of Hawaii is Honolulu on the island named Oahu. +Name. +Hawaii is known as the "Aloha State". "Aloha" is a Hawaiian word that has many meanings like welcome, hello and goodbye. Aloha also means love and care. The different meanings are brought together in the term "Aloha Spirit" to describe the friendly people of Hawaii. +Geography. +Hawaii is an archipelago, a long chain of islands. There are eight main islands and many small islands and atolls. They are the tops of underwater volcanos. The main islands are Niihau, Kauai, Oahu, Molokai, Lanai, Kahoolawe, Maui and Hawaii. +History. +The first people of Hawaii were Polynesians. They came to the islands sometime between 200 and 600 AD. Captain James Cook discovered the islands in 1778. Others may have been there before him. Captain Cook named the islands the Sandwich Islands for the fourth Earl of Sandwich, John Montague. +Kamehameha I was the first king of Hawaii. He united the separate small Hawaiian kingdoms into one large kingdom in 1795. In 1893, American soldiers stopped Queen Liliuokalani from leading Hawaii when American business people took over the government and made their own laws. She was the last monarch of Hawaii. She also wrote the original words of the song called "Aloha Oe". +The Americans made Hawaii into a republic for a short time. The new leader, Sanford Dole was called the President of Hawaii. In 1898, the United States of America took over the government and made Hawaii into a territory.In 1907, University of Hawaiʻi is established. In 1959, Hawaii became the fiftieth American state. In other words, it was taken ("annexed") against the wishes of its native people. Their queen, Lili’uokalani, wrote that “it had not entered into our hearts to believe that these friends and allies from the United States… would ever go so far as to absolutely overthrow our form of government, seize our nation by the throat, and pass it over to an alien power”. +Reason for statehood. +Early in World War II the U.S. Pacific Fleet was based on the Philippines. Perceiving that this was not safe, the navy moved its base to the Hawaiian islands, namely Oahu (the main island in the chain). It was there that the Japanese attacked Pearl Harbor. That was significant in the later discussions about the future of the islands. +Economy. +The biggest industry of Hawaii is tourism. Almost seven million people visited in 2000. Important exports are sugar, pineapple, macadamia nuts, and coffee. +Popular tourist sites include Waikiki Beach, Hawaii Volcanoes National Park, Polynesian Cultural Center, and the USS Arizona Memorial at Pearl Harbor. +State symbols. +The state flower is the yellow hibiscus ("Hibiscus brackenridgei" or ). The state bird is the Hawaiian goose (nene). The state fish is the reef triggerfish, also called the '. The state tree is the candlenut, also called "kukui". The state song is Hawaii Ponoi. The state motto is '. In English it says, "The life of the land is perpetuated in righteousness". +References. +<templatestyles src="Reflist/styles.css" /> +Notes +<templatestyles src="Reflist/styles.css" /> +Other websites. + Media related to at Wikimedia Commons \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Healing.txt b/.github/workflows/data/simplewiki-500/Healing.txt new file mode 100644 index 000000000..89072d489 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Healing.txt @@ -0,0 +1,5 @@ +Healing is a process that happens in the body. Through healing, cells are able to repair damaged tissue. +There are two different ways healing can happen: +Most healing processes combine both ways of healing. +Other websites. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Health.txt b/.github/workflows/data/simplewiki-500/Health.txt new file mode 100644 index 000000000..903118049 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Health.txt @@ -0,0 +1,13 @@ +Health is "a state of complete physical, mental, and social well-being, and not merely the absence of disease" according to the World Health Organization (WHO). "Physical" health is about the body. "Mental" health is about how people think and feel. "Social" health talks about how people live with other people. It is about family, work, school, and friends. +Aspects of health. +Physical health. +Physical fitness refers to good body health. It is dependent on genetic determinators and also on social, economic and ecological factors. That means, one's genes are partly responsible for one's physical health, but also other circumstances: where you live, how clean or polluted your water and the air around you is and also how good your social and medical system is. It is also the result of regular exercise, proper diet and nutrition, and proper rest for physical recovery. A person who is physically fit will be able to walk or run without getting breathless and they will be able to carry out the activities of everyday living and not need help. How much each person can do will depend on their age and whether they are a man or woman. +A physically fit person usually has a normal weight for their height. The relation between their height and weight is called their Body Mass Index. A taller person can be heavier and still be fit. If a person is too heavy or too thin for their height it may affect their health. Better health is central to human happiness and well-being. It also makes an important contribution to economic progress, as healthy populations live longer, are more productive, and save more. Many factors influence health status and a country's ability to provide quality health services for its people. +Mental health. +Mental health refers to a person's emotional and psychological well-being. "A state of emotional and psychological well-being in which an individual is able to use his or her thinking and emotional (feeling) abilities, function in society, and meet the ordinary demands of everyday life." +One way to think about mental health is by looking at how well a person functions. Feeling capable and efficient; being able to handle normal levels of stress, have good friends and family, and lead an independent life; and being able to "bounce back," or recover from hardships, are all signs of mental health. It’s normal for all of us to feel worried, sad, upset, or have difficult emotions from time to time. For most people though, these feelings are only temporary and are resolved without causing any long-term problems. However, for some people, these negative feelings can become worse over time and lead to a mental health problem such as depression, anxiety, stress or obsessive-compulsive disorder (OCD). +Public health. +Public health refers to trying to stop a disease that is unhealthy to the community, and does not help in living a long life or promote your health. This is fixed by organized efforts and choices of society, public and private clubs, communities and individuals. +It is about the health of many people, or everybody, rather than one person. Public health stops instead of encouraging a disease through surveillance of cases. To prevent being sick, it is good to act according to some simple advice: Hand washing, regular check-ups, vaccination programmes, drinking clean water, and using condoms. When infectious diseases break out, washing hands for about 30 seconds may be especially important. Sometimes it is necessary to avoid masses of people or wear a surgical mask to protect yourself and to stop the spreading of the disease. Teaching people how to live healthily and educate them, especially about sex and childbirth, is also very important. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Height.txt b/.github/workflows/data/simplewiki-500/Height.txt new file mode 100644 index 000000000..ac624301f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Height.txt @@ -0,0 +1,5 @@ +Height is the distance between the lowest end and highest end of an object. +For example, it is said the bottom of the foot is a person's lowest end, and the top of the head is a person's highest end. If the distance between the bottom of a person's foot and the top of that person's head is 64 inches, then that person's height is 64 inches. +Height is measured in 3D objects. 2D objects do not have height; they only have length and width. +Related pages. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Helium.txt b/.github/workflows/data/simplewiki-500/Helium.txt new file mode 100644 index 000000000..f97fc3d62 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Helium.txt @@ -0,0 +1,16 @@ +Helium is a chemical element. It has the chemical symbol He, atomic number 2, and atomic weight of about 4.002602. There are 9 isotopes of helium, only two of which are stable. These are 3He and 4He. 4He is by far the most common isotope. +Helium is called a noble gas, because it does not regularly mix with other chemicals and form new compounds. It has the lowest boiling point of all the elements. It is the second most common element in the universe, after hydrogen, and has no color or smell. However, helium has a red-orange glow when placed in an electric field. Helium does not usually react with anything else. Astronomers detected the presence of helium in 1868, when its spectrum was identified in light from the Sun. This was before its discovery on Earth. +Helium is used to fill balloons and airships because its density is lighter than air. It does not burn, so is safe for that kind of use. It is also used in some kinds of light bulbs. People can breathe in helium: It makes their voices sound higher than it normally does. This may seem silly, but it can actually be quite dangerous as if they breathe in too much, hypoxia can injure or kill them as they are not breathing normal air. Breathing too much helium can also cause long-term effects to vocal cords. +Helium is created through the process of nuclear fusion in the Sun, and in similar stars. During this process, four hydrogen atoms are fused together to form one helium atom. On Earth it is made by the natural radioactive decay of heavy radioactive elements like thorium and uranium, although there are other examples. The alpha particles emitted by such decays consist of helium-4 nuclei. +History. +Helium was discovered by the French astronomer Pierre Janssen on August 18, 1868, as a bright yellow line in the spectrum of the chromosphere of the Sun. The line was thought to be sodium. On the same year, English astronomer, Norman Lockyer, also observed it and found that it was caused by a new element. Lockyer and English chemist Edward Frankland named the element helium, from the Greek word for the Sun, ἥλιος ("helios"). +Characteristics. +Helium is the second least reactive noble gas after neon. It is the second least reactive of all elements. It is chemically inert and monatomic in all standard conditions. Helium is the least water-soluble monatomic gas. +Uses. +Helium is used as a shielding gas in growing silicon and germanium crystals, in making titanium and zirconium, and in gas chromatography, because it is inert. Helium is used as a shielding gas in arc welding. +Helium is mixed with oxygen and other gases for deep underwater diving because it does not cause nitrogen narcosis. +Helium is also used to condense hydrogen and oxygen to make rocket fuel. It is used to remove the fuel and oxidizer from ground support equipment before the rocket launches. It is used to cool liquid hydrogen in space vehicles before the rocket launches. +Helium is used as a heat-transfer medium in some nuclear reactors that are cooled down by gas. Helium is also used in some hard disk drives. Helium at low temperatures is used in cryogenics. +Supply. +Helium has become rare on Earth. If it gets free into the air it leaves the planet. Unlike hydrogen, which reacts with oxygen to form water, helium is not reactive. It stays as a gas. For many years after the 1925 Helium Act, the USA collected helium in a National Helium Reserve. American helium comes from wells in the Great Plains area. At present, more helium is supplied by Qatar than by the USA. +Several research organisations have released statements on the scarcity and conservation of helium. These organisations released policy recommendations as early as 1995 and as late as 2016 urging the United States government to store and conserve helium because of the natural limits to the helium supply and the unique nature of the element. For researchers, helium is irreplaceable because it is essential for producing very low temperatures. Helium at low temperatures is used in cryogenics, and in certain cryogenics applications. Liquid helium is used to cool certain metals to the extremely low temperatures required for superconductivity, such as in superconducting magnets for magnetic resonance imaging. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Herm.txt b/.github/workflows/data/simplewiki-500/Herm.txt new file mode 100644 index 000000000..126ab44d9 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Herm.txt @@ -0,0 +1,5 @@ +Herm is the smallest of the Channel Islands that is open to the public. +Herm is only 1​1⁄2 miles long. Cars are banned from the small island just like its Channel Island neighbour, Sark. Unlike Sark, bicycles are banned too. The sandy white beaches make Herm a walker's paradise. +Population: 60 (2002). + "This about a  can be made longer. You can help Wikipedia by [ adding to it]". + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Historian.txt b/.github/workflows/data/simplewiki-500/Historian.txt new file mode 100644 index 000000000..4031fd058 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Historian.txt @@ -0,0 +1,10 @@ +A historian is someone who studies history. Historians use written sources to understand past events and societies. +Education. +Professional historians often get a Master's degree or PhD. A Master's degree student spends most of their time in the classroom. A PhD student needs to write a long research paper known as a thesis to graduate. Classes focus on learning about history, not teaching history. However, most historians do need to teach history. +As a job. +Professional historians are often professors of history and teach it at colleges and universities. They share their ideas about history by writing books and articles. +Other historians work in public history. They may work in museums or at landmarks where important historic events happened. +References. +<templatestyles src="Reflist/styles.css" /> +Sources. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/History of Australia.txt b/.github/workflows/data/simplewiki-500/History of Australia.txt new file mode 100644 index 000000000..83fd75bf8 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/History of Australia.txt @@ -0,0 +1,15 @@ +People have lived in Australia for over 65,000 years. The first people who arrived in Australia were the Aboriginals and the Torres Strait Islanders. They lived in all parts of Australia. They lived by hunting, fishing and gathering. +Aboriginals invented tools like the boomerang, spear, and there is evidence that they used farming methods. Tradition was very important in their lives. Their religion is called the Dreamtime, which has lots of stories about the creation of the world by spirits. Aboriginal art started at least 30,000 years ago and there are lots of Dreaming stories painted on walls and cut in rocks all around Australia. Aboriginal music has songs about the Dreamtime, sometimes with special instruments like the didgeridoo. +In 1606 the first European, Dutch explorer Willem Janszoon, visited the west. Luís Vaz de Torres sailed through the water between Australia and New Guinea later that year. Only after Dirk Hartog chanced upon the west coast in 1616 did other European vessels visit and map the coast. After sixty more ships visited the coast, enough was known for a map to be published in 1811. The land was dry because of not much rain; some was a desert. The explorers thought no crops could be grown and so it would be difficult for people to live there. They decided there would be no economic reasons to stay. +In 1642, Dutchman Abel Tasman, working for the Dutch East India Company reached Tasmania, which he called Antony van Diemenslandt. He then called the continent he charted the north coast of on his second visit in 1644 New Holland. In 1688, William Dampier became the first Englishman to reach Australia. But in 1770 a British sailor, Captain James Cook, found the fertile east coast of Australia. He called it New South Wales, and claimed it for Britain. Englishman Matthew Flinders published his map of the coast in 1814, calling it Australia for the first time, a name later formally adopted by the authorities. +Colonial Australia. +The British decided to use the land visited by James Cook as a prison colony. Britain needed a place to send its convicts (people who had been sent to jail for theft and other crimes) because its gaols were full and it had just lost its American colonies in the American Revolutionary War. In 1788 the British First Fleet of 11 ships, carrying about 1500 people arrived at Botany Bay. Arthur Phillip led them as the first Governor of New South Wales. About 160 000 convicts were brought to Australia from 1788 until 1868. Free immigrants began arriving in the 1790s. +For the first few years they did not have much food, and life was very hard. But soon they began to farm, and more people came. Sydney grew, and new towns were started. Wool brought good money. By 1822, many towns had been set up and people from the towns often visited Sydney for additional economic resources. +Soon people from Sydney found other parts of Australia. George Bass and Matthew Flinders sailed south to Tasmania and a colony was started at Hobart in 1803. Hamilton Hume and William Hovell went south from Sydney by land. They found the Murray River, and good land in Victoria. Thomas Mitchell went inland, and found more rivers. In 1826, the first British military outpost was set up at King George Sound in Western Australia. The Swan River Colony was started in 1829, with townsites at Fremantle and Perth. In 1836, a free-settler colony was started in South Australia, where no convicts were ever sent. Queensland became a separate colony in 1859. As the towns and farms spread across Australia, the Aboriginal people were pushed off their land. Some were killed, and many died from illness and hunger. Soon, Australia's Aborigines were outnumbered by Europeans, and many were made to live on reserves. +The goldrushes of New South Wales and Victoria started in 1851 leading to large numbers of people arriving to search for gold. The population grew across south east Australia and made great wealth and industry. By 1853 the goldrushes had made some poor people very rich. +Convict transportation ended in the 1840s and 1850s and more changes came. The people in Australia wanted to run their own country, and self-govern. The first governments in the colonies were run by Governors chosen by London. Soon the settlers wanted local government and more democracy. The New South Wales Legislative Council, was created in 1825 to advise the Governor of New South Wales, but it was not chosen by voters. William Wentworth established the Australian Patriotic Association (Australia's first political party) in 1835 to demand democratic government for New South Wales. In 1840, the Adelaide City Council and the Sydney City Council were started and some people could vote for them (but only men with a certain amount of money). Then, Australia's first parliamentary elections were held for the New South Wales Legislative Council in 1843, again with some limits on who could vote. "The Australian Colonies Government Act" [1850] allowed constitutions for New South Wales, Victoria, South Australia and Tasmania. In 1850 elections for legislative councils were also held in the colonies of Victoria, South Australia and Tasmania. +In 1855, limited self-government was granted by London to New South Wales, Victoria, South Australia and Tasmania. A new secret ballot was introduced in Victoria, Tasmania and South Australia in 1856, allowing people to vote in private. This system was copied around the world. In 1855, the right to vote was given to all men over 21 in South Australia. The other colonies soon followed. Women were given the vote in the Parliament of South Australia in 1895 and they became the first women in the world allowed to stand in elections. In 1897, Catherine Spence became the first female political candidate. +Australians had started parliamentary democracies all across the continent. But voices were getting louder for all of them to come together as one country with a national parliament. So in January 1901, the Constitution of Australia came into effect. +In the 21st century, Julia Gillard became Australia’s first female Deputy Prime Minister in 2007, and the first unmarried female Prime Minister of Australia in 2010. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/History of Spain.txt b/.github/workflows/data/simplewiki-500/History of Spain.txt new file mode 100644 index 000000000..c44f435ad --- /dev/null +++ b/.github/workflows/data/simplewiki-500/History of Spain.txt @@ -0,0 +1,25 @@ +Spain is a country in Europe. +Early History. +People have lived on the Iberian Peninsula for about 500,000 years. Neanderthal man came about 200,000 years ago. Modern humans first came about 40,000 years. Thousands of years ago Iberians and Celts lived there, and the Phoenicians made a few cities there to get tin and silver to trade. +The Roman Empire controlled Spain for three hundred years; then people from Eastern Europe called Visigoths fought for Spain, won it from the Romans, and controlled Spain for over two hundred years. +Medieval times. +The Visigoths converted from Arian Christianity to Roman Catholics. Muslims who were Arab and Berber invaded in 711 and conquered Spain in 718. They called it Al-Andalus. Roman Catholics eventually decided to fight to take Spain back from the Muslims. They fought wars called the reconquista for more than seven hundred years. They also fought Crusades against other Christians like the Cathars. The Moors also fought each other for control of Al-Andalus. +In the year 1492, they took the last part of Spain that had belonged to the Moors. Boabdil, the last Moorish Leader of Granada, gave the city to King Ferdinand of Aragon on 2 January 1492, and Christians now ruled all of Spain. +Before this, several different kings had ruled different countries in what is now called Spain. Two of these countries, Castile and Aragon, came together when the king of Aragon, Ferdinand II, married the queen of Castile, Isabella. +In the same year, 1492, they decided to send Christopher Columbus to explore the Atlantic Ocean. Columbus found a land there that the people of Europe did not yet know. These were the islands of the Caribbean Sea. +Late 15th century. +Columbus and other sailors explored more and found that there were two continents there - North America and South America. Spain sent many soldiers and businessmen to North and South America, and they took over very large parts of those two continents. Owning this empire made Spain very rich. But when they conquered that empire, they killed millions of the Native Americans who had lived there before. Spain owned this empire for more than three hundred years. +Meanwhile, at home, the Muslim manuscripts had been either burnt or spread to other countries. Jews had been expelled from Spain. The multicultural society was destroyed, and so was the learning. Among the few things kept and respected in Spain were in music: harmony and stringed instruments, and of course the buildings, many of which became churches, by adding crosses. +16th and 17th centuries. +The Spanish Empire was the strongest in the world through most of the next two centuries, thanks to gold from the Americas. This new gold made rulers and colonial governors rich. Meanwhile, others' savings became worth less due to inflation. Spain became a society of very rich and very poor. Some of the poorest went to the new colonies in the Caribbean, Central America and South America, mostly to find gold. +Native American peoples were killed by diseases brought by the Spaniards, but most Spaniards did not know this. They found damaged and dying societies with people who had lost some of their most important leaders and thinkers. The Spaniards thought this meant they were inferior, and used this as an excuse to enslave the natives. Millions of natives died mining gold for the Spanish. +The Spanish Empire also at this time funded the Spanish Inquisition which tortured and killed anyone who disagreed with the Roman Catholic Church. The Reformation which created Protestant sects in Europe was not allowed into Spain, it was kept out and, as with Jews or Muslims, its believers were killed. +The nobles of Spain no longer had to fight anyone since the internal feuds were over. No one could challenge their power. In many ways it was held together as a reign of terror. People who challenged them were often called heretics, so that the Inquisition could torture them, and then nobles take the property. +For ordinary people on both sides of the Atlantic Ocean, life got worse. A few rulers got rich. Today we would say that these people were guilty of war crimes, genocide and crimes against humanity. Many Church people who had the power to speak out at that time, did so, and they said many of the same things as we would say today. But none of this mattered much to the rulers. +The great satire Don Quixote was written about this time. +18th century. +In the 18th century, there was doubt over who should become king of Spain; this doubt led many of the kings of Europe to fight to become king of Spain. This was called the War of the Spanish Succession. +France occupied Spain for a long time. This made Spain very weak. It also made Spain lose its empire in North and South America; all of the parts of that empire became their own countries, or were taken over by other countries such as the United States of America. +20th century. +There was not much peace in Spain during the first part of the 20th century. Some Spaniards tried to set up a government chosen by the people (a democracy), and they made the King of Spain leave the country. However, in 1936, two different groups of Spaniards went to war over whether the government should be a democracy, or take orders from one person. In 1939, those who wanted democracy were defeated, and a dictator named Francisco Franco took over the government. +Franco died in 1975. He had decided that Spain should have a king again, and he chose Juan Carlos, the grandson of the king who had been forced to leave the country, to be king. But the king did not rule as a dictator; instead, he chose to set up a democracy. Also since Franco's death, Spain appointed Adolfo Suárez to became Spain's first democratically elected prime minister. Now Spain is a modern democratic country, and does business with many countries around the world. It is a part of the European Union. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/History.txt b/.github/workflows/data/simplewiki-500/History.txt new file mode 100644 index 000000000..9057c4c7d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/History.txt @@ -0,0 +1,7 @@ +History is the study of past events. People know what happened in the past by looking at things "from" the past including sources (like books, newspapers, scripts and letters), buildings and different types of artifacts (like pottery, tools, coins and human or animal remains.) Libraries, archives, and museums collect and keep these things for people to study history. A person who studies history is called a historian. A person who studies pre-history and history through things left behind by ancient cultures is called an archaeologist. A person who studies mankind and society is called an anthropologist. The study of the sources and methods "used to study and write" history is called historiography. +People can learn about the past by talking to people who remember things that happened at some point in the past. This is called oral history. For example, when people who had been slaves and American Civil War survivors got old, some historians recorded them talking about their lives, so that history would not be lost. +In old times people in different parts of the world kept separate histories because they did not meet each other very often. Some groups of people never met each other. The rulers of Medieval Europe, Ancient Rome and Ancient China each thought that they ruled the only important parts of the world and that other parts were "barbarian". But they were still connected, even if they didn't realize it. +The term "historically" is used to say that something has been a certain way during most of its history. For example, a historically female university is a university which has had a student body that was mostly or entirely female for most of its history. +Timeline of human history. +<templatestyles src="Div col/styles.css"/> +Current events, modern economic history, modern social history and modern intellectual history take very different views of the way history has affected the way that we think today. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Home page.txt b/.github/workflows/data/simplewiki-500/Home page.txt new file mode 100644 index 000000000..9149313a5 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Home page.txt @@ -0,0 +1,8 @@ +The home page of a website is the document that a web server sends to another computer's web browser application when it has been contacted without a request for specific information. That is, when one enters only a domain name in the Address box without specifying a directory or a file, the "home page" is usually the first part of the website one would be taken to. The Home Page is also called the Main Page. +A properly written home page will tell a user about the information available on the website, and how to view different parts of the website. +The home page of "simple.wikipedia.org" can be found at this link. +Home Page was a popular computer application used for composing web pages. +In Linux servers. +In Linux-based servers, the homepage is default.html, default.php, etc. This is a problem for website administrators to install website applications like MediaWiki. Mainly because most website applications are created with the homepage as index.php for PHP applications. +In Windows servers. +Similarly, in Windows-based servers, the homepage is default.html, default.php, etc. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Honolulu.txt b/.github/workflows/data/simplewiki-500/Honolulu.txt new file mode 100644 index 000000000..a7ce63cfd --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Honolulu.txt @@ -0,0 +1,9 @@ +Honolulu is the capital city of the U.S. state of Hawaii. It is also the largest city in Hawaii and it has the most important harbor. It is on the south-east shore of the island of Oahu. +Etymology. +Honolulu means "sheltered harbor" in the Hawaiian language. No one knows for sure when Honolulu was first settled or when the name was first used. +History. +Honolulu harbor was called Kulolia before foreigners came. The first foreigner was Captain William Brown of the English ship Butterworth, in 1794. He named the harbor Fair Haven. Other foreign captains started calling it Brown's Harbor. The name Honolulu was used some time after that. +Honolulu quickly became the most important harbor of Hawaii. At that time, sandalwood was a big export. Honolulu was also an important supply point for whalers. +Kamehameha III made Honolulu the capital city of the Kingdom of Hawaii in 1850. It was also the capital of the Republic of Hawaii and the Territory of Hawaii. It stayed the capital when Hawaii became a state in 1959. +References. + "This about a  can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Human body.txt b/.github/workflows/data/simplewiki-500/Human body.txt new file mode 100644 index 000000000..4a4fcce57 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Human body.txt @@ -0,0 +1,12 @@ +The human body is the body of a person. It is the physical structure of a person. +The body is a thing that can be hurt or killed. Its functions are stopped by death. You need your muscles and your joints to move. +Study of the human body. +Some people study the human body. They look at where it is different from, or the same as, other animals' bodies. These animals can be alive today. Or they can be extinct animals like other hominids. (Hominids are primates that are close to humans. Neanderthals and "Homo erectus" were hominids.) Some people study how the human body works and lives in its environment. Some people study what people think about their body. Artists study how to draw or paint the human body. +Fields of study. +Many different fields of study look at the human: +Organ system. +Various organ systems give the body the ability to live and do things. +The human body and other animals. +The human body is like other animals. The skeleton, muscles and other parts are very much like those of other primates. Our body is also like other mammals, and somewhat like other vertebrates. DNA differences follow a similar pattern. The human genome is closer to that of other primates than to other vertebrates, and closest to chimpanzee. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Human death.txt b/.github/workflows/data/simplewiki-500/Human death.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Hydrogen.txt b/.github/workflows/data/simplewiki-500/Hydrogen.txt new file mode 100644 index 000000000..7d0a27432 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Hydrogen.txt @@ -0,0 +1,43 @@ +Hydrogen is a chemical element. It is the simplest element and the first in the periodic table. It has the symbol H and atomic number 1. Hydrogen also has a standard atomic weight of 1.008. This makes it the lightest element. Hydrogen is a gas at 15 degrees Celsius (59 degrees Fahrenheit) at standard atmosphere (and in many other situations). When hydrogen is in the form of "hydrogen gas", then each "hydrogen molecule" has two "hydrogen atoms". +In standard conditions, hydrogen is a diatomic gas with the formula , or dihydrogen. In this state, hydrogen is also called hydrogen gas or molecular hydrogen. Hydrogen has no color, smell, or taste. Hydrogen is not toxic and is very combustible. +Hydrogen is the most common chemical element in the universe. Hydrogen is almost 75% of all normal (baryonic) matter by mass. Most stars are made of mostly hydrogen. The hydrogen in the stars are in a plasma state. On Earth, hydrogen is seen in water and organic compounds. Hydrogen's most common isotope has one proton and no neutrons. This isotope also has one electron orbiting around it. +Hydrogen is usually nonmetallic and can form covalent bonds with most nonmetals. These covalent bonds can create molecules such as water and other organic substances. Hydrogen is the main part of acid–base reactions. These reactions exchange protons in soluble molecules. In ionic compounds, ions can either be anions or cations. Hydrogen anions are negatively charged and are called hydrides. Hydrogen cations are positively charged and are written as . Cations are also called protons (symbol p), because they are only made of a proton and nothing else. +Hydrogen gas was first made artificially in the 1700s. Henry Cavendish identified hydrogen gas as a distinct substance between 1766 and 1781. +Most hydrogen production is from steam reforming natural gas. Hydrogen has many industrial uses. Hydrogen can be used to process fossil fuels, hydrocrack, and produce ammonia. +Properties. +Hydrogen is grouped as a reactive nonmetal. This is different from the other elements found in the first group of the periodic table, which are called alkali metals. Only the solid form of hydrogen should behave like a metal, though. +When hydrogen is by itself, it will normally bind with itself to make dihydrogen (H2). Dihydrogen is very stable because of its high bond-dissociation energy of 435.7 kJ/mol. +At normal temperature and pressure, hydrogen gas (H2) has no color, smell, or taste. It is also not poisonous. This is because it is a nonmetal and burns very easily. Hydrogen gas at this state also has low density and is not corrosive. +Combustion. +Molecular hydrogen is flammable and reacts with oxygen: +2 H2(g) + O2(g) → 2 H2O(l) + 572 kJ (286 kJ/mol) +At temperatures higher than 500 °C, hydrogen suddenly burns in air. This is called hydrogen autoignition temperature. +Compounds. +While hydrogen gas in its natural form is not reactive, it does form compounds with many elements, especially halogens, which are very electronegative, meaning they want an electron very badly. Hydrogen also forms massive arrays with carbon atoms, forming hydrocarbons. The study of the properties of hydrocarbons is known as organic chemistry. +The H- anion (negatively charged atom) is named a hydride, though the word is not commonly used. An example of a hydride is lithium hydride (LiH), which is used as a "spark plug" in nuclear weapons. +Acids. +Acids dissolved in water normally contain high levels of hydrogen ions, in other words, free protons. Their level is generally used to determine its pH, that is, the content of hydrogen ions in a volume. For example, hydrochloric acid, found in people's stomachs, can dissociate into a chloride anion and a free proton, and the property of the free proton is how it can digest food by corroding it. +Though uncommon on Earth, the H3+ cation is one of the most common ions in the universe. +Isotopes. +Hydrogen has 7 known isotopes, two of which are stable (1H and 2H), which are commonly named protium and deuterium. The isotope 3H is known as tritium, has a half-life of 12.33 years, and is produced in small amounts by cosmic rays. The 4 isotopes left have half-lives on the scale of yoctoseconds. +Hydrogen in nature. +In its natural form on Earth, hydrogen is generally a gas. Hydrogen is also one of the parts that make up a water molecule. Hydrogen is important because it is the fuel that powers the Sun and other stars. +Hydrogen makes up about 74% of the complete universe. +Natural hydrogen is normally made of two hydrogen atoms connected together. Scientists name these diatomic molecules. Hydrogen will have a chemical reaction when mixed with most other elements, though it has no color or smell. +Natural hydrogen is very uncommon in the Earth's atmosphere, because nearly all primordial hydrogen would have escaped into space because of its weight. In nature, it is generally in water. Hydrogen is also in all living things, as a part of the organic compounds that living things are made of. In addition, hydrogen atoms can join with carbon atoms to form hydrocarbons. Petroleum and other fossil fuels are made of these hydrocarbons and commonly used to make energy. +Some other facts about hydrogen: +History of Hydrogen. +Hydrogen was first separated in 1671 by Robert Boyle. In 1776, Henry Cavendish identified it as its own element and named it "inflammable air". He saw in 1781 that burning it made water. +Antoine Lavoisier gave Hydrogen its name, from the Greek word for water, 'υδορ (read /HEEW-dor/) and gennen meaning to "produce" as it forms water in a chemical reaction with oxygen. +Big Bang (or the creation of our universe). +Hydrogen did not begin to form a second after the Big Bang. These hydrogens did not have any neutrons or electrons. The first neutral hydrogen with an electron would not form until 380,000 years later during the recombination epoch, when the universe was cold enough for hydrogens to attract electrons. +Uses of Hydrogen. +The most common uses are in the petroleum industry and in making ammonia by the Haber process. Some is used in other places in the chemical industry. A little of it is used as fuel, for example in rockets for spacecraft. Most of the hydrogen that people use comes from a chemical reaction between natural gas and steam. +Nuclear fusion. +Nuclear fusion is a very powerful source of energy. It depends on forcing atoms together to make helium and energy, as in a star like the Sun, or in a hydrogen bomb. This needs a large amount of energy to get started, and is not easy to do currently. A big advantage over nuclear fission, which is used in today's nuclear power stations, is that it makes less nuclear waste and does not use a poisonous and uncommon fuel like uranium. More than 600 million tons of hydrogen undergo fusion every second on the Sun. +Using hydrogen. +Hydrogen is mostly used in the petroleum industry, to change heavy petroleum parts into lighter, more useful ones. It is also used to make ammonia. Smaller amounts are burned as fuel. Most hydrogen is made by a reaction between natural gas and steam. +The electrolysis of water breaks water into hydrogen and oxygen, using electricity. Burning hydrogen joins with oxygen molecules to make steam (natural water vapor). A fuel cell joins hydrogen with an oxygen molecule, releasing an electron as electricity. For these reasons, many people believe hydrogen power will replace other synthetic fuels in the future. +Hydrogen can also be burned to make heat for steam turbines or internal combustion engines. Like other synthetic fuels, hydrogen can be made from natural fuels such as coal or natural gas, or from electricity, and therefore represents a valuable addition to the power grid; in the same role as natural gas. Such a grid and infrastructure with fuel cell vehicles is now planned by a number of countries, such as Japan, Korea and many European countries. This lets these countries buy less petroleum, which is an economic advantage. The other advantage is that, used in a fuel cell or burned in a combustion engine as in a hydrogen car, the engine does not make pollution. Only water, and a small amount of nitrogen oxides, forms. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/IELTS.txt b/.github/workflows/data/simplewiki-500/IELTS.txt new file mode 100644 index 000000000..2c53dd873 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/IELTS.txt @@ -0,0 +1,2 @@ +The International English Language Testing System (IELTS) tests how fluent you are in the English language. People who take the test take the Academic Module or the General Training Module. The academic one is for people who want to go to university. The general one is for people who want to do other training or want to get work experience. People who want to emigrate to a country that uses English also take the general one. +Most universities in Australia, Britain, Canada, New Zealand and the United States accept the IELTS. Many professional companies do as well. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/ISO 19011.txt b/.github/workflows/data/simplewiki-500/ISO 19011.txt new file mode 100644 index 000000000..4d4914132 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/ISO 19011.txt @@ -0,0 +1,3 @@ +ISO 19011 is the new global accounting standard, replacing accounting standards that were part of ISO 14001 and ISO 9001. It is the most likely basis for accounting reform which could put an end to accounting scandals. +The standard offers four resources to organizations to "save time, effort and money": + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Idiom.txt b/.github/workflows/data/simplewiki-500/Idiom.txt new file mode 100644 index 000000000..ad555ef3a --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Idiom.txt @@ -0,0 +1,58 @@ +An idiom is a common phrase which means something different from its literal meaning but can be understood because of their popular use. +Idioms are difficult for someone not good at speaking the language. Some idioms are only used by some groups of people or at certain times. The idiom "shape up or ship out", which is like saying "improve your behavior or leave if you don't", might be said by an employer or supervisor to an employee, but not to other people. +Idioms are not the same thing as slang. Idioms are made of normal words that have a special meaning known to almost everyone. Slang is usually special words, or special meanings of normal words that are known only to a particular group of people. +To learn a language a person needs to learn the words in that language, and how and when to use them. But people also need to learn idioms separately because certain words together or at certain times can have different meanings. In order to understand an idiom, one sometimes needs to know the culture from which the idiom comes. +To know the history of an idiom can be useful and interesting. For example, most native British English speakers know that "No room to swing a cat" means "there was not much space" and can use the idiom properly. However, few know this is because 200 years ago sailors were punished by being whipped with a "cat o' nine tails". A big space was cleared on the ship so that the person doing the whipping had room to "swing the cat". +An idiom is a phrase whose meaning cannot be understood from the dictionary definitions of each word taken separately. The linguist's term for the real meaning of an idiom is the subtext. +Definition. +Idioms are phrases or expressions that have a figurative meaning different from their literal interpretation. They are commonly used in everyday language to convey a specific idea, often with cultural or historical significance. Idioms are not meant to be taken literally, and their meaning can be understood only by familiarizing oneself with their usage and context. + A way to wish someone good luck. + To enjoy life, to live widely + To die. + Used to tell someone that they should leave if they don't improve their behavior or performance +Learn and often perfect the skills of a craft, job, etc. +Mentally unstable, especially as the result of poisoning. + To cry about something but without actually caring. + A useless journey or pursuit. + An idea or promise without substance" + There is not a lot of space. + To pay a lot of money, more than is normal. +Be extremely expensive. + To choose the wrong course of action. + To tell a secret. + It's raining heavily. + To get into trouble. +To disregard caution. + Frightened or cowardly + Not doing a thing, because of fear. + Leader. + To think that something is wrong. + To quit. + To stop believing in something or someone. + I am very hungry. +To be really happy. +Rarely +Not wanting anything to do with something or someone. +Avoid at any cost. +Be too late for a chance or opportunity. +Easy to do. +Something easy to accomplish. +Extremely difficult task. +An impossible or improbable dream, project, etc. +To go to bed +Dismiss or be dismissed from one's employment. +Everything +All the unnecessary luxuries, features, etc +To ignore. +Report a false emergency. +What someone prefers. +Some common idioms. +Less common idioms include: +Very safe and secure. +Idioms which have unclear meaning. +Articles by Oxfam and the BBC have said that many idioms in English are unclear, or ambiguous. Many are understood differently in different countries. Many of the examples are taken from face-to-face talk, but may also apply in written reports. +Examples. +Vocables are sounds that are not proper words, but mean something, and are often ambiguous. One is a long drawn-out sound "hmmmmmm". +One suggestion is that these idioms are used to smooth over difficult areas in social interaction. They cover passive-aggressive statements which might cause more conflict if openly expressed. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/If.txt b/.github/workflows/data/simplewiki-500/If.txt new file mode 100644 index 000000000..ab064d419 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/If.txt @@ -0,0 +1,4 @@ +If is a word to describe a statement where one thing depends on something else. +For example: +If — is a poem written by Rudyard Kipling. It appeared in the "Brother Square Toes" chapter of Kipling's book "Rewards and Fairies". In a 1995 BBC opinion poll, it was voted Britain's favourite poem. It is arguably Kipling's most famous poem. +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Immigrant.txt b/.github/workflows/data/simplewiki-500/Immigrant.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Immigrants.txt b/.github/workflows/data/simplewiki-500/Immigrants.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Immune System.txt b/.github/workflows/data/simplewiki-500/Immune System.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Immunology.txt b/.github/workflows/data/simplewiki-500/Immunology.txt new file mode 100644 index 000000000..94adb58ba --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Immunology.txt @@ -0,0 +1,22 @@ +Immunology is the study of the immune system. The immune system is the parts of the body which work against infection and parasitism by other living things. Immunology deals with the working of the immune system in health and diseases, and with malfunctions of the immune system. +An immune system is present in all plants and animals. We know this because biologists have found genes coding for toll-like receptors in many different metazoans. These toll-like receptors can recognise bacteria as 'foreign', and are the starting-point for immune reactions. The type of immunity which is triggered by the toll-like receptors is called innate immunity. This is because it is entirely inherited in our genome, and is fully working as soon as our tissues and organs are properly developed. +Vertebrates, "and only vertebrates", have a second type of immunity. This is called adaptive immunity, because it 'remembers' previous infections. Then, if the same infection occurs again, the reaction is much stronger and faster. This immunological memory "confers a tremendous survival advantage" and with it vertebrates "can survive over a long lifetime in a pathogen-filled environment". +Types of immunity in vertebrates. +Innate immune response. +The innate immune system is usually means all of the cells and systems that does not have to be exposed to a particular pathogen before they can work. +Innate immunity starts with the skin, which is an excellent barrier to infection. +Adaptive immune response. +The adaptive immune system includes cells and systems that do require previous exposure to a pathogen. It explains the unique ability of the mammalian immune system to remember previous infections and mount a rapid and robust reaction to secondary infections. This immunological memory is due to the biology of T-cells and B-cells. +Other aspects of immunity. +Vaccines boost the acquired immune system by offering weak forms of infection that the body can fight off. The system remembers how to do it again when a stronger infection happens. If the vaccine works, the body can then fight off a serious infection. +The distribution of vaccines and other immune system affecting cures can be considered another level of acquired immune system, one governed by access to vaccination and medicine in general. The intersection of this with the spread of disease (as studied in epidemiology) is part of the field of public health. +Errors and weaknesses. +Errors of the immune system may cause damage. In autoimmune diseases, the body attacks parts of itself because the system mistakes some parts of the body as 'foreign'. Some kinds of arthritis are caused this way. +Sometimes serious pathogens slip in because their surface is disguised as something the host cell walls can accept. That is how viruses work. Once inside a cell, their genetic material controls the cell. Infections like HIV get in this way, and then attack cells which are the basis of the immune system. Artificial means are often used to restore immune system function in an HIV-challenged body, and prevent the onset of AIDS. This is one of the most complex issues in immunology as it involves every level of that system. This research during the 1980s and 1990s radically changed the view of the human immune system and its functions and integration in the human body. +History of immunology. +Immunology is a science that examines the structure and function of the immune system. It originates from medicine and early studies on the causes of immunity to disease. The earliest known mention of immunity was during the plague of Athens in 430 BC. Thucydides (460–395 BC) noted that people who had recovered from a previous bout of some diseases could nurse the sick without contracting the illness a second time. +In the 18th century, Pierre-Louis Moreau de Maupertuis made experiments with scorpion venom and observed that certain dogs and mice were immune to this venom. This and other observations of acquired immunity led to Louis Pasteur (1822–1895) developing vaccination and the germ theory of disease. Pasteur's theory was in direct opposition to contemporary theories of disease, such as the miasma theory. It was not until the proofs Robert Koch (1843–1910) published in 1891 (for which he was awarded a Nobel Prize in 1905) that microorganisms were confirmed as the cause of infectious disease. Viruses were confirmed as human pathogens in 1901, when the yellow fever virus was discovered by Walter Reed (1851–1902). +Immunology made a great advance towards the end of the 19th century, through rapid developments, in the study of humoral immunity and cellular immunity. Particularly important was the work of Paul Ehrlich (1854–1915), who proposed the side-chain theory to explain the specificity of the antigen-antibody reaction. The Nobel Prize for 1908 was jointly awarded to Ehrlich and the founder of cellular immunology, Ilya Mechnikov (1845–1916). +The simplest form of immunity is the DNA restriction system in bacteria that prevents infection by bacteriophages. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Imperial Cup.txt b/.github/workflows/data/simplewiki-500/Imperial Cup.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Imperial Gallon.txt b/.github/workflows/data/simplewiki-500/Imperial Gallon.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Inch.txt b/.github/workflows/data/simplewiki-500/Inch.txt new file mode 100644 index 000000000..569bce698 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Inch.txt @@ -0,0 +1,10 @@ +The inch is a unit of length in the Imperial system and the United States customary system. The abbreviation for inches is in or ". There are 12 inches in a foot. One inch is equal to 2.54 centimetres. +The word "inch" came from Middle English "unche", which came from Old English "ynce", from Latin "uncia" meaning "a twelfth part". +History. +The inch was originally defined as 3 barleycorns. The inch was finally standardised in the International Yard and Pound Treaty in 1959 between the United States, the United Kingdom, South Africa, Australia, New Zealand and Canada. The international yard was made equal to 0.9144 metres. From this, subdivisions and multiples of the yard were specifically defined. +Usage. +In Britain and the United States, people use inches more than they use millimetres or centimetres. In the rest of the world, international units are almost always used. The inch is not used by scientists. +In the United Kingdom, road signs that show how high a vehicle can be in order to pass through a tunnel are required to be in feet and inches. Theme parks and drive thru signs usually show it in metres. People regularly measure their height in feet and inches. Official medical records, however, are required to record people's height in metric measurements only. +In Canada, a mix of centimetres and inches are used in height. Older generations, especially, use Imperial units. A lot of exposure to Americanized phrases leads to younger generations often having a good understanding of both the Imperial and metric systems. +In the United States, height is always in feet and inches. Science is the only field to use metric measurements. +Other Commonwealth countries, including Ireland, Australia, New Zealand, South Africa and Jamaica use inches to varying degrees. From every day use to exclusively the older community. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/India.txt b/.github/workflows/data/simplewiki-500/India.txt new file mode 100644 index 000000000..6758d5f0d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/India.txt @@ -0,0 +1,72 @@ +India (Hindi pronunciation: ), officially the Republic of India (Hindi pronunciation: ), also commonly called as Hindustan, is a country in South Asia. It is the seventh-largest country by area. It is also the largest country by number of people. It is the world's largest democracy by number of people since 1947. +India is a peninsula. It has the Indian Ocean on the south, the Arabian Sea on the southwest, the Bay of Bengal on the southeast, and the Himalayas on the north. It has six neighbours: Pakistan in the northwest; China, Nepal and Bhutan in the north; and Bangladesh and Myanmar in the east. Sri Lanka and the Maldives are nearby to the south. Its Andaman and Nicobar Islands are near Indonesia, Myanmar and Thailand. +Modern humans came to the Indian subcontinent from Africa more than 55,000 years ago. They have lived there for long time. At first, they had lived in the subcontinent as hunter-gatherers. The Indian subcontinent is the second most diverse region after Africa. Humans began to create settlements in the subcontinent 9,000 years ago, on the western banks of the Indus River. The settlements became parts of the Indus Valley Civilisation in the third millennium BCE. By 1200 BCE, Sanskrit, an Indo-European language, spread to India from the northwest. The first presence of Sanskrit is found in the hymns (songs of worship) of the "Rigveda". The hymns were spread from one person to another orally, not by any book. They show the early forms of Hinduism. The Indo-Aryan languages replaced the Dravidian languages in the northern and western regions of India. By 400 BCE, the caste system was developed within Hinduism. Buddhism and Jainism were also developed in India at the same time. +India has been a federal republic since 1950. Its government is a democratic parliamentary system. It is a multilingual (multiple languages) and multicultural (multiple cultures) society. The capital city of India is New Delhi. India has the second largest military force in the world and is also a nuclear weapon state. India's economy became the world's fastest growing in the G20 developing nations during 2014, replacing the People's Republic of China. India's literacy and wealth are also rising. +India has the fifth largest economy by nominal GDP, the third largest by GDP (PPP) and is one of the fastest growing major economy. According to New World Wealth, India is the fifth richest country in the world with a total individual wealth of $12.6 trillion. However, it still has many social and economic issues, for example poverty, pollution, social equality, religious extremism, terrorism and corruption. India has reduced its rate of poverty. But its economic inequality has increased. +India is a founding member of the World Trade Organisation (WTO), and has signed the Kyoto Protocol. It is also a member of the G20 developing nations. India has its own space agency (ISRO). It has done much research throughout the Solar System. It has sent spacecraft to the Moon and Mars. Indian movies, music and spiritual teachings are becoming more important in global culture. Sources describe it as a potential superpower, because of its rising economy and increase in global influence. India is a country with nuclear weapons. It also has a high rank in military expenditure. It has disputes over Kashmir with its neighbours, Pakistan and China, since the middle of the 20th century. +India has the fouth largest number of spoken languages per country in the world, only behind Papua New Guinea, Indonesia, and Nigeria. Most of Indians follow Hinduism at 80%, but people of different religions such as Buddhism, Sikhism and Islam also live there. +Origin of the name. +The "Oxford English Dictionary" (third edition 2009) says that the name "India" comes from the Classical Latin name "India". It was originally used for South Asia and the areas to its east. Latin took the name from Hellenistic Greek "India" ("Ἰνδία"), from ancient Greek "Indos" ("Ἰνδός") and then from Old Persian "Hinduš". The Old Persian name was used for the eastern province of the Achaemenid Empire. The name has a relation with the Sanskrit word "sindhu". It means "river", especially the Indus River. The ancient Greeks called Indians as "Indoi" ("Ἰνδοί"), which means "the people of the Indus". +The name "Bhārat" (; ] ()) is found in both Indian epic poetry and the Constitution of India. It is used in different Indian languages in different forms. "Bhārat" is a modern form of the older name "Bharātavarṣa" (). It original meaning was the northern part of India. It has become a very popular name for India since the middle of the 19th century. +"Hindustān" (] ()) is a Middle Persian name for India. It became popular by the 13th century. It is used widely since the Mughal Empire. +History. +It is a UNESCO World Heritage Site. It is thought to be of "outstanding universal value". +One of the oldest language of the world, Tamil, was born in today's India. It is more than 3000 years old. Later, a king named Chandragupt Maurya built an empire called the Maurya Empire in 300 BC. It made most of South Asia into one whole country. From 180 BC, many other countries invaded India. Even later (100 BC  AD 1100), other Indian dynasties (empires) came, including the Chalukyas, Cholas, Pallavas, and Pandyas. Southern India at that time was famous for its science, art, and writing. The Cholas of Thanjavur were pioneers at war in the seas and influenced Malaya, Borneo, Cambodia. The influence of Cholas are still noticeable in Southeast Asia. +Many dynasties ruled India around the year 1000. Some of these were the Mughal, Vijayanagara, and the Maratha empires. In the 1600s, European countries invaded India, and the British controlled most of India by 1856. +In the early 1900s, millions of people peacefully started to protest against British control. One of the people who led the freedom movement was Mahatma Gandhi, who only used peaceful tactics, including a way called "ahimsa", which means "non-violence". On 15 August 1947, India peacefully became free and independent from the British Empire. India's constitution was founded on 26 January 1950. Every year, on this day, Indians celebrate Republic Day. The first official leader (Prime Minister) of India was Jawaharlal Nehru. +After 1947, India had a socialist planned economy. It is one of the founding members of the Non-Aligned Movement and the United Nations. It has fought many wars since independence from Britain, including the wars in 1947-48, 1965, 1971, and 1999 with Pakistan and in 1962 with China. It also fought a war to capture Goa, a Portuguese-built port and a city that was not a part of India until 1961. The British refused to give it to the country, and so India had to use force and the British were defeated. India has also done nuclear tests in 1974 and 1998. It is one of the few countries that have nuclear bombs. Since 1991, India has been one of the fastest-growing economies in the world. +Geography. +India is the seventh biggest country in the world. It is the main part of the Indian subcontinent. The countries next to India are Pakistan, Bangladesh, Myanmar, China, Bhutan and Nepal. It is also near Sri Lanka and the Maldives, two island countries. The Andaman and Nicobar Islands, a union territory of India, is near Thailand, Indonesia and Myanmar. +India is a peninsula, which means that it is surrounded on three sides by water. In the west is the Arabian Sea, in the south is the Indian Ocean, and in the east is the Bay of Bengal. The coastline of India is of about long. The northern part of India has many mountains. The most famous mountain range in India is the Himalayas, which have some of the tallest mountains in the world. There are many rivers in India. The main rivers are the Ganges, the Brahmaputra, the Yamuna, the Godavari, the Kaveri, the Narmada, and the Krishna. +India's total coastline is long. The mainland's coastline is long. The Andaman, Nicobar and Lakshadweep islands have long coastlines in total. From the Indian naval hydrographic charts, 43% of the mainland coast are sandy beaches, 11% are rocky shores and cliffs, and 46% are mudflats or marshy shores. +India has different climates. In South India, the climate is mainly tropical, which means it can get very hot in summer and cool in winter. The northern part, though, has a cooler climate, called subtropical. The mountainous regions can be alpine. The Himalayas, in the alpine climate region, can get extremely cold. The Himalayas do not allow the cold Central Asian winds from blowing into the Indian subcontinent. It keeps the most of the subcontinent warmer than most places at same latitudes. There is very heavy rainfall along the west coast and in the Eastern Himalayan foothills. The west, though, is drier. Because of some of the deserts of India, all of India gets rain for four months of the year. That time is called the monsoon. That is because the deserts attract water-filled winds from the Indian Ocean, which give rain when they come into India. When the monsoon rains come late or not so heavily, droughts (when the land dries out because there is less rain) are possible. Monsoons normally come around July–August. +Politics. +India is a parliamentary republic with a multi-party system. It is the largest democracy in the world by the number of people. It has sixnational parties, for example the Indian National Congress (INC) and the Bharatiya Janata Party (BJP). It also has more than 50regional parties. The Congress is known as centre in Indian political culture, while the BJP is known as right-wing. The Congress was the majority in the Parliament from 1950 to the end of the 1980s. From the end of the 1980s, the BJP and the powerful regional parties are getting more seats in the Parliament over time. This forced the national parties to create coalition governments. +Government. +India is ruled under the Constitution of India. It is the country's highest document of law. It came into effect on 26 January 1950. Its original form said that India would be a "sovereign, democratic republic". In 1971, the statement was changed to "sovereign, socialist, secular, democratic republic". India's has been said to be a "quasi-federal" form of government. That means, the country would have a strong federal government and weak state governments. The federal government is often called the "union government" or the "central government". But after political, economic and social changes at the end of the 1990s, the government became federal. +The union government is divided into three parts: the legislature (the one that make laws), the executive (the one that applies laws), and the judiciary (the one that makes sure that the laws are obeyed). All three parts are in New Delhi, the capital city of India. +The legislature of India is called the Parliament ( ). It is divided into two houses: the upper house Rajya Sabha (Council of States); and the lower house Lok Sabha (House of the People). The Rajya Sabha has 245 members. They remain members for six years. Most members are elected indirectly by the legislatures of state and union territories. The Lok Sabha has 545 members. They remain members for five years. They are elected directly by the people's vote. +The executive is made up of the President, the Vice President, the Prime Minister and the Union Council of Ministers. The President is the head of state of India. The presidents are elected by an electoral college for a period of five years. The electoral college is made up of members of central and state legislatures. The Prime Minister is the head of government of India. The President can choose the Prime Minister, who has most of the power. The President has less power than the Prime Minister. The Union Council of Ministers helps the Prime Minister. It is similar to a cabinet in many countries. +The judicial branch is made up of three types of courts of law: the Supreme Court, the 24 High Courts and a number of trial courts. The Chief Justice of India is the head of the Supreme Court. The members of the court have the power to stop a law being passed by Parliament if they think that the law contradicts (opposes) the Constitution. They can make any government action invalid if it contradicts the Constitution. +Divisions. +For administration purposes, India has been divided into smaller pieces. Most of these pieces are called states, some are called union territories. States and union territories are different in the way they are represented. Most union territories are ruled by administrators (called Lieutenant Governors) sent by the central government. All the states, and the territories of Delhi, and Puducherry elect their local government themselves. In total, there are twenty-eight states and eight union territories. +States: +Union territories: +Military. +The Indian Armed Forces is the military of India. It is made up of an Army, Navy and Air Force. There are other parts like Paramilitary and Strategic Nuclear Command. +The President of India is the Commander-in-Chief. However, it is managed by the Ministry of Defence. In 2010, the Indian Armed Forces had 1.32 million active personnel. This makes it one of the largest militaries in the world. +The Indian Army is becoming more modern by buying and making new weapons. It is also building defenses against missiles of other countries. In the years 2018-2022, India imported more arms than any other nation in the world. Since its independence in 1947, India fought four wars with Pakistan and a war with China. +National symbols. +The national emblem of India shows four lions standing back-to-back. The lions symbolize power, pride, confidence, and courage. Only the government can use this emblem, according to the State Emblem of India (Prohibition of Improper Use) Act, 2005. +The name India comes from the Greek word, '"Indus"'. This came from the word "sindhu", which, over time, turned into Hind, Hindi, or Hindu. The preferred endonym (the name given to the country by its own people) is "Bhārat" in Hindi and other Indian languages as contrasted with names from outsiders. Some of the national symbols are: +Border Disputes. +There are disputes about certain parts of the Indian borders. Countries do not agree on where the borders are. Pakistan and China do not recognise the disputed territory of Jammu and Kashmir. The Indian government claims it as an Indian state. Similarly, the Republic of India does not recognise the Pakistani and Chinese parts of Kashmir. +In 1914, British India and Tibet agreed on the McMahon Line, as part of the Simla Accord. In July 1914, China withdrew from the agreement. Indians and Tibetans see this line as the official border. China does not agree, and both mainland China and Taiwan do not recognize that Arunachal Pradesh belongs to India. According to them, it is a part of South Tibet, which belongs to China. +Economy. +The economy of the country is among the world's fastest growing. It is the 7th largest in the world with a nominal GDP of $2,250 billion (USD), and in terms of PPP, the economy is 3rd largest (worth US$8.720 trillion). The growth rate is 8.25% for fiscal 2010. However, that is still $3678 (considering PPP) per person per year. India's economy is based mainly on: +India's economy is diverse. Major industries include automobiles, cement, chemicals, consumer electronics, food processing, machinery, mining, petroleum, pharmaceuticals, steel, transportation equipment, and textiles. +However, despite economic growth, India continues to suffer from poverty. 27.5% of the population was living in poverty in 2004–2005. In addition, 80.4% of the population live on less than US$2 a day, which was lowered to 68% by 2009. +People. +There are 1.4 billion people living in India. In 2023, India passed China to become the world's most populous country. About 65% of Indians live in rural areas, or land set aside for farming. The largest cities in India are Mumbai, Kolkata, Delhi, Chennai, Bangalore, Hyderabad, and Ahmedabad. Hindi and English are Official languages of India. India has 23 officially recognised languages. Altogether, 1,625 languages are spoken in India. +Languages. +There are many different languages and cultures in India. There are two main language families in India, the Indo-Aryan and the Dravidian languages. About 69% of Indians speak an Indo-Arayan language, and about 26% speak a Dravidian language. Other languages spoken in India come from the Austro-Asiatic group. Around 5% of the people speak a Tibeto-Burman language. +Hindi is the official language in India with the largest number of speakers. It is the official language of the union. Native speakers of Hindi represent about 41% of the Indian population (2001 Indian census). English is also used, mostly for business and in administration. It has the status of a 'subsidiary official language'. The constitution also recognises 21 other languages. Either many people speak those languages, or they have been recognized to be very important for Indian culture. The number of dialects in India is as high as 1,652. +In the south of India, many people speak Kannada, Telugu, Tamil and Malayalam. In the north, many people speak Chhattisgarhi, Punjabi, Bengali, Gujarati, and Marathi, Odia, and Bihari. +India has 23 official languages. Its constitution lists the name of the country in each of the languages. Hindi and English (listed in boldface) are the "official languages of the union" (Union meaning the Federal Government in Delhi); Tamil, Sanskrit, Telugu, Kannada, Malayalam, and Odia are officially the "classical languages of India." +Culture. +Cave paintings from the Stone Age are found across India. They show dances and rituals and suggest there was a prehistoric religion. During the Epic and Puranic periods, the earliest versions of the epic poems "Ramayana" and "Mahabharata" were written from about 500–100 BCE, although these were orally transmitted for centuries before this period. Other South Asian Stone Age sites apart from Pakistan are in modern India, such as the Bhimbetka rock shelters in central Madhya Pradesh and the Kupgal petroglyphs of eastern Karnataka, contain rock art showing religious rites and evidence of possible ritualised music. +Several modern religions are linked to India, namely modern Hinduism, Jainism, Buddhism and Sikhism. All of these religions have different "schools" (ways of thinking) and traditions that are related. As a group they are called the Eastern religions. The Indian religions are similar to one another in many ways: The basic beliefs, the way worship is done and several religious practices are very similar. These similarities mainly come from the fact that these religions have a common history and common origins. They also influenced each other. +The religion of Hinduism is the main faith followed by 79.80% of people in the Republic of India; Islam – 14.23%; Christianity – 2.30%; Sikhism – 1.72%; Buddhism – 0.70% and Jainism – 0.37%. +Technology. +India sent a spacecraft to Mars for the first time in 2014. That made it the fourth country and first Asian country to do so, successfully. It was called the Mars Orbiter Mission. +ISRO launched 104 satellites in a single mission to create a world record. India became the first nation in the world to have launched over a hundred satellites in one mission. That was more than the 2014 Russian record of 37 satellites in a single launch. +This historic event of Chandrayaan-3 is set to take place on Wednesday, August 23 at approximately 6:04pm Indian Standard Time. India's third lunar mission can be streamed live from 5:27pm. +Pop culture. +India has the largest movie industry in the world. The Hindi film industry is known as Bollywood, and is mainly based in Bombay, now known as Mumbai. Other industries include Tollywood, Kollywood, Sandalwood, Mollywood, Jollywood, Dhollywood, etc. It makes 1,000 movies a year, about twice as many as Hollywood. +Sports. +Indians have excelled in hockey. They have also won eight gold, one silver, and two bronze medals at the Olympic games. However, cricket is the most popular sport in India. The Indian cricket team won the 1983 and 2011 Cricket World Cup and the 2007 ICC World Twenty20. They shared the 2002 ICC Champions Trophy with Sri Lanka and won the 2013 ICC Champions Trophy. Cricket in India is controlled by the Board of Control for Cricket in India or BCCI. Domestic tournaments are the Ranji Trophy, the Duleep Trophy, the Deodhar Trophy, the Irani Trophy, and the Challenger Series. There is also the Indian cricket league and Indian premier league Twenty20 competitions. +Tennis has become popular due to the victories of the India Davis Cup team. Association football is also a popular sport in northeast India, West Bengal, Goa and Kerala. The Indian national football team has won the South Asian Football Federation Cup many times. Chess, which comes from India, is also becoming popular. This is with the increase in the number of Indian Grandmasters. Traditional sports include kabaddi, kho kho, and gilli-danda, which are played throughout India. +Notes. +<templatestyles src="Reflist/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Infinity.txt b/.github/workflows/data/simplewiki-500/Infinity.txt new file mode 100644 index 000000000..aad29be9d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Infinity.txt @@ -0,0 +1,29 @@ +Infinity (formula_1) is a mathematical concept which is about things that never end. It is written in a single digit. Infinity means many different things, depending on when it is used. The word is from Latin origin, meaning "without end". Infinity goes on forever, so sometimes space, numbers, and other things are said to be 'infinite', because they never come to a stop. Space and others can have infinite volume, but sometimes, things like toruses can be confused with infinite volume because they never stop. +Infinity is usually not an actual number, but it is sometimes used as one. Infinity often says how "many" there is of something, instead of how "big" something is. For example, there are infinitely many whole numbers (called integers), but there are some integers which are infinitely big, like aleph null, because the cardinality of the list of natural numbers has to be an integer, because you cannot have 2.718281828... items on your shopping list, can you? That would be quite confusing! But different kinds of math have different kinds of infinity. So its meaning often changes. +There are two kinds of infinity: potential infinity and actual infinity. Potential infinity is a process that never stops. For example, adding 10 to a number. No matter how many times 10 is added, 10 more can still be added. Actual infinity, on the other hand, refers to objects that are accepted as infinite entities (such as transfinite numbers). +Infinity in Mathematics. +Mathematicians have different sizes of infinity and three different kinds of infinity. +Counting infinity. +The number of things, beginning with 0, 1, 2, 3, ..., to include infinite cardinal numbers. There are many different cardinal numbers. Infinity can be defined in one of two ways: Infinity is a number so big that a part of it can be of the same size; Infinity is larger than all of the natural numbers. There is a smallest infinite number, "countable infinity". It is the counting number for all of the whole numbers. It is also the counting number of the rational numbers. The mathematical notation is the Hebrew letter aleph with a subscript zero; formula_2. It is spoken "aleph null". +It was a surprise to learn that there are larger infinite numbers. The number of real numbers, that is, all numbers with decimals, is larger than the number of rational numbers, the number of fractions. This shows that there are real numbers which are not fractions. The smallest infinite number greater than formula_2 is formula_4 (aleph one). The number of mathematical functions is the next infinite cardinal number, formula_5. +And these numbers, called aleph numbers, go on without end. +Ordering infinity. +A different "type" of infinity are the ordinal numbers, beginning "first, second, third, ...". The order "first, second, third, ..." and so on to infinity is "different" from the order "ending" "..., third, second, first". The difference is important for mathematical induction. The simple "first, second, third, ... " has the mathematical name: the Greek letter omega with subscript zero: formula_6. (Or simply omega formula_7.) The infinite series ending "... third, second, first" is formula_8. +The real line and complex plane. +The third "type" of infinity has the symbol formula_1. This is treated as addition to the real numbers or the complex numbers. It is the result of division by zero, or to indicate that a series is increasing (or decreasing) without bound. The series 1, 2, 3, ... increases without upper bound. This is written: the limit is formula_10. In calculus, the integral over all real numbers is written: formula_11 +The arithmetic of infinity. +Each kind of infinity has different rules. +Addition, multiplication, exponentiation. +formula_12 Addition with "alephs" is commutative. +formula_13 Multiplication with "alephs" is commutative. +formula_14 +formula_15. +formula_16. Addition with "omegas" is not commutative. +formula_17. Multiplication with "omegas" is not commutative. +formula_18 +formula_19 +formula_20 +Subtraction, division. +Division by infinity (for example, with omegas or alephs) is not meaningful. Subtraction with infinity is not meaningful. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Ingenuity.txt b/.github/workflows/data/simplewiki-500/Ingenuity.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Ink.txt b/.github/workflows/data/simplewiki-500/Ink.txt new file mode 100644 index 000000000..fddebe418 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Ink.txt @@ -0,0 +1,5 @@ +Ink is a liquid that is used to write, draw, print, or make marks. The word ink is from Latin and means "colored water". Ink is used in pens, in some computer printers, and in printing presses. In some countries, people write by using ink and brushes. People usually write or print using black ink, but ink can be any color. The first ink was used in Egypt about 2600 BC. +The first inks were carbon inks, made from soot, which is 80% carbon, water and gum arabic. Red ink would need iron oxide (such as haematite) from ground rocks instead of soot. Later, in Europe, people used iron gall ink. This is the kind of ink Johann Sebastian Bach and Leonardo da Vinci used. Now ink colours are produced by man-made dyes. +A disadvantage of many kinds of ink is that they may smudge when wet, spoiling the picture or writing. If water-based ink is used, the writing situation needs to be stable, with the writer seated at a table. Ink in a ballpoint pen (biro) is a kind of gel. It is held in a thin long cylinder (tube) inside the pen. The ink does not fall out of the cylinder as it sticks to the sides of the tube. Therefore, ballpoint pens can be used in a wider range of circumstances compared to water-based inks. +References. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Insult.txt b/.github/workflows/data/simplewiki-500/Insult.txt new file mode 100644 index 000000000..6c1c1be4f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Insult.txt @@ -0,0 +1,8 @@ +An insult is a description of someone that will offend them. It may or may not be true. It is called "derogatory" language. Terms like foolish, stupid, idiot and moron are insults, because they say that a person's mind is not quick or smart. +Insulting someone's mother directly is a serious insult in many cultures. +Ritual insults are part of many cultures. For example, they can be found in sports and military training. They are also very common in jargons. For example, the word "newbie" is a part of net jargon. Calling someone a newbie is usually insulting. +One should be very careful when using new words to describe others. +Reason. +Usually, someone insults others because they want to feel like they are better or have more power (influence) than the people they insult. They may want this because they are actually afraid that they are worse or less powerful than the people they are insulting. +Effects. +When someone is insulted, their pride is hurt. They may want to fight back by insulting the person who insulted them, or by telling someone who is older. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Interim.txt b/.github/workflows/data/simplewiki-500/Interim.txt new file mode 100644 index 000000000..2e572b509 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Interim.txt @@ -0,0 +1,5 @@ +An interim is a period of temporary pause or change in a sequence of events, or a temporary state, and is often applied to transitional political entities. +Interim may also refer to: +Sub-state entities +Related pages. +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/International English Language Testing System.txt b/.github/workflows/data/simplewiki-500/International English Language Testing System.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Internet slang.txt b/.github/workflows/data/simplewiki-500/Internet slang.txt new file mode 100644 index 000000000..4222963ec --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Internet slang.txt @@ -0,0 +1,9 @@ +Internet slang is slang words which are used on the internet. Most of these words are new, such as Wiki and blog, which were not used before the internet became popular. +Some old words were given new meanings, such as mail (which now means email). This makes many metaphors on the Internet, such as boot (which otherwise mean a shoe) and link (which otherwise means a joint in a metal chain). Some existing acronyms, such as "AFK" (To mean "Away from keyboard") and "IRL" (To mean "In real life") were used on bulletin board systems before the internet became popular. These are now used on the internet, such as in chat rooms and on instant messenger software. And Lol (laugh out loud) +People have also created some verbs and adjectives to describe things that only happen on the internet: +Shorthand words. +Shorthand is where a word is written in a shorter way because it is quicker and easier to type. It is also done to fit more text into a limited space. +Internet slang uses many acronyms because they are quicker and easier to type. They are often shorthand for common phrases and idioms, but they can show somebody's emotions and their certainty. +Leet speak. +Leet speak (written as: L33T or 1337) is the most common language on MMORPGs because rude words are not stopped by filters. This language is changing all the time because new words are made and used. A lot of the words use numbers instead of letters but some were made because of typing errors which are now done on purpose. Also, some suffixes are used, such as "-age" and "-ness". +Some of the numbers and symbols used instead of letters are in the table below. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Internet.txt b/.github/workflows/data/simplewiki-500/Internet.txt new file mode 100644 index 000000000..3b52b1a19 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Internet.txt @@ -0,0 +1,24 @@ +The Internet is the biggest world-wide communication network of computers. The Internet has a lot of smaller domestic, academic, business, and government networks, which together carry many different kinds of information. The short form of internet is the 'Net'. The World Wide Web is one of its biggest services. It is used by billions of people. +The Internet was developed in the United States by the Department of Defence Advanced Research Projects Agency (DARPA). The Internet was first connected in October 1969 and was called ARPANET. The World Wide Web was created at CERN in Switzerland in 1990 by a British (UK) scientist named Tim Berners-Lee. +Today, people can pay money to access the Internet from internet service providers. Some services on the Internet cost nothing to use. Sometimes people who offer these free services use advertising to make money. Censorship and freedom of speech on the Internet can be controversial. +<templatestyles src="Template:ToC limit/styles.css" /> +Services. +The Internet is used for many things, such as electronic mail, online chat, file transfer and other documents of the World Wide Web. +The most used service on the Internet is the World Wide Web (which is also called the "Web" or “www”). The web contains websites, including social media, blogs, and wikis like Wikipedia. Webpages on the Internet can be seen and read by anyone (unless the page needs a password, or it is blocked). +The second biggest use of the Internet is to send and receive e-mail. E-mail is private and goes from one user to another. Instant messaging is similar to email, but allows two or more people to chat to each other faster. +Some governments think the internet is a bad thing, and block all or part of it. For example, the Chinese government thinks that Wikipedia is bad, so often no one in China can read it or add to it. Another example of the internet being blocked is in North Korea. Some parents and schools block parts of the Internet they think are bad for children to see. +Dangers. +The Internet makes communication easy. Yet, communication can be dangerous, too. People often send secret information, and sometimes other people can steal that information. They can use the Internet to spread lies, steal secrets, or give dangerously bad advice. For example, Facebook has had some problems with privacy settings. +Outline and overview. +The Internet is a worldwide network of interconnected computer networks that transmit data by packet switching using the standard Internet Protocol (IP). It is a "network of networks" that has millions of interconnected smaller domestic, academic, business, and government networks, which together carry various information and services, such as electronic mail, online chat, file transfer, and the interlinked Web pages and other documents of the World Wide Web. The general public are allowed to use the internet, in almost all countries. +Internet has these features, +Internet communication technology: +Internet infrastructure: +Internet communication protocols: +Internet protocol suite – +Link layer – +Internet layer – +Transport layer – +Application layer – +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Ireland.txt b/.github/workflows/data/simplewiki-500/Ireland.txt new file mode 100644 index 000000000..170d4dfa2 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Ireland.txt @@ -0,0 +1,39 @@ +Ireland (; ] (); Ulster-Scots: ) is an island in the North Atlantic. It is 486  kilometres (302 miles) long and about 288 kilometres (179 miles) wide. To the west of Ireland is the Atlantic Ocean; to the east of Ireland is the island of Great Britain. Over 6.4 million people lived on the island in 2016. +Countries. +Today, the island of Ireland is made up of two countries: the Republic of Ireland and Northern Ireland: +From 1801 to 1921, all of Ireland was part of the same country, called the United Kingdom of Great Britain and Ireland. In 1919, a war broke out, the Irish War of Independence, and on December 6 1921, the Irish Free State became independent. After a new constitution came into effect in 1937, the state became a republic. Northern Ireland stayed with the UK, and this would lead to The Troubles beginning in the 1960s and ending with the Good Friday Agreement signed in 1998. +Provinces and counties. +Ireland is traditionally divided into four provinces and thirty-two counties. Twenty-six counties are in the Republic and six in Northern Ireland. Three of the provinces are entirely within the Republic (Connacht, Leicester and Munster), and one province (Ulster) has some counties in both the Republic and in Northern Ireland. +Main cities. +Dublin is the largest city. It is the capital of the Republic of Ireland. Dublin was established as a Viking settlement in the 9th century. The population is 525,383 in Dublin City, and 1,270,603 in Co. Dublin. +Belfast is the capital of Northern Ireland. It has 483,000 people in the Greater Belfast urban area there are 267,000 in the city itself. Shipbuilding used to be a major industry here. The "Titanic" was built in Belfast at the Harland and Wolff shipyard. +Armagh is a city in Northern Ireland. It is often called the 'Ecclesiastic Capital of Ireland' as it is the seat of both the Catholic Church and the (Protestant) Church of Ireland. The population is 14,590. +Cork is the largest city in Munster. Corkonians often refer to it as 'the Real Capital'. The population is 119,230. but following a 2019 Cork boundary change|boundary extension in 2019, the population increased to c. 210,000. +Derry (Or Londonderry) is the second largest city in Northern Ireland. Derry is notable for the Medieval city walls which still stand. Because the walls have never been breached, the city is nicknamed "The Maiden City". In 2013 Derry was the UK Capital of Culture. Many cultural events took place there during the year. The population is 83,652. +History. +During the last glacial period (the "ice age"), most of Ireland was covered with ice. After that, Ireland became covered with trees, and some trees started becoming bogs -- specifically, raised bogs. The first people came to Ireland about 9,000 years ago, in the Middle Stone Age (Mesolithic period). They were nomadic. Once food ran out in the place they lived, they would move to another place. Evidence of these people was found in Mount Sandel, Co. Derry. +About 4000 BC, in the New Stone Age (Neolithic period), the first farmers arrived in Ireland. These people cleared openings in the forest and built permanent settlements with houses and farmland. The clearing of these trees started creating another type of bog, called blanket bogs. When people in this age died, they were buried in tombs called megaliths. Many megaliths are left standing today, such as portal dolmens and passage tombs. The most famous megalith is Newgrange passage tomb in Co. Meath. +New settlers came around 2000BC, marking the start of the Bronze Age. Copper was mined mainly in Mount Gabriel, Co. Cork and tin was imported from Cornwall. These people used bronze to make weapons, such as swords. They also used it to make early forms of jewellery, such as sun discs and torcs. These settlers buried the dead in court tombs or wedge tombs, and burial places have been found with stone circles. +It is unknown when the Celts came to Ireland, but it is likely they brought the use of iron with them. The use of iron marks the start of the Iron Age. It is known that by about 300BC, the use of iron and Celtic culture was widespread in Ireland. The Celts lived in ring forts, hill forts, promontory forts and crannógs. It is thought that only the richer families and settlements lived in crannógs. These were man-made islands in the middle of lakes with houses on them. +Celtic Ireland was split into around 150 kingdoms called tuath. The king was elected from the royal family. Below the king were the Nobles, and the Aos Dána, who were people with special skills, such as poets, Druids (priests), judges and craftsmen. +By the early 6th century, Ireland was mostly Christian through the work of St. Patrick and other missionaries. Druids were replaced by priests and monks. Monasteries soon were built such as Glendalough in co. Wicklow. Glendalough and other monasteries built round towers for safety when Vikings attacked. Small monasteries were also built in remote places, the most famous being Skellig Michael, off the coast of co. Kerry. +At this time many hand-written manuscripts were created by the monasteries. They include the Cathach, the Book of Durrow, and the Book of Kells. Monks also produced fine silver chalices, croziers and brooches, and carved high crosses. +In 1169, Anglo-Norman lords invaded Ireland. They were led by Strongbow who landed at Passage East, Co. Waterford. The Anglo-Normans conquered many parts of Ireland in the following 60 years. They introduced their way of life to the Irish people. The feudal system was soon introduced in Ireland as a means of organising land. Castles were built to defend the land like Trim Castle, Co. Meath. During the Middle Ages, Ireland's first proper towns were built. +From 1801 until 1921, all of Ireland was part of the United Kingdom of Great Britain and Ireland. In 1921 Northern Ireland was created and 'partitioned' from the south. Northern Ireland has stayed within the United Kingdom since then. The full name of the UK is 'The United Kingdom of Great Britain and Northern Ireland'. +In 1921 the south became the Irish Free State. In 1937 the Irish Free State adopted a new constitution which named the state 'Ireland', and in 1948 this state passed the Republic of Ireland Act which declared it to be a republic. +Migration. +Many Irish people have left Ireland and moved to the United States, Canada, Australia, and South America. The Great Famine (1845 to 1849 inclusive) forced many to leave; it is estimated almost a million people died of starvation, and a million more emigrated. From a maximum of over 8 million in 1841, the total Irish population dropped to just over 4 million in the 1940s. Since then, the population has grown to over 6 million. This has been helped by the economic growth of the "Celtic Tiger" and since 2004 immigration from countries in Eastern Europe such as Poland. +Today almost 80 million people around the world are descended from Irish immigants. +Climate. +Ireland has an oceanic climate. +The highest temperature ever recorded in Ireland was , on 16 July 1876 in Dublin. +Sports. +Ireland's main sports are Gaelic Games (Gaelic football, hurling, etc.) and soccer. +The many sports played and followed in Ireland include Gaelic games (mainly Gaelic football, hurling and camogie), horse racing, show jumping, greyhound racing, basketball, fishing, handball, motorsport, MMA, boxing, target shooting and tennis. Hockey, golf, rowing, cricket, rugby union and Olympic target shooting are organised on an all-island basis, with a single team representing the whole of Ireland in international competitions. Other sports, such as soccer and netball, have separate organizing bodies in Northern Ireland and the Republic of Ireland. +As Northern Ireland is a constituent nation of the United Kingdom it also sends a Northern Ireland Team to the Commonwealth Games. At the Olympic Games, a person from Northern Ireland can choose to represent either Ireland or Great Britain. +Soccer is the most popular team sport in terms of participation. According to the Irish Sports Monitor 2015 annual report, 4.8% of adults over 15 participate in Soccer. Gaelic football 2%, camogie 1.2, rugby 1.1%. Individual exercise pursuits are most popular with 43% of all sport participated by individuals on their own. Personal exercise 13.7%, running 8.2%, swimming 8%, cycling 5.5%, dancing 3%, golf 2.7%, weights 2.3%, yoga 1.5% and pilates 1.4%. +Soccer is by far the most popular team pursuit for males at 8.8% with Gaelic football attracting 3.4%. Personal exercise 13.4% and running 8.9% are the most popular male activities. Team sports do not figure highly amongst females with dancing at 4.6% and yoga 2.4% are two of the highest shared activities. +Given the variety of sports in Ireland, it is of interest to note how the government's Capital Sports programme 2017 allocated it's €56 million funds. €23.5 million went to the GAA which highlights the strength of the GAA lobby. €7.25 million to soccer, Rugby €3.1 million, tennis €2.64 million, golf €1.97 million, sailing €1.21 million, athletics just under €1 million, diving €451,000 while other sports did not fare so well. +Gaelic Football is one of the most popular sports in Ireland in terms of match attendance, and in 2003 had 34% of total sports attendances at events in the Republic of Ireland, followed by hurling at 23%, soccer at 16% and rugby at 8%. Initiative's ViewerTrack study, which measured 2005 sports audiences, showed the sport's highest-profile match, the All-Ireland Football Final, to be the most watched event of the nation's sporting year. Soccer is the most played team sport in Ireland. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Islamic world.txt b/.github/workflows/data/simplewiki-500/Islamic world.txt new file mode 100644 index 000000000..98c7153e6 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Islamic world.txt @@ -0,0 +1,28 @@ +The Islamic world or Muslim world consists of all people who believe in Islam. It is not an exact location, but rather a community. When they do things together as Muslims, they are the "umma", which means "community" referring to all of the believers. The faith emphasizes unity and defense of fellow Muslims, so it is common for these nations to cooperate. Recent conflicts in the Muslim world have sometimes spread because of this desire to cooperate (see below). It is also likely that some have been made shorter and less damaging because of it. Some might even have never started. +Demographics. +Muslims are in many countries. In the world, there are 52 nations which are Muslim majority. Almost all are Sunni. They speak about 60 languages and come from all ethnic backgrounds. +Media. +The "Al-Jazeera" satellite TV network in the Arabic language is a news source many Muslims watch. +In most Muslim nations, the government is the main source of news. This sometimes makes it very difficult or dangerous to make anti-government statements. +There are, however, many other news programmes and websites in the Muslim world. +Islam in law and ethics. +Islamic law exists in many variations - in Arabic it is called shariah - five schools of which were created centuries ago. These are the classical fiqh: the Hanafi school from India, Pakistan and Bangaladesh, West Africa, Egypt, the Maliki in North Africa and West Africa, the Shafi in Malaysia and Indonesia, the Hanbali in Arabia, and Jaferi in Iran and Iraq - where the majority is Shia. All five are very old and many Muslims feel a new fiqh must be created for modern society. Islam has a method for doing this, al-urf and ijtihad are the words to describe this method, but they have not been used in a long time, and few people are trusted enough to use them to make new laws. +So, in most of the Muslim world, people are very conservative, especially about alcohol, adultery, abortion and women working in jobs where they are used to lure customers. +Muslim women often dress extremely modestly, and many do so by choice. But in some countries they have been forced to do so against their will. This is one of the things that causes tension between the Western World and that of Muslims. +Islamic economics bans debt but in most Muslim countries Western banking is allowed. This is another issue that many Muslims have with the Western world. +Islam in politics. +One quarter of the world population share Islam as an ethical tradition. +Many people in these countries also see Islam as a political movement. In democratic countries there is usually at least one Islamic party. +Political Islam is powerful in all Muslim-majority countries. Islamic parties in Pakistan and Algeria have taken power. +Many in these movements call themselves Islamists, which also sometimes describes more militant Islamic groups. The relationships between these groups and their views of democracy are complex. +Some of these groups are called terrorists because they attack civilians of other non-Muslim nations, to make a political point. +Conflicts with Israel and the US. +Israel is very unpopular in the Muslim world, because of the Israeli-Palestinian conflict and the way that the state of Israel came into being in 1948 which many Arabs thought was unfair. +Some Muslims see this as a fight against Judaism or Jews, but not all. In Morocco for instance, the Islamists recently invited Jews to join the party. Jewish groups also cooperate with Arabs in the West Bank, where Neturei Karta (anti-Zionist orthodox Jewish) leader Rabbi Mosche Hirsch served as the Minister for Jewish Affairs in the Fatah before there was a Palestinian Authority. Like the Arabs, this small group of Jews thought the way Israel was created was not right. However, very few Jews believe this, and most support Israel as a state. +In 1979 there was a big shift in the way the Muslim world dealt with the rest of the world. In that year, Egypt made peace with Israel, Iran became an Islamic state after a revolution, and there was an invasion of Afghanistan by the Soviet Union. A lot of things changed in that year. By 2001 the Soviet Union was gone, Jordan had also made peace with Israel, and on September 11, 2001 there were major attacks on the U.S. - which most people believe were made to drive the United States out of the Muslim world, especially Saudi Arabia. In many ways the events of 1979 led to the events of 2001. +The 2001 invasion of Afghanistan and 2003 invasion of Iraq are called part of a War on Terrorism by the United States. Many or most Muslims see it as a War on Islam. After the invasion, the Islamic parties won more seats, and a majority of Muslims polled in many nations expressed support for Osama bin Laden and said he would "do the right thing". Olivier Roy is a French scholar who thinks that this does not express support for al-Qaeda or militant Islam but opposing colonialism and what many Muslims call racism - favourable treatment for Jews especially those living in West Bank settlements, many of whom have American or British passport, and which the United Nations says have no right to live there. +The situation is very complicated and there are many different views of it. +Organization. +The Organization of Islamic Conference formed in 1969 lets the Muslim nations work as a group. Russia joined in 2003. +The Arab League is a smaller group of only the Arab countries. +OPEC is another forum where issues between the Muslim and non-Muslim world come up. In 1973 to protest U.S. support for Israel there was an oil embargo which caused the 1973 energy crisis. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Island.txt b/.github/workflows/data/simplewiki-500/Island.txt new file mode 100644 index 000000000..115c19b9b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Island.txt @@ -0,0 +1,7 @@ +An island is a piece of land that is surrounded by a body of water such as a lake, river, sea or ocean. Islands are smaller than continents. Although there are many Islands that surround fresh water, the vast majority of them surround oceans. +Greenland and Australia are huge islands, but they are built of continental rock, and the latter is generally considered a continent. The most ancient part of continental rock is far older and chemically more complex than the rock of the sea floor. +The heart of continents is their cratons, which are the most ancient and stable parts of the Earth's crust. In the cratons are all the rare elements needed for electronic equipment. They were swept up as the Sun moved through areas where supernovae had exploded. The rare elements we need were all got indirectly from supernovae explosions. The Sun's energy comes from turning hydrogen into helium. +There are some islands which do have rare elements, and that is a sign that they were once part of a large supercontinent. So Great Britain was once part of a supercontinent. The oldest rocks are 2,700 million years old, and include many rare elements only found in cratons. Britain is a snapped-off piece of the "Old Red Sandstone continent", now known as Laurasia. +Other islands that were formed from the ocean floor, as Japan, and Hawaii were, lack most of the rare elements. Japan has for many years since WWII imported iron ore from Australia. Its seizing of Manchukuo (~Manchuria) and the infamous attack on Pearl Harbour no doubt had many reasons. Lack of raw materials was one of these Now it looks for potential in its nearby deep-sea muds. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Italian.txt b/.github/workflows/data/simplewiki-500/Italian.txt new file mode 100644 index 000000000..90256dc1f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Italian.txt @@ -0,0 +1,2 @@ +The word Italian may mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Italians.txt b/.github/workflows/data/simplewiki-500/Italians.txt new file mode 100644 index 000000000..5c53242ab --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Italians.txt @@ -0,0 +1,3 @@ +Italians ( ]) are a Romance ethnic group native to the Italian peninsula. Italians have a common culture, history, ancestry and language. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Italy.txt b/.github/workflows/data/simplewiki-500/Italy.txt new file mode 100644 index 000000000..539c6c60b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Italy.txt @@ -0,0 +1,64 @@ +Italy ( ]) is a country in Southern Europe with small island territories in North Africa. It is a member of the European Union. Its official name is the Italian Republic (). The Italian flag is green, white and red. Italy is a democratic republic. +Italy is a founding member of the European Union. In 2022, Italy's president is Sergio Mattarella. Its prime minister is Giorgia Meloni. Italy is also a member of the G7, as it has the eighth largest gross domestic product in the world. +Italy has become famous for its wine and food. Some foods are different between regions. Famous dishes include various types of pasta, pizza, and grapes. Olives are also often used. +Before 1861, Italy was made up of smaller kingdoms and city-states. +The country's capital, Rome, is one of the most famous cities in the world. It was the capital of the Roman Empire. Other famous cities in Italy include Venice, Naples, Turin, Genoa, Florence, Palermo, and Milan. +Geography. +Italy is a peninsula. It is surrounded by the sea on all of its sides except its north side. Northern Italy is separated from France, Switzerland, and Austria by the Alps, a chain of mountains. Mont Blanc ("Monte Bianco" in Italian or "white mountain" in English), the highest mountain in Western Europe, is in this chain. The second important chain of mountains in Italy is the Apennines (), which are in central and southern Italy. +The Po River is the longest river in Italy. It flows through 5 cities: Turin, Piacenza, Cremona, and Ferrara. The Tiber River runs through the city of Rome. +Northern Italy has some of the biggest lakes in the country, such as Lake Garda, Lake Como, Lake Maggiore and Lake Iseo. Because it is surrounded by the sea, Italy has a very long coast, which brings tourists from all over the world. Tourists also come to see Italy's historical places. +The country has a number of islands, the biggest of which are Sicily and Sardinia, which can be reached by ship or aircraft. Italy has a border at sea with Libya to the south. +Political geography. +The capital of Italy is Rome. This is where the Roman Empire started. Other large cities in Italy include Milan, Naples, Turin, Florence, Palermo, and Venice. +Two enclaves (separate countries) are located within Italy. They are San Marino, which is surrounded by Northern Italy, and the Vatican City, which is surrounded by the city of Rome. Vatican City is also the only enclave in the world to also be surrounded by a city. +Climate. +Italy has both an oceanic climate and continental climate. +The highest temperature ever recorded in Italy was on 25 June 2007 in Foggia. +The lowest temperature ever recorded in Italy was on 10 February 2013 at Pale di San Martino +Tourism. +In Italy, Lake Como is considered one of the most exclusive destinations for billionaires from all over the world, as if it were a high-luxury district of Milan. Many American actors and families of the European high nobility own villas with a lake view on Lake Como, which today are worth hundreds of millions of euros. +People and culture. +People from Italy are called Italians. Even if an Italian were to leave Italy, it is possible that their descendants could also claim Italian citizenship. This is because of Italian nationality law relying mostly on "ius sanguinis," or "right of blood" in Latin. Almost all Italians are Christians. Most of these are Roman Catholics. Roman Catholicism is based in the Vatican City, which is home to its leader, the Pope. +The population of Italy is about 60 million people. Almost 3 million of them live in Rome, and 1.5 million in Milan. As of December 2015, over 5 million foreigners were living in Italy, which is 8.3% of the total population. +The official language of Italy is Italian. German, Slovenian, French, and a few others are also recognized. People also speak dialects of Italian such as Sicilian and Sardinian. There are many different dialects spoken in Italy. They vary between regions and sometimes between provinces. +The people of Italy are mostly descendant from the ancient Romans. +Italy is home to more World Heritage Sites than any other country in the world. These sites are culturally important and valued according to UNESCO. About 60% of the works of art of the world are in Italy. Italy is also a big wine producer. In 2005, it made over 5 million tonnes of wine. +Linguistic minorities in Italy include Sardu-speakers 1 million, Tyrolese German-speakers 350,000, Albanians 70,000 – 100,000, Slovenes 60,000, Franco-Provençal-speakers 50,000 – 70,000, Occitans 20,000 – 40,000, Ladins 30,000, Catalans 15,000, Greek-speakers 12,000 and Croatians 3,000, as well as Friulians 600,000. The Roma community in Italy is one of the largest ethnic minorities in the country. Italy has a growing immigrant population. This foreign population includes Romanians 1,190,100, Albanians 440,500, Moroccans 416,500, Ukrainians 237,000, Chinese 290,700, Filipinos 167,900 and Indians 151,800. +Food. +A partial list of famous Italian foods include pasta, pizza, risotto, polenta, and gnocchi. +Art. +Many notable artists were from Italy. They include: +Economy. +Italy has a modern social welfare system. The labor market is very strong. Many foreigners, especially from Romania, work in Italy where the wages are much higher. +Italy's modern society has been built up through loans. Now the country has a very high debt of 1.9 trillion euros or 120% of the country's total GDP. +Religion. +Most people in Italy are Roman Catholics, but the Catholic Church is no longer officially the state religion. Around 50% of the people said they were Roman Catholic. +Only about a third said they were active members (40%). There are also other Christian groups in Italy, with more than 700,000 Eastern Orthodox Christians. 180,000 of them belong to the Greek Orthodox Church. +550,000 are Pentecostals and Evangelicals (0.8%). 235,685 Jehovah's Witnesses (0.4%), 30,000 Waldensians, 25,000 Seventh-day Adventists, 22,000 Mormons, 20,000 Baptists, 7,000 Lutherans, 4,000 Methodists. +The country's oldest religious minority is the Jewish community. It has about 45,000 people. It is no longer the largest non-Christian group. There are also about 50,000 Buddhists 70,000 Muslims and 70,000 Hindus in Italy. +Regions. +Italy has 20 regions (). Every region is divided into provinces. +There are 20 regions. Five of them have a special status, called "autonomous". This means that they can make certain local laws more easily. These regions are marked with an asterisk (*) below. +Politics. +The head of state is Sergio Mattarella. He became President of the Italian Republic in February 2015. The first president was Enrico De Nicola. +The head of government is Giorgia Meloni. She became Prime Minister on October 22, 2022, the first woman in that role. She succeeded Mario Draghi. Draghi's cabinet, fell after support for his coalition fell. +Italy was one of the first members of the European Union. In 2002 along with 11 other European countries, it changed to using the euro as its official currency. Before this, the Italian lira had been used since 1861. +Anyone who wants to be President of Italy must have Italian citizenship, be at least 50 years old, and must be able to uphold political and civil rights. +History. +The capital of Italy is Rome. Rome was founded in 753 BC. It was a separate state well known as Roman Kingdom firstly, Roman Republic and Roman Empire later. It conquered various neighbors including the Etruscan civilization in the north and the states in the south known as Magna Graecia. +Before 1861, Italy was not a state. The area included a group of separate states that were ruled by other countries (such as Austria, France, and Spain). In the 1850s, the Earl of Camillo Benso, Count of Cavour was the head of government of the "State of Sardinia". He talked to the Austrians in Lombardy and Veneto and said they should create a Northern Italian state. This happened, but other Central and Southern Italian states also joined Piedmont to create a bigger state. +Kingdom of Italy. +In 1860, Giuseppe Garibaldi took control of Sicily, creating the Kingdom of Italy in 1861. Victor Emmanuel II was made the king. In 1861, Latium and Veneto were still not part of Italy, because they were ruled by the Pope and Austrian Empire. +Veneto was made part of Italy in 1866 after a war with Austria. Italian soldiers won Latium in 1870. That was when they took away the Pope's power. The Pope, who was angry, said that he was a prisoner to keep Catholic people from being active in politics. That was the year of Italian unification. +Italy participated in World War I. It was an ally of Great Britain, France, and Russia against the Central Powers. Almost all of Italy's fighting was on the Eastern border, near Austria. After the "Caporetto defeat", Italy thought they would lose the war. But, in 1918, the Central Powers surrendered. Italy gained the Trentino-South Tyrol, which once was owned by Austria. +Fascist Italy. +In 1922, a new Italian government started. It was ruled by Benito Mussolini, the leader of Fascism in Italy. He became head of government and dictator, calling himself "Il Duce" (which means "leader" in Italian). He became friends with German dictator Adolf Hitler. Germany, Japan, and Italy entered the Axis Powers. In 1940, they entered World War II together against France, Great Britain, and later the Soviet Union. During the war, Italy controlled most of the Mediterranean Sea. +On July 25, 1943, Mussolini was removed by the Great Council of Fascism. On September 8, 1943, Badoglio said that the war as an ally of Germany was ended. Italy started fighting as an ally of France and the UK, but Italian soldiers did not know whom to shoot. In Northern Italy, a movement called Resistenza started to fight against the German invaders. On April 25, 1945, much of Italy became free, while Mussolini tried to make a small Northern Italian fascist state called the Republic of Salò. The fascist state failed and Mussolini tried to flee to Switzerland and escape to Francoist Spain, but he was captured by Italian partisans. On 28 April 1945 Mussolini was executed by a partisan. +After World War Two. +The state became a on June 2, 1946. For the first time, women were able to vote. The Italian people ended the Savoia dynasty and adopted a republican form of government. +In February of 1947, Italy signed a peace treaty with the Allies. They lost all the colonies and some territorial areas (Istria and parts of Dalmatia). +Since then Italy has joined NATO and the European Community (as a founding member). It is one of the seven biggest industrial economies in the world. +Transportation. +The railway network in Italy totals . It is the 17th longest in the world. High speed trains include -class trains which travel at speeds of up to . +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/January.txt b/.github/workflows/data/simplewiki-500/January.txt new file mode 100644 index 000000000..db3528cef --- /dev/null +++ b/.github/workflows/data/simplewiki-500/January.txt @@ -0,0 +1,15 @@ +January (Jan.) is the first month of the year in the Julian and Gregorian calendars, coming between December (of the previous year) and February (of the current year). It has 31 days. +January begins on the same day of the week as October in common years, and April and July in leap years. January ends on the same day of the week as February and October in common years, and July in leap years. +The Month. +January is named for Janus, the Roman god of doors and gates. +January and February were put on the calendar after all the other months. This is because in the original Roman calendar, winter did not have months. Although March was originally the first month, January became the new first month because that was when people chose the new consuls (Roman leaders). The month has 31 days. +January is a winter month in the Northern Hemisphere and a summer month in the Southern Hemisphere. In each hemisphere, it is the seasonal equivalent of July in the other. Perihelion, the point in its orbit where the Earth is closest to the Sun, also occurs in this month, between January 2 and January 5. January is the only month of the year that always has a "twin" - a month that both begins and ends on the same day of the week as it does. In a common year, this is October, and in a leap year, July. +January begins on the same day of the week as October in common years and on the same day of the week as April and July in leap years. January ends on the same day of the week as February and October in common years and on the same day of the week as July in leap years. +Every year, January both starts and finishes on the same day of the week as May of the previous year, as each other's first and last days are exactly 35 weeks (245 days) apart. +In common years immediately before other common years, January starts on the same day of the week as April and July of the following year, and in leap years and years immediately before that, September and December of the following year. In common years immediately before other common years, January finishes on the same day of the week as July of the following year, and in leap years and years immediately before that, April and December of the following year. +January's flower is the carnation with its birthstone being the garnet. +The first day of January is called New Year's Day. It is said that it became this date when Roman consuls took office on this day in 153 BC. Different calendars across Europe made this the start of the New Year at different times, as some observed it on March 25. +Reaching over from December, the Christmas season in Christianity also extends into this month. Eastern churches celebrate Christmas on January 6 or January 7, and Epiphany on January 18 or January 19. In Western Christianity this occurs on January 6, with Christmas occurring on December 25. +January 1 is celebrated the Solemnity of Mary, the Mother of God, that is a feast day of precept of the Blessed Virgin Mary. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Japan.txt b/.github/workflows/data/simplewiki-500/Japan.txt new file mode 100644 index 000000000..180c13be1 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Japan.txt @@ -0,0 +1,52 @@ +Japan (; Romanized as "Nihon" or "Nippon") is a country in East Asia. It is a group of islands close to the east coast of Korea, China and Russia. The Pacific Ocean is to the east of Japan and the Sea of Japan is to the west. Most people in Japan live on one of the four islands. The biggest of these islands, Honshu, has the most people. Honshu is the 7th largest island in the world. Tokyo is the capital of Japan and its biggest city. +The Japanese people call their country "Nihon" or "Nippon", which means "the origin of the Sun" in Japanese. Japan is a monarchy whose head of state is called the Emperor. Japan is the oldest monarchy in the world, lasting more than 2,000 years. +History. +The first people in Japan were the Ainu people and other Jōmon people. They were closer related to Europeans or Mongols. They were later conquered and replaced by the Yayoi people (early Japanese and Ryukyuans). The Yayoi were an ancient ethnic group that migrated to the Japanese archipelago mainly from southeastern China during the Yayoi period (300 CE–300 AD). Modern Japanese people have primarily Yayoi ancestry at an average of 97%. The indigenous Ryukyuan and Ainu peoples have more Jōmon ancestry on the other hand. +The earliest records on Japan are from Chinese documents. One of those records said there were many small countries (in Japan) which had wars between them and later a country, ruled by a queen, became the strongest, unified others, and brought peace. +The Japanese began to write their own history after the 5th and 6th century, when people from Korea and China taught Japan about the Chinese writing system. Japan's neighbours also taught them Buddhism. The Japanese changed Buddhism in many ways. For example, Japanese Buddhists used ideas such as Zen more than other Buddhists. +Japan had some contact with the Europeans in the 16th century. The Portuguese were the first Europeans to visit Japan. Later, the Spanish and Dutch came to Japan to trade. Also, they brought Christianity. Japan's leaders welcomed them at first, but because Europeans had conquered many places in the world, the Japanese were scared they would conquer Japan too. So the Japanese did not let the Europeans come into Japan anymore, except in a small area in Nagasaki city. Many Christians were killed. Only the Chinese, Korean, and Dutch people were allowed to visit Japan, in the end, and they were under careful control of the Japanese government. Japan was opened for visitors again in 1854 by Commodore Matthew Perry, when the Americans wanted to use Japanese ports for American whale boats. Perry brought steamships with guns, which scared the Japanese into making an agreement with him. +This new contact with Europeans and Americans changed the Japanese culture. The Meiji Restoration of 1868 stopped some old ways and added many new ones. The Empire of Japan was created, and it became a very powerful nation and tried to invade the countries next to it. +It invaded and annexed Ryukyu Kingdom, Taiwan, and Korea. It had wars with China and Russia: the First Sino-Japanese War, the Boxer Rebellion, the Russo-Japanese War, World War I and Siberian Intervention. +In 1918, World War I allowed Japan, which joined the side of the victorious Allies, to capture German possessions in the Pacific and in China. +The Second Sino-Japanese War (1937-1945) grew to become a part of World War II when Japan became allies with Nazi Germany and Fascist Italy. +In 1941, Japan attacked Pearl Harbor in Hawaii, and destroyed or damaged many ships and airplanes of the United States. This started the United States' involvement in World War II. American and Japanese forces fought each other in the Pacific. The Americans captured most of the islands in the Pacific, started dropping bombs on Japanese cities, and prepared to invade. +To make Japan surrender, the United States dropped two atomic bombs on the cities of Hiroshima and Nagasaki, killing 150,000 Japanese citizens. Soon after this the Soviet Union began to fight against Japan, and the Japanese army in Manchuria lost. Japan surrendered and gave up all the places it took from other countries, accepting the Potsdam Proclamation. The United States occupied Japan from September 1945 to April 1952 and forced it to write a new constitution, in which it promised to never go to war again. +Japan was granted membership in the United Nations in 1956. A period of record growth propelled Japan to become the second-largest economy in the world. On 11 March 2011, Japan suffered one of the largest earthquakes in its recorded history, triggering the Fukushima Daiichi nuclear disaster. On 1 May 2019, after the historic abdication of Emperor Akihito, his son Naruhito became Emperor, beginning the Reiwa era. On 8 July 2022, former Prime Minister Shinzo Abe was assassinated while giving a campaign speech in Nara. +Geography. +Japan is a group of islands in the Western Pacific, off the coast of China. The four biggest islands are Honshu, Hokkaido, Shikoku, and Kyushu, and there are about 6,000 smaller islands there. Japan is separated from the Asian continent by the Sea of Japan and the East China Sea. Honshu, which means 'Mainland' in the Japanese language, is the biggest island. Hokkaido is the island north of Honshu. Kyushu is the island west of Honshu. Shikoku is the island to the south-west of Honshu. +In the middle of Japan there are mountains. They cover the middle of the islands and leave a very narrow strip of flat land on most coasts. Many of the mountains are extinct volcanoes, but some are still active. The highest of these mountains is the beautiful, volcano-shaped Mt Fuji (3,776 metres or 12,389 feet high). Japan has many earthquakes, in fact there are about 1500 of these every year. The biggest earthquake recorded in Japan was in 2011 - called '2011 Tohoku Earthquake'. It caused great damage to several power plants forcing Japan to shut down all its nuclear plants. There was nuclear core meltdown which caused a serious health risk to nearby villages and cities. +90% of the people living in Japan live in just 10% of the land, near the coast. The other 10% of the people in Japan live away from the coast. +Over 10 cities have more than a million people in them. The biggest city in Japan is Tokyo, which is the capital. +Science and technology. +Japan has made many contributions to science and technology. +The QR code, the camera phone, the CD player, and the VHS were invented in Japan. +Japan is a leader in the robotics industry: It is the world's largest maker of industrial robots. It has the 2nd most industrial robots behind China. +Economy. +Japan has one of the strongest economies of any country. Its nominal gross domestic product (GDP) is the 3rd highest in the world. It has a very low unemployment rate and was the 4th-largest exporter and 4th-largest importer in 2021. +Japan is known for its automotive industry: It is home to Toyota, the world's largest car company. Honda, Nissan, Suzuki and Mazda are other popular car makers from Japan. +Tokyo is the most populous city in the world. It also has one of the largest economies of any city. It is an important financial center: It has the Tokyo Stock Exchange, one of the largest stock exchanges in Asia. +Society and culture. +Many things in Japanese culture originated in China, like Go and bonsai. +Cherry blossom also known as Japanese cherry and Sakura is thought to be the national flower of Japan. +Japan's traditional food is seafood, rice, miso soup, and vegetables. Noodles and tofu are also common. Sushi, a Japanese food made of cooked rice with vinegar with other ingredients such as raw fish, and sometimes fried shrimp, is popular around the world. +The religion in Japan is mostly Shinto and Buddhist. Due to the tolerant nature of the two main Japanese religions, and the resulting intermixing of the two, many Japanese identify as both Shinto and Buddhist at the same time. There are small numbers of Christians and Hindus, and a few Jews. +When it comes to popular culture, Japan is famous for making video games. Many of the biggest companies that make games, like Nintendo, Namco, and Sega, are Japanese. Other well-known parts of Japanese arts are its comics, called manga, and its digital animation, known as anime. Many people get to know Japanese or how life in Japan is like by reading manga or watching anime on television. +The Ryukyuans and the Ainu both have their own separate cultures, languages and religion. +Cities, regions and territories. +The biggest cities in Japan are: +In Japan there are seven traditional regions: +Territorial problem. +Since Japan is an island nation, Japan has several problems over territory because maritime boundaries can be hard to protect. These days, Japan is competing for at least 4 different territories. It cannot agree with some neighbouring countries on whether the land belongs to Japan or the other country. +Public transportation. +There are several important international airports in Japan. Narita is the major international airport in the Tokyo area. Kansai International Airport serves as the main airport for Osaka, Kobe, and Kyoto. Chūbu Centrair International Airport near Nagoya is the newest of the three. Haneda Airport is close to central Tokyo and is the largest domestic airport in the country. +The Shinkansen is one of the fastest trains in the world and connects cities in Honshu and Kyushu. Networks of public and private railways are almost all over the country. People mostly travel between cities in buses. +Subdivisions. +Modern Japan is divided into 47 prefectures. Before the Meiji period (1868-1912), the nation was divided into provinces which were consolidated in the prefectural system. +Sports. +Japan has many traditional sports such as sumo, judo, karate, kyudo, aikido, iaido and kendo. Also, there are sports which were imported from the West such as baseball, soccer, rugby, golf and skiing. Baseball is the most popular sport. +Japan has taken part in the Olympic Games since 1912. It hosted the Olympic Games in 1964, 1972, 1998 and 2020. From 1912 until now, Japanese sportspeople have won 398 medals in total. +Professional sports are also popular and many sports such as baseball (see Pacific League and Central League), soccer (see List of Japanese football teams), sumo, American football, basketball and volleyball, are played professionally. +References. +<templatestyles src="Reflist/styles.css" /> +Notes. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Jargon.txt b/.github/workflows/data/simplewiki-500/Jargon.txt new file mode 100644 index 000000000..8d354dcdf --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Jargon.txt @@ -0,0 +1,6 @@ +Jargon is a special way to use words that are shared only by a certain group of people. They may not mean what the dictionary says they mean. They have different meanings to the people using them than their everyday meaning. +For example, the ordinary words "boot", "net", and "web" also have special meanings for users of computers, the Internet, and the World Wide Web. These, and to flame, to ping and many acronyms are part of net jargon. +An "acronym" means that only some of the letters in the word or phrase are used. Often this is the first letter of each word. Other acronyms found online are simply common shorthand. +Usually, more jargon is created over time. +Jargon is common in the military and other complex organisations. It includes phrases like SNAFU. +Jargon can be used by a clique to prevent others from joining or understanding, but it also is often just used because it is shorter. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/July.txt b/.github/workflows/data/simplewiki-500/July.txt new file mode 100644 index 000000000..7ad051003 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/July.txt @@ -0,0 +1,13 @@ +July (Jul.) is the seventh month of the year in the Gregorian calendar, coming between June and August. It has 31 days. July was named after Julius Caesar. The halfway point of the year is either on July 2 or in the night of July 1-2. +July always begins on the same day of the week as April, and additionally, January in leap years. July does not end on the same day of the week as any other month in common years, but ends on the same day of the week as January in leap years. +The Month. +In each hemisphere, it is the seasonal equivalent of January in the other hemisphere. In the North, it is summer and in the South it is winter. +In the Northern Hemisphere, July is often the warmest month of the year, and major sporting events and music festivals are held around this time. In the Southern Hemisphere, it is a winter month, with the coldest-recorded temperature having been measured in Antarctica in this month. +July begins on the same day of the week as April every year and on the same day of the week as January in leap years. No other month in common years ends on the same day of the week as July, but July ends on the same day of the week as January in leap years. +In common years, July starts on the same day of the week as October of the previous year, and in leap years, May of the previous year. In common years, July finishes on the same day of the week as February and October of the previous year, and in leap years, May of the previous year. In common years immediately after other common years, July both starts and finishes on the same day of the week as January of the previous year. +In years immediately before common years, July starts on the same day of the week as September and December of the following year, and in years immediately before leap years, June of the following year. In years immediately before common years, July finishes on the same day of the week as April and December of the following year, and in years immediately before leap years, September of the following year. +July's flower is a variety of the water lily. Its birthstone is the ruby. The meaning for the birthstone ruby is contented mind. Astrological signs for July are Cancer (June 21 - July 21) and Leo (July 22 - August 21). +In the old Roman calendar, July was called "Quintilis", meaning "Fifth Month", because, in the old calendar, the year began in March. Augustus later renamed it July in honor of Julius Caesar, whose birthday was in this month. Augustus later also named the following month, August, after himself. +In Catholic tradition, July is the Month of the Most Precious Blood of Jesus. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/June.txt b/.github/workflows/data/simplewiki-500/June.txt new file mode 100644 index 000000000..5066ce82f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/June.txt @@ -0,0 +1,24 @@ +June (Jun.) is the sixth month of the year in the Julian and Gregorian calendars, coming between May and July. It has 30 days. June is named for the Roman goddess Juno, the wife of Jupiter. +June never begins on the same day of the week as any other month, but always ends on the same day of the week as March. +The Month. +June comes between May and July and is the sixth month of the year in the Gregorian calendar. It is one of four months to have 30 days. +No other month of any year begins on the same day of the week as June: this month and May are the only two months with this property. June ends on the same day of the week as March every year, as each other's last days are 13 weeks (91 days) apart.In common years, June starts on the same day of the week as September and December of the previous year, and in leap years, April and July of the previous year. In common years, June finishes on the same day of the week as September of the previous year, and in leap years, April and December of the previous year. +Every year, June starts on the same day of the week as February of the following year, as each other's first days are exactly 35 weeks (245 days) apart. In years immediately before common years, June starts on the same day of the week as March and November of the following year, and in years immediately before leap years, August of the following year. In years immediately before common years, June finishes on the same day of the week as August and November of the following year, and in years immediately before leap years, May of the following year. +June is one of two months to have a solstice (the other is December, its seasonal equivalent in both hemispheres), and in this month the Tropic of Cancer in the Northern Hemisphere is turned towards the Sun, meaning that June 20 or June 21 is the Northern Summer Solstice and the Southern Winter Solstice. This means that this date would have the most daylight of any day in the Northern hemisphere, and the least in the Southern Hemisphere. There are 24 hours of daylight at the North Pole and 24 hours of darkness at the South Pole. +Selection of Historical Events. +June 1, 1794: French Revolutionary Wars: The battle of the Glorious First of June is fought, the first naval engagement between Britain and France. +June 2, 1953: Coronation of Queen Elizabeth II of the United Kingdom. +June 3, 1965: The launch of "Gemini 4", the first multi-day space mission by a NASA crew. June 4, 1783: The Montgolfier brothers publicly demonstrate their "montgolfière" (hot air balloon). +June 5, 1837: Houston is incorporated by the Republic of Texas. +June 6, 1844: The Young Men's Christian Association is founded in London. +June 7, 1942: World War II: The Battle of Midway ends in American victory. +June 8, 1949: George Orwell's "Nineteen Eighty-Four" is published. +June 9, 1944: World War II: Tulle massacre +June 10, 2003: The "Spirit" rover is launched for NASA's Mars Exploration mission +June 11, 2010: 2010 FIFA World Cup (first African FIFA) +June 12, 2018: 2018 North Korea-United States Summit +June 13, 1983: "Pioneer 10" becomes the first man-made object to leave the central Solar System +June 25, 1950: Korean War starts. +June 30, 1908: Tunguska event. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Jupiter.txt b/.github/workflows/data/simplewiki-500/Jupiter.txt new file mode 100644 index 000000000..7d1aee935 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Jupiter.txt @@ -0,0 +1,57 @@ +Jupiter is the largest planet in the Solar System. It is the fifth planet from the Sun. Jupiter is a gas giant because it is large and made mostly of gas, gas giants are a subtype of giant planets. The other giant planets in the Solar System are Saturn, Uranus, and Neptune. +Jupiter was discovered by Galileo Galilei in 1610 with a small telescope. The planet has a Great Red Spot which is located at 22 degrees south of Jupiter's equator. The great red spot produces wind-speeds up to 432 km/h (268 mph). +By mass, Jupiter's atmosphere is around 76% hydrogen and 24% helium. However, since helium atoms are larger than hydrogen molecules, Jupiter's upper atmosphere is about 90% hydrogen and 10% helium by volume. The atmosphere also contains small amounts of methane, water vapour, ammonia, and silicon-based compounds as well as trace amounts of carbon, ethane, hydrogen sulfide, neon, oxygen, phosphine, and sulfur. The outermost layer of the atmosphere contains crystals of frozen ammonia. Through infrared and ultraviolet measurements, small amounts of benzene and other hydrocarbons have also been found. The interior of Jupiter contains denser materials—by mass it is roughly 71% hydrogen, 24% helium, and 5% other elements. +Jupiter was the first planet to form. It moved towards the center during the early times of the Solar System. This affected how other planets were formed. Hydrogen make up most of Jupiter (90% by volume). Helium is the second and makes up a quarter of the mass and a tenth of the volume. Jupiter's interior is getting smaller. This process makes more heat than the planet receives from the Sun. It is believed that there is an outer mantle and a diffuse inner core of denser material inside Jupiter. Liquid metallic hydrogen would make up the outer mantle. Jupiter rotates very fast at 1 rotation per 10 hours. This creates a slight but noticeable bulge around the equator. So, Jupiter's shape is an oblate spheroid. The outer atmosphere have many bands across the latitude. Interactions between the bands create turbulence and storms. The Great Red Spot is the most obvious example. It is a giant storm which has was seen since 1831 and possibly earlier. +Name and symbol. +Jupiter was named for the king of the gods. The Greeks called him Zeus. The Romans called him Jupiter. The symbol for Jupiter, , is from the Greek zeta. It has a horizontal stroke ⟨Ƶ⟩. This stands as an abbreviation for "Zeus". +Structure. +Jupiter is the biggest planet in the Solar System. Its diameter is 142,984 km. This is eleven times larger than the diameter of Earth. Jupiter is twice as massive as all the other planets in the Solar System put together. Jupiter is 318 times as massive as Earth. The volume of Jupiter is 1,317 times the volume of Earth. In other words, 1,317 Earth-sized objects could fit inside it. It gives off more heat than it gets from the Sun. +Atmosphere. +The atmosphere near the surface of Jupiter is about 90% hydrogen, 10% helium, and less than 1% other gases. +The lower atmosphere is so heated and the pressure so high that helium changes to liquid. It rains down onto the planet. Based on spectroscopy, Jupiter seems to be made of the same gases as Saturn. It is different from Neptune or Uranus. Those two planets have much less hydrogen and helium gas. +Core. +It is not possible to say exactly what metals are in the core of Jupiter. However, by measuring the gravity around Jupiter, one can estimate its size. The inner core is dense. It has a lot of heavy elements, probably in the form of rock and ice. The heavy elements in the core have a total mass of 7–25 times that of Earth. +Round the unknown inner core is an outer core. The outer core of Jupiter is thick, liquid hydrogen. +Jupiter is mainly made of the same elements (hydrogen and helium) as the Sun, but it is not large enough to have the internal pressure and temperature necessary to cause hydrogen to fuse to helium, the energy source that powers the Sun and most other stars. If Jupiter had 75 times its mass, it could fuse hydrogen to helium. +Cloud layers. +Jupiter has many bands of clouds going horizontally across its surface. The light parts are zones and the darker ones are belts. The zones and belts often interact with each other. This causes huge storms. Wind speeds of 360 kilometres per hour (km/h) are common on Jupiter. To show the difference, the strongest tropical storms on Earth are about 100 km/h. +Most of the clouds on Jupiter are made of ammonia. There may also be clouds of water vapor like clouds on Earth. Multiple spacecraft such as Voyager 1 have seen lightning on the surface of the planet. Scientists think it was water vapor because lightning needs water vapor. These lightning bolts have been measured as up to 1,000 times as powerful as those on Earth. +Great Red Spot. +One of the biggest features in Jupiter's atmosphere is the Great Red Spot. It is a huge storm that is bigger than the entire Earth. It is on record since at least 1831, and as early as 1665. Images by the Hubble Space Telescope have shown as many as two smaller "red spots" next to the Great Red Spot. Storms can last for hours or as long as hundreds of years in the case of the Great Red Spot. +Magnetic field. +Jupiter has a magnetic field like Earth's but 10 times stronger. It also has a "magnetosphere" much bigger and stronger than Earth's. The field traps radiation belts much stronger than Earth's Van Allen radiation belts, strong enough to endanger any spacecraft travelling near. The magnetic field is probably caused by the large amounts of liquid metallic hydrogen in the core of Jupiter. The four largest moons of Jupiter and many of the smaller ones orbit or go around the planet within the magnetic field. This protects them from the solar wind. Jupiter's magnetic field is so large, it reaches the orbit of Saturn 7.7 million miles (12 million km) away. The Earth's magnetosphere does not even cover its moon, less than a quarter of a million miles (400,000 km) away. Jupiter also experiences large aurorae, which happen when charged particles from the volcanic moon Io land in its atmosphere. +Ring system. +Jupiter also has a thin planetary ring system. These rings are difficult to see and were not discovered until 1979 by NASA's Voyager 1 probe. There are four parts to Jupiter's rings. The closest ring to Jupiter is called the Halo Ring. The next ring is called the Main Ring. It is about wide and only thick. The Main and Halo rings of Jupiter are made of small, dark particles. The third and fourth rings, called the "Gossamer" rings, are transparent and are made from microscopic debris and dust. This dust probably comes from small meteors striking the surface of Jupiter's moons. The third ring is called the Amalthea Gossamer Ring, named after the moon Amalthea. The outer ring, the Thebe Gossamer Ring, is named after the moon Thebe. The outer edge of this ring is about from Jupiter. +Formation. +Jupiter and other gas giants probably started as rocky planets, similar to Earth. This theory is called the "core accretion model". The rocky core would have formed in the early Solar System, within a disk of gases around the Sun. When the planet reached a critical mass, its gravity started to quickly capture lots of gas. In this way, Jupiter became a giant planet. In order for Jupiter to reach this critical mass before the gas disk disappeared, there must have been lots of ice in the area. Jupiter must have formed outside the snow line, the area that is cold enough for water to freeze. +The "disk instability model" is another theory. It says that Jupiter was formed by gas clumping together in the disk around the Sun. In this case, a rocky core would not need to form. However, this process would probably create planets that are bigger than Jupiter, so most scientists think Jupiter was formed by core accretion. +Orbit. +The orbit of a planet is the time and path it takes to go around the Sun. In the time it takes for Jupiter to orbit the Sun once, the Earth orbits the Sun 11.86 times. One year on Jupiter is equal to 11.86 years on Earth. +The average distance between Jupiter and the Sun is 778 million kilometres. This is five times the distance between Earth and the Sun. Jupiter is not tilted on its axis as much as Earth or Mars. This causes it to have no seasons, for example summer or winter. Jupiter rotates, or spins around very quickly. This causes the planet to bulge in the middle. Jupiter is the fastest spinning planet in the Solar System. It completes one rotation or spin in 10 hours. Because of the bulge, the length of the equator of Jupiter is longer than the length from pole to pole. +Jupiter in the Solar System. +Grand tack hypothesis. +The orbit of Jupiter is unusual compared to planets in other star systems. It is usual for giant planets to be much nearer to their stars. Because Jupiter is not, this suggests an unusual explanation is needed for the arrangement of the planets in the Solar System. Astronomers have an idea on why this happened. It is called the grand tack hypothesis. +It is suggested that Jupiter formed about 3.5 astronomical units from the Sun. It started migrating inward and scattered the rocky planet-forming materials out beyond its orbit. Saturn formed later than Jupiter and started its own inward migration. When Jupiter reached 1.5 astronomical units, it became locked into an orbital resonance with Saturn. Both planets turned around and moved outward until Jupiter arrived at its current position, 5.2 astronomical units from the Sun. Saturn arrived at about 7 astronomical units. +The grand tack hypothesis explains another mystery of the Solar System. Mars should have been larger than Earth but is instead only ​1⁄10 of this size. On Jupiter's grand tack, it cleared the area where Mars orbits today. After it left, the material remaining was only enough to form a small planet and a low-mass asteroid belt. Although the hypothesis has not been absolutely proven, there is no other competing explanation why the Solar System's giant should be so far from its star, and Mars so small. +Asteroids and comets. +Jupiter's large gravity has had an effect on the Solar System. Jupiter protects the inner planets from comets by pulling them towards itself. Because of this, Jupiter has the most comet impacts in the Solar System. Jupiter has 95 known natural satellites. +Two groups of asteroids, called Trojan asteroids, have settled into Jupiter's orbit around the Sun. One group is called the "Trojans" and the other group is called the "Greeks". They go around the Sun at the same time as Jupiter. +Research and exploration. +From Earth. +Jupiter is the third brightest object in the night sky, after the Moon and Venus. The first person known to really study the planet was Galileo Galilei in 1610. He was the first person to see Jupiter's moons Io, Europa, Ganymede and Callisto. This was because he used a telescope, unlike anyone before him. +No new moons were discovered for more than two hundred years. In 1892, astronomer E.E. Barnard found a new moon using his observatory in California. He called the moon Amalthea. It was the last of Jupiter's 67 moons to be discovered by human observation through a telescope. +In 1994, bits of the comet Shoemaker Levy-9 hit Jupiter. It was the first time a collision between two Solar System objects was seen. +From spacecraft. +Seven spacecrafts have flown past Jupiter since 1973. These were Pioneer 10 (1973), Pioneer 11 (1974), Voyagers 1 and 2 (1979), Ulysses (1992 and 2004), Cassini (2000) and New Horizons (2007). Two spacecraft have been brought into orbit around Jupiter. These were Galileo (1995) and Juno (2011). +The Pioneer missions were the first spacecraft to take close-up pictures of Jupiter and its moons. Five years later, the two Voyager spacecraft discovered three new moons. They captured photo evidence of lightning on the night side of Jupiter. +The Ulysses probe was sent to study the Sun. It only went to Jupiter after it had finished its main mission. Ulysses had no cameras so it took no photographs. +In 2006, the Cassini spacecraft, on its way to Saturn, took some very good, very clear pictures of the planet. Cassini also found a moon and took a picture of it but it was too far away to show the details. +The Galileo mission in 1995 was the first spacecraft to go into orbit around Jupiter. It flew around the planet for seven years and studied the four biggest moons. It launched a probe into the planet to get information about Jupiter's atmosphere. The probe travelled to a depth of about 150 km before it was crushed by the pressure of all the gas above it. The Galileo spacecraft was also crushed in 2003 when NASA steered the craft into the planet. They did this so that the craft could not crash into Europa, a moon that scientists think might have life. +NASA has sent another spacecraft to Jupiter called Juno. It was launched on August 5, 2011 and arrived at Jupiter on July 4, 2016. NASA published some results from the Juno mission in March 2018. +Several other missions have been planned to send spacecraft to Jupiter's moons, Europa, Callisto, and Ganymede. One called JIMO (Jupiter Icy Moons Orbiter) was cancelled in 2006 because it cost too much money. The European Space Agency launched JUICE (Jupiter Icy Moons Explorer) on April 14, 2023. It will enter orbit around Jupiter in July 2031. +Moons. +Jupiter has 95 known moons, as of February 23, 2023. The four largest were seen by Galileo with his primitive telescope and nine more can be seen with modern telescopes. Three moons were identified by the Voyager spacecraft. All other moons were first seen on Earth, using modern telescopes and advanced photography methods. The smallest moon (S/2003 J 12) is only one kilometre across. The largest, Ganymede, has a diameter of 5,262 kilometres. It is bigger than the planet Mercury. The other three Galilean moons are Io, Europa and Callisto. Due to the way they orbit Jupiter, gravity affects three of these moons greatly. The friction caused by the gravity of Europa and Ganymede pulling on Io makes it the most volcanic object in the Solar System. It has over 400 volcanoes, more than three times as many as Earth. +References. +<templatestyles src="Reflist/styles.css" /> +Notes +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git "a/.github/workflows/data/simplewiki-500/Kaho\312\273olawe.txt" "b/.github/workflows/data/simplewiki-500/Kaho\312\273olawe.txt" new file mode 100644 index 000000000..21524e587 --- /dev/null +++ "b/.github/workflows/data/simplewiki-500/Kaho\312\273olawe.txt" @@ -0,0 +1,4 @@ +Kahoʻolawe is the smallest of the eight main volcanic islands of Hawaii. It is west of Maui and south of Lanaʻi. It is roughly 11 miles long by across (). The highest point, Lua Makika, is above sea level. The island is dry because its low elevation does not cause much rain to fall from the northeastern trade winds. +Kahoʻolawe was used as a gunfire and bombing target by the United States military during World War II. It was a defense training area for the United States Navy from around 1941 until May 1994. Popular opinion in the state against this practice brought the end to this use. The Navy has since been trying to cleanup unexploded bombs and explosive shells from the island. Explosives are still buried or lying on the ground. Other items have washed down gullies and still other unexploded ordnance is underwater offshore. In 1981, the entire island was included on the National Register of Historic Places. +The island is planned to be given back to the Hawaiian people. In 1993, the U.S. Congress passed a law that "recognized the cultural importance of the island, required the Navy to return the island to the State, and directed the Navy to do an unexploded ordnance cleanup and environmental restoration" The turnover officially occurred on November 11, 2003, but the cleanup has not yet been completed. The U.S. Navy was given $400 million and 10 years to complete the large cleanup task, but this work has gone much slower than planned. +After the cleanup is finished, the restoration of Kahoʻolawe will need ways to control erosion, restore the plant life, recharge the water table, and slowly replace alien plants with native ones. Plans will include methods for damming gullies and reducing rainwater runoff. Non-natives will temporarily stabilize some areas before the permanent planting of native plants. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Kauai.txt b/.github/workflows/data/simplewiki-500/Kauai.txt new file mode 100644 index 000000000..ea0ec482c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Kauai.txt @@ -0,0 +1,4 @@ +Kauai (Kaua'i in Hawaiian) is the second oldest (after Ni'ihau) and fourth largest of the main Hawaiian Islands, in the United States. Known also as the "Garden Isle", Kaua'i lies 73 miles (117 kilometers) across the Kauai Channel, northwest of Honolulu on Oahu. It is of volcanic origin. The highest point on the island is Kawaikini. It is located above sea level. The wettest spot on Earth, with average rainfall of a year, is just east of Mount Waialeale. The high yearly rainfall has eroded deep valleys and canyons in the central mountain. The waterfalls that have been created by erosion in canyons are now popular tourist spots. +The city of Lihue, on the island's southeast side, is the seat of Kauai County. It has a population of around 6,500, and is the main city on the island. Waimea, which is located on the island's southwest side and the first capital of Kauai, was the first place visited by Englishexplorer Captain James Cook in 1778. It was also the first capital of Kauai. The city is at the head of one of the most beautiful canyons in the world, Waimea Canyon, whose gorge is 900 meters (3,000 feet) deep. +The island of Kauai was featured in Disney's 2002 animated movie "Lilo & Stitch". + is the only commercial airport on the island. There are two other general aviation airports on the island: , and . \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Killing.txt b/.github/workflows/data/simplewiki-500/Killing.txt new file mode 100644 index 000000000..207440085 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Killing.txt @@ -0,0 +1,3 @@ +Killing a living thing is when someone or something ends that life and makes the living thing die. It means causing a death. When a human being kills another human being, it is called murder or homicide, such as manslaughter. +Pesticides and herbicides are poisons for killing bad wild small animals or plants, respectively. +When a soldier kills another in war, it is called "combat". When the state kills a convict sentenced to capital punishment, it is called execution. When someone kills a powerful person it is called assassination. When a person who wants to die kills themself it is suicide, or euthanasia if killed by another. When people kill other people to eat them, it is called cannibalism. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Kilometer.txt b/.github/workflows/data/simplewiki-500/Kilometer.txt new file mode 100644 index 000000000..eef982f46 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Kilometer.txt @@ -0,0 +1,3 @@ +This is a redirect from a title with a different spelling. +Pages using this link may be updated to link directly to the target page. It is not necessary to replace these redirected links with a piped link. +For more information, follow the link to "". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Kilometre.txt b/.github/workflows/data/simplewiki-500/Kilometre.txt new file mode 100644 index 000000000..9b4d282ba --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Kilometre.txt @@ -0,0 +1,6 @@ +The kilometre is a common unit used for longer distances on Earth. The international unit for measuring distances is the metre and a kilometre is 1000 metres. It is used in most countries for measuring road and sea distances. In the UK and the USA, the statute mile is used more than kilometres for road distances and the nautical mile for sea distances. +It is often used to measure the speed of cars, planes and boats by saying how many kilometres it can travel in an hour. This is shown as km/h. +It is also spelled kilometer. This spelling is used in American English. +One kilometre is 0.6214 miles (1093 yards or 3280.84 feet). This means that one mile is 1.6093 kilometres. +One kilometre is the approximate distance a healthy adult human being can walk in ten minute +A kilometer is sometimes called a klick \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/King.txt b/.github/workflows/data/simplewiki-500/King.txt new file mode 100644 index 000000000..0b5edac8f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/King.txt @@ -0,0 +1,6 @@ +A king is usually a male monarch who rules a country or territory which is a monarchy. The person usually inherits the title and position. A king comes to power when the previous monarch dies, who is usually a family member of his, most likely a parent. Sometimes a person may become king due to the previous monarch's abdication, for example George VI (who became King of Britain after his brother decided to abdicate). +If a country has a king or a queen, that means it is a monarchy. A country which a king or queen rules is called a kingdom. +For most of history, most countries were ruled in this way, especially in Europe. However, most countries, such as France, decided to become republics. Some, such as the United Kingdom, still have a royal family. In some countries, people chose a new king from other people to decide from. +The wife of a king is called a queen. A woman who becomes a ruler because of inheritance is also called a queen. +If there is a queen without a husband she might be inducted as the king in certain monarchies in Africa and Europe. Her Royal Majesty Queen Diambi is the current female king of the Bakwa Luntu People of Central Kasaï, in the Democratic Republic of Congo. +Some modern kings today include Charles III of the United Kingdom, Felipe VI of Spain and Hudhaifah Goga. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Knowledge.txt b/.github/workflows/data/simplewiki-500/Knowledge.txt new file mode 100644 index 000000000..21bb9da9d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Knowledge.txt @@ -0,0 +1,10 @@ +Knowledge means the things which are true, as opposed to opinion. Information which is correct is knowledge. Knowledge can always be supported by evidence. If a statement is not supported by evidence, then it is not knowledge. The evidence makes it justified. +Knowledge can refer to a theoretical or practical understanding of a subject. This was the point of Ryle's distinction between "knowing that" and "knowing how". It can be implicit (as with practical skill or expertise) or explicit (as with the theoretical understanding of a subject); it can be more or less formal or systematic. In philosophy, the study of knowledge is called epistemology. The philosopher Plato defined knowledge as "justified true belief". This definition is the subject of the Gettier problems. +All knowledge is a claim to be true, but the claim can be incorrect. The only claims (propositions) which are certainly true are circular, based on how we use words or terms. We can correctly claim that there are 360 degrees in a circle, since that is part of how circles are defined. The point of Aristotle's syllogism was to show that this kind of reasoning had a machine-like form: +But actually, in the real world, not all swans are white. +The most widely accepted way to find reliable knowledge is the scientific method. Yet one thing all philosophers of science agree is that scientific knowledge is just the best we can do at any one time. All scientific knowledge is provisional, not a claim of absolute truth. +Religion and knowledge. +Knowledge in religion is different in that it depends on faith, belief and the authority of religious leaders, not on evidence of a scientific or legal kind. There are differing views on whether religious statements should be regarded as knowledge. +In many expressions of Christianity, such as Catholicism and Anglicanism, knowledge is one of the seven gifts of the Holy Spirit. +In the Garden of Eden knowledge is the factor that made humans greedy and treacherous. But in the Book of Proverbs it states: 'to be wise you must first obey the LORD' (9:10). +In Islam, knowledge has great significance. "The All-Knowing" ("al-ʿAlīm") is one of the Names of God, reflecting distinct properties of God in Islam. The Qur'an asserts that knowledge comes from God [ 2:239] and various "hadith" encourage getting knowledge. Muhammad is reported to have said "Seek knowledge from the cradle to the grave" and "Verily the men of knowledge are the inheritors of the prophets". Islamic scholars, theologians and jurists are often given the title "alim", meaning 'knowledgeable'. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/L. L. Zamenhof.txt b/.github/workflows/data/simplewiki-500/L. L. Zamenhof.txt new file mode 100644 index 000000000..01e4169d1 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/L. L. Zamenhof.txt @@ -0,0 +1,10 @@ +Ludwik Lejzer Zamenhof (; , ; 15 December [O.S. 3 December] 1859 – 14 April [O.S. 1 April] 1917), credited as L. L. Zamenhof and sometimes as the pseudonymous Dr. Esperanto, was an eye doctor, linguist (who creates a language), and scholar who created the international language Esperanto. +Biography. +Zamenhof was born in 1859 in the town of Białystok, Poland. At the time, Poland was a part of the Russian Empire. Bialystok contained three major groups: Poles, Belorussians, and Yiddish-speaking Jews. Zamenhof thought that one common language would join these groups and stop fights between them. +His first language was said to be Polish. His parents spoke Russian and Yiddish at home. His father was a German teacher, so Zamenhof learned that language from an early age and spoke the language fluently. Later he learned French, Latin, Greek, Hebrew and English. He also had an interest in Italian, Spanish and Lithuanian. +Zamenhof decided that the international language must have a simple grammar and be easier to learn than Volapük, an earlier international language. He attempted to create the international language with a grammar that was rich, and complex. The basics of Esperanto were published in 1887. He translated the Hebrew Bible into Esperanto. +His grandson, Louis-Christophe Zaleski-Zamenhof, was an engineer. +He was 14 times nominated for the Nobel Peace Prize between 1907 and 1917. +References. +<templatestyles src="Reflist/styles.css" /> + "This about a  or group of people can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Lanai.txt b/.github/workflows/data/simplewiki-500/Lanai.txt new file mode 100644 index 000000000..e240c6598 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Lanai.txt @@ -0,0 +1,7 @@ +Lanai (or Lānaʻi) is sixth largest of the Hawaiian Islands, in the United States. It is also known as the "Pineapple Island". The island is almost a circle in shape and is 18 miles wide in the longest direction. The land area is 140 sq. miles (367 km2). It is separated from the island of Moloka'i by the Kalohi Channel to the north. +History. +Lana'i was first seen by Europeans on 25 February 1779 by Captain Clerke, with "HMS Resolution" on the James Cook Pacific Ocean trip. Clerke took command of the ship after Capt. Cook was killed at Kealakekua Bay on February 14, and was leaving the islands for the North Pacific. +In 1922, Jim Dole, the president of Dole Pineapple Company, bought the island of Lana'i. He made a large part of it into the world's largest pineapple plantation. +Tourism. +Tourism on Lana'i started not long ago. That was when the growing of pineapple was slowly coming to an end in the Islands. On Lana'i, you can be with nature and feel the mood of the Hawaiian countryside. Not like nearby O'ahu, the only town (Lana'i City) is small. It has no traffic or shopping centers. Tourists come mainly to relax. +There are three hotels on Lana'i and several golf courses. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Language.txt b/.github/workflows/data/simplewiki-500/Language.txt new file mode 100644 index 000000000..7d3ff1933 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Language.txt @@ -0,0 +1,26 @@ +Language is the normal way humans communicate. Only humans use language, though other animals communicate through other means. The study of language is called linguistics. +Human language has syntax, a set of rules for connecting words together to make statements and questions. Language can also be changed, by adding new words, for example, to describe new things. Other animals may inherit a set of calls which have pre-set functions. +Language may be done by speech or by writing or by moving the hands to make signs. It follows that language is "not" just any way of communicating. Even some human communication is not language: see non-verbal communication. Humans also use language for thinking. +When people use the word "language", they can also mean: +UNESCO says that 2,500 languages are at risk of becoming extinct. +Universals of language. +All languages share certain things which separate them from all other kinds of communication. +There are many more things in common between languages. +Inheritance. +The capacity to learn and use language is inherited. Normally, all humans are born with this capability. "Which" language is learned by a child depends on which language is spoken by the child's community. The "capacity" is inherited, but the particular language is learned. +Children have a special period, from about 18 months to about four years, which is critical for learning the language. If this is seriously disrupted, then their language skills will be damaged. Older people learn differently, so they seldom learn a second language as well as they learn their native language. +Types of language. +Mathematics and computer science use created languages called formal languages (like computer programming languages), but these may or may not be 'true' languages. Mathematics itself is seen as a language by many. Some people consider musical notation to be a way of writing the musical language. +Chinese is the language with the most native speakers in the world, but Chinese is not really a language. It is a close family of dialects, some of which are as different as Romance languages are from one another. +Turkish is on of the largest Turkic languages ever spoken. +English is often called "the international language", or lingua franca. It is the main second language of the world and the international language of science, travel, technology, business, diplomacy, and entertainment. French had a similar status until the 20th century, and other languages had it at other times. +* English as a first language: 380 million.p108 +* English as an official second language: up to 300 million. +* English taught as a second language, but with no official status: anyone's guess, up to 1000 million/1 billion. +* Chinese (Mandarin): 390 million native speakers.p96 +*Hoffish(Swedish Dialect): 176 (smallest spoken language) +Some languages are made up so that a lot of people around the world can learn them, without the new languages being tied to any specific country or place. These are called constructed languages also known as Oral Sects. One of the most popular of these languages is Esperanto, which is sometimes called "La Internacia Lingvo," or "The International Language." Another of these languages is called Volapük, which was popular about a hundred years ago but is much less popular now. It has mostly been replaced by languages like Esperanto, Interlingua, and Ido. Dialects are basically other versions of a language. For example, Hoffish is a dialect of Swedish. +Part of the reason that Volapük became unpopular is that some sounds are hard to say for people who speak Spanish or English, two of the most widely spoken languages in the world. +Some languages are only spoken by closed ethnic groups such as the Romani language, which is an Indo-Aryan language spoken by only gypsies. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Las Vegas.txt b/.github/workflows/data/simplewiki-500/Las Vegas.txt new file mode 100644 index 000000000..192b705ec --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Las Vegas.txt @@ -0,0 +1,16 @@ +Las Vegas is a city in the American state of Nevada. There were 641,903 people living in the city in 2020, and more than 2,000,000 people living in the metropolitan area. It is the largest city in Nevada. Las Vegas is also the county seat of Clark County. +Las Vegas is famous for its casinos and resort hotels. It is one of the world's most popular places for tourism. +Politics. +Las Vegas leans to the left. Three of the four congressional districts in Nevada include parts of Las Vegas, and all three congresspeople representing those districts are Democrats from Las Vegas. +History. +Native Americans were the first to reside in the area, specifically the Paiute tribe. It was first called "Las Vegas" (which means "The Meadows" in the Spanish language) by the Spanish. The city is known for its dry weather, as is the rest of southern Nevada. It is surrounded by desert. +The US Army built Fort Baker there in 1864. Las Vegas has natural springs, where people used to stop for water when they were going to Los Angeles or other places in California. +In 1905, 110 acres owned by William A. Clark, on which he built a railroad to Southern California were auctioned and Las Vegas was founded as a railroad town. Las Vegas officially became a city in 1911. +The Hispanic population in Las Vegas is growing and has rapidly increased. Most Latino Las Vegas residents are of Mexican, Cuban and Salvadoran descent. Las Vegas also has a small Puerto Rican, Guatemalan, Spaniard, Peruvian, Colombian, Honduran, Nicaraguan and Argentine population. The most common European ancestries in Las Vegas are German, Irish, Italian, Polish, French, Scottish, Russian, Swedish, Norwegian, Dutch and Welsh. Filipino, Korean, Vietnamese, Japanese, Indian and Chinese are the most common Asian ancestries. +People. +There is a Mexican, Chinese, Greek, German, Korean, Japanese, Armenian, Arab, Italian, Jewish, African-American, Iranian, Croatian, Polish, Filipino, Indian, Ethiopian and Chilean community in Las Vegas. +Las Vegas has a growing Hispanic population. Many Hispanics in Las Vegas are of Mexican, Cuban and Salvadoran ancestry. +Most of the foreign-born population were born in Mexico, the Philippines and El Salvador. +References. +<templatestyles src="Reflist/styles.css" /> + "This about a  can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Latin Language.txt b/.github/workflows/data/simplewiki-500/Latin Language.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Law.txt b/.github/workflows/data/simplewiki-500/Law.txt new file mode 100644 index 000000000..1b0e78767 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Law.txt @@ -0,0 +1,30 @@ +Law is a set of rules decided by a particular place or authority meant for the purpose of keeping the peace and security of society. +Courts or police may enforce this system of rules and punish people who break the laws, such as by paying a fine, or other penalty including jail. In ancient societies, laws were written by leaders, to set out rules on how people can live, work and do business with each other. In most countries today, laws are written and voted on by groups of politicians in a legislature, such as a parliament or congress, elected (chosen) by the governed peoples. Countries today have a constitution for the overall framework of society and make further laws as needed for matters of detail. Members of society generally have enough freedom within all the "legal" things they can choose to do. An activity is "illegal" if it breaks a law or does not follow the laws. +A legal code is a written code of laws that are enforced. This may deal with things like police, courts, or punishments. A lawyer, jurist or attorney is a professional who studies and argues the rules of law. In the United States, there are two kinds of attorneys - "transactional" attorneys who write contracts and "litigators" who go to court. In the United Kingdom, these professionals are called solicitors and barristers respectively. +The "Rule of Law" is the law which says that government can only legally use its power in a way the government and the people agree on. It limits the powers a government has, as agreed in a country's constitution. The "Rule of Law" prevents dictatorship and protects the rights of the people. When leaders enforce the legal code honestly, even on themselves and their friends, this is an example of the rule of law being followed. "The rule of law", wrote the ancient Greek philosopher Aristotle in 350 BC, "is better than the rule of any individual." +Culture is usually a major source of the principles behind many laws, and people also tend to trust the ideas based on family and social habits. In many countries throughout history, religion and religious books like the Vedas, Bible or the Koran have been a major source of law. +Civil law and common law. +Civil law is the legal system used in most countries around the world today. Civil law is based on legislation that is found in constitutions or statutes passed by government. The secondary part of civil law is the legal approaches that are part of custom. In civil law governments, judges do not generally have much power, and most of the laws and legal precedent are created by Members of Parliament. +Common law is based on the decisions made by judges in past court cases. It comes from England and it became part of almost every country that once belonged to the British Empire, except Malta, Scotland, the U.S. state of Louisiana, and the Canadian province of Quebec. It is also the predominant form of law in the United States, where many laws called statutes are written by Congress, but many more legal rules exist from the decisions of the courts. Common law had its beginnings in the Middle Ages, when King John was forced by his barons to sign a document called Magna Carta. +Religious law. +Religious law is law based on religious beliefs or books. Examples include the Jewish Halakha, Islamic Sharia, and Christian Canon law. +Until the 1700s, Sharia law was the main legal system throughout the Muslim world. In some Muslim countries such as Saudi Arabia and Iran, the whole legal systems still base their law on Sharia law. Islamic law is often criticised because it has harsh penalties for crimes. A serious criticism is the judgement of the European Court that "sharia is incompatible with the fundamental principles of democracy". +The Turkish Refah Party's sharia-based "plurality of legal systems, grounded on religion" was ruled to contravene the European Convention for the Protection of Human Rights and Fundamental Freedoms. The Court decided Refah's plan would "do away with the State's role as the guarantor of individual rights and freedoms" and "infringe the principle of non-discrimination between individuals as regards their enjoyment of public freedoms, which is one of the fundamental principles of democracy". +History of law. +The history of law is closely connected to the development of human civilizations. Ancient Egyptian law developed in 3000 BC. In 1760 BC King Hammurabi, took ancient Babylonian law and organized it, and had it chiselled in stone for the public to see in the marketplace. These laws became known as the Code of Hammurabi. +The Torah from the Old Testament is an old body of law. It was written around 1280 BC. It has moral rules such as the Ten Commandments, which tell people what things are not permitted. Sometimes people try to change the law. For example, if prostitution is illegal, they try to make it legal. +Legislature. +In democracies, the people in a country usually choose people called politicians to represent them in a legislature. Examples of legislatures include the Houses of Parliament in London, the Congress in Washington, D.C., the Bundestag in Berlin, the Duma in Moscow and the Assemblée nationale in Paris. Many legislatures have two chambers or houses, a 'lower house' and an 'upper house'. To pass legislation, a majority of Members of Parliament must vote for a bill in each house. The legislature is the branch of government that writes laws, and votes on whether they will be approved. +Judiciary. +The judiciary is a group of judges who resolve people's disputes and determine whether people who are charged with crimes are guilty. In some places the judge does not find guilt or innocence but instead directs a jury, how to interpret facts from a legal perspective, but the jury determines the facts based on evidence presented to them and finds the guilt or innocence of the charged person. Most countries of common law and civil law systems have a system of appeals courts, up to a supreme authority such as the Supreme Court. The highest courts usually have the power to remove laws that are unconstitutional (which go against the constitution). +Executive (government) and Head of State. +The executive is the governing center of political authority. In most democratic countries, the executive is elected from people who are in the legislature. This group of elected people is called the cabinet. There may be a President which exists separately from the legislature. +The executive suggests new laws and deals with other countries. The executive usually controls the military, the police, and the bureaucracy. The executive selects ministers, or secretaries of state to control departments such as the health department or the department of justice. +In many jurisdictions the Head of State takes a largely ceremonial role. This is the case in many Commonwealth nations where the Head of State, usually a Governor almost exclusively acts "on the advice" of the head of the Executive (e.g. the Prime Minister, First Minister or Premier). The primary legal role of the Head of State in these jurisdictions is to act as a check or balance against the Executive, as the Head of State has the rarely exercised power to dissolve the legislature, call elections and dismiss ministers. +Other parts of the legal system. +The police enforce the criminal laws by arresting people suspected of breaking the law. Bureaucrats are the government workers and government organizations that do work for the government. Bureaucrats work within a system of rules, and they make their decisions in writing. +Lawyers are people who have learned about laws. Lawyers give people advice about their legal rights and duties and represent people in court. To become a lawyer, a person has to complete a two- or three-year university program at a law school and pass an entrance examination. Lawyers work in law firms, for the government, for companies, or by themselves. +Civil society is the people and groups that are not part of government that try to protect people against human rights abuses and try to protect freedom of speech and other individual rights. Organizations that are part of civil society include political parties, debating clubs, trade unions, human rights organizations, newspapers and charities. +"Corporations are among the organizations that use the legal system to further their goals. Like the others, they use means such as campaign donations and advertising to persuade people that they are right. Corporations also engage in commerce and make new things such as automobiles, vaporisers/e-cigarettes, and Unmanned aerial vehicles (i.e. "drones") that the old laws are not well equipped to deal with. Corporations also makes use of a set of rules and regulations to ensure their employees remain loyal to them (usually presented in a legal contract), and that any disobedience towards these rules are considered uncivilized and therefore given grounds for immediate dismissal. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Leap year.txt b/.github/workflows/data/simplewiki-500/Leap year.txt new file mode 100644 index 000000000..8d563edca --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Leap year.txt @@ -0,0 +1,8 @@ +A leap year is a calendar year in which an extra day is added to the Gregorian calendar, which is used by most of the world. A common year has 365 days, but a leap year has 366 days. The extra day, February 29, is added to the month of February. In a common year, February has 28 days, but in a leap year it has 29 days. The extra day, called a leap day, occurs on the same day of the week as the first day of the month, February 1. +The term "leap year" comes from the fact that while a specific date of the year advances one day of the week in a common year, in a leap year from March 1 until February 28 of the following year the date will advance 2 days due to the extra day in February, thereby "leaping" over one of the days of the week. For example, Christmas Day (December 25) fell on a Wednesday in 2024, falls on a Thursday in 2025, a Friday in 2026, and a Saturday in 2027, but then will leap over Sunday to fall on a Monday in 2028. +Because of this extra day, a leap year of 366 days has 52 weeks and two days. Therefore, a leap year does not begin and end on the same day of the week, as a common year does (for example, in 2024, January 1 fell on a Monday, but December 31 fell on a Tuesday). Thus, the year following a leap year starts two days of the week later instead of one. Additionally, with the exception of leap years after century years not divisible by 400, each leap year starts two days of the week earlier than the previous one. For example, since 2024 began on a Monday, the next leap year, 2028, will begin on a Saturday. +Leap years are evenly divisible by 4. The last leap year was 2024, and the next will be 2028. However, any year that is evenly divided by 100 would not be a leap year unless it is evenly divided by 400. This is why 1600, 2000, and 2400 are leap years, while 1700, 1800, 1900, 2100, 2200, and 2300 are common years, even though they are all divisible by 4. +We have leap years because instead of 365 days, the Earth really takes a few minutes less than 365–1/4 days (365.24219) to go completely around the Sun. Without leap years, the seasons would start one day earlier on the calendar every four years. After 360 years, spring in the Northern Hemisphere and autumn in the Southern Hemisphere would begin on December 21 (which is when winter in the Northern Hemisphere and summer in the Southern Hemisphere presently begins). +A number of countries use a lunar calendar (based on the Moon, instead of the Sun, like our solar calendar is). They have leap years when they add an extra lunar month. Different calendars add the extra month in different ways. So a year which has 366 days instead of 365 days where the month of February has 29 days is called a leap year. +In a leap year, the corresponding months are January, April, and July, February and August, March and November, and September and December. No month corresponds to May, June, or October. +In the Gregorian calendar, 97 out of every 400 years are leap years. In the outdated Julian calendar, 100 years out of every 400 are leap years. All other years are common years. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Leather.txt b/.github/workflows/data/simplewiki-500/Leather.txt new file mode 100644 index 000000000..bf08b37e2 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Leather.txt @@ -0,0 +1,13 @@ +Leather is the skin of an animal made into a durable material by tanning. The skins of cows, pigs, and goats are often used to make leather. Skins of snakes, alligators or crocodiles, and ostriches are sometimes used to make fancier leather. Shoes, bags, clothes, and balls are often made of leather. Sometimes people make leather out of whales, ducks, giraffes, and African elephants. All of these ways of making leather are very simple but some are rare. +How leather is made. +The way leather is made is divided into three processes. They are preparing the leather, tanning it, and crusting. +In preparing the leather, many things are done to make it ready for tanning. They include soaking it, removing the hair, liming, deliming, bating, bleaching, and pickling. +Tanning is a process that makes the proteins, especially collagen, in the raw hide stable. It increases the thermal and chemical stability of the animal skins. The difference between fresh and tanned animal skin is that fresh animal skin dries to make it hard and stiff. When water is added to it, it becomes bad. But, animal skin that is tanned dries to make it flexible. It does not become bad when water is added to it. +Crusting is a process that makes the leather thin and lubricates it. Chemicals added when crusting must be set in place. Crusting ends with drying and making the leather soft. It may include splitting, shaving, dyeing, whitening or other methods. +From other animals. +Today, most leather is made from the skin of cattle, which makes up about 67% of all the leather made. Other animals that are used include sheep (about 12%), pigs (about 11%), and goats (about 10%). +Horse skin is used to make strong leather. Lamb and deerskin are used for soft leather. It is used in work gloves and indoor shoes. +Kangaroo leather is used to make things that must be strong and flexible. It is used in bullwhips. +In Thailand, stingray leather is used in wallets and belts. Stingray leather is tough and durable. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Legislature.txt b/.github/workflows/data/simplewiki-500/Legislature.txt new file mode 100644 index 000000000..59e449a95 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Legislature.txt @@ -0,0 +1,4 @@ +Legislature is a word that comes from the Latin language, meaning "those who write the laws." A legislature is therefore a group of people who vote for new laws, for example in a state or country. +Each person in the legislature is usually either elected or appointed. The constitution of that state or country usually tells how a legislature is supposed to work. +In many countries, the legislature is called a Parliament, Congress, or National Assembly. Sometimes there are two groups of members in the legislature. This is called a "bicameral" legislature. A unicameral legislature has only one group of members. +A country, district, city, or other small area may also have something like a legislature. These are often called councils, and they make smaller laws for their areas. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Leisure.txt b/.github/workflows/data/simplewiki-500/Leisure.txt new file mode 100644 index 000000000..9b278e2f0 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Leisure.txt @@ -0,0 +1,4 @@ +Leisure (or free time) is when a person can choose what to do. During a person's leisure time, they do not have an obligation to be at school or work at a job. During leisure time, people can do fun activities, family activities, or other non-work activities, such as hobbies. +Common forms of recreation or leisure are: +A vacation or holiday is one example of a setting that is specifically for leisure. During vacation, some people travel to a different region or country and stay at a hotel so that they can do things they could not do near home. Other people prefer to spend their vacation time at home in their own community. +In rich industrialized countries such as the US and Canada as well as in most European countries, workers are allowed to stay home on the weekend (usually Saturday and Sunday) and use it as leisure time. People in poorer developing countries usually have less leisure time, as they have to work longer hours and more days per year. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Library.txt b/.github/workflows/data/simplewiki-500/Library.txt new file mode 100644 index 000000000..492d064b2 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Library.txt @@ -0,0 +1,25 @@ +A library is a place where many books are kept. Most libraries are public and let people take the books to use in their home. Most libraries let people borrow books for several weeks. Some belong to institutions, for example, companies, churches, schools, and universities. The people who work in libraries are librarians. Librarians are people who take care of the library. +Other libraries keep famous or rare books. There are a few "Copyright libraries" which have a copy of every book which has been written in that country. Some libraries also have other things that people might like, such as magazines, music on CDs, or computers where people can use the Internet. In school they offer software to learn the alphabet and other details.With the spread of literacy, libraries have become essential tools for learning. Libraries are very important for the progress and development of a society. Libraries are collections of books and other informational materials, however a library can also be a collection of items or media. People come to libraries for reading, study or reference. Libraries contain a variety of materials. They contain printed materials, films, sound and video recordings, maps, photographs, computer software, online databases, and other media. +A library is not a bookstore (a store that sells books). +Importance of a Library. +The prime purpose of a library is to provide access to knowledge and information. To fulfil this mission, libraries preserve a valuable record of culture. Then they pass down this to the coming generations. Therefore, they are an essential link between the past, present and future. +People use libraries to work. They also use library resources to learn about personal interests. Sometimes, they get recreational media such as films and music. Students use libraries to study. +Libraries help the students to develop good reading and study habits. Public officials use libraries for research and public issues. The libraries provide information and services that are essential for learning and progress. +Public libraries. +Many places have a public library, where anybody can join if they live in the area. With a library card, people can borrow books and take them home for several weeks. It does not cost money to get a library card at most public libraries. +Books are kept on shelves in a special order so they are easy to find. Public libraries have lot of books on various topics including story books and many others. Many public libraries have books and CDs about learning English. Stories are kept in alphabetical order by the last name of the person who wrote them, the writer. Books about other things are often given a special number, that refers to what they are about. They are then put on the shelf in number order. One number system used by many libraries is the Dewey decimal system. +Mobile libraries. +In rural areas books may be taken in a bookmobile, or mobile library to remote places. +Academic libraries. +Many colleges and universities have large academic libraries. These libraries are for the use of college students, professors, and researchers. Academic libraries are used mainly for doing research like studying the solar system or how earthquakes happen. These libraries do not have the same types of books you would find in a public library. They usually do not have fiction books or books for children (unless they are being studied). Academic libraries can have many books, sometimes more than a million. +Special libraries. +Special libraries are those libraries that are not public libraries or academic libraries. They are usually small. Many times a special library holds books on a particular subject or even a special kind of book. Some special libraries keep just old books or books by Shakespeare. A special library can be owned by a business for use only by that business. For example, Disney World in Orlando has its own library that is not open to the public but for the use of the people who work for the company. +Librarians. +A librarian is a person who works in a library. Librarians help people find books and information. They can teach people how to find books and use the library. A professional librarian is a person who went to university to study library science. They can earn the degree of Master in Library Science. +History. +The earliest known library was discovered in Iraq and belonged to the ancient civilization in Sumer. They didn't use paper books but instead wrote everything on clay tablets using a style of writing called cuneiform. These tablets are over 5,000 years old. The Library of Alexandria, in Egypt, was the largest and most important library of the ancient world. It was destroyed when the Romans conquered Egypt in 30 BC. Rome’s first public library was established by Asinius Pollio who was a lieutenant of Julius Caesar. Eventually Rome would build 28 public libraries within the city. When the Roman Empire fell in 330 AD, many books went east to the city of Byzantium where a large library was built. Other libraries were built in monasteries and public homes. +Libraries began to appear in many Islamic cities, where science and philosophy survived after the fall of the Roman Empire. Christian monks and Islamic libraries exchanged books to copy. +Recent times. +COVID-19 pandemic has further changed how libraries operate in year 2020 and many of them around the world were faced with really hard choices as to which services to offer and which services to shut down for a limited time. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/License.txt b/.github/workflows/data/simplewiki-500/License.txt new file mode 100644 index 000000000..f2d9c1908 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/License.txt @@ -0,0 +1,19 @@ +A license (in American English) or licence (in British English) allows someone to do something that they otherwise are not allowed to do. A person usually has to pay some money, and maybe pass a test to get a license. A license is usually written but it does not have to be. Most kinds of licenses can only be used by the person they were given to. Licenses may be temporary or permanent. Some licenses can not be taken away once they are given. A person with a license is called a licensee. +In many countries, if a person tries to do something without the correct license to do it, they might have to pay a fine or go to prison. +Examples of licenses. +There are many different types of licenses. +Driver's license. +The laws of most countries say that people are only allowed to drive cars if they have a driver's license. If a person does not have a license, they may have to pay a fine if they are caught by the police. In many countries, a person must take a test and pay money to get a license. The test would check that they know the road rules, and have the skill to drive a car. +Hunting license. +Other licenses give permission to shoot animals (often called a hunting license). The hunting license usually says when a person may hunt. A hunter may have to pass a test to show that they understand the rules about hunting. +Television licence. +In the United Kingdom and the Republic of Ireland, if someone has a television set, they must buy a "television licence" every year. +Copyright licenses. +Copyright is a law that gives the owner of a creative work the right to decide what other people can do with it. A person or a company can give a license to a copyright that they own. So in order for another person to use an owner's copyright they need permission from the owner. For example, when someone buys computer software, they also need a license from the creator of the software (a copyright owner) allowing the buyer to use the software. +Difference between license and licence. +"License" is a verb and "licence" is a noun. "Licensing sessions" were the meetings of magistrates which decided about giving licences to sell alcohol. +In American English there is no difference in spelling between the verb "to license" meaning to give permission, and the noun "a license" meaning the permission to do something. +Distinction between a licence and a qualification. +A degree in medicine is a qualification showing a person has successfully studied medicine. It is awarded for life. A licence to practice medicine is a legal permission to do so within the territory covered by the licensing authority. The licence may be taken away ('revoked') in certain situations. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Life science.txt b/.github/workflows/data/simplewiki-500/Life science.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Life.txt b/.github/workflows/data/simplewiki-500/Life.txt new file mode 100644 index 000000000..fe29b35c3 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Life.txt @@ -0,0 +1,47 @@ +Life is a concept in biology. It is about what separates a living thing from dead matter. +Most life on Earth is powered by solar energy: the only known exceptions are the chemo-synthetic bacteria living around the hydrothermal vents on the ocean floor. All life on Earth is based on the chemistry of carbon compounds, involving long-chain molecules such as proteins and nucleic acid. With water, which all life needs, the long molecules are wrapped inside membranes as cells. This may or may not be true of all possible forms of life in the Universe: it is true of all life on Earth today. +Summary. +Living things, or organisms, can be explained as open systems. They are always changing, because they exchange materials and information with their environment. They undergo metabolism, maintain homeostasis, possess a capacity to grow, respond to stimuli and reproduce. +Through natural selection, they adapt to their environment in successive generations. More complex living organisms can communicate by various means. Many life forms can be found on Earth. The properties common to these organisms—plants, animals, fungi, protists, archaea, and bacteria—are a carbon and water-based cellular form with complex organization and heritable genetic information. +The systems that make up life have many levels of organization. From smallest to biggest, they are: molecule, cell, tissue (group of cells with a common purpose), organ (part of the body with a purpose), organ system (group of organs that work together), organism, population (group of organisms of the same species), community (all of the organisms that interact in an area), ecosystem (all of the organisms in an area and the non-living surroundings), and biosphere (all parts of the Earth that have life). +At present, the Earth is the only planet humans have detailed information about. The question of whether life exists elsewhere in the Universe is open. There have been a number of claims of life elsewhere in the Universe. None of these have been confirmed so far. The best evidence of life outside of Earth is are nucleic acids that have been found in certain types of meteorites. +Definitions. +One explanation of life is called the cell theory. The cell theory has three basic points: all living things are made up of cells. The cell is the smallest living thing that can do all the things needed for life. All cells must come from pre-existing cells. +Something is often said to be alive if it: +However, not all living things fit every point on this list. +They do, however, fit the biochemical definitions: they are made of the same kind of chemicals. +The thermodynamic definition of life is any system which can keep its entropy levels below maximum (usually through adaptation and mutations). +A modern approach. +A modern definition was given by Humberto Maturana and Francisco Varela in 1980, to which they gave the name "autopoiesis": +Roth commented that "In short, organisms are self-reproducing and self-maintaining, or 'autopoietic', systems". This approach makes use of molecular biology ideas and systems science ideas. +What life needs. +Chemistry. +Life on Earth is made from organic compounds—molecules that contain carbon. Four types of long-chain molecules (macromolecules) are important: carbohydrates, lipids, proteins, and nucleic acids. +Almost all living things need the chemical elements carbon, hydrogen, oxygen, nitrogen, sulfur, and phosphorus, to build these macromolecules. Living things also need small amounts of other elements, called "trace elements". Water is a very important part of all living things. For example, humans are about two-thirds water. Water is a solvent that lets molecules mix and react with other molecules. +Energy sources. +All living things need energy to survive, move, grow, and reproduce. Some can get energy from the environment without help from other living things: these are called producers, or autotrophs. Plants, algae, and some bacteria, a group of producers called photoautotrophs, use the sun's light for energy. When producers use light to make and store organic compounds, this is called photosynthesis. Some other producers, called chemoautotrophs, get energy from chemicals that come out of the ocean floor in hydrothermal vents. Other living things get their energy from organic compounds: these are called consumers, or heterotrophs. Animals, fungi, most bacteria, and most protists are consumers. Consumers can eat other living things or dead material. +Both producers and consumers need to break down organic compounds to free energy. The best way to do this is aerobic respiration, which frees the most energy, but living things can only do aerobic respiration if they have oxygen (O2). They can also break down these compounds without oxygen, using anaerobic respiration or fermentation. +Cells. +All living things have cells. Every cell has a cell membrane on the outside, and a jelly-like material that fills the inside, called cytoplasm. The membrane is important because it separates the chemicals inside and outside. Some molecules can pass through the membrane, but others cannot. Living cells have genes, made of DNA. Genes say to the cell what to do, like a language. One DNA molecule, with many genes, is called a chromosome. Cells can copy themselves to make two new cells. +There are two main kinds of cells: prokaryotic and eukaryotic. Prokaryotic cells have only a few parts. Their DNA is the shape of a circle, inside the cytoplasm, and they have no membranes inside the cell. Eukaryotic cells are more complex, and they have a cell nucleus. The DNA is inside the nucleus, and a membrane is around the nucleus. Eukaryotic cells also have other parts, called organelles. Some of these other organelles also have membranes. +Types of life. +Taxonomy is how lifeforms are put into groups. The smaller groups are more closely related, but the larger classes are more distantly related. The levels, or ranks, of taxonomy are domain, kingdom, phylum, class, order, family, genus, and species. There are many ideas for the meaning of species. One idea, called the biological species concept, is as follows. A species is a group of living things that can mate with each other, and whose children can make their own children. +Taxonomy aims to group together living things with a common ancestor. This can now be done by comparing their DNA. Originally, it was done by comparing their anatomy. +The three domains of life are Bacteria, Archaea, and Eukarya. Bacteria and archaea are prokaryotic and have only one cell. Bacteria range in size from 0.15 cubic micrometres ("Mycoplasma") to 200,000,000 cubic micrometres ("Thiomargarita namibiensis"). Bacteria have shapes which are useful in classification, such as round, long and thin, and spiral. Some bacteria cause diseases. Bacteria in our intestines are part of our gut flora. They break down some of our food. Both bacteria and archaea may live where larger forms of life cannot. Bacteria have a molecule called peptidoglycan in their cell wall, but archaea do not. Archaea have a molecule called isoprene in their cell membrane, but bacteria do not. +Eukarya are living things with eukaryotic cells, and they can have one cell or many cells. Most eukaryotes use sexual reproduction to make new copies of themselves. In sexual reproduction, two sex cells, one from each parent, join to make a new living thing. +Plants are eukaryotes that use the Sun's light for energy. They include algae, which live in water, and land plants. All land plants have two forms during their life cycle, called alternation of generations. One form is diploid, where the cells have two copies of their chromosomes, and the other form is haploid, where the cells have one copy of their chromosomes. In land plants, both diploid and haploid forms have many cells. Two kinds of land plants are vascular plants and bryophytes. Vascular plants have long tissues that stretch from end to end of the plant. These tissues carry water and food. Most plants have roots and leaves. +Animals are eukaryotes with many cells, which have no rigid cell walls. All animals are consumers: they survive by eating other organic material. Almost all animals have neurons, a signalling system. They usually have muscles, which make the body move. Many animals have a head and legs. Most animals are either male or female. They need a mate of the opposite sex to make offspring. Sex cells from the male and female can meet inside or outside the body. +Fungi are eukaryotes which may have one cell, like yeasts, or many cells, like mushrooms. They are saprophytes. Fungi break down living or dead material, so they are decomposers. Only fungi, and a few bacteria, can break down lignin and cellulose, two parts of wood. Some fungi are mycorrhiza. They live under ground and give nutrients to plants, like nitrogen and phosphorus. Eukaryotes that are not plants, animals, or fungi are called protists. Most protists live in water. +Evolution. +Over thousands or millions of years, living things can change, through the process of evolution. One kind of evolution is when a species changes over time, such as giraffes growing longer necks. Most of the time, the species becomes better suited to its environment, a process called adaptation. Evolution can also cause one group of living things to split into two groups. This is called speciation if it makes a new species. An example is mockingbirds on the Galapagos Islands—one species of mockingbird lives on each island, but all the species split from a shared ancestor species. Groups that are bigger than species can also split from a shared ancestor—for example, reptiles and mammals. A group of living things and their shared ancestor is called a clade. +Living things can evolve to be quite different from their ancestors. As a result, parts of the body can also change. The same bone structure became the hands of humans, the hooves of horses, and the wings of birds. Different body parts that evolved from the same thing are called homologous. +Extinction is when all members of a species die. About 99.9% of all species that have ever lived are extinct. Extinction can happen at any time, but it is more common in certain time periods called extinction events. The most recent was 65 million years ago, when the dinosaurs went extinct. +Origin of life. +By comparing fossils and DNA, we know that all life on Earth today had a shared ancestor, called the last universal common ancestor (LUCA). Other living things may have been alive at the same time as the LUCA, but they died out. A study from 2018 suggests that the LUCA is about 4.5 billion (4,500,000,000) years old, nearly as old as the Earth. The oldest fossil evidence of life is about 3.5 billion years old. +How did non-living material become alive? This is a difficult question. The first step must have been the creation of organic compounds. In 1953, the Miller–Urey experiment made inorganic compounds into organic compounds, such as amino acids, using heat and energy. +Life needs a source of energy for chemical reactions. On the early Earth, the atmosphere did not have oxygen. Oxidation using the Krebs cycle, which is common today, was not possible. The Krebs cycle may have acted backwards, doing reduction instead of oxidation, and the cycle may have made larger molecules. To make life, molecules needed to make copies of themselves. DNA and RNA make copies of themselves, but only if there is a catalyst—a compound which speeds up the chemical reaction. One guess is that RNA itself served as a catalyst. At some time, the molecules were surrounded by membranes, which made cells. +Notes. +<templatestyles src="Reflist/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Like.txt b/.github/workflows/data/simplewiki-500/Like.txt new file mode 100644 index 000000000..dd53b05fa --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Like.txt @@ -0,0 +1,19 @@ +Like can mean some different things: +1. We can use to like to say that we find a thing is good: +"I like my house." = I think my house is good. +"I like Jenny" = I think Jenny is an OK person. +2. We can use like for "the same as" or "nearly the same as": +"This cheese sandwich feels like rubber" = the sandwich is difficult to eat, nearly the same as rubber. +"Jenny is like her mother" = Jenny has brown hair, and her mother also has brown hair (for example). +"Your pen is like my pen" = Your pen and my pen are the same sort. +3. We can also use like for "the same way as": +"She runs like the wind" - she and the wind are both fast. +"She talks like a child" - she and children speak slowly or with a high voice. +4. In a question, we can use like to ask people to talk about a thing, or to say if they find it good or not: +"What's your house like?" (Answer: "It has two bedrooms and a big kitchen...") +"What was the film like?" (Answer: "It was very good!") +5. We can also use like as "for example": +"I often go to other countries, like France or Germany" = I go to other countries, for example France and Germany. +6. In British and American English young people, when talking, have recently started using like as an extra word in the middle of sentences. Sometimes they use it to report what someone said, especially when mimicking the way they said it. This should never be used in writing: +"The teacher was like: "Don't do that!"" +As works in the same way as example 2 - comparing two things using either the word "like" or the word "as" is called making a simile ("As big as an elephant"). It may be better to use the word "as" for this to stop confusion with example 1. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Lime.txt b/.github/workflows/data/simplewiki-500/Lime.txt new file mode 100644 index 000000000..5adfb8aee --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Lime.txt @@ -0,0 +1,7 @@ + +Lime is a green fruit, and the tree fruit itself. They are citrus fruits similar to lemons. Citrus fruits like limes are rich in vitamin C. Sailors from Britain were given lemon or lime juice to stop them falling ill with scurvy. This is how they got the nickname "Limey". There are several citrus trees whose fruits are called limes. They include the key lime "Citrus aurantiifolia", the Persian lime, the kaffir lime, and the desert lime "Citrus glauca". +Limes are small, round and bright green. If they stay on the tree for a long time they turn yellow. Then they look like small round lemons. +Lime juice is used in cooking and in drinks. Lime oils are often used in perfumes, used for cleaning, and used for aromatherapy. +Lime tastes acidic and bitter. Lime juice is also made from limes. +Other websites. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Linear algebra.txt b/.github/workflows/data/simplewiki-500/Linear algebra.txt new file mode 100644 index 000000000..ea731e77d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Linear algebra.txt @@ -0,0 +1,13 @@ +Linear algebra is a branch of mathematics. It came from mathematicians trying to solve systems of linear equations. Vectors and matrices are used to solve these systems. The main objects of study currently are vector spaces and linear mappings between vector spaces. Linear algebra is useful in other branches of mathematics (e.g. differential equations and analytic geometry). It can also be applied to the real world in areas such as engineering, physics and economics. +Linear algebra describes ways to solve and manipulate (rearrange) systems of linear equations. +For example, consider the following equations: +formula_1 +These two equations form a system of linear equations. +It is linear because none of the variables are raised to a power. +The graph of a linear equation in two variables is a straight line. +The solution to this system is: +formula_2 +This is because it makes all of the original equations valid, that is, the value on the left side of the equals sign is exactly the same as the value on the right side for both equations. +Linear algebra uses a system of notation for describing system behavior, called a matrix. For the previous example, the coefficients of the equations can be stored in a coefficient matrix. +Further reading. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Link.txt b/.github/workflows/data/simplewiki-500/Link.txt new file mode 100644 index 000000000..e73162912 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Link.txt @@ -0,0 +1,18 @@ +A link, also hyperlink in computing, is a part of a chain. A chain is made of many pieces of metal; each piece is a link. +Today, people also use the word link in a new way. The World Wide Web on the Internet is made of many different Web pages. The computer software that people use to make these pages (HTML) lets us go to other pages in a very fast and easy way. +The person who makes the web page can tell the computer to show a word or a picture on the Web page as a link. This means that when we click on the link with our computer mouse, the computer will show us the new page we want to see. Most links are blue, but they can be any color. +The color of the link will change to dark blue when clicked as the web browser recognises it in the browser's cache. Unless the cache is cleared, the link will always stay dark blue. +Ways of making links. +There are many ways in making a link on a web page. The process is different for different internet software. +Plain HTML. +In .htm and .html files, a link can be created using this code: +Text of link +WikiSyntax. +WikiSyntax like MediaWiki uses a simpler way of making links. To create a link to another page of the same website: +Link text or just Page name. +To link to an external website: +Link text, , or just http://www.example.com. +BB code. +BB code is used in forum software. To create a link: +[url]http://www.example.com[/url], or [url=http://www.example.com]Link text[/url] + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/List of common elements.txt b/.github/workflows/data/simplewiki-500/List of common elements.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/List of countries.txt b/.github/workflows/data/simplewiki-500/List of countries.txt new file mode 100644 index 000000000..844692021 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/List of countries.txt @@ -0,0 +1,61 @@ +This is a list of sovereign states. Disputed countries are listed at the bottom. +A. + Afghanistan –  Albania –  Algeria –  Andorra –  Angola –  Antigua and Barbuda –  Argentina –  Armenia –  Australia –  Austria –  Azerbaijan +B. + Bahamas –  Bahrain –  Bangladesh –  Barbados –  Belarus –  Belgium –  Belize –  Benin –  Bhutan –  Bolivia –  Bosnia and Herzegovina –  Botswana –  Brazil –  Brunei –  Bulgaria –  Burkina Faso –  Burundi +C. + Cabo Verde –  Cambodia –  Cameroon –  Canada –  Central African Republic –  Chad –  Chile –  China –  Colombia –  Comoros –  Congo, Democratic Republic of the –  Congo, Republic of the –  Costa Rica –  Croatia –  Cuba –  Cyprus –  Czech Republic +D. + Denmark –  Djibouti –  Dominica –  Dominican Republic +E. + East Timor –  Ecuador –  Egypt –  El Salvador –  Equatorial Guinea –  Eritrea –  Estonia –  Eswatini –  Ethiopia +F. + Fiji –  Finland –  France +G. + Gabon –  Gambia –  Georgia – –  Ghana –  Greece –  Grenada –  Guatemala –  Guinea –  Guinea-Bissau –  Guyana +H. + Haiti –  Honduras –  Hungary +I. + Iceland –  India –  Indonesia –  Iran –  Iraq – –  Israel –  Italy –  Ivory Coast +J. + Jamaica –  Japan –  Jordan +K. + Kazakhstan –  Kenya –  Kiribati –  Korea, North –  Korea, South –  Kuwait –  Kyrgyzstan +L. + Laos –  Latvia –  Lebanon –  Lesotho –  Liberia –  Libya –  Liechtenstein –  Lithuania –  Luxembourg +M. + Madagascar –  Malawi –  Malaysia –  Maldives –  Mali –  Malta –  Marshall Islands –  Mauritania –  Mauritius –  Mexico –  Micronesia –  Moldova –  Monaco –  Mongolia –  Montenegro –  Morocco –  Mozambique –  Myanmar +N. + Namibia –  Nauru –    Nepal –  Netherlands –  New Zealand –  Nicaragua –  Niger –  Nigeria –  North Macedonia – +O. + Oman +P. + Pakistan –  Palau –  Palestine –  Panama –  Papua New Guinea –  Paraguay –  Peru –  Philippines –  Poland –  Portugal +Q. + Qatar +R. + Romania –  Russia –  Rwanda +S. + Saint Kitts and Nevis –  Saint Lucia –  Saint Vincent and the Grenadines –  Samoa –  San Marino –  São Tomé and Príncipe –  Saudi Arabia –  Senegal –  Serbia –  Seychelles –  Sierra Leone –  Singapore –  Slovakia –  Slovenia –  Solomon Islands –  Somalia –  South Africa –  South Sudan –  Spain –  Sri Lanka –  Sudan –  Suriname –  Sweden –   Switzerland –  Syria +T. + Tajikistan –  Tanzania –  Thailand –  Togo –  Tonga –  Trinidad and Tobago –  Tunisia –  Turkey –  Turkmenistan –  Tuvalu +U. + Uganda –  Ukraine –  United Arab Emirates –  United Kingdom – –  Uruguay –  Uzbekistan +V. + Vanuatu –   Vatican City –  Venezuela –  Vietnam +Y. + Yemen +Z. + Zambia –  Zimbabwe +Disputed countries. + Abkhazia –  Kosovo –  Liberland –  Northern Cyprus –  Sahrawi Arab Democratic Republic –  Sealand –  Somaliland –  South Ossetia –  Taiwan –  Transnistria +Places sometimes considered countries, but not actual countries according to international law. +Dependent territories. + Akrotiri and Dhekelia –  American Samoa –  Anguilla –  Bailiwick of Guernsey –  Bermuda –  British Indian Ocean Territory –  British Virgin Islands –  Cayman Islands –  Cook Islands –  Falkland Islands –  Gibraltar –  Guam –  Isle of Man –  Jersey –  Montserrat –  Niue –  Northern Mariana Islands –  Pitcairn Islands –  Puerto Rico – Rotuma –  Saint Helena, Ascension and Tristan da Cunha  South Georgia and the South Sandwich Islands –  Tokelau –  Turks and Caicos Islands –  United States Minor Outlying Islands –  United States Virgin Islands +Administrative divisions. + Adjara – Grande Comore -  Anjouan - Moheli –  Azad Kashmir - Gilgit-Baltistan –  Bougainville - Bangasmoro –  England –  Gagauzia – Karakalpakistan - –  Kurdistan - Jeju-do - Nakhchivan-  Northern Ireland –  Scotland –  Wales –  West Papua +Integral parts of sovereign states. + Åland Islands –  Aruba –  Azores –  Bouvet Island –  Canary Islands –  Caribbean Netherlands –  Ceuta –  Christmas Island – City of London –  Clipperton Island –  Cocos (Keeling) Islands –  Curaçao –  Easter Island – + Faroe Islands –  French Guiana –  French Polynesia –  French Southern and Antarctic Lands –  Galapagos Islands –  Greenland –  Guadeloupe –  Heard Island and McDonald Islands –  Hong Kong –  Macau –  Madeira –  Martinique –  Mayotte –  Melilla –  New Caledonia –  Norfolk Island -  Republic of Crimea –  Réunion –  Saba –  Saint Barthelemy –  Saint Martin –  Saint Pierre and Miquelon –  Sint Maarten –  Svalbard and Jan Mayen –  Wallis and Futuna +Other entities. + Antarctica –  Sovereign Military Order of Malta \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/List of fruits.txt b/.github/workflows/data/simplewiki-500/List of fruits.txt new file mode 100644 index 000000000..31d31f0ba --- /dev/null +++ b/.github/workflows/data/simplewiki-500/List of fruits.txt @@ -0,0 +1,4 @@ +Fruits on this list are defined as the word is used in everyday speech. It does not include vegetables, whatever their origin. +The following items are fruits according to the scientific definition, but are sometimes considered to be vegetables: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/List of mathematics topics.txt b/.github/workflows/data/simplewiki-500/List of mathematics topics.txt new file mode 100644 index 000000000..ae4b0af7f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/List of mathematics topics.txt @@ -0,0 +1 @@ +There are a number of topics in mathematics. Some of them include: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Litre.txt b/.github/workflows/data/simplewiki-500/Litre.txt new file mode 100644 index 000000000..9c6cea4e5 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Litre.txt @@ -0,0 +1,17 @@ +A litre (international spelling) or liter (American spelling) is one of the metric units of volume. It is not a basic SI unit, but it is a supplementary unit. +One litre is the volume of 1000 cubic centimetres, that is a cube of 10 × 10 × 10 centimetres (1000 cm3). One litre of water at has the mass of exactly one kilogram. This results from the definition given in 1795, where the gram was defined as the weight of one cubic centimetre of melting ice. +Liters are usually utilized to measure the volume of liquids, this is because the density of liquids can vary a lot. However it can be applied to solids as well, for example 1 liter of Iron is around 7.7 kg. The symbol for litre is l or L. The script letter ℓ is also sometimes used. +For smaller volumes, the decilitre is used: 10 decilitres = one litre. +For smaller volumes, the centilitre is used: 100 centilitres = one litre. +For smaller volumes, the millilitre is used: 1000 millilitres = one litre. +The capital letter "L" is preferred by some people as the small "l" can look like the number one "1". +History. +The metric system was first introduced in France in 1791. That system did not have its own unit of capacity or volume because volume can be measured in cubic metres. In 1793 work to make the metric system compulsory in France was started by the Temporary Commission of Republican Weights and Measures. Due to public demand, the commission said that the cubic metre was too big for everyday use. They said that a new unit based on the old cadil should be used instead. One cadil was to be 0.001 cubic metres. This was equivalent to a cube with sides 10 cm. The "cadil" was also known as the "pinte" or the "litron". The "pinte" had been an old French unit of measure of capacity. In 1795 the definition was revised. The "cadil" was given the name "litre". +In 1795 the kilogram was defined to be exactly one litre of water at 4 °C. In 1799 the kilogram was redefined. The new definition said that the kilogram was the mass of the "kilogram des archives". In 1901 scientists measured the volume of one litre of water at 4 °C very carefully. They found that it occupied about  dm3. The BIPM redefined the litre as being "exactly" the volume of one kilogram of water at 4 °C. +In 1960 the SI was introduced. The BIPM changed the definition of the litre back to "one dm3". The litre is not part of SI. The BIPM defined the litre as a "Non-SI unit accepted for use with the SI". This was because it is used in many countries. The BIPM said that the litre should not be used for very accurate work. +According to SI rules, the symbol for the litre should be "l". This is because the litre was not named after somebody whose name was "Litre". However the symbol "l" and the number "1" are easily confused. In 1979 the BIPM made an exception for the symbol for the litre. They said that people could use either "L" or "l" as its symbol. +In Europe, milk is sold in one litre cartons. One litre bottle is also a popular package for soft drinks. Most alcoholic drinks are sold as 1/3 litre (0.33 l), ​1⁄2 litre (0.5 l) 3/4 litre (0.75 l) or 1 litre bottles. +Notes. +<templatestyles src="Reflist/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Live.txt b/.github/workflows/data/simplewiki-500/Live.txt new file mode 100644 index 000000000..535572242 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Live.txt @@ -0,0 +1,4 @@ +Live can be a verb. It rhymes with "give". "To live" means "to be alive" (and it is not dead). If you live, then you have life. +It can be used in a general way: +Live can be an adjective. It rhymes with "five". +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/London.txt b/.github/workflows/data/simplewiki-500/London.txt new file mode 100644 index 000000000..ca138a083 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/London.txt @@ -0,0 +1,63 @@ +London is the capital and largest city of both England and the United Kingdom. +It is also the city with the highest population in the UK. The population is just under 9 million. The city is the largest in western Europe by population and area. +On the Thames, London has been a central city since it was founded by the Romans two millennia ago as Londinium. The Romans bridged the river Thames and built a road network to connect Londinium with the rest of the country. +London's original city centre, the City of London is England's smallest city. In 2011 it had 7,375 inhabitants on an area of . The term "London" is used for the urban region which developed around this city centre. This area forms the region of London, the Greater London administrative unit led by the Mayor of London and the London Assembly. +London is one of the world's most important political, economic and cultural centres. London was the capital of the British Empire and so for almost three centuries the centre of power for large parts of the world. +The city has about 9.1 million inhabitants (2018). If one counts the entire metropolitan area of London (London Metropolitan Area), it has about 15 million people. The climate is moderate. +History. +The Romans built the city of "Londinium" along the River Thames in AD 43. The name "Londinium" (and later 'London') came from the Celtic language of the Ancient Britons. In AD 61, the city was attacked and destroyed. Then the Romans rebuilt the city, and London became an important trading hub. +5th century: end of Roman rule to 12th century. +After the decline of the Roman Empire, few people remained in London. The Anglo-Saxon people of sub-Roman Britain were mainly agricultural. Once the Romans had gone, trade with Continental Europe got less. In the 9th century, more people started living in London again. It became the largest city in England. However, it did not become the capital city of England again until the 12th century. For a long time after the Romans, England was not unified, and so had no capital. +15th/16th century. +Trade grew and the East India Company was founded as a monopoly trader. London became the main North Sea port, and migrants went from England. The population rose from about 50,000 in 1530 to about 225,000 in 1605. +The 16th century was a time of great change in the monarchy and the Church. The Church became the Church of England. The Scottish Church stayed loyal to Rome and Catholicism. In England the Bible had already been translated. This meant meant ordinary people could know for the first time what the Bible actually said. Before that a congregation had to accept what their preacher said. Elizabeth I was the main driver of these changes. +17th century. +The 17th century saw Londoners suffer from the plague and the fire of London. The century starts with the famous Gunpowder Plot. +In the 17th century the Stuart kings ruled: James I and Charles I. Charles Stuart was defeated by Cromwell, so the century was remarkable in that respect. Cromwell marks the beginning of the modern system whereby Parliament is more important than the monarch. The war between Cromwell and Charles was bitterly fought. London was the key city, and Oxford was also important. +The century also had two great disasters: the Great Plague and the Great Fire of London. The control of London by Cromwell and Parliament was one of the decisive factors in the civil war. Cromwell's victory was followed by his death in 1658, and the country for a time moved back to royal rule under Charles II. +The plague virus, carried by fleas on rats, came to Britain from Europe. +The Great Fire of London broke out at the beginning of September 1666. Unfortunately there were warehouses full of timber, pitch, tallow, wine and tar. These caught fire and, in the end, all the riverfront buildings were destroyed. The fire eventually destroyed about 60% of the city, (mainly the City of London, rather than the large city we have today). Old St Paul's Cathedral was destroyed. Some fires burnt more widely, up to present-day Southwark and even Highgate. +Modern era. +Another famous old part of Greater London is Westminster, which was a different city from the City of London. In Westminster is Westminster Abbey (a cathedral), the Palace of Westminster (the Houses of Parliament), and 10 Downing Street (where the Prime Minister lives). +After the railways were built, London grew much larger. Greater London has 33 boroughs (neighbourhoods) and a mayor. The old City of London is only a square mile in size but has its own Lord Mayor. +Expansion of London. +In stages, London has several times increased in size by statute in Parliament. The main motive for this has been taxation, and the increase in houses in what was once countryside. Since taxation was paid to the counties surrounding London, there was a motive for absorbing the countryside into London. This happened in several stages. +Outside London, local taxes are paid to the County Councils; inside London they are paid to the Greater London Council. One county has been lost entirely (Middlesex) and all the others have lost land and revenue. The London Boroughs and the GLA (Greater London Authority) both raise taxes, and the representatives are elected. There is a London Plan which sets out the priorities. The number of local authorities which raise local taxes and spend it is 33: 32 London boroughs and the City of London. +Geology. +One aspect of its geology had big consequences. North of the Thames London is on chalk, which is easy (with modern equipment) to tunnel through. South of the Thames London is on clay, which was, and still is, much more difficult to dig out. So most of the subterranean engineering is north of the Thames. The road system south of the Thames is also inadequate by modern standards. This difference is reflected in the prices for property, the road transport, the Underground railway and the definition of "London" as a taxable area. The growth of London has been more vigorous North of the Thames, and has included the complete absorption of Middlesex, once a separate county. +Business and economy. +London has five major business districts: the City, Westminster, Canary Wharf, Camden & Islington and Lambeth & Southwark. +The London Stock Exchange is the most international stock exchange and the largest in Europe. +Financial services. +London's largest industry is finance. This includes banks, stock exchanges, investment companies and insurance companies The Bank of England is in the City of London and is the second oldest bank in the world. +Professional services. +London has many professional services such as law and accounting firms. +Media. +The British Broadcasting Company (BBC), which has many radio and TV stations, is in London. +Tourism. +Tourism is one of London's biggest industries. London is the most visited city in the world by international tourists with 18.8 million international visitors per year. Within the UK, London is home to the ten most-visited tourist attractions. Tourism employed about 350,000 full-time workers in London in 2003. Tourists spend about £15 billion per year. +Technology. +A growing number of technology companies are based in London. +Retail. +London is a major retail centre, and in 2010 had the highest non-food retail sales of any city in the world, with a total spend of around £64.2 billion. The UK's fashion industry, centred on London, contributes tens of billions to the economy. +Manufacturing and construction. +For the 19th and much of the 20th centuries London was a major manufacturing centre (see Manufacturing in London), with over 1.5 million industrial workers in 1960. Many products were made in London including ships, electronics and cars. Nowadays, most of these manufacturing companies are closed but some drug companies still make medicine in London. +Transportation (trains, airports and underground). +The city has a huge network of transport systems including trains, underground (metro) and five main airports. +The Victorians built many train systems in the mid-19th century (1850s). Their main stations are in London, and the lines go to every part of Great Britain. There were originally five major companies but the five companies became a national rail network in modern times. Their terminals at King's Cross, St. Pancras, Paddington, Waterloo and Charing Cross are still used as terminals. +There are five airports, though only one is actually in London (London City Airport). The most used airport is Heathrow Airport, although it is actually outside the city. There is the London end of the London–Birmingham canal, which was important to the industrial 19th century. Really heavy goods can be best transported on water by canal or sea. +The London Underground is a system of electric trains which are in London. It is the oldest underground railway in the world. It started running in 1863 as the "Metropolitan Railway". Later, the system was copied in other cities, for example Paris, New York, Moscow and Madrid. Even though it is called the London Underground, about half of it is above the ground. The "Tube" is the name used for the London Underground, because the tunnels for some the central lines are semi-round tubes running through the ground. The Underground has 274 stations and over 250 miles (402 km) of track. Over one billion passengers used the Underground each year. +With the need for more rail capacity in London, the Elizabeth line (also known as "Crossrail") opened in May 2022. It is a new railway line running east to west through London, with a branch to Heathrow Airport. It is Europe's biggest construction project, with a £15 billion projected cost. +There is a black taxi system regulated by the Metropolitan Police, and various other private enterprise hire car companies. Efforts are being made to make roads safer for cyclists. +Sewage tunnel. +London's biggest tunnel has just been completed to take sewage from the capital to the East where it is processed. +Climate. +London has a temperate oceanic climate (Köppen climate classification: "Cfb"). It is not usually very hot or cold. It is often cloudy. +Summers are generally warm, sometimes hot. Winters are generally cool. Spring and autumn are mild. +London has regular, light rain throughout the year. July is the warmest month, with an average temperature at Greenwich of 13.6 °C to 22.8 °C. The coldest month is January, with an average of 2.4 °C to 7.9 °C. The average annual precipitation is fairly low at 583.6 mm, and February is normally the driest month. Drought is sometimes possible, especially during longer heatwaves in summer. Snow is uncommon but usually falls at least once each winter and heavy snow is rarer and does not happen every winter. While snow is uncommon in central London itself, there is more snow in the outer areas; this is because the "urban heat island" the big city generates makes the city about 5 °C warmer than surrounding areas in winter. +Temperature extremes in London range from at Heathrow Airport on 19 July 2022 down to at Northolt on 1 January 1962. +Twinnings. +London has twin and sister city agreements with these cities: +London also has a "partnership" agreement with Tokyo, Japan. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Ludwik Lejzer Zamenhof.txt b/.github/workflows/data/simplewiki-500/Ludwik Lejzer Zamenhof.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Macadamia Nuts.txt b/.github/workflows/data/simplewiki-500/Macadamia Nuts.txt new file mode 100644 index 000000000..3ef0b6550 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Macadamia Nuts.txt @@ -0,0 +1,3 @@ +This is a redirect from a misspelling or typographical error. The correct spelling is " "given by the target of the redirect". " +Pages using this link should be updated to link directly to the redirect target, without using a piped link that hides the correct details. +For more information, see . \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Macadamia nut.txt b/.github/workflows/data/simplewiki-500/Macadamia nut.txt new file mode 100644 index 000000000..300c4e335 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Macadamia nut.txt @@ -0,0 +1,8 @@ +The macadamia nut is the fruit of a tree that first came from the east coast of Australia. There is +more than one kind of Macadamia tree. Only two kinds are grown for food. +The tree is an evergreen (stays green all year long). It grows up to high. It has groups of small white flowers. It grows best in subtropical (wet and always warm) climates. It needs well-drained soil (water can flow away easily) and of rain a year. +The nutmeat (the soft part inside the shell that can be eaten) is mostly a creamy white color. Sometimes it looks a bit yellow. It has a flavor that many people like. Macadamias are eaten roasted (cooked) by themselves. They are used in cookies, cakes, pastries, and candies. People use them like almonds and cashews as part of cooked meals. This is an Oriental style of cooking. +The first commercial orchard was started in Australia in the late 1880s. Commercial production started in Hawaii during the 1920s. Production later spread to California, Mexico, and other places with warm climate. +Macadamias are poisonous to dogs. A dog usually needs 24 to 48 hours to recover fully after eating macadamias.The plant is in the Proteaceae family of flowering plants. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Madrid.txt b/.github/workflows/data/simplewiki-500/Madrid.txt new file mode 100644 index 000000000..a95b2605e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Madrid.txt @@ -0,0 +1,25 @@ +Madrid (pronounced: “mah-drid or /məˈdrɪd/) is the capital and largest city of Spain. Madrid is in the middle of Spain, in the Community of Madrid. The Community is a large area that includes the city as well as small towns and villages outside the city. 7 million people live in the Community. More than 3 million live in the city itself. It is the largest city of Spain and, at 655 m (2,100 ft) above sea level, the second highest capital in Europe (after the Andorran capital Andorra la Vella). It is the second largest city in the European Union. As it is the capital city, Madrid is where the monarch lives and also where the government meets. Madrid is the financial centre of Spain. Many large businesses have their main offices there. It has four important footballs teams, Real Madrid, Atlético Madrid, Getafe, and Rayo Vallecano. People who live in Madrid are called madrileños. +Madrid was ruled by the Romans from the 2nd century. After AD 711 it was occupied by the Moors. In 1083 Spain was ruled again by Spaniards. Catholic kings ruled the country. By the mid-16th century it had become the capital of a very large empire. Spain was ruled by monarchs from the House of Habsburg, then the House of Bourbon. After the Spanish Civil War it was ruled by a dictator until the mid-1970s when it became a democracy. +Although it is a modern city, a lot of its history can be seen and felt as one walks along the streets and in the large squares of the city. There are beautiful parks, famous buildings, art galleries and concert halls. +History. +During the history of Spain many different people have lived there. Madrid's name comes from the Arabic word "magerit", meaning “place of many streams". The Phoenicians came in 1100 BC, followed by Carthaginians, Romans, Vandals, Visigoths and Moors. It was not until 1492, when the Catholic Monarchs got power, that Spain became a united country. Jews and Moors, who had lived happily there for many years, were driven away. Spain became very rich because it conquered many overseas countries, especially in Central and South America. However, Spain fought many wars and lost much of its treasure. It was very poor in 1936 when the Civil War was fought. General Franco became a harsh dictator until 1975 when Juan Carlos I was brought back to Spain and made king. There is now a democratic government. +In prehistoric times people lived in the area which is now Madrid. The Romans lived there for several centuries. The origin of today’s city really starts in the 9th century when Muhammad I had a small palace built where the Palacio Real stands today. The Moors built strong forts in Madrid in 865 and put a wall round the city. These walls stood until 1476 when they were knocked down. In 1561 Felipe I moved the royal court from Toledo to Madrid. Madrid had now become the capital of a very large empire. Over the next years and decades the Plaza Mayor was built and many great buildings and monuments, many of which still stand. +When Ferdinand II of Aragon and Queen Isabella of Castile came to Madrid, Spain had become a very rich country. The 16th and 17th centuries are now known as the “Golden Century”. Their grandson was the famous Charles I of Spain (also known as Charles V, Holy Roman Emperor). He liked his court to be in Seville. His son, Philip II (1527–1598) moved the court to Madrid in 1561. +In the late 1800s there was a revolt, known as the First Spanish Republic. Later the monarchy was restored, but then there was a Second Spanish Republic followed by the Spanish Civil War. The Second Spanish Republic started on 14 April 1931 and was celebrated in La puerta del Sol which is the center of the city. Madrid suffered a lot in this war. It was bombed by airplanes. +During the dictatorship of Francisco Franco, especially during the 1960s, south Madrid became very industrialized, and many people from the rural areas moved to Madrid especially to the south east of the city. +When General Franco died and democracy was restored, Madrid became more prosperous. During the 1980s and 1990s many new buildings were put up. Also when Franco died, the Spanish monarchy returned. +Madrid has been attacked many times by terrorists. This includes the bombing of a restaurant in 1985, killing 18 people and the of trains in 2004, killing over 190 people. +Geography. +Madrid has a borderline cold semi-arid climate ("BSk" in the Köppen climate classification) and a hot-summer Mediterranean climate ("Csa" in the Köppen climate classification). Most rain falls in autumn and spring. The winters are cool because it is high up, and occasionally it snows. The summers are hot and dry. Often the temperature is above 30 °C (86 °F) in July and August and can often reach 40 °C (104 °F). At night it is much cooler. This is why many offices and businesses are closed and people have a sleep (siesta) in the afternoon when it is hot. Then they come out again in late afternoon and often eat dinner late at night. +Buildings in Madrid. +Spain's Royal Palace is in Madrid. It is one of the largest palaces in all of Western Europe. But the king and his family do not live there anymore; they live in a smaller palace, and only use the Royal Palace for important events, like meeting other kings and other official ceremonies. One can go inside the Royal Palace and learn about the history of Spanish monarchy. +Other famous buildings are: The Prado Museum, the Temple of Debod, the Santiago Bernabeú Stadium and the Cuatro Torres Business Area. +Art galleries. +There are a lot of very big and important art museums in Madrid. The most famous ones are the Prado Museum, the Queen Sofia Museum, and the Thyssen-Bornemisza museum. These show off paintings, sculptures, and other works of art from some of the most famous artists in the world. +Many famous, important, and valuable works of art are in these museums. For example, the Queen Sofia museum has a famous painting by Pablo Picasso, called "Guernica". Picasso painted this painting to show how sad and angry it made him when the German Nazis destroyed a town in Spain called Guernica in 1937. Picasso had said that the painting should never return to Spain until it was a democracy again. Once that happened, they built the Queen Sofia museum just to have a good place to put it. +Other sights. +There are many other sights to see in Madrid. Many people go to see the Plaza Mayor which was a market place. The Plaza de la Villa was another famous market place. There are a lot of shops along the Gran Via. Real Madrid football fans celebrate at the Plaza de Cibeles. Two famous gates to see are the Puerta del Sol and the Puerta de Alcalá. A more recent landmark is the Almudena Cathedral. +Madrid has some lovely parks. The Retiro Park is the most famous. The Cristal Palace can be found in this park. +The Plaza de Toros is visited by many tourists. Bullfights take place there. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Magnifying glass.txt b/.github/workflows/data/simplewiki-500/Magnifying glass.txt new file mode 100644 index 000000000..cf45fea1f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Magnifying glass.txt @@ -0,0 +1,7 @@ +A magnifying glass is a lens through which can be used to make things appear bigger, so you can see them better. It is used in many applications and manual operations, e.g., for examining postage stamps in philately. +The magnifying glass consists of a piece of convex-shaped glass or plastic. It has to be held at the right distance between the eye and the object for the object to be in focus. The magnifying glass usually comes with a handle. A telescope is a more advanced kind of magnifying glass and consists of at least two glass lenses. +A pair of binoculars is like a telescope for each eye. "Spectacles" or eyeglasses also use lenses to correct a person's vision. +References. +<templatestyles src="Reflist/styles.css" /> +Other websites. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Maize.txt b/.github/workflows/data/simplewiki-500/Maize.txt new file mode 100644 index 000000000..791bd9341 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Maize.txt @@ -0,0 +1,8 @@ +Maize or Indian corn (called corn in some countries) is "Zea mays", a member of the grass family "Poaceae". It is a cereal grain which was first grown by people in ancient Central America. Approximately 1 billion tonnes are harvested every year. However, little of this maize is eaten directly by humans. Most is used to make corn ethanol, animal feed and other maize products, such as corn starch and corn syrup. +Maize is a leafy stalk whose kernels have seeds inside. It is an angiosperm, which means that its seeds are enclosed inside a fruit or shell. It is has long been a staple food by many people in Mexico, Central and South America and parts of Africa. In Europe and the rest of North America, maize is grown mostly for use as animal feed. In Canada and the United States, maize is commonly referred to as "corn". +Centuries of cross breeding have produced larger plants, and specialized varieties. Corn has become an important ingredient in American foods through the use of corn starch. People have long eaten sweet corn and popcorn with little processing, and other kinds after processing into flour for making cornbread, tortillas, and other artificial foods. +Maize has been a fruitful model organism for research in genetics for many years: see Barbara McClintock. Research has shown that artificial selection developed maize from a Mexican plant called Teosinte. +The genus "Zea". +There are five species and many subspecies in the genus. They are all plants similar to the cultivated maize, with less developed cobs. The wild ones are sometimes called teosintes, and they are all native to Mesoamerica. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Mammal.txt b/.github/workflows/data/simplewiki-500/Mammal.txt new file mode 100644 index 000000000..f120418b1 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Mammal.txt @@ -0,0 +1,47 @@ +Mammals are in the class Mammalia. They are a group of vertebrate animals. They have fur or hair and very precise temperature regulation. +With the exception of the monotremes, all mammals bear live young. Unlike other vertebrates, they are the only animals that produce milk for their young through their mammary glands. Parental care of the young is universal among mammals, sometimes for long periods. +Mammals became the dominant land animals after non-bird dinosaurs were eliminated. Recent work helped to explain their success: epigenetics seems to have started in early mammals. +Main characteristics. +Reproductive cycle. +Most marsupial and eutherian mammals have a reproductive cycle known as the oestrous cycle (U.S: estrous cycle). Females are sexually active in the oestrous stage, when they are 'on heat' for a few days each month. If an ovum is not fertilized, the endometrium (uterus lining) is resorbed. Oestrus cycles may occur once or twice a year, or many times a year. Each type of mammals has its own frequency. +Humans and primates, are quite different. They have a menstrual cycle. In this case, females are sexually receptive at any time, but only fertile when an ovum is released from an ovary. In this case, the endometrium (if not needed for an fertilised egg) is discarded. In this system, eggs are released from the ovaries mostly in the middle of the cycle, away from the menstrual period. This ovulation is 'concealed', meaning, it is not obvious when it occurs. This process, so it is thought, tends to keep the male and female together, which is unusual in mammals with the oestrous cycle. Keeping males and females together is related to the long learning period of primates. +Skeleton. +One diagnostic feature of mammals is the lower jaw. Unlike earlier forms, it is a single bone, the dentary. This is one feature which can be seen in fossils, or at least those which are complete enough to have the lower jaw. Another diagnostic feature is the ear ossicles. Mammals have three little bones in their inner ear. These ear ossicles are bones which were, long ago, part of the lower jaw in early proto-mammals. +There are quite a number of other features in the skull and limbs, so that it is usually possible to identify and describe a mammal from its skeleton alone, or even a partial skeleton. +Neocortex and behaviour. +Another diagnostic feature is the neocortex of the brain, which no other vertebrate has. This is involved in the kind of flexible behaviour and learning typical of mammals. Reptiles and birds have much of their behaviour controlled by "inherited behaviour chains", which roughly translates as "instincts". Almost all animals can do some learning, but mammals do far more than other vertebrates. Their behaviour is much more flexible than lizards, for example, and that is made possible by their neocortex. +Other things in the life of mammals seem to be connected with this flexibility and learning. Play is a kind of early learning period in which, according to one theory, mammals develop skills which they will need in life. All mammalian young play, and this is very obvious in the more intelligent mammals (primates, cats). +The emotions of mammals are very noticeable, and rather similar to ours. It is possible, and quite common, for humans to have a friendly relationship with another mammal. It is quite impossible for a human to have any kind of relationship with a snake or a gecko (for example). This is because the reptile simply does not have the same basic emotions as a human. +Primarily nocturnal. +Once, most mammals were nocturnal. Today, many (more than two-thirds) are still nocturnal. It makes a lot of sense when you realise that the daytime was ruled by dinosaurs for so long, Primates (except humans) sleep at night in trees. They are active during the daytime, and some come out onto more open ground. +Baboons (and humans!) are rather special in that they come out onto the grassland in the daytime. Humans are fully daytime animals, and can see colours quite well (nocturnal animals have poor colour vision, but can see in the dusk.). +Other items. +There are about 50 characters which are typical of mammals: some of the most important are discussed above. A few more examples will make it clear that mammals are very different from reptiles and birds: +In the language of cladistics, the 50 unique characters are apomorphies which prove that mammals are a clade descended from a common ancestor. +Main groups. +All mammals feed milk to their young, and protect and look after them. +The vast majority of mammal species give birth to live young, these are the placental mammals, most of which are classified as Eutheria and a small number are classified as marsupials. +Marsupials are mammals with pouches to carry young in, like the kangaroo. +There are only five species (the monotreme mammals) that lay eggs, the duck-billed platypus "Ornithorhynchus", and four species of spiny anteater "Echidna". The monotremes are confined to Australia and New Guinea, and are the sole survivors of an earlier group of mammals. +Modes of life. +By number of species, mammals (with 5488 species), are not the most successful vertebrates. Birds, with about 10,000 species have nearly twice as many, and reptiles have just as many as birds. Fish have even more species. There are 27,000 species of fish, of which nearly 26,000 are bony fish. However, the word "fish" covers more than one class of animal. +Most zoologists regard mammals as a successful group of animals. One reason is that they are successful in all habitats on Earth. In the air, in the water, in forests, in the colder regions of the world, and above all on grasslands, where they are outstandingly successful. +In the air, the bats (Chiroptera) are the mammalian order with the most species. They 'own' the nighttime, since birds are largely diurnal (daytime) animals. Bats are hugely successful, mostly as nighttime predators of insects. +Seagoing mammals, the Cetacea and the pinnipeds, are very successful and significant predators. This includes the whales, seals, walrus, dolphins and others. +The terrestrial mammals are fewer in number of species than lizards, but they are huge in individual numbers, and far more important in the life of the terrestrial biomes. Their ability to move from place to place and adapt has made them a most effective group. Many mammals live in cold places. These mammals have thick hair or blubber to keep them warm. Others may live in rainforests. On land the rodents (rats, mice) are hugely successful, more common in numbers than any other mammals. Large mammals on land have been hunted to extinction in some parts of the world, but the ones which remain are now better protected. +Last, but certainly not least, are the primates. Their natural habitat, with few exceptions, are the forests. Most live in the trees, with hands that grasp, good colour vision, and intelligence. In the Pliocene period some moved out onto the savannas as grassland replaced forests. Mankind is the result of this shift into the savannas. +Taxonomy. +The evolutionary relationships among land vertebrates is as follows: +This sort of classification is not traditional, but it does reflect our knowledge of palaeontology and evolution. +Standardized textbook classification. +A somewhat standardized classification system has been adopted by most current mammalogy classroom textbooks. It is based on living animals. The following taxonomy of extant and recently extinct mammals is from Vaughan et al. 2000. +Class Mammalia +List of living orders. +Mammals can be divided in a number of orders: +Debate on the meaning of "mammalia". +Because two quite different dates are given in the taxobox, an explanation is needed. Rowe defines mammals as "the taxon originating with the most recent common ancestor of extant (living) Monotremata and Theria". That puts the emphasis heavily on living mammals, where, as Rowe points out, the database of characters is extensive. +Kemp explains the problem with that approach: "If the definition of a mammal is based rigorously upon possession of all the characters of living mammals, then some fossil forms that are extremely mammalian in anatomy... are excluded". +"An altogether different perspective on defining Mammalia is based on traditional palaeobiological practice. An arbitrary decision is made about which characters to select as defining characters... Characters deemed appropriate are those reflecting the... fundamental mammalian biology. The essence of mammalian life is to be found in their endothermic temperature physiology, greatly enlarged brain, dentition capable of chewing food, highly agile, energetic locomotion, and so on. The organisms that achieved this grade of overall organisation are deemed to be Mammalia... Around the end of the Triassic period, about 205 mya, a number of fossils are found of very small animals that have [most] of the skeletal characters of modern mammals". +This difference in outlook explains the difference in the two dates given in the taxobox. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/March.txt b/.github/workflows/data/simplewiki-500/March.txt new file mode 100644 index 000000000..6d1d0a1d5 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/March.txt @@ -0,0 +1,11 @@ +March (Mar.) is the third month of the year in the Gregorian calendar, coming between February and April. It has 31 days. March is named after Mars, the Roman god of war. +March always begins on the same day of the week as November, and additionally, February in common years. March always ends on the same day of the week as June. +The month. +In ancient Rome, March was called Martius. It was named after the war god (Mars) and the Romans thought that it was a lucky time to begin a war. Before Julius Caesar's calendar reform, March was the first month of the year in the Roman calendar, as the winter was considered to be a monthless period. It is one of seven months to have 31 days. +March begins on the same day of the week as February in common years and November every year, as each other's first days are exactly 4 weeks (28 days) and 35 weeks (245 days) apart respectively. March ends on the same day of the week as June every year, as each other's last days are exactly 13 weeks (91 days) apart. +In common years, March starts on the same day of the week as June of the previous year, and in leap years, September and December of the previous year. In common years, March finishes on the same day of the week as September of the previous year, and in leap years, April and December of the previous year. +In years immediately before common years, March starts on the same day of the week as August of the following year, and in years immediately before leap years, May of the following year. In years immediately before common years, March finishes on the same day of the week as August and November of the following year, and in years immediately before leap years, May of the following year. +In leap years, the day before March 1 is February 29. This determines the position of each day of the year from there on. As an example, March 1 is usually the 60th day of the year, but in a leap year is the 61st day. +In terms of seasons, March is one of two months to have an equinox (the other is September, its seasonal equivalent in both hemispheres), with daylight and darkness of roughly the same number of hours, halfway between the December and June solstices. In the Northern Hemisphere, spring starts in this month, while it is autumn in the Southern Hemisphere. +Start of the season. +The official start of either season is March 1, though the equinox can fall on March 20 or 21, occasionally on March 19. The northern spring equinox marks the start of the Iranian New Year and Baha'i New Year. It is from the March 21 date that Easter's date is calculated, on the Sunday after the first full moon in spring, meaning it can fall between March 22 and April 25 in Western Christianity. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Margarine.txt b/.github/workflows/data/simplewiki-500/Margarine.txt new file mode 100644 index 000000000..323f7881a --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Margarine.txt @@ -0,0 +1,2 @@ +Margarine is an artificial butter. It can be made from vegetable oil, or animal fat. It may also contain skimmed milk, salt and emulsifiers. Margarine is used in many baked products. It contains less fat than butter, so is often chosen instead of it. There are also "low fat" margarines, which contain even less fat. However, many types of margarine are made with hydrogenated oils. Products with hydrogenated oil have trans fats, which are unhealthy and can cause heart disease. Other fats, like olive oil, and butter, are a better choice for cooking. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Mars.txt b/.github/workflows/data/simplewiki-500/Mars.txt new file mode 100644 index 000000000..c41203c83 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Mars.txt @@ -0,0 +1,70 @@ +Mars is the fourth planet from the Sun and the second-smallest planet in the Solar System, nicknamed The Red Planet. +Mars is a terrestrial planet with caps of water and carbon dioxide. It has the largest volcano in the Solar System, and some very large impact craters. +Mars is named after the mythological Roman god of war because it appears of red color. Anything that has to do with Mars is called "Martian". +Space probes, such as the Viking program landers, are the main tools for the exploration of Mars. +Appearance. +Mars is a terrestrial planet and made of rocks. The ground there is red because of iron oxide (rust) in the rocks and dust. The planet's atmosphere is very thin. It is mostly carbon dioxide with some argon and nitrogen and tiny amounts of other gases including oxygen. The temperatures on Mars are colder than on Earth, because it is farther away from the Sun and has less air to keep heat in. There is water ice and frozen carbon dioxide at the north and south poles. Mars does not have any liquid water on the surface now, but signs of run-off on the surface were probably caused by water. +The average thickness of the planet's crust is about 50 km (31 mi), with a maximum thickness of 125 km (78 mi). +Moons. +Mars has two small moons, called Phobos and Deimos. +The origin of Mars' moons is unknown and controversial. One theory is that the moons are captured asteroids. However, the moons' near circular orbits and low inclination relative to the Martian equator are not in agreement with the capture hypothesis. +Estimates of the mass ejected by a large Borealis-size impact vary. Simulations suggest that a body about 0.02 of Mars mass (~0.002 Earth mass) in size can produce a sizable debris disk in Martian orbit. Much of the material would stay close to Mars. There are several other large impact basins on Mars that could also have ejected enough debris to form the moons. +Physical geography. +Lack of magnetic field. +Mars does not have a global magnetic field. Despite this, observations show that parts of the planet's crust have been magnetized. This suggests that polarity reversals have occurred in the past. This paleomagnetism is similar to the magnetic striping found on Earth's ocean floors. One theory is that these bands suggest plate tectonic activity on Mars four billion years ago, before the planetary dynamo stopped working and the planet's magnetic field faded. +Rotation and orbit. +A Martian day is called a "sol", and is a little longer than an Earth day. Mars rotates in 24 hours and 37 minutes. It rotates on a tilted axis, just like the Earth does, so it has four different seasons. Of all the planets in the Solar System, the seasons of Mars are the most Earth-like, due to their similar axial tilt. The lengths of the Martian seasons are almost twice those of Earth's: Mars's greater distance from the Sun causes the Martian year to be almost two Earth years long. +Martian surface temperatures vary from lows of about (at the winter polar caps) to highs of up to (in equatorial summer). The wide range in temperatures is due mostly to the thin atmosphere which cannot store much solar heat. The planet is also 1.52 times as far from the Sun as Earth, resulting in just 43% of the amount of sunlight. +Its orbit is more eccentric than the Earth's (meaning less like a circle). Probably that is one reason why the Earth's climate varies so much. In other words, its orbit affects the climate of the Earth. That is just a theory at present. +Water. +"See main article, Water on Mars +A 2015 report says Martian dark streaks on the surface were affected by water. +Liquid water cannot exist on the surface of Mars due to its low atmospheric pressure (there is not enough air to hold it in), except at the lowest elevations for short periods. The two polar ice caps appear to be made largely of frozen water. The amount of ice in the south polar ice cap, if melted, would be enough to cover the entire planet's surface 11 meters deep. A permafrost mantle stretches from the pole to latitudes of about 60°. +Geological evidence gathered by unmanned missions suggest that Mars once had much liquid water on its surface. In 2005, radar data revealed the presence of large quantities of water ice at the poles, and at mid-latitudes. The Mars rover "Spirit" sampled chemical compounds containing water molecules in March 2007. The "Phoenix" lander found water ice in shallow Martian soil in July 2008. +Landforms seen on Mars strongly suggest that liquid water at some time existed on the planet's surface. Huge areas of ground have been scraped and eroded. +In August 2024, a reservoir of liquid water was discovered on Mars - deep in the rocky outer crust of the planet. The findings came from a new analysis of data from Nasa’s Mars Insight Lander, which recorded four years' of vibrations - Mars quakes - from deep inside the Red Planet. +Polar caps. +Mars has two permanent polar ice caps. During a pole's winter, it lies in continuous darkness, chilling the surface and causing the deposition of 25–30% of the atmosphere into slabs of CO2 ice (dry ice). When the poles are again exposed to sunlight, the frozen CO2 sublimes (turns to vapor), creating enormous winds that sweep off the poles as fast as 400 km/h. Each season this moves large amounts of dust and water vapor, giving rise to Earth-like frost and large cirrus clouds and dust storms. Clouds of water-ice were photographed by the "Opportunity" rover in 2004. +The polar caps at both poles consist primarily of water ice. +Atmosphere. +Mars has a very thin atmosphere with barely any oxygen (it is mostly carbon dioxide). Because there is an atmosphere, however thin it is, the sky changes colour when the sun rises and sets. The dust in the Martian atmosphere makes Martian sunsets somewhat blue. Mars's atmosphere is too thin to protect Mars from meteors, which is part of the reason why Mars has so many craters. +Meteorite craters. +After the formation of the planets, they all experienced the "Late Heavy Bombardment". About 60% of the surface of Mars shows a record of impacts from that era. Much of the remaining surface is probably lying over the immense impact basins caused by those events. There is evidence of an enormous impact basin in the northern hemisphere of Mars, spanning , or roughly four times larger than the largest impact basin previously known. This suggests that Mars was struck by a Pluto-sized body about four billion years ago. The event is thought to be the cause of the difference between the Martian hemispheres. It made the smooth Borealis Basin that covers 40% of the planet. +Some meteorites hit Mars with so much force a few pieces of Mars went flying into space – even to Earth. Rocks on Earth are sometimes found which have chemicals that are exactly like the ones in Martian rocks. These rocks also look like they fell really quickly through the atmosphere, so it is reasonable to think they came from Mars. +Recent hits. +Spacecraft "Insight" detected seismic waves made by the biggest meteorite impacts ever seen on Mars. +Geography. +Mars is home to the highest known mountain in the Solar System, Olympus Mons. Olympus Mons is about 17 miles (or 27 kilometers) high. This is more than three times the height of Earth's tallest mountain, Mount Everest. It is also home to Valles Marineris, the third largest rift system (canyon) in the Solar System, 4,000 km long. +Observation of Mars. +Our records of watching and recording Mars start with ancient Egyptian astronomers in the 2nd millennium BC. +Detailed observations of the location of Mars were made by Babylonian astronomers who developed methods using math to predict the future position of the planet. The ancient Greek philosophers and astronomers developed a model of the solar system with the Earth at the center ('geocentric'), instead of the sun. They used this model to explain the planet's motions. Vedic and Islamic astronomers estimated the size of Mars and its distance from Earth. Similar work was done by Chinese astronomers. +In the 16th century, Nicholas Copernicus proposed a model for the Solar System in which the planets follow circular orbits about the Sun. This 'heliocentric' model was the beginning of modern astronomy. It was revised by Johannes Kepler, who gave an elliptical orbit for Mars which better fit the data from our observations. +The first observations of Mars by telescope was by Galileo Galilei in 1610. Within a century, astronomers discovered distinct albedo features (changes in brightness) on the planet, including the dark patch and polar ice caps. They were able to find the planet's day (rotation period) and axial tilt. +Better telescopes developed early in the 19th century allowed permanent Martian albedo features to be mapped in detail. The first crude map of Mars was published in 1840, followed by better maps from 1877 onward. Astronomers mistakenly thought they had detected the spectroscopic mark of water in the Martian atmosphere, and the idea of life on Mars became popular among the public. +Yellow clouds on Mars have been observed since the 1870s, which were windblown sand or dust. During the 1920s, the range of Martian surface temperature was measured; it ranged from –85 to 7 oC. The planetary atmosphere was found to be arid with only traces of oxygen and water. In 1947, Gerard Kuiper showed that the thin Martian atmosphere contained extensive carbon dioxide; roughly double the quantity found in Earth's atmosphere. The first standard naming of Mars surface features was set in 1960 by the International Astronomical Union. +Since the 1960s, multiple robotic spacecraft and rovers have been sent to explore Mars from orbit and the surface. The planet has remained under observation by ground and space-based instruments across a broad range of the electromagnetic spectrum (visible light, infrared and others). The discovery of meteorites on Earth that came from Mars has allowed laboratory examination of the chemical conditions on the planet. +Martian 'canals'. +During the 1877 opposition, Italian astronomer Giovanni Schiaparelli in Milan used a telescope to help produce the first detailed map of Mars. What caught people's attention was that the maps had features he called "canali". These were later shown to be an optical illusion (not real). These "canali" were supposedly long straight lines on the surface of Mars to which he gave names of famous rivers on Earth. His term "canali" was popularly mistranslated in English as "canals", and thought to be made by intelligent beings. +Other astronomers thought they could see the canals too, especially the American astronomer Percival Lowell who drew maps of an artificial network of canals on Mars. +Although these results were widely accepted, they were contested. Greek astronomer Eugène M. Antoniadi and English naturalist Alfred Russel Wallace were against the idea; Wallace was extremely outspoken. As bigger and better telescopes were used, fewer long, straight "canali" were observed. During an observation in 1909 by Flammarion with a telescope, irregular patterns were observed, but no "canali" were seen. +Search for life. +Because Mars is the one of the closest planets to Earth in the Solar System, many have wondered if there is any kind of life on Mars. Scientists have not found life on Mars (as of 2024). No sign of former life, has been found. +Today we know that this life, if any, would be simple organisms, like bacteria. +Meteorites. +NASA maintains a catalog of 34 Mars meteorites, that is, meteorites which originally came from Mars. These assets are highly valuable since they are the only physical samples available of Mars. +Studies at NASA's Johnson Space Center show that at least three of the meteorites contain possible evidence of past life on Mars, in the form of microscopic structures resembling fossilized bacteria (so-called biomorphs). Although the scientific evidence collected is reliable, and the rocks are correctly described, what made the rocks look like they do is not clear. To date, scientists are still trying to agree if it really is evidence of simple life on Mars. +Over the past few decades, scientists have agreed that when using meteorites from other planets found on Earth (or rocks brought back to Earth), various things are needed to be sure of life. Those things include: +For people to agree on past life in a geologic sample, most or all of these things must be met. This has not happened yet, but investigations are still in progress. Reexaminations of the biomorphs found in the three Martian meteorites are underway. +The significance of water. +Liquid water is necessary for life and metabolism, so if water was present on Mars, the chances of life evolving is improved. The Viking orbiters found evidence of possible river valleys in many areas, erosion and, in the southern hemisphere, branched streams. Since then, rovers and orbiters have also looked closely and eventually proved water was on the surface at one time, and is still found as ice in the polar ice caps and underground. +As of 2024. +Several space probes have gone to Mars to study it. Some have orbited (gone around) the planet, and some have landed on it. There are pictures of the surface of Mars that were sent back to Earth by the probes. +The Cheyava Falls rock was discovered on Mars in June 2024. NASA gave it a designation, as a "potential biosignature". The rock was core sampled by the Perseverance rover for possible return to Earth and further examination. Research has not shown (as of 2024) if the rock has a biological origin or abiotic origin. +The most recent probe to the planet is the Mars Science Laboratory. It landed on Aeolis Palus in Gale Crater on Mars on 6 August 2012. It brought with it a mobile explorer called 'Curiosity'. It is the most advanced space probe ever. Curiosity has dug up Martian soil and studied it in its laboratory. It has found sulfur, chlorine, and water molecules. +Some people are interested in sending astronauts to visit Mars. They could do a better search, but getting astronauts there would be difficult and expensive. The astronauts would be in space for many years, and it could be very dangerous because of radiation from the Sun. So far we have only sent unmanned probes. +Popular culture. +Some famous stories were written about the idea of life on Mars. The writers used the name "Martians" for intelligent beings from Mars. In 1898, H.G. Wells wrote "The War of the Worlds", a famous novel about Martians attacking the Earth. In 1938, Orson Welles broadcast a radio version of this story in the United States, and many people thought it was really happening and were very scared. Beginning in 1912, Edgar Rice Burroughs wrote several novels about adventures on Mars. +References. +<templatestyles src="Reflist/styles.css" /> +Notes +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Mass.txt b/.github/workflows/data/simplewiki-500/Mass.txt new file mode 100644 index 000000000..10ce96959 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Mass.txt @@ -0,0 +1,15 @@ +The mass of an object is a measure of the amount of matter it has. A mountain has a greater mass than a rock, while mass is different weight, which is the vector (directional) product of mass and gravitational acceleration, e.g. 9.81 ms-2. Weight is sometimes called the "force of gravity". +The mass of an object is measurable when a force is exerted on the object. If the mass is greater, the object will have less acceleration (changes in velocity), which is sometimes called "inertial mass" as it measures the inertia. +A gigantic mass, like our planet Earth, attracts such a smaller mass as human being to keep the human being from floating away from the Earth's surface. "Mass attraction" is another word for gravity, a force existing between all matters. When measuring the "force of gravity" exerted on an object, its "gravitational mass" can be found. Tests of inertial and gravitational mass show that they are the same or almost the same. +Units of mass. +The unit of mass in the International System of Units is the kilogram, which is represented by the symbol 'kg'. Fractions and multiples of this basic unit include the gram (one thousandth of a kg, symbol 'g') and the tonne (one thousand kg), amongst many others. +In some fields or applications, it is convenient to use different units to simplify the discussions or writings. For instance, +Traditional units are still in encountered in some countries: imperial units such as the ounce or the pound were in widespread use within the British Empire. Some of them are still popular in the United States, which also uses units like the short ton (2,000 pounds, 907 kg) and the long ton (2,240 pounds, 1010 kg), not to be confused with the metric ton (1,000 kg). +Conservation of mass and relativity. +Mass is an intrinsic property of the object: it does not depend on its volume, or position in space, for instance. For a long time (at least since the works of Antoine Lavoisier in the second half of the eighteen century), it has been known that the sum of the masses of objects that interact or of the chemicals that react remain conserved throughout these processes. This remains an excellent approximation for everyday life and even most laboratory work. +However, Einstein has shown through his special theory of relativity that the mass "m" of an object moving at speed "v" with respect to an observer must be higher than the mass of the same object observed at rest "m0" with respect to the observer. The applicable formula is +formula_1 +where "c" stands for the speed of light. This change in mass is only important when the speed of the object with respect to the observer becomes a large fraction of "c". +The Quantum Concept of Mass. +"For further reference,see the Gluon field and :Higgs boson" +In atomic nuclei, example in protons and neutrons,the residual mass comes from the binding kinetic and potential energy of the quarks and gluon field. An analogy to go along with is to think of the 3 quarks as balls with the gluons as a spring connecting the quarks. This mass accounts for 99% of the mass of these baryons with the remaining 1% coming from the individual quarks which comes from quantum interactions with the Higgs field. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Math.txt b/.github/workflows/data/simplewiki-500/Math.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Mathematics.txt b/.github/workflows/data/simplewiki-500/Mathematics.txt new file mode 100644 index 000000000..6e2371730 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Mathematics.txt @@ -0,0 +1,29 @@ +Mathematics (math or maths for short) is the study of numbers, shapes, and patterns. The word comes from the Greek "μάθημα" (máthema), meaning "science, knowledge, or learning". +It is the study of: +Applied math is useful for solving problems in the real world. People working in business, science, engineering, and construction use mathematics. +Problem-solving in mathematics. +Mathematics solves problems by using logic. One of the main tools of logic used by mathematicians is deduction. Deduction is a special way of thinking to discover and prove new truths using old truths. To a mathematician, the reason something is true (called a proof) is just as important as the fact that it is true, and this reason is often found using deduction. Using deduction is what makes mathematical thinking different from other kinds of scientific thinking, which might rely on experiments or on interviews. +Logic and reasoning are used by mathematicians to create general rules, which are an important part of mathematics. These rules leave out information that is not important so that a single rule can cover many situations. By finding general rules, mathematics solves many problems at the same time as these rules can be used on other problems. These rules can be called theorems (if they have been proven) or conjectures (if it is not known if they are true yet). Most mathematicians use non-logical and creative reasoning in order to find a logical proof. +Sometimes, mathematics finds and studies rules or ideas that we don't understand yet. Often in mathematics, ideas and rules are chosen because they are considered simple or neat. On the other hand, sometimes these ideas and rules are found in the real world after they are studied in mathematics; this has happened many times in the past. In general, studying the rules and ideas of mathematics can help us understand the world better. Some examples of math problems are addition, subtraction, multiplication, division, calculus, fractions and decimals. Algebra problems are solved by evaluating certain variables. A calculator answers every math problem in the four basic arithmetic operations. +Mathematics includes the study of numbers and quantities. It is a branch of science that deals with the logic of shape, quantity, and arrangement. Most of the areas listed below are studied in many different fields of mathematics, including set theory and mathematical logic. The study of number theory usually focuses more on the structure and behavior of the integers rather than on the actual foundations of numbers themselves, and so is not listed in this given subsection. + Structural mathematics studies objects' and constructions' shape and integrity. These are areas of algebra and calculus. +Some areas of mathematics study the shapes of things or matter. Most of these areas are part of the study of geometry. +Some areas of mathematics study the way things change. Most of these areas are part of the study of analysis. +Applied math uses symbolic logic to solve problems in areas like engineering and physics. +Numerical analysis – Optimization – Probability theory – Statistics – Mathematical finance – Game theory – Mathematical physics – Fluid dynamics - Computational algorithms +Famous theorems. +These theorems and conjectures have interested mathematicians and amateurs alike: +Pythagorean theorem – FLT – Goldbach's conjecture – Twin Prime Conjecture – Gödel's incompleteness theorems – Poincaré conjecture – Cantor's diagonal argument – Four color theorem – Zorn's lemma – Euler's Identity – Church-Turing thesis +These theorems and hypotheses have exceedingly changed mathematics: +Central limit theorem classification theorems of surfaces – Continuum hypothesis – Fourier Theorem – Fundamental theorem of calculus – Fundamental theorem of algebra – Fundamental theorem of arithmetic – Fundamental theorem of projective geometry – Gauss-Bonnet theorem - Kantorovich theorem – P Versus NP – Pythagorean theorem – Riemann hypothesis +These are a few conjectures that have been called "revolutionary": +Beal Conjecture (a generalization of FLT) – Birch and Swinnerton-Dyer Conjecture – Collatz Conjecture – Goldbach's Conjecture –Hodge Conjecture – Poincaré Conjecture +Set theory – Symbolic logic – Model theory – Category theory – Logic – Table of mathematical symbols +History of mathematics – Timeline of mathematics – Mathematicians – Fields Medal – Abel Prize – Millennium Prize Problems (Clay Math Prize) – International Mathematical Union – Mathematics competitions – Lateral thinking – Mathematics and gender +Awards in mathematics. +There is no Nobel Prize in mathematics. Mathematicians can receive the Abel Prize and the Fields Medal for important works. +The Clay Mathematics Institute has said it will give one million dollars to anyone who solves one of the Millennium Prize Problems. +Mathematical tools. +There are many tools used to do math or find answers to math problems. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Maui.txt b/.github/workflows/data/simplewiki-500/Maui.txt new file mode 100644 index 000000000..02a76f426 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Maui.txt @@ -0,0 +1,8 @@ +Maui is the second largest of the Hawaiian Islands, in the United States. +It has a population of just over 150,000 and is 727 square miles (1883 km²) in size. Maui is part of Maui County, Hawaii. The larger (or better known) towns include Kahului, Wailuku, Lahaina, Hana, and Wailea. Main industries are agriculture and tourism. +Maui was named for the demi-god Maui. In Hawaiian legend, he raised all the islands from the sea. Maui is also known as the "Valley Isle" for the large fertile isthmus (narrow land connection) between two volcanoes. +Geography. +Maui is a volcanic doublet: an island formed from two volcanic mountains that are joined. The older volcano, Mauna Kahalawai, is much older and has been very worn down. In common talk it is called the West Maui Mountain. The larger volcano, Haleakala, rises above 10,000 feet (3,050 m). The last eruption of Haleakala happened over 200 years ago, and this lava flow can be seen between Ahihi Bay and La Perouse Bay on the southeast shore. +Places. +Other places on Maui popular with visitors include: +Golf courses on Maui include: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/May.txt b/.github/workflows/data/simplewiki-500/May.txt new file mode 100644 index 000000000..901d70790 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/May.txt @@ -0,0 +1,13 @@ +May is the fifth month of the year in the Julian and Gregorian calendars, coming between April and June. It has 31 days. The month of May might have been named for the Roman goddess Maia, or more likely the Roman goddess of fertility Bona Dea, whose festival was held in May. +May never begins or ends on the same day of the week as any other month. +May's flower is the Lily of the Valley. Its birthstone is the emerald. The meaning of the emerald is success in love. +The Month. +May comes between April and June and is the fifth month of the year in the Gregorian calendar. It is one of the seven months to have 31 days. In the older Roman calendar, May was the third month of the year. It is a spring month in the Northern Hemisphere and an autumn month in the Southern Hemisphere. In each hemisphere, it is the seasonal equivalent of November in the other. May is likely to have been named after the Roman goddess Maia, though there is a theory that May might have its name from the Latin "Maiores", meaning "Seniors". The same theory suggests that June would then be named from "Iuniores", meaning "Juniors". +No other month of any year either begins or ends on the same day of the week as May: this month is the only one that has both of these properties. +In common years, May starts on the same day of the week as August of the previous year, and in leap years, March and November of the previous year. In common years, May finishes on the same day of the week as August and November of the previous year, and in leap years, March and June of the previous year. In leap years and years immediately after that, May starts on the same day of the week as February of the previous year. +Every year, May both starts and finishes on the same day of the week as January of the following year, as each other's first and last days are exactly 35 weeks (245 days) apart. In years immediately before common years, May starts on the same day of the week as October of the following year, and in years immediately before leap years, April and July of the following year. In years immediately before common years, May finishes on the same day of the week as February and October of the following year, and in years immediately before leap years, July of the following year. +In the Northern Hemisphere, May is in late Spring, and May Day on May 1 and Walpurgis Night, during the night of April 30 to May 1, are symbolic of the transition from winter to summer. In the Southern Hemisphere, it is in autumn, and comes just before the Antarctic winter, when emperor penguins breed there. +Events in May. +Special devotions to the Virgin Mary take place in May. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/MediaWiki.txt b/.github/workflows/data/simplewiki-500/MediaWiki.txt new file mode 100644 index 000000000..8a408dacd --- /dev/null +++ b/.github/workflows/data/simplewiki-500/MediaWiki.txt @@ -0,0 +1,25 @@ +MediaWiki is the name of the software that runs all of the Wikimedia projects and . MediaWiki was released in 2003. It is a free server-based software which is licensed under the GNU General Public License (GPL). This means it is free content, or open source. +MediaWiki is designed to be run on a large web server farm for a website that gets millions of hits per day. MediaWiki is a very powerful, scalable software and a feature-rich wiki implementation. It uses PHP to process and display data stored in its MySQL database. Pages use MediaWiki's Wikitext format, so that users without knowledge of XHTML or CSS can edit them easily. +When a user submits an edit to a page, MediaWiki writes it to the database, but without deleting the previous versions of the page, thus allowing easy reverts in case of vandalism or spamming. MediaWiki can manage image and multimedia files, too, which are stored in the filesystem. For large wikis with lots of users, MediaWiki supports caching and can be easily coupled with Squid proxy server software. +All Wikimedia projects run on MediaWiki version . +Usage. +Because MediaWiki is flexible, many websites that want people to contribute information use MediaWiki rather than other types of wiki software. Those operated by Fandom are among them. +There are also some websites that use MediaWiki as a content management system. +Extensions. +In MediaWiki, a system administrator can choose to install extensions which are provided on the main MediaWiki website. Some are from the MediaWiki developers, while others are from programmers from all around the world. +Most extensions can be download from Wikimedia's Subversion repository. However, there are some other extensions that other people host themselves. +Some extensions had been added to the main software along the development of MediaWiki. For example, the extension is an extension to promote a user into an administrator or a bureaucrat. +There were a total of 2124 extensions as of October 4, 2013. +Namespaces. +In the default installation of MediaWiki, the software has 17 namespaces(18 actually, but one does not have a namespace), namely: +Additional namespaces can be added using the from the installation of MediaWiki. +Bugs. +As MediaWiki is a complex software, there would always be bugs in the software, especially for new extensions. Therefore, Wikimedia has created a Bugzilla website for people who see a bug to tell the developers of MediaWiki. +Some extensions of MediaWiki use the , while some just use the talk pages of the extension page. +Skins. +Users can change MediaWiki's appearance. They may use one of the several "skins". At different times different skins have been default. For example, Wikipedia once used Monobook before adopting the new Vector skin in version 1.16. +A survey done by Wikimedia showed that more people prefer the Vector skin. +More information. +"More information about the software:" +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Mediawiki.txt b/.github/workflows/data/simplewiki-500/Mediawiki.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Mercury (planet).txt b/.github/workflows/data/simplewiki-500/Mercury (planet).txt new file mode 100644 index 000000000..308aa5cfe --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Mercury (planet).txt @@ -0,0 +1,29 @@ +Mercury is the smallest planet in the Solar System. It is the closest planet to the sun. It makes one trip around the Sun once every 87.969 days. +Mercury is bright when we can see it from Earth. It has an apparent magnitude ranging from −2.0 to 5.5. It cannot be seen easily because it is usually too close to the Sun. Because of this, Mercury can only be seen in the morning or evening twilight or when there is a solar eclipse. +Less is known about Mercury than about other planets of our Solar System. Even with telescopes only a small, bright crescent can be seen. It is also hard to put a satellite in orbit around it. Two spacecraft have visited Mercury. The first one was Mariner 10. It only made a map of about 45% of the Mercury's surface from 1974 to 1975. The second is the MESSENGER spacecraft, which finished mapping Mercury in March 2013. +Mercury looks like Earth's Moon. It has many craters and smooth plains. It has no moons and little atmosphere as we know it. However, Mercury does have an extremely thin atmosphere, known as an exosphere. Mercury has a large iron core. Because of this Mercury has a magnetic field about 1% as strong as that of the Earth. It is a very dense planet because its core is large. +Temperature at the surface can be anywhere from about 90 to 700 K (−183 °C to 427 °C, −297 °F to 801 °F), with the subsolar point being the hottest and the bottoms of craters near the poles being the coldest. +Known sightings of Mercury date back to at least the first millennium BC. Before the 4th century BC, Greek astronomers thought that Mercury was two different objects: The one that they were only able at sunrise, they called Apollo; the other one that they were only able to see at sunset, they called Hermes. The English name for the planet is from the Romans, who named it after the Roman god Mercury. The symbol for Mercury is based on Hermes' staff. +Even though Mercury is the closest planet to the Sun, it is not the hottest. This is because it has no greenhouse effect. The heat that the Sun gives it, quickly escapes into space. The hottest planet is Venus. +Inside Mercury. +Mercury is one of four inner planets in the Solar System. It is a terrestrial planet like Earth. It is the smallest planet in the Solar System. It has a radius of . Mercury is even smaller than some of the largest moons in the solar system, such as Ganymede, the largest moon of Jupiter and Titan, the largest moon of Saturn. However, it has in 2.2 times greater mass than Ganymede and around 2 times heavier than Titan. Mercury is made of about 70% metallic and 30% silicate material. Mercury has the second highest density in the Solar System at 5.427 g/cm³, only a little bit less than Earth’s. +Surface of Mercury. +Mercury's surface looks like the surface of the Moon. It has plains that look like mares and has lots of craters. Mercury was hit by a lot of comets and asteroids 4.6 billion years ago. Mercury was also hit during a period called the Late Heavy Bombardment. Mercury has many craters because its atmosphere is too faint to slow objects down. Images from "MESSENGER" have shown that Mercury may have shield volcanoes. +The surface temperature of Mercury ranges from 100 to 700 K (−173 to 427 °C; −280 to 800 °F) at the most extreme places. Even though the temperature at the surface of Mercury in the day is very high, observations suggest that there is frozen water on Mercury. +Mercury is too small and hot for its gravity to keep any thick atmosphere for a long time. It does have a thin exosphere that is made up of hydrogen, helium, oxygen, sodium, calcium, potassium. This exosphere is blown away and replenished from lots of sources. Hydrogen and helium may come from the solar wind. Radioactive decay of elements inside the crust of Mercury is another source of helium, and also sodium and potassium. +Orbit and rotation. +Mercury has the most eccentric orbit of all the planets in the Solar System. It has an eccentricity of 0.21. It ranges from 46,000,000 to 70,000,000 km (29,000,000 to 43,000,000 mi) away from the Sun. Mercury takes 87.969 Earth days to go around the Sun. Mercury's axial tilt is 0.027 degrees. +In the future, because Mercury's orbit's is very eccentric and Jupiter's huge gravity, its orbit may become unstable and the following things may happen: +List of satellites sent to Mercury. +Few man-made satellites have been sent to Mercury to study it. They are: +"Mariner 10". +The first spacecraft to visit Mercury was NASA's Mariner 10. It stayed in Mercury's orbit from 1974 to 1975. Mariner 10 took the first close-up pictures of Mercury's surface. It showed many features, such as the craters. Unfortunately, the same side of Mercury was day each time Mariner 10 flew close to Mercury. This made observing of both sides of Mercury impossible. In the end, less than 45% of the Mercury's surface was mapped. +Mariner 10 came close to Mercury three times. At the first time, it found a magnetic field, which surprised planetary geologists because Mercury's rotation was too slow to create a magnetic field. The second time was mainly used to take pictures of Mercury's surface. At the third time, it got more information about the magnetic field. It showed that the Mercury's magnetic field is like the Earth's magnetic field. +On March 24, 1975, eight days after its last close fly by, Mariner 10 ran out of fuel. Because its orbit could no longer be controlled, mission controllers shut down the probe . Mariner 10 is thought to still be orbiting the Sun. +"MESSENGER". +The second satellite to visit Mercury is NASA's MESSENGER. It stands for MErcury Surface, Space ENvironment, GEochemistry, and Ranging. It was launched on August 3, 2004. It made a fly-by of Earth in August 2005. It made another fly-by of Venus in October 2006. It made its first fly-by of Mercury happened on January 14, 2008, a second on October 6, 2008, and a third on September 29, 2009. It made a map of most of Mercury that "Mariner 10" didn't map. The first image of Mercury orbiting the Sun was gotten on March 29, 2011. +MESSENGER was made to study Mercury's high density, the history of Mercury's geology, its magnetic field, the structure of its core, if it has ice at its poles, and where its thin atmosphere comes from. "MESSENGER" crashed into Mercury's surface on April 30, 2015. +"Bepicolombo". +The European Space Agency and the Japanese Space Agency made and launched a spacecraft called "BepiColombo." It will orbit Mercury with two probes: one to map the planet and the other to study its magnetosphere. It was launched on October 20, 2018. "BepiColombo" is expected to reach Mercury in 2025. It will release the probe that will study the magnetosphere into an elliptical orbit. It will then release the probe the will make a map of Mercury into a circular orbit. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Metabolism.txt b/.github/workflows/data/simplewiki-500/Metabolism.txt new file mode 100644 index 000000000..06b9f3a37 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Metabolism.txt @@ -0,0 +1,8 @@ +Metabolism is the chemical reactions which keep us alive. It happens in the cells of living organisms. +The chemical reactions are catalyzed by enzymes. Metabolism allows organisms to grow, reproduce, maintain their structures, and respond to their environments. The word ‘metabolism’ can also refer to digestion and the transport of substances into and between different cells. +Metabolism is usually divided into two categories: +The chemical reactions of metabolism are organized into metabolic pathways, or cycles, like the Krebs cycle. One chemical is transformed through a series of steps into another chemical by a series of enzymes. +The metabolic system of an organism decides which substances it finds nutritious and which poisonous. For example, some prokaryotes use hydrogen sulfide as a nutrient, yet this gas is poisonous to animals. The speed of metabolism, called the metabolic rate, influences how much food an organism will need, and how it is able to get that food. +A striking feature of metabolism is the similarity of the basic metabolic pathways and components between even vastly different species. For example, the set of carboxylic acids that are best known as the intermediates in the citric acid cycle are present in all known organisms, being found in species as diverse as the unicellular bacterium "Escherichia coli" and huge multicellular organisms like elephants. These striking similarities in metabolic pathways are likely due to their early appearance in the evolution of life, and kept because of their efficiency. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Metaphor.txt b/.github/workflows/data/simplewiki-500/Metaphor.txt new file mode 100644 index 000000000..8d6c2ce86 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Metaphor.txt @@ -0,0 +1,37 @@ +Metaphor is a term for a figure of speech. It does not use a word in its basic literal sense. Instead, it uses a word in a kind of comparison. We run, and we also say rivers run. We may run into trouble, especially if we run up a bill at the bar. +So a metaphor uses words to make a picture in our mind. It takes a word from its original context, and uses it in another. +"I beat him with a stick" = literal meaning of 'beat'. +"I beat him in an argument" = metaphorical meaning of 'beat'. +Metaphors are an essential part of language: it is not possible to speak or write without them. A simple example is the word "run". This has a basic meaning of "moving quickly" or "go with quick steps on alternate feet, never having both feet on the ground at the same time". The "Concise Oxford Dictionary" then gives +34 other uses as a verb; 21 uses as a noun; about 50 uses in short phrases. All of these are metaphors, although we do not usually notice this. +We use metaphors to make "indirect" comparisons, but without using 'like' or 'as' – because that would be a simile. A simile is a "direct" comparison: "Jane is like a child". +A metaphor very often uses the verb 'to be': "love "is" war", for example, not "love "is like" war" (that is a simile). +Poetry includes much metaphor, usually more than prose. +Spam is an example that any email user knows about – this word was originally a metaphor, from 'Spam', a type of canned meat. Servers putting unwanted email into somebody's inbox was similar to waiters putting unwanted Spam into food. This was originally suggested by a Monty Python scene. When we use a metaphor very often and we forget the old meaning, or forget that the two meanings are connected, this is a 'dead metaphor'. +Originally "metaphor" was a Greek word for 'transfer'. It came from "meta" ('beyond') and "pherein" ('carry'). So the word "metaphor" in English was a metaphor, too. Today in Greek, "metaphor" is a trolley (a thing that is pushed for carrying shopping or bags). +Simple metaphors. +Description. +A simple metaphor has a single link between the subject and the metaphoric vehicle. The vehicle thus has a single meaning which is transferred directly to the subject. +Examples. +In the simple metaphor, the effort to understand what the author or speaker intends is relatively low, and hence it may easily be used with a wider and less sophisticated audience. +Complex metaphors. +Description. +A complex metaphor happens where a simple metaphor is based on a secondary metaphoric element. For example, using a metaphor of 'light' for 'understanding' may be complexified by saying 'throwing light' rather than 'shining light'. 'Throwing' is an extra metaphor for how light arrives. +Examples. +That lends weight to the argument.<br>They stood alone, frozen statues on the plain.<br>The ball happily danced into the net. +"But at my back I always hear <br> Time's wingèd chariot hurrying near <br>And yonder all before us lie <br>Deserts of vast eternity."<br> +From 17th century English poet Andrew Marvell's poem "To His Coy Mistress". +Compound metaphors. +Description. +A compound metaphor is one where there are multiple parts in the metaphor that are used to snag the listener. These parts may be enhancement words such as adverbs, adjectives, etc. +Each part in the compound metaphor may be used to signify an additional item of meaning. +"Has flung the stone that puts the stars to flight". +"A tattered coat upon a stick..." +Examples. +Compound metaphors are like a multiple punch, hitting the listener repeatedly with metaphoric elements. Where the complex metaphor uses stacked layers to enhance the metaphor, the compound metaphor uses sequential words. The compound metaphor is also known as a loose metaphor. +Live and dead metaphors. +A live metaphor is one which a reader notices. A dead metaphor is one no-one notices because it has become so common in the language. +Examples. +Two people walk off a tennis court. Someone asks the loser: "What happened?". +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Metre.txt b/.github/workflows/data/simplewiki-500/Metre.txt new file mode 100644 index 000000000..f6df84749 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Metre.txt @@ -0,0 +1,4 @@ +A metre (US spelling, "meter") is the basic unit of length in the SI measurement system. The symbol for the metre is m. The first meaning (in the French Revolution) was one ten-millionth of the distance between the Earth's equator and the North Pole along the Paris meridian. The metre is now defined as the distance light travels in a vacuum in 1/299,792,458 of a second. +In the imperial system of measurement, one yard is 0.9144 metres (after international agreement in 1959), so a metre is very near to 39.37 inches: about 3.281 feet, or 1.0936 yards. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Microscope.txt b/.github/workflows/data/simplewiki-500/Microscope.txt new file mode 100644 index 000000000..4de19c00a --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Microscope.txt @@ -0,0 +1,9 @@ +A microscope is a scientific instrument. It makes small objects look larger. This lets people see the small things. People who use microscopes frequently in their jobs include doctors and scientists. Students in science classes such as biology also use microscopes to study small things. +The earliest microscopes had only one lens and are called "simple microscopes". "Compound microscopes" have at least two lenses. In a compound microscope, the lens closer to the eye is called the "eyepiece". The lens at the other end is called the "objective". The lenses multiply up, so a 10x eyepiece and a 40x objective together give 400x magnification. +Microscopes make things seem larger than they are, to about 1000 times larger. This is much stronger than a magnifying glass which works as a simple microscope. +Types of microscopes. +There are many types of microscopes. The most common kind of microscope is the compound light microscope. In a compound light microscope, the object is illuminated: light is thrown on it. The user looks at the image formed by the object. Light passes through two lenses and makes the image bigger. +The second most common kind are a few kinds of electron microscopes. Transmission electron microscopes (TEMs) fire cathode rays into the object being looked at. This carries information about how the object looks into a magnetic "lens". The image is then magnified onto a television screen. Scanning electron microscopes also fire electrons at the object, but in a single beam. These lose their power when they strike the object, and the loss of power results in something else being generated—usually an X-ray. This is sensed and magnified onto a screen. Scanning tunneling microscopes were invented in 1984. +A fluorescence microscope is a special kind of light microscope. In 2014, the Nobel Prize in Chemistry was awarded to Eric Betzig, William Moerner, and Stefan Hell for "the development of super-resolved fluorescence microscopy". The citation says it brings "optical microscopy into the nanodimension". +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Microsoft.txt b/.github/workflows/data/simplewiki-500/Microsoft.txt new file mode 100644 index 000000000..04b75389d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Microsoft.txt @@ -0,0 +1,10 @@ +Microsoft Corporation is an American company that makes computer software and video games. Bill Gates and Paul Allen started the company in 1975. Microsoft makes Microsoft Windows, Microsoft Office (including Microsoft Word), Edge, MSN and Xbox, among others. Most Microsoft programs cannot be downloaded for free–people have to buy them in a shop or online. Some products (like the Windows operating system) are often already installed when people buy a new computer. +Services. +Although Microsoft is best known for its software products, the company also runs a number of web services. They include: +Hardware. +Microsoft has also made a wide variety of hardware over the years. Among them are computer accessories like mice, keyboards, and webcams. +The company also makes and promotes a video game console, Xbox. It lets people play video games on their televisions. The games were first stored on CDs, but many recent games are downloaded from the Internet. There have been three generations of Xbox. The first generation came out in 2001 and was just called Xbox, while the second, the Xbox 360, was released in 2005. The third model is the Xbox One in May 2013. In 2020, Microsoft introduced Xbox Series X and Xbox Series S. Beginning with the Xbox 360, Microsoft introduced Xbox Live, which lets people play games online against other people anywhere in the world. The Xbox has become very popular and more than 150 million units have been sold worldwide. Because of this, Microsoft is considered one of the three big companies that make video game consoles, along with Nintendo and Sony. +Most recently, Microsoft has also started to make its own PCs, called the Surface. The first model was announced in 2012 and the Surface line now includes tablets that use either ARM or Intel processors, two models of laptops called the Surface Book and Surface Laptop, an all-in-one PC called the Surface Studio, and an interactive whiteboard, the Surface Hub. +In 2014, Microsoft bought the mobile phone division of Nokia, a Finnish company, which then became Microsoft Mobile. The sale included the Lumia family of smartphones, which use Microsoft's own Windows Phone platform. From 2014 to 2016, Microsoft Mobile also made feature phones with the Nokia brand. Then the feature phone business was sold to HMD global, which continues to produce both feature phones and Android smartphones under license from Nokia. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Mile.txt b/.github/workflows/data/simplewiki-500/Mile.txt new file mode 100644 index 000000000..45e1609cc --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Mile.txt @@ -0,0 +1,18 @@ +A mile is a unit of length. There are many different kinds of mile but "mile" on its own usually means the statute mile. +Statute mile. +In the US and the UK the word "mile" usually means the statute mile. +Nautical mile. +The nautical mile is used for sea or air travel. +The nautical mile was originally defined as one minute of arc along a line of longitude of the Earth. There are 60 minutes of arc in one degree or arc (60' = 1°). So there were 10,800 nautical miles from the North Pole to the South Pole. +Now the nautical mile is defined as 1,852 metres. +The speed of a ship that travels one nautical mile in one hour is called one knot +Roman mile. +The mile was first used by the Romans. It comes from the Latin phrase "mille passus" (plural: "milia passuum"). This means "one thousand paces". A pace is the distance each foot moves when taking one step. +“the Roman pace, measured from the heel of one foot to the heel of the same foot in the next stride” +Other miles. +Different miles have been used throughout history in various parts of the world. In Norway and Sweden, for example, a mil is a unit of length which is equal to 10 kilometres. +Idioms. +Even in English-speaking countries that use the metric system (for example, Australia, Canada, and New Zealand), the mile is still used in many idioms. These include: +References. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Milky Way.txt b/.github/workflows/data/simplewiki-500/Milky Way.txt new file mode 100644 index 000000000..f4815c9ae --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Milky Way.txt @@ -0,0 +1,22 @@ +The Milky Way is our home galaxy. It contains around 400 billion stars, including our Sun. +The Milky Way has a diameter of as measured using the D25isophote, and is a barred spiral galaxy. The idea that the Milky Way is made of stars goes back to the Ancient Greek philosopher Democritus. +The Milky Way has three main parts: a "disk", where the Solar System is, a "bulge" at the core, and an outer "halo" all around it. Although the word "disk" suggests it is flat, the Milky Way is actually not quite flat. It is slightly warped and twisted. +This galaxy belongs to the Local Group of three large galaxies and over 50 smaller galaxies. The Milky Way is one of the largest galaxies in the group, second to the Andromeda Galaxy. Its closest neighbour is the Canis Major Dwarf Galaxy, which is about 25,000 light years away from the Earth. The Andromeda Galaxy is moving towards the Milky Way Galaxy and will collide with it in about 3.75 billion years. The Andromeda Galaxy moves with a speed of about 1,800 kilometres per minute. +Origin: "Two of the Milky Way's earliest building blocks" are known; Shakti and Shiva seem "to be (left-overs or) remnants of two galaxies that (were joined or) merged ... with an early version of the Milky Way"; That seems to have happened "between 12 and 13 billion years ago";. +Size. +The stellar disk of the Milky Way Galaxy is about 200,000 light-years (9×1017 km) in diameter, and is considered to be, on average, about 1000 light years thick. +It is estimated to contain at least 100 billion stars, and possibly up to 400 billion stars. The figure depends on the number of very low-mass, or dwarf stars, which are hard to detect, especially more than 300 light years from our sun. Therefore, present estimates of the total number are uncertain. This can be compared to the one trillion (1012) stars of the neighbouring Andromeda Galaxy. +The stellar disc of the Milky Way does not have a sharp edge, a radius beyond which there are no stars. Rather, the number of stars drops smoothly with distance from the centre of the Galaxy. Beyond a radius of about 40,000 light years, the number of stars drops much faster, for reasons that are not understood. +Extending beyond the stellar disk is a much thicker disk of gas. Observations indicate that the gaseous disk of the Milky Way has a thickness of around 12000 light years–twice the previously accepted value. +At 220 kilometers per second it takes the Solar System about 240 million years to complete one orbit of the Galaxy (a galactic year). +The Galactic halo extends outward but is limited in size by the orbits of two Milky Way satellites, the Large and the Small Magellanic Clouds, whose closest approach is at about 180,000 light years. At this distance or beyond, the orbits of most halo objects would be disrupted by the Magellanic Clouds, and the objects would likely be ejected from the vicinity of the Milky Way. +As a guide to the relative physical scale of the Milky Way, if the Solar System out to the orbit of Pluto were reduced to the size of a US quarter (about an inch or 25 mm in diameter), the Milky Way would have a diameter of 2,000 kilometers. +Galactic center. +The galactic disc, which bulges outward at the galactic center, has a diameter of 170–200,000 light years. +The exact distance from the Sun to the galactic center is debated. The latest estimates give distances to the Galactic center of 25–28,000 light years. +The movement of material around the galactic center shows that it has a compact object of very large mass. The intense radio source named Sagittarius A*, thought to mark the center of the Milky Way, is now confirmed to be a supermassive black hole. Most galaxies are believed to have a supermassive black hole at their center. +Most galaxies have a central bar-shaped structure composed of stars. The nature of the Milky Way's bar is actively debated, with estimates for its half-length and orientation spanning from 3,300 to 16,000 light years (short or a long bar) and 10–50 degrees. Viewed from the Andromeda Galaxy, it would be the brightest feature of our own galaxy. +Mythology. +In Greek mythology, Zeus places his son (the baby Heracles) whose mother was a mortal woman on Hera's breast while she is sleeping so that the baby will drink her divine milk and become immortal. However, Hera wakes up while she is breastfeeding the baby and realizes she is nursing a baby she does not know. According to Greek mythology, she then pushes the baby away and a stream of her milk sprays the night sky, making a faint band of light known as the Milky Way. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Models of nature.txt b/.github/workflows/data/simplewiki-500/Models of nature.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Models of our universe.txt b/.github/workflows/data/simplewiki-500/Models of our universe.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Molecule.txt b/.github/workflows/data/simplewiki-500/Molecule.txt new file mode 100644 index 000000000..454ccc996 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Molecule.txt @@ -0,0 +1,10 @@ +A molecule is the smallest amount of a chemical substance that can exist. If a molecule were split into smaller pieces, it would be a different substance. +Molecules are made up of atoms that are stuck together in a particular shape or form. Not all combinations of atoms are equally possible; atoms make certain shapes in preference to others. Also, they have different valency. For example, oxygen atoms always have two bonds with other atoms, carbon atoms always have four bonds with other atoms, and nitrogen atoms always have three bonds with other atoms. +In the kinetic theory of gases, the term "molecule" is often used for any gaseous particle regardless of its composition. According to this definition, noble gas atoms are considered molecules as they are in fact monoatomic molecules. +In gases like air, the molecules are just flying around. In liquids like water, the molecules are stuck together but they can still move. In solids like sugar, the molecules can only vibrate. In the fourth state of matter known as plasma, the atoms are ionized and cannot form molecules. +With a molecular formula, you can write down the numbers of all atoms in a molecule. For example, the molecular formula of glucose is C6H12O6. That means that one molecule of glucose is made up of six carbon atoms, twelve hydrogen atoms and six oxygen atoms. +Bonding. +For a molecule to exist, atoms have to stick together. This happens when two atoms share electrons. Instead of circling just one atom, the electron now circles around two. This is called a covalent bond. Sometimes, more than one electron is shared. The more electrons are shared, the stronger the bond gets and the stronger the atoms stick together. +Bonds can also be broken apart. Since most bonds require energy to form, they also give off energy when they are broken. But before most bonds break, the molecule has to be heated. Then the atoms start to move, and when they move too much, the bond breaks. Molecules that require less energy to break than they give off when broken are called fuels. For example, a candle will just sit there and nothing happens. But when you use a match to light it, it will burn for a long time. The match brings the energy to break the first bonds, which release enough energy to break the bonds below them, until the candle has burned down. There are also ionic bonds. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Moloka'i.txt b/.github/workflows/data/simplewiki-500/Moloka'i.txt new file mode 100644 index 000000000..9a3e7d187 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Moloka'i.txt @@ -0,0 +1,5 @@ +Molokaʻi (sometimes mistakenly called Molokai) is the fifth largest island in the U.S. Hawaiian Islands. The island is 38 miles long and 10 miles across. Its land area is 261 square miles. The highest mountain is named Kamakou, and it is 4,970 feet (1,514 meters) high. +Molokaʻi has many local indigenous names including Molokaʻi 'Aina Momona (land of abundance), Molokaʻi Pule O'o (land of powerful prayer), and Molokaʻi Nui A Hina (of the goddess Hina). It is one of the least developed of the Hawaiian islands. +The only big town is named Kaunakakai, which is also the main or chief port on the island. The airport is in Central Molokai. Also on the island is Kalaupapa, which is a place for people who have a disease called leprosy. +Molokai has many Hawaiian fish ponds along its south shore. Many of these have been cleaned and fixed. + "This about a  can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Money.txt b/.github/workflows/data/simplewiki-500/Money.txt new file mode 100644 index 000000000..020a59452 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Money.txt @@ -0,0 +1,17 @@ +Money, also sometimes called currency, can be defined as anything that people use go and to buy goods and services. Money is what many people receive for selling their own things or services. +There are lots of different kinds of money in the world. Most countries have their own kind of money, such as the United States dollar or the British pound. +History. +The idea of bartering things is very old. A long time ago, people did not buy or sell with money. Instead, they traded one thing for another to get what they wanted or needed. One person who owned many cows could trade with another person who had a lot of wheat. Each would trade a little of what he had with the other. This would support the people on his farm. Other things that were easier to carry around than cows also came to be held as valuable. This gave rise to trade items such as jewelry and spices. +When people changed from trading in things like, for example, cows and wheat to using money instead, they needed things that would last a long time. They must still have a known value, and could be carried around. The first country in the world to make metal coins was called Lydia. These first appeared during the 7th century BC, in the western part of what is now Turkey. The Lydian coins were made of a weighed amount of precious metal and were stamped with a picture of a lion. This idea soon spread to Greece, the rest of the Mediterranean, and the rest of the world. Coins were all made to the same size and shape. In some parts of the world, different things have been used as money, like clam shells or blocks of salt. +Besides being easier to carry than cows, using money had many other advantages. Money is "easier to divide" than many trade goods. If someone own cows, and wants to trade for only "half a cow's worth" of wheat, he probably does not want to cut his cow in half. But if he sells his cow for money, and buys wheat with money, he can get exactly the amount he wants. +Cows die, and wheat rots. But money "lasts longer" than most trade goods. If someone sells a cow for money, he can save that money away until he needs it. He can always leave it to his children when he dies. It can last a very long time, and he can use it at any time. +Not every cow is as good as another cow. Some cows are sick and old, and others are healthy and young. Some wheat is good and other wheat is moldy or stale. So if a person trades cows for wheat, he might have a hard time arguing over how much wheat each cow is worth. However, money is "standard". That means one dollar is worth the same as another dollar. It is easier to add up and count money, than to add up the value of different cows or amounts of wheat. +Later, after coins had been used for hundreds of years, paper money started out as a promise to pay in coin, much like an "I.O.U." note. The first true paper money was used in China in the 10th century AD. Paper money was also printed in Sweden between 1660 and 1664. Both times, it did not work well, and had to be stopped because the banks kept running out of coins to pay on the notes. Massachusetts Bay Colony printed paper money in the 1690s. This time, the use became more common. +Today, most of what people think of as money is not even things you can hold. It is numbers in bank accounts, saved in computer memories. Many people still feel more comfortable using coins and paper, and do not totally trust using electronic money on a computer memory. +Kinds. +Many types of money have been used at different times in history. These are: +"Commodity money" can be used for other purposes besides serving as a medium of exchange. We say it possesses intrinsic value, because it is useful or valuable by itself. Some examples of commodity money are cattle, silk, gold and silver. Convertible paper money is money that is convertible into gold and silver. Gold and Silver certificates are convertible paper money as they can be fully convertible into gold and silver. +Inconvertible money is money that cannot be converted into gold and silver. Notes and coins are inconvertible money. They are inconvertible and are declared by the government money. Such fiat money is a country's legal tender. Today, notes and coins are the currencies used in bank deposits. +Types of bank deposits: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Montreal.txt b/.github/workflows/data/simplewiki-500/Montreal.txt new file mode 100644 index 000000000..2a41163d8 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Montreal.txt @@ -0,0 +1,26 @@ +Montreal (, spelled "Montréal" in French) is a city in the country of Canada. It is the largest city in the province of Quebec and the second-largest city in Canada. It is the second-largest French-speaking city in the world after Paris. +Montreal is built on an island sitting in the Saint Lawrence River. More than three million people live in the Greater Montreal metropolitan area. At the centre of Montreal is a mountain called Mount Royal. The suburb of Westmount is a very rich suburb on the island of Montreal. +Most of the people who live in Montreal speak French. +History. +The name 'Montréal' comes from "Mont Royal", which means 'Royal Mountain' in French. It was originally called "Ville-Marie", or City of Mary. +Montreal has always played a very important part in the history and development of Canada. It continues to be a large Canadian industrial and commercial centre, as well as a major seaport (via the Saint Lawrence River). It once was the largest city in Canada, before Toronto grew to be larger. +Tourists visit Montreal for its historical and cultural interest. One can visit the Old City in horse-drawn carriages, where many buildings from the earliest years stand and remind of the way of life that started in the New World, when Montreal was just a fur trading outpost belonging to France over 350 years ago. +Geography. +Montreal is in the southwest of Quebec, 530 kilometres north of New York City. The city itself is located on an island, the Island of Montreal. Near the downtown area, there is a hill called "Mount Royal" ("Mont Royal" in French). +Economy. +Montreal's economy is the second largest in Canada. The city's port is the biggest inland port (a port that is not on the sea) in the world. Many large corporations have their main offices in Montreal. It also hosts many international organizations like ICAO, the World Anti-Doping Agency, and IATA. The city is home to four major Universities, welcoming students from all parts of Canada and from all over the world. +Montreal is also known for its cultural production sector. Because the city has many different buildings, movies are easy to film there. The circus troupe (group) "Cirque du Soleil" is from Montreal. The city is also known for its festivals, like the Montreal Jazz Festival and "Just For Laughs". +Some video game companies like Ubisoft also have studios in Montreal. +Culture. +Montreal is the cultural capital of Quebec and French-speaking Canada. +Montreal has many beautiful churches (Montreal is referred to locally as 'the city of a hundred churches'), including the largest church in Canada, and also many important art, history, and science museums. You can also visit the location of the 1967 World's Fair, where today, as well as many other attractions, one will find the Circuit Gilles Villeneuve Formula One automobile race course. Also of interest is the site where the 1976 Summer Olympic Games were held, and the modern architecture of the Olympic stadium (the 'Big O') and its tall inclined observation tower (the highest inclined tower in the world); now a landmark of Montreal. +Ice hockey was invented in Montreal. A lot of Montrealers are interested in the sport, and the city is home to its own ice hockey team called the Montreal Canadiens who play in the National Hockey League (NHL). +Media. +CKAC 730 +CBFT SRC +CFTM TVA +CIVM Tele-Quebec +CFJP TQS +CFTU Canal Savoir +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Moral reasoning.txt b/.github/workflows/data/simplewiki-500/Moral reasoning.txt new file mode 100644 index 000000000..bbd193b1f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Moral reasoning.txt @@ -0,0 +1,2 @@ +Moral reasoning is a topic studied in psychology and in moral philosophy. It studies how people think about moral issues, problems, and questions. Psychologists who have studied it include Lawrence Kohlberg and Elliot Turiel. Kohlberg said that moral understanding develops in three main stages as a person gets older, but Turiel said that there are three domains of moral understanding that develop at the same time as a person gets older. +Moral philosophy, or ethics, is a major branch of philosophy. It is the study of value or quality. It covers the analysis and use of concepts such as right, wrong, good, evil, and responsibility. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Mosque.txt b/.github/workflows/data/simplewiki-500/Mosque.txt new file mode 100644 index 000000000..c2b9636b9 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Mosque.txt @@ -0,0 +1,87 @@ +A mosque is a place where Muslims worship. The word "mosque" comes from the Arabic word "masjid". A larger, 'collective', mosque is called a "masjid jāmi". Larger mosques offer more services to their community. +For many Muslim people, a mosque is more than a place of worship. Muslims worship, study and discuss Islam, and do many other things in a mosque and its compounds. In the United Kingdom, many mosques are used as community centres. They are also used to teach about Islam. Religious festivals and gatherings are held in mosques. Weddings are one example. Mosques have rules to control what people do inside. One of these is that it is disrespectful to disturb another person who is worshipping. +Many mosques are known for their Islamic architecture. The earliest mosques, opened in 7th century were open-air spaces. They are the "Quba Mosque" and "Masjid al-Nabawi". Later Mosques were buildings that were specially designed. Nowadays, mosques are in every continent, except Antarctica. +Architecture. +Many mosques are famous works of architecture. They are often built in a style that has stayed the same for many centuries. Many mosques have prayer halls, domes, and minarets. They may also have a courtyard. Mosques are often built with patterned walls. +Mosques were first built on the Arabian Peninsula. The Muslims who built them used old architectural styles. They also combined these styles in new ways. A major influence was the palaces built during the Parthian and Sassanid dynasties of Persia. The "Sarvestan palace" from the Sassanid era is a good example of this. It has an arched entrance and a central dome. These features already existed in Persia before Islam. +After the Arab invasion of Persia, the new style, with its Sassanid influence, was used for the new Islamic world. Many forms of mosques have developed in different regions of the Islamic world. Important mosque types include the early Abbasid mosques, T-type mosques, and the central-dome mosques of Anatolia. In the 20th century, many countries that grew rich from oil paid for the building of many new mosques. The rulers of these countries often hired leading architects to design these mosques. They included non-Muslims. +Arab plan. +Many early mosques have a square or rectangular plan. They also have a prayer hall and an enclosed courtyard. This is known as "Arab-plan". The first mosques of this type were built during the Umayyad Dynasty. +The flat roof of the prayer hall was supported by columns. Many rows of columns were needed to support such roofs; this is called "hypostyle architecture". One of the most famous hypostyle mosques is the Mezquita de Córdoba in Spain. It is supported by over 850 columns. +In the warm Mediterranean and Middle Eastern climates, the courtyard served to hold the large number of worshippers during Friday prayers. Often, hypostyle mosques have outer arcades. They allow the visitors to enjoy the shade. Arab-plan mosques were built mostly during the Umayyad and Abbasid dynasties. The Arab plan was very simple, which did not allow for much further development. This caused that style of mosque to fall out of favour. +Central dome. +The Ottomans began building "central dome mosques" in the fifteenth century. These mosques have a large dome centered over the prayer hall. There may also be smaller domes, which are off-center over the prayer hall or the rest of the mosque. This style was heavily influenced by the Byzantine religious architecture with its use of central domes. +Iwan. +"Iwan mosques" are famous for their domed rooms and "iwans". Iwans are spaces with an arched roof. They have an opening at one end. One or more iwans face a central courtyard that serves as the prayer hall. The style borrows from pre-Islamic Iranian architecture. Most mosques with this style are in Iran. +Parts of Mosques. +Minarets. +Most mosques have minarets. Minarets are tall towers. Usually they are at one of the corners of the mosque. The top of the minaret is the highest point in the mosque, and usually the highest point in the area around the mosque. The tallest minaret in the world is in the Hassan II Mosque in Casablanca, Morocco. +The first mosques had no minarets. The most conservative Islamic groups, like "Wahhabis", still avoid building minarets. They see them as simply a fancy decoration and unnecessary. The first minaret was built in 665 in Basra during the reign of the Umayyad caliph Muawiyah I. Muawiyah encouraged the building of minarets, as they were supposed to be the same as bell towers on Christian churches. Because of this, mosque architects used the shape of the bell tower for their minarets. Both the minaret and the bell tower serve the same purpose — to call the faithful to prayer. +Before the five required daily prayers, a "muezzin" calls the worshippers to prayer from the minaret. In many countries like Singapore where Muslims are not the majority, mosques are stopped from loudly playing the call to prayer. The main problem is the use of electronic amplification of the call, which is now widely used by mosques. +Domes. +The domes were often placed directly above the main prayer hall. They represent the universe that Allah created. At first, these domes were small. They only took up a small part of the roof near the "mihrab". Later, they took the whole roof above the prayer hall. +Domes normally have the shape of a hemisphere. The Mughals in India popularized onion-shaped domes in South Asia and Persia. Some mosques have several domes, as well as the main large dome. The other domes are often smaller. +Domes would help the "imam" be heard, as the sound waves would bounce in and then out of the dome making the voice louder. +Prayer hall. +All mosques have a prayer hall, which is also called "musalla". Normally, there is no furniture in it except for prayer mats or rugs. These are necessary, as Islamic prayer is usually done kneeling. +Some mosques have Arabic calligraphy and "Qur'anic" verses on the walls to help worshipers focus on the beauty of Islam and its holiest book, the "Qur'an", as well as for decoration. +The "qiblah wall" is usually at the other side of the entrance to the prayer hall. This wall is specially decorated. In a properly sited mosque, it will be set perpendicular to a line leading to Mecca. People pray in rows parallel to the "qiblah" wall. They arrange themselves so they face Mecca. In the "qiblah" wall, usually at its center, is the "mihrab", a niche or depression showing the direction of Mecca. The "mihrab" serves as the place where the imam leads the five daily prayers. +Washing (wudhu). +All people must wash themselves before they pray. Mosques often have fountains or other facilities for washing in their entrances or courtyards, so that people can perform the washing ritual before prayer. +At very small mosques, worshippers may use restrooms for their ritual washing, or wu'du. In traditional mosques, there is often a building specially for washing. This is often in the center of the courtyard. In the prayer halls, people must not wear shoes for much the same reason. +Modern features. +Modern mosques should appeal to the community they serve. For this reason, other facilities may also be available at the mosque, like health clinics, libraries, and sports halls. +The inside of mosques. +There may be decorative tiles, plaster or coloured mosaics on the walls. There are no pictures or statues. +Religious functions. +Prayers. +Adult Muslims are expected to pray five times a day. Most mosques have formal prayers for each of these times. If performing the prayer is difficult, for example for ill people, then exceptions are made. +Mosques also hold a special prayer service, called "jumuah". This is done once a week. It is a form of Sabbath and replaces the Friday prayers at the mosque. Daily prayers can be done anywhere. However, Muslims are expected to do their Friday prayer at the mosque. +When a Muslim dies, a funeral prayer is normally held. It is held outdoors in a courtyard or square close to the mosque. The prayers have all the worshippers present, including the imam, taking part. During eclipses, mosques will host special prayers called eclipse prayers. +There are two large holidays ("Eids") in the Islamic calendar. During these days, there are special prayers at mosques in the morning. Larger mosques will normally hold them for their own communities as well as the people from smaller local mosques. Mosques, especially those in countries where Muslims are the majority, will also host "Eid" prayers outside in courtyards or town squares. +Ramadan events. +There are many events in "Ramadan", Islam's holiest month. During "Ramadan", Muslims must fast during the day. Mosques organise "iftar" dinners after sunset. These are done after the fourth required prayer of the day. Part of the food is given by members of the community, which creates nightly potluck dinners. The community contribution to these dinners is required. For this reason, mosques with smaller communities may not be able to hold the "iftar" dinners daily. +Some mosques will also hold meals in the morning before dawn. Mosques will often invite poorer members of the community to these meals. Islam sees giving charity during Ramadan as good acts. +Larger mosques sometimes offer special, optional prayers. They are done after the last required prayer of the day. During each night of prayers, one member of the community who has memorized the entire Qur’an will recite a part of the book. It can last for up to two hours. Sometimes, several such people (not necessarily of the local community) take turns to do this. During the last ten days of Ramadan, larger mosques will host all-night programs to observe "Laylat al-Qadr". It is the night Muslims believe that the Islamic prophet Muhammad first received Qur'anic revelations. On that night, between sunset and sunrise, mosques employ speakers to teach the worshipers about Islam. Mosques or the community usually provide meals at times through the night. +Political functions. +During the late twentieth century, more and more mosques have been used for political purposes. Modern-day mosques in the Western world want to educate good citizens. The details differ greatly from mosque to mosque and from country to country. +Advocacy. +Countries with small Muslim populations use mosques as a way to support civic participation. They are more likely to do this than Muslim-majority countries of the Greater Middle East. American mosques host voter registration and civic participation drives. In the United States, Muslims are often immigrants, or the children of immigrants. Mosques want to interest these people for politics. They also want to keep them informed about issues that concern the Muslim community. People who attend the services at the mosque regularly are more likely to take part in protests, to sign petitions, and to involve themselves in political matters. +A link between political views and mosque attendance can still be seen in other parts of the world. After the al-Askari Mosque bombing in February 2006, imams and other Islamic leaders used mosques and Friday prayers to call for calm and peace during the widespread violence. +Beginning in the late twentieth century and continuing into the early twenty-first century, a small number of mosques have also become a base for extremist imams to support terrorism and extreme Islamic ideals. Finsbury Park Mosque in London is a mosque that has been used in this manner. +Social conflict. +Like other places of worship, mosques can be at the center of social conflicts. +Babri Mosque was the centre of such a conflict up until the early 1990s when it was demolished. Before a solution could be found, the mosque was destroyed by about 200,000 Hindus. It took place on 6 December 1992. The mosque was built by Babur to mark the birthplace of Ram. It was believed to be on a site of an earlier Hindu temple. The conflict over the mosque was directly linked to rioting in Bombay (present-day Mumbai) as well as bombings in 1993 that killed 257 people. +In February 2006, a bombing seriously damaged Iraq's al-Askari Mosque. This increased the existing tensions. The conflict between two Muslim groups in Iraq had already led to other bombings. However mosque bombings are not limited to Iraq. In June 2005, a suicide bomber killed at least 19 people at an Afghan mosque. In April 2006, there were two explosions at India's Jama Masjid. +After the September 11 attacks, several American mosques were targets of attacks. These ranged from simple vandalism to arson. +The Jewish Defense League was suspected of plotting to bomb the King Fahd Mosque in Culver City, California. There were similar attacks in the United Kingdom after the 7 July 2005 London bombings. Outside the Western world, in June 2001, the Hassan Bek Mosque was the target of attacks. The attacks involved hundreds of Israelis angry at Arabs for a previous attack. +Saudi influence. +Saudi involvement in building mosques around the world only goes back to the 1960s. +In the 1980s, the Saudi Arabian government began to pay for the building of mosques in countries around the world. An estimated US$45 billion has been spent by the Saudi Arabian government for mosques and Islamic schools in foreign countries. "Ain al-Yaqeen", a Saudi newspaper, reported in 2002 that Saudi money may have helped to build as many as 1,500 mosques and 2,000 other Islamic centers. Saudi citizens have also given a lot of money to mosques in the Islamic world, especially in countries where they see Muslims as poor and oppressed. Following the fall of the Soviet Union, in 1992, mosques in Afghanistan received money from Saudi citizens. The King Fahd Mosque in Culver City, California and the Islamic Cultural Center of Italy in Rome are two of Saudi Arabia's largest investments in foreign mosques as former Saudi king Fahd bin Abdul Aziz al-Saud gave US$8 million and US$50 million to the two mosques, respectively. +Rules and behaviour in mosques. +In a mosque, people should keep focused on worshiping "Allah". For this reason, there are a number of rules about the correct behaviour in a mosque. Some of these rules are the same all over the world, such as no shoes should be worn in the prayer hall. Other rules are different from mosque to mosque. +Prayer leader. +It is generally seen as good to have someone who leads the prayers, though this is not strictly necessary. The person who usually leads the prayers is called "imam". He must be a free and honest man. He should also be an authority when it comes to answering questions on religion. In mosques that were built or that are kept up by the government, the imam is selected by the ruler. In private mosques, the community selects the imam, through majority voting. +Only men may lead prayers for men. Women are allowed to lead prayers for congregations where there are only women. +Attending a mosque. +In addition to washing, there are other rules that also apply to those who enter the mosque, even if they do not wish to pray there. It is forbidden to wear shoes in the carpeted area of the prayer hall. Some mosques also do not allow wearing shoes in other parts, even though these may not be devoted to praying. +Islam requires that its believers wear clothes that show modesty. As a result, both men and women must follow this rule when they attend a mosque (though mosques may not always enforce the rules). Men are supposed to come to the mosque wearing loose and clean clothes that do not show the shape of the body. Similarly, women who come to the mosque are expected to wear loose clothing, shirts, pants that cover to the wrists and ankles and cover their heads such as with a hijab. Many Muslims, regardless of their ethnic background, wear Middle eastern clothing associated with Arabic Islam to special occasions and prayers at mosques. +Mosques are places of worship. For this reason, those inside the mosque should be respectful to those who are praying. Loud talking or discussion of topics that could be disrespectful, is forbidden in areas where people are praying. It is also considered as rude to walk in front of Muslims in prayer or otherwise disturb them. +Men and women pray in different parts. +Islamic law requires men and women to be separated in the prayer hall. Ideally, women should pray behind men. The second caliph Umar at one time stopped women from attending mosques, especially at night, because he feared they may be teased by males, so he made them to pray at home. Sometimes a special part of the mosque was railed off for women; for example, the governor of Mecca in 870 had ropes tied between the columns to make a separate place for women. +Many mosques today will put the women behind a barrier or partition or in another room. Mosques in South and Southeast Asia put men and women in separate rooms, as the divisions were built into them centuries ago. In nearly two-thirds of American mosques, women pray behind partitions or in separate areas, not in the main prayer hall; some mosques do not admit women at all. Although there are sections only for women and children, the Grand Mosque in Mecca is desegregated. +Non-Muslims in mosques. +A few scholars of Islamic law believe that non-Muslims may be allowed into mosques, as long as they do not sleep or eat there. Followers of the "Maliki" school of Islamic jurisprudence disagree. They say that non-Muslims may not be allowed into mosques at all. +Different countries have different opinions on the question. Nearly all the mosques in the Arabian Peninsula as well as Morocco do not allow non-Muslims. The Hassan II Mosque in Casablanca is one of only two mosques in Morocco currently open to non-Muslims. +In modern-day Saudi Arabia, the Grand Mosque and all of Mecca are open only to Muslims. Likewise, the Masjid al-Nabawi and the city of Medina that surrounds it are also off-limits to those who do not practice Islam. For mosques in other areas, it has most commonly been taken that non-Muslims may only enter mosques if granted permission to do so by Muslims and if they have a proper reason. +In modern Turkey non-Muslim tourists are allowed to enter any mosque, but must obey the rules of decorum. Visiting a mosque is allowed only between prayers; visitors must wear long trousers and take off their shoes; women must cover their heads; no photos; no loud talk is allowed. No references to other religions are allowed (no crosses on necklaces, no cross gestures etc.). +However, there are also many other places in the west as well as the Islamic world where non-Muslims are welcome to enter mosques. Most mosques in the United States, for example, report receiving non-Muslim visitors every month. Many Mosques throughout the United States welcome non-Muslims as a sign of openness to the rest of the community and to encourage conversions to Islam. +Dogs. +Dogs are usually banned from entering mosques, but on 24 September 2008, the Muslim Law Council UK made special ruling, called a "fatwa", which granted a blind Muslim permission to take his guide dog into the mosque. +Mosques as hostels. +It is common for a smaller mosque to serve as a hostel for Muslims on "haj" (pilgrimage to Mecca). Sometimes mosques are used for refugees, or as temporary homes for homeless people. Obligations to neighbours in Islam are very strict, and specific. In the Qur'an Mohammed said that a person who helps others in the hour of need, and who helps the oppressed; that person God will help on the Day of Travail (agony). There are other commands, such as helping the poor and being nice to people. An important part of being Muslim, or just being part of the mosque, is taking care of people who need help. A mosque is a social, as well as a religious, group. +A madrassa is a little different from a mosque. A madrassa focuses on teaching Islam, usually to children and young people. +Mosques in Spain. +When Spain was under Muslim control, some of the most beautiful buildings were mosques. After 1491, Spain was under Christian control. However, the Christians did not tear down the mosques. They simply put a crucifix in them to make them into churches. These mosques influenced the Renaissance architecture (way of building) in Europe. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Movement.txt b/.github/workflows/data/simplewiki-500/Movement.txt new file mode 100644 index 000000000..5265a7626 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Movement.txt @@ -0,0 +1,13 @@ +Movement, or motion, is the state of changing something's position or changing where something is. A bird that is flying is moving. So is a person who is walking. This is, because they change where they are. They "move" from one place to another. There are many forms of science and mathematics that are related to movement. +Because of the work of scientists including Galilei and Newton, we know that "position" is relative. This means that an object's position depends on where it exists in relation to other objects. For example, a ball can be away from a box, from a chair and away from a table. Here, the box, chair and the table helped to define the position of the ball. They acted as the reference points for the observation of the ball. By telling someone how far the ball was from other objects, they were told its relative position. +The motion of an object is also relative. It depends on how its position changes in relation to other objects. For example: +A person is sitting inside a train (Train A). The train has not started moving yet. When that person looks out the window, they see another train (Train B) . Both trains are facing the same direction. If Train B moves backwards, it appears to the person on Train A that they are moving toward Train B. If a reference point it added this can be changed. If the person can also see a pole next to the trains they will see that train A did not move and train B moved backwards. +From this, it is shown that what the movement is can not be known without a frame of reference. In this example the pole is the frame of reference. +The study of motion without considering its cause is called kinematics. Kinematics deals with terms like speed, velocity, and acceleration. Dynamics is the branch of physics that focuses on the causes and effects of motion. It deals with force, inertia, work, energy and momentum. +Animal movement. +The movement of animals is controlled by the nervous system, especially the brain and spinal cord. +The muscles that control the eye are driven by the optic tectum in the midbrain. All the voluntary muscles in the body are controlled by motor neurons in the spinal cord and hindbrain. Spinal motor neurons are controlled by neural circuits of the spinal cord, and by inputs from the brain. The spinal circuits do many reflex responses, and also do rhythmic movements such as walking or swimming. The descending connections from the brain give more sophisticated control. +The brain has several areas that project directly to the spinal cord. At the highest level is the primary motor cortex. This is a strip of tissue at the back of the frontal lobe. This tissue sends a massive projection directly to the spinal cord, through the pyramidal tract. This allows for precise voluntary control of the fine details of movements. There are other brain areas which affect movement. Among the most important secondary areas are the premotor cortex, basal ganglia, and cerebellum. +In addition, the brain and spinal cord controls the autonomic nervous system. this system works by secreting hormones and by modulating the "smooth" muscles of the gut. The autonomic nervous system affects heart rate, digestion, respiration rate, salivation, perspiration, urination, sexual arousal and several other processes. Most of its functions are not under direct voluntary control. Several of them, such as respiration, can be controlled directly as well. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Multiplication.txt b/.github/workflows/data/simplewiki-500/Multiplication.txt new file mode 100644 index 000000000..0b72e4738 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Multiplication.txt @@ -0,0 +1,9 @@ +Multiplication is an arithmetic operation for finding the "product" of two numbers in mathematics, and is the opposite of division. It is often represented by symbols such as formula_1 and formula_2. Multiplication is the third operation in math, after addition which is the first, and subtraction which is the second. It can also be defined on number mathematical objects as well. +With natural numbers, multiplication gives the number of tiles in a rectangle, where one of the two numbers equals the number of tiles on one side, and the other number equals the number of tiles on the other side. +With real numbers, multiplication gives the area of a rectangle where the first number is the same as the size of one side, and the second number is the same as the size of the other side. +For example, three multiplied by five is the total of five threes added together, or the total of three fives. This can be written as 3 × 5 = 15, or spoken as "three times five equals fifteen." Mathematicians refer to the two numbers to be multiplied as "coefficients", or "multiplicand" and "multiplicator" separately (where Multiplicand × multiplicator = product). +Multiplication between numbers is said to be commutative—when the order of the numbers does not influence the value of the product. This is true for the integers (whole numbers), e.g. 4 × 6 is the same as 6 × 4, and also for the rational numbers (fractions), and for all the other real numbers (representable as a field in the continuous line), and also for complex numbers (numbers representable as a field in the plane). However, it is not true for quaternions (numbers representable as a ring in the four-dimensional space), vectors or matrices. +The definition of multiplication as repeated addition provides a way to arrive at a set-theoretic interpretation of multiplication of cardinal numbers. A more accurate representation is to think of it as scaling quantities. This animation illustrates 3 being multiplied by 2, giving 6 as a result. Notice that the blue dot in the blue segment of length 3 is placed at position 1, and the blue segment is scaled so that this dot is placed at the end of the red segment (of length 2). For multiplication by any X, the blue dot will always start at 1 and end at X. This works even if X is smaller than 1, or negative. +The opposite of multiplication is division. +Multiplication table. +Teachers usually require their pupils to memorize the table of the first 9 numbers when teaching multiplication, so that more complex multiplication tasks can be performed. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Multiverse.txt b/.github/workflows/data/simplewiki-500/Multiverse.txt new file mode 100644 index 000000000..96fc5544a --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Multiverse.txt @@ -0,0 +1,9 @@ +A multiverse is the theory of a conjectured set of multiple possible universes, including ours, which make up reality. These universes are sometimes called parallel universes. A number of different versions have been considered. +The word "multiverse" was created in 1895 by psychologist William James as a philosophical concept. +The cosmological multiverse. +The cosmological multiverse tries to explain why the universe we can see sometimes called "our universe" is one that life can exist in. Even small changes to the way physics works would make life impossible. In a multiverse a large number of universes are randomly created and some happen to favour life emerging there. Many inhospitable universes would also have been created, but there would be no life there to observe their existence. +The quantum multiverse. +The quantum multiverse is another version in which our universe splits into alternative futures with every quantum event. This is called Many-worlds interpretation of quantum mechanics. +References. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Music.txt b/.github/workflows/data/simplewiki-500/Music.txt new file mode 100644 index 000000000..0b1ebf740 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Music.txt @@ -0,0 +1,71 @@ +Music is a form of art that uses sound organised in time. Music is also a form of entertainment that puts sounds together in a way that people like, find interesting or dance to. Most music includes people singing with their voices or playing musical instruments, such as the piano, guitar, drums or bass. +The word "music" comes from the Greek word ("mousike"), which means "(art) of the Muses". In Ancient Greece the Muses included the goddesses of music, poetry, art, and dance. Someone who makes music is known as a musician. +Definition of music. +Music is sound that has been organized by using rhythm, melody or harmony. If someone bangs saucepans while cooking, it makes noise. If a person bangs saucepans or pots in a rhythmic way, they are making a simple type of music. +There are four things which music has most of the time: +Definitions. +There is no simple definition of music which covers all cases. It is an art form, and opinions come into play. Music is whatever people think is music. A different approach is to list the qualities music must have, such as, sound which has rhythm, melody, pitch, timbre, etc. +These and other attempts, do not capture all aspects of music, or leave out examples which definitely are music. Music is a special shared relationship between a person, the persons behavior, and a sounding object.p10 Musical experience and the music, together, are called phenomena, and the activity of describing phenomena is called phenomenology. +History. +Even in the stone age people made music. The first music was probably made trying to imitate sounds and rhythms that occurred naturally. Human music may echo these phenomena using patterns, repetition and tonality. This kind of music is still here today. Shamans sometimes imitate sounds that are heard in nature. It may also serve as entertainment (games), or have practical uses, like attracting animals when hunting. +Some animals also can use music. Songbirds use song to protect their territory, or to attract a mate. Monkeys have been seen beating hollow logs. This may, of course, also serve to defend the territory. +The first musical instrument used by humans was probably the voice. The human voice can make many different kinds of sounds. The larynx (voice box) is like a wind instrument. +The oldest known Neanderthal hyoid bone with the modern human form was found in 1983, indicating that the Neanderthals had language, because the hyoid supports the voice box in the human throat. +Most likely the first rhythm instruments or percussion instruments involved the clapping of hands, stones hit together, or other things that are useful to keep a beat. There are finds of this type that date back to the paleolithic. Some of these are ambiguous, as they can be used either as a tool or a musical instrument. +The first flutes. +The oldest flute ever discovered may be the Divje Babe flute, found in the Slovenian cave Divje Babe I in 1995. It is not certain that it is really a flute. The item in question is a piece of the femur of a young cave bear, and is about 43,000 years old. However, whether it is a musical instrument or just a bone that got chewed on is an ongoing debate. +In 2008, archaeologists discovered a bone flute in the Hohle Fels cave near Ulm, Germany. The five-holed flute has a V-shaped mouthpiece and is made from a vulture wing bone. The discovery is the oldest confirmed find of any musical instrument in history. Other flutes were also found in the cave. This flute was found next to the Venus of Hohle Fels and a short distance from the oldest known human carving. When they announced their discovery in 2009, the scientists suggested that the find showed that there was a well-established musical tradition when humans colonized Europe. +The oldest known wooden pipes were discovered near Greystones, Ireland, in 2004. A wood-lined pit contained a group of six flutes made from yew wood, between 30 and 50 cm long, tapered at one end, but without any finger holes. They may once have been strapped together. +In 1986 several bone flutes were found in Jiahu in Henan Province, China. They date to about 6,000 BC. They have between 5 and 8 holes each and were made from the hollow bones of a bird, the Red-crowned Crane. At the time of the discovery, one was still playable. The bone flute plays both the five- or seven-note scale of Xia Zhi and six-note scale of Qing Shang of the ancient Chinese musical system. +Ancient times. +It is not known what the earliest human music was like. Some architecture and paintings are thousands of years old, but old music could not survive until people learned to write it down. The only way we can guess about early music is by looking at very old paintings that show people playing musical instruments, or by finding instruments in archaeological digs (digging underground to find old things). The earliest piece of music that was ever written down and that has not been lost was discovered on a tablet written in Hurrian, a language spoken in and around northern Mesopotamia (where Iraq is today), from about 1500 BC. +Middle Ages. +Another surviving piece of early written music was a round called "Sumer Is Icumen In". It was written down by a monk around the year 1250. Much of the music in the Middle Ages (roughly 450-1420) was folk music played by working people who wanted to sing or dance. When people played instruments, they were usually playing for dancers. However, most of the music that was written down was for the Catholic church. This music was written for monks to sing in church. It is called Chant (or Gregorian chant). +Renaissance. +In the Renaissance (roughly 1400–1550) there was a lot of music, and many composers wrote music that has survived so that it can be performed, played or sung today. Many new types of art and music was made during this time. +Some music was written for use in church services (sacred music) by the Italian composer Giovanni da Palestrina (1525–1594). In Palestrina's music, many singers sing together (this is called a choir). There was also plenty of music not written for the church, such as happy dance music and romantic love songs. Popular instruments during the Renaissance included the viols (a string instrument played with a bow), lutes (a plucked stringed instrument that is a little like a guitar), and the virginal, a small, quiet keyboard instrument. +Baroque. +The Baroque (roughly 1600–1740) was a Western cultural era. It emphasised drama and splendor in sculpture, painting, literature, dance, and music. In music, the term 'Baroque' applies to the final period of dominance of imitative counterpoint, where different voices and instruments echo each other but at different pitches, sometimes inverting the echo, and even reversing thematic material. +The popularity and success of the Baroque style was encouraged by the Roman Catholic Church which had decided at the time of the Council of Trent that the arts should communicate religious themes in direct and emotional involvement. The upper class also saw the dramatic style of Baroque architecture and art as a means of impressing visitors and expressing triumphant power and control. Baroque palaces are built around an entrance of courts, grand staircases and reception rooms of sequentially increasing opulence. In similar profusions of detail, art, music, architecture, and literature inspired each other in the Baroque cultural movement as artists explored what they could create from repeated and varied patterns. Some traits and aspects of Baroque paintings that differentiate this style from others are the abundant amount of details, often bright polychromy, less realistic faces of subjects, and an overall sense of awe, which was one of the goals in Baroque art. +The word baroque probably derives from the ancient Portuguese noun "barroco" which is a pearl that is not round but of unpredictable and elaborate shape. Hence, in informal usage, the word baroque can simply mean that something is "elaborate", with many details, without reference to the Baroque styles of the seventeenth and eighteenth centuries. +Classical period. +In western music, the classical period means music from about 1750 to 1825. It was the time of composers like Joseph Haydn, Wolfgang Amadeus Mozart and Ludwig van Beethoven. Orchestras became bigger, and composers often wrote longer pieces of music called symphonies that had several sections (called movements). Some movements of a symphony were loud and fast; other movements were quiet and sad. The form of a piece of music was very important at this time. Music had to have a nice 'shape'. They often used a structure which was called sonata form. +Another important type of music was the string quartet, which is a piece of music written for two violins, a viola, and a violoncello. Like symphonies, string quartet music had several sections. Haydn, Mozart and Beethoven each wrote many famous string quartets. +The piano was invented during this time. Composers liked the piano, because it could be used to play dynamics (getting louder or getting softer). Other popular instruments included the violin, the violoncello, the flute, the clarinet, and the oboe. +Romantic period. +The 19th century is called the Romantic period. Composers were particularly interested in conveying their emotions through music. An important instrument from the Romantic period was the piano. Some composers, such as Frederic Chopin wrote subdued, expressive, quietly emotional piano pieces. Often music described a feeling or told a story using sounds. Other composers, such as Franz Schubert wrote songs for a singer and a piano player called Lied (the German word for "song"). These Lieder (plural of Lied) told stories by using the lyrics (words) of the song and by the imaginative piano accompaniments. Other composers, like Richard Strauss, and Franz Liszt created narratives and told stories using only music, which is called a tone poem. Composers, such as Franz Liszt and Johannes Brahms used the piano to play loud, dramatic, strongly emotional music. +Many composers began writing music for bigger orchestras, with as many as 100 instruments. It was the period of "Nationalism" (the feeling of being proud of one's country) when many composers made music using folksong or melodies from their country. Lots of famous composers lived at this time such as Franz Schubert, Felix Mendelssohn, Frederic Chopin, Johannes Brahms, Pyotr Tchaikovsky and Richard Wagner. +Modern times. +From about 1900 onwards is called the "modern period". Many 20th century composers wanted to compose music that sounded different from the Classical and Romantic music. Modern composers searched for new ideas, such as using new instruments, different forms, different sounds, or different harmonies. +The composer Arnold Schoenberg (1874–1951) wrote pieces which were atonal (meaning that they did not sound as if they were in any clear musical key). Later, Schoenberg invented a new system for writing music called twelve-tone system. Music written with the twelve-tone system sounds strange to some, but is mathematical in nature, often making sense only after careful study. Pure twelve-tone music was popular among academics in the fifties and sixties, but some composers such as Benjamin Britten use it today, when it is necessary to get a certain feel. +One of the most important 20th-century composers, Igor Stravinsky (1882–1971), wrote music with very complicated (difficult) chords (groups of notes that are played together) and rhythms. Some composers thought music was getting too complicated and so they wrote Minimalist pieces which use very simple ideas. In the 1950s and 1960s, composers such as Karlheinz Stockhausen experimented with electronic music, using electronic circuits, amplifiers and loudspeakers. In the 1970s, composers began using electronic synthesizers and musical instruments from rock and roll music, such as the electric guitar. They used these new instruments to make new sounds. +Composers writing in the 1990s and the 2000s, such as John Adams (born 1947) and James MacMillan (born 1959) often use a mixture of all these ideas, but they like to write tonal music with easy tunes as well. +Electronic music. +Music can be produced electronically. This is most commonly done by computers, keyboards, electric guitars and disk tables. They can mimic traditional instruments, and also produce very different sounds. 21st-century electronic music is commonly made with computer programs and hardware mixers. +Jazz. +Jazz is a type of music that was invented around 1900 in New Orleans in the south of the USA. There were many black musicians living there who played a style of music called blues music. Blues music was influenced by African music (because the black people in the United States had come to the United States as slaves. They were taken from Africa by force). Blues music was a music that was played by singing, using the harmonica, or the acoustic guitar. Many blues songs had sad lyrics about sad emotions (feelings) or sad experiences, such as losing a job, a family member dying, or having to go to jail (prison). +Jazz music mixed together blues music with European music. Some black composers such as Scott Joplin were writing music called ragtime, which had a very different rhythm from standard European music, but used notes that were similar to some European music. Ragtime was a big influence on early jazz, called Dixieland jazz. Jazz musicians used instruments such as the trumpet, saxophone, and clarinet were used for the tunes (melodies), drums for percussion and plucked double bass, piano, banjo and guitar for the background rhythm (rhythmic section). Jazz is usually improvised: the players make up (invent) the music as they play. Even though jazz musicians are making up the music, jazz music still has rules; the musicians play a series of chords (groups of notes) in order. +Jazz music has a swinging rhythm. The word "swing" is hard to explain. For a rhythm to be a "swinging rhythm" it has to feel natural and relaxed. Swing rhythm is not even like a march. There is a long-short feel instead of a same-same feel. A "swinging rhythm" also gets the people who are listening excited, because they like the sound of it. Some people say that a "swinging rhythm" happens when all the jazz musicians start to feel the same pulse and energy from the song. If a jazz band plays very well together, people will say "that is a swinging jazz band" or "that band really swings well." +Jazz influenced other types of music like the Western art music from the 1920s and 1930s. Art music composers such as George Gershwin wrote music that was influenced by jazz. Jazz music influenced pop music songs. In the 1930s and 1940s, many pop music songs began using chords or melodies from jazz songs. One of the best known jazz musicians was Louis Armstrong (1900–1971). +Pop music. +"Pop" music is a type of "popular" music that many people like to listen to. The term "pop music" can be used for all kinds of music that was written to be popular. The word "pop music" was used from about 1880 onwards, when a type of music called music was popular. +Modern pop music grew out of 1950's rock and roll, (for example Chuck Berry, Bo Diddley and Little Richard) and rockabilly (for example Elvis Presley and Buddy Holly). In the 1960s, The Beatles became a famous pop music group. In the 1970s, other styles of music were mixed with pop music, such as funk and soul music. Pop music generally has a heavy (strong) beat, so that it is good for dancing. Pop singers normally sing with microphones that are plugged into an amplifier and a loudspeaker. +Musical notation. +"Musical notation" is the way music is written down. Music needs to be written down in order to be saved and remembered for future performances. In this way composers (people who write music) can tell others how to play the musical piece as it was meant to be played. +Solfège. +Solfège (sometimes called solfa) is the way tones are named. It was made in order to give a name to the several tones and pitches. For example, the eight basic notes "Do, Re, Mi, Fa, So, La, Ti, Do" are just the names of the eight notes that confirm the major scale. +Written music. +Music can be written in several ways. When it is written on a staff (like in the example shown), the pitches (tones) and their duration are represented by symbols called notes. Notes are put on the lines and in the spaces between the lines. Each position says which tone must be played. The higher the note is on the staff, the higher the pitch of the tone. The lower the notes are, the lower the pitch. The duration of the notes (how long they are played for) is shown by making the note "heads" black or white, and by giving them stems and flags. +Music can also be written with letters, naming them as in the solfa "Do, Re, Mi, Fa, So, La, Ti, Do" or representing them by letters. The next table shows how each note of the solfa is represented in the Standard Notation: +The Standard Notation was made to simplify the lecture of music notes, although it is mostly used to represent chords and the names of the music scales. +These ways to represent music ease the way a person reads music. There are more ways to write and represent music, but they are less known and may be more complicated. +How to enjoy music. +By listening. +People can enjoy music by listening to it. They can go to concerts to hear musicians perform. Classical music is usually performed in concert halls, but sometimes huge festivals are organized in which it is performed outside, in a field or stadium, like pop festivals. People can listen to music on CD's, Computers, iPods, television, the radio, cassette/record-players and even mobile phones. +There is so much music today, in elevators, shopping malls, and stores, that it often becomes a background sound that we do not really hear. +By playing or singing. +People can learn to play an instrument. Probably the most common for complete beginners is the piano or keyboard, the guitar, or the recorder (which is certainly the cheapest to buy). After they have learnt to play scales, play simple tunes and read the simplest musical notation, then they can think about which instrument for further development. They should choose an instrument that is practical for their size. For example, a very short child cannot play a full size double bass, because the double bass is over five feet high. People should choose an instrument that they enjoy playing, because playing regularly is the only way to get better. Finally, it helps to have a good teacher. +By composing. +Anyone can make up their own pieces of music. It is not difficult to compose simple songs or melodies (tunes). It's easier for people who can play an instrument themselves. All it takes is experimenting with the sounds that an instrument makes. Someone can make up a piece that tells a story, or just find a nice tune and think about ways it can be changed each time it is repeated. The instrument might be someone's own voice. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Mustache.txt b/.github/workflows/data/simplewiki-500/Mustache.txt new file mode 100644 index 000000000..0d1b6968b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Mustache.txt @@ -0,0 +1,6 @@ +The hair that grows on the upper lip of some men is called a mustache. The hair that grows on the sides of the face and the chin of some men is called a beard. Some men have a lot of hair and a big mustache, and some have very little. In the modern world, many men shave part or all of their mustaches, or cut their mustache so it does not get very long. A chin beard with no mustache is called a goatee, whilst a chin beard with a mustache is known as a Van Dyke. +The earliest facial hair above the lip, as a style, is credited to the Iron Age Celts. Diodorus Siculus, a Greek historian, wrote this about the Celtic people: +The Gauls are tall of body with rippling muscles and white of skin and their hair is blond, and not only naturally so for they also make it their practice by artificial means to increase the distinguishing colour which nature has given it. For they are always washing their hair in limewater and they pull it back from the forehead to the nape of the neck, with the result that their appearance is like that of Satyrs and Pans since the treatment of their hair makes it so heavy and coarse that it differs in no respect from the mane of horses. Some of them shave the beard but others let it grow a little; and the nobles shave their cheeks but they let the moustache grow until it covers the mouth. +Mustache in United Kingdom and Commonwealth of Nations is spelled moustache. +Some animals such as walruses also have hair like this, and people sometimes also call this hair a mustache. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/NGO.txt b/.github/workflows/data/simplewiki-500/NGO.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/NPO.txt b/.github/workflows/data/simplewiki-500/NPO.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Name.txt b/.github/workflows/data/simplewiki-500/Name.txt new file mode 100644 index 000000000..f616a8287 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Name.txt @@ -0,0 +1,48 @@ +A name is a word (or a set of words) given to things and people. +For example, "cat" is the name of a kind of animal. "Ryan" is a name of a person, usually a male. "Julia" is a common female name. +The word 'name' can also be used as a verb. To name something is to give it a name. +People's names. +In many cultures, there are rules and customs about how to give a person a name. +Some of the rules are defined by laws, and others are defined by traditions (doing things in the way they have been done for a long time). +There are rules about different aspects of the names and naming, including the following: +1. Number of parts of a name +In some cultures, a person has a one-part name, such as "Muhammad." +In other cultures, a person has a two-part name, such as "John Smith." +In some cultures, a person can have any number of name parts. In the United States, for example, some people have three: first name, middle name, and last name. Other people have only two: a first and last name. +In Chinese cultures, it is typical for a person to have three-part name, such as "Cheah Ching San," where "Cheah" is the surname. Written in English format a comma is introduced making it "Ching San, Cheah." +In Muslim and Arabic culture, a name can have one to six parts. Such as "Abdullah ibn Muhammad Al ash-Sheikh". +2. Relations with names of parents and other relatives +In some cultures, people have the same "family name" (or surname) as their parents. For example, the father of John Smith may be Mike Smith. And Mike Smith's father may be James Smith. The "Smith" part is the same for all the family. +In other cultures, a person has the same name as his or her father, but the name is in a different place. For example, Shafiq Hanif's son may be Hanif Kamal. Hanif is in both the father's and son's name. +3. Name changes +In some cultures, a name changes when people marry, divorce, go through some religious ceremony, etc. For example, in some Spanish-speaking countries, people use two last names: their mother's father's name and their father's name. If Elena Rodriguez Gomez and Jose Sanchez Soria marry, she may change her name to Elena Rodriguez de Sanchez, and their child could be named Pilar Sanchez Rodriguez, taking the names of both of her grandfathers. +4. Name origins +In some cultures, personal names come from history. In most European countries, some first names are taken from the Bible. In some cultures, names are taken from a relative. In other cultures, a name shows what the parents hope their child will be like. A baby may be given a name Wisdom because parents hope the baby will be a wise girl or boy. +Some cultures avoid giving people a name of an animal. For example, there is no name like dog, cat, snake, owl, or fish in Japanese people's first names. But in some cultures animal names may be good. +5. Lengths, pronunciations, spelling, etc. +In some languages and cultures, you can tell if a word is a person's name or not by just looking at the spelling or listening to its pronunciation. There are some other linguistic patterns. For example, many Chinese names are made up of three syllables. +6. Use of names, titles, nicknames, etc. +In some cultures, people use names when they call each other. In other cultures, people use their nicknames. In some other cultures, people use their titles ("father," "professor," etc.) when they call each other. +7. Spelling of names, titles, nicknames, etc. +8. Name awareness +Taking note of names is taken a step farther by those who elect to celebrate a name (e.g., "Celebrate Your Name Week") whether their own name, someone else's name, or names in general, complete ownership of one's name might very well include celebrating it. +9. Middle names +While some people might choose to "hide" a middle name for any number of reasons (i.e., they consider the middle name they were given to be an "embarrassment"), others have taken to celebrating their middle name (e.g., "Middle Name Pride Day"). +In the English language, names exclusively are usually pronounced in correlation with the spelling, however can be pronounced as desired, e.g. John is (jon) but can also be (ned). However, not probable, is held true in the English rules of grammar. +Examples of names +Sarah, Lucy, Ellen, Claire, Ben. +Names can be shortened e.g. Isabelle can become Izzy or Belle. +Japanese names. +Here are some things that are often found in Japanese names today. In the past, people went by different rules. +1. Number of parts of a name +Japanese names have two parts. One is the family name and the other is the given name. +"Suzuki Ichiro" is a name of a Japanese person. Suzuki is the family name, and Ichiro is the first name. In the Japanese language, the family name comes first, and the given name comes second. (It is like writing Smith John, instead of John Smith.) +Only some members of the royal family do not have a family name. +2. Relations with names of parents and other relatives +A newborn baby gets a family name from their parents. The parents have the same family name. So, a son of Ono Yoko (female) and Ono Ken (male) is Ono something. +The family name Ono is mostly shared by the paternal (male) part of the family. So Ono Ken's parents have the family name Ono, but Ono Yoko's parents probably do not. +3. Name changes +Names of people change when they marry and divorce. It is a custom in many parts of the world that women change their family name to that of their new husband when they marry. However, in Europe and North America especially, many women no longer do this even though their mothers and grandmothers may have. Sometimes, the man will take the woman's family name. +4. Name origins +5. Lengths, pronunciations, spelling, etc. +6. Use of names, titles, nicknames, etc. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/National anthem.txt b/.github/workflows/data/simplewiki-500/National anthem.txt new file mode 100644 index 000000000..9a40ea31e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/National anthem.txt @@ -0,0 +1 @@ +A national anthem is a country's official national song that the people use to remember and respect their country. By the 18th century most countries had a national anthem and new countries chose a national anthem when they became independent. Some monarchies have a royal anthem for their monarch. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Native American.txt b/.github/workflows/data/simplewiki-500/Native American.txt new file mode 100644 index 000000000..a2fba51a1 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Native American.txt @@ -0,0 +1,42 @@ +Native Americans (also called Aboriginal Americans, American Indians, Amerindians, or Indigenous peoples of the Americas) are the indigenous peoples and their descendants, who were in the Americas before Europeans arrived. +Name. +The people are sometimes called Indians, but that may be confusing, because it is the same word used for people from India. When Christopher Columbus explored the area, he did not know about the Americas. He was in the Caribbean but thought he was in the East Indies and so he called the people Indians. Today, some think that it is racism to use Indian for a Native American. +There are different Native American tribes, with many different languages. Some tribes were hunter-gatherers who moved from place to place. Others lived in one place and built cities and kingdoms. Many Native Americans died after the European settlers came to the Americas. One reason is that diseases came with the Europeans but were new to the Native Americans. There were also battles with the Europeans. Many native people were hurt, killed, or forced to leave their homes by settlers, who took their lands. +Origins. +The ancestors of Native Americans came to the Americas from Asia. Some of them may have come to the Americas 15,000 years ago, when Alaska was connected to Siberia by the Bering land bridge. +The earliest people in the Americas came from Siberia when there was an ice bridge across the Bering Strait. The cold but mainly grassy plain, called Beringia, was a land bridge that connected Siberia with Canada. It is believed that a few thousand people arrived in Beringia from eastern Siberia during the Last Glacial Maximum and that they moved into the Americas sometime after 16,500 years before the present (BP). That would have occurred as the American glaciers blocking the way southward melted but before the land bridge was covered by the sea about 11,000 years BP. +Before the European colonization of the Americas and Russian expansion to the Russian Far East, Beringia was inhabited by the Yupik peoples on both sides of the straits. The culture remains in the region today, with others. In 2012, the governments of Russia and the United States announced a plan to formally establish "a transboundary area of shared Beringian heritage." Among other things, the agreement would establish close ties between the Bering Land Bridge National Preserve and the Cape Krusenstern National Monument in the United States, and Beringia National Park in Russia. Native Americans were divided into many small nations that are called called First Nations in Canada and tribes in the United States. +Culture. +The Native American tribes have their own cultures, which can be grouped together by region. For example, the tribes living in Mesoamerica have similar cultures. +Food. +Native Americans ate various food depending on where they lived. Native Americans from Mesoamerica introduced vanilla, avocados and chocolate to the world. +Religion. +Before Europeans came, the Native Americans practiced many different religions. Each tribe had its own different beliefs. Many Native Americans now practice Christianity, a religion that was brought to the Americas by Europeans. Others, meanwhile, still practice their own religions. +Languages. +Native Americans speak over 1000 different languages. Some of these languages had writing systems before Europeans came. Many of these languages are endangered because more people speak European languages and do not not teach their children Native American languages. +Music. +Native Americans make musical instruments using the things around them. +Art. +Native Americans made many different kinds of art. +Today. +North America. +There are now more than three million Native Americans in Canada and the United States combined. About 51 million more Native Americans live in Latin America. Many Native Americans still speak native languages and have their own cultural practices, and others have adopted parts of Western culture. Many Native Americans still face problems with racism. +United States. +According to the 2010 United States Census, 0.9% of Americans say that they are Native American, 2.9 million people, and 0.8% of Americans say they are both Native American and something else. They are not evenly spread out through the United States. About a third of the people in Alaska are Native Alaskan. and about a sixth of the people in Oklahoma are Native American. +In the United States, most Native Americans live in cities. About 28% of Native Americans live on Indian reservations. Many Native Americans are poor, and 24% are extremely poor. The history of violence against Native Americans still persists in higher rates of violence against Native Americans than whites. +Mexico. +Many Mexicans are of Native American or mestizo ancestry. Mexico has the largest and most diverse Native American population in Latin America. +Canada. +In the 2016 census, more than 1.67 million people in Canada identified as Indigenous, making them 4.9 percent of Canada’s population. +Central America. +Guatemala. +About 40% of the people of Guatemala identify as Native American. Many indigenous groups in the country are descendants of the Maya. Many Native Americans in Guatemala are poor. Many of them have left the country to find better jobs elsewhere. +South America. +Bolivia. +Most people in Bolivia belong to indigenous groups. Many of them are Aymara and Quechua. +Peru. +Peru has a large indigenous population, around 80% of the country's population identifying as indigenous or mestizo. +Indigenous activism. +In the later half of the 20th century, many Native Americans protested the unfair treatment that they experienced from the societies in which they lived. Some Native Americans have become famous in politics. For example, an Aymara man. Evo Morales was elected as president of Bolivia in 2005. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Natural resource.txt b/.github/workflows/data/simplewiki-500/Natural resource.txt new file mode 100644 index 000000000..1134e9eaa --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Natural resource.txt @@ -0,0 +1,13 @@ +A natural resource is what people can use from the natural environment. Examples of natural resources are air, water, wood, oil, wind energy, natural gas, iron, and coal. +The dividing line between natural resources and man-made resources is not clear-cut. Hydro-electric energy is not a natural resource because people use turbines and generators to convert the energy of moving water to electric current. Petroleum and ores are natural, but need work to make them into usable refined oil and metals. Atomic energy comes from metallic nuclear fuel, like fissionable uranium and plutonium, but rocks need technical work to make them into these nuclear fuels. +Supply. +We often say there are two sorts of natural resources: renewable resources and non-renewable resources. +Most natural resources are limited. This means they will eventually run out. A perpetual resource has a never-ending supply. Some examples of effectively perpetual resources include solar energy, tidal energy, and wind energy. They are perpetual in effect, although absolutely they do have a limit. There may be a practical limit to how much can be taken in a given day or year, but that amount can be taken again next day or next year (though not for ever). +Non perpetual resources include fossil fuels such as petroleum, coal, etc. They have a limit of usage, and are running out. Some of the things influencing the supply of resources include whether it is able to be recycled, and whether there are suitable substitutes for the material. Non-renewable resources cannot be recycled. For example, fossil fuels cannot be recycled. +Demand. +The demand for resources can change with new technology, new needs, and new economics (e.g. changes in cost of the resources). Some material can go completely out of use, if people do not want it any more. Demand of many natural resources is very high, but availability of some, such as precious metals, is very low. +Availability. +Different places have different natural resources. When people do not have a certain resource they need, they can either replace it with another resource, or trade with another country to get the resource. People have sometimes fought to have them (for example, spices, water, arable farmland, gold, or petroleum). +When people do not have some resources, their quality of life can get lower. So, people protect resources. When they can not get clean water, people may become ill; if there is not enough wood, trees will be cut and the forest will disappear over time (deforestation); if there are not enough fish in a sea, people can die of starvation. Renewable resources include crops, wind, hydroelectric power, fish, and sunlight Many people carefully save their natural resources so that others can use them in future. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Natural.txt b/.github/workflows/data/simplewiki-500/Natural.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Nature.txt b/.github/workflows/data/simplewiki-500/Nature.txt new file mode 100644 index 000000000..ff4b9f7d3 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Nature.txt @@ -0,0 +1,11 @@ +The words nature and natural are used for all the things that are normally not made by humans. The word comes from the Latin "natura" meaning "birth". Nature includes many things like weather, organisms, landforms, celestial bodies. Scientists study the way the parts of nature work. Things that have been made by people are said to be man-made or called artifacts. +There are natural sciences that study different parts of nature, for example the science of ecology is about plants and animals as a whole, while biology studies every type of living thing. +From one point of view, humans are a prime example of nature, and are the most widely studied natural inhabitants of the planet earth. Humans interact with each other in their natural environment on a day-to-day basis. Every part of nature – everything from the air outside to the dirt on the ground – is interdependent. Medicine studies humans in health and sickness. +From another point of view, humans and nature can be said to be in conflict. People always use natural resources. They cut down trees, mine ores, grow crops and manufacture things from natural material. Fires, cars, and factories make a lot of smoke and harm many places. People who like to leave nature unharmed and those who feel they need to use more of nature often fight about what they should do. In the modern world, with many more people and many big cities, these problems are becoming more serious. +Nature, in the broadest sense, means the physical world as a whole. This is the meaning that physics, the study of nature (etymologically), takes. +A useful definition of "natural" is +"Happening or operating in accordance with the ordinary course of nature". "Oxford Shorter English Dictionary" says the word in this sense is first found in 1477. +Other websites. + Media related to at Wikimedia Commons +References. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Nauru.txt b/.github/workflows/data/simplewiki-500/Nauru.txt new file mode 100644 index 000000000..7fcdcee96 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Nauru.txt @@ -0,0 +1,15 @@ +Nauru, ( ) is a island nation in the South Pacific. Its nearest neighbour is Kiribati, east. Nauru is the smallest island nation, covering just , the smallest republic, and the only republican state without a capital. With 10,670 residents, it is the third least-populated country after Vatican City and Tuvalu. +Nauru is a phosphate rock island, and its main export since 1907 has been phosphate. English and Nauruan are the official languages. The president is David Adeang. +Geography. +Nauru is a oval-shaped island in the southwestern Pacific Ocean, south of the equator. The island is surrounded by a coral reef, which can be seen during low tide. Because of this, a harbor can not be built. Canals let small boats get to the island. A an area of ground where plants can easily grow wide lies inland from the beach. +Coral cliffs surround Nauru's plateau (highland). The highest point, the Command Ridge, is above sea level. The only fertile areas are on the coastal belt, where coconut palms flourish. The land surrounding Buada Lagoon supports bananas, pineapples, vegetables, pandanus trees, and hardwoods such as the tomano tree. +Nauru was one of three great phosphate rock (bird droppings) islands in the Pacific Ocean (the others were Banaba (Ocean Island) in Kiribati and Makatea in French Polynesia). The phosphate reserves on Nauru are now almost used up. Phosphate mining in the plateau has left a bare area of land with limestone peaks up to high. Mining has stripped and destroyed about 80 per cent of Nauru's land, and has affected the surrounding Exclusive Economic Zone. About 40 per cent of marine life has been killed by mud and phosphate drainage. +There are only about 60 native vascular plant species on the island. Coconut farming, mining, and introduced species have damaged the island's native vegetation. There are no native land mammals, but there are native insects, land crabs, and birds, including the Nauru Reed Warbler. The Polynesian rat, cats, dogs, pigs, and chickens have been introduced to Nauru from ships. +There are only a few fresh water sources on Nauru. Storage tanks collect rainwater, but the islanders usually have to rely on desalination plants at Nauru's Utilities Agency. +The island's biggest problems are climate change and rising sea levels. Nauru is the seventh most global warming threatened nation due to flooding. At least 80 per cent of the land of Nauru is well elevated, but this area will be uninhabitable until the phosphate mining improvement programme is started +Climate. +Nauru's climate is hot and very humid year-round because of how close it is to the equator and the ocean. Nauru is hit by monsoon rains between November and February, but does not usually have cyclones. How much rain there is every year is highly variable, and is influenced by the El Niño-Southern Oscillation. There have been many droughts in Nauru because of this. The temperature on Nauru ranges between and during the day, and between and at night. +Administrative divisions. +Nauru is divided into fourteen administrative districts. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Nearctic Ecozone.txt b/.github/workflows/data/simplewiki-500/Nearctic Ecozone.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Negative.txt b/.github/workflows/data/simplewiki-500/Negative.txt new file mode 100644 index 000000000..509fbc431 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Negative.txt @@ -0,0 +1,2 @@ +Negative may mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Negentropic.txt b/.github/workflows/data/simplewiki-500/Negentropic.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Negentropy.txt b/.github/workflows/data/simplewiki-500/Negentropy.txt new file mode 100644 index 000000000..44554b122 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Negentropy.txt @@ -0,0 +1,7 @@ +Negentropy is reverse entropy. It means things becoming more in order. Here 'order' means organisation, structure and function: the opposite of randomness or chaos. One example of negentropy is a star system such as the Solar System. Another example is life. +As a general rule, everything in the universe tends towards entropy. Star systems eventually become dead. All energy has gone, and everything in the system is "at the temperature of the surrounding space". The opposite of entropy is negentropy. It is a temporary condition in which certain things are hotter and more highly organised than the surrounding space. This is the second law of thermodynamics: +The second law of thermodynamics states that the total entropy of an isolated system always increases over time. +Life is considered to be negentropic because it converts things which have some order, such as food, into things with more order, such as cells in the body, tissues, and organs. In doing so, it gives off heat. Another example of negentropic things are societies, or social systems, because they take disorderly things such as communications, and make them more orderly and useful. +Notes. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Neptune.txt b/.github/workflows/data/simplewiki-500/Neptune.txt new file mode 100644 index 000000000..82049c646 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Neptune.txt @@ -0,0 +1,46 @@ +Neptune is the eighth and farthest planet from the Sun in the Solar System. It is an ice giant. It is the fourth-largest planet in the system. +Neptune's mass is 17 times Earth's mass and a little bit more than Uranus' mass. Neptune is denser and smaller than Uranus. Because of its greater mass, Neptune's gravity makes its atmosphere smaller and denser. +It was named after the Roman god of the sea, Neptune. Neptune's astronomical symbol is ♆, the trident of the god Neptune. +Neptune's atmosphere is mostly hydrogen and helium. It also contains small amounts of methane which makes the planet appear blue. Neptune's blue color is similar, but slightly darker, than the color of Uranus. Neptune also has the strongest winds of any planet in the Solar System, as high as 2,100 km/h or 1,300 mph. +Urbain Le Verrier and John Couch Adams were the astronomers who discovered Neptune. Neptune was not discovered using a telescope. It was the first planet to be discovered using mathematics. In 1821, astronomers saw that Uranus' orbit was different from what they expected. Another nearby planet's mass was changing Uranus' orbit. They found Neptune was the cause. +"Voyager 2" visited Neptune on 25 August 1989. It was the only spacecraft to visit the planet. Neptune used to have a huge storm known as the "Great Dark Spot". "Voyager 2" discovered the spot in 1989. The dark spot was not seen in 1994, but new spots were found since then. It is not known why the dark spot disappeared. Visits by other space probes have been planned. +Neptune has five rings surrounding it. However, the rings are hard to see from Earth. +History. +Discovery. +Galileo Galilei was the first person to see Neptune. He saw it on 28 December 1612 and 27 January 1613. His drawings showed the points where Neptune is placed, it is near Jupiter. But Galileo was not credited for the discovery. He thought Neptune was a "fixed star" instead of a planet. Because Neptune moved slowly across the sky, Galileo's small telescope was not strong enough to see that Neptune was a planet. +In 1821, Alexis Bouvard published the astronomical tables of the orbit of Uranus. Later observations showed that Uranus was orbiting in an irregular way. Some astronomers thought this was caused by another large planet. In 1843, John Couch Adams calculated the orbit of an eighth planet that could possibly affect the orbit of Uranus. He sent his calculations to Sir George Airy, the Astronomer Royal. George Airy asked Adams for an explanation. In 1846, Urbain Le Verrier made his own calculations but also failed to get much attention from French astronomers. Airy saw his calculations and encouraged James Challis to search for the planet. Challis began his search in July 1846. Meanwhile, Le Verrier had convinced Johann Gottfried Galle to search for the planet. +Heinrich d'Arrest, a student at the Berlin Observatory, suggested that a newly drawn map of the sky in the region of Le Verrier's predicted area could be compared with the current sky. This map was needed to look for the change of position of a planet, compared to a fixed star. Neptune was discovered the same night on 23 September 1846. It was found 1° from where Le Verrier had thought it would be. It was about 1.5° from Adams' prediction. Challis later found out that he had seen the planet twice in August. He did not recognize it at the time because of his careless work approach. Neptune became the first planet to be discovered by mathematical calculations instead of a telescope. +Crediting and naming. +When Neptune was discovered, the French and the British could not agree on who would get credit for the discovery. Later, an international agreement decided that both Le Verrier and Adams deserved credit. However, historians reviewed the topic after the rediscovery in 1998 of the "Neptune papers" (historical documents from the Royal Greenwich Observatory). It had seemingly been stolen by astronomer Olin Eggen for almost 30 years. It was only found again (in his ownership) shortly after his death. After looking at the documents, some historians now think that Adams does not deserve equal credit with Le Verrier. +Shortly after its discovery, Neptune was temporarily called "the planet exterior to Uranus" or "Le Verrier's planet". The first suggestion for a name came from Galle. He proposed the name "Janus". In England, Challis suggested the name "Oceanus". In France, Arago suggested that the new planet be called "Leverrier", but a lot of people outside France disagreed with this. French almanacs quickly reintroduced the name "Herschel" for Uranus and "Leverrier" for Neptune. +Meanwhile, Adams suggested changing the name "Georgian" to "Uranus", while Le Verrier (through the Board of Longitude) suggested "Neptune" for the new planet. Struve supported the name "Neptune" on 29 December 1846, to the Saint Petersburg Academy of Sciences. Soon, "Neptune" was internationally agreed as the official name for the new planet. In Roman mythology, Neptune was the god of the sea, identified with the Greek god, Poseidon. Neptune's astrological symbol is Neptune's trident (♆). +Structure. +Mass and composition. +Neptune's mass is between that of the Earth and the largest gas giants. Neptune is the fourth largest planet in the Solar System and the third most massive. Neptune is 17 times the mass of Earth, but just ​1⁄18 the mass of Jupiter. Neptune is a little bit more massive than Uranus, though Neptune is denser and smaller in size than Uranus. Neptune and Uranus are often considered a part of "ice giants" (a sub-class of gas giants). They are smaller in size than Jupiter and Saturn, and have different compositions. To search extrasolar planets, Neptune has been used as a reference to compare the size and structure of other discovered planets. Some discovered planets that have similar masses like Neptune are often called "Neptunes". +The atmosphere of Neptune is made up mostly of hydrogen, with a smaller amount of helium. A tiny amount of methane was also detected in the atmosphere. The methane gives Neptune its blue color. The color of Neptune is similar, but slightly darker, than the color of Uranus. +Because of Neptune's far distance from the Sun, it gets very little heat. The average surface temperature on Neptune is about −201°C (−331 °F; 72 K). Therefore, at its surface Neptune is the coldest planet in the Solar System. +But in the depths of the planet, the temperature rises. The source of this heating is unclear. Neptune is the farthest planet from the Sun, yet its internal energy is strong enough to create the fastest winds seen in the Solar System, at . Several possible explanations have been suggested. Firstly, radiogenic heating from the planet's core. Among the explanations is the continued radiation into space of leftover heat made by infalling matter during the planet's birth. Another explanation is gravity waves breaking above the tropopause. It has also been suggested that the friction and ram pressure of the diamond hail heats up the planet. +The structure inside Neptune is thought to be similar to the structure inside Uranus. There is likely to be a core, thought to be about 1.5 Earth masses. It is made up of molten rock and metal surrounded by rock, water, ammonia, and methane. This mixture is referred to as icy. It is called a water-ammonia ocean. More mixtures of methane, ammonia, and water are found in the lower areas of the atmosphere. At a depth of 7,000 km of Neptune, the methane may decomposes into diamond crystals. These diamond crystals look like hailstones. +Weather and magnetic field. +One difference between Neptune and Uranus is the level of its meteorological activity. When the Voyager spacecraft flew by Uranus in 1986, the winds on that planet were observed not so strong as on Neptune. When Voyager flew by Neptune in 1989, powerful weather events were observed. The weather of Neptune has very active storms. Its atmosphere has the highest wind speeds in the Solar System. It may be powered by internal heat flow. Regular winds in the equatorial region have speeds of around 1,200 km/h (750 mph). Winds in storm systems can reach up to 2,100 km/h, near-supersonic speeds. +In 1989, the Great Dark Spot, an anticyclonic storm system, was discovered by NASA's "Voyager 2" spacecraft. On 2 November 1994, the Hubble Space Telescope did not see the Great Dark Spot on the planet. Instead, a new storm similar to the Great Dark Spot was found in the planet's northern hemisphere. The reason why the Great Dark Spot has disappeared is unknown. The Scooter is another storm, a white cloud group farther south than the Great Dark Spot. Its nickname was given when first noticed in the months leading up to the "Voyager" encounter in 1989. It moved faster than the Great Dark Spot. Later images showed clouds that moved even faster than Scooter. The Wizard's Eye/"Dark Spot 2" is another southern cyclonic storm, the second strongest storm seen during the 1989 encounter. It originally was completely dark, but as "Voyager" came closer to the planet, a bright core developed. +In August 2023, the clouds vanished. The possible reason is solar flare. 30 years of Neptune' weather observations by Hubble Space Telescope showed that cloud activity is related to solar cycles. +Neptune also has similarities with Uranus in its magnetosphere. However, Uranus' magnetosphere is weaker than Neptune's magnetosphere. The magnetic field is strongly tilted compared to its rotational axis at 47°. It is offset at least 0.55 radii (about 13,500 kilometres, bigger than the Earth's diameter, for scale) from the planet's physical center. The unusual course may be caused by flows in the interior of the planet. +Neptune has a similar axial tilt to Earth, so it will have seasons. Its seasons last about 40 years. +Neptune's rings. +There are five rings around the planet. They are not as well known as the rings of Saturn. The rings were discovered by a team led by an American scientist Edward Guinan in 1968. Then, in the mid-1980s astronomers thought that the rings might not be complete. Stellar occultations were found that rarely showed an extra "blink" just before or after the planet moved in front of the star. However, "Voyager 2" showed that they were complete. The planetary rings of Neptune have a weird "clumpy" arrangement. Scientists think that it may be because of the gravitational contact with small moons that orbit near them. Pictures showed that the ring system had several faint rings. The farthest ring, Adams, has five arcs named "Courage", "Liberté", "Egalité 1", "Egalité 2", and "Fraternité" (Courage, Liberty, Equality, and Fraternity). +The laws of motion predict that arcs will spread out into one ring in a very short time. But the arcs in Neptune's rings somehow did not. A moon's gravity may have created the arcs. Galatea is a moon just inside the Adams ring. However, in 2005, scientists figured out that Neptune's rings were more unstable than previously believed. The "Liberté" arc may disappear in roughly less than 100 years. +Neptune's moons. +Neptune has 16 known moons. As Neptune was the Roman god of the sea, the planet's moons were named after lesser sea gods or goddesses. +The largest moon of Neptune is Triton. Triton was discovered on 10 October 1846 by British astronomer William Lassell. Unlike all other large planetary moons, Triton orbits in the other direction to the other moons. This shows the moon was probably captured. It is close enough to Neptune to be locked into a synchronous orbit. It is also slowly moving into Neptune and may one day be torn apart when it passes the Roche limit. Triton is the coldest object that has been measured in the Solar System, with temperatures of −235 °C (38 K, −392 °F). +Neptune's second known moon (by order of discovery), the odd moon Nereid, has one of the most unusual orbits of any satellite in the Solar System. Nereid is so far from Neptune that it requires 360 Earth days to make one orbit. It causes the largest elliptical orbit and the largest deviation from a circular path. +Some of these moons have been speculated to have been possible Kupier belt objects, which in turn became a part of Neptune's orbit. +From July to September 1989, "Voyager 2" discovered six new moons of Neptune. Of these, Proteus is the second most massive Neptunian moon. It has only one quarter of 1% of the mass of Triton. Neptune's closest four moons, Naiad, Thalassa, Despina, and Galatea, orbit close enough to be inside Neptune's rings. The next farthest out, Larissa was discovered in 1981 when it had covered up light from a star. The moon was credited for causing Neptune's ring arcs when "Voyager 2" observed Neptune in 1989. Five new unusual moons discovered between 2002 and 2003 were announced in 2004. The latest moon, Hippocamp, was discovered from examining Hubble Telescope images on 16 July 2013. +Observation. +Neptune cannot be seen by just looking at the sky with the naked eye. To see it, a telescope or binoculars is needed. This is because Neptune has a normal brightness between magnitudes +7.7 and +8.0. It can be outshined by Jupiter's Galilean moons, the dwarf planet Ceres, and the asteroids 4 Vesta, 2 Pallas, 7 Iris, 3 Juno and 6 Hebe. A telescope or strong binoculars show Neptune as a small blue dot that looks similar to Uranus. The blue color comes from the methane in its atmosphere. Its small size in the night sky has made it difficult to study visually. Most telescopic data was quite limited until the arrival of the Hubble Space Telescope and large ground-based telescopes with adaptive optics. +The average distance between Neptune and the Sun is about 4.5 billion km. Therefore, Neptune completes its orbit once every 164 years. On 12 July 2011, Neptune completed its first orbit since its discovery in 1846. +Exploration. +Currently, only one spacecraft has visited Neptune. NASA's "Voyager 2" probe made a quick fly-by of the planet with its closest encounter on 25 August 1989. +One of "Voyager 2"'s important discoveries was its very close fly-by of Triton, where it took pictures of several parts of the moon. The pictures were sent back to Earth from "Voyager 2" in 1989. The probe also discovered the Great Dark Spot. However, it had now disappeared after the Hubble Space Telescope took pictures of Neptune in 1994. Originally thought to be a large cloud or cyclonic storm system. It was later guessed to be a hole in the visible cloud deck. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Network.txt b/.github/workflows/data/simplewiki-500/Network.txt new file mode 100644 index 000000000..a5094b89d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Network.txt @@ -0,0 +1,3 @@ +Network might refer to: +Related pages. +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/New York City.txt b/.github/workflows/data/simplewiki-500/New York City.txt new file mode 100644 index 000000000..faf500f1d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/New York City.txt @@ -0,0 +1,87 @@ +New York, often called New York City (NYC), is the most populous city in the United States. It is at the southern end of the U.S. state of New York. Over 8 million people currently live in the city, and over 22 million people live in the bigger New York metropolitan area. It is the financial capital of the U.S. because it is home to the nation's stock market, Wall Street, and the One World Trade Center. +New York City is on one of the world's largest natural harbors. It is made up of five boroughs, each of which is a county of the state of New York. The five boroughs—Brooklyn, Queens, Manhattan, the Bronx, and Staten Island—were combined into one city in 1898. The city and its metropolitan area are an important place for legal immigration to the United States. As many as 800 languages are spoken in New York, making it the most linguistically diverse city in the world. New York has more than 3.2 million people born outside the United States, the biggest foreign-born population of any city in the world as of 2016. +New York City started as a trading post created by colonists from the Dutch Republic in 1624 on Lower Manhattan; the post was named New Amsterdam in 1626. In 1664, the English controlled the city and the areas around it, and were renamed "New York" after King Charles II of England gave the lands to his brother, the Duke of York. New York was the capital of the United States from 1785 until 1790, and has been the biggest U.S. city since 1790. The Statue of Liberty welcomed millions of immigrants as they came to the U.S. by ship in the late 19th and early 20th centuries, and it is a symbol of the U.S. and its ideals of liberty and peace. In the 21st century, New York has grew into a global hub of creativity and entrepreneurship and environmental sustainability, and as a symbol of freedom and cultural diversity. In 2019, New York was voted the best city in the world in a survey of over 30,000 people from 48 cities worldwide, because of its cultural diversity. +Many districts and landmarks in New York City are well known, including three of the world's ten most visited tourist places in 2013. A record 62.8 million tourists came to New York City in 2017. Times Square is the colorful area of the Broadway Theater District, one of the world's busiest pedestrian intersections, and a famous area for the world's entertainment industry. Many of the city's landmarks, skyscrapers, and parks are known around the world. Manhattan's real estate market is one of the most expensive in the world. New York has more Greek people outside of Greece than anywhere in the world, with many Chinatowns across the city. The New York City Subway is the biggest single-operator rapid transit system worldwide, with 472 rail stations. The city has over 120 colleges and universities, including Columbia University, New York University, Rockefeller University, and the City University of New York system, which is the biggest urban public university system in the United States. The world's two largest stock exchanges, the New York Stock Exchange, located on Wall Street in the Financial District of Lower Manhattan, and NASDAQ, headquartered in Midtown Manhattan, are both in Manhattan. +History. +Name. +In 1664, the city was named after the Duke of York, who would become King James II of England. James's older brother, King Charles II, had chosen the Duke proprietor of the former territory of New Netherland, including the city of New Amsterdam, which England had recently taken from the Dutch. +Early history. +The oldest part of the city, the island of Manhattan, still has its original Lenape name. Although Native people such as the Lenape and Canaries had lived there for many thousands of years, New York City was first explored by Europeans in the 1500s. When Florentine explorer Giovanni da Verrazzano found the entrance to New York Harbor in the year 1524, he gave to this site the name of New Angoulême in the honor of Francois 1st. In 1609, the English explorer Henry Hudson rediscovered New York Harbor while looking for the Northwest Passage to the Orient for the Dutch East India Company. Hudson's first mate said it was "a very good Harbour for all windes" and the river was "a mile broad" and "full of fish". +Juan Rodriguez (transliterated to Dutch as "Jan Rodrigues") was one of the first people associated with Europe to live there. He was a merchant from Santo Domingo. He was born in Santo Domingo of Portuguese and African descent, and he came to Manhattan during the winter of 1613–14. He trapped for pelts and traded with the local people as a representative of the Dutch. Broadway, from 159th Street to 218th Street in Upper Manhattan, is named Juan Rodriguez Way in his honor. +Dutch control. +New York City was settled by Europeans from The Netherlands in 1624. The Dutch called the whole area of New York Netherland (New Netherland) and they named a fort and town on the south end of Brooklyn. +In 1626, the Dutch colonial Director-General Peter Minuit, acting for the Dutch West India Company, bought the island of Manhattan from the "Canarsie", a small Lenape band. He paid "the value of 60 guilders" (about $900 in 2018). A false story says that Manhattan was bought for $24 worth of glass beads. 1626 was also the year the Dutch began to bring black slaves there. +After the purchase, New Amsterdam grew slowly. In 1647, Peter Stuyvesant started his job as the last Director-General of New Netherland. During this time, the number of people of New Netherland grew from 2,000 to 8,000. +Island New Amsterdam (New Amsterdam), after the capital city of the Netherlands, which was to become present-day New York. The English took over the colony in 1664 during the second Anglo-Dutch War. They changed the name to New York, to honor the Duke of York, who later became King James II of England and James VII of Scotland. The Dutch surrendered Nieuw Amsterdam without fighting. +English control. +By the time the English took New York, there were many other Dutch towns in what would become New York City, including Breukelen (Brooklyn), Vlissingen (Flushing), and Nieuw Haarlem (Harlem). There were already some English towns in the area also, such as Gravesend in Brooklyn and Newtown in Queens. Dutch, English and other people had been living together in New York for a long time. +New York became more important as a trading port while under British rule in the early 1700s. It also became a center of slavery as the British increased the slave trade and built a slave market in the city. 42% of households owned slaves by 1730, the highest percentage outside Charleston, South Carolina. +The 1735 trial and acquittal in Manhattan of John Peter Zenger, who had been accused of seditious libel after criticizing colonial governor William Cosby, helped to create the freedom of the press in North America. In 1754, Columbia University was created under charter by King George II; it was called King's College, and it was in Lower Manhattan. +American Revolution. +New York quickly grew to become a large and important port city. The Stamp Act Congress met in New York in October 1765, as the Sons of Liberty. It organized in the city, and they skirmished over the next ten years with British troops stationed there. The important Battle of Long Island of the American Revolution was fought in Brooklyn in 1776; it was the biggest battle of the war. The Americans lost the battle. The British used the area as its headquarters for the war in North America. +New York was the capital of the United States under the Articles of Confederation from 1785 to 1788. When the US Constitution was made, it stayed as the capital from 1789 until 1790. In 1789, the first President of the United States, George Washington, was inaugurated; the first United States Congress and the Supreme Court of the United States each met for the first time, and the United States Bill of Rights was written, all at Federal Hall on Wall Street. By 1790, New York grew bigger than Philadelphia, so it become the biggest city in the United States. By the end of 1790, because of the Residence Act, Philadelphia became the new capital. +Nineteenth century. +During the nineteenth century, New York City's population grew from ~60,000 to ~3.43 million. The number of black people in New York City reached more than 16,000 in 1840. Even though slavery and the slave trade were abolished in New York, the slave trade continued illegally for many years. +The Great Irish Famine brought a many Irish immigrants; more than 200,000 were living in New York by 1860, more than a quarter of the city's population. There was also many people from German provinces, and Germans made up another 25% of New York's population by 1860. +During the American Civil War, many white people in the city supported the Confederate States of America, and July 1863 they killed many black New Yorkers in a riot. +Modern history. +In 1898, the cities of New York and Brooklyn came together with the Bronx, Staten Island, and the western towns in Queens County to make Greater New York. This is the total area of the City of New York today. Around this time, many new immigrants came into New York City. They came in at Ellis Island, an island in New York's harbor near the Statue of Liberty. Many of them then moved to the Lower East Side neighborhood in Manhattan, which had over a million people living in just a few square miles. +Early in the twentieth century, with better transportation, more people moved to outer parts of the greater city, and many commuted to Manhattan. Many skyscrapers and other big buildings were put up to provide places to work. +In the 1970s, many jobs were lost due to industrial restructuring. This caused New York City to have economic problems and high crime rates. Though the financial industry grew, which greatly helped the city's economy in the 1980s, New York's crime rate continued to increase through that decade and into the beginning of the 1990s. By the mid 1990s, crime rates started to drop a lot due to different police strategies, better economic opportunities, gentrification, and new residents, both Americans and new immigrants from Asia and Latin America. Important new sectors, such as Silicon Alley, started in the city's economy. New York's population reached all-time highs in the 2000 census and then again in the 2010 census. +New York had most of the economic damage and biggest loss of human life from the September 11, 2001 attacks. Two of the four planes taken over that day were flown into the twin towers of the World Trade Center, destroying them and killing 2,192 civilians, 343 firefighters, and 71 police officers. The North Tower became the tallest building ever to be destroyed anywhere. +Hurricane Sandy brought a destructive storm surge to New York City on the evening of October 29, 2012, flooding numerous streets, tunnels and subway lines in Lower Manhattan and other areas of the city and cutting off electricity in many parts of the city and its suburbs. +Geography. +During the Wisconsin glaciation, 75,000 to 11,000 years ago, the New York City area was at the edge of a big ice sheet over deep. Erosion and the ice moving lead to the creation of what is now Long Island and Staten Island. It also left bedrock at a shallow depth, providing a solid foundation for most of Manhattan's skyscrapers. +New York City is located in the Northeastern United States, in southeastern New York State, approximately halfway between Washington, D.C. and Boston. The city includes all of Manhattan Island and Staten Island, and the western end of Long Island. There are also many smaller islands. +Water divides several parts of the city. The Hudson River flows through the Hudson Valley into New York Bay. Between New York City and Troy, New York, the river is an estuary. The Hudson River separates the city from the U.S. state of New Jersey. Part of the Hudson River forms the border between Manhattan and the Bronx on one side, and the State of New Jersey on the other side. The East River forms the border between Manhattan on one side, and Brooklyn and Queens on the other side. The Harlem River forms the border between Manhattan and the Bronx (except for a small part of Manhattan that is on the mainland). Part of Long Island Sound separates the Bronx and Queens. Newtown Creek is part of the border between Brooklyn and Queens. Some parts of the city are very separate from the others because of water, such as Rockaway in Queens and City Island in the Bronx. A small piece of land in Manhattan is international territory and belongs to the United Nations Headquarters. The country of Somalia is the only country whose national flag copied the colors of the UN. The Bronx River, which flows through the Bronx and Westchester County, is the only entirely fresh water river in the city. +The city's total area is , including of land and of this is water. The tallest place in the city is Todt Hill on Staten Island. It is at above sea level, and it is the tallest place on the Eastern Seaboard that is south of Maine. The summit of the ridge is mostly woodland as part of the Staten Island Greenbelt. +The hallmark of New York city is its many skyscrapers, especially in Manhattan. In New York City there are about 5600 skyscrapers. 48 of them are over 200 metres tall, which is the highest number of skyscrapers in one area in the world. +Boroughs. +New York City has five boroughs: Manhattan, Brooklyn, Queens, the Bronx, and Staten Island. +Manhattan. +Manhattan (New York County) is the geographically smallest and most densely populated borough. It has Central Park and most of the city's skyscrapers. It is sometimes locally known as "The City". +Brooklyn. +Brooklyn (Kings County), on the western end of Long Island, has the most people living in it than any other borough. Brooklyn is known for its cultural, social, and ethnic diversity, an independent art scene, unique neighborhoods, and unique architecture. +Queens. +Queens (Queens County), on Long Island north and east of Brooklyn, is geographically the biggest borough and the most ethnically diverse county in the United States. It is also the most ethnically diverse urban area in the world. +The Bronx. +The Bronx (Bronx County) is New York City's northernmost borough. It is the only New York City borough with most of the land being on the mainland United States. The Yankee Stadium, the baseball park of the New York Yankees, and the biggest cooperatively owned housing complex in the United States, Co-op City, are in the Bronx. The Bronx Zoo, the world's largest metropolitan zoo, is also in the Bronx. It is big and has more than 6,000 animals. Rap and hip hop culture were created in the Bronx. Pelham Bay Park is the biggest park in New York City, at . +Staten Island. +Staten Island (Richmond County) is the most suburban of the five boroughs. Staten Island is connected to Brooklyn by the Verrazano-Narrows Bridge. It is connected to Manhattan by way of the free Staten Island Ferry, a daily commuter ferry which has clear views of the Statue of Liberty, Ellis Island, and Lower Manhattan. In central Staten Island, the Staten Island Greenbelt is about big, including of walking trails and one of the last untouched forests in the city. +Climate. +Under the Köppen climate classification, New York City experiences a humid subtropical climate ("Cfa") and a humid continental climate ("Dfa"). The average temperature in January, the area's coldest month, is . However, temperatures in winter could for a few days be as low as and as high as . Summers are typically hot and humid with a July average of . New York City gets some snow in winter. +People. +New York City currently has over 8 million people. Over 20 million people live in the New York metropolitan area including the city. The majority of the people in New York City belong to ethnic groups that are minorities in the US. New York City has had large numbers of immigrants for centuries. In the early 19th Century, they came from Ireland and Germany. Later in the 19th century, they came from Italy, Russia and Eastern Europe. Today, many are from Puerto Rico, Haiti, the Dominican Republic and Colombia. Other ethnic groups living in New York City are Turks, Indians, Mexicans, Filipinos, Eastern Europeans, Jamaicans, Trinidadians, Caribbeans and Chinese. New York City has one of the largest Hispanic and Latino population in the United States. +Economy. +New York City is a global hub of business and commerce, as a center for banking and finance, retailing, world trade, transportation, tourism, real estate, new media, traditional media, advertising, legal services, accountancy, insurance, theater, fashion, and the arts in the United States. The Port of New York and New Jersey is also a big part of the economy. It received a record cargo volume in 2017, over 6.7 million TEUs. New York City's unemployment rate fell to its record low of 4.0% in September 2018. +Many Fortune 500 companies are headquartered in New York City, as are many multinational corporations. One out of ten private sector jobs in the city is with a foreign company. New York City has been ranked first among cities around the world in getting capital, business, and tourists. New York City's role as the top global center for the advertising industry can be seen with "Madison Avenue". The city's fashion industry has about 180,000 employees with $11 billion in annual wages. +Chocolate is New York City's biggest specialty-food export, with up to $234 million worth of exports each year. Entrepreneurs were creating a "Chocolate District" in Brooklyn as of 2014[ [update]], while Godiva, one of the world's biggest chocolatiers, continues to be headquartered in Manhattan. +Wall Street. +New York City's biggest economic part is the U.S. financial industry, also known as "Wall Street". The city's securities industry, which has 163,400 jobs in August 2013, continues to be the biggest part of the city's financial sector and an important economic part. In 2012, Walls Street made 5.0% of the city's private sector jobs, 8.5% ($3.8 billion) of its tax revenue, and 22% of the city's total wages, including an average salary of $360,700. +In Lower Manhattan, there is the New York Stock Exchange, on Wall Street, and the NASDAQ, at 165 Broadway, representing the world's biggest and second biggest stock exchanges, respectively. Investment banking fees on Wall Street totaled about $40 billion in 2012, while in 2013, senior New York City bank officers who manage risk and compliance functions earned as much as $324,000 every year. In fiscal year 2013–14, Wall Street's securities industry made 19% of New York State's tax revenue. +Many of the world's biggest media conglomerates are also in the city. Manhattan had more than 500 million square feet (46.5 million m2) of office space in 2018, making it the biggest office market in the United States. Midtown Manhattan, with 400 million square feet (37.2 million m2) in 2018, is the biggest central business area in the world. +Media and entertainment. +WNBC NBC +WCBS CBS +WABC American Broadcasting Company +USA Network +Showtime (TV channel) +HBO +New York is an important place for the American entertainment industry, with many movies, television series, books, and other media being set there. As of 2012[ [update]], New York City was the second biggest center for filmmaking and television production in the United States, making about 200 feature films every year, making about 130,000 jobs. The filmed entertainment industry has been growing in New York, providing nearly $9 billion to the New York City economy as of 2015. By amount, New York is the world leader in independent film production—one-third of all American independent films are created there. The Association of Independent Commercial Producers is also based in New York. +New York City is also an important place for the advertising, music, newspaper, digital media, and publishing industries, and it is the biggest media market in North America. Some of the city's media conglomerates and companies include Time Warner, the Thomson Reuters Corporation, the Associated Press, Bloomberg L.P., the News Corporation, The New York Times Company, NBCUniversal, the Hearst Corporation, AOL, and Viacom. Seven of the world's top eight global advertising agency networks have their headquarters in New York. Two of the top three record labels' headquarters are in New York: Sony Music Entertainment and Warner Music Group. Universal Music Group also has offices in New York. +More than 200 newspapers and 350 magazines have an office in the city, and the publishing industry has about 25,000 jobs. Two of the three national daily newspapers with the biggest circulations in the United States are published in New York: "The Wall Street Journal" and "The New York Times", which has won the most Pulitzer Prizes for journalism. Big tabloid newspapers in the city include "The New York Daily News", which was created in 1919 by Joseph Medill Patterson, and "The New York Post", created in 1801 by Alexander Hamilton. The city also has a many ethnic presses, with 270 newspapers and magazines published in more than 40 languages. "El Diario La Prensa" is New York's biggest Spanish-language daily newspaper, and it is the oldest in the United States. "The New York Amsterdam News", published in Harlem, is a big African American newspaper. "The Village Voice", historically the biggest alternative newspaper in the United States, announced in 2017 that it would end publication of its print version, and it will only publish online. +New York is also an important place for non-commercial educational media. The oldest public-access television channel in the United States is the Manhattan Neighborhood Network, created in 1971. +Education. +The New York City Public Schools system, managed by the , is the biggest public school system in the United States. It serves about 1.1 million students in more than 1,700 different primary and secondary schools. +The New York City Charter School Center helps the creation of new charter schools. There are about 900 additional private secular and religious schools in the city. +College and university. +More than 600,000 students are enrolled in New York City's more than 120 colleges and universities, which is the most of any city in the United States and more than other major global cities such as London, and Tokyo. More than half a million are just in the City University of New York (CUNY) system as of 2020[ [update]], including both degree and professional programs. New York City's colleges and universities had also higher average scores than those two cities in 2019, according to the Academic Ranking of World Universities. New York City has many famous private universities such as Barnard College, Columbia University, Cooper Union, Fordham University, New York University, New York Institute of Technology, Rockefeller University, and Yeshiva University; many of these universities are ranked as some of the best universities in the world. +Government. +The mayor of New York is Eric Adams, a Democrat. The city also has a City Council that makes some local laws. Most laws in New York City are set by the state government in Albany. +Transportation. +Subway transportation is provided by the New York City Subway system, one of the biggest in the world. Pennsylvania Station, the busiest train station in the United States, is here. +John F. Kennedy International Airport, which is in the Queens borough of New York, is one of the busiest airports in the United States. +References. +<templatestyles src="Reflist/styles.css" /> +Notes +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Niihau.txt b/.github/workflows/data/simplewiki-500/Niihau.txt new file mode 100644 index 000000000..cb4298d74 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Niihau.txt @@ -0,0 +1,9 @@ +Niihau (or Niʻihau) is the smallest of the inhabited islands of Hawaii, in the United States. It has a land area of 70 sq. miles (184 km2). It is the oldest of the eight main islands. +Ownership. +The whole island is owned by the Robinson family. They bought it from the Kingdom of Hawaii for $10,000. It was said that the buyer, Elizabeth Sinclair (later Sinclair-Robinson), liked the island better than other places such as Waikiki, Pearl Harbor, and the island of Lanai. There is a small US Navy base where a few Navy people work. +Inhabitants. +The island has fewer than a hundred permanent inhabitants. Almost all of them are native Hawaiians. They support themselves largely with small family farms. Many work for the ranch owned by the Robinsons. The native Hawaiians lead a rural, low-tech life. They speak the Hawaiian language and keep traditions alive. This is because Ms. Sinclair promised to help preserve Hawaiian culture and tradition when she bought the island. Niihau is the only one of the Hawaiian islands where the Hawaiian language is the main language. +Tourism. +Niihau is also known as the "Forbidden Island". This is due to the fact that until recently, the island was off-limits to all but family members, US Navy personnel, government officials and expressly invited guests. Now, tourists can go on one of a limited number of supervised tours or hunting safaris. +Beaches. +On the beaches of the island are found shells which are the only shells to be classified as gems. Niihau shells and the jewelry made from them are very popular. Many, especially those with darker and richer color, are collectors items. The sale of shells and shell jewelry brings extra money for the local people. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/No Sense.txt b/.github/workflows/data/simplewiki-500/No Sense.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Non-profit.txt b/.github/workflows/data/simplewiki-500/Non-profit.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Nonsense.txt b/.github/workflows/data/simplewiki-500/Nonsense.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/North America.txt b/.github/workflows/data/simplewiki-500/North America.txt new file mode 100644 index 000000000..0b530b662 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/North America.txt @@ -0,0 +1,8 @@ +North America is a large continent in the Northern and Western Hemispheres of Earth. It is to the east of the Pacific Ocean, the west of the Atlantic Ocean, the south of the Arctic Ocean, and it is the northern part of the Americas. The southernmost part is Central America. It is the third largest continent in the world after Asia and Africa. North America has a population of around 528 million and is the 4th most populous continent in the world. +North America has three subregions which are the Caribbean, Central America, and North America. Depending on how it is used, "North America" can be used to mean as the continent as a whole to include all 23 countries or as a subregion to mean Canada, Mexico, and the United States only. +Hundreds of millions of years ago, North America was part of a larger ancient supercontinent named Laurasia. A few million years ago, a new land bridge arose and connected North America to South America. Beringia connected North America to Siberia a few times during ice ages in the past 20,000 years. North America has many warm tropical islands such as the Bahamas. North America is currently north of South America. +Notes. +<templatestyles src="Reflist/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Noun.txt b/.github/workflows/data/simplewiki-500/Noun.txt new file mode 100644 index 000000000..c8e0d9c1c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Noun.txt @@ -0,0 +1,33 @@ +A noun is a kind of word (see part of speech) that is usually the name of something such as a person, place, thing, animal, or idea. In English, nouns can be singular or plural. +Nouns often need a word called an article or (like "the" or "that"). These words usually do not go with other kinds of words like verbs or adverbs. (For example, people do not also describe nouns). In English, there are more nouns than any other kind of word. +Every language in the world has nouns, but they are not always used in the same ways. They also can have different properties in different languages. In some other languages, nouns do not change for singular and plural, and sometimes there is no word for "the". +Examples of nouns: "time, people, way, year, government, day, world, life, work, part, number, house, system, company, end, party, information". +History. +The word noun comes from the Latin "nomen" meaning "name." Words like nouns were described in early days by the Sanskrit grammarian and ancient Greeks like Dionysios Thrax. Also in ancient Tamil like "Peyarchol" +Uses of nouns. +In English sentences, nouns can be used as a subject, object, or complement. They often come after prepositions, as the 'object of preposition'. +Nouns can sometimes describe other nouns (such as a soccer ball). When they do this, they are called modifiers or adjuncts. +There are also verb forms that can be used in the same way as nouns (such as 'I like "running".') These are called "verbals" or "verbal nouns", and include "participles" (which can also be adjectives) and "infinitives". +Nouns are classified into common and proper. Pronouns have commonly been considered a different part of speech from nouns, but in the past some grammars have included them as nouns as do many modern linguists. +Proper nouns. +Proper nouns (also called proper name) are specific names. Examples of proper nouns are: "London, John, God, October, Mozart, Saturday, Coke, Mr. Brown, Atlantic Ocean." Proper nouns are individual things with names, not general nouns. +Proper nouns begin with an (capital) letter in English and many other languages that use the Roman alphabet. (However, in German, all nouns begin with an upper case letter.) The word "I" is really a pronoun, although it is capitalized in English, like a proper noun. +Some common nouns (see below) can also be used as proper nouns. For example, someone might be named "Tiger Smith" -- even though he is not a tiger or a smith. +Common nouns. +Common nouns are general names. Sometimes the same word can be either a common noun or a proper noun, depending on how it is used; for example: +Countability. +In English and many other languages, nouns have 'number'. But some nouns are only singular (such as "furniture, physics") and others are only plural (such as "clothes, police"). Also, some nouns are countable (for example, "one piece, two pieces") but others are uncountable (for example, we do not say "one furniture, two furnitures"). +The plural form of most nouns is created simply by adding the letter(s) -(e)s. +Despite plural forms being written using the letter(s) -(e)s, the pronunciation of the letter(s) will pronounced as /-s/, /-z/, or /-ız/ depending on which type of phoneme, or unique sound, comes before it. These variations of the plural morpheme are called allomorphs. +Some dictionaries list "busses" as an acceptable plural for "bus". Presumably, this is because the plural "buses" looks like it ought to rhyme with the plural of "fuse," which is "fuses." "Buses" is still listed as the preferable plural form. "Busses" is the plural for "buss," a seldom used word for "kiss." +There are several nouns that have irregular plural forms. Plurals formed in this way are sometimes called mutated (or mutating) plurals. +Many of the above irregular plural forms stem from Old English, which had more complex rules for making plural forms. +And, finally, there are nouns that maintain their Latin or Greek form in the plural. +Possessives. +Nouns are words for things, and since things can be possessed, nouns can also change to show possession in grammar. In English, we usually add an apostrophe and an "s" to nouns to make them "possessive", or sometimes just an apostrophe when there is already an "s" at the end, like this: +How adjectives become nouns. +Most adjectives become nouns by adding the suffix -ness. Example: Take the adjective 'natural', add 'ness' to get 'naturalness', a noun. To see a list of 100 adjectives used in Basic English, click here. +Word order in noun phrases. +A noun phrase is a phrase where the head word is a noun. In English, the word order of most noun phrases is that determiners, adjectives, and modifying nouns in respective order must appear before the head word, and relative clauses must appear after the head word. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/November.txt b/.github/workflows/data/simplewiki-500/November.txt new file mode 100644 index 000000000..fe541c9cd --- /dev/null +++ b/.github/workflows/data/simplewiki-500/November.txt @@ -0,0 +1,10 @@ +November (Nov.) is the eleventh month of the year in the Gregorian calendar, coming between October and December. It has 30 days. Its name is from the Latin word "novem", which means "nine". It was the ninth month of the year before January and February were added to the Roman Calendar. +November always begins on the same day of the week as March, and additionally, February in common years. November always ends on the same day of the week as August. +The Month. +November is the eleventh month of the year in the Gregorian calendar, after October and before December, which is the last month. November has 30 days. It was the ninth month in the old Roman calendar, which is where its name comes from. It kept its name when January and February were added to the beginning of the year, despite becoming the eleventh month. The ninth month is now September. +November begins on the same day of the week as February in common years and March every year, as each other's first days are exactly 39 weeks (273 days) and 35 weeks (245 days) apart respectively. November ends on the same day of the week as August every year, as each other's last days are exactly 13 weeks (91 days) apart. +In common years, November starts on the same day of the week as June of the previous year, and in leap years, September and December of the previous year. In common years, November finishes on the same day of the week as March and June of the previous year, and in leap years, September of the previous year. +In years immediately before common years, November starts on the same day of the week as August of the following year, and in years immediately before leap years, May of the following year. In years immediately before common years, November finishes on the same day of the week as May of the following year, and in years immediately before leap years, February and October of the following year. +In the Northern Hemisphere, November is an Autumn (Fall) month, and the further north in the hemisphere, the more likely it is to get colder as December approaches. In the Southern Hemisphere it is a Spring month. In each hemisphere, it is the seasonal equivalent of May in the other. +Several observances around the beginning of the month are believed to be related, linked to the old Celtic celebration of Samhain on November 1. These events include Halloween (October 31), Day of the Dead in Mexico (October 31 to November 2), All Saints Day (November 1) and All Souls Day (November 2). +In several mainly Christian countries, it is month in which people who died in war are commonly remembered, mainly related to the end of World War I on November 11, 1918. Near the end of the month Advent, the period leading up to Christmas, begins. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Now.txt b/.github/workflows/data/simplewiki-500/Now.txt new file mode 100644 index 000000000..d32bb458d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Now.txt @@ -0,0 +1,6 @@ +Now is the time span between the past and the future. It can be long (like an eon in geologic time) or short (like a picosecond) but it is almost always used to refer to the span between the present instant to some time horizon when a decision must be made. It can be used to ask or demand that someone make a decision even if they want to delay. +"I want to know what you think, now." +"What do you think now?" +"Now is the time for all good people to come to the aid of their country." +Mathematics and measurement assume that everything used in one equation equals the same quantities at the beginning of calculation or axiomatization as at the end. That means it is mathematically correct to say that the idea of "equal" means "equal from the time the process starts to the time it ends." In General Semantics and E Prime the words equal, remain (for the past until now) and become (for now into the future) replace the verb "to be" for this reason. +Algebra is now often called snapshot algebra or algebra of seeing because of this dependence on time. If any action or event were possible between steps in algebraic analysis, then, in theory, one would have to start over as if one had no knowledge of the new state at all. For these reasons the idea of statistics and also knowledge and knowledge management are sometimes questioned, for instance, in the book "Lies, Damn Lies, and Statistics". A major issue is the comparing of numbers gathered in the past, and now, after some key conditions change. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Number.txt b/.github/workflows/data/simplewiki-500/Number.txt new file mode 100644 index 000000000..71960f4eb --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Number.txt @@ -0,0 +1,69 @@ +A number is a concept from mathematics, used to count or measure. Depending on the field of mathematics, where numbers are used, there are different definitions: +Numbers are also used for other things like counting. Numbers are used when things are measured. Numbers are used to study how the world works. Mathematics is a way to use numbers to learn about the world and make things. The study of the rules of the natural world is called science. The work that uses numbers to make things is called engineering. No number before 1,000 contains the letter A. +Numbering methods. +Numbers for people. +There are different ways of giving symbols to numbers. These methods are called number systems. The most common number system that people use is the "base 10" number system. The "base 10" number system is also called the decimal number system. The base 10 number system is common because people have 10 fingers and 10 toes. There are 10 different symbols (0, 1, 2, 3, 4, 5, 6, 7, 8, and 9) used in the base 10 number system. These 10 symbols are called digits. +A symbol for a number is made up of these 10 digits. The position of the digits shows how big the number is. For example, the number 23 in the decimal number system really means (2 times 10) plus 3. Similarly, 101 means 1 times a hundred (=100) plus 0 times 10 (=0) plus 1 times 1 (=1). +Numbers for machines. +Another number system is more common for machines. The machine number system is called the "binary" number system. The binary number system is also called the base two number system. There are two different symbols (0 and 1) used in the base two number system. These two symbols are called bits. +A symbol for a binary number is made up of these two bit symbols. The position of the bit symbols shows how big the number is. For example, the number 10 in the binary number system really means 1 times 2 plus 0, and 101 means 1 times four (=4) plus 0 times two (=0) plus 1 times 1 (=1). The binary number 10 is the same as the decimal number 2. The binary number 101 is the same as the decimal number 5. +Names of numbers. +English has special names for some of the numbers in the decimal number system that are "powers of ten". All of these power of ten numbers in the decimal number system use just the symbol "1" and the symbol "0". For example, ten tens is the same as ten times ten, or one hundred. In symbols, this is "10 × 10 = 100". Also, ten hundreds is the same as ten times one hundred, or one thousand. In symbols, this is "10 × 100 = 10 × 10 × 10 = 1000". Some other powers of ten also have special names: +When dealing with larger numbers than this, there are two different ways of naming the numbers in English. Under the "long scale", a new name is given every time the number is a million times larger than the last named number. It is also called the "British Standard". This scale used to be common in Britain, but is not often used in English-speaking countries today. It is still used in some other European nations. +Another scale is the "short scale", under which a new name is given every time a number is a thousand times larger than the last named number. This scale is a lot more common in most English-speaking nations today. +Types of numbers. +Natural numbers. +Natural numbers are the numbers which we normally use for counting: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, etc. Some people say that 0 is a natural number, too. The set of all natural numbers is written as formula_1. +Another name for these numbers is positive numbers. These numbers are sometimes written as +1 to show that they are different from the negative numbers. But not all positive numbers are natural (for example, formula_2 is positive, but not natural). +If 0 is called a natural number, then the natural numbers are the same as the whole numbers. If 0 is not called a natural number, then the natural numbers are the same as the counting numbers. So if the words "natural numbers" are not used, then there will be less confusion about whether zero is included or not. But unfortunately, some say that zero is not a whole number, while others say that whole numbers can be negative. "Positive integers" and "non-negative integers" are another way to include zero or exclude zero, but only if people know those words. +Negative numbers. +Negative numbers are numbers less than zero. +One way to think of negative numbers is to use a "number line". We call one point on this line zero. Then we will label (write the name of) every position on the line by how far to the right of the zero point is. For example, the point one is one centimeter to the right, and the point two is two centimeters to the right. +However, the point one centimeter to the left of the zero point cannot be point one, since there is already a point called one. We therefore call this point minus one (−1, as it is one centimeter away but in the opposite direction). +A drawing of a number line is below. +All the normal operations of mathematics can be done with negative numbers: +Since finding the square root of a negative number is impossible for real numbers (as negative times negative equals positive for real numbers), the square root of -1 is given a special name: "i". This is also called the imaginary unit. +Integers. +Integers are all the natural numbers, all their opposites, and the number zero. Decimal numbers and fractions are not integers. +Rational numbers. +Rational numbers are numbers which can be written as fractions. This means that they can be written as "a" divided by "b", where the numbers "a" and "b" are integers, and "b" is not zero. +Some rational numbers, such as 1/10, need a finite number of digits after the decimal point to write them in decimal form. The number one tenth is written in decimal form as 0.1. Numbers written with a finite decimal form are rational. Some rational numbers, such as 1/11, need an infinite number of digits after the decimal point to write them in decimal form. There is a repeating pattern to the digits following the decimal point. The number one eleventh is written in decimal form as 0.0909090909 ... . +A percentage could be called a rational number, because a percentage like 7% can be written as the fraction 7/100. It can also be written as the decimal 0.07. Sometimes, a ratio is considered as a rational number. +Irrational numbers. +Irrational numbers are numbers which cannot be written as a fraction, but do not have imaginary parts (explained later). +Irrational numbers often occur in geometry. For example, if we have a square which has sides of 1 meter, the distance between opposite corners is the square root of two, which equals 1.414213 ... . This is an irrational number. Mathematicians have proved that the square root of every natural number is either an integer or an irrational number. +One well-known irrational number is pi. This is the circumference (distance around) of a circle divided by its diameter (distance across). This number is the same for every circle. The number pi is approximately 3.1415926535 ... . +An irrational number cannot be fully written down in decimal form. It would have an infinite number of digits after the decimal point, and unlike 0.333333 ..., these digits would not repeat forever. +Real numbers. +Real numbers is a name for all the sets of numbers listed above: +The real numbers form the real line. This is all the numbers that do not involve imaginary numbers. +Imaginary numbers. +Imaginary numbers are formed by real numbers multiplied by the number i. This number is the square root of minus one (−1). +There is no number in the real numbers which when squared, makes the number −1. Therefore, mathematicians invented a number. They called this number i, or the imaginary unit. +Imaginary numbers operate under the same rules as real numbers: +Imaginary numbers were called "imaginary" because when they were first found, many mathematicians did not think they existed. The person who "discovered" imaginary numbers was Gerolamo Cardano in the 1500s. The first to use the words "imaginary number" was René Descartes. The first people to use these numbers were Leonard Euler and Carl Friedrich Gauss. Both lived in the 18th century. +Complex numbers. +Complex numbers are numbers which have two parts; a "real" part and an "imaginary" part. Every type of number written above is also a complex number. +Complex numbers are a more general form of numbers. The complex numbers can be drawn on a number plane. This is composed of a real number line, and an imaginary number line. + 3i|_ + | + 2i|_ . 2+2i + | + i|_ + | + |_____|_____|_____|_____|_____|_____|_____|_____| + −2 −1 0 1 2 3 4 5 6 + −i|_ .3−i + | + .−2−2i −2i|_ + | + −3i|_ +All of normal mathematics can be done with complex numbers: +To multiply two complex numbers is more complicated. It is easiest to describe in general terms, with two complex numbers a + bi and c + di. +formula_3 +For example, (4 + 5i) × (3 + 2i) = (4 × 3 − 5 × 2) + (4 × 2 + 5 × 3)i = (12 − 10) + (8 + 15)i = 2 + 23i. +Transcendental numbers. +A real or complex number is called a "transcendental number" if it can not be obtained as a result of an algebraic equation with integer coefficients. +formula_4 +Proving that a certain number is transcendental can be extremely difficult. Each transcendental number is also an irrational number. The first people to see that there were transcendental numbers were Gottfried Wilhelm Leibniz and Leonhard Euler. The first to actually prove there were transcendental numbers was Joseph Liouville. He did this in 1844. +Some well-known transcendental numbers include: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Numeral.txt b/.github/workflows/data/simplewiki-500/Numeral.txt new file mode 100644 index 000000000..e69de29bb diff --git "a/.github/workflows/data/simplewiki-500/N\304\223n\304\223.txt" "b/.github/workflows/data/simplewiki-500/N\304\223n\304\223.txt" new file mode 100644 index 000000000..18076b9fa --- /dev/null +++ "b/.github/workflows/data/simplewiki-500/N\304\223n\304\223.txt" @@ -0,0 +1,7 @@ +The Nēnē, or Hawaiian goose ("Branta sandvicensis") is a species of goose. It is found today on only three Hawaiian islands. It gets its name from its soft call. +This is an unmistakable species, with its generally brown plumage (feathers) and darker head. Its strong toes have much reduced webbing (skin between the toes), an adjustment to the lava flows on which it breeds. The Nēnē goes about on land much more than other water birds. When moulting (dropping old feathers and growing new ones), the Nēnē cannot fly, as do other geese, a factor which made it vulnerable to hunting. +The Nēnē was once among the most threatened waterfowl species around the world. Once common hunting and predators brought to the islands such as mongooses, pigs and cats reduced the population to only 30 birds in the 1950s. However, this species breeds well in captivity (zoos and bird parks), and has been successfully re-introduced. There are also good numbers in wild bird collections. +The Nēnē is the state bird of Hawaii. +References. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/O Canada.txt b/.github/workflows/data/simplewiki-500/O Canada.txt new file mode 100644 index 000000000..12708bc0d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/O Canada.txt @@ -0,0 +1,3 @@ +"O Canada" () is the national anthem of Canada. Calixa Lavallée wrote the music, and Adolphe-Basile Routhier wrote the words in French. It was first sung in French in 1880. Robert Stanley Weir wrote the English words for the song, which are not a translation of the French lyrics, in 1908. +It was sung as the national anthem for many years before the government made it official on 1 July (Canada Day) in 1980. +"O Canada" has been translated into many languages. Some of these languages are spoken by people living in Canada, but they trace their roots in other parts of the globe. These languages include Chinese, Japanese, German, Spanish, Italian, Punjabi, Russian, and Ukrainian. The song has also been translated into indigenous languages (languages spoken by First Nations), such as Inuktitut, Ojibwe, Cree, and Mi'kmaq. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/OK.txt b/.github/workflows/data/simplewiki-500/OK.txt new file mode 100644 index 000000000..fd33c29c7 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/OK.txt @@ -0,0 +1,10 @@ +OK (okay) is a word in the English language. It is used to mean that something is good or correct. It is the opposite of the word bad. +It can often be used instead of the word Yes. It is not certain where the word "OK" originally comes from, but some experts say it came from a funny way of writing "Ol Korrect" (All correct). +It is also the two-letter abbreviation for the state of Oklahoma in the United States of America. +You also find the phrase "Ola kala" in Greek, which means "All Correct". +For example: +I think it is 'ok' to present this project in our office. +Background. +The term appears to have achieved prominence in the United States in 1840, when supporters of the American Democratic political party claimed during the 1840 United States presidential election that it stood for "Old Kinderhook," a nickname for a Democratic presidential candidate, Martin Van Buren, a native of Kinderhook, New York. "'Vote for OK' was snappier than using his Dutch name." In response, Whig opponents attributed "OK", in the sense of "Oll Korrect," to Andrew Jackson's bad spelling. The country-wide publicity surrounding the election appears to have been a critical event in "okay"'s history, widely and suddenly popularizing it across the United States. +Notes. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Oahu.txt b/.github/workflows/data/simplewiki-500/Oahu.txt new file mode 100644 index 000000000..833575806 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Oahu.txt @@ -0,0 +1,8 @@ +Oahu (or Oʻahu) is the third largest of the Hawaiian Islands, in the United States. It means "the gathering place" (a place where people meet) in the Hawaiian language. Most of the people of Hawaii live there (1.0 million of the state's 1.4 million in 2020). The total land area is . Honolulu, the capital city of Hawaii, is on this island. Other well-known places on Oahu are Waikiki, Pearl Harbor, Diamond Head, Hanauma Bay, Kaneohe Bay, and both the North Shore and Makaha (which are famous for very big ocean waves). +History. +Kamehameha I made Oahu his capital when he became the first king of Hawaii. Iolani Palace was built later on by others of the royal family. It is the only royal palace on American soil. +Oahu was perhaps the first of the Hawaiian Islands which the crew of "HMS Resolution" saw on 18 January 1778. This was during Captain James Cook's third Pacific Ocean trip. Europeans did not land on Oahu until 28 February 1779 when Captain Clerke of the "HMS Resolution" stepped ashore at Waimea Bay. Clerke took command of the ship after Captain Cook was killed at Kealakekua Bay on February 14. +Economy. +Today, Oahu has become a tourism and shopping center. Almost 7 million visitors (mainly from the American mainland and Japan) go there every year to enjoy the special island holiday found only in Hawaii. +Oahu in TV. +Oahu can be seen in hundreds of movies and TV shows. Some of them are "Magnum, P.I.", "Lost", "Hawaii Five-O" and "Jake and the Fatman". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/October.txt b/.github/workflows/data/simplewiki-500/October.txt new file mode 100644 index 000000000..6818aaae0 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/October.txt @@ -0,0 +1,12 @@ +October (Oct.) is the tenth month of the year in the Gregorian calendar, coming between September and November. It has 31 days. The name comes from the Latin "octo" for "eight". It was the eighth month of the year before January and February were added to the beginning of the year. +October begins on the same day of the week as January in common years, but does not begin on the same day of the week as any other month in leap years. October always ends on the same day of the week as February, and additionally, January in common years. +The Month. +October is the tenth month of the year in the Gregorian calendar, coming after September and before November. It has 31 days. Its name comes from Latin "octo", meaning eight, as it was the eighth month of the year in the Old Roman Calendar before January and February were added to the beginning of the year, though its name did not change. The tenth month at the time was December. +October is an Autumn (Fall) month in the Northern Hemisphere and a Spring month in the Southern Hemisphere. In each Hemisphere, it is the seasonal equivalent of April in the other. +October begins on the same day of the week as January in common years, but no other month in leap years begins on the same day of the week as October. October ends on the same day of the week as January in common years and February every year, as each other's last days are 39 weeks (273 days) and 35 weeks (245 days) apart respectively. +In common years, October starts on the same day of the week as May of the previous year, and in leap years, August of the previous year. In common years, October finishes on the same day of the week as May of the previous year, and in leap years, August and November of the previous year. +In years immediately before common years, October starts on the same day of the week as April and July of the following year, and in years immediately before leap years, September and December of the following year. In years immediately before common years, October finishes on the same day of the week as July of the following year, and in years immediately before leap years, April and December of the following year. +October is the month of the Rosary devotion. +October 31/November 1 is Samhain in old Pagan tradition. Several current observances at this time are believed to be related to it. They are: Halloween (October 31) in many western traditions, All Saints Day (November 1), All Souls Day (November 2), and the Day of the Dead (October 31 to November 2), which is celebrated in Mexico. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Of.txt b/.github/workflows/data/simplewiki-500/Of.txt new file mode 100644 index 000000000..73ef35468 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Of.txt @@ -0,0 +1 @@ +Of is a preposition used in the English language to show a possessive relationship. For example, the phrase "book of maps" means that the book has maps. The phrase "father of Mike" means the father belongs to Mike. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Oil.txt b/.github/workflows/data/simplewiki-500/Oil.txt new file mode 100644 index 000000000..4b017c402 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Oil.txt @@ -0,0 +1,6 @@ +The word oil is used for many different kinds of liquids. Oil usually does not mix with water. +Vegetable oils are made from plants. Many are used in foods and for cooking. Some kinds of plant oils that people use are palm oil, maize ("corn"), olive, peanut, soy, and sunflower. +Other kinds of oil are made from crude oil ("petroleum"), which comes from under the ground. People use large oil wells to bring the oil up to the surface. The oil is sent in special ships called tankers or in pipelines to factories called refineries where it is distilled into LPG, gasoline ("petrol"), diesel fuel, and fuel oil. Plastics are among the petrochemicals made from crude oil or natural gas. Oils from crude oil are also used as fuels for engines or as lubricants to make the parts of machines work together without sticking or stopping. +Different kinds of oils are also used for many other things, for example, to make cosmetics, medicines, paints, and detergents, like washing up liquids. Soap(s) are similar to detergents, but they are generally made from animal fat(s) rather than oils. +Oil is also made for various purposes, including synthetic fuel and lubricant. +See Thomas Gold for the idea that oils come from space. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Ok.txt b/.github/workflows/data/simplewiki-500/Ok.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Okay.txt b/.github/workflows/data/simplewiki-500/Okay.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Open content.txt b/.github/workflows/data/simplewiki-500/Open content.txt new file mode 100644 index 000000000..ddc0ab650 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Open content.txt @@ -0,0 +1,9 @@ +Open content is content that is openly accessible, usable, editable, and distributable by anyone for any purpose, even commercially. Open content is licensed with an open license that authorizes use of the content as described above. +When someone creates something (like a picture or book), they can open it for the use of others. This means that other people are allowed to copy it and change it if they want. Something that is open content may be free of charge, but it does not have to be. +The Simple English Wikipedia is open content. So are other Wikipedias. If a person changes open content or makes new open content, everyone can give it to anyone else, or even sell it. +License. +The rules that say how people can use, change and pass around open content are called a license. A license explains exactly what you are allowed to do with the content that falls under it. Licenses are often written in difficult language (legal jargon), but many licenses have summaries that are much easier to understand. +The makers of open content get to choose what license to use for their work, and everyone else has to follow it. Only the maker, who owns the copyright, can change it to another license. Most open content licenses say that when others change the work, they must also declare it to be open and under the same license. This is called "share-alike" and means that anything based on work will always be open content. +All the content in Wikipedia is open under the rules of the , a very well-known open content license. Another well-known open content license is the . +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Operating system.txt b/.github/workflows/data/simplewiki-500/Operating system.txt new file mode 100644 index 000000000..55f88e78b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Operating system.txt @@ -0,0 +1,21 @@ + +An operating system (OS) is a kind of computer program that helps a computer to interact with other machines or with people. An OS is not actually one single program but a group of small programs, like file managers, device drivers, and kernels. An OS can be small (like Damn Small Linux), or large (like Microsoft Windows). Some are meant for everyday use, like in a personal computer or a smartphone. Others are very specialized - for example, an ATM uses a kind of operating system. +An operating system has many jobs. It makes sure that all the programs share access to the computer's processor, memory, screen, input devices, and other hardware. Today, most operating systems also include a visible interface so the user can easily interact with it. An OS is also responsible for sending data to other computers or devices on a network. +Some examples of commonly used operating systems are macOS, Linux, and Android. +History. +One of the first computers was ENIAC (Electronic Numerical Integrator and Computer), built by the United States during World War II. Making ENIAC do useful work was difficult. To program ENIAC, scientists had to move switches and cables around on the side of the computer. While this was an operating system of a kind, it is not really like modern operating systems. +The first operating system that looked and felt like today's operating systems was UNIX, made in 1969 by Bell Labs. With UNIX, people could program computers by typing on a keyboard. Many of its features were taken from Multics, an older operating system made in 1964. +Types. +Operating systems come in many different types. An OS might fit one or several of the types listed below, and the difference between the types isn't always clear. +Single- and multi-tasking. +A single-tasking system can only run one program at a time. A multitasking operating system can run more than one program at the same time. To multi-task, the computer lets each program take a turn using the processor. +Single- and multi-user. +Single-user operating systems don't let people create their own "accounts" on the computer - there is only one user. A multi-user operating system lets multiple users interact with the system at the same time. +Distributed. +A distributed operating system takes a group of distinct computers, which might be all over the place, and makes them work together like one single computer. +Embedded. +Embedded operating systems are very small OSes used in embedded systems. They are designed to operate on small machines, like the electronic part of a microwave, and they only do a few particular things. +Hobbyist. +Hobbyist OS are made by individuals or small groups. There are many online communities like OS dev wiki to learn how to make an OS. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Orthography.txt b/.github/workflows/data/simplewiki-500/Orthography.txt new file mode 100644 index 000000000..4832ae0e7 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Orthography.txt @@ -0,0 +1,34 @@ +Orthography is an official or correct way to write a particular language. It includes rules of spelling. Orthography may also include rules about punctuation, capitalization, and diacritics (e.g. accents). In English, spelling is a problem for all learners, and is the main issue in orthography. +Some languages have someone to decide the correct spelling, such as the Académie française. English does not. English orthography was the work of the early printers. They had to decide how particular words would be spelled in their books. Gradually the number of alternative spellings began to drop. The word which is "merry" today was spelled in about 30 ways in written sources from the 9th to the 16th century.p970 +English orthography. +English orthography, or English spelling, is the way the 26 letters of the alphabet are used to write down the 36 (IPA) sounds of English. The first manuscripts in Old English were written using the Latin alphabet. It had 24 letters.p16 +Vowels. +No alphabet fits its language exactly. One reason for this is that there are always more sounds than letters. In English there are far more vowel sounds than vowels. The ancient Greeks, who were the first to use letters for vowels, decided to use only a few letters for their vowel sounds. This choice influenced all later alphabets: +"The importance of the Greeks in the history of alphabetic writing is paramount. All the alphabets in use in Europe today stand in direct or indirect relation to the ancient Greek". +English would need about 20 vowels to represent the vowel phonemes (~sounds) in common use,p237 and some languages do have more letters for vowels. The Georgian language has a total of 41 letters. A shorter alphabet works by using two or three letters for a single sound, or one letter for several sounds. +Consonants. +The English alphabet has only three consonants which have one sound, cannot be produced by other combinations and are never silent: n, r and v. The English language uses 22 to 26 consonant phonemes. +Dialects. +The other reason that alphabets never exactly fit languages is dialect. A spoken language varies from place to place and from time to time. This is very obvious with English, as the pronunciation is so different in different parts of the world. A written language will always be less flexible than its spoken parent. It has a different function, and is produced mechanically. It must serve everyone who speaks the language, and it does this by keeping the spelling similar from one time to another. +Therefore, all alphabets have sounds which are difficult to represent with the letters in use. And English also has other problems: sounds that can be written in different ways, and spelling which can be pronounced in different ways. This all gives rise to problems of spelling. +British and American English. +Differences between American English and British English spelling came about mainly as the result of one man. Noah Webster (1758–1843) wrote a "Grammar", a "Spelling" book, and finally an "American dictionary of the English language". In the course of this, he proposed a number of simplifications in spelling. In his dictionary, he chose "s" over "c" in words like "defense", he changed the "re" to "er" in words like "center", he dropped one of the Ls in "traveler". At first he kept the u in words like colour or favour but dropped it in later editions. He also changed "tongue" to "tung": that did not stick. His main reason was to help children learn to read and write. Webster's dictionary contained seventy thousand words, of which twelve thousand had never appeared in a published dictionary before. +Webster did create a slightly different identity for American English. But, because his efforts did not address some of the most glaring problems, his variations make little difference to the way the language is used. An example of the real problems in English orthography is the word ending "-ough", which is pronounced several different ways: tough, bough, cough... The root causes of spelling variation are historical. Loan words come with their own (foreign) spelling. Some French loan words are still spelled in the French way; others have been changed. +English spelling reform has been proposed by many people since Webster, such as George Bernard Shaw, who proposed a new phonetic alphabet for English. In some cases Webster's changes have been widely adopted in Britain: the spelling "programme" came from the French; US "program" is clearly simpler, and more consistent with word endings in English. In our modern world, English orthography is still a problem. In some countries (notably, France) a national committee can give advice and direction as to spelling. English has long escaped from national custody. +Dictionaries and phonetics. +Modern British spelling and use was greatly influenced by the two great English dictionaries, Samuel Johnson's "A dictionary of the English language" (1755), and James Murray's "Oxford English Dictionary". Johnson's dictionary was hugely influential, abroad as well as at home. The dictionary was exported to America. +"The American adoption of the "Dictionary" was a momentous event not just in its history, but in the history of lexicography. For Americans in the second half of the eighteenth century, Johnson was the authority on language, and the subsequent development of American dictionaries was coloured by his fame".p224 +For American lexicographers, the dictionary was impossible to ignore: +"America's two great nineteenth-century lexicographers, Noah Webster and Joseph Emerson Worcester, argued fiercely over Johnson's legacy ... In 1789 [Webster] declared that 'Great Britain, whose children we are, and whose language we speak, should no longer be our standard; for the taste of her writers is already corrupted, and her language on the decline.' ... Where Webster found fault with Johnson, Joseph Worcester saluted him ... In 1846 he completed his "Universal and critical dictionary of the English Language".p226 +Some people argue which language is the easiest to spell. People who learn a second language tend to think that their first (native) language is the easiest. However, for the learner, programmatic languages, with well-defined rules, are easier to start with than English. The spelling of the English language is by far the most irregular of all alphabetic spellings and thus the most difficult to learn. English is, in its origin, a Germanic language. From its early roots as Anglo-Saxon, it has borrowed words from many other languages: French (a Romance language) and Latin are the most frequent donors to English. +Languages that use phonetic spelling are easier to learn to spell than others. With phonetic spelling the words are spelled as they are pronounced. The Italian word "orologio" for instance is pronounced oh-ro-LO-jo ("gi" always making a "j" sound.) In English, one comes across the word "knife". In "knife", the "k" is not spoken, even though in English it's more common to pronounce "K"s when they are in words. +History of English spelling. +One of the problems we have is that similar sounding words may be spelt quite differently. Rough and ruff; meet and meat; great and grate. Words with complicated spelling may be pronounced simply: Leicester is pronounced 'Lester'. Even what rules we do have are frequently broken. ""i" before "e" except after "c"" has over 100 exceptions.p272 Almost all these problems have come about for historical reasons. English has been changing for the last thousand years, and as the language changes, so parts of it get stuck with different spellings. +Here are some of the causes of English orthography: +English has a huge number of words, but its spelling comes from many different sources. "The large and varied lexicon of English has been bought at the expense of an increasingly deversified graphology".p275 +Differences between languages. +Some languages have a high correspondence between phonemes and letters. That means they get close to one letter for each sound. If there was a perfect correspondence, that language would have "phonemic orthography". English is highly non-phonemic. It has almost every kind of deviation known: +This field of study is called "orthographic depth". The orthographic depth of an alphabetic script is the degree to which a written language deviates from simple one-to-one letter–phoneme correspondence. It shows how easy it is to predict the pronunciation of a word from its spelling. Shallow orthographies are easy to pronounce based on the written word, and deep orthographies are difficult to pronounce based on how they are written. In shallow orthographies, the spelling-sound correspondence is direct: given the rules of pronunciation, one is able to "say" the word correctly. +Most other international languages have similar problems: in French, Arabic or Hebrew, new readers have difficulty learning to decode words. As a result, children learn to read more slowly. In both Spanish and Italian there is a more direct connection between spelling and pronunciation. Those are languages with low orthographic depth. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Our Universe.txt b/.github/workflows/data/simplewiki-500/Our Universe.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Oxymoron.txt b/.github/workflows/data/simplewiki-500/Oxymoron.txt new file mode 100644 index 000000000..6c1cd4a74 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Oxymoron.txt @@ -0,0 +1,8 @@ +An oxymoron is a term for a figure of speech. It is made up of two or more words that seem to be opposite to each other, or actually are opposite. +For example, the phrases "Wise fool", "Warm freezer", and "Legal murder" all have two words. In each one, the one word looks like the opposite of the other word. +You can have words that look opposite, but are right. For example, a "warm freezer" could be right. A freezer could be warm if it was turned off or left open. +The word oxymoron is an oxymoron; 'oxy' comes from the Greek word that means 'sharp', while 'moron' comes from the Greek word that means 'dull'. +Words that really are opposite to each other, would be words that just cannot be put together. For example, a "round square" could not happen because squares are not round. +Oxymorons sometimes appear in jokes. Sometimes, the joke is just to say that a pair of words are an oxymoron. For example, a joke that says that "glutted peasant" is an oxymoron. This means that peasants are usually hungry, if the word 'peasant' is opposite to 'glutted' +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/PRC.txt b/.github/workflows/data/simplewiki-500/PRC.txt new file mode 100644 index 000000000..cc79d7a4d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/PRC.txt @@ -0,0 +1 @@ +This is a redirect from an acronym. Page titles commonly use the full names of things, spelled out. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Page.txt b/.github/workflows/data/simplewiki-500/Page.txt new file mode 100644 index 000000000..53f706157 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Page.txt @@ -0,0 +1,2 @@ +A page can be different things: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Paradox.txt b/.github/workflows/data/simplewiki-500/Paradox.txt new file mode 100644 index 000000000..b0416b1a7 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Paradox.txt @@ -0,0 +1,13 @@ +A paradox is a sentence in logic that cannot be true but also cannot be false. It is self-contradictory. Many famous problems of this kind exist. +Liar's paradox. +A famous paradox is called the liar's paradox. It is the simple sentence "This sentence is a lie", or equivalently, "This statement is false." +If the sentence is true, then it is a lie as it says. But if it is a lie, it cannot be true. A lie cannot also be a truth. So the sentence being true makes it a lie. +On the other hand, if the sentence is a lie, then it is not as it says: it is true. But that is just what the sentence says, which makes the content of the sentence true. So the sentence being a lie makes it true. +This paradox is not just in English, but in any language. It is true of mathematics as well. Paradox can never be removed from any symbol system that makes claims about itself. +Other examples. +Another example is the statement that "there is no cabal". Only a cabal can know if there is no cabal, so this is either a guess, or, it is a cabal trying to pretend it does not exist. +Not all paradoxes are true logical paradoxes, since they can also be common-sense-defying statements that appear true. Some famous examples of this kind of paradox include: +Quine's classification. +Willard Van Orman Quine did a classification of paradoxes. He found three different types: +Informal uses of "paradox". +A paradox can also arise in ethics. Assuming power over others may sometimes be required to protect them while diminishing their right to autonomy. This is an ethical dilemma but "not" a logical paradox. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Peace.txt b/.github/workflows/data/simplewiki-500/Peace.txt new file mode 100644 index 000000000..179e228fa --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Peace.txt @@ -0,0 +1,17 @@ +Peace is a time without any fights or wars. In a larger sense, peace (or peacefulness) can mean a state of harmony, quiet or calm that is not disturbed by anything at all, like a still pond with no ripples. +Many people and organizations want peace. One organization that was set up to bring peace among the nations and try to make war a thing of the past was the League of Nations after World War I. When it did not stop World War II, it was replaced by the United Nations which tries to make the world peaceful. This means that if any member is attacked or invaded by another country without attacking that country first, the other members will come to help the country that was attacked first. This idea was used by the United Nations to defend both South Korea and Kuwait when they were attacked. +Martin Luther King, Jr. wrote in a letter he sent from the Birmingham jail that, "True peace is not merely the absence of tension: it is the presence of justice." In other words, Real peace is more than just problems being gone: there must be fairness to have peace. +Alfred Nobel created an annual award, the Nobel Peace Prize, for the person who had done the most to bring peace to the world. +Religious beliefs and peace. +Buddhists think that peace can be gotten once all suffering ends.To get rid of suffering and get this peace, many try to follow a set of teachings called the Four Noble Truths +Jews and Christians believe that true peace comes from a personal relationship with God. Jesus Christ (also called the "Prince of Peace" in the Book of Isaiah) said: "Peace I leave with you; my peace I give you. I do not give to you as the world gives. Do not let your hearts be troubled and do not be afraid." () +Muslims follow Prophet Muhammad who teaches them that peace is the glue that holds communities together and sustains the world. +Inner peace. +Inner peace (or peace of mind) refers to a state of being mentally and spiritually at peace, with enough knowledge and understanding to keep oneself strong in the face of stress. Being "at peace" is considered by many to be healthy and the opposite of being stressed or anxious. Peace of mind is generally associated with bliss and happiness. +Peace of mind, serenity, and calmness are descriptions of a disposition free from the effects of stress. In some cultures, inner peace is considered a state of consciousness or enlightenment that may be cultivated by various forms of training, such as prayer, meditation, Tai chi chuan or yoga, for example. Many spiritual practices refer to this peace as an experience of knowing oneself. +Movements and activism. +Peace movement. +A movement that seeks to get ideals such as the ending of a particular war, minimize inter-human violence in a particular place or type of situation, often linked to the goal of achieving world peace. Means to achieve these ends usually include advocacy of pacifism, non-violent resistance, conscientious objector, diplomacy, boycotts, moral purchasing, supporting anti-war political candidates, demonstrations, and lobbying to create legislation on human rights or of international law. +Theories on peace. +Many different theories of "peace" exist in the world of peace studies, which involves the study of conflict transformation. The definition of "peace" can vary with religion, culture, or subject of study. +Peace is a state of balance and understanding in oneself and between others, where respect is gained by the acceptance of differences, tolerance persists, conflicts are resolved through dialog, people's rights are respected and their voices are heard, and everyone is at their highest point of serenity without social tension. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/People's Republic of China.txt b/.github/workflows/data/simplewiki-500/People's Republic of China.txt new file mode 100644 index 000000000..b6fee0d73 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/People's Republic of China.txt @@ -0,0 +1,56 @@ +The People's Republic of China (PRC) () is a one-party state in East Asia governed by the Communist Party of China (CPC). It was founded on 1 October 1949. It currently has more than 1.4 billion people (as of 2017). It covers an area of 9.6 million square kilometers. +The capital city is Beijing and Shanghai is the city with the most people living in it. Along with the cities of Tianjin and Chongqing, these four cities are "municipalities" directly controlled by the national government. Two other cities are given the status of "special administrative region" (SAR). They are Hong Kong, which was once a colony of the United Kingdom and given back to China in 1997 and Macau, which Portugal gave back in 1999. These two cities remain highly autonomous or have much of their own power. Aside from the "municipalities" and the "SARs", there are 23 provinces and five "autonomous regions" or regions with more law-making rights than the provinces and with many people of a minority group population. They are the Xinjiang Uyghur Autonomous Region, the Tibet Autonomous Region or Xizang Autonomous Region, the Guangxi Zhuang Autonomous Region, the Inner Mongolia Autonomous Region or Nei Mongol Autonomous Region and the Ningxia Hui Autonomous Region. +In the SARs, the central government is responsible for defense and foreign affairs but not daily operations for 50 years. PRC claims Taiwan as one of its many provinces. However, PRC does not have control of Taiwan. It has an entirely different political system and is officially known as the Republic of China. +History. +China has one of the world's oldest civilizations and has the oldest continuous civilization. It has archaeological evidence over 5,000 years old. It also has one of the world's oldest writing systems (and the oldest in use today), and is viewed as the source of many major inventions. +Ancient (2100 B.C. - 1500 A.D.). +Ancient China was one of the first civilizations and was active since the 2nd millennium BC as a feudal society. +Chinese civilization was also one of the few to invent writing, with the others being Mesopotamia, the Indus Valley civilization, the Maya civilization, the Minoan civilization of ancient Greece, and Ancient Egypt. It reached its golden age during the Tang Dynasty (c. A.D. 10th century). Home of Confucianism and Daoism, it had great influence on nearby countries including Japan, Korea, and Vietnam in the areas of political system, philosophy, religion, art, and even writing and literature. China is home to some of the oldest artwork in the world. Statues and pottery, as well as decorations made of jade, are some classic examples. +Before the Qin Dynasty united China, there were hundreds of small states that fought each other for hundreds of years in a war to control China. This is known as the Warring States Period. Although the continuing wars made people suffer, it was at this time when many of the great philosophies of the East were born, including Confucianism and Daoism. Confucianism and Daoism alone have been the foundation of many social values seen in modern eastern-Asian cultures today. +Its geography mostly looked like that of modern China, except with northern and western edges that varied. It was often attacked by northern nomadic people such as the Turkic tribes and the Mongols lead by Genghis Khan and Kublai Khan. During the history of ancient China, the northern nomadic people and the Chinese people had been fighting each other and taking turns to rule the land and the people of China. However, when the northern people beat the Chinese people and came to rule the kingdom, they also Incorporated the Chinese way of living and became like the Chinese. Many of the strongest dynasties of China were ruled by the northern people, including the Qin, Tang, Yuan (Mongolian), and Qing (Manchu). Each time, they also brought new elements into the Chinese culture. +A new age. +While China achieved many things in the First millennium and early 2nd millennium, it became an isolationist country in the 15th century C.E. This was because Spain found a lot of silver in the newly explored continents of North and South America. Silver was the main currency (money) in China and Europe at the time, and China did not want to be bought by the foreigners. +By the time of the Renaissance, European powers started to take over other countries in Asia. During this time the opium epidemic was growing in China. Traders from outside China (primarily British) had been illegally exporting opium, mainly from India to China, since the 18th century. This trade grew dramatically from about 1820. The resulting widespread addiction in China was causing serious social and economic disruption there. This led to what is now known as the first opium war. The first Opium War between China and Great Britain lasted from 1839 to 1842. The conflict was the result of years of attempts by the British to exploit China as a market for British goods. Britain eventually relied on its superior military capabilities to force open the lucrative Chinese market, while imposing an illicit trade in opium on the Chinese people. +While China was never actually taken over by Europeans, many European countries, such as Britain and France built spheres of influence in China. Since China had cut itself off from the world over the previous few centuries, by the Qing Dynasty, it had fallen behind other countries in technology, and was helpless to stop this from happening. This had become clear when it lost the Opium Wars to Britain in the 19th century. +In 1912, the Qing dynasty was overthrown by the Sun Yat-sen and the Kuomintang, a nationalist party, and the Republic of China established. Over time, Marxist ideas grew popular and the Communist party was formed. +The Chinese Civil War later started between the Kuomintang (Nationalists) of the Republic of China (ROC) and the Communists of the People's Republic of China (PRC). The Communists wanted to make China like the Soviet Union, whereas the other side wanted to keep China in its current state at the time. The Communists were led by Mao Zedong, Zhou Enlai, Liu Shaoqi and others. Later Liu lost influence with Mao and his death to this day remains unresolved. The Communists eventually won the war. The Nationalists (led by Chiang Kai-shek) fled to the island of Taiwan and set up their new capital city in Taipei. After the Chinese Civil War, the Communist leader Mao Zedong declared a new country, the People's Republic of China (PRC), in Beijing on October 1, 1949. +In 1927, the Chinese Civil War began as the Kuomintang, led by Chiang Kai-shek, and the Communists fought one another. +Amidst the turmoil brewing between the Nationalist and Communist parties who were vying for control of China at the time, Japan had launched an invasion of Manchuria in 1934 and began to creep steadily inland. China, the Nationalist party in particular, owed Japan immense amounts of money, which they could not pay whilst infused in their own civil war. The Treaty of Versailles promised the Japanese government land in China in return for forgiveness of their debt. This ended up not being a popular sentiment and was rallied against all over the country, and most famously during the May 4th Movement in Beijing in 1919. When the Chinese did not readily give up their rights to their land, Japan tried to take it by force. This was the beginning of World War II in the Pacific Theater. +By 1949, the Red Army of the Chinese Communist Party had gained control over mainland China and Mao Zedong announced the creation of the People's Republic of China. Chiang Kai-shek and the other nationalists fled to Taiwan. The PRC engaged in the Korean War, the Sino-Indian War, the Sino-Vietnamese War and the Vietnam (civil) War, some wars directly and some wars indirectly. +As the Chairman of the Chinese Communist Party, Mao began many social and economic reform projects with mixed results. The Great Leap Forward, from 1958 to 1961, tried to industrialize China and increase its food production, but resulted in one of the largest famines in history. It is estimated that 45 million people died as a result of this reform project. In 1966, Mao began the Cultural Revolution to remove capitalist influences from society and government. Major government officials and ordinary citizens were accused of being "revisionists" - people who disagreed with some parts of Marxism - or "counter-revolutionaries" and were persecuted. Many universities and schools were closed, and historical and religious sites were destroyed. Although the program officially ended in 1969, it continued until Mao's death in 1976. +During this time period, the People's Republic of China did not get along with the capitalist countries of the Western world. Beginning in the 1960s, relationships between the People's Republic of China and the Soviet Union also became increasingly unfriendly in the Sino-Soviet Split. In 1972, to counter the power of the Soviet Union, Chairman Mao and Chinese Premier Zhou Enlai met with US President Richard Nixon in Beijing. This began to improve relationships between China and the Western world. +After Mao's death, there was a power struggle between the Gang of Four and Chinese Premier Hua Guofeng, the man Mao had chosen to be the next leader of China. Eventually, Deng Xiaoping, one of the veterans of the revolution, took power. He began a "Reform and Opening Up" () campaign. These reforms tried to make the People's Republic of China a modern, industrial - but still socialist - nation by moving towards a market system. Deng's policies would be known as "socialism with Chinese characteristics." +Although Deng's policy helped loosen restrictions on citizens, the government continues to have a lot of control over citizens' private lives. In 1979, the one-child policy, which limited most couples to one child, was created because of the overpopulation problem in the People's Republic of China. This policy was highly controversial and many Westerners criticized it. News and Internet sites are also censored by the government. +In 1989, the Chinese Communist Party used soldiers and tanks to stop a protest in Beijing's Tiananmen Square organized by students seeking political reform. This action received worldwide criticism and led to economic sanctions being placed on the Chinese government. +In August 2008, China hosted the Summer Olympics for the first time. +In 2015, China ended its one-child policy, which allowed all parents to have two children. In 2021, it changed its laws so parents can have as many children as they choose. China has the second largest economy in the world, after the United States. It is also one of the top two countries by amount of scientific research published. +Geography. +The People's Republic of China is the third- or fourth-largest country in the world after Russia, Canada, and (in some sources) the United States and the second-largest by land area. China has every kind of climate in the northern hemisphere except the polar climate. It is also the largest country without any land north of the Arctic Circle. China borders 14 nations, which is more than any other country in the world. It borders Vietnam, Laos, and Burma in Southeast Asia; India, Bhutan, Nepal and Pakistan in South Asia; Afghanistan, Tajikistan, Kyrgyzstan and Kazakhstan in Central Asia; a small section of Russian Altai and Mongolia in Inner Asia; and the Russian Far East and North Korea in Northeast Asia. +China has two major rivers, the Yellow River and the Yangtze River. There is also the Taklamakan and the Gobi Desert. +The world's highest point, Mt. Everest (8848m), is on the border between China and Nepal. The country's lowest point, and the world's fourth-lowest, is the dried lake bed of Ayding Lake (−154m). +Biodiversity. +China is one of 17 megadiverse countries. It is in two of the world's major ecozones: the Palearctic and the Indomalaya. In the Palearctic zone, mammals such as the horse, camel, tapir, and jerboa can be found. Among the species in the Indomalaya region are the Leopard Cat, bamboo rat, treeshrew, and various monkey and ape species. Some overlap is between the two regions; deer, antelope, bears, wolves, pigs, and many rodent species can all be found in China's environments. The famous giant panda is found only in a limited area along the Yangtze River. China has a continuing problem with trade in endangered species. There are now laws to stop such activities. +China also has a variety of forest types. Cold coniferous forests cover most of the north of the country. The forest have animal species such as moose and the Asian black bear, along with over 120 bird species. Moist conifer forests can have thickets of bamboo. It is replaced by rhododendrons in higher montane stands of juniper and yew. Subtropical forests, which are mostly in central and southern China. These support as many as 146,000 species of flora. Tropical and seasonal rainforests, though confined to Yunnan and Hainan Island, have a quarter of all the plant and animal species found in China. +Politics. +China is a one-party state wherein the General Secretary of the Communist Party of China (CPC) holds ultimate power and authority over state and government and serves as the paramount leader. The current General Secretary is Xi Jinping, who took office on 15 November 2012 and was re-elected on 25 October 2017. +The President is the titular head of state, elected by the National People's Congress. The current president is Xi Jinping, who is also the General Secretary of the Communist Party of China and the Chairman of the Central Military Commission, making him China's Paramount leader. The Premier is the head of government, heading the State Council alongside with four vice premiers and the heads of ministries and commissions. The current premier as of March 2023 is Li Qiang, who is also a senior member of the Politburo Standing Committee of the CPC, China's "de facto" top decision-making body. The chairman of the Standing Committee of the National People's Congress (NPC) and the third-ranking member of the Politburo Standing Committee of the Chinese Communist Party is Zhao Leji. +International relations between China and the United States. +In recent years, international relations have been shaped by disputes and economic policies among major global players such as China's unilateral agreements with the U.S. The trade war between the U.S. and China stands to demonstrate economic interdependence between the world's largest economies and the policies that shape them. In 2024, the Biden Administration made significant policy changes to China's trading benefits by imposing steep tariffs on various Chinese imports, including electric vehicles (EVs), batteries, solar cells, steel and aluminum. These tariff barriers on Chinese EVs in particular have surged from 27.5% to 102.5% all in an effort to protect U.S. industry from potential influx of Chinese cars. Such measures are taken to address the unfair advantages U.S. perceives China manufactures possess related to technology transfer, intellectual property, and innovation. On the other hand, China opposes the implementation of these high tariffs provided that violate World Trade Organization rules (WTO) rules. China believes attributing the success of their EVs is not a result of government subsidies but rather innovation in the technology sector combined with a strong supply chain; exactly what the U.S. industry may lack. +The US-China trade war is a crucial aspect of modern international relations between two of the worlds largest economies. Billions of people worldwide are affecting by the conflict as changes in global supply chains and international trade policies lead to economic instability. Recent analytical reports show the US-Chine disputes have cost the U.S. economy nearly 300,000 jobs and an estimate of 0.3% real GDP. Other studies estimate this trade war could the U.S. economy $316 billion by the end of 200, while more recent demonstrated by the of new York and Columbia University found that U.S. companies lost nearly $1.7 trillion as their stocks plummeted as a result of U.S. imposing tariffs in Chinese imports. As the U.S. focusses on address such imbalances in their economy, China aims to sustain its economic growth with advancements in the technology sector. +Military. +The PRC Armed Forces, also known as the People's Liberation Army (PLA), is one of the most powerful armies in the world. Nowadays PRC is among the atomic powers in the world. It also has the largest standing army in the world of over 2 million soldiers on active duty. +People and culture. +There are 56 recognized ethnic minority groups in China. Han_Chinese is the largest ethnic group in China. Mandarin Chinese is the main spoken language. +China is the origin of Eastern martial arts, called Kung Fu or Wushu. China is also the home of the well-respected Spa Monastery and Wudang Mountains. Martial art started more for the purpose of survival, defense, and warfare than art. Over time some art forms have branched off, while others have retained their distinct Chinese characteristics. +China has had renowned artists including Wong Fei Hung and many others. Art has also co-existed with a variety of paints including the more standard 18 colors. Legendary and controversial moves like Big Mak are also praised and talked about within the culture. +China has many traditional festivals, such as the Chinese New Year, Dragon Boat Festival, Mid-Autumn Festival and so on. The most significant is Chinese New Year. Another important holiday is the National Day celebration around October. Weekends are moved around to make sure everyone has a week-long holiday for it, just like during the lunar new year. +Festivals. +Chinese New Year lasts fifteen days, including one week as a national holiday. It starts with the first day of the Chinese lunar year and ends with the full moon fifteen days later. It is always in the middle of winter, but is called the Spring Festival in Chinese because Chinese seasons are a little different from English ones. On the first day of the Chinese New Year, people call on friends and relatives. Because most people watch the special performances on CCTV all the night on New Year's Eve and don't go to bed until 12:00 AM, they usually get up later in the next day. The fifth day of the Chinese New Year is the day to welcome the god of Wealth (Chinese:财神爷), many people make and eat dumplings (Chinese:饺子. Pinyin: Jaozi). They believe that dumplings can hold the god of Wealth and bring luck. The last day of the Chinese New Year is the Lantern Festival. On this day, the moon becomes the full moon. People go out and watch the lantern festivals everywhere. After that, they eat sweet dumpling (Chinese:汤圆,元宵), a kind of dumpling which is round and looks like the full moon. +Dragon Boat Festival is celebrated to commemorate the death of Qu Yuan, a patriotic poet of the State of Chu during the Warring States period. He persuaded his emperor not to accept Qin's diplomats's offers several times but his emperor did not listen to him. He was very sad and ended up jumping into the river to end his life. The people loved him so much that they did not want the fish to eat his corpse. They made and threw rice dumplings into the river. They hope the fish eat these dumplings instead of the poet's corpse. They also rowed dragon boats in the river to get rid of the fish. Eating rice dumplings and holding dragon boat races, became what the Chinese do in this festival nowadays. +Held on the fifteenth day of the eighth lunar month, the Mid-Autumn Festival is a festival for families. Now when the festival sets in, people sit together to eat moon cakes, appreciate the moon and the moon itself, celebrate the bumper harvest, and enjoy the family love and happiness. To the Chinese people, the full moon symbolizes family reunion, as do the moon cakes. Hence why the Mid-Autumn Festival is also called the Family Reunion Festival. +Transport. +Trains are commonly used for moving from one place to another, mainly for long distances. Bullet trains are faster and more common in the cities. China has more high-speed trains than any other country in the world. Buses and air transport are also very common. +Notes. +<templatestyles src="Reflist/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Periodic table.txt b/.github/workflows/data/simplewiki-500/Periodic table.txt new file mode 100644 index 000000000..850faf4b1 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Periodic table.txt @@ -0,0 +1,7 @@ +The periodic table is a table that puts all known chemical elements in a specific order. Elements that have similar characteristics are often put near each other. In the table, the elements are placed in the order of their atomic numbers starting with the lowest number of one, hydrogen. The atomic number of an element is the same as the number of protons in that particular nucleus of an atom. In the table the elements are arranged into "periods" and "group." A row of elements across the table is called a "period". Each period has a number; from 1 to 8. Period 1 has only 2 elements in it: hydrogen and helium. Period 2 and Period 3 both have 8 elements. Other periods are longer. Elements in a period have consecutive atomic numbers. +A column of elements down the table is called a "group". There are 18 groups in the standard periodic table. Each group has a number: from 1 to 18. Elements in a group have electrons arranged in similar ways, according to the number of valency electrons, which gives them similar chemical properties (they behave in similar ways). For example, group 18 is known as the noble gases because they are all gases and they do not combine with other atoms. +There are two systems of group numbers; one using Arabic numerals (1,2,3) and the other using Roman numerals (I, II, III). The Roman numeral names were used in most of the 20th century. In 1990 the International Union of Pure and Applied Chemistry (IUPAC) decided to use the new system with Arabic numerals, to replace the two old group systems that used Roman numerals. +The periodic table has been used by chemists to observe patterns and relationships between elements. There are 3 main groups in the Periodic Table; metals, metalloids, and nonmetals. For example, elements to the bottom and far left of the table are the most metallic, and elements on the top right are the least metallic. (e.g. caesium is much more metallic than helium). There are also many other patterns and relationships. +The periodic table was invented by the Russian chemist Dmitry Ivanovich Mendeleyev (1834–1907). In his honor, element 101 was named after him, mendelevium. +Other arrangements of the Periodic Table. +The version of the periodic table shown above is the one most used. Other widespread versions are shown below: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Pet.txt b/.github/workflows/data/simplewiki-500/Pet.txt new file mode 100644 index 000000000..09c52e3c7 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Pet.txt @@ -0,0 +1,8 @@ +A pet is a domesticated animal that lives with people, but is not forced to work and is not eaten, in most instances. In most cases, a pet is kept to entertain people or for companionship. Some pets such as dogs and cats are placed in an animal shelter if there is no one willing to take care of them. If no one adopts it or the pet is too old/sick, the pet may be euthanized or in some cases even abandoned. +Dogs, cats, fish, rodents, lagomorphs, ferrets, birds, certain reptiles and amphibians, and a wide variety of arthropods such as tarantulas and hermit crabs are the most common pets in North America. Horses, elephants, oxen, and donkeys are usually made to work, so they are not usually called pets. Some dogs also do work for people, and it was once common for some birds (like falcons and carrier pigeons) to work for humans. +Rodents are very popular pets. The most common are guinea pigs, hamsters (especially Syrian and dwarf hamsters), mice and rats. Rabbits are also very popular pets. +Bloomberg Intelligence estimated that the pet care market across the world was worth $320 billion in 2024 and growing rapidly. +References. +<templatestyles src="Reflist/styles.css" /> +2. Calico Cats Breed + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Phase 3.txt b/.github/workflows/data/simplewiki-500/Phase 3.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Philosophy.txt b/.github/workflows/data/simplewiki-500/Philosophy.txt new file mode 100644 index 000000000..90a6fadef --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Philosophy.txt @@ -0,0 +1,48 @@ +Philosophy is the study of wisdom. +In fact, is the Ancient Greek word for the "love of wisdom". +A person who works in the field of philosophy is called a philosopher. A philosopher is a kind of thinker and researcher. A "philosophy" can also mean a group of ideas or way of living suggested by philosophers. +Philosophy is a way of thinking about the world, the universe, and society. In the past, natural sciences were a part of philosophy. +Ideas. +The ideas in philosophy are often general and "abstract". However, this does not mean that philosophy is not about the real world. For example, ethics talks about how to be good in our day-to-day lives. Metaphysics questions how the world works and what it is made of. Sometimes, people talk about how they have a ‘personal philosophy’, which means the way a person thinks about the world. This article is "not" about people's ’personal philosophies’. This article is about the ideas that have been discussed by philosophers. +Questions. +Questions related to philosophy are called philosophical questions. Most philosophical questions can never be answered with certainty. They focus on important topics, such as the meaning of life, death, and morality. An example of a philosophical question is this: "Is there any knowledge in the world which is so certain that no reasonable man could doubt it?". Other questions asked by philosophers are: +History. +The word 'Philosophy' directly translates to 'love of wisdom'. It comes from the Greek word "'Philosophia'", with "'Philo'" meaning "'lover'" and "'Sophia"' meaning "'wisdom"'. +There are different types of philosophy from different times and places. Some philosophers came from Ancient Greece, such as Plato and Aristotle. Others came from Asia, such as Confucius, Buddha, Adi Shankara, and Laozi. Some philosophers were from the Middle Ages in Europe, such as William of Ockham or Saint Thomas Aquinas. +Influential philosophers from the 1600s and 1700s include Thomas Hobbes, René Descartes, John Locke, Gottfried Leibniz, David Hume, and Immanuel Kant. Some major philosophers from the 1800s are Georg Hegel, Søren Kierkegaard, and Friedrich Nietzsche, whereas the 1900s gave us Martin Heidegger and Ludwig Wittgenstein. +Areas of inquiry. +Philosophy seeks to understand truths about the world and how we view it. It tries to answer important questions by making conclusions based on observations of human nature and the real world. +Sometimes, philosophy tries to answer the same questions as religion and science. Philosophers give different answers to the same question. Many types of philosophy criticize or even attack the beliefs of religion. +In his work "Critique of Pure Reason", Immanuel Kant asks the following questions: +The answers to these questions give the different categories of philosophy. +Categories in philosophy. +Philosophy can be divided into different groups based on the types of questions asked. Below is a list of the questions split into groups. One possible list of answers to these questions can be called a 'philosophy'. There are many different philosophies, because all of these questions have different answers according to different people. Not all philosophies ask the same questions. These are the questions that are usually asked by philosophers from the Western world: +Metaphysics: +Metaphysics is sometimes split up into ontology (the philosophy of real life and living things), the philosophy of mind and the philosophy of religion; but these sub-branches are very close together. +"Ontology": +"The philosophy of mind": +"The philosophy of religion": +In epistemology: +In ethics: +In aesthetics: +In logic: +In axiology +Other divisions include eschatology, teleology and theology. In past centuries, natural science were included in philosophy, and called "natural philosophy". +Is philosophy good or bad? +It is easy to argue that philosophy is a good thing because it helps people understand the world better. Philosophy helps people learn how to act and think. Philosophers believe that asking philosophical questions is useful because it helps people learn about themselves, the world, and others. It can be argued that "Is philosophy good or bad?" is a philosophical question itself. +However, some people think philosophy is harmful because it encourages free-thinking and questions the beliefs that others hold. Some philosophies also clash with religion, and oppose religious beliefs. For example, philosophies such as some existentialist views say that there is no meaning to life or human existence, except the meaning that we make up or invent. Most religions disagree with this belief. +Many major sciences, including physics, biology, psychology, and chemistry, were once considered a part of philosophy. As facts about nature became more understood, these subjects separated into their own fields. In modern times, subjects such as consciousness, decision theory, and applied ethics have found independence from philosophy. It can be argued that philosophy helped promote the development of these sciences, and that it has historically been an important field of study. +Purpose. +Philosophers ask questions about ideas, and tries to find answers to those questions. A philosopher also analyzes concepts, arguments, and problems in philosophy. +Some are academics that work for universities or colleges. These philosophers may write books and articles about philosophy and teach classes about the subject to university or college students. +Some are also monks, artists, or scientists. They also think about philosophical ideas and questions. +Philosophers often use both real and imaginary examples to make a point. For example, they may write about a real or fictional person in order to show what they think a good person or a bad person is like. +Some philosophers look for the simplest way to answer a question and say that is probably the right answer. This is a process called Occam's razor. Others believe that complicated answers to questions can also be right. For an example of a philosophical problem, see the God paradox. +Philosophers use logic to solve problems and answer questions. Logical consistency is a cornerstone of any acceptable theory. Philosophers who disagree with a theory will often try to find a logical contradiction in a theory. If they find a contradiction, this gives them a reason to reject that theory. If they do not find an inconsistency, the philosopher might show that the theory leads to a conclusion which is either unacceptable or ridiculous. This second approach is called reductio ad absurdum. +Famous philosophers. +People listed here should be genuine philosophers, rather than social or political campaigners. The lists are not meant to be complete. +<templatestyles src="Div col/styles.css"/> +General sources. +<templatestyles src="Refbegin/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Physics.txt b/.github/workflows/data/simplewiki-500/Physics.txt new file mode 100644 index 000000000..f30eb928d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Physics.txt @@ -0,0 +1,58 @@ +Physics is a branch of science. It is one of the most fundamental scientific disciplines. The main goal of physics is to explain how things move in space and time and understand how the universe behaves. It studies matter, forces and their effects. +The word "physics" comes from the Greek word ἡ φύσις, meaning "nature". Physics can also be defined as "that department of knowledge which relates to the order of nature, or, in other words, to the regular succession of events". +Physics is very important in engineering and developing new technologies, such as aviation, electronics and weapons. One reason for starting the mathematical field of calculus was to help develop mechanics, a branch of physics. +Modern physics connects ideas about the four laws of symmetry and conservation of energy, momentum, charge, and parity. +Astronomy, now a part of physics, is the oldest natural science. In the past it was a part of 'natural philosophy' with other fields of science, such as chemistry and biology. During the scientific revolution, these fields became separate, and physics became a distinct field of knowledge. +History. +Ancient astronomy. +Astronomy is the oldest natural science. The Sumerians, and Ancient Egyptians studied the stars, mostly with a view to prediction and religion. The first Babylonian star maps date from about 1200 BC. That astronomical events are periodic also dates back to the Babylonians. Their understanding was not scientific, but their observations influenced later astronomy. Much astronomy came from Mesopotamia, Babylonia, Ancient Egypt, and Ancient Greece. Astronomers from Egypt built monuments that showed how objects in the sky moved, and most of the names for the constellations in the Northern hemisphere came from Greek astronomers. +Natural philosophy. +Natural philosophy started in Greece around 650 BC when a movement of philosophers replaced superstition with naturalism, which refuted the spiritual. Leucippus and his student Democritus suggested the idea of the atom around this period. +Physics in the medieval Islamic world. +Islamic scholars continued to study Aristotelian physics during the Islamic Golden Age. One main contribution was to observational astronomy. Some, like Ibn Sahl, Al-Kindi, Ibn al-Haytham, Al-Farisi and Avicenna, worked on optics and vision. In "The Book of Optics", Ibn al-Haytham rejected previous Greek ideas concerning vision and proposed a new theory. He studied how light enters the eye, and developed the camera obscura. European scientists later built eyeglasses, magnifying glasses, telescopes, and cameras from this book. +Classical physics. +Physics became a separate field of study after the scientific revolution. Galileo's experiments helped to create classical physics. Although he did not invent the telescope, he used it when he looked into the night sky. He supported Copernicus' idea that the Earth moved around the Sun (heliocentrism). He also investigated gravity. Isaac Newton used Galileo's ideas to create his three laws of motion and his law of universal gravitation. Together these laws explained the motion of falling bodies near the earth and the motion of earth and planets around the sun. +In a couple centuries, the Industrial Revolution was in full swing and many more discoveries were made in many fields of science. The laws of classical physics are good enough to study objects that move much slower than the speed of light, and are not microscopic. When scientists first studied quantum mechanics, they had to create a new set of laws, which was the start of modern physics. +Modern physics. +As scientists researched particles, they discovered what classical mechanics could not explain. Classical mechanics predicted that the speed of light varied, but experiments showed the speed of light stayed the same. This was predicted by Albert Einstein's theory of special relativity. Einstein predicted that the speed of electromagnetic radiation through empty space would always be the same. His view of space-time replaced the ancient idea that space and time were quite separate things. +Max Planck came up with quantum mechanics to explain why metal releases electrons when you shine a light at it, and why matter emits radiation. Quantum mechanics applies for very small things like the electrons, protons, and neutrons that make up an atom. People like Werner Heisenberg, Erwin Schrödinger, and Paul Dirac continued to work on quantum mechanics and eventually we got the Standard Model. +Definition. +Physics is the study of energy and matter in space and time and how they are related to each other. Physicists assume the existence of mass, length, time and electric current and then define (give the meaning of) all other physical quantities in terms of these basic units. Mass, length, time, and electric current are never defined but the standard units used to measure them are always defined. In the International System of Units (abbreviated SI from the French Système International), the kilogram is the basic unit of mass, the metre is the basic unit of length, the second is the basic unit of time, and the ampere is the basic unit of electric current. In addition to these four units, there are three other ones: the mole, which is the unit of the quantity of matter, the candela which measures the luminous intensity (the power of lighting) and the kelvin, the unit of temperature. +Physics studies how things move, and the forces that make them move. For example, velocity and acceleration are used by physics to show how things move. Also, physicists study the forces of gravity, electricity, magnetism and the forces that hold things together. +Physics studies very large things, and very small things. For instance, physicists can study stars, planets and galaxies but could also study small pieces of matter, such as atoms and electrons.They may also study sound, light and other waves. As well as that, they could examine energy, heat and radioactivity, and even space and time. +Physics not only helps people understand how objects move, but how they change form, how they make noise, how hot or cold they will be, and what they are made of at the smallest level. In short, physics is the branch of science that deals with properties of matter and energy along with the interaction between them. +Physics and mathematics. +Physics is a quantitative science because it is based on measuring with numbers. Mathematics is used in physics to make models that try to predict what will happen in nature. These predictions are compared to the way the real world works. Physicists are always working to make their models of the world better. +Branches. +Classical mechanics contains major topics such as Newton's laws of motion, Lagrangian mechanics, Hamiltonian mechanics, kinematics, statics, dynamics, chaos theory, acoustics, fluid dynamics, continuum mechanics. Classical mechanics is all about forces acting on a body in nature, balancing forces, maintaining equilibrium state, etc. +Electromagnetism is study of charges on a particular body. It contains subtopics such as Electrostatics, electrodynamics, electricity, magnetism, magnetostatics, Maxwell's equations, optics. +Thermodynamics and statistical mechanics are related with temperature. It includes main topics such as Heat engine, kinetic theory. It uses terms such as heat(Q), work(W), and internal energy (U). First law of thermodynamics gives us the relation them by the following equation (ΔU = Q − W) +Quantum mechanics is the study of particle at the atomic level taking into consideration the atomic model. It includes subtopics Path integral formulation, scattering theory, Schrödinger equation, quantum field theory, quantum statistical mechanics. +Advanced knowledge. +General description. +Physics is the science of matter and how matter interacts. Matter is any physical material in the universe. Everything is made of matter. Physics is used to describe the physical universe around us, and to predict how it will behave. +Physics is the science concerned with the discovery and characterization of the universal laws which govern matter, movement and forces, and space and time, and other features of the natural world. +Breadth and goals of physics. +The sweep of physics is broad, from the smallest components of matter and the forces that hold it together, to galaxies and even larger things. There are only four forces that appear to operate over this whole range. However, even these four forces (gravity, electromagnetism, the weak force associated with radioactivity, and the strong force which holds protons and neutrons in an atom together) are believed to be different parts of a single force. +Physics is mainly focused on the goal of making ever simpler, more general, and more accurate rules that define the character and behavior of matter and space itself. +One of the major goals of physics is making theories that apply to everything in the universe. In other words, physics can be viewed as the study of those universal laws which define, at the most basic level possible, the behavior of the physical universe. +Physics uses the scientific method. +Physics uses the scientific method. That is, data from experiments and observations are collected. Theories which attempt to explain these data are produced. Physics uses these theories to not only describe physical phenomena, but to model physical systems and predict how these physical systems will behave. Physicists then compare these predictions to observations or experimental evidence to show whether the theory is right or wrong. +The theories that are well supported by data and are especially simple and general are sometimes called scientific laws. Of course, all theories, including those known as laws, can be replaced by more accurate and more general laws, when a disagreement with data is found. +Physics is quantitative. +Physics is more quantitative than most other sciences. That is, many of the observations in physics may be represented in the form of numerical measurements. Most of the theories in physics use mathematics to express their principles. Most of the predictions from these theories are numerical. This is because of the areas which physics has addressed work better with quantitative approaches than other areas. Sciences also tend to become more quantitative with time as they become more highly developed, and physics is one of the oldest sciences. +Fields of physics. +Classical physics normally includes the fields of mechanics, optics, electricity, magnetism, acoustics and thermodynamics. Modern physics is a term normally used to cover fields which rely on quantum theory, including quantum mechanics, atomic physics, nuclear physics, particle physics and condensed matter physics, as well as the more modern fields of general and special relativity, but these last two are often considered fields of classical physics as they do not rely on quantum theory. Although this difference can be found in older writings, it is of little new interest as quantum effects are now understood to be of importance even in fields that before were called classical. +Approaches in physics. +There are many ways to study physics, and many different kinds of activities in physics. The two main types of activities are the collection of data, and the development of theories. +Some subfields of physics can be studied by experiment. For example, Galileo Galilei invented kinematics by making experiments and studying the data. Experimental physics focuses mainly on an empirical approach. Some experiments are done to explore nature, and other experiments are performed to produce data to compare with the predictions of theories. +Some other fields in physics like astrophysics and geophysics are mostly observational sciences because most of their data has to be collected passively instead of through experimentation. Galileo, for example, could only look at Jupiter and discover that it has moons. However, observational programs in these fields use many of the same tools and technology that are used in the experimental subfields of physics. +Theoretical physics often uses quantitative approaches to develop the theories that attempt to explain the data. In this way, theoretical physicists often use tools from mathematics. Theoretical physics often can involve creating quantitative predictions of physical theories, and comparing these predictions quantitatively with data. Theoretical physics sometimes creates models of physical systems before data is available to test and support these models. +These two main activities in physics, data collection, theory production and testing, use many different skills. This has led to a lot of specialization in physics, and the introduction, development and use of tools from other fields. For example, theoretical physicists use mathematics and numerical analysis and statistics and probability and computer software in their work. Experimental physicists develop instruments and techniques for collecting data, using engineering and computer technology and many other fields of technology. Often the tools from these other areas are not quite appropriate for the needs of physics, and need to be changed or more advanced versions have to be made. +It is frequent for new physics to be discovered if experimental physicists do an experiment that current theories cannot explain, or for theoretical physicists to generate theories which can then be put to the test by experimental physicists. +Experimental physics, engineering and technology are related. Experiments often need specialized tools such as particle accelerators, lasers, and important industrial applications such as transistors and magnetic resonance imaging have come from applied research. +Physicists. +Prominent physicists. +<templatestyles src="Div col/styles.css"/> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Physiology.txt b/.github/workflows/data/simplewiki-500/Physiology.txt new file mode 100644 index 000000000..380e985f8 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Physiology.txt @@ -0,0 +1,4 @@ +Physiology is the study of how living things work. Physiologists can study how organs of an organism work together to make things happen. In human beings, for example, the digestion of food hormones and other chemicals are made by the stomach, liver, and pancreas. Muscle contraction happens because of chemical messages made by nerves of that muscle. By learning how the body functions normally, physiologists and physicians can better understand what happens when organs do not function normally. For example, an understanding of how the thyroid gland functions has helped in treating goitre. Studies of the circulatory system and the nervous system have helped physicians understand and treat such illnesses like heart disease, stroke, and high blood pressure. +The field is usually divided into human physiology, animal physiology, and plant physiology. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Pi.txt b/.github/workflows/data/simplewiki-500/Pi.txt new file mode 100644 index 000000000..25e0c641c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Pi.txt @@ -0,0 +1,24 @@ +Pi (π) () is a mathematical constant that is the ratio of a circle's circumference to its diameter. This produces a number, and that number is always the same. However, the number is rather strange. The number starts as 3.141592653589793... and continues without end. Numbers like this are called irrational numbers. +The diameter is the largest chord which can be fitted inside a circle. It passes through the center of the circle. The distance around a circle is known as the circumference. Even though the diameter and circumference are different for different circles, the number pi remains constant: its value never changes. This is because the relationship between the circumference and diameter is always the same. +Fundamentals. +Definition. +pi is defined as the ratio of a circle's circumference formula_1 to its diameter formula_2: +formula_3 +Approximate value. +Pi is often written as "π". It is also an irrational number, meaning it cannot be written as a fraction formula_4, where formula_5 and formula_6 are integers (whole numbers). This basically means that the digits of pi that are to the right of the decimal go forever—without repeating in a pattern, and that it is impossible to write the exact value of pi as a number. Pi can only be approximated, or measured to a value that is close enough for practical purposes. +A value close to pi is 3.14. A common fraction approximation of pi is formula_7, which yields approximately 3.14285714. This approximation is 0.04% away from the true value of pi. While this approximation is accepted for most of its use in real life, the fraction formula_8 is more accurate (giving about 3.14159292), and can be used when a value closer to pi is needed. Computers can be used to get better approximations of pi. +In March 2019, Emma Haruka Iwao calculated the value of pi to 31.4 trillion digits. +History. +Mathematicians have known about pi for thousands of years, because they have been working with circles for the same amount of time. Civilizations as old as the Babylonians have been able to approximate pi to many digits, such as the fraction formula_9 and formula_10. Most historians believe that ancient Egyptians had no concept of pi, and that the correspondence is a coincidence. +The first written reference to pi dates to 1900 BCE. Around 1650 BCE, the Egyptian Ahmes gave a value in the "Rhind Papyrus". The Babylonians were able to find that the value of pi was slightly greater than 3, by simply making a big circle and then sticking a piece of rope onto the circumference and the diameter, taking note of their distances, and then dividing the circumference by the diameter. +Knowledge of the number pi passed back into Europe and into the hands of the Hebrews, who made the number important in a section of the Bible called the Old Testament. After this, the most common way of trying to find pi was to draw a shape of many sides inside any circle, and use the area of the shape to find pi. The Greek philosopher Archimedes, for example, used a polygon shape that had 96 sides in order to find the value of pi, but the Chinese in 500 CE were able to use a polygon with 16,384 sides to find the value of pi. The Greeks, like Anaxagoras of Clazomenae, were also busy with finding out other properties of the circle, such as how to make squares of circles and squaring the number pi. Since then, many people have been trying to find out more and more precise values of pi. +In the 16th century, better and better ways of finding pi became available, such as the complicated formula that the French lawyer François Viète developed. The first use of the Greek symbol "π" was in an essay written in 1706 by William Jones. +A mathematician named Lambert also showed in 1761 that the number pi was irrational; that is, it cannot be written as a fraction by normal standards. Another mathematician named Lindeman was also able to show in 1882 that pi was part of the group of numbers known as transcendentals, which are numbers that cannot be the solution to a polynomial equation. +Pi can also be used for figuring out many other things beside circles. The properties of pi have allowed it to be used in many other areas of math besides geometry, the study of shapes. Some of these areas are complex analysis, trigonometry, and series. +Pi in real life. +There are different ways to calculate many digits of pi. This is of limited use though. +Pi can sometimes be used to work out the area or the circumference of any circle. To find the circumference of a circle, use the formula formula_11 (Radius). To find the area of a circle, use the formula formula_12 (radius squared). This formula is sometimes written as formula_13, where formula_14 is the variable for the area. +To calculate the circumference of a circle with an error of 1 mm: +People generally celebrate March 14 as Pi Day, because March 14 is also written as "3/14", which represents the first three numbers 3.14 in the approximation of pi. Pi Day was started in 1988 by physicist Larry Shaw at the San Francisco Exploratorium. On March 11, 2009, almost 21 years later, the U.S. House of Representatives passed a resolution proclaiming March 14 to be celebrated as National Pi Day every year. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Pint.txt b/.github/workflows/data/simplewiki-500/Pint.txt new file mode 100644 index 000000000..150829bd7 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Pint.txt @@ -0,0 +1,9 @@ +The pint (abbreviated pt) is a unit of volume in imperial units and United States customary units. There are three types of pints used in different countries. An imperial pint and US pint both equal ​1⁄2 of a quart and ​1⁄8 of a gallon. +An imperial fluid ounce is approximately 4% smaller than a US fluid ounce although an imperial pint has 4 more fluid ounces than a US pint, making an imperial pint approximately 20% larger than a US pint. +Imperial Pint. +The imperial pint is the pint used in England, Canada, Ireland, and Burma. The unit may appear in other Commonwealth. Confusion in Canada often arises as liquids are occasionally sold in U.S. pints, near the border, although the official and only pint that is legal in Canada is the imperial pint. The imperial system has no dry pint and volume in dry units, since solid objects are measured by mass. 1 imperial pint equals 568,261.25 mm3. +An imperial fluid ounce is approximately 4% smaller than a US fluid ounce although an imperial pint has 4 more fluid ounces than a US pint, making an imperial pint approximately 20% larger than a US pint. +US Wet Pint. +The US wet pint, or more commonly 'pint', is the unit used to measure volume in the United States. It is more common than the dry pint which is used for non-liquid volume measurements. 1 US pint is exactly equal to 473,176.473 mm3, defined by the international yard and pound agreement. +US Dry Pint. +The US dry pint was a unit used for measuring the volume of solid objects instead of mass or quantity. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Planet.txt b/.github/workflows/data/simplewiki-500/Planet.txt new file mode 100644 index 000000000..4561b9dc4 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Planet.txt @@ -0,0 +1,18 @@ +A planet is a large object such as Venus or Earth that orbits a star. Planets do not make light but can reflect light. +Jupiter is the biggest planet in the Solar System, while the smallest planet in the Solar System is Mercury. +Planets are shaped like a slightly squashed ball (called a spheroid). Objects that orbit planets are called satellites. A star and everything which orbits it are called a star system. +There are eight planets in the Solar System. Pluto used to be called a planet, but in August 2006, the International Astronomical Union decided it was a dwarf planet instead. There are eight more known dwarf planets in the Solar System, Ceres, Eris, Makemake, Haumea, Quaoar, Orcus, Gonggong, and Sedna. +The name "planet" is from the Greek word "πλανήτης" ("planetes"), meaning "wanderers", or "things that move". +Until the 1990s, people only knew the planets in the Solar System. Since then 4,905 extrasolar planets (exoplanets) have been discovered in 3,629 planetary systems (January 2022 data). The count includes 808 multi-planetary systems. Known exoplanets range in size from gas giants about twice as large as Jupiter down to just over the size of the Moon. About 100 of these planets are roughly the size as Earth. Nine of these orbit in the habitable zone of their star. +Origin of the planets. +The planets are made of elements that are very different from the Sun (which is mostly hydrogen). The Sun is mostly made up of hydrogen, with some helium. Its energy comes from converting hydrogen to helium. In contrast, the planets are mostly made up of larger atoms and molecules which "could not have come from the Sun". The materials of planets must have come from another source or sources. Those sources were atoms made in earlier supernovae explosions near the Sun's path as it moved through its part of the Milky Way. The material captured by the Sun's gravity formed the planets. The same thing happened in other planetary systems in the galaxy. +The gas giants are made up of hydrogen gas like the Sun, plus (at their centres) metallic elements like the terrestrial planets. +Historical names. +The planets in the Solar System have names of Greek or Roman gods, except for Earth, because people did not think Earth was a planet in old times. However, Earth is occasionally referred by the name of a Roman god: "Terra". Other languages, for example Chinese, use different names. Moons also have names of gods and people from classical mythology. The names of the moons of Uranus are from the plays written by Shakespeare. +Planets. +Here is a list of planets in the Solar System from the closest to the farthest +Types of planets. +There are planets, and smaller objects that also go around the Sun. Some examples of smaller objects are asteroids, comets, and trans-Neptunian objects. +There are three types of planets in the Solar System. They are: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Plant.txt b/.github/workflows/data/simplewiki-500/Plant.txt new file mode 100644 index 000000000..fac0ccc2a --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Plant.txt @@ -0,0 +1,31 @@ +Plants are one of six big groups (kingdoms) of living things. They are autotrophic eukaryotes, which means they have complex cells, and make their own food. Usually, they cannot move (not counting growth). +Plants include familiar types such as trees, herbs, bushes, grasses, vines, ferns, mosses, and green algae. The scientific study of plants, known as botany, has identified about 391,000 extant (living) species of plants. +Most plants grow in the ground, with stems in the air and roots below the surface. Some float on water. The root part absorbs water and some nutrients the plant needs to live and grow. These climb the stem and reach the leaves. The evaporation of water from pores in the leaves pulls water through the plant. This is called transpiration. +A plant needs sunlight, carbon dioxide, minerals from the soil and water to make food by photosynthesis. A green substance in plants called chlorophyll traps the energy from the Sun needed to make food. Chlorophyll is mostly found in leaves, inside plastids, which are inside the leaf cells. The leaf can be thought of as a food factory. Leaves of plants vary in shape and size, but they are always the plant organ best suited to capture solar energy. Once the food is made in the leaf, it is transported to the other parts of the plant such as stems and roots. +The word "plant" can also mean the action of putting something in the ground. For example, farmers plant seeds in the field. +Types of plants. +Green algae: +Land plants (embryophyte) +The plant food factory. +At least some plant cells contain photosynthetic organelles (plastids) which enable them to make food for themselves. With sunlight, water, and carbon dioxide, the plastids make sugars, the basic molecules needed by the plant. Free oxygen (O2) is produced as a by-product of photosynthesis. +Later, in the cell cytoplasm, the sugars may be turned into amino acids for proteins, nucleotides for DNA and RNA, and carbohydrates such as starch. This process needs certain minerals: nitrogen, potassium, phosphorus, iron and magnesium. +Plant nutrients. +Plant nutrition is the study of the chemical elements that are necessary for plant growth. +Macronutrients: +Micronutrients (trace elements) include: +Roots. +The roots of plants perform two main functions. First, they anchor the plant to the ground. Second, they absorb water and various nutrients dissolved in water from the soil. Plants use the water to make food. The water also provides the plant with support. Plants that lack water become very limp and their stems cannot support their leaves. Plants which specialise in desert areas are called xerophytes or phreatophytes, depending on the type of root growth. +Water is transported from the roots to the rest of the plant through special vessels in the plant. When the water reaches the leaves, some of it evaporates into the air. Many plants need the help of fungi to make their roots work properly. This plant/fungi symbiosis is called mycorrhiza. Rhizobia bacteria in root nodules help some plants get nitrogen. +Flowering plant reproduction. +Flowers and pollination. +Flowers are the reproductive organ only of "flowering" plants (Angiosperms). The petals of a flower are often brightly colored and scented to attract insects and other pollinators. The stamen is the male part of the plant. It is composed of the "filament" (a stalk) that holds the anther, which produces the pollen. Pollen is needed for plants to produce seeds. The carpel is the female part of the flower. The top part of the carpel contains the stigma. The style is the neck of the carpel. The ovary is the swollen area at the bottom of the carpel. The ovary produces the seeds. The sepal is a leaf that protects a flower as a bud. +How pollen moves from one flower to another flower is called pollination. This transfer can happen in different ways. Insects such as bees are attracted to bright, scented flowers. When bees go into the flower to gather nectar, the spiky pollen sticks to their back legs. The sticky stigma on another flower catches the pollen when the bee lands or flies nearby it. +Some flowers use the wind to carry pollen. Their dangling stamens produce lots of pollen that is light enough to be carried by the wind. Their flowers are usually small and not highly coloured. The stigmas of these flowers are feathery and hang outside the flower to catch the pollen as it falls. +Seed travelers. +A plant produces many spores or seeds. Lower plants such as moss and ferns produce spores. The seed plants are the Gymnosperms and Angiosperms. If all the seeds fell to the ground beside the plant, the area might become overcrowded. There might not be enough water and minerals for all the seeds. Seeds usually have some way to get to new places. Some seeds can be dispersed by the wind or by water. Seeds inside juicy fruits are dispersed after being eaten. Sometimes, seeds stick to animals and are dispersed that way. +Fossils. +The question of the earliest plant fossils depends on what is meant by the word "plant". +By the Silurian, fossils of whole plants are preserved, including the lycophyte "Baragwanathia". From the Devonian, detailed fossils of rhyniophytes have been found. Early fossils of these ancient plants show the individual cells within the plant tissue. The Devonian period also saw the evolution of the first tree in the fossil record, "Wattieza". This fern-like tree had a trunk with fronds, and produced spores. +The coal measures are a major source of Palaeozoic plant fossils, with many groups of plants in existence at this time. The spoil heaps of coal mines are the best places to collect; coal itself is the remains of fossilised plants, though structural detail of the plant fossils is rarely visible in coal. In the Fossil Forest at Victoria Park in Glasgow the stumps of "Lepidodendron" trees are found in their original growth positions. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Plantae.txt b/.github/workflows/data/simplewiki-500/Plantae.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Plastic.txt b/.github/workflows/data/simplewiki-500/Plastic.txt new file mode 100644 index 000000000..969a4960f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Plastic.txt @@ -0,0 +1,25 @@ +A plastic is a material that can change its shape easily. Many things are made of plastics, usually because making them to the right shape is easy. +Some plastics have other materials added to them, like glass, because they make the plastic stronger and stiffer. +Plastics are used to make many products, including nylon or polyester clothing; toys; electronics; food containers; pipes; bags; parachutes; ropes; car parts; medical supplies; bulletproof glass; and body armor. +Types. +There are many types of plastic. Some can be shaped only when they are freshly made; then they become hard. Others are thermoplastic and can be softened by heating them. These plastics can be used for 3D printing, because the plastic will become soft enough to form into different shapes, and then become hard again when they cool down. +History. +For many years, people experimented with plastics based on natural polymers like cellulose. In 1855 Alexander Parkes (1813-1890), an English inventor, created an early form of plastic called "Parkesine." It was hard but flexible and transparent. +In 1869 John Wesley Hyatt invented the first synthetic (man-made) polymer as a substitute for ivory. Billiards were becoming popular, and billiard balls were made of ivory. Natural ivory is obtained by slaughtering wild elephants, and there were not enough elephants to meet the demand for ivory. Wesley found a man-made material that could be used for many purposes. +According to the Science History Institute: "[Wesley's] discovery was revolutionary. For the first time, human manufacturing was not constrained by the limits of nature. Nature only supplied so much wood, metal, stone, bone, tusk, and horn. But now humans could create new materials. This development helped not only people but also the environment. Advertisements praised celluloid as the savior of the elephant and the tortoise. Plastics could protect the natural world from the destructive forces of human need. The creation of new materials also helped free people from the social and economic constraints imposed by the scarcity of natural resources. Inexpensive celluloid made material wealth more widespread and obtainable. And the plastics revolution was only getting started." +Making plastics. +Most plastics are man-made; they do not occur in nature. The process of making plastics is usually quite complicated. +Polymers. +Most of the materials that are called "plastic" are polymers. Polymers are long chains of atoms bonded to each other. In most plastics, the long chain is a chain of carbon atoms with other atoms attached to them. The different atoms and the shape and length of the chains change how the plastic looks and works. +Petrochemicals. +Plastics are mostly petrochemicals, made from natural gas or from petroleum, a type of oil. Chemical engineers refine the petroleum which goes through a heating process. It develops ethylene and propylene, which are the chemical building blocks for many plastics. These chemicals are then combined with other chemicals to produce a polymer. +Plastics without oil. +Today, some of these plastics are also being made without oil. Instead, other sources like plants and bacteria are used to make the plastic. These plastics are called bioplastics. Some are biodegradable. +Pollution & recycling. +Old plastics are usually thrown away and put in landfills. Because plastic lasts so long, plastic pollution is a major problem. The Great Pacific Garbage Patch and other marine trash vortexes are made mostly of microplastics. +Some plastics can be recycled so they won't become waste. However, recycling plastic requires heating, and some plastics release toxic fumes when heated. Some activist organizations argue that recycling is not a solution for plastic pollution. +According to activist Judith Enck: "When it comes to plastics, recycling has been an abysmal failure, and only 5% to 6% of plastics actually gets recycled in the United States ... The plastics industry has spent millions of dollars lying to the public and letting people think that plastics are recyclable when over 90% of them are not and they know that better than anyone." +Well-known plastics. +There are many well-known plastics: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Platonic realism.txt b/.github/workflows/data/simplewiki-500/Platonic realism.txt new file mode 100644 index 000000000..b68c100ae --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Platonic realism.txt @@ -0,0 +1,18 @@ +Platonic realism is the theory of reality developed by Plato, and explained in his . Platonic realism states that the visible world of particular things is a shifting exhibition, like shadows cast on a wall by the activities of their corresponding universal Ideas or Forms. Whereas the visible world of particulars is unreal, the Forms occupy the unobservable yet true reality and are real. +Platonism is a similar, yet sometimes modified, view of reality. +Origin. +Among the natural philosophers in ancient Greece, the problem of universals was the mystery of where particular things derive their traits that we perceive as universals—for instance "red" or "apple" or "good" or "woman" or "truth". +Plato explained that the particular things of the visible world are imperfect, transient copies of the universal Ideas that are the perfect, lasting Forms. Existing exist outside space and time, the Forms are the universals and act as templates from which particulars manifest. +In his "Metaphysics", Aristotle, a student of Plato, explained that Socrates and his own student Plato held it significant that the world is in flux, much as Heraclitus had commented, "You cannot step into the same river twice", a theme of the , a group of pre-socratic philosophers. +Influence. +Plato's quest. +Plato considered that only the mind could access the timeless reality of truths, the realm of the Forms casting the visible world. Plato's metaphorical —whereby humans only know reality as shadows of the real things they see interacting on a wall—suggests the practical consequences of Platonic realism as to "natural philosophy" in its endeavor to explain the natural world and as to values (theories of which often comprises ethics, aesthetics, and political philosophy) in human society. +Plato had led the focused application of geometry, developed by Euclid, to explain the natural world. Yet by his view of nature, Plato regarded astronomy as similar to seeking a theoretical proof in geometry—abstract and not the real world—whereupon the mind's insights derived from a quest to hold other truths through the mind's probing of ethics and aesthetics would yield discovery of truths within the realm of Forms, outside space and time. +Aristotle's answer. +Aristotle, a student of Plato, answered the problem of universals differently. Aristotle explained that universals are concepts corresponding to traits borne and shared by the particular things themselves. Aristotle did not regard all reality as visible, as he recognized existence of souls, yet regarded souls as unobserved parts of the visible world, real in itself. Aristotelianism largely shaped the course of Western thought. +Aristotle developed a more or less full description and explanation of the natural world and developed logic—syllogistic logic—to derive conclusions of the relations among things. Aristotle's grounding in the visible world was a metaphysical approach that suggested what evolved by some 2000 years later into empirical science. +Platonism. +Some mathematicians and physicists are Platonists, for instance and Roger Penrose. Yet today's Platonists usually view entities within the visible world as real, and simply regard universal abstractions like numbers, sets, propositions, and geometry as corresponding to real and timeless entities that also exist, though "pure" Platonists regard only the Forms or their realm as real. +By way of string theory and the , some physicists conjecture that Plato's allegory of the cave approximates the natural world's structure. Tegmark, who regards only the mathematical structure of the universe as real, has been called a "radical" Platonist. +Notes. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Police.txt b/.github/workflows/data/simplewiki-500/Police.txt new file mode 100644 index 000000000..40bc94e83 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Police.txt @@ -0,0 +1,25 @@ +Police are a group of people whose job is to enforce laws, help with emergencies, solve crimes and protect property. A person who carries out this duty is known as a police officer. +They work out of a police station. Police are trained in first aid and rescue, because police officers are often one of the first people to get to a place where people are sick or injured, such as a car accident, or a fire. +Naming. +A police agency may be called a "police force", "police department", "police service", "constabulary", "civil guard" or "protective service". A "gendarmerie" is a police force that is part of the military, although its members rarely do actual military work. +Most police forces in the United States name themselves as "[Place] Police Department", such as New York City Police Department. State police forces are usually known as either "[State] Highway Patrol" or "[State] State Police". In the United Kingdom, most are "[Place] Police" or "[Place] Constabulary". In Canada and other English-speaking countries, "[Place] Police Service" is common. Ireland's police are called the Garda Síochána. +A "law enforcement agency" is any agency that enforces the law. In the United States, there are some law enforcement agencies that are not called police forces but carry out similar work, such as the Federal Bureau of Investigations. One common type is a "sheriff's office" (also "sheriff's department"), an agency that is led by a "sheriff". +Those who carry out policing duties are known as "police officers". They may also be known as "policemen" +Powers. +The police have different powers to help them do their job. These powers are different in different countries. Most police officers have the power to arrest people, search people, and search houses/properties. They sometimes carry equipment such as guns, batons, tasers, or pepper spray. The area where police officers can use these powers is called their jurisdiction. If officers are outside of their jurisdiction, another police force with jurisdiction can then use their powers. +Duties. +The police deal with: +Parts of police departments. +Most police departments have officers in two main groups: a "patrol" group with officers who wear uniforms, and a "detective" group with officers who wear normal clothing. +Not all countries use the same words to describe these groups. In the United Kingdom, for example, patrol officers form the "uniform branch", while detectives work within the CID ("Criminal Investigation Department"). Also in the United Kingdom, not all police officers are armed, these police officers form an "Armed Response Unit" which comes under other names in different constabularies, in the Metropolitan Police Service, it falls under SFC (Specialist Firearms Command) which all MET Armed Police fall under +Police uniforms, equipment and methods vary depending on the country. In some places, groups of police train for special jobs such as dealing with riots or dealing with highly dangerous criminals. +Police in different countries. +Different countries have different ways of organizing their police. Some countries like South Africa, Ireland and New Zealand have just one police force. Other countries have more than one. France has two police forces, one for cities and another for rural areas. Chile also has two, one for patrol and another for investigations. +Some countries have two or more levels of police forces. For example, most policing in Australia is carried out by the six state police forces, but there is also the Australian Federal Police who police the whole country. Germany has a similar system. The United Kingdom and Switzerland have many local police forces and several national agencies, but no actual national police force. In Canada, local governments can choose to either run their own police force or give the job to a bigger one. So most Canadian cities have their own police, while most rural areas are policed by the Royal Canadian Mounted Police, which is also the national police. +The United States has over 17,000 law enforcement agencies. Many areas have four levels of law enforcement agencies. For example, Los Angeles has the Los Angeles Police Department but there are many other agencies that can work in the city. This includes the county-level Los Angeles Sheriff's Department, the state-level California Highway Patrol and over 100 federal (or national) law enforcement agencies. +Worldwide, police are a small percentage of the number of people they serve. On average there are 303.3 police officers per 100,000 people. +Equipment. +In most countries, police officers carry guns during their normal duties. In the United Kingdom, New Zealand, Ireland and a few other countries, most police officers do not carry guns. Officers may also carry pepper spray, electric shock weapons (such as tasers), and batons for defense. Police officers also wear handcuffs to detain suspects. +Officers communicate using radio devices. The radios can be on both the uniform and in the patrol vehicle. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Political divisions of China.txt b/.github/workflows/data/simplewiki-500/Political divisions of China.txt new file mode 100644 index 000000000..2c9c7f9e9 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Political divisions of China.txt @@ -0,0 +1,11 @@ +There are twenty-three provinces, four municipalities, five autonomous regions and two special administrative regions in the People's Republic of China. Provinces are pronounced "Shěng" in Chinese Pinyin. The island of Taiwan is claimed as a province by the People's Republic of China (PRC), but it is not under their control. Taiwan is an island known as Republic of China (Taiwan). +Provinces and autonomous regions are broken into prefectures and sub-provincial cities. +Provinces. +There are 23 provinces in the People's Republic of China. +Municipalities. +There are 4 municipalities in the People's Republic of China. "Municipality" is the common English name for the Chinese "zhíxiáshì", meaning a city directly controlled by the national government. +Autonomous Regions. +There are 5 autonomous regions in the People's Republic of China. "Autonomous region" is the common English name for the Chinese "zìzhìqū", meaning an area with greater levels of self-government to accommodate minority groups. +Special Administrative Regions. +There are 2 special administrative regions in the People's Republic of China. "Special administrative region" is the common English name for the Chinese "tèbié xíngzhèng qū", meaning an area under special administration as a result of treaties that returned former European colonies to Chinese control. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Political party.txt b/.github/workflows/data/simplewiki-500/Political party.txt new file mode 100644 index 000000000..e9aba1f62 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Political party.txt @@ -0,0 +1,13 @@ +A political party is an organized group of people or bodies who seek to capture political power through an election in order to run the affairs of a country. It often puts forward candidates for public office. In a democracy, leaders must "run for office" in an election. In a dictatorship, there is generally only one party allowed, that can approve a new leader without non-members having a choice. +About. +A political party is similar to a faction, and can be the same thing. In some systems, members of one party in the legislature are all expected to vote the same way. The laws written by the party or faction with the majority of votes become adopted by the country, so this means whatever party is elected to over half the seats, gets to run the government. The next largest party is often called the "opposition". Sometimes when there are more than two parties with seats, no one party has over half of the seats. Then two or more parties might join to form what is called a "coalition". +Some parties are formed around a single issue or interest group. Others form policies to address all matters of government, known as a "platform". +Many political parties have a set of ideas and beliefs (called its "ideology"). People often describe these ideologies using words such as "conservative" and "liberal". +Common ideologies include environmentalism, socialism (ranging from social democracy to Marxism and Communism), conservatism, democracy, liberalism, and nationalism. +The law. +Political parties can be against the law in some places. When some parties get a lot of power, they can make all other political parties illegal. For example, the Nazi Party did this in Germany, and the Communist Party did it in several countries. Some countries make extreme-right parties illegal (such as Vlaams Blok in Belgium). At other times, countries have outlawed far-left parties. For example, West Germany banned the Communist Party in 1956. +A handful of countries like China, North Korea and Cuba still have one-party dictatorships. In a few other dictatorships, such as Saudi Arabia, all political parties are banned and there is no parliament at all. +Importance in all big democracies. +In all big democratic countries, parties are very important. But there are a few very small countries, such as the island of Jersey, where most politicians do not belong to any party and where parties do not matter much. +In some democracies, there are only two big political parties. For example, in the United States, there is the Democratic Party and the Republican Party. Some other parties exist but are very small and do not hold seats in Congress. +In other countries there are larger numbers of parties. In the German federal Parliament (or Bundestag), six parties have seats. In the United Kingdom, there are two big parties, one medium-sized party, and many small ones. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Political problems of China.txt b/.github/workflows/data/simplewiki-500/Political problems of China.txt new file mode 100644 index 000000000..f0a4c72c5 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Political problems of China.txt @@ -0,0 +1,10 @@ +The People's Republic of China claims that the island of Taiwan is part of its territory, but the Republic of China (which was the government that controlled all of China from 1911 to 1949) still claims the land as theirs, and does still control Taiwan. +Many people say the government stops people from having freedom of speech, freedom of religion and other political rights that people in other countries have. China still has one-party rule, and is not a democracy. +Territorial disputes. +The following territories are claimed by China (PRC and/or ROC) and by another country or more. +Lost territories (Unequal treaties). +Unequal treaties were forced onto Asian countries when European imperialism reached Asia. +The list includes claims from PRC and ROC, as well as unofficial historical claims. +"Note: Japan's and Korea's unequal treaties have been resolved since the end of WWII." +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Politics.txt b/.github/workflows/data/simplewiki-500/Politics.txt new file mode 100644 index 000000000..9e97091ba --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Politics.txt @@ -0,0 +1,18 @@ +Politics (from Ancient Greek πολιτικά (politiká) 'affairs of the cities') is the way that people living in groups make planned decisions. +Politics is about making agreements between people so that they can live together in groups such as tribes, cities, or countries. In large groups, such as countries, some people may spend a lot of their time making such agreements. These people are called politicians. Politicians, and sometimes other people, may get together to form a government. The study of politics in universities is called political science, public affairs, government, political studies, or public administration. +In everyday life, the term "politics" refers to the way that countries are governed, and to the ways that governments make rules and laws to manage the human society properly. Politics can also be seen in other groups, such as in companies, clubs, schools, and churches. +Government. +The government tries to lead the whole group. Governments do things such as: +One of the ways the government leads the group is by making laws and rules which tell everybody what they can and can not do. The government makes these laws so that society will be safe and well-ordered. The law that says "you must not drive a car when you have been drinking alcohol" stops people from drunk driving, which could kill people. The law that says "you must wear a helmet on a motorcycle" makes sure that people protect themselves when riding their motorcycles. +The government can also control people and what happens in a country in other ways besides making laws. +Politics is often compared to ethics (ideas about right and wrong). Ethics is a more abstract study of right and wrong. Ethics is usually more concerned with principle than law or politics or diplomacy, so many people think ethics is not practical. But without some agreement on ethics, there is probably no way to even have a debate, laws or an election. There is always some agreement on ethics and personal conduct in a political system. +Political parties. +In most countries, people have formed political parties to put forward their ideas. There is usually some disagreement between people within a party, but they work together because they feel that they agree on enough things, and they will have more power if they join together. They agree to take the same position on many issues, and agree to support the same changes to law and the same leaders. An election is usually a competition between different parties. Some examples of parties are the Liberal party, the Labor party and the Greens. +History. +The Greek philosopher Aristotle wrote that humans are a political animal and that ethics and politics are closely linked. +Niccolò Machiavelli wrote, in his 1532 book, The Prince, that politics was firstly about having and keeping power. He said that without power, a leader could do nothing. +In 1651, Thomas Hobbes wrote "Leviathan", a book about politics. Hobbes wrote that people living in groups often give up some of their rights in exchange for some protections from a government. This is the basis of the social contract theory. +In the 1800s, John Stuart Mill developed the "liberal" idea of politics. Mill said that democracy is the most important political development of the 1800s. He said that there should be more protection for individual rights against the government. +Bernard Crick wrote a list of the political virtues, which were about best practices of politics itself. +International politics. +There are also disagreements between different countries. Attempts to solve the problem with meetings are called diplomacy. This is politics between nations instead of politics within nations. If the problems are not resolved by diplomatic meetings they can lead to war or terrorism. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Potato.txt b/.github/workflows/data/simplewiki-500/Potato.txt new file mode 100644 index 000000000..3663c1306 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Potato.txt @@ -0,0 +1,14 @@ +A potato is a vegetable, the "Solanum tuberosum". It is a small plant with large leaves. The part of the potato that people eat is a tuber that grows under the ground. +A potato has a lot of starch and other carbohydrates. Potato usually has a light-brown or yellowish skin and is white or yellow inside. If the potato gets light on it, the tuber turns green and will be poisonous. +History. +The potato came from the high and cool areas of the Andes mountains. It was grown as a food crop thousands of years ago. When Spanish conquistadores came to South America in the 1500s, they took potatoes back to Europe. +It took nearly 200 years for the potato to become a widely grown crop. In the 1630s the farmers in Ireland began growing potatoes because they grew well in the poor soils. They also have most of the vitamins that people need to live. When a potato plague destroyed the crop in 1845, the Irish Potato Famine killed many people. +The potato plant is now grown in many parts of the world. Captain William Bligh planted potatoes on Bruny Island, Tasmania in 1792. In Australia they are now the largest vegetable crop. +Name Origin. +The English word "potato" comes from the Spanish word "patata". The Royal Spanish Academy says the Spanish word is a hybrid of the Taíno ('sweet potato') and the Quechua ('potato'). +Types. +Scientists in Germany have used genetic engineering to make a potato called the Amfloratus, which could be grown to make starch for making other things in factories. +Cooking. +Potatoes are almost always eaten cooked. People cook potatoes by boiling, baking, roasting, or frying them. French fries or "chips" are potatoes cut into long pieces and fried until they are soft. Potato chips, often called crisps, are potatoes cut into very thin round pieces and fried until they are hard. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Power structure.txt b/.github/workflows/data/simplewiki-500/Power structure.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Prediction.txt b/.github/workflows/data/simplewiki-500/Prediction.txt new file mode 100644 index 000000000..27b9dab9f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Prediction.txt @@ -0,0 +1,5 @@ +A prediction is a statement that someone makes about what they think is going to happen. It is often very helpful to know what is going to happen to help prepare for these future events. Predictions are based on the idea that two beginning positions that are like each other will have similar results. By watching something happen, it is possible to predict what will happen if something similar happens. Predictions are given by science or fortune tellers or horoscopes. +The most common example of a prediction is the weather forecast. Studying how weather happens lets people predict what the weather will be by looking at what is currently happening. This is helpful because by knowing that it is going to rain, a person can wear the right clothes for it. +Nostradamus has made many predictions about the future. +Related pages. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Probability experiment.txt b/.github/workflows/data/simplewiki-500/Probability experiment.txt new file mode 100644 index 000000000..0ce9274e5 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Probability experiment.txt @@ -0,0 +1,2 @@ +A probability experiment is a situation where chance affects the result of an experiment. If the experiment can only have two outcomes, it is named Bernoulli trial. A coin flip is a probability experiment because chance affects whether a coin will land heads or tails when it is flipped. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Probability.txt b/.github/workflows/data/simplewiki-500/Probability.txt new file mode 100644 index 000000000..d53ed8de7 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Probability.txt @@ -0,0 +1,10 @@ +Probability is a part of applied mathematics. It has to do with chance, the study of things that might happen or might not happen. +For example, using probability, one can show that by throwing a coin up in the air and letting it land, half of the time it will land with one side facing up, and half of the time with the other side facing up. Many coins have a picture of the face of a famous person on one side, and something else on the other side. Often people call the side with the face "heads", and the other side "tails". +The probability (p) of an event "E", written formula_1, is always between zero (impossible) and one (certain). +If we roll a die (plural: dice), then the chance that it will land on 1 is 1/6 (because there are 6 numbers on a die). Similarly, the chance it will land on 2 is also 1/6. The chance it will land on any number between 1 and 6 is 1, because every time we roll the die, it will always land on a number between 1 and 6. +Probability can be figured out using mathematics. For example, if one rolls six dice, the chance of them getting a number more than ten is not obvious, but can be figured out using math and science. +One of the most interesting things about chance is that to figure out the probability that two things will both happen, one usually multiply their two probabilities together. For example, suppose that one wants to know the probability of rolling two dice and getting a certain combination (it could be two 6s or a 3 then a 5, just any two). The possibility of getting a 3 is one in six (​1⁄6), and the possibility of getting a 5 is also one in six, so the chances of getting a 3 then a 5 is ​1⁄6×​1⁄6=⅟36. If that number is expressed as somewhere between 0 and 1, it equals 0.027...7, which is fairly low. The possibility of getting a 3, then a 5, and then a 2 would be ​1⁄6×​1⁄6×​1⁄6=⅟216 or 0.00463, which is a much lower probability. +Ideas of probability. +People like Jacob Bernoulli, Pierre-Simon Laplace, or Christiaan Huygens used the word probability, as described above. Other people thought about frequencies; the notion of probability is usually called frequency probability. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Product stewardship.txt b/.github/workflows/data/simplewiki-500/Product stewardship.txt new file mode 100644 index 000000000..06733726f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Product stewardship.txt @@ -0,0 +1,9 @@ +Product stewardship is a way of managing the environmental impacts of different products and materials. People involved in producing, selling, using and disposing of products have a shared responsibility to manage them in a way that reduces their impact, throughout their lifecycle, on the environment and on human health and safety. +This includes waste disposal measures in the distribution of an industrial product. That is, paying for the safe and proper disposal when you pay for the product, and relying on those who sold it to you, to dispose of it. +The idea of product take-back is that the service of waste disposal is paid for at time of purchase. It is often applied to goods that become toxic waste if not disposed of properly. It is most familiar as the deposit bottle - where one pays for the loan of the bottle at the same time as one purchases what is inside it. The container deposit charged for a deposit bottle may be a fee to "buy" the bottle, separately from the fee to buy what it contains. If one returns the bottle, the fee is returned, and the supplier must return the bottle for re-use or recycling. The fee can be collected by anyone finding and returning the bottle, so it is common for people to collect these and return them as a means of surviving. This is quite common for instance among homeless people. +Legal requirements vary: the bottle itself may be considered simple property of the purchaser of the contents, or, the purchaser may have some obligation to return the bottle to some depot so it can be recycled or re-used. For more toxic items, it is more likely that returning it is required: +This principle is applied very broadly beyond bottles to paint and automobile parts such as tires. When purchasing paint or tires in many places, one pays for the disposal of the toxic waste they become. In some countries, such as Germany, law requires attention to the comprehensive outcome of the whole extraction, production, distribution, use and waste of a product, and holds those profiting from it legally responsible for any outcome along the way. This is also the trend in the UK and EU generally. In the United States, there have been many class action suits that are effectively product stewardship liability - holding companies responsible for things the product does, which it was never advertised to do. +Rather than leaving these problems to be fixed by the public sector or be haphazardly assigned one issue at a time to companies via lawsuits, many accounting reform efforts focus on achieving full cost accounting. This is the financial reflection of the comprehensive outcome - noting the gains and losses to all parties involved, not just those investing or purchasing. Such moves have made moral purchasing more attractive, as it avoids liability and future lawsuits. +So these are partial implementations of a strict service economy ideal. +Those who advocate these measures are concerned with the later phases of product lifecycle and the comprehensive outcome of the whole production process. It is considered a pre-requisite to a strict service economy interpretation of (fictional, national, legal) "commodity" and "product" relationships. +There are laws in several countries to enforce these ideas. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Product.txt b/.github/workflows/data/simplewiki-500/Product.txt new file mode 100644 index 000000000..1bfa1425e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Product.txt @@ -0,0 +1,2 @@ +A product can mean a few things: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Profanity.txt b/.github/workflows/data/simplewiki-500/Profanity.txt new file mode 100644 index 000000000..8c7d060eb --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Profanity.txt @@ -0,0 +1,41 @@ +Profanity, also known as swearing, are words which are considered to be impolite, effrontery, not nice, inappropriate, low-class or offensive. The adjective is "profane". Profanities can also be called strong words, swear words, dirty words, vulgar words, strong language, obscenity, vulgarity, obscene language, vulgar language, or expletives. It can be called swearing, although this also has a normal meaning of making a "solemn promise". A profanity usually refers to social customs or bodily functions. These are things that people feel very strongly about. In some languages, such as French, there is more profanity about religion than most other topics. This is the original meaning, from a Latin word meaning "before the temple". +Religious profanity is called blasphemy. The verb is to blaspheme and the adjective is 'blasphemous'. Saying “God!” or “Jesus Christ!” as an expression of surprise or annoyance is considered by many to be blasphemy, mostly because one of the Ten Commandments says not to use God's name "in vain" (without substance or without relevance). Swearing oaths can also be considered wrong by some who follow Jesus' teaching against swearing oaths in the Gospels (such as Matthew 5:34). +A profanity can be a word or gesture or some other form of behavior. +Different words can be profane to different people, and what words are thought of as profanity in English can change over time. +Whether a word is a profanity will always depend on the way people think. Some people will be offended by something, while others will not be. Words which should not be used are taboo words. Using such words is thought by some people to be a sin. For example, some Christians and some Muslims believe that swearing is a sin. +Use of profanity is unlawful in the Commonwealth of Nations, United Kingdom, Ireland, Australia, and New Zealand. The use of words that are profane is also hurtful for children (aged 4–11), pre-teens (aged 12–14), teenagers (aged 15–17), and young adults (aged 18–22). In Russia, it is a criminal record only if used with intent to "exalt the Ideology of the Eastern Slavic Racism" or propagating the Sovereign wealth fund. In the United States and most of the world (including Canada, France, Belgium, Germany, Austria, Spain, Portugal, Colombia, Brazil, Italy, Sweden, Denmark, Norway, the Netherlands, Poland, Romania, Hungary, the Czech Republic, Slovakia, Slovenia, Croatia, Serbia, China, South Korea, and Japan), use of profanity is not in itself a criminal record, but comprises hate speech if used for promoting the Ethnic conflict of Neo-Nazism. Publicly using profanity is also unlawful in some Nordic countries (such as Finland, Greenland, and Iceland), under federation law unless for a religious, academic, educational, artistic, literary or scientific purpose. +Opinions on profanity. +Some people call profanity "crude," but some say that it is no cruder to say "damn" "hell" or "crap" than it is to use "hate" (a word that is about a very strong emotion, but not a swear word). People who use profanity do not always mean to make anybody feel bad, and tolerance for different forms of profanity can vary widely, from person to person. Most often, using profanity is a verbal outlet for strong feelings (usually unpleasant ones), that might otherwise cause a physical reaction. At other times, some people may use profanity as humor and sarcasm. +Coprolalia. +Coprolalia is a mental condition that makes people use profanity constantly. It is different from Tourette syndrome. Tourette syndrome is actually a group of symptoms that only includes coprolalia 15% of the time. The condition can be made worse by stress. +Examples of profanity. +Several of these words come from Anglo-Saxon or old Norse names for body parts, and bodily functions. They came to be thought of as profanity mostly after the Normans brought French and Latin words for them to England. + (Arse in the United Kingdom) +Means the buttocks. + (Arsehole in the United Kingdom) +Means the anus. Also used as an insult for an unpleasant or foolish person. +A term which used to be for a child who was born to unmarried parents, now used as an insult for an unpleasant person. +A female dog. Also used as an insult for a disliked person, especially a disliked woman. +Prick ( in the United States) +These terms refer to the penis, and/or as an insult for an unpleasant or foolish person. +Crap + ( in the United Kingdom) +Feces; also a verb, meaning to defecate. +Twat (Pussy in the United States) +A vagina. Also used as an insult for a disliked person. +A verb, meaning to have sex. +Urine; also a verb, meaning to urinate. +Profane gestures. +These are mostly performed while facing another person and can be meant toward them, or about them. These gestures are considered as strong as profane words in most cases. + Performed by placing the tip of a thumb under the front teeth, then pulling the thumb slightly forward, with the fingers closed. Mocks the "thumbs up" gesture. Can be taken to mean "bite me", though it predates the common use of this phrase. +Also an invitation to "bite me", or to perform oral sex + One pokes out a cheek with the tongue while rocking a closed hand toward the mouth, at the same time. Indicates something or someone is a waste of time. +Indicates something or someone is a waste of time, or performs poorly. +Understood generally to mean "fuck you" or "fuck off". +Understood generally to mean "fuck you" or "fuck off". +Performed by placing the tip of a thumb against the tip of the nose, then wiggling the fingers. Expresses contempt, or thinking that someone is foolish. +One turns a forearm horizontally while swinging the other fist and forearm around it. Suggests something being shoved into a person's rectum. If the middle finger is shown, it is a stronger form of "fuck you", or a suggestion of anal sex. +in comedy. +people use swear words as jokes though not everyone likes this. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Program.txt b/.github/workflows/data/simplewiki-500/Program.txt new file mode 100644 index 000000000..ae1f67d31 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Program.txt @@ -0,0 +1,2 @@ +The term Program can be used in many ways. +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Proof.txt b/.github/workflows/data/simplewiki-500/Proof.txt new file mode 100644 index 000000000..c7a2b7aea --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Proof.txt @@ -0,0 +1,3 @@ +Proof could mean: +In entertainment: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Proper noun.txt b/.github/workflows/data/simplewiki-500/Proper noun.txt new file mode 100644 index 000000000..0121544fc --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Proper noun.txt @@ -0,0 +1,6 @@ +A proper noun or proper name is a noun representing a unique thing (like "London", "Jupiter", "John Hunter", or "Toyota"), unlike a common noun, which represents a type of thing (like "city", "planet", "person" or "corporation"). Proper nouns are the only nouns in English which always have the first letter capitalized. +In English, proper nouns don't usually come after an article or other limiting modifier (such as "any" or "some"). They are used for a particular person, place, or object. For example, a town called "Newtown" may be, but does not necessarily have to be, a new [recently built] town). +Which nouns are considered proper names depends on language. For example, names of days and months are considered proper names in English, but not in Spanish, French, Swedish, Slovenian or Finnish, where they are not capitalized. +References. +<templatestyles src="Reflist/styles.css" /> + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Protein.txt b/.github/workflows/data/simplewiki-500/Protein.txt new file mode 100644 index 000000000..540557b6a --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Protein.txt @@ -0,0 +1,18 @@ +Proteins are long-chain molecules built from small units known as amino acids. They are joined with peptide bonds. +They are biochemical compounds.They have one or more polypeptides folded into a round or fibrous shape. +A polypeptide is a single linear polymer chain of amino acids. The sequence of amino acids in a polypeptide comes from the DNA sequence of a gene. The genetic code specifies 20 standard amino acids. Shortly after synthesis, some amino acids are chemically modified. This alters the folding, stability, activity, and function of the protein. Sometimes proteins have non-peptide groups attached, as cofactors. +Proteins are essential to all cells. Like other biological macromolecules (polysaccharides and nucleic acids), proteins take part in virtually every process in cells: +Formation. +Proteins are formed by a process called "protein synthesis". The cell reads the genetic information of the DNA and translates it into a protein. In eukaryotes, this process begins in the cell nucleus and ends in the ribosome. In prokaryotes all of it is done in the cytoplasm. +Proteins have different functions depending on their shape and sequence. They can be found in meat or muscle. They are used for growth and repair, as well as for strengthening the bones. They help to make tissue and cells. They are in animals, plants, fungi, bacteria, and in the human body. +Muscles are mostly made of protein. When protein is digested, it is broken down into amino acids. These amino acids can then be used to build new protein. Proteins form an important part in foods like milk, eggs, meat, fish, beans, spinach, and nuts. There are four factors that determine what a protein will do. The first is the order of the amino acids. There are 20 different types of amino acids. The second is the little twists in the chain. The third is how the entire structure is folded up. The fourth is whether it is made up of different sub-units. Haemoglobin molecules, for example, are made of four sub-units. +Damaging mutations. +Most proteins are enzymes, and mutations may slow them or stop them working. 50% of human cancers are caused by mutations in the tumour suppressor p53. p53 is a protein which regulates cell division. +Lifespan. +Once formed, proteins only exist for a certain period. Then they are and recycled by the cell's machinery. A protein's lifespan is measured by its half-life. This covers a wide range. They can exist for minutes or years with an average lifespan of 1–2 days in mammalian cells. +Essential amino acids. +Proteins are necessary in an animal's diet, since they cannot make all the amino acids they need (they can make most of them). They must get certain amino acids from food. These are called the "essential amino acids". Through digestion, animals break down ingested protein into free amino acids. The amino acids are then used in metabolism to make the enzymes and structures the body needs. +There are nine essential amino acids for humans, which are obtained from food. The nine essential amino acids are: histidine, isoleucine, leucine, lysine, methionine, phenylalanine, threonine, tryptophan, and valine. Meat contains all the essential amino acids humans need; most plants do not. However, eating a mixture of plants, such as both wheat "and" peanut butter, or rice "and" beans, provides all the essential amino acids needed. Soy products like tofu provide all the essential amino acids—as does quinoa—but these are not the only way to get the protein humans need. +Proteins were first described by the Dutch chemist Gerardus Johannes Mulder. Jöns Jacob Berzelius gave proteins their name. Hundreds of other scientists have studied proteins since him. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Provinces and territories of Canada.txt b/.github/workflows/data/simplewiki-500/Provinces and territories of Canada.txt new file mode 100644 index 000000000..05b5b4402 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Provinces and territories of Canada.txt @@ -0,0 +1,5 @@ +Canada is a country and sovereign state in the north of North America. It is made up of thirteen administrative divisions: ten provinces and three territories. +The different levels of government in Canada are based on the principles of a federation: the governments of each province and territory share power with the federal government. The territories' governments have a more limited set of powers than the federal government. +The provinces are in the south of Canada, near the border with the United States. They go from the Atlantic Ocean in the east to the Pacific Ocean in the west. The territories are to the north, where fewer people live, close to the Arctic Circle and Arctic Ocean. +Here is a list of the provinces and territories, and their standard abbreviations, with their capitals (the cities where their governments are based) and largest cities. Canada's national capital, where the federal government meets, is Ottawa. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Psychoneuroimmunology.txt b/.github/workflows/data/simplewiki-500/Psychoneuroimmunology.txt new file mode 100644 index 000000000..bc87f07cb --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Psychoneuroimmunology.txt @@ -0,0 +1,14 @@ +Psychoneuroimmunology (PNI) is the study of the interaction between psychological processes and the nervous and immune systems of the human body. PNI takes an interdisciplinary approach. +The main interests of PNI are the interactions between the nervous and immune systems and the relationships between mental processes and health. +History. +Interest in the relationship between psychiatric syndromes or symptoms and immune function has been a consistent theme since the beginning of modern medicine. +Claude Bernard, a French physiologist, founded the concept milieu interieur in the mid-1800s. In 1865, Bernard described the perturbation of this internal state “… there are protective functions of organic elements holding living materials in reserve and maintaining without interruption humidity, heat and other conditions indispensable to vital activity. Sickness and death are only a dislocation or perturbation of that mechanism." (Bernard, 1865) +Walter Cannon, a professor of physiology at Harvard University coined the term homeostasis in his book "The Wisdom of the Body" in 1932. In his work with animals Cannon observed that any change of emotional state in the beast, such as anxiety, distress, or rage was accompanied by total cessation of movements of the stomach (Bodily Changes in Pain, Hunger, Fear and Rage, 1915). These studies into the relationship between the effects of emotions and perceptions on the autonomic nervous system, the responses that led to the freeze, fight or flight response. +Birth of psychoneuroimmunology. +In 1975 Robert Ader and Nicholas Cohen advanced PNI with a demonstration of classic conditioning of the immune function, and coined the term "psychoneuroimmunology". Ader was investigating how long conditioned responses might last in laboratory rats. The highly reproducible results showed that conditioned rats exposed to the conditioned stimulus were immuno suppressed. In other words, a signal via the nervous system (taste) was affecting immune function. This was one of the first scientific experiments that demonstrated that the nervous system can affect the immune system. +In 1981 David Felten, then working at the Indiana University of Medicine, discovered a network of nerves leading to blood vessels as well as cells of the immune system. The researchers also found nerves in the thymus and spleen terminating near clusters of lymphocytes, macrophages and mast cells, all of which help control immune function. This discovery provided one of the first indications of how neuro-immune interaction occurs. +Ader, Cohen and Felten went on to edit the groundbreaking book "Psychoneuroimmunology" in 1981, which laid out the underlying premise that the brain and immune system represent a single, integrated system of defense. +Link between stress and disease. +Stressors can produce profound health consequences. In one epidemiological study, for example, all-cause mortality increased in the month following a severe stressor – the death of a spouse. Theorists propose that stressful events trigger cognitive and affective responses which, in turn, induce sympathetic nervous system and endocrine changes. These ultimately impair immune function. Potential health consequences are broad, but include rates of infection, HIV progression, and cancer incidence and progression. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Quebec.txt b/.github/workflows/data/simplewiki-500/Quebec.txt new file mode 100644 index 000000000..780e8208a --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Quebec.txt @@ -0,0 +1,25 @@ +Quebec ( or ; ] ()) is a province in the eastern part of Canada located between the Hudson Bay and the Gulf of Saint Lawrence. It is the largest of Canada's ten provinces by size. It also has the second largest number of people, after Ontario. Most of Quebec's inhabitants live along or close to the banks of the Saint Lawrence River. Not many people live in the north part of the province. +Unlike the other provinces, most people in Quebec speak French (Canadian French) and French is the only official language. There is a strong French-language culture, which includes French-language newspapers, magazines, movies, television and radio shows. Their culture and language, though, is quite different from that of France, mainly because of Quebec's isolation from France since the 17th century, and the separate evolutions of the French language in Quebec and in France. Their culture was also influenced by English-speaking Canada. +The government of Quebec has its offices in the capital, Quebec City, which is one of the oldest cities in North America. The city with the most people in the province is Montreal, which is also the second-largest city in Canada. +Quebec has many natural resources that are used to create jobs. Quebec also has many companies that create products for information and communication technologies, aerospace, biotechnology, and health industries. It has also developed close relations with the Northeastern United States. +Leaving Canada. +Quebec was part of New France until 1760, then under British control. Quebec became a province in the Canadian Confederation in 1867. Since then, some people in Quebec have wanted to leave Canada. Since Quebec is a mainly French-speaking province, most of the people there feel that it is very different from the rest of Canada, and want to keep it that way. Some feel that for this to happen, Quebec must leave Canada and become its own country. However, the people of Quebec are still divided as to its place in Canada. +Quebec held democratic votes in 1980 and 1995 to decide whether to leave Canada. In 1995, the people of Quebec chose to stay in Canada by a 1% margin. +History of Quebec. +Aboriginal people and Inuit groups were the first peoples who lived in what is now Québec. These Aboriginal people lived by hunting, gathering, and fishing. Some of the Aboriginal people, called Iroquoians, planted squash and maize. The Inuit fished and hunted whales and seals for fur and food. Sometimes they warred with each other. +Vikings came in longboats from Scandinavia in 1000 AD. Basque whalers and fishermen traded furs with Aboriginal people throughout the 1500s. +The first French explorer to reach Quebec was Jacques Cartier. He sailed into the St. Lawrence River in 1534 and established a colony near present-day Quebec City. +Samuel de Champlain came from France and traveled into the St. Lawrence River. In 1608, he founded Quebec City as a permanent fur trading outpost. Champlain signed trading and military agreements with the Aboriginal people. Voyageurs, coureurs des bois, and Catholic missionaries used river canoes to explore the interior of the North American continent. +After 1627, King Louis XIII of France made a rule that only Roman Catholics could go to live in New France. Jesuit clerics tried to convert New France's Aboriginal people to Catholicism. New France became a Royal Province of France in 1663. The population grew from about 3,000 to 60,000 people between 1666 and 1760. Colonists built farms on the banks of St. Lawrence River. +In 1753 France began building a series of forts in the British Ohio Country. Britain asked the French to remove the forts, and the French refused. By 1756, France and Britain were at war. In 1758, the British attacked New France by sea and captured the French fort at Louisbourg. +In 1759, British General James Wolfe defeated General Louis-Joseph de Montcalm outside Quebec City. France gave its North American land to Great Britain in 1763. In 1764, New France was renamed the Province of Quebec. +In 1774, the British Parliament passed the Quebec Act, giving recognition to French law, Catholic religion, and French language in the colony. The Quebec Act gave the Quebec people their first Charter of rights. The Quebec Act made American colonists angry, so they launched the American Revolution. A 1775 invasion by the American Continental Army was stopped at Quebec City. In 1783, Quebec gave the territory south of the Great Lakes to the new United States of America. In 1867 the Parliament of the United Kingdom passed the British North America Act, which brought most of the provinces together. +Quiet Revolution. +The conservative government of Maurice Duplessis dominated Quebec politics from 1944 to 1960 with the support of the Catholic Church. The Quiet Revolution was a period of social and political change. During the Quiet Revolution, French Canadians lost their control over the Quebec economy, the Roman Catholic Church became less important, and the Quebec government took over the hydro-electric companies. +In 1963, a terrorist group that became known as the Front de Libération du Québec (FLQ) began doing bombings, robberies and attacks on government offices. In 1970 the FLQ kidnapped James Cross, the British trade commissioner to Canada. The FLQ also kidnapped and assassinated Pierre Laporte, Minister of Labour and Deputy Premier of Québec. Laporte's body was found in the trunk of Paul Rose's car, on the South Shore of Montreal on October 17 1970. Prime Minister Pierre Trudeau invoked the War Measures Act, and 497 people were arrested. +The Quiet Revolution was so named because it was not marked by protests or violence. +In 1977, the newly elected Parti Québécois government of René Lévesque introduced the Charter of the French Language. Often known as Bill 101, it defined French as the only official language of Quebec. +Government. +The government is based in the provincial capital, Quebec City. The government is led by a lieutenant-governor (pronounced "lef-") who represents the Crown. As of 2019, he is Michel Doyon. The political leader of the province is the premier. He is François Legault of the Coalition Avenir de Quebec (CAQ), elected in 2018. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Ram.txt b/.github/workflows/data/simplewiki-500/Ram.txt new file mode 100644 index 000000000..e2db3c284 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Ram.txt @@ -0,0 +1,2 @@ +Ram can mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Ranch.txt b/.github/workflows/data/simplewiki-500/Ranch.txt new file mode 100644 index 000000000..ea9728c30 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Ranch.txt @@ -0,0 +1,4 @@ +A ranch is a farm for raising cows, horses, sheep or other livestock. Most ranches are large, but they can be any size. The word "ranch" is from the Spanish word "rancho". It is used in American and Canadian English. People who use a ranch are called ranchers. +A ranch may be on private or public land. The desert areas of the western United States have many ranches, because there is much land that is not very good for crops. There are also many in desert areas of Australia, where they are called stations. Someone who takes care of the livestock may be called a stockman or cowboy. +Related pages. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Raw food.txt b/.github/workflows/data/simplewiki-500/Raw food.txt new file mode 100644 index 000000000..8b046130d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Raw food.txt @@ -0,0 +1,7 @@ +Foods are raw when they are not cooked. +Most things are good to eat raw, but some can be poisonous. +Health. +There's currently no solid evidence to suggest that raw food is more healthy than cooked food. +Germs. +Raw food can sometimes make people sick because of bacteria which would otherwise be destroyed by cooking. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Readability.txt b/.github/workflows/data/simplewiki-500/Readability.txt new file mode 100644 index 000000000..af0f34e92 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Readability.txt @@ -0,0 +1,30 @@ +Readability, or textual difficulty, means how easy or hard a text is to read. Research has shown that two main factors affect the ease with which texts are read. +Readability predictions. +A readability test is a way to measure a text for how easy it is to read. Readability tests give a prediction as to how difficult readers will find a particular text. They do this by measuring one or both of the two main causes, as follows: +Word difficulty. +Word difficulty is usually measured by vocabulary lists or word length. +In 1923, Bertha A. Lively and Sidney L. Pressey published the first reading ease formula. They had been concerned that science textbooks in junior high school had so many technical words. They felt that teachers spent all class time explaining their meaning. They argued that their formula would help to measure and reduce the “vocabulary burden” of textbooks. Their formula used the Thorndike word list as a basis. Manually, it took three hours to apply the formula to a book. +Vocabulary lists. +Several vocabulary lists have been published by researchers. These lists are based on samples of published texts in English, and (less often) samples of recorded spoken language. The lists differ slightly according to the sources chosen, but they are very reliable. The items listed may represent more than one actual word; they are lemmas. For instance the entry "be" contains within it the occurrences of "is", "was", "be" and "are". The top 100 lemmas account for 50% of all the words in the Oxford English Corpus. +"The Reading Teachers Book of Lists" claims that the first 25 words make up about one-third of all printed material in English, and that the first 100 make up about one-half of all written material. +One of the first readability tests, the Dale–Chall formula, used a vocabulary list. It counted the number of listed words in a passage, and applied a formula which gave a grade level. It was used to rate textbooks for grade levels in US school districts. +It is easy, in principle, to use a vocabulary list as part of a computer-based readability measure. The list is organised as a look-up table. The percentage of listed words in a passage gives the data for the formula, and the user is presented with a grade level. +Word length. +This is called an "index", or a "proxy". This is because word length is correlated with word frequency, and word frequency is correlated with word difficulty. "Longer words are, "on average", harder than short words". +Word length is measured by counting the letters in each word, or by counting syllables. Since most syllables have one vowel, some computer programs count vowels per average word. A few tests measure the percentage of words on a list; the list is based on the known frequency of words in a language. +Sentence difficulty. +Sentence difficulty is usually measured by sentence length. This again is an index, because longer sentences are, on average, harder than short sentences. Computers count the number of words between full stops, but this is a second-best method. Humans can judge whether a semi-colon or colon should count as the end of a sentence for testing purposes. +Since both factors may vary independently of each other, the best prediction is gained by devising a formula with makes use of both indices. What this means is that a single score is produced for a text, and that score is looked up on a table or graph. That tells you how difficult the text is in terms of either a) an American school grade level, or b) an artificial scale of 0% to 100%. Either way is effective. What really makes a difference is: +Direct measurement. +It is possible to get a good prediction by getting a group of subjects to read through a passage, followed by multiple-choice questions. Even better is a method called cloze, where subjects fill in blanks on a text they have not seen before. The percentage of correctly completed blanks is an outstandingly good predictor of text difficulty. +Naturally, this kind of direct measure requires subjects and a skilled experimenter. It also requires the prior preparation of texts suitable for the chosen sample of subjects. The method is therefore too expensive for widespread use. +Types of tests. +A person can perform readability tests himself by counting and doing some math, or by using word-processing software. +Use on Wikipedia. +Wikipedia Signposts 2015-06-24 surveyed recent studies of web information on medical topics, including articles in English wiki. +Their summary was: +"The authors concluded that the readability of online patient information for ‘liposuction’ and ‘breast reconstruction’ is ‘too difficult’ for many patients as the readability scores of all 20 websites (10 each) far exceeds that of a 6th-grade reading level. The average score for the most popular ‘liposuction’ websites was determined equal to 13.6-grade level. As a comparison ‘tattoo information’ scored at the 7.8-grade level". +"Health care information available at the most popular websites for ‘breast reconstruction’ had an average readability score of 13.4, with 100% of the top 10 websites providing content far above the recommended 6th grade reading level. Wikipedia.org readability scores aligned at the higher readability range for both terms, with scores above the 14 grade level for ‘liposuction’, and above grade 15 for ‘breast reconstruction’". +That shows these articles, and presumably many other medical articles on English wiki, are written in prose far too difficult for the average member of the public. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Reading.txt b/.github/workflows/data/simplewiki-500/Reading.txt new file mode 100644 index 000000000..299babc9b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Reading.txt @@ -0,0 +1,8 @@ +Reading is understanding writing in a language. Fundamentally, reading is the way people look at certain marks and know what they mean. +Once it was possible to go through life without reading. Writing goes back in human history only a few thousand years, and 200 years ago "most men could not read or write". We know this is true because they could not write their own names on marriage records in churches. Most men worked in farming, and you can do most of that job without being able to read. The wives could read: they lived at home before marriage and their mothers taught them. The boys went to work at, say, nine or ten, and never learnt to read. +Reading is understanding what is printed or written. It is how you get information about something that is written. It can only be done if one knows the language. Otherwise, you can only learn from other people telling you verbally, or from practical demonstration. +Some things you do when you read. +One of the things writing does is create imaginary worlds. On the other hand, writing can be about practical life. That is a huge range of possibilities. Writing had to be invented: it sometimes comes as a shock to realise this. Much later, printing was invented. That took writing out of churches into the wider world, the world we all live in. +References. +<templatestyles src="Reflist/styles.css" /> + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Recreation.txt b/.github/workflows/data/simplewiki-500/Recreation.txt new file mode 100644 index 000000000..7c843703e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Recreation.txt @@ -0,0 +1,7 @@ +Recreation or fun is a person's time of refreshing his or her body and mind. +There are many different forms of recreation which are shaped by individual interests and by environment; a few examples being reading, playing or listening to music, watching movies or TV, gardening, hunting, hobbies, sports, studies, and travel. These activities are just some of a wide variety of recreation activity available in day-to-day life. +Public places such as parks and beaches are very important for many recreational activities. Tourism profession has recognized long ago that many of their clients are specifically attracted by recreational offerings. +Notes. +<templatestyles src="Reflist/styles.css" /> +Other websites. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Red.txt b/.github/workflows/data/simplewiki-500/Red.txt new file mode 100644 index 000000000..b6a335b20 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Red.txt @@ -0,0 +1,3 @@ +Red is the color that is on the edge of the rainbow. It is one of the primary colors (colors that can be mixed with other colors) of light. The others are blue and yellow. Red light has a wavelength between 630 and 740 nanometers. +Red paint can be made by mixing yellow paint and magenta paint. +Red is sometimes used to mark things that are wrong, important or dangerous. It is also used as a warning to stop. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Regime.txt b/.github/workflows/data/simplewiki-500/Regime.txt new file mode 100644 index 000000000..cdcbdd3b6 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Regime.txt @@ -0,0 +1,5 @@ +A regime is the leader and other people who run a government of a sovereign state. +There are many kinds of regimes. They can achieve power in many ways. Depending on the time and place and local civics like the electoral system, they can lose power in many ways too. The most common way for a regime to lose power was a coup, invasion or revolution until the 20th century. After that it became very dangerous and difficult to use these methods. Peaceful regime change is usually by an election - this method is now used by more than half the people on the Earth. It is called representative democracy. Such regimes are often called administrations to make it clear they are not dictators, and since the executive branch does not have all the power itself - it may share it with a legislative branch. Also the judicial branch is separate. The courts are not usually considered part of the regime. +However, some things are the same no matter how the regime achieved power: +When many regimes negotiate at the United Nations or World Trade Organization, it does not matter at all how each regime got its power. It matters only that they can agree and make everyone in their country do as the agreement says. +When someone wants a regime to change in another country, they usually are not able to do this by any means other than violence or interfering in its election. This is common if a regime is threatened by another regime. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Religion.txt b/.github/workflows/data/simplewiki-500/Religion.txt new file mode 100644 index 000000000..42d8828fe --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Religion.txt @@ -0,0 +1,37 @@ +Religion is a set of beliefs and social-cultural systems, including certain behavio(u)rs and practices, morals, beliefs and worldviews, that relate humanity to supernatural or spiritual elements—though there is no current fully agreed definition on what a religion exactly is. Different religions may or may not have different parts about the divine, sacredness, faith and a supernatural being or beings. +Religion often answers questions about the origin, nature, and purpose of existence, usually including a belief in supernatural entities, such as deities or spirits that have power in the natural world. Religious practices include the rituals and devotions directed at the supernatural. Often religions believe in the spiritual nature of humans. There are many different religions, denominations or sects, each with a different set of beliefs. Some beliefs are also concerned with the moral behavior of humans. +Religious beliefs. +Each religion has different ideas about these things. Each religion also has a "moral code" which is a set of beliefs about how humans should act. Each religion usually has their own type of "devotions" when people worship or pray. They often have rituals (special things that are always done in the same way) for certain times of the year or certain times of a person's life. Other words that are used for religion are "faith" and "belief system". Altogether, followers of religion can be known as 'believers', or 'the faithful'. Few people follow more than one religion at a time. +The largest religions are Christianity, Islam, Hinduism, Buddhism, Taoism, Sikhism, Judaism and Jainism. There are many other religions. People who do not believe in any gods are called atheists. People who say that there is no evidence are called agnostics. +God. +In many religions, one of the main beliefs is that there is a "deity" (or god) who is a great creator spirit. In many religions, there is just one deity that the people believe in. In other religions, there are many deities who each have different roles in the universe. In many religions, there are other types of spirits. These may include angels, devils and other such things which can be both good and bad. +Giving honour to God, the gods or the spirits is an important part of most religions. While this may often be done privately, it is also often done with gatherings of people and rituals. These rituals are often based on old traditions, and may have been done in almost the same way for hundreds, or even thousands of years. +Human spirit. +Another main belief is that humans have a "soul" or spirit which lives on after their body has died. The person's spirit is on a journey through life that continues after death. Most religions believe that what a person does during their lifetime will affect what happens to their spirit in the afterlife. Many religions teach that a good person's spirit can reach a special place of peace and happiness such as Heaven or Nirvana, and that a bad person's spirit can travel to a place of pain and suffering such as Hell. Still other religions believe in reincarnation - that instead of going either to Heaven or Hell, spirits of the dead return to earth in a new body. +Morality. +"Morals" are the way a human behaves to other humans. Most religions make rules about human morals. The rules of how people should act to each other are different in different religions. +For some religions, following a "path" of goodness, truth and duty is very important. This is called Tao in China. In the teachings of Judaism, people were told to "love your neighbour as yourself". In the teachings of Jesus, people were told to think of every single person as their "neighbour" and treat them with love. +Not every religion teaches people to be kind to all other people. In many religions, it has been common for people to believe that they have to act kindly only to some people and not to others. In some religions, people believed that they could please a god by killing or sacrificing another person. +Traditions. +Teaching. +A religion is passed on from one person to another through teachings and stories (which are often called "myths") which may be written down like the Bible, or told from memory like the Dreamtime stories of Australian Aboriginal people. In many religions, there are people who take the role of "priest" and spend their lives teaching others about the religion. There are also people who take the role of "pastor" and spend their life caring for other people. A person may be both a priest and a pastor. They are called by different names in different religions. +Symbols. +Symbols are used to remind people of their religious beliefs. They are also used or worn as a sign to other people that the person belongs to a particular religion. A symbol might be something that is drawn or written, it might be a piece of clothing or jewellery, it might be a sign that a person makes with their body, or it might be a building or monument or artwork. Picture symbols for different religions are shown in the box in the introduction to this article. +Witness and conversion. +In many religions, it is thought important that people should show other people that they are following a particular religion. This might be done in a general way by wearing a symbol or a type of clothing. Many people believe that it is important to tell other people about their religion, so that they can believe as well. This is called "witnessing". +There are many ways to witness. A young person might simply say to their friends "I do not use drugs or get drunk because of my religion". This is a witness. A person may tell their classmates, workmates and friends about their beliefs. A person might go to other people's houses and talk about their beliefs, or invite the people to join in the rituals of the religion, such as going to church or to a religious festival. A person might have printed material such as books or leaflets that they give to other people to read. A person might travel to a different country to teach, to work in a health service or to help people in some other way. (People who do this are called "missionaries".) These are different ways that people witness to their religion. +When a person hears a witness and decides that they will join the religion, this is called a "conversion". Usually a person decides to join a religion because they like what they have read or been told, and they believe that they are hearing the truth. They join the religion because they choose. However, throughout history there have been many times when people have been forced to join a religion by violence and threats. This is still happening today. +In most countries of the world, people are free to belong to whatever religion they choose. This is generally thought of as a basic human right. However, there are parts of the world where it is illegal (against the law) to witness to any religion except the one accepted by the government of the country. People who belong to other religions may be threatened, put in jail or murdered. +Ritual. +Rituals are an important part of the tradition of many religions. In many religions, it is the tradition for people to meet for a celebration on one day in every week. There are also major celebrations that may be held only at certain times of the year, for example, on the birthday of a person who is honoured in that religion. Some religions have celebrations for different seasons of the year, or when the sun or moon is in a certain part of the sky. +In nearly every religion, the important stages of a person's life have a religious celebration. Birth, naming, reaching an age to think for oneself, reaching adulthood, marriage, childbirth, sickness and death are all celebrated by some religions. Having a celebration or special traditions when a person dies is very common. +It is the traditions that are about death that give the earliest evidence of religious beliefs. Scientists have discovered that 120,000 years ago, Neanderthal people started burying their dead. Early Homo sapiens put tools and other things into graves with the bodies, as if they could use them in the afterlife. From 40,000 years ago, many of the objects in graves are small artworks. Scientists believe that these objects were put there for religious reasons. +Groups and institutions. +An institution is one name for an organization. Many religions have organizations that manage the way that people who follow the religion are to act. The organization might employ religious leaders, educate people into the ideas of the religion, manage money, own buildings and make rules. Many religions have sub-groups which are called denominations. In Islam, for example, there is Ahmadiyya, Sunnism, Shi'ism and Sufism. +Buildings. +Most religions have special buildings where people meet. They are often called temples. In Judaism, they are called synagogues. In Christianity, they are called churches. In Islam, they are called mosques. In Buddhism there are pagodas, temples and monasteries. In Hinduism they are called Mandirs. People often try to make their religious building as beautiful as possible. Some religious buildings are great works of architecture. +Art and music. +People often make artworks that are about their religion, or that are used in religious celebration, or are put in a religious building. Religious art comes in all shapes and sizes, from tiny pieces of jewellery to huge statues and paintings. Artworks often give important clues to historians about different ancient religions that are not well understood. +Music is often important in religious celebrations. Singing, chanting and playing musical instruments are often part of regular religious gatherings of people. Special music is often used on special occasions. Many famous composers have written religious music. The words of songs that are 3,000 years old are used every day in Christian churches and Jewish synagogues. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Reward.txt b/.github/workflows/data/simplewiki-500/Reward.txt new file mode 100644 index 000000000..b97d82a6d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Reward.txt @@ -0,0 +1,7 @@ +A reward is getting something good for doing a given task. It needs someone who has the power to give the good thing. It is the opposite of punishment. +Ideas like risk and reward, reward and punishment are based on the idea that people do things, or avoid doing things, to get rewards. In psychology there is another idea that this is not true. This other idea says that training (conditioning) and emotions (affective factors) are much more important than the rewards or punishments given by others. +In trying to catch criminals and other bad people, the government often offers money to people. This money is given to people who may capture the criminal, or give information that helps the police catch them. For example, after the Eureka Stockade rebellion in Ballarat, Victoria in 1854, the government offered a big reward of 400 pounds for the capture of the people who had started it. +In 2001, the US government offered a big reward of 2.5 million dollars for help in capturing the person who had sent anthrax in letters to a newspaper journalist and 2 senators. Anthrax is a disease which can kill people. +References. +<templatestyles src="Reflist/styles.css" /> + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Right angle.txt b/.github/workflows/data/simplewiki-500/Right angle.txt new file mode 100644 index 000000000..2ff67623a --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Right angle.txt @@ -0,0 +1,4 @@ +A right angle is an angle with a measurement of 90 degrees. When two lines cross each other so that all the angles have the same size, the result is four right angles. The top of the letter T is at right angles to the vertical line. Walls of buildings are usually at right angles to the floor. Two things that are at right angles are called "perpendicular" or "orthogonal". This is expressed using the formula_1 symbol (such as in formula_2). +Planes (flat surfaces) can also meet at right angles. In a building, a wall and a floor are said to be perpendicular to each other, and they have a right angle. It also can be called a square angle. +References. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/River.txt b/.github/workflows/data/simplewiki-500/River.txt new file mode 100644 index 000000000..702c61048 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/River.txt @@ -0,0 +1,17 @@ +A river is a stream of water that flows through a channel on the surface of the ground. The passage where the river flows is called the riverbed and the earth on each side is called a riverbank. A river begins on high ground or in hills or mountains and flows down from the high ground to the lower ground, because of gravity. A river begins as a small stream and gets bigger the farther it flows. +River parts. +The beginning of a river. +The start of a river is called the "source" or "head water". The part of the river that is near the source is called a 'young' river. A young river is often in a V-shaped river bed, and flows quickly downhill over stones, and around big rocks. Young rivers often have lots of small waterfalls and rapids. As the rivers travel downhill they begin to erode the ground taking small bits of soft rock and soil. +The middle part of a river. +The middle part of a river is called a mature river. A mature river makes a riverbed that is U-shaped. It might be very deep and run fast. It sweeps over small rocks and boulders, and makes big turns around hills and mountains. It is much wider than a young river, but not as wide as an old river. To cross over a mature river, people use bridges. Many cities and towns are built on the banks of mature rivers. Many farms that keep animals such as dairy cows, horses and sheep are along mature rivers because the animals can drink from the river every day. +The last part of a river. +A river usually ends by flowing into an ocean, a lake or a bigger river. The place where the river flows out into a bigger body of water is called the 'mouth' of the river. +As a river flows towards its mouth, the countryside around the river often changes from hilly to flat. As it flows over the flat land the river becomes wider and slower. A wide slow river is called an 'old river'. An old river often floods across the land after there is lots of rain at the headwaters. An old river slowly builds up its banks on either side; the high banks are called levees. An old river often meanders (twists and turns), and sometimes, after a flood, it leaves lakes behind which are called ox-bows or billabongs. Old rivers are the most useful type of river for growing crops. Corn, rice, fruit, cotton, hay, tobacco and sugar are some of the crops that are grown near old rivers. +The shape of the mouth depends on the conditions of the sea where it flows. If there is a strong tide where the river meets the sea, the river forms an estuary. An estuary is a wide, funnel-like mouth of the river. The fresh water of the river mixes slowly with the salt water, becoming brackish water – somewhat salty water. Many kinds of fish, clams, molluscs and other sealife live at estuaries. Many of the world's largest cities and harbours are at estuaries. +Where a river flows out to the sea, it sometimes flows very slowly through sandy or muddy land, making lots of little islands as it flows. The main stream of the river gets broken into many parts that spread out into a triangle shape like the Greek letter delta. When this happens, it is called the delta of the river. Deltas are often places that are not good for towns or farms but are very good for birds and other wildlife and fishing. Deltas are often made into wildlife reserves. Not all rivers have deltas. There are deltas on the Nile River, the Amazon River, the Mekong River, the Mississippi River and the Danube River. +Underground rivers. +Some rivers flow underground through caves. Underground rivers form in places where there are lots of cracks in the rocks above, so that in rainy weather, the water runs downs and collects in small underground streams. Sometimes the underground water trickles or gushes out of the ground to form a small spring of water. In other places, where there are caves, the small underground streams run together to form a river. The river can sometimes run through deep wide underground caverns. While many underground rivers flow gently, some underground rivers flow fast and have rapids, particularly after heavy rain. Many underground rivers flow out through a cave mouth to become an ordinary river. +Using rivers. +The water in rivers is "fresh water" that has come from rain, snow and from underground streams. It can usually be drunk safely by people unless it is too dirty because of mud or human pollution. People and animals need fresh water to drink, so they often live by the side of a river. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Roman Empire.txt b/.github/workflows/data/simplewiki-500/Roman Empire.txt new file mode 100644 index 000000000..e7d48efa6 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Roman Empire.txt @@ -0,0 +1,21 @@ +The Roman Empire was the largest empire of the ancient world. Its capital was Rome. The Empire was round the Mediterranean area. +The Empire started in 27 BC, when Octavian became Emperor Augustus after death of Julius Caesar. The fall of Western Roman Empire to the Germanic kings in 476 AD, marked the end of classical antiquity and the beginning of the Middle Ages. +The Empire was the third stage of Ancient Rome. Rome was first ruled by Roman kings, later by the Roman Republic and then by an emperor. +Many modern lands were once part of the Roman Empire such as Britain (not Scotland), Spain, Portugal, France, Italy, Greece, Turkey, Germany, Egypt, Levant, Crimea, Switzerland and the northern coast of Africa. The main language of the Roman Empire was Latin, with Greek as an important secondary language, especially in the Eastern provinces. +The Western half of the Roman Empire lasted for about 500 years until the barbarian general Odoacer defeated its final emperor, Romulus Augustus. On the other hand, the eastern half, consisting of the Balkans, Anatolia, The Levant and Egypt, continued for about 1000 more years. The Levant and Egypt were lost to the Arabs in the 8th century. The eastern part was the Eastern Roman Empire. Its capital was Constantinople, which is now called Istanbul. +Government. +In order to control their large empire, the Romans developed ideas about law and government. They developed the best army in the world at the time and ruled by force. They had fine engineering and built roads, cities, and outstanding buildings. The Empire was divided into provinces, each with a governor plus civil and military support. Letters, both official and private, went constantly to and from Rome. +Trade was most important for Rome, a city of more than a million people (which was by far the largest city in the world). It needed and got wheat from Egypt, tin from Britannia, grapes from Gaul and so on. In return, the Romans built provincial capitals into fine cities, protected them from raids by barbarians. They gave education and career opportunities for young people in the provinces, such as jobs in the Roman army. +In principle, Emperors had absolute control and could do as they pleased. In practice, they faced some difficult problems. They had a staff of what would today be called "civil servants" and the advice of the Roman Senate. The emperor had to decide the most important issues facing the empire, and what should be done about them. Most tried to do two things. One was doing things to improve the life of Romans in peacetime. The other was fighting and defeating Rome's enemies, which the wealthy empire always had. +For Roman emperors the succession would often be an adopted son. The Emperor would notice an outstanding young man from one of the best families and would adopt him as his son. Before he died, he would make clear who he thought should succeed him. He could make his adopted son a Roman consul, or state in his will that the younger man should succeed him. Sometimes, that worked well. but not always. Every now and then, a civil war would be fought between claimants to the throne. +An adopted son or two gave the Emperor more choices. Some Emperors had no son, and others had sons who did not survive. Later on, Emperors grew so weak that the Roman army would just pick one of their generals to be the next Emperor, which sometimes led to civil war. +The Romans fought many wars against other countries and against barbarians several times. They enjoyed watching violent sports. They watched chariots races and fights between gladiators (men using weapons). Unlike in modern sports, the fighters were often killed in fights. Romans enjoyed those shows in the Colosseum. +The Romans had great civil engineering. They built many large public buildings and villas, aqueducts to carry water, stone bridges and roads. Some of those things can still be seen today. Many famous writers were Romans, including Cicero and Virgil. +The New Testament of the Bible tells about the Romans in the life of Jesus Christ. During Jesus' life, the Romans, who were pagans, ruled his country. Later, several emperors tried to destroy Christianity but did not succeed. By 312 AD, Emperor Galerius allowed people freedom to follow Christianity, and the next year, a general, Constantine, became Emperor and converted to Christianity. +The city of Rome was taken over several times by barbarians, notably in 410 AD when a barbarian tribe called the Goths sacked the city (looting). The last Western Roman emperor, Romulus Augustus, abdicated in 476 AD. The Roman Empire would last another 1000 years as the Byzantine Empire in the East. +The main coin of the Roman Empire was the silver denarius. Later denarii were smaller. +Various reasons have been given for the fall of Rome. Edward Gibbon wrote "The Decline and Fall of the Roman Empire" in which he investigated various ideas. Chief among them was, in his opinion, the effect of Christianity on the ability of the Empire to defend itself militarily. +Other historians blame the unstable system of leadership. In a later 50-year period, only two of 22 emperors died a natural death. Most of the other emperors were assassinated. +References. +<templatestyles src="Reflist/styles.css" /> +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Roman.txt b/.github/workflows/data/simplewiki-500/Roman.txt new file mode 100644 index 000000000..d726c1a48 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Roman.txt @@ -0,0 +1,4 @@ +Roman or Romans may refer to: +<templatestyles src="Template:TOC_right/styles.css" /> +Literature. +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Romans.txt b/.github/workflows/data/simplewiki-500/Romans.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Rudyard Kipling.txt b/.github/workflows/data/simplewiki-500/Rudyard Kipling.txt new file mode 100644 index 000000000..437b87f72 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Rudyard Kipling.txt @@ -0,0 +1,5 @@ +Joseph Rudyard Kipling (30 December 1865 – 18 January 1936) was an English writer and poet. +Life. +Kipling was born in Bombay, India. He wrote children's fiction, like "Kim", "The Jungle Book" and "Puck of Pook's Hill". He also wrote the well-known poems, "If —" and "Gunga Din", and many short stories set in India. He was awarded the 1907 Nobel Prize in Literature. He spent part of his life living and writing in New England with his American wife but returned to England to live in Sussex. +Kipling died of a perforated duodenal ulcer in Fitzrovia, London in 1936 and is buried in Westminster Abbey, London. + "This about a  or group of people can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/SUV.txt b/.github/workflows/data/simplewiki-500/SUV.txt new file mode 100644 index 000000000..c9dce2ed0 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/SUV.txt @@ -0,0 +1,20 @@ +A sports utility vehicle, also known as a sport utility van or simply an SUV or a sport utility car, is a type of vehicle which combines the load-hauling and versatility of a pickup truck with the passenger-carrying space of a minivan, hatchback, station wagon, passenger van or large sedan. It is built as a rugged vehicle for cargo and passenger carrying. Originally SUVs were not designed to be fuel efficient but modern designs are getting better fuel mileage. In 2014 US sales of SUVs were over five million vehicles. +There is no commonly agreed-upon definition of an SUV and usage of the term varies between countries. Thus, it is "a loose term that traditionally covers a broad range of vehicles with four-wheel drive." Some definitions claim that an SUV must be built on a light truck chassis; however, broader definitions consider any vehicle with off-road design features to be an SUV. A crossover SUV is often defined as an SUV built with a unibody construction (as with passenger cars); however, the designations are increasingly blurred because of the capabilities of the vehicles, the labelling by marketers, and electrification of new models. +The predecessors to SUVs date back to military and low-volume models from the late 1930s, and the four-wheel-drive station wagons and carryalls that began to be introduced in 1949. The 1984 Jeep Cherokee (XJ) is considered to be the first SUV in the modern style. Some SUVs produced today use unibody construction; however, in the past, more SUVs used body-on-frame construction. During the late 1990s and early 2000s, the popularity of SUVs greatly increased, often at the expense of the popularity of large sedans and station wagons. SUVs accounted for 45.9% of the world's passenger car market in 2021. +SUVs have been criticized for a variety of environmental and safety-related reasons. They generally have poorer fuel efficiency and require more resources to manufacture than smaller vehicles, contributing more to climate change and environmental degradation. Between 2010 and 2018 SUVs were the second-largest contributor to the global increase in carbon emissions worldwide. Their higher center of gravity increases their risk of rollovers.Their higher front-end profile makes them at least twice as likely to kill pedestrians they hit. Additionally, the psychological sense of security they provide influences drivers to drive less cautiously. +Appearance. +The typical SUV is a two-box design. Unlike a pickup truck (US term) that has an enclosed cabin, and an open cargo box the SUV has an enclosed cargo/passenger compartment. It has upright seating for five to seven passengers. It has an open interior with no trunk. It is often built on a pickup truck chassis for towing capacity, and usually has four wheel drive. Only about 15% of SUV owners ever go off-road. According to Jeep Wrangler brand manager Kevin Metz, 60% of Jeep Wrangler owners go off-road while around 80% of Rubicon owners do. +A similar class of vehicle is the crossover SUV, a common Northern American term. That is built on a car chassis. Often it uses a unibody chassis instead of the heavier body-on-frame design of SUVs. Crossover vehicles often have all-wheel-drive instead of four-wheel drive. Crossovers are usually lighter than SUVs and get better fuel mileage. In general, when referring to an SUV, many include crossovers. However it is incorrect to refer to an SUV on a truck frame as a crossover. +History. +Early SUVs were built like light commercial and light wheeled military utility vehicles. Famous examples were the World War Jeep (US), and the Land Rover (UK). +The term "sport utility vehicle" came into popular use in the late 1980s. Until then, they were marketed as station wagons. An early example of marketing a civilian off-roader as a "sports utility" is the two-door pickup version of the 1966 Ford Bronco. In 1974 Jeep used the term "sport(s) utility vehicle" exactly in their brochures for the 1st generation Jeep Cherokee. +Off-roading sports. +Many kinds of off-roading in the USA are centered around SUVs. +Popularity. +There are many reasons why SUVs have become popular. One reason is the comfort of their large cabins. Many models can carry almost as much as a minivan. Another reason is the driver sits higher than other cars, giving better all-round vision. SUVs with truck frames are heavier (sometimes much heavier) than standard cars. Their size gives them an image of safety. +Men aren't the only targets of SUV and CUV ads. For example, some ads for the Subaru Forester are deliberately aimed at women buyers. Roughly 35 to 40 percent of SUV buyers are women. Ads commonly show SUVs driving across boulders or perched on a mountain peak. Advertisers know that one important reason many people buy SUVs is image. +Practicality for larger families is a consideration. Not only can the vehicle take a family of five or six, plus luggage, but also the family dog (who often has a special compartment at the back). On the other hand, the vehicle doesn't fit standard parking spaces. That can be quite a problem in, for example, the UK. The alternative, when groups of more than four travel, is to take more than one standard size car. +Other names. +In Australia and Europe SUVs are often called 4 wheel drives (4X4) or 4WDs. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Sabbath in Christianity.txt b/.github/workflows/data/simplewiki-500/Sabbath in Christianity.txt new file mode 100644 index 000000000..b0df9934b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Sabbath in Christianity.txt @@ -0,0 +1,10 @@ +Sabbath in Christianity is the day of rest and service to God. The idea of the Sabbath in Christianity comes directly from the idea of the Shabbat in Judaism. The word Sabbath comes from the Hebrew word "Shabbat." Like the Shabbat, the Sabbath in Christianity comes from the Genesis story of Creation. But unlike Jews, most Christians have Sabbath on Sunday, not Saturday. They also rest, but not the same way as Jews. The exact way depends on the church denomination. +Differing views. +Most Christians honor the Sabbath on Sunday to remember the Resurrection of Jesus on the first day of the week on the Jewish calendar. They say that the Christian day of worship is like Sabbath-day rule. These two rules are not literally identical though. They say that this rule is no longer valid, because God has replaced his old creation by a new one. They say there are examples in the New Testament, and in other writings surviving from the first few centuries. +Some conservative Christians are "Sabbatarians". Most of these follow the Reformed traditions. Sabbatarians think the first day of the week or "Lord's Day" is the new Sabbath. This is because the 4th commandment has never been removed. It came before the ten commandments were given. +Still others believe that the Sabbath remains as a day of rest on the Saturday, reserving Sunday as a day of worship. In Acts 20:7, the disciples came together on the first day of the week (Sunday) to break bread and to hear the preaching of the apostle Paul. This is not the first time Christians assembled together on a Sunday. Jesus appeared to the Christians on the "first day of the week" while they were in hiding. Jesus himself observed the Sabbath, although not within the Jewish traditions. The Pharisees often tried Jesus by asking him if certain tasks were acceptable according to the Law. This would seem to show that while the Sabbath was still of importance to the Jews, Sunday was a separate day for worship and teaching from Scriptures. +The Seventh-day Adventists and other churches disagree with some of these views. They argue that the custom of meeting for worship on Sunday originated in paganism, specifically Sol Invictus and Mithraism (in which sun god worship took place on Sunday). This is therefore an explicit rejection of the commandment to keep the "seventh" day holy. Instead, they keep Saturday as the Sabbath as a memorial to God's work of creation believing that none of the Ten Commandments can ever be destroyed. Seventh-day Sabbatarians claim that the seventh day Sabbath was kept by the majority of Christian groups until the 2nd and 3rd century, by most until the 4th and 5th century, and a few thereafter, but because of opposition to Judaism after the Jewish-Roman wars, the original custom was gradually replaced by Sunday as the day of worship. The history of these changes is certainly not altogether lost regardless of any belief in a suppression of the facts by a conspiracy of the pagans of the Roman Empire and the clergy of the Catholic Church. +Jews had come to be hated in the Roman Empire after the Jewish-Roman wars. This led to the criminalization of the Jewish Sabbath. Hatred of Jews is apparent in the Council of Laodicea (4th Century AD) where Canon 37–38 states: "It is not lawful to receive portions sent from the feasts of Jews or heretics, nor to feast together with them." and "It is not lawful to receive unleavened bread from the Jews, nor to be partakers of their impiety." In keeping with this rejection of the Jews, this Roman council also criminalized the Jewish Sabbath as can be seen in Canon 29 of the Council Laodicea: "Christians must not Judaize by resting on the Sabbath, but must work on that day, rather honoring the Lord's Day; and, if they can, resting then as Christians. But if any shall be found to be judaizers, let them be excommunicated from Christ." +In the Gospel of Mark 2:28 Jesus says 'the Son of Man is lord even of the sabbath'. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Sail.txt b/.github/workflows/data/simplewiki-500/Sail.txt new file mode 100644 index 000000000..d1861066d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Sail.txt @@ -0,0 +1,10 @@ +A sail is a large piece of cloth on the top of some boats. The wind goes around the sail and makes the boat move through the water. The piece that the sail is attached to is called a mast. Some boats have many sails, and some have only one. Usually, small boats have only one sail, and bigger boats have more. Boats with sails are called "sailing boats". There are many different names for different kinds of sailing boats with different kinds of sails. +Before people made boats with engines that used coal or oil, sailing boats were an important way to travel across oceans. Now they are not so important for transport, but they are still used for recreation and competition. +Sail types. +Modern sails can be classified into three main categories: +High-performance yachts, in particular some catamarans such as the International C-Class Catamaran, have used or use rigid wing sails, which are said to perform better than traditional soft sails. In particular, a rigid wing sail was used by Stars and Stripes, the defender which won the 1988 America's Cup, and by USA-17, the challenger which won the 2010 America's Cup. +Most modern yachts, including bermuda rig, ketch and yawl boats, have a sail "inventory" which usually includes more than one of these types of sails. Although the mainsail is “permanently” hoisted while sailing, headsails and spinnakers can be changed depending on the particular weather conditions to allow better handling and speed. +References. +<templatestyles src="Reflist/styles.css" /> +Other websites. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Saint Lawrence River.txt b/.github/workflows/data/simplewiki-500/Saint Lawrence River.txt new file mode 100644 index 000000000..040876e1d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Saint Lawrence River.txt @@ -0,0 +1,8 @@ +The Saint Lawrence River (; Tuscarora: "Kahnawáʼkye"; Mohawk: "Kaniatarowanenneh", meaning "big waterway") is a big river in eastern North America. It flows between the Canadian province of Quebec & Ontario and the American state of New York, and through the major Canadian city of Montreal. It is the third largest river in Canada. +The river drains water from the Great Lakes into the Atlantic Ocean. It is more than three thousand kilometres long. The river meets the Atlantic Ocean in a big "estuary" or bay, the biggest in the world; this is called the Gulf of Saint Lawrence. +The Canadian cities of Kingston, Montreal, Trois-Rivières and Quebec City are on this river. The Saint Lawrence Seaway allows ships to go up the river and through the Great Lakes right into the middle of North America. +References. +<templatestyles src="Reflist/styles.css" /> +Other websites. + "This about a  can be made longer. You can help Wikipedia by [ adding to it]". + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Salami.txt b/.github/workflows/data/simplewiki-500/Salami.txt new file mode 100644 index 000000000..bf23778b1 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Salami.txt @@ -0,0 +1,4 @@ +Salami is a sausage that first came from Italy. The name comes from the Italian salare meaning to make something salty. +The original salami was made from a mix of chopped pork and salt which was dried using air in a casing. Now there are many types of salamis made in some countries. Nearly all are seasoned with a combination of herbs and spices in addition to salt. Salamis are now sometimes smoked or cooked before air drying. Some kinds are made of beef while others mix beef and pork. Most, if not all Italian salamis have garlic in them, but few German kinds do, for example. Some, like a few salamis from Spain, include paprika or chili. The difference between some types is in how coarse or fine the meat is chopped. Some "light" salami might add turkey or chicken to reduce both fat and calories. +Many salamis are named after the city or region where they come from. Some examples are Arles, Genoese, Hungarian, and Milano salamis. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Saturn.txt b/.github/workflows/data/simplewiki-500/Saturn.txt new file mode 100644 index 000000000..ef17a53cc --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Saturn.txt @@ -0,0 +1,47 @@ +Saturn is the sixth planet from the Sun in the Solar System. Saturn takes about 29.5 Earth years to complete one orbit around the Sun. A day on Saturn is much shorter than an Earth day, lasting only about 10.7 hours. This means that Saturn spins much faster than Earth, completing more than two rotations in the same time it takes Earth to complete just one. +Saturn is one of the four giant planets in the Solar System, with Jupiter, Uranus, and Neptune. It is the second largest planet in the Solar System (Jupiter is the largest). +Saturn was named after the Roman god Saturn. He was the Roman equivalent of the Greek god Kronos. Saturn's symbol is ♄ which is the symbol of Saturnus' sickle. +Inside Saturn is probably a core of iron, nickel, silicon and oxygen compounds, surrounded by a deep layer of metallic hydrogen, then a layer of liquid hydrogen and liquid helium and finally, an outer gaseous layer. +Saturn has 146 known moons orbiting the planet. The largest moon is Titan. Titan is larger in volume than the planet Mercury. It is the second-largest moon in the Solar System. The largest moon is a moon of Jupiter, Ganymede. There are also many rings around Saturn. These rings are made of ice with some rocks and dust. Some people think that that the rings were made by a moon impact or other event. Saturn is about 1,433,000,000 km (870,000,000 mi) on average from the Sun. Saturn takes 29.4 Earth years in order to complete a revolution around the Sun. +Physical features. +Saturn is a squished sphere. This means that it is flattened at the poles and wider around the equator. The planet's equatorial diameter is . Its polar diameter (the distance from the north pole to the south pole through the centre) is . This is a 9% difference. Saturn has a flattened shape because of its very fast rotation. It rotates once every 10.8 Earth hours. +Saturn is the only planet in the Solar System that is less dense than water. Even though the planet's core is very dense, it has a gaseous atmosphere. This makes its average density is 0.69 g/cm3. This means if Saturn could be placed in a large pool of water, it would float. +Atmosphere. +The outer part of Saturn's atmosphere is made up of about 96% hydrogen, 3% helium, 0.4% methane and 0.01% ammonia. There is also some acetylene, ethane and phosphine. +Saturn's clouds show a banded pattern. This is like the cloud bands seen on Jupiter. Saturn's clouds are much fainter and the bands are wider at the equator. Saturn's lowest cloud layer is made up of water ice. It is about thick. The temperature there is quite low, at 250 K (-10°F, -23°C). However, scientists do not all agree on this. The layer above is made up of ammonium hydrosulfide ice. It is about thick. Above it is a layer of ammonia ice clouds which are thick. The highest layer is made up of hydrogen and helium gases. It goes to between and above the water cloud tops. Auroras can be seen in Saturn in the mesosphere. The temperature at Saturn's cloud tops is very low, at 98 K (-283 °F, -175 °C). The temperatures in the inner layers are much higher than the outside layers because of the heat made by Saturn's inside. Saturn's winds are some of the fastest in the Solar System. They can reach 1,800 km/h (1,118 mph), ten times faster than winds on Earth. +Storms and spots. +Saturn's atmosphere can make oval shaped clouds. They are like the clearer spots seen on Jupiter. These oval spots are cyclonic storms, similar to cyclones seen on Earth. In 1990, the Hubble Space Telescope found a very large white cloud near Saturn's equator. Storms like this one in 1990 were known as Great White Spots. These unique storms only exist for a short time and only occur in about every 30 Earth years, in summer solstices in the Northern Hemisphere. Great White Spots were also found in 1876, 1903, 1933, and 1960. +The Voyager 1 spacecraft found a hexagonal cloud pattern near Saturn's north pole at about 78°N. The Cassini−Huygens probe later confirmed it in 2006. Unlike the north pole, the south pole does not show any hexagonal clouds. The probe also found a hurricane-like storm on the south pole that showed an eyewall. Until this finding, eyewalls had only been seen on Earth. +Interior. +Saturn's inside is similar to Jupiter's inside. It has a small rocky core about the size of the Earth at its center. It is very hot. Its temperature reaches 15,000 K (). Saturn is so hot that it gives out more heat energy into space than it gets from the Sun. Above it is a thicker layer of metallic hydrogen, about deep. Above that layer is a region of liquid hydrogen and helium. The core is heavy, with about 9 to 22 times more mass than the Earth's core. +Magnetic field. +Saturn has a natural magnetic field that is weaker than Jupiter's. Like the Earth's, Saturn's field is a magnetic dipole (it has a North and a South). Saturn's field is unique in that it is perfectly symmetrical, unlike any other known planet. This means the field is exactly in line with the planet's axis. Saturn generates radio waves, but they are too weak to be detected from Earth. The moon Titan orbits in the outer part of Saturn's magnetic field and gives out plasma to the field from the ionised particles in Titan's atmosphere. +Rotation and orbit. +Saturn's average distance from the Sun is over 1,400,000,000 km (886,000,000 mi). This is about nine times the distance from the Earth to the Sun. It takes 10,756 days, or about 29.4 years, for Saturn to orbit around the Sun. This is known as Saturn's "orbital period". +Voyager 1 measured Saturn's rotation as being 10 hours, 14 minutes at the equator, 10 hours, 40 minutes closer to the poles, and 10 hours, 39 minutes, 24 seconds for the planet's inside. This is known as its "rotational period". +Cassini measured the rotation of Saturn as being 10 hours, 45 minutes, 45 seconds ± 36 seconds. That is about six minutes longer than the radio rotational period measured by the Voyager 1 and Voyager 2 spacecrafts, which flew by Saturn in 1980 and 1981. +Saturn's rotational period is calculated by the rotation speed of radio waves given off by the planet. The Cassini−Huygens spacecraft found that the radio waves slowed down. This suggested that the rotational period increased. Since scientists do not think Saturn's rotation is actually slowing down, the explanation may be that the magnetic field causes the radio waves. +Planetary rings. +Saturn is best known for its planetary rings which are easy to see with a telescope. There are seven named rings: A, B, C, D, E, F, and G. They were named in the order they were found, which is different to their order from the planet. From the planet the rings are ordered: D, C, B, A, F, G and E. +Some scientists think that the rings are material left after a moon broke apart. A new idea says that it was a very large moon, most of which crashed into the planet. This left a large amount of ice to form the rings and some of the moons. This includes Enceladus, which is thought to be made of ice. +History. +The rings were first found by Galileo Galilei in 1610, using his telescope. They did not look like rings to Galileo. He called them "handles". He thought that Saturn was three different planets that were right next to each other. In 1612, when the rings were facing edge on with the Earth, the rings disappeared, then reappeared again in 1613, further confusing Galileo. In 1655, Christiaan Huygens was the first person to say that Saturn was surrounded by rings. Using a much more powerful telescope than Galilei's, he said that Saturn "is surrounded by a thin, flat, ring, nowhere touching...". In 1675, Giovanni Domenico Cassini found that the planet's rings were in fact made of smaller rings with gaps. The largest ring gap was later named the Cassini Division. In 1859, James Clerk Maxwell showed that the rings cannot be solid, but are made of small particles, each orbiting Saturn on their own. Otherwise, it would become unstable or break apart. James Keeler studied the rings using a spectroscope in 1895 which proved Maxwell's theory. +Physical features. +The rings range from to above the planet's equator. While the equatorial circumference of Saturn is 378,675 km (235,298 miles). As proved by Maxwell, even though the rings appear to be solid and unbroken when viewed from above, the rings are made of small particles of rock and ice. They are only about thick; made of silica rock, iron oxide and ice particles. The smallest particles are only specks of dust while the largest are the size of a house. The C and D rings also seem to have a "wave" in them, like waves in water. These large waves are high, but only moving slowly at about each day. Some scientists believe that the wave is caused by Saturn's moons. Another idea is the waves were made by a comet hitting Saturn in 1983 or 1984. +The largest gaps in the rings are the Cassini Division and the Encke Division, both visible from the Earth. The Cassini Division is the largest, measuring wide. However, when the Voyager spacecrafts visited Saturn in 1980, they discovered that the rings are a complex structure, made out of thousands of thin gaps and ringlets. Scientists believe this is caused by the gravitational force of some of Saturn's moons. The tiny moon Pan orbits inside Saturn's rings, creating a gap within the rings. Other ringlets keep their structure due to the gravitational force of shepherd satellites, such as Prometheus and Pandora. Other gaps form due to the gravitational force of a large moon farther away. The moon Mimas is responsible for clearing away the Cassini gap. +Recent data from the Cassini spacecraft has shown that the rings have their own atmosphere, free from the planet's atmosphere. The rings' atmosphere is made of oxygen gas, and it is produced when the Sun's ultraviolet light breaks up the water ice in the rings. Chemical reactions also occur between the ultraviolet light and the water molecules, creating hydrogen gas. The oxygen and hydrogen atmospheres around the rings are very widely spaced. As well as oxygen and hydrogen gas, the rings have a thin atmosphere made of hydroxide (a combination of oxygen and hydrogen called an anion), which was discovered by the Hubble Space Telescope. +Spokes. +The Voyager space probe discovered features shaped like rays, called spokes. These were also seen later by the Hubble telescope. The Cassini probe photographed the spokes in 2005. They appear dark when lit by sunlight, and appear light against the unlit side of the planet. At first it was thought the spokes were made of microscopic dust particles, but new evidence shows that they are made of ice. +They rotate at the same rate as the planet's magnetosphere, therefore, it is believed that they have a connection with electromagnetism. However, what causes the spokes to form is still unknown. They appear to be seasonal, disappearing during solstice and appearing again during equinox. +Moons. +Saturn has a total of 146 moons; 53 are named moons, and another 29 are still being studied. Many of the moons are very small: 33 are less than in diameter and 13 moons are less than . Seven moons are large enough to be a near perfect sphere caused by their own gravity. These moons are Titan, Rhea, Iapetus, Dione, Tethys, Enceladus and Mimas. Titan is the largest moon, larger than the planet Mercury, and it is the only moon in the Solar System to have a thick, dense atmosphere. Hyperion and Phoebe are the next largest moons, larger than in diameter. +Between December 2004 and January 2005 a man-made satellite called the Cassini−Huygens probe took lots of close photos of Titan. One part of this satellite, known as the Huygens probe, landed on Titan, on land. Named after the Dutch astronomer Christiaan Huygens, it was the first spacecraft to land in the outer Solar System. The probe was designed to float in case it landed in liquid. Its batteries lasted about 3 hours. Enceladus, the sixth largest moon, is about in diameter. It is one of the few outer solar system objects that shows volcanic activity. In 2011, scientists discovered an electric link between Saturn and Enceladus. This is caused by ionised particles from volcanos on the small moon interacting with Saturn's magnetic fields. Similar interactions cause the northern lights on Earth. +Exploration. +Saturn was first explored by the Pioneer 11 spacecraft in September 1979. It flew as close as above the planet's cloud tops. It took photographs of the planet and a few of its moons, but were low in resolution. It discovered a new, thin ring called the F ring. It also discovered that the dark ring gaps appear bright when viewed towards the Sun, which shows the gaps are not empty. The spacecraft measured the temperature of the moon Titan. +In November 1980, Voyager 1 visited Saturn and took higher resolution photographs of the planet, rings, and moons. These photos showed some of the surface features of the moons. Voyager 1 went close to Titan and gained much information about its atmosphere. In August 1981, Voyager 2 continued to study the planet. Photos taken by the space probe showed that changes were happening to the rings and atmosphere. The Voyager spacecraft discovered a number of moons orbiting close to Saturn's rings, as well as discovering new ring gaps. +On July 1, 2004, the Cassini−Huygens probe entered into orbit around Saturn. Before then, it flew close to Phoebe, taking very high-resolution photos of its surface and collecting data. On December 25, 2004, the Huygens probe separated from the Cassini probe before moving towards Titan's surface and landed on January 14, 2005. It landed on a dry surface, but it found that large bodies of liquid exist on the moon. The Cassini probe continued to collect data from Titan and a number of the icy moons. It found evidence that the moon Enceladus had water erupting from its geysers. Cassini also proved, in July 2006, that Titan had hydrocarbon lakes, located near its north pole. In March 2007, it discovered a large hydrocarbon lake the size of the Caspian Sea near its north pole. +Cassini observed lightning occurring in Saturn since early 2005. The power of the lightning was measured to be 1,000 times more powerful than lightning on Earth. Astronomers believe that the lightning observed in Saturn is the strongest ever seen. +References. +<templatestyles src="Reflist/styles.css" /> +Notes +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Sausage.txt b/.github/workflows/data/simplewiki-500/Sausage.txt new file mode 100644 index 000000000..04cc7553f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Sausage.txt @@ -0,0 +1,10 @@ +Sausage is a food made of ground-up or chopped-up meat or meat with other ingredients. It often has spices in it and is covered in a casing. Traditionally, a sausage casing is made of animal intestine, but can sometimes be made of plastic. There are many forms of sausages, including hot dog, pepperoni, bologna, and salami. +Sausages often have meat from the animal's head, lips, cheeks, ears and other parts. Some have blood in them. German and British sausages normally have a lot of "rusk," or bread crumbs, and they are less meaty than sausages from other countries. Vegetarian or vegan sausages are often made of products other than animal products, such as tofu. +Sausages may be used as a meal, in a sandwich, or in other foods like stews. Sausages can be eaten as whole pieces, or they can be chopped up as already cooked pieces. +Germany has regions that have special kinds of sausage. Sausages are some of the oldest German foods. +Name origin. +The word "sausage" was first used in English in the mid-15th century. During the mid-15th century, the word "sausage" was spelled as "sawsyge". The word "sawsyge" came from Old North French "saussiche" (Modern French "saucisse")". The French word came from Vulgar Latin "salsica" (sausage), from "salsicus" (seasoned with salt). +References. +<templatestyles src="Reflist/styles.css" /> +Other websites. + Media related to at Wikimedia Commons \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Scarcity.txt b/.github/workflows/data/simplewiki-500/Scarcity.txt new file mode 100644 index 000000000..79056af56 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Scarcity.txt @@ -0,0 +1,10 @@ +Scarcity in economics is the lack of various forms of capital. Scarcity can be used to describe an economic situation in economics, or it can be used to describe more general situations. +In economics, scarcity is the result of people having "Unlimited Wants and Needs," or always wanting something new, and having "Limited Resources." Limited Resources means that there are never enough resources, or materials, to satisfy, or fulfill, the wants and needs that every person have. Scarcity is called the "basic economic problem," meaning that it always exists. +Scarcity exists due to the effects of nature such as drought, floods, storms, pest infestation, fire and other things. Real scarcity can also exist by over use of non-renewable resources. Goods (things) and services are also scarce because there are only a limited number of things in the world and due to the limits of technology and our own priorities. +More scarce goods and services have higher prices, because of supply and demand. Gold is used less than iron, but the price of gold is much higher, because gold is more scarce. Lawyers are paid more than janitors, because there is scarcity of qualified lawyers. +Scarcity of capital is the main constraint in economic development of developing countries. Economic growth is an increase in the production and consumption of goods and services. It entails increasing population or per capita consumption. It is represented by increasing Gross Domestic Product (GDP). Scarcity refers to limited resources. These resources are the inputs of production i.e., land, labor and capital. +Artificial scarcity. +Artificial scarcity is when somebody limits the amount of goods or services that are available, although it would be simple to make more. Artificial scarcity can increase profits for a business. Some people will pay more for something that is scarce, because it shows that they are rich (a status symbol). Copyrights, patents, monopolies, cartels, planned obsolesence can make artificial scarcity. +References. +<templatestyles src="Reflist/styles.css" /> + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Science.txt b/.github/workflows/data/simplewiki-500/Science.txt new file mode 100644 index 000000000..7c6d13d8a --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Science.txt @@ -0,0 +1,22 @@ +Science is what we do to find out about the natural world. Natural sciences include chemistry, biology, geology, astronomy, and physics. Science uses mathematics and logic, which are sometimes called "formal sciences". Natural science makes observations and experiments. Science produces accurate facts, scientific laws, and theories. 'Science' also refers to the large amount of knowledge that has been found using this process. +Research uses the scientific method. Scientific research uses hypotheses based on ideas or earlier knowledge, which can be categorized through different topics. Then those hypotheses are tested by experiments. +People who study and research science and try to find out everything about it are called scientists. Scientists study things by looking at them very carefully, by measuring them, and by doing experiments and tests. Scientists try to explain why things act the way they do, and predict what will happen. +The Wonders of Modern Science +Scientific method. +Today, "science" usually refers to a way of pursuing knowledge, not just the knowledge itself. It is mainly about the phenomena of the material world. The Greek works into Western Europe from the 6th to 7th century B.C. revived "Philosophy". In the 17th and 18th centuries scientists increasingly sought to formulate knowledge in terms of "laws of nature" such as Newton's laws of motion. And during the 19th century, the word "science" became more and more associated with the scientific method itself. It was seen as a way to study the natural world, including physics, chemistry, geology and biology. +It was also in the 19th century that the term "scientist" was created by William Whewell. He meant it to tell the difference between those who looked for knowledge on nature from those who looked for other types of knowledge. +The scientific method is the name given to the methods used by scientists to find knowledge. The main features of the scientific method are: +An example. +A famous example of science in action was the expedition led by Arthur Eddington to Principe Island in Africa in 1919. He went there to record where the stars were around the Sun during a solar eclipse. The observation of where the stars were shown that the apparent star positions close to the Sun were changed. In effect, the light passing the Sun was pulled towards the Sun by gravitation. This confirmed predictions of gravitational lensing made by Albert Einstein in the general theory of relativity, published in 1915. Eddington's observations were considered to be the first solid proof in favour of Einstein's theory. +Practical impacts of scientific research. +Discoveries in fundamental science can be world-changing. For example: +Other features of science. +Not everyone completely agrees about how theories should be used or updated. Some philosophers and scientists say that scientific theories are only accepted for the time being. They last as long as they are the best explanation. When theories no longer explain the data, they are removed and replaced. Or, sometimes scientists will make a theory better rather than remove it, or they will keep on using the theory hoping that it will be made better eventually. +Science is a way to get knowledge by getting rid of what is not true. +Scientists must be very careful to make explanations that fit well with what they observe and measure. They compete to provide better explanations. An explanation might be interesting or pleasing, but if it does not agree with what other scientists really see and measure, they will try to find a better explanation. +Before a scientific article is published, other scientists read the article. They decide whether the explanations make sense from the data. This is called peer review. After articles are published, other scientists will also check to see if the same experiments, observations or tests produce the same data again. Peer review and repeating experiments are the only way to be sure the knowledge is correct. +Science makes models of nature, models of our universe, and medicine. There are many different sciences with their own names. However it is not right to say "science says" any one thing. Science is a process, not just the facts and rules believed at one time. +Some types of science. +<templatestyles src="Div col/styles.css"/> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Scientist.txt b/.github/workflows/data/simplewiki-500/Scientist.txt new file mode 100644 index 000000000..79db757e0 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Scientist.txt @@ -0,0 +1,8 @@ +A scientist is a person who studies or has mastered the field in science. A scientist tries to understand how our world, or other things, work. Scientists make observations, ask questions and do extensive research work in finding the answers to many questions. +Scientists may work in laboratories for governments, companies, schools and research institutions. Some scientists teach at universities and other places and train people to become scientists. Scientists often do experiments to find out more about reality, and sometimes may repeat experiments or use control groups. Scientists who are doing applied science try to use scientific knowledge to improve the world. +Scientists use the Scientific method to test theories and hypotheses. +Types of scientists. +Scientists can work in different areas of science. +Here are some examples: +Related pages. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Search engine.txt b/.github/workflows/data/simplewiki-500/Search engine.txt new file mode 100644 index 000000000..9621ecdba --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Search engine.txt @@ -0,0 +1,16 @@ +A search engine is a website that allows users to look up information on the World Wide Web (WWW), part of the Internet. The search engine will achieve this by looking at many web pages to find matches to the user's search inputs. It will return results ranked by relevancy and popularity by the search engine. The most popular search-engines are Google Search and Bing. Older services include Webcrawler are, Yahoo! Search, Ask.com, Lycos, and Alta Vista. Examples of specialized engines are Ecosia (supports ecological goals) or Tenor (picture engine). +To use a search engine you must enter at least one keyword into the search box. Usually, an on-screen button must be clicked on to submit the search. The search engine looks for matches between the keyword(s) entered and its database of websites and words. +After the user inputs their search or query into the search bar, a list of results will appear on the screen known as the search engine results page (SERP). This list of webpages contains matches related to the user's query in a particular order determined by a ranking system. Most search engines will remove "spam" pages from the list of results to provide a better list of results. The user can then click on any of the links to go to that webpage. +Search engines are some of the most advanced websites on the web. They use special computer code to sort the web pages on SERPs. The most popular or highest-quality web pages will be near the top of the list. +When a user types words into the search engine, it looks for web pages with those words. There could be thousands, or even millions, of web pages with those words. So, the search engine helps users by putting the web pages it thinks the user wants first. +Search engines are very useful to find information about anything quickly and easily. Using more keywords or different keywords improves the results of searches. +A search service may also include a portal with news, games, and more information besides a search engine. Yahoo! has a popular portal, while Google has a simple design on its front page. Search services usually work without charging money for finding sites, and are often supported with text or banner advertisements. +Crawling. +Search engines use robots to ‘crawl’ online content. The process of crawling is the first measure that search engines take before indexing content in virtually any form–videos, text, images, webpages, etc. The content may constitute newly uploaded content to the internet or content that features updates or changes to its material. These robots, also known as crawlers or bots, record the information along with its links. Once the material has been crawled, it can be stored in a massive URL database. It’s this database that generates internet search results. +Indexing. +After the bots crawl content, it can be indexed in the database and arranged in terms of its relevance. If internet content has not been crawled or indexed, it is unlikely to appear in the search results when someone makes a query no matter how relevant that content may be. After the content has been crawled, each of its words is indexed. The search engines also pinpoint where words are located on the crawled pages. During the indexing process, the search engine compares the content to other content with similar ‘words’ and decides how to organize it within its index. +Ranking. +Ranking is a complex process that is dependent on search engine algorithms. When a searcher makes a query on Google looking for anything from 19th-century British landscape painters to New York City plumbers, the search engine will generate a list of good matches to that query. How these matches appear in the list relates to their rank. The search engine lists what it ‘thinks’ are the best answers to the query early in its search results. +Google and other search engines rely on algorithms to interpret the searcher’s query, identify the websites and pages in its index that are related to the request, and it then ranks them in terms of relevance in its presented search results list. What’s important to search engines is to provide searchers with the most relevant matches to their queries possible. Website operators, in turn, use search engine optimization to give their pages a higher rank. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Seed.txt b/.github/workflows/data/simplewiki-500/Seed.txt new file mode 100644 index 000000000..6c37cfd35 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Seed.txt @@ -0,0 +1,15 @@ +A seed is the part of a seed plant which can grow into a new plant. It is a reproductive structure which disperses, and can survive for some time. A typical seed includes three basic parts: (1) an embryo, (2) a supply of nutrients for the embryo, and (3) a seed coat. +There are many different kinds of seeds. Some plants make a lot of seeds, some make only a few. Seeds are often hard and very small, but some are larger. The coconut is as big as a child's head, but it contains more than just a seed. At the start, seeds are "dormant" (resting inside their coat) for a while. When the seed is ready to develop, it needs water, air and warmth "but not sunlight" to become a seedling. +Seeds carry the food that helps the new plant begin to grow. This food store is in the endosperm, and/or in the cotyledons. Many kinds of seeds are good food for animals and people. The many kinds of grain that people grow, such as rice, wheat, and maize, are all seeds. Seeds are often inside fruits. +Development from the seed. +A seed, though not active, is a tiny living thing. It contains the embryo of the future plant, which is not changing or developing: it is "dormant". The common idea is that the seed "sleeps" until it gets what it needs to wake up. That is not correct. Different seeds have different habits, no doubt adapted to their habitat. There are different kinds of resting stages in seeds: +1. Seed dormancy: means the seed does not develop for a while "even when conditions are suitable".p98 Delayed germination (development) allows time for dispersal. Changes take place inside the seed which sooner or later make it germinate. The details vary hugely between species. +2. Seed hibernation: fails to germinate because conditions are not right. Growth is triggered by particular events in the environment. Details of the triggers are known for some, but not all, seeds. Rain, fire, ground temperature, are examples. Many seeds only germinate after they have been eaten and passed through the digestive system of an animal. This also is a dispersal method. +When a seed germinates ("wakes up"), it begins to grow into a little plant called a "seedling". It uses the soft fleshy material inside the seed for nutrients (food) until it is ready to make food on its own using sunlight, water and air. +Most seeds germinate underground where there is no sunlight. The plant does not need the nutrients in soil for a few days or weeks, because the seed has all the things it needs to grow. Later, though, it will begin to need sunlight. If there is sunlight, the plant will use it to grow healthy. If there is no light, the plant will still grow for a while, but its plastids will not mature: the chlorophyll does not turn green. If the plant does not get enough light, it will eventually die. It needs light to make food for itself when the reserve in the seed runs out. +Origin and evolution. +Seeds have been an important development in the reproduction and spread of conifers and flowering plants. Plants such as mosses, liverworts and ferns do not have seeds, and use unprotected spores and other methods to propagate themselves. Before the upper Devonian period, land plants, like modern ferns, reproduced by sending spores into the air. The spores would land and become new plants only in favourable conditions. Spores have little food stored, and may be just single cells rather than embryos. +The evolution of seeds changed the plant life cycle by freeing plants from the need for external water for sexual reproduction, and by providing protection and nutrients for the developing embryo. These functions allowed plants to expand beyond the immediate neighbourhood of water sources. They were able to exploit environments which were drier and more upland.p92 This can be seen by the success of seed plants in important biological niches on land, from forests to grasslands both in hot and cold climates. The present-day seed plants are the Gymnosperms, with naked seeds, and the Angiosperms with covered seeds, usually fruits. +The first true seeds are from the upper Devonian 370–354 million years ago, which is probably the theatre of their first evolutionary radiation. The earliest seed-producing trees were in the forests of the Carboniferous period.p112 The seed plants steadily became one of the most important elements of nearly all ecosystems. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Sense.txt b/.github/workflows/data/simplewiki-500/Sense.txt new file mode 100644 index 000000000..7291d4f16 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Sense.txt @@ -0,0 +1,11 @@ +There are several meanings of the word sense. This page is for - there are more detailed articles on each meaning: +When a word has several meanings, one can refer to it as being used "in the sense of..." some context or other. In Simple English for instance we avoid using words in unusual senses. +The sensory system of animals. +The human sensory system is usually said to have six senses: +Other animals may have other senses. Fish have lateral lines which detect changes in the water pressure around them, and some can detect changes in electric fields around them. +Sense in language. +Sense in this context is the meaning conveyed by language. +Another use is to flag whether an argument or statement is correct and understood. "That makes no sense" or "That is nonsense" are examples from everyday speech. +A variation of this is to say that something does not make "economic sense". Usually these words signal a political dispute or some failure to define terms correctly. +The term "common sense" is thinking based on a wide experience of life. It used to mean practical wisdom. It has a long history of being used in politics, often to mean that some idea will be accepted or rejected because of human nature (what people are like). +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/September.txt b/.github/workflows/data/simplewiki-500/September.txt new file mode 100644 index 000000000..f569a048c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/September.txt @@ -0,0 +1,10 @@ +September (Sep.) is the ninth month of the year in the Gregorian calendar, coming between August and October. It has 30 days. Its name comes from the Latin word "sept" for "seven" (it was the seventh month of the year, before January and February were added to the beginning of the year.) +September always begins on the same day of the week as December, but never ends on the same day of the week as any other month. +The Month. +In the old Roman calendar, September was the seventh month, which is where it got its name ("Septem" means "seventh"). The ninth month at the time was November ("Novem" means "ninth"). With Julius Caesar's calendar reform, September became the ninth month, with 30 days. September comes after August and before October. +September begins on the same day of the week as December every year, as each other's first days are 13 weeks (91 days) apart. No other month of any year ends on the same day of the week as September: this month and May are the only two months with this property. +In common years, September starts on the same day of the week as April and July of the previous year, and in leap years, October of the previous year. In common years, September finishes on the same day of the week as April and December of the previous year, and in leap years, July of the previous year. In leap years and years immediately after that, September starts on the same day of the week as January of the previous year. +In years immediately before common years, September starts on the same day of the week as June of the following year, and in years immediately before leap years, March and November of the following year. In years immediately before common years, September finishes on the same day of the week as March and June of the following year, and in years immediately before leap years, August and November of the following year. +September is one of two months to have an equinox (the other is March, its seasonal equivalent in both hemispheres), where both day and night are roughly of equal length, occurring either on the 22nd or 23rd, halfway between the June and December solstices. In the Northern Hemisphere, Autumn (Fall) begins in this month, while in the Southern Hemisphere, this is the beginning of Spring. For meteorologists, the people who study the weather, these seasons begin on September 1 in those hemispheres. In most Northern Hemisphere countries, school starts in this month, following the summer holidays. +In Ancient Greece, September was called "Boedromion". The Anglo-Saxons called it "Gerstmonath", meaning "Barley month", referring to the harvest. In other countries, it is referred to as "Autumn Month", such as in Finland (Syyskuu) and German-speaking parts of Switzerland (Herbstmonat). +Ethiopian New Year occurs in September. Jewish New Year also often occurs in this month. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Server log.txt b/.github/workflows/data/simplewiki-500/Server log.txt new file mode 100644 index 000000000..8b0be46fa --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Server log.txt @@ -0,0 +1,2 @@ +A server log records what is happening on a server at any time. For example, an HTTP server runs a web site. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Server.txt b/.github/workflows/data/simplewiki-500/Server.txt new file mode 100644 index 000000000..807d0f7cd --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Server.txt @@ -0,0 +1,13 @@ +A server is a computer that serves many kinds of information to a user or client machine. Usually a server will only do a few things for many clients. Every type of thing a server does is called a service. Services are used by other computers that are called clients. The relationship between client and server is called a client-server relationship. For example, Wikipedia has web servers which have a service for sending web pages over the Internet. Your client computer talks to Wikipedia's web page service to get web pages for you. A server can also host internet games, share files, and give access to peripheral equipment such as printers. In simple words, the individual computers are connected to some powerful computers called servers. These store files and information in the form of website. With an Internet connection, different users anywhere in the world can access these files. +For servers and clients to talk to each other, they need to be connected to a network. They need to use the same communication protocol, a set way for machines to talk to other machines. It is like a language. For example, the Wikipedia server runs the HTTP to send web sites to your computer, and your computer uses the HTTP Protocol to ask Wikipedia for pages. +Overview. +Usually, servers are specially made to be more powerful and reliable. They are usually more expensive than normal computers. Sometimes, servers are clustered into a "server farm" of many servers working together to do one service. +The server might slow down if there are too many people accessing the server at the same time, resulting in a high load. An overloaded server might also shut itself down automatically. +In a peer-to-peer system, every computer is both a client and a server to the others. This is commonly put into file sharing and VOIP. However, this can help in attempts at piracy. +Typical server operating systems are Linux, FreeBSD, NetBSD, and OpenBSD. Unlike other computers, a server often has no monitor, keyboard, or mouse. When a server doesn't have to do very much, server software can run on a computer that is also doing other things.Initially, such servers were connected to clients known as terminals that did not do any actual computing. These terminals, referred to as "dumb terminals", existed simply to accept input via a keyboard or card reader and to return the results of any computations to a display screen or printer. The actual computing was done on the server. Servers also have an IP address, a special number that other devices use to find the servers. +Web server. +A web server is a type of server that is used to host websites. Examples of web server software include Apache or IIS. A web server can host one, or many, websites. The default port for a web server to listen to is port 80 (HTTP) or 443 (HTTPS). +Some web servers do other things than just serving a web page. For example, they may have something called SSI that makes building a website easier. +Web servers use services like CGI to let software on the server make web pages. Some of the programming languages that can use CGI are scripting languages like Perl, Python, PHP, or ASP. Some are compiled languages like C++ or Java. +Reference. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Service economy.txt b/.github/workflows/data/simplewiki-500/Service economy.txt new file mode 100644 index 000000000..882d0b766 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Service economy.txt @@ -0,0 +1,8 @@ +A service is a job or work done for someone else. All the service trades form a service economy. +Good examples are: +The old split between product and service is now often a service–product continuum. Many products are being transformed into services. +An example is IBM, which made computers, now is mainly a consultancy for businesses which use computers. That has been so at least for the past 40 years. +The person or company which gives the service will get something in return for the service, obviously. Who gives the service usually gets money in return. Who gives the service may get goods in return. Who gives the service can get another service in return. This is a type of trade. +References. +<templatestyles src="Reflist/styles.css" /> + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Seville.txt b/.github/workflows/data/simplewiki-500/Seville.txt new file mode 100644 index 000000000..519decec2 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Seville.txt @@ -0,0 +1,11 @@ +Seville () is a city in the southern parts of Spain. A river called the Guadalquivir River goes through Seville. The city of Seville is the capital of the Spanish autonomous community Andalusia and of the province of Sevilla. People from Seville are called "Sevillanos." +History. +A very old story says that the city was started by the famous hero of Greece, named Hercules. The Romans when they came to Spain gave it the Latin name of Hispalis. Over time this changed to be spelled in English as "Seville". The Muslim Arabs took the city when they invaded the country, and you can still see a lot of the buildings they built during their 800-year stay in Spain (711-1492). +In 1992, Seville was the place for the Expo 92. There is a beautiful bridge across the Guadalquivir River called "Puente del Alamillo". It was thought up by Santiago Calatrava a famous building expert. +Seville is famous for its hot summer weather. +Sports. +Seville is the home town of two soccer teams, Sevilla FC (often simply called "El Sevilla") and Real Betis Balompié (often called "El Betis"). +Flag. +The flag of Seville () is colored red with yellow characters. The emblem has a diameter of three-quarters the width of the center. The ratio of the flag is 2:3. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Sheep.txt b/.github/workflows/data/simplewiki-500/Sheep.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Simile.txt b/.github/workflows/data/simplewiki-500/Simile.txt new file mode 100644 index 000000000..199855a18 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Simile.txt @@ -0,0 +1 @@ +A simile is a figure of speech that compares two different things, usually by using the words 'like' or 'as'. It is used to make a "direct and clear comparison between two things .Similes" may be confused with metaphors, which do the same kind of thing. Similes use comparisons, with the words 'like' or 'as'. Metaphors use indirect comparisons, without the words 'like' or 'as'. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Site.txt b/.github/workflows/data/simplewiki-500/Site.txt new file mode 100644 index 000000000..decff3c77 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Site.txt @@ -0,0 +1,11 @@ +A site is a real fixed physical location where something will or has happened or a place where something is. +Uses. +Uses in buildings. +It is used very often in building trades to mean the place where a building will go up. +Uses in gravesites. +A gravesite is a place where a person will be buried after they die. +Uses in work. +The words onsite and offsite refer to work that must take place on the site, or which can take place somewhere else. For instance, a prefabricated building can be "built offsite" and then "moved onsite". +Use on the internet. +"Site" is also a common abbreviation in net jargon for "website". In this case no real physical location exists other than the place where the computers are, and one "goes to the site" simply by using a web browser to "go to" that URL. This is a conceptual metaphor. It can be confusing. Someone who uses it is also likely using other jargon. +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Skin.txt b/.github/workflows/data/simplewiki-500/Skin.txt new file mode 100644 index 000000000..4cad9bbd2 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Skin.txt @@ -0,0 +1,8 @@ +Skin is the outside covering of mammals and some other animals. It has many purposes. First of all, it is a defense against the entry of pathogens such as bacteria and parasites. Second, it regulates (keeps in control) the body's temperature. It allows evaporation from its surface, and adjusts it. It is a physical defense, very strong in some animals, but rather weak in humans. The skin and hair on mammals has several purposes. In addition to temperature regulation and defense, some hair is used for signaling. +Most animals add other defenses to their skin. Mammals have hair or fur on their skin. Birds have feathers on their skin. Most fish, and reptiles, like snakes and lizards, have scales on their skin. +Humans can have different skin colours like black people and white people depending on their race and has to do with genetics. +The skin is actually the largest organ of the human body. Without skin, humans would easily get infected with diseases. Skin helps regulate body temperature. Skin lowers the potentially harmful effects of UV rays. As part of the immune system, skin can help warn people to certain diseases. +Clean skin is important to health, and all mammals groom their hair and skin. Skin care is much work. +Skins can be made into leather. Leather is sometimes used to make shoes, bags, and balls. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Slang.txt b/.github/workflows/data/simplewiki-500/Slang.txt new file mode 100644 index 000000000..fc26bcd33 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Slang.txt @@ -0,0 +1,6 @@ +Slang are words that are informal. Usually each generation or social group has its own slang - for example, older people can have trouble understanding the slang of younger people. On the other hand, younger people often understand, but find silly or old-fashioned, the slang of older people. +Over time, language tends to get more complex, since new words enter much faster than old words leave. Over time, slang almost always becomes part of the language, and approved for use by all. +It has also happened that some words used in Anglo-Saxon for bodily functions became thought of as profanity or rude after they were replaced by Latinate words like "urinate", "defecate" and "copulate" - which polite people were supposed to use after the Norman conquest of England in 1066. This was in part a way of making poor people (who spoke Anglo-Saxon) all appear to be rude, while more powerful people (who spoke Norman) appeared to be polite - one way that etiquette can develop, and reinforce power structure. This is only one example from history of how racism can be a reason for defining one group's language as 'slang' and another as 'correct'. +Wanting to have rules of grammar that do not change and the same vocabulary used by everyone for better communication is another reason that is often given for defining one group's language as correct. +An "idiom" can be slang, but it can also be a metaphor that becomes part of the culture. +Two examples of slang are 'wassup' and 'dunnow'. 'Wassup' usually means 'What is up?' (as in, 'How are you?'), and 'dunnow' usually means 'I don't know'. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Slavery.txt b/.github/workflows/data/simplewiki-500/Slavery.txt new file mode 100644 index 000000000..610f07b27 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Slavery.txt @@ -0,0 +1,56 @@ +Slavery is when a person is treated as the property of another person. This person is usually called a slave and the owner is called a slavemaster. It often means that slaves are forced to work, or else they will be punished by the law (if slavery is legal in that place) or by their master. There is evidence that even before there was writing, there was slavery. Almost all cultures and continents have a history of slavery. Some societies had laws about slavery or had an economy that was built on it. Ancient Greece and Ancient Rome had many slaves. +In the 20th century, almost all countries made laws making slavery illegal. The Universal Declaration of Human Rights says that slavery is wrong. Slavery is now banned by international law. Despite this, there are still different forms of slavery in some countries. The Islamic Republic of Mauritania was the last country in the world to officially ban slavery. In 2007, "under international pressure", its government passed a law allowing slaveholders to be prosecuted. However, in 2019, approximately 40 million people, were still enslaved throughout the world despite slavery being illegal. About 26% of these were children. In the modern world, more than half of the people who are slaves provide forced labour, usually in the factories and sweatshops of the private sector of a country's economy. +In industrialised countries, human trafficking is a modern form of the slave trade. In non-industrialised countries, enslavement by debt bondage is a common form of enslaving a person. There are many types of modern slavery. Some of these include captured domestic servants, people in forced marriages, and child soldiers. +Origin of the word. +The English word "slave" comes from the Middle English word . came from the Old French word "". The French word came from Late Latin "sclavus". There are many theories for where the word "sclavus" came from. A common theory is that the word came from Slavic peoples in Central Europe and Eastern Europe who were often put into slavery. Another theory is that "sclavus" came from Byzantine Greek . The Greek word means to steal from an enemy that was killed in war. +History of slavery. +Early civilizations. +Slavery has existed in various forms since antiquity. The earliest records of slavery can be traced to Babylon 18th Century BC, in texts such as the "Code of Hammurabi" (c. 1760 BC), which codifies slavery as law. +In the Ancient Near East, slaves were often prisoners of war, which was determined as lawful by the book of Deuteronomy. There were many distinctions made to categorize those by factors such as class, gender, age and race. For example, Israelites were not allowed to enslave other Israelites. The Deuteronomic Code calls for the death penalty for the crime of kidnapping Israelites to enslave them. +In Ancient Egypt, slaves were mainly prisoners of war. Many times, slaves inherited the status of their slave parents. Others became slaves over unpaid debts. Some slaves were poor peasants who offered themselves into servitude in exchange for food and shelter. The lives of slaves were normally better than that of peasants. Young slaves could not be put to hard work, and had to be brought up by the mistress of the household. Not all slaves went to houses. Some sold themselves to temples, or were assigned to temples by the king. +In many places, citizens were partly or fully protected from being enslaved, so most slaves were foreigners. +Ancient Rome. +Slaves were important in society and the economy of ancient Rome. They did simple manual labor and domestic services, but also could have complex jobs and professions. Teachers, accountants, and physicians were often slaves. Greek slaves were often well educated. Most slaves, such as those who were made slaves as punishment, worked on farms, in mines, and at mills. Their living conditions were very bad, and they did not live for very long. +Slaves were considered property under Roman law and were not legally people. Unlike Roman citizens, they could suffer corporal punishment, sexual exploitation (sex workers were often slaves), torture, and summary execution. A slave's testimony could not be accepted in a court of law unless the slave was tortured. This was because they thought that slaves would be too loyal to their masters to reveal damaging evidence unless coerced. Over time, however, slaves gained some legal protection, including the right to file complaints against their masters. Attitudes changed in part because of the influence among the educated elite of the Stoics, whose egalitarian views of humanity extended to slaves, and also because of slave rebellions. Better treatment meant fewer rebellions. +Roman slaves could hold property which, even though it belonged to their masters, they were allowed to use as if it were their own. Upper class slaves were allowed to earn their own money. With enough money they could buy their freedom. +After the Roman Empire broke up, slavery gradually changed into serfdom. Serfdom was similar to slavery but the worker received a set amount of wages and had certain civil rights and could leave the employment of the master. +Asian slavery. +Both non-Muslims and Muslims in Southeast Asia during the 18th century bought Japanese girls who came by sea. Japanese slave girls were still owned by India-based Portuguese (Lusitanian) families according to Francisco De Sousa, a Jesuit who wrote about that in 1698. This was long after the 1636 edict by Tokguawa Japan had expelled Portuguese people. +China imported Korean slaves and Indochinese slaves. Japanese children in medieval Japan could be taken as slaves if debts were not repaid by their parents. Japanese parents sold their daughters to Portuguese in Kyushu. Japanese children and women from the Bungo domain were sold as slaves to Europeans in Higo after Bungo was attacked in 1586 by the Satsuma domain. +Arab slave trade. +Historians estimate that between 650 AD and the 1960s, 10 to 18 million people were enslaved by Arab slave traders. They were taken from Europe, Asia and Africa across the Red Sea, Indian Ocean, and Sahara desert. Male slaves were often employed as servants, soldiers, or workers by their owners. Many male slaves were castrated. It has been claimed that as many as six out of every ten boys bled to death during the process, though the source may not be reliable. Eunuchs fetched a higher price: that made castration worthwhile. According to Ronald Segal, author of "Islam’s Black Slaves: the other black diaspora" (2002), "The calipha in Baghdad at the beginning of the 10th Century had 7,000 black eunuchs and 4,000 white eunuchs in his palace”. Women and children taken as slaves were mainly used as servants and concubines. While the later Atlantic slave trade concentrated on men for labor, the Arab slave trade started with men and boys, but shifted over time to concentrate more on woman and young girls for sexual purposes. By the 1900s, Arab slave traders had taken between 10 and 18 million slaves out of Africa. +The Atlantic slave trade. +For four centuries, beginning in the late 15th century, millions of Africans were taken as slaves by Europeans. Europeans began exporting Africans to the New World as a source of cheap labor on colonial plantations. +Between 1452 and 1455, Pope Nicolas V issued a series of papal bulls authorizing the Portuguese to take African slaves. At first slave traders raided coastal areas and carried black people off. But the mines and fields of the colonies needed more and more slaves. In the early 1700s, Spain began to issue licenses and contracts to supply slaves. By the 1750s, large slaving companies were established. Most of Europe at the time was involved in the slave trade. +In the United States. +Many Europeans who arrived in North America during the 17th and 18th centuries came under contract as indentured servants. The change from indentured servitude to slavery was a gradual process in Virginia. The earliest legal documentation of such a shift was in 1640. This is where an African, John Punch, was sentenced to lifetime slavery for attempting to run away. This case also marked the disparate treatment of Africans as held by the Virginia County Court, where two white runaways received far lesser sentences. +After 1640, planters started to ignore the expiration of indentured contracts. They kept their servants as slaves for life. This was demonstrated by the case Johnson v. Parker. The court ruled that John Casor, an indentured servant, be returned to Johnson who claimed that Casor belonged to him for his life. According to the 1860 U. S. census, 393,975 individuals, representing 8% of all US families, owned 3,950,528 slaves. One-third of Southern families owned slaves. Slavery in United States was legally abolished by the Thirteenth Amendment to the United States Constitution in 1865. That year, Gordon Granger (a military officer) and his men, set the last slaves free in Galveston, Texas. +In the Middle East. +In the 2010s, ISIL (or Islamic State of Iraq and the Levant), were taking part in slave trade (of non-Muslim women), on the largest territory that they controlled. +Scholars of Islamic law have condemned the revival of the slave trade of non-Muslim women by the Islamic State of Iraq and the Levant. ISIL had to flee (later in the 2010s), from most of the areas that they once controlled. +Modern-day slavery. +Slavery has officially been abolished, in all countries of the world. Slave-like conditions still exist, but talking aobut 'slavery' has become more difficult, because people no longer agree on the terms. Things like threats, violence, the use of force, abuse of power and trickery are used to get or keep people in a situation where they can easily be exploited. Common forms of modern-day slavery include: +Millions of people are still slaves in some parts of the world, mostly in South Asia and Africa. It is less common in the developed world partly because of differences in financing law enforcement, but it still happens there as well. The ways in which it is done have changed. +Some of the countries where there is still slavery are in Africa, the Middle East, and South Asia. +While people are still bought at sold, like beforehand, this is less common today. Today, people get trapped in slave-like conditions in other ways. Modern slavery is often linked with poverty. There are countries and areas, where people are poorly-educated, and where there is little or no rule of law. This can create a setting where slavery is seen as acceptable. It is commonly seen in impoverished countries, and those where there are vulnerable minorities. Tens of thousands of people work in slave-like conditions in industries such as mining, farming, and factories; they produce goods for consumption inside the country or export to more prosperous nations. +In the older form of slavery, slave-owners spent more on getting slaves. It was more difficult for them to be disposed of. The cost of keeping them healthy was considered a better investment than getting another slave to replace them. In modern slavery people are easier to get at a lower price so replacing them when exploiters run into problems becomes easier. +Modern slavery can be quite profitable. Total annual revenues of traffickers were estimated in 2014 to over $150 billion, though profits are substantially lower. +Corrupt governments tacitly allow it, even though it is outlawed by international treaties such as Supplementary Convention on the Abolition of Slavery and local laws. +Today, slaves may work because of things like a high debt. Many victims are told that their families will be harmed if they report the slave owners. Many slaves are forced to be domestic servants. In some cases, their families sell their children because of poverty. Some slaves have been trafficked from one part of the world to another. These people are illegally in their host country, and therefore do not report the abuse. Forced prostitution is a type of slavery. Another form of slavery still happening today is forced child labor. Some children have to work in mines or in plantations, or they have to fight wars as child soldiers. +One study says that there are 27 million people (but others say there could be as many as 200 million) in slavery today. Other terms that describe the recruitment of laborers, and that may have similarities to slavery are Blackbirding, Impressment and Shanghaiing. +On some fishing boats, there are slaves. The boats fish in international waters. Media has said that officials in some countries have accepted bribes, so that officials can use power to keep law enforcement from stopping slaves from working on fishing boats. +In 1809, American slaves were sold for around the equivalent of US$40,000 in today's money. A slave can be bought for $90–$100 (as of 2017). Bales explains, "This is an economic crime ... People do not enslave people to be mean to them; they do it to make a profit." +Africa. +Child slavery has commonly been used when making cash crops and mining. According to the United States Department of State, more than 109,000 children were working on cocoa farms alone in Côte d'Ivoire (Ivory Coast) in 'the worst forms of child labour' in 2002. +In Mauritania, it is thought that up to 600,000 men, women and children, or 20% of the population, are slaves, and that many of them are used as bonded labour. Slavery in Mauritania was made illegal in 2007. +In Niger, there is also much slavery. A Nigerien study has found that more than 800,000 people are slaves, almost 8% of the population. +Asia. +In summer 2007, 570 people were found to be slaves for brick makers in China. They included 69 children. The Chinese government made a force of 35,000 police check northern Chinese brick kilns for slaves, and sent lots of kiln supervisors and officials to prison and sentenced one kiln foreman to death for killing a worker who was a slave. +In November 2006, the International Labour Organization said that it would prosecute members of the junta that rules Myanmar (also called Burma) at the International Court of Justice for "Crimes against Humanity". This is because the military makes some citizens do forced labour. The International Labour Organisation says that it thinks that about 800,000 people are forced to work this way. +People in favor of slavery. +Some people have been in favor of slavery, others were opposed to it. Before and during the American Civil War, some thinkers thought that slavery was good for people, They said that some people were natural slaves. These people needed supervision, and would not do well if they were free. +Stopping slavery. +Starting in the 18th century, there were ideas of stopping or banning slavery. Many of these were done in territories that were part of the British Empire, or in its sphere of influence. The movement of wanting to stop slavery is called abolitionism. People such as William Wilberforce, John Newton, and Olaudah Equiano were well-known in the movement. About 1815, the Congress of Vienna had a statement that slavery is bad. +In 1833, the British Empire stopped slavery. Laws in Britain stopped the atlantic slave trade. The American Civil War ended slavery in the United States in 1865. There was the Emancipation Proclamation. In 1865, when the North won, all slaves were made free. Still more countries abolished slavery afterwards. Pedro II of Brazil abolished it in 1888. Forced labor however continued, either against the law or by debt peonage or other methods which the laws of the various countries did not count as slavery. France abolished slavery in 1794 during the Revolution. In 1802, it was restored under Napoleon; Slavery has not been allowed in France since April 27, 1848. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Snapshot Algebra.txt b/.github/workflows/data/simplewiki-500/Snapshot Algebra.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Soap.txt b/.github/workflows/data/simplewiki-500/Soap.txt new file mode 100644 index 000000000..0212e4fd4 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Soap.txt @@ -0,0 +1,7 @@ +Soap is a chemical compound resulting from the reaction of an alkali (commonly sodium or potassium hydroxide) with a fatty acid. Soaps are the metallic salts of long chain fatty acids. When mixed with water during bathing, cleansing, or washing, they help people and clothes get clean by lowering the chance of dirt and oil to get to the skin or fabric. Soaps are made from animal fats or vegetable oils. There are two basic steps in making soap. They are called Saponification and Salting-out of soap. Some people like to make their own soap. +Soap cleans very well in soft water. It is not toxic to water life. It can be broken down by bacteria. However, it is slightly soluble in water, so it is not often used in washing machines. It does not work well in hard water. It cannot be used in strongly acidic solutions. Mild hand soaps are only basic enough to remove unwanted skin oils. For other forms of oil, dishwashing soap is strong enough to remove almost all forms of oil without damaging petroleum products such as plastics. It does not damage skin either. Soap suds physically capture and lift germs (a virus, bacteria etc.) off of the surface of the skin and then water rinses them into the sink. +Soap has been made in many ways. Humanity has used soap-like things for thousands of years. The earliest recorded evidence of the making of soap-like materials dates back to around 2800 BC in Ancient Babylon and Sumeria. They were soap solutions, or soapy water. People made them by mixing ashes with water and fat and boiling them. The Babylonians used water, alkali and cassia to make soap. +Ancient Gauls added salt to the soap solution to make the solid soap fall out. +The Ebers papyrus (Egypt, 1550 BC) suggests that ancient Egyptians bathed often and had animal and vegetable oils with alkaline salts to make a soap-like substance. Egyptian documents say that a soap-like substance was used in the preparation of wool for weaving. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Soapbox.txt b/.github/workflows/data/simplewiki-500/Soapbox.txt new file mode 100644 index 000000000..2560c6f14 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Soapbox.txt @@ -0,0 +1,5 @@ +A soapbox is a temporary platform used to give a speech. During the 19th century, soap was transported in wooden boxes. When a person had new or unusual ideas, and wanted to talk to a crowd about them, sometimes he or she would stand on an empty soapbox so that everyone could see and hear the talk well. +People sometimes use the word "soapbox" to mean a place to say new or unusual things. +References. +<templatestyles src="Reflist/styles.css" /> + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Social capital.txt b/.github/workflows/data/simplewiki-500/Social capital.txt new file mode 100644 index 000000000..1a6cf54e2 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Social capital.txt @@ -0,0 +1,8 @@ +Social capital is the willingness of people to help each other. +It often replaces money which people would use to buy the same help. +Society works best when there is plenty of social capital. The less social capital there is, the more social problems there usually are. If there is no social capital, war and revolution often results. +People who have no money and cannot get help from society may have to agree to do things they do not want to do, or force others to do things they do not want to. Organized crime grows in this way, and so do forced labour and slavery. +Most ways of measuring social capital have to do with trust - people who trust that favours and help will be available when they need it will favour and help others more. Those who are seen as trying to get a free ride will get much less help. A social climber tries to earn social capital by making friends with those who have it but without actually helping. Some call this kind of person a social parasite. They are very hard to detect, unlike people who cheat or commit fraud. When there are too many of these kinds of people, especially when they are politicians, people begin to mistrust their government. Rather than work with a political party to change law, they may start to look for direct revenge for things. +Social capital is a lot like real capital. The more money a person or a society has, the easier it is to do things and the better off people are. The less money, the more difficult things become and the worse people feel. +Other websites. +The Social Capital Foundation \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Social contract.txt b/.github/workflows/data/simplewiki-500/Social contract.txt new file mode 100644 index 000000000..2f93220aa --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Social contract.txt @@ -0,0 +1,5 @@ +A social contract or political contract is a perceived agreement among the people of a state about the rules that will define their government. These rules are usually called laws. Laws help to make sure people have rights and that their rights are protected. One kind of social contract is a constitution. A constitution says how decisions are made, and sets limits on the powers of leaders and other people who have authority. +In the Age of Enlightenment, philosophers Thomas Hobbes, John Locke and Jean-Jacques Rousseau wrote books about social contracts. They saw good government as coming from social contracts. Rousseau wrote a book called "The Social Contract". Both the United States Declaration of Independence and United States Constitution use the theory of social contracts. +The State of nature is the time before the social contract +Related pages. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Social.txt b/.github/workflows/data/simplewiki-500/Social.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Society.txt b/.github/workflows/data/simplewiki-500/Society.txt new file mode 100644 index 000000000..31d4e73b5 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Society.txt @@ -0,0 +1,10 @@ +Society is the term to describe human beings together as a collective entity – the sum of their social networks and social interactions. +Origin. +The term comes from the Latin idea of "societas", or the connection between friends or allies – friend or ally being "socius". It can also mean a specific group of people who interact, as well as a wider society of which they are members. People form societies to gain greater benefits as a group than would be possible separately. Many animals beside humans also do this, such as wolves or eusocial insects. Sociology is the name for the study of society. +Concept. +A society is often considered in terms of citizenship, rights and ethics. The strength and unity of any society's members' willingness to help each other is to be measured can be called social capital. +Political philosophy. +A social contract sets out the rules and roles for this kind of cooperation. One kind of social contract is a constitution, which outlines to some extent what society at a given state is intended to be. +References. +<templatestyles src="Reflist/styles.css" /> + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Solar System.txt b/.github/workflows/data/simplewiki-500/Solar System.txt new file mode 100644 index 000000000..b3cdfdc6b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Solar System.txt @@ -0,0 +1,38 @@ +The Solar System is the Sun and all the objects that travel around it. The Sun is orbited by planets, asteroids, comets and other things. +The Solar System is about 4.568 billion years old. The Sun formed by gravity in a large molecular cloud. It is mainly hydrogen, which it converts into helium through nuclear fusion. The planets are in a flattened orbiting disk. This disk was partly left over from the cloud that formed the Sun, plus other material as the Sun moved through space. Eventually, the gas and dust of the disk came together into planets. It is thought that almost all stars and their planets form this way. +The Sun is a star. It makes up 99.9% of the Solar System's mass. This means that it has strong gravity. The other objects are pulled into orbit around the Sun. The Sun is mostly made out of hydrogen, and some helium and higher elements. All heavier elements, called "metals" in astronomy, account for less than 2% of the Sun's mass. Oxygen is about 1% of the Sun's mass. Iron (0.2%) is the most plentiful of the other elements. +There are eight planets in the Solar System. From closest to farthest from the Sun, they are: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus and Neptune. The first four planets are called terrestrial planets. They are mostly made of rock and metal, and they are mostly solid. The last four planets are called giant planets. This is because they are much larger than other planets and are mostly made either of gas or ices. +Six of the planets, and the six largest dwarf planets, are orbited by moons. There are more than 200 moons in the Solar System. Mercury and Venus have no moons, and Jupiter and Saturn have the largest number of moons. The largest moon is Ganymede which is a moon of Jupiter. Titan is one of Saturn’s moons. It is the only moon in the Solar System to have an atmosphere, which is mainly composed of nitrogen. +The Solar System also contains other things. There are asteroid belts, mostly between Mars and Jupiter. Further out than Neptune, there is the Kuiper belt and the scattered disc. These areas have dwarf planets, including Pluto, Makemake, Haumea, Ceres and Eris. There are thousands of very small objects in these areas. There are also comets, centaurs, and interplanetary dust. +In Ancient Greece, Aristarchus of Samos proposed the heliocentric model of the Solar System, where the Sun, is at the center of the known universe. He is sometimes known as the "Greek Copernicus". +Evolution of the Solar System. +The formation and evolution of the Solar System began 4.6 billion years ago with the gravitational collapse of a small part of a giant molecular cloud. +Most of the collapsing mass collected in the centre, forming the Sun, while the rest flattened into a protoplanetary disk of loose dust, out of which the planets, moons, asteroids, and other Solar System bodies formed. +This model, known as the nebular hypothesis, was developed in the 18th (1700s) century by Emanuel Swedenborg, Immanuel Kant, and Pierre-Simon Laplace. It has been adjusted by scientific disciplines such as astronomy, physics, geology, and planetary science. As our knowledge of space has grown, the models have been changed to account for the new observations. +The Solar System has evolved considerably since its initial formation. Some moons have formed from circling discs of gas and dust around their parent planets, while other moons are believed to have formed and were later captured by their planets. Others, such as the Earth's Moon, may be the result of giant collisions. +Many collisions between bodies have occurred, and have been important to the evolution of the Solar System. In the early stages, the positions of the planets sometimes shifted, and planets have switched places. This planetary migration is thought to have been responsible for much of the Solar System's early evolution. +Grand tack hypothesis. +Astronomers now think that the order of the planets was not always as it is today. Knowing what we know today, we can see the Solar System is strange. Most other planetary system we are able to study have their largest planet closer to their star. In the Solar System it is not. Also we have noticed other oddities in the Solar System. Mars is smaller than it ought to be, and the asteroid belt has been disturbed. +So, astronomers have put forward the grand tack hypothesis. In it Jupiter was earlier closer to the Sun, and (for some unknown reason) moved out to its present position. +Orbits of the planets. +The Earth's orbit around the Sun is nearly a perfect circle, but in a very slightly oval shaped orbit, an elliptical orbit. The other planets in the Solar System also orbit the Sun in slightly elliptical orbits. Mercury has a more elliptical orbit than the others, and there is obviously some explanation for this. Some of the smaller objects orbit the Sun in very eccentric orbits. The planets all orbit the Sun in the same direction. +A full account of the planetary motion needs an account of the "n"-body problem, which is not treated on this wiki. A page can be found on En wiki. +Discovery and exploration. +For thousands of years, people had no need for a name for the "Solar System". They thought the Earth stayed still at the center of everything (geocentrism). The Greek philosopher Aristarchus of Samos suggested that there was a special order in the sky. Nicolaus Copernicus was the first to develop a mathematical system that described what we now call the "Solar System". This was called a "new system of the world". In the 17th century, Galileo Galilei, Johannes Kepler and Isaac Newton began to understand physics more clearly. People began to accept the idea that the Earth is a planet that moves around the Sun, and that the planets are worlds, and that all worlds are governed by the same same physical laws. More recently, telescopes and space probes sometimes let us see details directly. All inner planets have surface features. The gas giants (as the name suggests) have surfaces whose make-up is gradually being discovered. +The eight planets. +In their order from the Sun: +The planets are the biggest objects that go around the Sun. It took people many years of using telescopes to find the objects that were farthest away. New planets might still be found, and more small objects are found every year. Most of the planets have moons that orbit around them just as the planets orbit the Sun. There are at least 200 of these moons in the Solar System. +Dwarf planets. +Pluto was discovered by American astronomer Clyde Tombaugh and was declared the 9th planet of the Solar System in 1930. +This all changed on August 24, 2006, when the International Astronomical Union (IAU) decided on the correct definition for the word "planet" for the first time. By this definition, Pluto was not a planet anymore due to its irregular orbit and size. It became a "dwarf planet" along with Eris and many others. +Eris was 27% more massive than Pluto. After this, Pluto was put on the list of minor planets and was downgraded in 2006. Instead they defined a new category of dwarf planet, into which Pluto did fit, along with some others. These small planets are sometimes called plutinos. +Structure. +There are a few main parts of the Solar System. Here they are in order from the Sun, with the planets numbered, and the dwarf planets marked with the letters a to i. +Inner solar system. +The first four planets closest to the Sun are called the inner planets. They are small and dense terrestrial planets, with solid surfaces. They are made up of mostly rock and metal with a distinct internal structure and a similar size. Three also have an atmosphere. The study of the four planets gives information about geology outside the Earth. +Oort Cloud. +The Oort cloud is separate from the trans-Neptune region, and much farther out. It contains the long-period comets. +Ecliptic plane. +The "plane of the ecliptic" is defined by the Earth's orbit around the Sun. All of the planets orbit the Sun roughly around this same orbital plane. The farther away from this plane a planet orbits, the more "inclined" is its orbit to the ecliptic. If you could look at the Solar System "edge on" then all the planets would be orbiting more or less in the plane of the ecliptic. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Soul.txt b/.github/workflows/data/simplewiki-500/Soul.txt new file mode 100644 index 000000000..2de547e84 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Soul.txt @@ -0,0 +1,13 @@ +Many philosophies and religions say that a soul is a supernatural essence of a living human being that lives after death. It is usually said to be immortal. It cannot be discovered by science, because it cannot be tested in any controlled way. Many different opinions exist as to what happens to personal experience after death. +Reincarnation is a belief that after the body dies, the soul will be born again in another body. It is important to Hinduism. Buddhists understand the idea of an eternal soul, and the idea of simple annihilation as delusion; they say that there is no unchanging, permanent self, soul or essence in phenomena. Buddhists believe in transmigration, or rebirth in samsara or other planes of existence, based on how they understand kamma (Pāli; karma in Sanskrit), and nibbana (nirvana in Sanskrit) for Enlightened ones. In Jainism the soul is sometimes called jiva. +Resurrection is the Christian belief that a soul returns in the same body. In most Christian denomination this was realized in Jesus Christ but is also the promise for all souls; see heaven, hell, and Final Judgement. +Most atheists say that there is no such thing as a soul, and that the body is the only part of a person. +Popular culture. +In popular culture, soul usually means deep feeling and commitment. It is in this sense that the word appears in the term soul music. However that music was also influenced by gospel music which was religious. +One popular idea about souls that is easy to express, is that a person "is" a soul, and "has" a body. The soul is the "I" in "I exist" that feels and lives life. What people call the mind could be "part" of the soul: one soul started this article, other souls have edited it, and another soul is reading it. This view, however, implies that the human body is a possession, and seems to devalue bodies that do not have souls as defined or understood by the speaker (some people say that animals, heretics, and people of another religion do not have souls). Like most uses of the verb to be, there is an ideology in these simple words. +Christianity teaches that all humans have an immortal soul. This means that it is a part of them which does not die when their physical body dies, but lives on with them to heaven or to hell. Christians believe that the soul is the 'breath of life' which God gave to Adam. +In Japan the soul is believed to weigh 21 grams. This belief may have been influenced by the observations of in the early 1900s. +Characteristics. +One distinction often made is between soul, which is distinct from other souls, and spirit, which may be combined with that of other beings. The idea of the Holy Spirit in Christianity, for example, is a universal and shared spirit many souls are part of, and which is expressed on Earth in that faith by "the Church" meaning "the body of Christ" meaning "all bodies that follow Jesus." This could be more inclusive than the is/has view of souls and bodies. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Sound.txt b/.github/workflows/data/simplewiki-500/Sound.txt new file mode 100644 index 000000000..e51a457c9 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Sound.txt @@ -0,0 +1,21 @@ +"Sound can also mean a body of water, like a bay or channel." +Sound is caused by sound waves. It can be heard when goes through a medium to the ear. All sounds are made by vibrations of molecules. For example, when a person hits a drum or a cymbal the object vibrates. These vibrations make air molecules move. Sound waves move away from where they came from. When the vibrating air molecules reach our ears, the eardrum vibrates, too. The bones of the ear vibrate in the way the object that started the sound wave vibrates. +There are three different mediums. They are solids, liquids and gas. Sound travels fastest through solids because the particles in a solid are closer together than they are in gases and liquids. +These vibrations let you hear different things. Even music is vibrations. Irregular vibrations are noise. People can make very complex sounds. We use them for speech. +Sound waves are longitudinal waves with two parts: "compression" and "rarefaction". Compression is the part of the sound waves where the air molecules are pushed ("compressed") together. Rarefaction is the part of the waves where the molecules are far away from each other. Sound waves are a sequence of compression and rarefaction. +Vacuum. +Since sound is a vibration of a transmission medium, it cannot go through a vacuum. A vacuum is a place where there is no medium, for example in outer space. The word comes from the Latin adjective "vacuus" for "vacant" or "void". This is why astronauts cannot talk to each other in space: they need a radio to hear each other. +Speed of sound. +Sound waves can travel through solids, liquids, and gases. Sound can travel through water faster than through air; and even faster in solids like stone, iron, and steel. At room temperature and normal atmospheric pressure, sound travels at 344 m/s (1134 ft/s), 761 miles per hour). Because the temperature and pressure change with altitude in the atmosphere, speed will vary as well. +Pitch and Intensity. +"Pitch" is the highness or lowness of sound. Pitch is how humans hear different frequencies. Frequency is determined by the number of vibrations per second. The highest key played on a piano, for instance, vibrates 4,000 times per second. It has a frequency of 4000 hertz (Hz), or 4 kilohertz (kHz). Lower keys have lower frequencies. A note an octave higher than another note has a frequency twice of that note. +The intensity of sound is how much sound energy goes through a square meter in one second. Sound waves with higher amplitude (bigger vibration) have higher intensity. The intensity of sound is higher closer to the sound source. Farther away, it's less intense. The inverse-square law shows how sound intensity becomes smaller, farther from the source. "Inverse square" says that when distance gets multiplied by a number, sound intensity gets divided by that number squared (the number times itself). Thus, twice the distance means a quarter the intensity. +Sound intensities can be very different. They can range from 0.000000000001, which are barely heard, to 1 W/m2 (painfully loud). The decibel scale makes sound intensity numbers easier to work with. A 0.000000000001 W/m2 intensity is 0 dB (decibels). It is an exponential scale, so when the decibel number increases by 10, the intensity is ten times as much. So, a 1 W/m2 intensity is 120 dB. +Loudness is how people sense the intensity of sound. Loudness depends on sound intensity, sound frequency, and the person's hearing. +There is a limit on how loud a sound can be before it is considered a shockwave. In the Earth's atmosphere, this limit is 194 dB. Anything beyond that, the sound does not move through the air, the sound pushes the air along with it, creating a wall of pressurized air. +Heard and not seen. +Audible sound has frequencies between 20 Hz to 20 kHz. Human beings can hear audible sound. Sound waves that have a frequency above 20 kHz are called ultrasound waves. Sound waves that have a frequency below 20 Hz are called infrasound waves. Human beings cannot hear ultrasound waves and infrasound waves, but some animals, like bats and dolphins, use them. Older people have an even smaller hearing range. People are best at hearing sounds between 1000 Hz and 6000 Hz. +The Doppler Effect. +When a sound source is moving towards someone, the frequency seems to increase. The same thing happens when someone moves toward the sound source. Frequency seems to decrease when someone moves away from the sound source. It also decreases when the sound source moves away from someone. This is called the Doppler effect. +References. +Halpern, Alvin, Erich Erlbach (1998). "Beginning Physics II: Waves, Electromagnetism, Optics, and Modern Physics," pg. 50-56 \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Spache Readability Formula.txt b/.github/workflows/data/simplewiki-500/Spache Readability Formula.txt new file mode 100644 index 000000000..263eb66c2 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Spache Readability Formula.txt @@ -0,0 +1,10 @@ +Spache Readability Formula is one method of finding out how hard a piece of writing is (its textual difficulty). +The method compares words in a text to a list of words which are familiar in everyday writing. The words that are not on the list are called "unfamiliar". The number of words per sentence are counted. This number and the percentage of unfamiliar words is put into a formula. The result is a reading age. Someone of this age should be able to read the text. +Spache works best on texts that are for children under the age of eight. +the formula; (0.141 * average sentence length)+(0.086 * percentage of difficult words)+0.839 = grade level +According to Oleander Solutions (), the revised Spache Formula is: + GL = (.121 * ASL) + (.082 *UW) + .659 +Where: + GL = U.S. grade level + ASL = Average sentence length + UW = Number of unique unfamiliar words \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Spanish.txt b/.github/workflows/data/simplewiki-500/Spanish.txt new file mode 100644 index 000000000..b584df5eb --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Spanish.txt @@ -0,0 +1,3 @@ +The word Spanish means: +Other use. +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Special English.txt b/.github/workflows/data/simplewiki-500/Special English.txt new file mode 100644 index 000000000..c608f00ec --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Special English.txt @@ -0,0 +1,13 @@ +Special English is a simple form of the English language. It is used by a public radio station called Voice of America, run by the United States government in Special English programs every day. Its news and feature programs are read more slowly than usual, using fewer English words and simple grammar. +The contents of Special English programs are much easier to understand. Special English is clearer and simpler, and it uses shorter sentences. It can also help someone whose English is weak to improve their English. In some countries, for example China, Special English is popular among people for learning English. +Special English was first used on October 19, 1959. Special English started in that year as one of radio programs by the Voice of America. This broadcasts adopt slow pace and simple English in order to increase understanding for millions of listeners. It is now also known as "Learning English". +Details. +Special English started in 1959. It was developed as an experimental radio program to spread information on news and culture to people outside the United States. Programs on VOA use a simpler English within about 1,500 words, and reports are paced 1/3 slower than regular English in order to allow listeners to increase a better understanding. This means broadcasters speak at about two-thirds the speed of conversational English. But is still far from sounding like a record played at the wrong speed. It now deals with various topics to keep interest of listeners, such as news, business, science, and culture. Stories are written in clear. +To be a Special English broadcaster, a person needs to do months of training. The training includes a professional voice trainer who teaches how to breathe properly and pronounce clearly. A chief of Special English at VOA said, "People in this country have likely never heard of Special English," and also said, "and, if they have, they often don't understand the significance of it to people in other countries." +One VOA staff explains that the main goal of Special English is for the listener to understand the content of what is being broadcast, and to make steady progress in English. "There is a fine line between being simplified and simplistic", he says. "We never want to cross that line." So when necessary, more "advanced" English words are used and the meanings made clear, so the stories never suffer from incomplete information. +Students and teachers in other countries say Special English is a good learning tool. +About programs. +Some of popular programs on VOA follow. +VOA broadcast a program titled 'Willis Conover, the Voice of Jazz, Is Now Online" in the past, as Willis Conover became a famous host at Music USA. +Notes. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Speed.txt b/.github/workflows/data/simplewiki-500/Speed.txt new file mode 100644 index 000000000..365af774f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Speed.txt @@ -0,0 +1,21 @@ +Speed is a measure. +It is velocity but without the direction. +Finding speed. +Speed is the distance an object moves in a given amount of time. +The distance is never negative. +If a train takes 1 hour to travel 100 kilometers, it has a speed of . +In fact this is the "average speed". +During this one hour, the train may become slower and faster, it may even drive backwards. +The average speed of an object in a certain time is the distance the object traveled divided by the time. +The instantaneous speed is the average speed when the time is very small, almost zero. +Units. +There are many units of measurement. +Since the 20th century following units were widely used by humans: +Different units are used for different applications. +People controlling planes and ships frequently use Knot (speed). +Sometimes a Mach number is used. +Range. +The smallest speed is . +A “negative speed” would be in fact a velocity. +The biggest speed is the speed of light. +You can write bigger speeds, but they are not possible in this universe. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Speedword.txt b/.github/workflows/data/simplewiki-500/Speedword.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Speedwords.txt b/.github/workflows/data/simplewiki-500/Speedwords.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Spirit.txt b/.github/workflows/data/simplewiki-500/Spirit.txt new file mode 100644 index 000000000..0154c4ede --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Spirit.txt @@ -0,0 +1,5 @@ +A spirit, otherwise referred to as a phantom, is considered to be the part of a being that is not the body. Other words with the same meanings are soul and ghost. When a body is alive, it has a spirit in it. Death is when the spirit separates from the body. +Christians believe that spirits exist in Heaven or Hell. (See 1 Timothy 3:16, 4:1) +Spiritualists believe that spirits can talk with people, or change things in the world. Many religions forbid communicating with such spirits in any way, (see Leviticus 19:31) but a few include this as part of their practice. +Another use of "spirit" means the main purpose or meaning of a sentence or document. For example, the "spirit of a law" is the true meaning of the law which the creator wanted. This phrase is often used when the words and sentences of a law could mean more than one thing, but a judge must decide what meaning is correct. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Sport.txt b/.github/workflows/data/simplewiki-500/Sport.txt new file mode 100644 index 000000000..9baf26458 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Sport.txt @@ -0,0 +1,4 @@ +Sport is commonly defined as an athletic activity that involves a degree of competition, such as netball, basketball or cross-country Olympic skiing. Some games and many kinds of racing are called sports. A professional at a sport is called an athlete. Many people do sports with their friends. They need coaches to teach or train teams or individuals how to do better. Sports can be played indoors or outdoors and by individuals or team. +Sports is needed for health and can help reduce diseases such as heart attacks, many types of cancer, depression and anxiety, and dementia. Different types of sports help our body in different ways. For children, sports play an extremely important part in their lives by providing all round development of the child, physically, mentally and emotionally. +Some people like to watch other people play sports. Those who watch others playing sports are called "fans". While some fans watch sports on television, others actually go to stadiums or other places where people pay to watch them in person. These fans are called "spectators". +People engage in many kinds of sports, for example: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Sports.txt b/.github/workflows/data/simplewiki-500/Sports.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/State.txt b/.github/workflows/data/simplewiki-500/State.txt new file mode 100644 index 000000000..cda8ceced --- /dev/null +++ b/.github/workflows/data/simplewiki-500/State.txt @@ -0,0 +1,33 @@ +In politics, a state is the government of a country which has control over a geographic area or territory. States have three main features: +There are different forms of government a state may have, for example a republic or a monarchy. Sometimes states form their own countries. In its origin the United States had different kinds of states, but they agreed to join together. Most states also have armed forces, civil service, law and police. +Government institutions in a country are commonly referred to as "the state". +Different definitions. +The definition above is very broad. It is based on ideas by Georg Jellinek (1851-1911). Other people had other ideas: +Because of the different definitions, there's no universally accepted definition of state. The one given at the start of the article is now part of international law. +History. +Early states. +The earliest states could not be just human settlements. They had to be more than tribes. An example is New Guinea, which has many small tribes, but no larger organisations. Amazonia in the 18th century was also like this, with many small tribes. They are not states. To be a state, tribes have to be bounded together, for example, by a monarch. They may also be bonded by their language, and by living in the same region. +An example of monarchy is early Egypt under the Pharaohs. Similar military-based states included the Babylonian Empire and the huge Roman Empire and early China. +Some early states were based on cities. Some Ancient Greek city-states had democracy in a limited form. Other states had inheritance of kingship or even challenges and fighting to decide leadership. Early city states had a feature that modern society cannot match. Every man got to see and know the leading citizens. "Man" because most city-states limited the vote to male heads of families. One reason was that the adult men would do the fighting if the group were attacked. +From military to modern state. +When the military-based state, the Roman Empire, fell, lots of little states were made and each was also military-based and controlled by a king. These states did not often work together and war raged. However, once people within the state itself started fighting (what's called a Civil war), the kings had to make peace and start parliaments. +Modern states. +Modern states soon started in the late 15th century. The main states in Europe were: +These states all tried to improve their politics and economy. They became more and more like the states today. They formed proper boundaries for their lands and worked with the powers in the state, such as the Church and the nobility. They made armies, tax systems and embassies to make them more powerful and stable. +Different types of state. +Types of state can be separated into two categories: democracy and dictatorship. However, just because a group of states are all democratic does not mean that they follow the same rules. Iran, Pakistan, France, Germany and the United States of America are all states. Each of them sees itself as a democracy. Each of them however has a different idea of what "democracy" really means. +Different states of the same 'category' can also function differently. For example, two democratic states may be quite different if one has a well-trained police or army while the other does not. Therefore, the word 'state' only tells us what type of government that state follows (democratic or dictatorship) and does not tell us about the country itself. +Sub-categories of state. +There are lots of sub-types of state branching off from democracy and dictatorship. The main ones are Pluralism, Marxism and Institutionalism. +Pluralism. +Pluralism has been very popular in the United States. It shows the state as a neutral place for settling arguments between other states. Pluralism allows each group of people to tell the state what to do. This type of state is called a polyarchy. +Also in a pluralist state, politics, the military and the economy are all united and work together. This means that all power in the state is 'diffused' across the people who live there. +Marxism. +Marxism is an ideology advocating for the rights of workers and labourers of society. It was started by Karl Marx and Friedrich Engels. Marxism rejects the idea that a state is there to protect business interest, and is definitely not a neutral place for settling arguments. +The main job of a Marxist state is to protect the labour and financial situation of the working classes. With such reforms, a Marxist state focuses on collectivising resources and creating a planned economy to ensure the well-being of the workers. +Both Marxist and Pluralist states have to react to the activities of groups of people in the state itself. Institutionalist states do not see themselves as 'instruments' to be controlled, they are more just geographical areas. In this area, the people just form groups themselves. An institutionalist state can be made up of both Marxist and Pluralist people, both which have the power to control themselves and not influence the other parties of the state. +Anarchism. +Anarchism is when a group of people have complete freedom and do not believe in having a state at all. Anarchists share the same roots as Marxists, coming from workers movements, but they believe (opposite to Marxists) that a society can work without without a state controlling the people. +Anarchists (such as Bakunin and Kropotkin in the 19th century), often want a form of Marxism but ignoring some of their rules. They want workers to manage themselves and simply get paid for what they do, rather than getting paid in wages. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Statistics.txt b/.github/workflows/data/simplewiki-500/Statistics.txt new file mode 100644 index 000000000..7388318ef --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Statistics.txt @@ -0,0 +1,52 @@ +Statistics is a branch of applied mathematics that deals with collecting, organizing, analyzing, reading and presenting data. Descriptive statistics make summaries of data. Inferential statistics makes predictions. Statistics helps in the study of many other fields, such as science, medicine, economics, psychology, politics and marketing. Someone who works in statistics is called a statistician. In addition to being the name of a field of study, the word "statistics" can also mean numbers that are used to describe data or relationships. +History. +The first known statistics are census data. The Babylonians did a census around 3500 BC, the Egyptians around 2500 BC, and the Ancient Chinese around 1000 BC. Several mathematicians during the Islamic Golden Age studied statistical inference, mainly for use in cryptanalysis. +Starting in the 16th century, mathematicians such as Gerolamo Cardano developed the probability theory; this led statistics closer to being a science. Since then, people have collected and studied statistics on many things. Trees, starfish, stars, rocks, words, almost anything that can be counted has been a subject of statistics. +Collecting data. +Before we can describe the world with statistics, we must collect data. The data that we collect in statistics are called measurements. After we collect data, we use one or more numbers to describe each observation or measurement. For example, suppose that we want to find out how popular a certain TV show is. We can pick a group of people (called a "sample") out of the total population of viewers. Then we ask each viewer in the sample how often they watch the show. The sample is data that one can see, and the population is data that one cannot see (assuming that not every viewer in the population are asked). For another example, if we want to know whether a certain drug can help lower blood pressure, we could give the drug to people for some time and measure their blood pressure before and after. +Descriptive and inferential statistics. +Numbers that describe the data one can see are called descriptive statistics. Numbers that make predictions about the data one cannot see are called inferential statistics. +Descriptive statistics involves using numbers to describe features of data. For example, the average height of women in the United States is a descriptive statistic: it describes a feature (average height) of a population (women in the United States). +Once the results have been summarized and described, they can be used for prediction. This is called inferential statistics. As an example, the size of an animal is dependent on many factors. Some of these factors are controlled by the environment, but others are by inheritance. A biologist might therefore make a model that says that there is a high probability that the offspring will be small in size—if the parents were small in size. This model probably allows to predict the size in better ways than by just guessing at random. Testing whether a certain drug can be used to cure a certain condition or disease is usually done by comparing the results of people who are given the drug against those who are given a placebo. +Methods. +Most often, we collect statistical data by doing surveys or experiments. For example, an opinion poll is one kind of survey. We pick a small number of people and we choose questions to ask them. Then, we use their answers as the data. This process of choosing which data to collect is called choosing a measurement; and the process of collecting data (in this case, who to ask) is called sampling. +Samples. +The choice of how to collect data is important; that choice can change the values that are seen. Suppose we want to measure the water quality of a big lake. If we take samples next to the waste drain, we will get different results than if the samples are taken in a far-away and hard-to-reach spot of the lake. +There are two kinds of problems which are commonly found when taking samples: +Errors. +We can reduce chance errors by taking a larger sample, and we can avoid some bias by choosing randomly. However, sometimes large random samples are hard to take. And bias can happen if different people are not asked, or refuse to answer our questions, or if they know they are getting a fake treatment. These problems can be hard to fix. See standard error for more. +Descriptive statistics. +Finding one value to act in place of multiple data values. +Often, people find it easier to decrease the numbers that make up a set of data and work with a single number instead; many people think that the best number to choose is a number in the middle of the data (a "typical" value of the population). This number in the middle of the data is called its central tendency. There are three kinds of central tendencies that are often used: the mean (sometimes called the average), the median and the mode. +The examples below use this sample data: +Mean. +The formula for the commonly used mean (the so-called "arithmetic mean") is +formula_1 +Where formula_2 are the data and formula_3 is the population size (see also Sigma Notation). +This means that one calculates the mean by adding up all the values, and then divide by the number of values. For the example above, the mean is: +formula_4 +The problem with the mean is that it is affected by very large or very small values. In statistics, these extreme values might be errors of measurement, but sometimes the population really does contain these values. If a set of data has one of these values, then the mean may not be similar to most or all of the original values. For example, if there are 10 people in a room who make $10 per day and 1 who makes $1,000,000 per day, then the mean of the data is $90,918 per day. +The average also does not work if a set of data includes multiple groups that are much different that each other. In a room of 10 people with five people who make $10 and five people who make $100 per day, the average of these data is $55 per day. +In both cases, the mean is not the amount any single person makes; this fact makes the mean not very useful for some purposes. +Other kinds of means exist, like the geometric mean; other means are useful for other purposes. +Median. +The median is the middle item of the data. For a given data formula_5, this is sometimes written as formula_6. To find the median, we sort the data from the smallest number to the largest number, and then choose the number in the middle. If there is an even number of data, there will not be a number right in the middle, so we choose the two middle ones and calculate their mean. In our example above, there are 10 items of data, the two middle ones are "57" and "64", so the median is (57+64)/2 = 60.5. +As another example, like the income example presented for the mean, consider a room with 10 people who have incomes of $10, $20, $20, $40, $50, $60, $90, $90, $100, and $1,000,000. Here, the median is $55, because $55 is the average of the two middle numbers, $50 and $60. If the extreme value of $1,000,000 is ignored, the mean is $53. In this case, the median is close to the value obtained when the extreme value is thrown out. The median solves the problem of extreme values as described in the first example in the definition of mean above. +However, the median still does not work as well for data made of multiple groups. In a room of 10 people with five people who make $10 and five people who make $100 per day, the median of these data is still $55 per day, which is still not similar to most of the people in the room. +Mode. +The mode is the most frequent item of data. For example, if there are 10 people in a room with incomes of $10, $20, $20, $40, $50, $60, $90, $90, $90, $100, and $1,000,000, then the mode is $90, because $90 occurs three times and all other values occur fewer than three times. +There can be more than one mode. For example, if there are 10 people in a room with incomes of $10, $20, $20, $20, $50, $60, $90, $90, $90, $100, and $1,000,000, the modes are $20 and $90. This is bi-modal, or has two modes. Bi-modality is very common, and it often indicates that the data is the combination of two different groups. For instance, the average height of all adults in the U.S. has a bi-modal distribution. This is because males and females have separate average heights of 1.763 m (5 ft 9 + 1⁄2 in) for men and 1.622 m (5 ft 4 in) for women. These peaks are apparent when both groups are combined. +The mode is the only form of average that can be used for data that can not be put in order. +Finding the spread of the data. +Another thing we can say about a set of data is how spread out it is. A common way to describe the spread of a set of data is the standard deviation. If the standard deviation of a set of data is small, then most of the data is very close to the average. If the standard deviation is large, though, then a lot of the data is very different from the average. +The standard deviation of a sample is generally different from the standard deviation of its originating population . Because of that, we write formula_7 for population standard deviation, and formula_8 for sample standard deviation. +If the data follows the common pattern called the normal distribution, then it is very useful to know the standard deviation. If the data follows this pattern (we would say the data is "normally distributed"), about 68 of every 100 pieces of data will be off the average by less than the standard deviation. Not only that, but about 95 of every 100 measurements will be off the average by less than two times the standard deviation, and about 997 in 1000 will be closer to the average by less than three standard deviations. +Other descriptive statistics. +We also can use statistics to find out that some percent, percentile, number, or fraction of people or things in a group do something or fit in a certain category. +For example, social scientists used statistics to find out that 49% of people in the world are males. +Related software. +In order to support statisticians, many statistical software have been developed: +References. +<templatestyles src="Reflist/styles.css" /> +Other websites. + Media related to at Wikimedia Commons \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Steal.txt b/.github/workflows/data/simplewiki-500/Steal.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Stream.txt b/.github/workflows/data/simplewiki-500/Stream.txt new file mode 100644 index 000000000..655ab5af2 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Stream.txt @@ -0,0 +1,13 @@ +A stream is a natural flow of water moving across land between banks. It is smaller than a river. +The primary meaning of stream is a body of water, confined within a bed and banks, and detectably flowing. Synonyms or related words include river, creek, tributary, run, branch, brook, bourne, wash, and fork. Navigable streams are sometimes called waterways, though the term may apply to any size of permanent and natural water feature except oceans. +In the United States, an intermittent stream that only flows for part of the year is marked on topographic maps with a line of blue dashes and dots. In desert areas of the American Southwest, this also includes washes, which only flow after thunderstorms or other significant rains. A blue-line stream is one which flows for most or all of the year and is marked on topographic maps with a solid blue line. In Australia, an intermittent stream is usually called a creek, and marked on topographic maps with a solid blue line. +Streams that form only during and immediately after precipitation are called ephemeral streams. +Streams in geographic terms are awarded order designations. A stream of the first order is a blue-line stream which does not have any other blue-line stream feeding into it. A stream of the second order is one which is formed by the joining of two or more blue-line streams. A third-order stream is one below the confluence of two or more second-order streams; a fourth-order stream is formed by the confluence of at least two third-order streams, and so forth. +Typically, streams are said to have a particular profile, beginning with steep gradients, no flood plain, and little shifting of channels, eventually evolving into streams with low gradients, wide flood plains, and extensive meanders. The initial stage is sometimes termed a "young" stream, and the later state a "mature" or "old" stream. However, a stream may meander for some distance before falling into a "young" stream condition. +The gradient of a stream is a critical factor in determining its character, and is entirely determined by its base level of erosion. The base level of erosion is the point at which the stream either enters the ocean, a lake or pond, or enters a stretch in which it has a much lower gradient. It may be applied to any particular stretch of a stream. In geologic terms, the stream will erode down through its bed to achieve the base level of erosion throughout its course. If this base level is low, then the stream will rapidly cut through underlying strata and have a steep gradient, and if the base level is relatively high, then the stream will form a flood plain and meanders. +When a stream flows over an especially resistant stratum and forms a waterfall or cascade, or for some reason the base level of erosion suddenly drops, perhaps as a result of a fault, the resulting sudden change in stream elevation is called a nickpoint. The stream, of course, expends kinetic energy in "trying" to eliminate the nickpoint. +Meanders are looping changes of direction of a stream. These may be like sine-waves. Typically, over time, the meanders don't disappear but gradually migrate downstream. However, if some resistant material slows or stops the downstream movement of a meander, a stream may erode through the neck between two legs of a meander to become temporarily straighter, leaving behind an arc-shaped body of water termed an oxbow lake or bayou. A flood may also result in a meander being cut through in this way. +The point of origin of a stream is called the headwaters or source. The entire basin drained by the stream is termed the watershed. Every watershed is made up of smaller watersheds, while most watersheds are parts of larger watersheds. For instance, the Continental Divide in North America divides the Atlantic Ocean watershed from the Pacific Ocean watershed, but the Atlantic Ocean watershed may be first divided into the Atlantic Ocean drainage and the Gulf of Mexico drainage. This is termed the Eastern Divide. The Gulf of Mexico watershed may be divided into Mississippi River basin and a number of smaller watersheds, such as the Tombigbee River watershed. The Mississippi River watershed includes the Ohio River watershed, which in turn includes the Kentucky River watershed, and so forth. +The point at which a stream empties into an ocean or other large body of relatively level water is termed the mouth. There may be an estuary or delta at the mouth. +Some streams flow underground through unconsolidated sediments or through caves. Especially with caves, a stream may flow above ground for part of its course, and underground for part of its course. When a stream emerges from an underground course, it is termed a spring. +The study of streams and waterways in general is known as surface hydrology and is important in environmental geography or environmental geology. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/String theory.txt b/.github/workflows/data/simplewiki-500/String theory.txt new file mode 100644 index 000000000..0aceb2d2a --- /dev/null +++ b/.github/workflows/data/simplewiki-500/String theory.txt @@ -0,0 +1,67 @@ +String theory tries to use math to explain the four known fundamental forces—gravitation, electromagnetism, strong nuclear force, weak nuclear force—together in one theory. This tries to solve the problems of having both classical physics and quantum physics. +Einstein wanted a unified field theory, a single theory to explain the fundamental forces. Today's scientists want a unified field theory that also is explains matter. This is called the search for a theory of everything (TOE). The most famous theory used as a TOE is called superstring theory. It says there are 6 higher dimensions as well as the four dimensions of Height, Length, Width and Time). +Some superstring theories seem think that it is about the geometry of space. This idea is a big part of a theory called M-theory. Many string theorists believe that M-theory explains the universe and might explain how other universes, if they exist, are as part of the "multiverse". M theory/supergravity theory has 7 higher dimensions and the four dimensions of Height, Length, Width and Time. +Background. +Introductions to string theory that are designed for the general public must first explain physics. Some of the controversies over string theory are because of people not understanding physics . A common misunderstanding even is the idea that a theory is proven true whenever something it says will happen happens. Another misunderstanding is that earlier physical scientists, including chemists, have already explained the world. This leads to the misunderstanding that string theorists began making up new ideas after they became "set free from truth". +Classical realm. +Newtonian physics. +Newton's law of universal gravitation (UG) was published in 1687. Newton's theory successfully explained objects big enough for us to see them. Coulomb's law explained electricity. Maxwell's electromagnetic field theory explained electricity and magnetism. This led to the creation of optics, the study of light. +Light's speed usually stayed the same when measured by an observer travelling very almost as fast of light. Scientists thought that that would change based on how fast the observer was moving but it didn’t. This did not violate Galileo’s Principle of relativity that says the laws of mechanics work the same for all objects showing inertia. +Inertia means that when no force is applied to an object, the object keeps its velocity, which means it’s as fast as it is moving "and" going in the direction that it is going. An object is moving at a constant speed in the same direction direction, which isn’t moving at all, has inertia. This is called Galilean invariance—it doing what it normally does without changing —and is also called Galilean relativity since it’s impossible to tell whether so is not moving or moving all the time at the same speed. +Relativity theory. +Special relativity. +In 1905, Einstein's special theory of relativity explained both Maxwell's ideas about Electromagnetism and Galilean relativity by saying that the Speed of light is always the same but Space and Time aren’t. This means that when an object travels almost as fast as light, Time slows down. This is called Time dilation. Special relativity meant that Newton's theory—which said that space and time never change—couldn’t explain gravity. +Einstein said that being under either gravitation or moving at the same speed, feel like the same thing. +Einstein said Special relativity would work when the energy density across the three dimensions of space is the same. So when an object never speeds up, gravity works differently. +General relativity. +In 1915, Einstein's general theory of relativity explained gravitation with something called spacetime. Einstein said Time is one dimension and that Height, Length and Width are the three space dimensions. Even in everyday life, one says or at least means, "Meet me at building 123 Main Street intersecting Franklin Street in apartment 3D on 10 October 2012 at 9:00PM". If you don’t say the time, you go to the right place you don’t go to the event you’re trying to go to. —it is in the past or the future. +By converging space and time and presuming both relative to the energy density in the vicinity, and by setting the only "constant" or absolute as not even mass but as light speed in a vacuum, general relativity revealed the natural world's previously unimagined balance and symmetry. Every object is always moving at light speed along a straight line—its equivalent, on a curved surface, called "geodesic" or "worldline"—the one pathway of least resistance like a free fall through 4D spacetime whose geometry "curves" in the vicinity of mass/energy. +An object at light speed in a vacuum is moving at maximal rate through 3D space but exhibits no evolution of events—it is frozen in time—whereas an object motionless in 3D space flows fully along 1D time, experiencing the maximal rate of events' unfolding. The displayed universe is relative to a given location, yet once the mass/energy in that vicinity is stated, Einstein's equations predict what is occurring—or did occur or will occur—anywhere in the universe. The popularized notion that "relative" in Einstein's theory suggests "subjective" or "arbitrary" was to some regret of Einstein, who later thought he ought have to named it "general theory". +Cosmology. +The electromagnetic field's messenger particles, photons, carry an image timelessly across the universe while observers within this field have enough flow through time to decode this image and react by moving within 3D space, yet can never outrun this timeless image. The universe's state under 400 000 years after the presumed big bang that began our universe is thought to be displayed as the cosmic microwave background (CMB). +In 1915, the universe was thought to be entirely what we now call the Milky Way galaxy and to be static. Einstein operated his recently published equations of the gravitational field, and discovered the consequence that the universe was expanding or shrinking. (The theory is operable in either direction—time invariance.) He revised the theory add a "cosmological constant" to arbitrarily balance the universe. Nearing 1930, Edwin Hubble's telescopic data, interpreted through general relativity, revealed the universe was expanding. +In 1916 while on a World War I battlefield, Karl Schwarzschild operated Einstein's equations, and the Schwarzschild solution predicted black holes. Decades later, astrophysicists identified a supermassive black hole in the center of perhaps every galaxy. Black holes seem to lead galaxy formation and maintenance by regulating star formation and destruction. +In the 1930s, it was noticed that according to general relativity, galaxies would fall apart unless surrounded by invisible matter holding a galaxy together, and by the 1970s dark matter began to be accepted. In 1998 it was inferred that the universe's expansion, not slowing, is accelerating, indicating a vast energy density—enough to accelerate both visible matter and dark matter—throughout the universe, a vast field of dark energy. Apparently, under 5% of the universe's composition is known, while the other 95% is mysterious—dark matter and dark energy. +Quantum realm. +Strange mechanics. +By the 1920s, to probe the operating of the electromagnetic field at minuscule scales of space and time, quantum mechanics (QM) was developed. Yet electrons—the matter particles that interact with the photons that are the electromagnetic field's force carriers—would appear to defy mechanical principles altogether. None could predict a quantum particle's location from moment to moment. +In the slit experiment, an electron would travel through one hole placed in front of it. Yet a single electron would travel simultaneously though multiple holes, however many were placed in front of it. The single electron would leave on the detection board an interference pattern as if the single particle were a wave that had passed through all the holes simultaneously. And yet this occurred only when unobserved. If light were shone on the expected event, the photon's interaction with the field would set the electron to a single position. +By the uncertainty principle, any quantum particle's exact location and momentum cannot be determined with certainty, however. The particle's interaction with the observation/measurement instrument deflects the particle such that greater determination of its position yields lower determination of its momentum, and vice versa. +Field theory applied to quantum mechanics. +By extending quantum mechanics across a field, a consistent pattern emerged. From location to adjacent location, the probability of the particle existing there would rise and fall like a wave of probability—a rising and falling probability density. When unobserved, any quantum particle enters superposition, such that even a single particle fills the entire field, however large. Yet the particle is not "definitely" anywhere in the field, but there at a definite "probability" in relation to whether it was had been at the adjacent location. The waveform of Maxwell's electromagnetic field was generated by an accumulation of probabilistic events. Not the particles, but the mathematical form, was constant. +Setting the field to special relativity permitted prediction of the complete electromagnetic field. Thus arose relativistic quantum field theory (QFT). Of the electromagnetic field, it is relativistic quantum electrodynamics (QED). Of the weak and electromagnetic fields together, it is relativistic electroweak theory (EWT). Of the strong field, it is relativistic quantum chromodynamics (QCD). Altogether, this became the Standard Model of particle physics. +Division in physics. +When the Standard Model is set to general relativity in order to include mass, probability densities of infinity appear. This is presumed incorrect, as probability ordinarily ranges from 0 to 1—0% to 100% probability. Some theoretical physicists suspect that the problem is in the Standard Model, which represents each particle by a zero-dimensional point that in principle can be infinitely small. Yet in quantum physics, the Planck's constant is the minimum energy unit that a field can be divided into, perhaps a clue to the smallest size a particle can be. So there is a quest to "quantize" gravity—to develop a theory of quantum gravity. +Concept. +Framework. +String conjectures that on the microscopic scale, Einstein's 4D spacetime is a field of Calabi-Yau manifolds, each containing 6 space dimensions curled up, thus not extended into the 3 space dimensions presented to the classical realm. In string theory, each quantum particle is replaced by a 1D string of vibrating energy whose length is the Planck length. As the string moves, it traces width, and thus becomes 2D, a worldsheet. As a string vibrates and moves within the 6D Calabi-Yau space, the string becomes a quantum particle. With this approach, the hypothetical graviton—predicted to explain general relativity—emerges easily. +Theories. +String theory began as bosonic string theory, whose 26 dimensions act as many fewer. Yet this modeled only bosons, which are energy particles, while omitting fermions, which are matter particles. So bosonic string theory could not explain matter. Yet by adding supersymmetry to bosonic string theory, fermions were achieved, and string theory became "super"string theory, explaining matter, too. +Controversies. +Untestable—unscientific? +String theory's claim that all molecules are "strings of energy" has drawn harsh criticism. There are many versions of string theory, none quite successfully predicting the observational data explained by the Standard Model. M theory is now known to have countless solutions, often predicting things strange and unknown to exist. Some allege that string theorists select only the desired predictions. +The allegation that string theory makes no testable predictions is false, as it makes many. No theory—a predictive and perhaps explanatory model of some domain of natural phenomena—is verifiable. All conventional physical theories until the Standard Model have made claims about unobservable aspects of the natural world. Even the Standard Model has various interpretations as to the natural world. When the Standard Model is operated, it is often made a version with supersymmetry, doubling the number of particle species so far identified by particle physicists. +None can literally measure space, yet Newton postulated absolute space and time, and Newton's theory made explicit predictions, highly testable and predictively successful for 200 years, but the theory was still falsified as explanatory of nature. Physicists accept that there exists no such attractive force directly attracting matter to matter, let alone that the force traverses the universe instantly. Nevertheless, Newton's theory is still paradigmatic of science. +Hidden dimensions? +The idea of hidden dimensionality of space can seem occult. Some theorists of loop quantum gravity—a contender for quantum gravity—regard string theory as fundamentally misguided by presuming that space even has a shape until particles shape it. That is, they do not doubt that space takes various shapes, simply regard the particles as determining space's shape, not the other way around. The spacetime vortex predicted by general relativity is apparently confirmed. +If interpreted as naturally true, the Standard Model, representing a quantum particle as a 0D point, already indicates that spacetime is a sea of roiling shapes, quantum foam. String theorists tend to believe nature more elegant, a belief that loop theorist Lee Smolin dismisses as romantic while using biology's Modern Synthesis as a rhetorical device. Experiments to detect added spatial dimensions have so far failed, yet there is still the possibility that signs of them can emerge. +So many solutions? +M theory has many trillions of solutions. Leonard Susskind, a leader of string theory, interprets string theory's plasticity of solutions as paradoxical support resolving the mystery of why "this" universe exists, as M theory shows it but a variant of a general pattern that always approximately results. +General relativity has brought many discoveries that in 1915 were all but unimaginable except in fiction. A solution of Einstein's equations that sought to explain quantum particles' dynamics, the Einstein-Rosen Bridge predicts a shortcut connecting two distant points in spacetime. Commonly called a wormhole, the Einstein-Rosen Bridge is doubted but not disproved, showing either that not all consequences of a theory must be accurate or that reality is quite bizarre in ways unobservable. +Many worlds. +Even the Standard Model of particle physics suggests bizarre possibilities that populist accounts of science either omit or mention as unexplained curiosities. The theory conventionally receives the Copenhagen interpretation, whereby the field is only "possibilities", none real until an observer or instrument interacts with the field, whose wavefunction then collapses and leaves only its particle function, only the particles being real. Yet wavefunction collapse was merely assumed—neither experimentally confirmed nor even mathematically modeled—and no variance from either the wavefunction in the quantum realm or the particle function in the classical realm has been found. +In 1957 Hugh Everett described his "Relative state" interpretation. Everett maintained that the wavefunction does not collapse, and since all matter and interactions are presumed to be built up from quantum waveparticles, all possible variations of the quantum field—indicated by the mathematical equations—are "real" and simultaneously occurring but different courses of history. By this interpretation, whatever interacts with the field joins the field's state that is "relative" to the observer's state—itself a waveform in its own quantum field—while the two simply interact in a universal waveform never collapsing. By now, many physicists' interpretation of the apparent transition from the quantum to the classical realms is not wavefunction collapse, but quantum decoherence. +In decoherence, an interaction with the field takes the observer into only one determinant constellation of the quantum field, and so all observations align with that new, combined quantum state. Everett's thesis has inspired Many worlds interpretation, whereby within our universe are predicted to be virtually or potentially infinite parallel worlds that are real, yet each a minuscule distance from the other worlds. As each world's waveform is universal—not collapsing—and its mathematical relations are invariant, parallel worlds simply fill the gaps and do not touch. +Many universes. +Einstein doubted that black holes, as predicted by the Schwarzschild solution, are real. Some now conjecture that black holes do not exist as such but are dark energy, or that our universe is both—a black hole and dark energy. The Schwarzschild solution of Einstein's equations can be maximally extended to predict a black hole having a flip side—another universe emerging from a white hole. Perhaps our universe's big bang was half of a "big bounce", something's collapse down to a black hole, and our universe popping out its other side as a white hole. +Particles are strings? +Physicists widely doubt that quantum particles are truly 0D points as represented in Standard Model, which offers "formalism"—mathematical devices whose strokes predict phenomena of interest upon input of data—not "interpretation" of the mechanisms determining those phenomena. Yet string theorists do tend to optimistically conjecture that the strings are both real and explanatory, not merely predictive devices. It is far beyond the capacity of today's particle accelerators to propel any probing particles at energy levels high enough to overcome a quantum particle's own energy and determine whether it is a string. Yet this limitation also exists on testing other theories of quantum gravity. Developments suggest other strategies to "observe" the structure of quantum particles. +Paradoxically, even if testing confirmed that particles are strings of energy, that still would not conclusively prove even that particles are strings, since there could be other explanations, perhaps an unexpected warpage of space although the particle was a 0D point of true solidity. Even when predictions succeed, there are many possible explanations—the problem of underdetermination—and philosophers of science as well as some scientists do not accept even flawless predictive success as verification of the successful theory's explanations if these are posed as offering scientific realism, true description of the natural world. +Matter is energy? +Talk of particle physicists testing theoretical physicists' predicted particles by colliding particles in accelerators suggests that quantum particles are tiny Newtonian particles that experimentalists "crack" open to reveal their structure. Instead, when two particles, each of a certain mass—measured in terms of "energy" as electronvolts—are collided, they can combine into a particle of that combined mass/energy, and the generated particle is "observed" for correspondence with the prediction. +It is not controversial among physicists that all particles are "energy". Loop theorists, sometimes in rivalry with string theory, claim that spacetime itself converts into the particles. Matter's being a special variant of energy was a consequence of Einstein's special theory of relativity, and thereupon Einstein formalized the mass-energy equivalence, E=mc2. When sufficiently energetic photons collide, they can combine and generate matter—matter creation. All particles have antiparticles, and atoms of matter have antiatoms of antimatter, whose union annihilates the particles and matter while leaving energy. +Developments. +An inspiring development is discovery of mirror symmetry, whereby Calabi-Yau spaces tend to come in pairs such that solutions previously difficult within the extreme vibrational mode of one string can be solved by through the mirror Calabi-Yau space's geometry in its opposite range. +String theory is usually solved through conformal field theory, a quantum field theory on 2D space. It is confirmed that molecules can collapse to 2D. And the electron, long presumed an elementary particle, apparently splits into three entities separately carrying the electron's three degrees of freedom when the molecules that contain the electrons are channeled through a 1D pathway. +Notes. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Substance.txt b/.github/workflows/data/simplewiki-500/Substance.txt new file mode 100644 index 000000000..36fb60c38 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Substance.txt @@ -0,0 +1,7 @@ +Substance is the material, or matter, of which something is made. Substances are physical things that can be seen, touched, or measured. They are made up of one or more elemental parts. Iron and aluminium, which are pure, water and air, which are mixtures; are all examples of substances. +Problems of definition. +The main problem of a clear definition of what the substance is that if, for example, to consider not just the universe (cosmos), being and non-being, and in general all, the question arises, what is the constant basic principle (attribute) is the basis of the substance, which generally consists of all (that is, matter, mind, senses, space, soul, and so on). +History of the concept. +The Latin word "substantia" - a translation of the Greek word for the essence ("ousia"), and in Latin to describe the essence of using the word "essentia". In ancient philosophy substance is treated as a substrate, the first principle of all things (for example, "water" of Thales, the "fire" of Heraclitus). +In modern times, the concept of substance is treated and spread widely. The first view is connected with an ontological understanding of substance as ultimate bases being (Francis Bacon, Benedict Spinoza, Gottfried Wilhelm Leibniz). Central category of metaphysics in philosophy substance is identified as with God and with nature and determined as the cause of itself (Latin, "causa sui"). The main characteristics (attributes) of a substance from Benedict Spinoza are thinking and stretch. By analogy with the philosophy of Benedict Spinoza substance considered in the light of the concept of René Descartes and Leibniz. The first substance is a unity of subject and object, and the second - the same atoms are simple beings who lose their stretch, but receive attribute aspirations (French, "appetitio"n) and multiplicity. Thanks Leibniz substance begins to associate with matter. +The second point of view on the substance - an epistemological understanding of the concept, its capabilities and the need for scientific knowledge (John Locke, David Hume). Immanuel Kant believed that the law under which any change in the substance of events and the number of stored it in nature remains the same, can be attributed to the "analogies of experience." Georg Wilhelm Friedrich Hegel defined substance as the integrity of changing, transient side of things, as a "major step in the development of the will." For Arthur Schopenhauer substance - matter for David Hume - a fiction, the coexistence properties. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Subtraction.txt b/.github/workflows/data/simplewiki-500/Subtraction.txt new file mode 100644 index 000000000..a599e9589 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Subtraction.txt @@ -0,0 +1,15 @@ +Subtraction is the arithmetic operation for finding the difference between two numbers, though it can also be generalized to other mathematical objects such as vectors and matrices. The names of the numbers in a subtraction expression are: formula_1. For example, the expression formula_2 can be read as "seven minus four equals three", "seven take away four leaves three", or "four from seven leaves three". +If the minuend is less than the subtrahend, the difference will be a negative number. For example, formula_3. This can be read as "seventeen minus twenty-five equals negative eight". +Subtraction is how cash registers determine the change a buyer receives, when the buyer pays with more money than the purchase cost. +Properties. +Anti-commutativity. +Subtraction is anti-commutative, meaning that swapping the numbers around the minus sign will give a number with the same magnitude, but the opposite sign (opposite number): +formula_4 +Non-associativity. +Subtraction is 'not' associative, which comes up when one tries to define repeated subtraction. In general, the expression +formula_5 +means formula_6 or formula_7, but these two possibilities lead to different answers. To resolve this issue, one must establish an order of operations, with different orders yielding different results. +Predecessor. +In the context of integers, subtraction of one also plays a special role: for any integer formula_8, the integer formula_9 is the largest integer that is smaller than formula_8, also known as the predecessor of formula_8. +References. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Suggestion.txt b/.github/workflows/data/simplewiki-500/Suggestion.txt new file mode 100644 index 000000000..fd9b6fba3 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Suggestion.txt @@ -0,0 +1,4 @@ +A suggestion is an idea that one suggests, or says is good for another (or others) to follow. Some people may agree to it, and some may disagree. If they disagree or have a different suggestion, the person who first suggested the idea will usually discuss with the other people and find a good conclusion that satisfies both and is good. A suggestion is someone's opinion on how to do any task, but a person is not necessarily expected to do it. +References. +<templatestyles src="Reflist/styles.css" /> + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Summary.txt b/.github/workflows/data/simplewiki-500/Summary.txt new file mode 100644 index 000000000..72bb7277c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Summary.txt @@ -0,0 +1,8 @@ +A summary is a condensed explanation of an event, story, document, etc.. i.e. "summing up the facts." They are not constrained to any medium or topics. Not to be confused with abstract, which is a summary of a document. There are many different levels of summarization that can be done. The summarizer may choose any length, but the sumarees may not appreciate anything more than absolutely necessary to get the required facts. +Summaries help to spread information fast. They also help people make decisions on if it is something worth looking further into. +EXAMPLES +A quick "good/bad" can suffice in some situations. In other situations, the summary may rival the length of the original. +"This book was really cool. This guy drives a pickup to work everyday, and has a dangerous job." +Many scientific journals publish a summary for every large article so people who do not have much time can read the main information quickly without spending too much time reading the article. +References. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Supernatural.txt b/.github/workflows/data/simplewiki-500/Supernatural.txt new file mode 100644 index 000000000..e9f2d252b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Supernatural.txt @@ -0,0 +1,4 @@ +The word supernatural (from ) is used for things that some people believe are real, but that are not part of nature or can’t be explained by the scientific laws of nature. Because we cannot prove whether these things are real, people often disagree about these things. +Some say that we should talk about things without talking about the supernatural, because we cannot prove that supernatural things are real. Other people say that although we cannot prove supernatural things in a scientific way, they are real. Some examples of supernatural things or examples are: +Related pages. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Symbol.txt b/.github/workflows/data/simplewiki-500/Symbol.txt new file mode 100644 index 000000000..dbf6406e8 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Symbol.txt @@ -0,0 +1,5 @@ +A symbol is a drawing, shape, or object that represents an idea, object, or amount of something. +The most common symbols are letters, which are symbols of words and sounds. A symbol can be an actual object (such as the cross, a symbol of Christianity or a scepter, a symbol of royalty and power), or a certain color or pattern. Symbols are used often in poetry and other types of literature, sometimes as metaphors or similes. +A national emblem is a symbol for a certain country. +List of common symbols. +There are thousands of symbols that are recognized by most people all over the world, and many more that are limited to certain regions, religions, sciences, etc.. Some of the best known ones are listed below. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Synagogue.txt b/.github/workflows/data/simplewiki-500/Synagogue.txt new file mode 100644 index 000000000..20167f185 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Synagogue.txt @@ -0,0 +1,10 @@ +A synagogue is a place where Jews meet to worship and pray to God. +In Hebrew, a synagogue is called "beit knesset", which means, a "house of gathering". The word "synagogue" comes from "sunagoge", which is a Greek word. In a synagogue, Jews carry out the Jewish services, which consist of prayers, sometimes with special actions. +A synagogue will usually have a large room for prayers. There might be some smaller rooms for studying. There will be some offices. There will also usually be a big room for special events. +The front of a synagogue faces towards Jerusalem in Israel. In the front is the holiest part of the synagogue, the Ark. This is a closet which has the Torah scrolls inside. The Torah scrolls have the holy writings of Judaism on them. The Ark usually has a curtain in front of it. +On top of the Ark is light which is always lit, called the “Eternal Lamp”. It is a symbol which means that God is always there. +Every synagogue has a raised platform called the “Bimah”. The person who reads the Torah scroll stands there when he reads. The Bimah is either in the middle of the hall, or in front of the Ark. +In some synagogues men and women sit in different places. Some synagogues even have a short wall so that they can not see each other. This is so that the people will think about the prayers better. +Jews may call synagogues by different names. Many Orthodox and Conservative Jews living in English-speaking countries use the name "synagogue" or the word "shul", which is Yiddish. Jews who speak Spanish or Portuguese call synagogues "esnoga". Some Jews call the synagogue a temple. +Jewish worship does not have to be carried out in a synagogue. It can be wherever a minyan of ten Jews are. It could be in someone's home or anywhere such as a cruise liner or an airplane. Some synagogues have a separate room or torah study, this is called the "beth midrash" meaning house of study. Some kinds of Jewish worship can be done alone or with fewer than ten people. +Synagogues are places were Jews can worship. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Systeme internationale.txt b/.github/workflows/data/simplewiki-500/Systeme internationale.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Table.txt b/.github/workflows/data/simplewiki-500/Table.txt new file mode 100644 index 000000000..92dd1fd1b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Table.txt @@ -0,0 +1,2 @@ +Table may mean one of these: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Taiwan.txt b/.github/workflows/data/simplewiki-500/Taiwan.txt new file mode 100644 index 000000000..43f2122f8 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Taiwan.txt @@ -0,0 +1,34 @@ +Taiwan, officially the Republic of China (ROC; Chinese: 中華民國; pinyin: Zhōnghuá Mínguó), is a disputed island country off the coast of China in East Asia. The Republic of China once governed all of China (from 1911 to 1949) but moved to the island of Taiwan after a Chinese civil war. +The ROC includes the main island of Taiwan plus nearby islands (Pescadores islands and parts of Fujian). Taiwan is located southeast of the Chinese mainland, south of Japan, and north of the Philippines. The capital is Taipei. +Taiwan has also been called Formosa, a Portuguese name which means "beautiful" in Portuguese. +Most people living in Taiwan (called Taiwanese) are Han. Taiwan has three large Han groups. They speak different dialects (variations) of Chinese, and their ancestors came from different places: the Southern Fujianese (from China's Fujian Province), the Hakka (from China), and Mainlanders (from Mainland China after 1948). +There are also Taiwanese Aborigines (native tribes) who lived in Taiwan before the Han came to live there. +The largest cities in Taiwan are the capital, Taipei, and the port city of Kaohsiung. +Status of Taiwan. +There are two Chinese governments: The People's Republic of China (PRC) and the Republic of China (ROC). Today, in reality, the PRC government controls mainland China, and the ROC government governs Taiwan. The ROC government governed most of China mainland from 1911 to 1949, before losing control of China mainland to the PRC. The ROC constitution still claims ownership of all of China. +The People's Republic of China claims ownership of Taiwan, but it has never ruled over the island of Taiwan. The last time Taiwan and the mainland were united under one government was under the rule of the ROC. +Although Taiwan's status prevents it from participating in some international organizations, polls show that most Taiwanese prefer to keep things as they are (referred to as the status quo), rather than declare formal independence (and risk inviting an attack by communist China), or to be "reunified" with China. +Most countries of the world recognize the People's Republic of China as China. Although Taiwan is not recognized by the UN as a sovereign nation, most countries still have close economic and cultural relations with Taiwan. Countries often set up de facto embassies in Taiwan — officially non-government organizations — that perform the same functions as an embassy. +In 1992, the ROC and PRC agreed to a consensus that there was only "one China" but that both sides could continue to disagree on what that meant. +In March 2004, China's government passed a law called the Anti-Secession Law. The law requires the Chinese military to invade Taiwan immediately if they declare independence. Tsai Ing-wen, the elected President of Taiwan, says Taiwan is already an independent country and does not need to declare independence. +General Secretary of the Chinese Communist Party Xi Jinping, has vowed "reunification" with Taiwan by any means, including through military force. Joe Biden, President of The United States, has said that the US will defend Taiwan from Chinese attack. Australia has said they would join the US, and Japan has indicated they may as well. +Polls show a majority of people in Taiwan want to never be a part of the People's Republic of China. Some of these people believe in complete Taiwan independence and want to rename the ROC (Taiwan) to "Republic of Taiwan" so Taiwan can participate in international affairs. Most others want the "status quo", which means keeping everything the way it is now. A small minority wish to someday unite with the People's Republic of China; they want Chinese reunification. +Geography. +The island of Taiwan is about 180 kilometers off the southeastern coast of China. It is across the Taiwan Strait. It has an area of . +The East China Sea is to the north, the Philippine Sea to the east, the Luzon Strait directly to the south and the South China Sea to the southwest. +Taiwan's highest point is Yu Shan (Jade Mountain). It is 3,952 meters high (12,966 ft). There are five other peaks over 3,500 meters. +West of Taiwan Island, there are three small groups of islands that also belong to ROC. They are: +Cities. +The largest cities in Taiwan are: +Administrative divisions. +There are administrative divisions in different levels and types. +157 Districts (區 qū ㄑㄩ), 17 Country-controlled cities (縣轄市 xiànxiáshì ㄒㄧㄢˋㄒㄧㄚˊㄕˋ), 41 Urban Townships (鎮 zhèn ㄓㄣˋ), and 153 Rural Townships (鄉 xiāng ㄒㄧㄤ) stand the 3rd level. Districts stand under either Special municipalities or Provincial cities; Country-controlled cities, Urban Townships, and Rural Townships stand under Counties. +Villages (里 lǐ ㄌㄧˇ or 村 cūn ㄘㄨㄣ) stand the 4th level, and Neighborhoods (鄰 lín ㄌㄧㄣˊ) stand the 5th level. +Language. +Most Taiwanese people speak Standard Chinese known as Mandarin, and others speak local dialects such as Min Nan (Taiwanese) or Hakka. The Cantonese language, spoken in parts of southern China (for example, the province of Guangdong, Hong Kong and Macau), is not spoken in Taiwan. A small percentage of Aboriginal Taiwanese speak aboriginal languages, but the rest of the Chinese people have treated them badly, and many of these people and their languages, struggle to survive. Some older Taiwanese people who went to school while the country was under Japanese rule can speak Japanese. +After the Nationalist government fled the Mainland in 1949, they brought Mandarin and promoted it in Taiwan. Then everyone in the ROC had to learn Mandarin. But, unlike the people in Mainland China, the Taiwanese never changed to simplified Chinese characters and so they have always used traditional Chinese characters. In the past, students were not allowed to speak their first language in school and were expected to speak only Mandarin. Taiwanese, Hakka, and native languages were considered bad until the early 1990s, when education in these languages began to be taught in some school systems. They were promoted, but by this time, many young people could speak only Mandarin. +Currently, nearly one third of Taiwanese report knowing some amount of English. Full English fluency is not common, however. The government plans to expand English education and make it an official language by 2030. +Notes. +<templatestyles src="Reflist/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Taxonomy.txt b/.github/workflows/data/simplewiki-500/Taxonomy.txt new file mode 100644 index 000000000..ff871584b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Taxonomy.txt @@ -0,0 +1,20 @@ +Taxonomy is a branch of biology. It is about the laws and principles of classifying living things. From one type of taxonomy, many classifications might be produced. +Classification. +The best-known kind of taxonomy is used for the classification of lifeforms (living and extinct). Each organism has a scientific name. This name is part of the biological classification of that species. The name is the same all over the world, so scientists from different places can understand each other. In addition, a species has a position in the tree of life. Thus the crow is "Corvus corone", a member of the Corvidae family, and they are passerine birds. That is well agreed, but the classification of some groups is not agreed at present, and often several classifications are being discussed. +Living things are classified into three domains: bacteria, archaea and eukaryotes. The highest rank in a domain is the kingdom. Each kingdom has many smaller groups in it, called phyla. Each phylum has more smaller groups in it, called classes. This pattern looks like branches on a tree with smaller branches growing from them. Each species is put into a group because of what it does, how and what it eats, special body parts, and so on. At the end of the pattern, the groups (genera) are very small. Then each species in the genus is given its own name. +Binomial nomenclature. +When someone writes about a living thing and its formal scientific name, they write the genus and species name. This is known as binomial nomenclature, because it uses two names for each organism. The first is the genus name, and the second is the species in that genus. The scientific name of the domestic cat is "Felis catus". Sometimes it is enough to write "F. catus". +These are the major groups (ranks) used in taxonomy: +Kingdom --> Phylum --> Class --> Order --> Family --> Genus --> Species +Usage of Latin. +When people started naming species, Latin was a language widely used in Europe. All species names are still written in Latin. This has some advantages. Since Latin is no longer spoken, it is unchanging, and is owned by no-one. It gets over the problem of every language having its own names for animals and plants. +Scientists used to write the official description of each new species in Latin. On 1 January 2012, the International Botanical Congress changed to allow English (as well as Latin) for describing new plant species. The International Code of Zoological Nomenclature recommends choosing a language that is widely used, and that is used in the places where the species lives. +Cladism. +An important modern approach to taxonomy is cladism. This approach is based on the branching (tree-like) course of evolution. Like traditional Linnaean classification, it uses traits to decide on the branches of the classification. It insists on groups being monophyletic. This has the effect that birds are not a class but a sub-group of dinosaurs. It also means the ranking system described above would be abolished. +So cladism has different principles of taxonomy, and produces a different kind of taxonomy. Decisions, where possible, are supported by DNA sequence analysis. Present-day biological classification is a mixture of the old Linnaean and the modern cladistic principles of taxonomy. In parts, it is changing rapidly. The classifications presented in Wikipedia at present are often a compromise between the two systems. The details are regularly discussed. +Turmoil in taxonomy. +Today, there are many changes in the classification of living things. This turmoil in taxonomy has led to many alternative classifications. It is caused partly from the move from Linnaean to cladistic principles, and partly by the use of DNA sequence data in taxonomy. An example is: the way derived groups like birds should not be classified at the same level as the group they evolved from. Yet birds have traditionally been a class under the Linnaean system. +The turmoil sometimes results in differences between related pages. Pages may rely on different references and different authors' opinions as to the present best arrangement. +The following source is good on the differences between cladistic and taxonomic classification systems: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Temple.txt b/.github/workflows/data/simplewiki-500/Temple.txt new file mode 100644 index 000000000..def82fc51 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Temple.txt @@ -0,0 +1,5 @@ +A temple is a building where people go to practice their religion. In a temple people may perform religious rituals, ceremonies, and pray. Thus, a temple is a general term for a house of worship. Christians usually call their religious buildings churches. +Some examples of temples from different religions: +Other websites. + Media related to at Wikimedia Commons + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Ten Commandments.txt b/.github/workflows/data/simplewiki-500/Ten Commandments.txt new file mode 100644 index 000000000..484a85988 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Ten Commandments.txt @@ -0,0 +1,70 @@ +The Ten Commandments are a set of rules or laws. The Bible says that God gave them to the people of Israel. The commandments exist in different versions. One version can be found in the Book of Exodus of the Bible. Another version can be found in the Book of Deuteronomy. In the Book of Exodus, the mountain where they were given is called Mount Sinai, the Book of Deuteronomy talks about Mount Horeb (the same Mount Horeb where God called Moses from the burning bush, Exodus 3:1-3). Both are probably names for the same mountain. The laws were written on stone tablets. These laws are important for Judaism and Christianity. Countries which follow those religions often have some of the commandments as part of their Civil laws. +Sometimes these rules are also called Decalogue (from Greek, can be translated as "ten statements"). The name decalogue first occurs in the Septuagint. The Israelites received the commandments after they had left Egypt during the reign of Pharaoh Thutmose III. There are different texts talking about the commandments. Most of them are in the Bible: The Book of Exodus, Chapter 20 and the book of Deuteronomy, Chapter 5. The Qu'ran mentions the tablets but does not list exactly the same commandments. For instance Quran 17:23-39 began with worshipping God alone and honouring your parents. +The Exodus version (from the English Standard Version of the Bible +Ten Commandments in the Old Testament Torah. +The Ten Commandments in Deuteronomy Chapter 5: verses 1-22 New King James Version +5 And Moses called all Israel, and said to them: “Hear, O Israel, the statutes and judgments which I speak in your hearing today, that you may learn them and be careful to observe them. 2 The Lord our God made a covenant with us in Horeb. 3 The Lord did not make this covenant with our fathers, but with us, those who "are" here today, all of us who "are" alive. 4 The Lord talked with you face to face on the mountain from the midst of the fire. 5 I stood between the Lord and you at that time, to declare to you the word of the Lord; for you were afraid because of the fire, and you did not go up the mountain. "He" said: +6 ‘I "am" the Lord your God who brought you out of the land of Egypt, out of the house of bondage. +7 ‘You shall have no other gods before Me. +8 ‘You shall not make for yourself a carved image—any likeness "of anything" that "is" in heaven above, or that "is" in the earth beneath, or that "is" in the water under the earth; 9 you shall not bow down to them nor serve them. For I, the Lord your God, "am" a jealous God, visiting the iniquity of the fathers upon the children to the third and fourth "generations" of those who hate Me, 10 but showing mercy to thousands, to those who love Me and keep My commandments. +11 ‘You shall not take the name of the Lord your God in vain, for the Lord will not hold "him" guiltless who takes His name in vain. +12 ‘Observe the Sabbath day, to keep it holy, as the Lord your God commanded you. 13 Six days you shall labor and do all your work, 14 but the seventh day "is" the Sabbath of the Lord your God. "In it" you shall do no work: you, nor your son, nor your daughter, nor your male servant, nor your female servant, nor your ox, nor your donkey, nor any of your cattle, nor your stranger who "is" within your gates, that your male servant and your female servant may rest as well as you. 15 And remember that you were a slave in the land of Egypt, and the Lord your God brought you out from there by a mighty hand and by an outstretched arm; therefore the Lord your God commanded you to keep the Sabbath day. +16 ‘Honor your father and your mother, as the Lord your God has commanded you, that your days may be long, and that it may be well with you in the land which the Lord your God is giving you. +17 ‘You shall not murder. +18 ‘You shall not commit adultery with somebody’s spouse. +19 ‘You shall not steal. +20 ‘You shall not bear false witness against your neighbor. +21 ‘You shall not covet your neighbor’s wife; and you shall not desire your neighbor’s house, his field, his male servant, his female servant, his ox, his donkey, or anything that "is" your neighbor’s.’ +22 “These words the Lord spoke to all your assembly, in the mountain from the midst of the fire, the cloud, and the thick darkness, with a loud voice; and He added no more. And He wrote them on two tablets of stone and gave them to me. +Differences in teachings and interpretation. +These commandments are translated from ancient Hebrew to Basic English, so the exact words chosen may not mean to us exactly what they meant to the Hebrews. There are different interpretations of these commandments: +Images. +The Roman Catholics understanding of the commandment to not make "any image, or any likeness of any thing that is in heaven above" means that "likenesses" may be built and used, as long as the object is not worshipped as an idol. +The Eastern Orthodox Church has a very similar position. Eastern Orthodoxy teaches that the incarnation of an invisible God as a visible human, Jesus, makes it alright to use flat images in worship (see Iconoclasm). +Most other Christians allow statues of religious figures, provided there is no "veneration" of them. They are not commonly found in Protestant Churches, but may be found nearby or in Museums. Historical figures or busts may be used for educational purposes. Stained glass windows may contain depictions of honored historical or Biblical persons. +Judaism in its various forms usually takes a position somewhere between the Protestant view and that of Islam. Synagogues would not have any statues in them. Images of God are forbidden anywhere. +Islam forbids any images whatsoever of Allah (God) or persons, including Mohammad. That is why their buildings are generally decorated with calligraphy but never depictions of living beings. +Jehovah's Witnesses criticize the use of all of the above, as well as the use of the cross. +The Amish forbid any sort of image, such as photos. +Using God's name improperly. +This can be understood to mean cursing or using profanity which includes the name of God. +Many languages have expressions of anger or dismay that include the word "God". In addition, many times people "swear to God" to try to convince others they are telling the truth. Another offense might be to say that "God told me" to do something when He didn't. The actual name of God in the Old Testament was YHWH, sometimes pronounced Yahweh or Jehovah. Pious Jews refrain from using this name or even the word God, for which they substitute G_d. This is to avoid using God's name in a way that might break this commandment. +Another belief is that the original text translates to "Do not carry the Name of the LORD in vain." This means to not do evil in the Name of God. +Sabbath day. +Jews honor the Sabbath "(Shabbat)" from sundown on Friday until the appearance of three stars in the sky on Saturday night, the seventh day of the week on the Jewish calendar. +In the New Testament Jesus did things that made the Sabbath command different from the other nine. Jesus seemed to reduce its demands, unlike some other commandments where he made them stronger. Jesus was often criticized for healing on the Sabbath or doing other things. He said that "the Sabbath was made for man, and not man for the Sabbath". Doing good on the Sabbath seemed to be praised and practiced by Jesus. In that way he disobeyed some of the strict interpretations that had become common in His day. +Most Christians honor the Sabbath on Sunday to remember the Resurrection of Jesus on the first day of the week on the Jewish calendar. +Some conservative Christians are "Sabbatarians" (most of these follow the Reformed traditions). Sabbatarians think the first day of the week or "Lord's Day" is the new Sabbath, because the 4th commandment has never been removed. They also say that the Sabbath law was given when the world was made. It came before the ten commandments were given. +Others believe that the Sabbath remains as a day of rest on Saturday, while Sunday as a day of worship, in reference to Acts 20:7: the disciples came together on the first day of the week to break bread and to hear the preaching of the apostle Paul. Also, Jesus appeared to his followers on the "first day of the week" while they were in hiding. +The Seventh-day Adventist Church, and some others, believe that the custom of meeting for worship on Sunday originated in paganism, specifically Sol Invictus and Mithraism (in which sun god worship took place on Sunday). Instead, Adventists keep Saturday as the Sabbath as a memorial to God's work of creation believing that none of the Ten Commandments can ever be destroyed. Seventh-day Sabbatarians claim that the seventh day Sabbath was kept by the majority of Christian groups until the 2nd and 3rd century, but because of opposition to Judaism after the Jewish-Roman wars, the original custom was gradually replaced by Sunday as the day of worship. +There are also some Christians who believe the Sabbath is still Friday sundown to Saturday sundown, but that you don't need to be religious about it. They find no evidence that the Commandment changed and they still view it as a day of rest from labor. They agree with Jesus's teaching that it's lawful to do good on the Sabbath (Matthew 12:12) and that the Sabbath was made for man, not man for the Sabbath (Mark 2:7). They believe the use of Acts 20:7 is a misinterpretation, as the Sabbath isn't about fellowship. In Acts 2 it discusses how the Christians gathered in their homes, streets, and the temple every day for the breaking of bread, which would make the Sabbath every day if the Sabbath was about gathering. +Married relations. +To "be false to the married relation", called adultery, is when a married person has sexual relations with a person other than his or her spouse. Having sex outside of marriage is fornication and is also sin. It is condemned in other places in the Bible, but not specifically in the Ten Commandments. Jesus taught his audience that the outward act of adultery does not happen apart from sins of the heart: "From within people, from their hearts, come evil thoughts, unchastity, theft, murder, adultery, greed, malice, deceit, licentiousness, envy, blasphemy, arrogance, folly. All these evils come from within and they defile.” In The New Testament Jesus says "But I say unto you, That whosoever looketh on a woman to lust after her hath committed adultery with her already in his heart." +Killing or murder. +There are different translations of this commandment; the Hebrew words are translated either as "thou shalt not kill" or "thou shalt not murder". Older Protestant translations of the Bible, those based on the Vulgate and Roman Catholic translations usually translate it "Thou shalt not kill". The Catholic Church believes that endangerment of human life or safety is a mortal sin that breaks The Fifth Commandment. Furthermore, the Catholic Church does not believe in a difference between murder and manslaughter the way the law does. With the exceptions of killing in self-defense (a form of manslaughter in many nations' laws) and killing in war, the Catholic Church believes all other forms of killing or attempting to kill violate The Fifth Commandment. Unsafe driving could also lead to unintentional killing. Jewish and newer Protestant versions tend to use "You shall not murder". There are different opinions as to which translation is more faithful to the original. +The many examples in the Old Testament of killing sanctioned by God, are quoted in defense of the view that "murder" is more accurate. Furthermore, the Hebrew word for "kill" is " - "harog"", while the Hebrew word for "murder" is " - "retzach", which is found in the Ten Commandments " - "lo tirtzach". +Stealing. +Many theologians (such as German Old Testament scholar Albrecht Alt:: "Das Verbot des Diebstahls im Dekalog" (1953)) suggest that the commandment "you shall not steal" was originally intended against stealing people—abductions and slavery. This would be the same as the Jewish interpretation of the statement as "you shall not kidnap". Civil laws in most countries list many types of stealing. These include burglary, embezzlement, looting, robbery, shoplifting or fraud. The penalties depend on the value of the thing stolen, and if violence was used to take it. +In some places stealing horses brought a death penalty. That is because it could cause danger or even death to the horse's owner who could no longer do necessary travel. Poaching is the illegal killing of wild animals. Especially in modern times, money is often stolen by trickery or keeping false bank or debt records. In the 21st century this can be done using computers. This is called "White-collar crime". +Some societies have attempted to say that no property is "private" but everything belongs to the whole society. If this were ever put in practice, it would make stealing impossible, but it has not been fully practiced anywhere. +False witness. +To "give false witness" would include lying in court which is called perjury. Telling false gossip which harms someone is similar. Some think this commandment includes all lying. It is to knowingly give any false statement. Others allow a white lie. Some Jewish teachers said that not all lying is false witness (perjury). They say that lying is sometimes "permissible or even commendable". This would include changing the truth to be modest or to avoid harm to someone. Saint Augustine believed that some lies could be pardoned, and that there were in fact occasions when lying would be the right thing to do. He says that lies which hurt nobody and benefit someone may be forgiven. These need to used with great caution, however. +Different numbering. +The Bible does not number the commandments. Different religious groups have numbered them in different ways. The Jews, followed by Christian Protestants, end the first commandment with "You are to have no other gods but me." as above. Catholics and Lutherans end the first commandment at "I will have mercy through a thousand generations on those who have love for me and keep my laws." and separate in their last two commandments the desire for a man's wife from the desire for other things he owns. +The commandments passage in Exodus has more than ten important statements, there are 14 or 15 in all. While the Bible itself gives the count as "10", using the Hebrew phrase "ʻaseret had'varim"—translated as "the 10 words", "statements" or "things", this phrase does not appear in the passages usually presented as being "the Ten Commandments". Various religions divide the commandments differently. The table below shows those differences. +Notes: +The Ritual Decalogue. +The "Ten Commandments" usually means the list mentioned in Exodus 20 and Deuteronomy 5. Another set of commandments is given in Exodus 34. A story starts in Exodus 31:18. There the stones with the commandments written on them are created. Exodus 32:19 tells how the stones are broken. The commandments in Exodus 34 are sometimes called "Ritual Decalogue". That is because the are about religious rituals and not moral commands. +Johann Wolfgang von Goethe and some others believed that the book of Exodus is a combination of several different texts. These people thought that the commandments in Exodus 20 and Deuteronomy 5 show a later set of Ten Commandments. They say that the ten ritual commandments in Exodus 34 were the original Ten Commandments. The say that the moral ones came later. +Influence. +The commandments have influenced Jewish ethics and law and, through Judaism and Christianity, Western ethics and law since the Roman Empire. Historically monuments containing the Commandments have been placed outside courts of law. In the early 21st century some have been challenged or removed as a violation of freedom of religion. +Christians disagree somewhat as to the purpose of the commandments. In the Sermon on the Mount, Jesus states that He came to "fulfill" the Law rather than destroy it. He reinforces the commands about murder and adultery. He also says that the righteousness of His followers must be higher than that of the "scribes and pharisees". They were very strict in observing the Ten Commandments. +Saint Paul, in his letter to the Roman Christians, says the purpose of the Law is to show us how sinful we are. It acts as a "schoolmaster" to bring us to Christ for salvation. The leaders of the Reformation said that this means that keeping the Ten Commandments could not make us holy in God's eyes. Only faith in Jesus could do that. However, after finding salvation through faith, most of the reformers said we should obey the law. Some extreme reformers said we could break them since only our faith mattered, not our actions. This teaching is called "Antinomianism" (against the law). +Some modern Christians say that today our only law is the law of love. Others say that the "moral" law of the Old Testament still applies to Christians today. They say that all of the Ten Commandments are repeated somewhere in the New Testament books. +In the arts. +Movies. +There are two famous movies called "The Ten Commandments". They both were directed by Cecil B. DeMille. The first was a silent movie in 1923, and the second was made in 1956. The 1956 movie starred Charlton Heston as Moses, and was the biggest money making movie of that year. +In animation. +In the anime series Seven Deadly Sins, a Japanese manga and anime by mangaka Nakaba Suzuki, there is a group of characters called the Ten Commandments. These individuals all possess a title and supernatural ability named after each commandment. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Terrestrial ecoregion.txt b/.github/workflows/data/simplewiki-500/Terrestrial ecoregion.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/Test.txt b/.github/workflows/data/simplewiki-500/Test.txt new file mode 100644 index 000000000..ac17688f6 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Test.txt @@ -0,0 +1,13 @@ +A test is a way of checking something to see if it is true, or false, or if it is edible or not. If something can be tested, or finishes the tests correctly, it is testable. The "Concise Oxford English Dictionary" defines a test as: "a procedure intended to establish the quality, performance, or reliability of something". +A test is different from an experiment: Before a test is done, there is an expected result. The test is performed, to show this result. In an experiment, the outcome is open. Very often, tests are performed as part of an experiment. +Products. +Products are usually tested for quality, so customers will get good products. +In software engineering, a test is used to see if the software system can do what it should. Software is tested before it is released. "Alpha" testing is where software developers check the software for bugs. Software can also be checked for quality and usability. "Beta" testing is done by groups of users. +Tests of cars and other vehicles include a crash test. The car is put under severe conditions to see what will make it fail, or deliberately crashed to measure the damage. Other machines can also be crash tested. Crash test dummies can be used instead of humans. They are placed in the car seat to see if a human in the crash would have been injured or killed. +People. +People are tested to see what they have learned. This is often called an assessment or examination. In learning, a test item is a question, or set of questions. +Many people think tests are valuable. They believe tests: +However, academic tests are not perfect measures. Tests could only partly measure a student’s memory and maybe their understanding. The test would only be about a small part of the subject, and only at that moment in time. +People, animals and plants can also be tested for illnesses. For example, a blood test can be used to check for disease. +Science. +In science, tests can done to check for a presence of a substance, or to check the quality of something. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/The Sun.txt b/.github/workflows/data/simplewiki-500/The Sun.txt new file mode 100644 index 000000000..5ae9fb26c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/The Sun.txt @@ -0,0 +1,5 @@ +The Sun is the star at the center of the Solar System. +The Sun may also mean: +<templatestyles src="Template:TOC_right/styles.css" /> +Related pages. +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Theatre.txt b/.github/workflows/data/simplewiki-500/Theatre.txt new file mode 100644 index 000000000..0d425a1b8 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Theatre.txt @@ -0,0 +1,25 @@ +Theatre (British English and also American English), or Theater (mostly American English), has several meanings. +The word comes originally from the Greek "Theatron", meaning roughly, 'a place for viewing'. In American English, the word 'theater' can mean either a place where films are shown (this is also called a cinema) or a place where live stage plays are performed. In British English, 'theatre' means a place where live plays are performed. Some people, both English and American, use the spelling 'theatre' to mean a place where live plays are performed, and the spelling 'theater' to mean a cinema. +'Theatre' can also mean the business of putting on plays. An actor might say "I am in the theatre business", or a writer might say "I write for the theatre", meaning that they write plays, rather than writing for movies or television shows. +History. +Ancient Greece. +The first people we know created plays were the Ancient Greeks, about the year 500 B.C. They divided plays into two kinds: tragedy and comedy. This division is still used today. The best known Ancient Greek writers of plays are Aeschylus, Sophocles, Euripides and Aristophanes. Some of their plays survived, and are still performed today. +These ancient Greek plays were performed outdoors in large amphitheatres, so that many people could see them. There were contests among the playwrights (people who write plays are called playwrights) and the winner would get a prize. +The Greeks had many brilliant ideas. They used mechanical devices like trap doors and the "machina": a crane for winching gods on and off the stage (hence 'Deus ex machina'). They had a "Greek chorus" that offered information to help the audience follow the performance. The chorus comments on themes, and shows how an audience might react to the drama. The players wore masks. Illustrations on vases show helmet-like masks, covering the entire face and head, with holes for the eyes and a small aperture for the mouth, plus a wig. The mask was to ‘melt’ into the face and allow the actor to vanish into the role. Therefore, onlookers did not think about the actor, but thought about the character. +Middle Ages. +In the Middle Ages, the Catholic Church began to use theatre as a way of telling the stories from the Bible to people who did not know how to read. They wrote Mystery Plays, where each part of the Bible story would be a play put on by a different group of people. They wrote "miracle plays" which were about the lives of the saints. They wrote "morality plays" which taught the audiences how to live a good Christian life. +Commedia dell'arte plays. +In the 1500s, groups of actors toured around Italy performing comic plays to entertain townspeople. These plays were called Commedia dell'arte, and different stories would be created around the same group of characters. Often the spoken lines would be made up by the actors for each performance. +Other kinds of plays called Neoclassical Dramas and Neoclassical Comedies were also popular in Italy and in France at this time. These plays were written to copy the style of the plays from Ancient Greece and Rome. +Elizabethan theatre. +At the end of the sixteenth century (before 1600), the traveling actors began to perform in fixed theatre buildings. This was the period when William Shakespeare wrote. He lived from 1564 to 1616. At that time, in England, women were not allowed to perform, so male actors would play female characters. +His theatre was in London, England. It was called The Globe Theatre. It was an outdoor theatre and plays were performed in the daytime for large audiences. His plays were very popular and many are still performed today. Many people believe Shakespeare was one of the best playwrights (a writer of plays). +Plays including Shakespeare's were banned during the Protectorate'. After that, many more were written and acted. +Plays from the 1900s. +After World War II, playwrights in Europe and the United States began doing plays in a new style called "Theatre of the Absurd." After seeing the horrors of war, these playwrights felt that all their old values had been destroyed. Playwrights such as Samuel Beckett, Eugène Ionesco, Harold Pinter, and Jean Genet wrote plays that are considered to be "Theatre of the Absurd." +The "Theatre of the Absurd" plays have some of the same ideas that are found in the philosophy (a way of thinking) called existentialism. Existentialism is very different from many other "philosophies". Most religions and philosopies say that human life has a meaning (or a purpose). The philosophy of existentialism is that human life does not have a meaning (or a purpose). When something has no meaning, it is "absurd". (absurd means means silly and meaningless.) +The plays written in this style make people think about questions like "what is it like to be a person in the world?" and "what does it mean for a person to be free?" They are often filled with sad emotions, such as worry, fear, and thoughts about death. +Theatre breaks. +Theatre breaks are a form of short holiday, based around viewing a theatrical convention show. Theatre breaks tend to include a nights hotel accommodation included in the price. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Theft.txt b/.github/workflows/data/simplewiki-500/Theft.txt new file mode 100644 index 000000000..4302bcb83 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Theft.txt @@ -0,0 +1,3 @@ +Theft is when one person or group takes from another person, business, or state any object, money, or information without permission and does not intend to return it. A person who has been convicted of theft may be called a thief. However, the practice of engaging in theft is also called stealing. There are many different types of theft, such as pickpocketing and shoplifting. Burglary and robbery are separate crimes which involve theft. +Stealing is basic and is illegal almost everywhere. Thieves steal things sometimes because they want to have something for themselves, or because they want to sell something for money. Sometimes thieves will make plans to rob a store, bank, house, or person, and sometimes they will just see a chance to steal something and take it. Some thieves have kleptomania. +When thieves steal things for money, they usually pick cars, electronics, laptops, or other things they can sell easily. Sometimes thieves use pawn shops to sell things easily to someone who will not ask questions. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Time Cube.txt b/.github/workflows/data/simplewiki-500/Time Cube.txt new file mode 100644 index 000000000..9cfdfcd6e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Time Cube.txt @@ -0,0 +1,6 @@ +Time Cube was a personal website created in 1997 by Otis Eugene Ray. On that website, Ray explained his theory of everything, known as "Time Cube". It described the planet Earth as having a cubic symmetry, and time as rotating four "corners". He also said that all of modern physics is wrong. Scientists reject these ideas, saying that they make no sense and cannot be tested. +The Time Cube website was written in an angry and hateful voice. On his site, Ray said that not believing in Time Cube would be "stupid and evil". Some of the comments were racist and discriminatory, especially against black people and Jews. There were also many comments against gay people. Many people found the site to be difficult to understand. +Ray spoke about Time Cube at the Massachusetts Institute of Technology in January 2002. At MIT, a professor tried to cancel the lecture before it took place. Ray believed this is proof of a conspiracy to keep information about Time Cube hidden. Ray also spoke about Time Cube at the Georgia Institute of Technology in April 2005. +Otis Eugene Ray died on March 18, 2015. He was 87 years old. The website went down in August 2015. It was last archived by the Wayback Machine on January 12, 2016. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Time horizon.txt b/.github/workflows/data/simplewiki-500/Time horizon.txt new file mode 100644 index 000000000..0fca8669d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Time horizon.txt @@ -0,0 +1,5 @@ +A time horizon is a future point in time when something must be "done" (a "deadline") or will be "over" (a "time limit"). Either way, the matter will be closed when the time horizon is reached. +Common time horizons people use are: +It is very important to know at what time horizon something you are doing will be scored, evaluated, marked or paid for. +Sports, for example football (soccer) and basketball, often have time limits. Baseball and others do not, which sometimes causes problems. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Time limit.txt b/.github/workflows/data/simplewiki-500/Time limit.txt new file mode 100644 index 000000000..a7687c26b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Time limit.txt @@ -0,0 +1,7 @@ +A time limit is a time horizon that is imposed on everyone at once. +It may be used to try to achieve fairness in some system of ethics. For instance, if poor people and rich people are debating something, a time limit may be imposed so that the rich people cannot keep debating until the poor people have to go to work, and lose. +Time limits are very important in accounting so that everyone can report their results (for tax and investment purposes) at the same time. This in turn creates deadlines for the accountant and those reporting. +However, the deadline is imposed by an authority, whereas the time limit is imposed by a system. So there can be slack in a deadline, so that results do not have to be reported always very fast. +For example, in the United States of America, the end of the calendar year on December 31 is the time limit for taxes, but the deadline for reporting is April 15. Sometimes the government allows more time, as it did for the families of those who were killed in the September 11, 2001 attacks. +Related pages. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Trademark.txt b/.github/workflows/data/simplewiki-500/Trademark.txt new file mode 100644 index 000000000..a065a133c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Trademark.txt @@ -0,0 +1,18 @@ +A trademark (or trade mark) is a way for a business to help people identify the products that the business makes from the products made by another business. A trademark can be a name, word, phrase, symbol, logo, design, or picture. It can only be used on things made by the business that owns the trademark. +For example, Coca-Cola and Coke are trademark names for a certain drink made by the Coca-Cola Company. No other business can use these names or any names similar to them. Other businesses can make a drink that is similar, like colas soft drinks, but they have to use a different name for their drink, such as Pepsi. +Another example is the Nike company which makes sporting goods like shoes and clothes. The "swoosh" symbol used on their products is a trademark. +Famous trademarks like Coca-Cola and Nike are used for branding whole families of products. +Trademark and law. +Trademarks for bakers were first included in a law in the 13th century in England. France expanded trademark laws in the late 19th century and other countries followed. +In the United States, the governing law for trademarks is the Lanham Act, in Germany the Markengesetz. +Getting a trademark. +Trademarks are protected by law. In some countries, a person or company can get a trademark simply by using the name, word, phrase, symbol, logo, design, or picture on its products. +Trademarks can also be registered. In that case, the business tells the government of its country that it wants to use a certain name, word, phrase, symbol, logo, design or picture as a trademark for the products it sells. If no other person or business is using the trademark to sell those products, then the government will list that trademark. Once it is listed, no one else can use that trademark for those products. This is called "registering" the trademark. +Using another person's trademark. +If someone uses the trademark in a wrong way, the trademark owner can sue the other person. If a court decides that the other person was not allowed to use the trademark, they might have to pay damages to the trademark owner. +If another person wants to use a trademark that they do not own, they can ask the trademark owner for permission. The trademark owner can grant the other person a license. The other person usually must pay some money to the trademark owner for the license. This can be in the form of a percentage of the cost of the product that the other person sells called a royalty. For example, a person might pay Nike ten percent (10%) of the cost of each pair of shoes it sells for the right to include the Swoosh. +Marking products with trademarks. +When people write a word that is a trademark or show a picture or symbol that is a trademark, they should say that it is a trademark. If a trademark is not registered, they can write the word "Trademark", use the abbreviation "TM", or use the symbol ™ on their products. +If a trademark is registered, they can use the letter R in a circle symbol: "®". People can also say it is a "registered trademark" or use the abbreviation "Reg.". +Service marks. +Trademarks are used for products. Businesses that do things for people instead of making things are called service providers. They can get a service mark instead of a trademark. When people write or show a service mark, they can use the service mark symbol: "℠". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Tragedy (Greek theatre).txt b/.github/workflows/data/simplewiki-500/Tragedy (Greek theatre).txt new file mode 100644 index 000000000..27f7aad79 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Tragedy (Greek theatre).txt @@ -0,0 +1,3 @@ +In theatre, a tragedy as defined by Aristotle is a play that ends badly for the hero or heroine or others. A tragedy is usually about a person who has many good qualities, but also has one poor quality (called a "tragic flaw") that causes trouble for him, and maybe his family or friends. +Often in a tragedy, there is one possible event that the hero fears and tries to prevent, but no matter what he does, it makes this thing more and more sure to happen. Tragedies originated in Ancient Greek theatre, where they were performed at religious festivals. The three most famous Greek tragedy writers were Aeschylus, Sophocles and Euripides. Later famous writers include Shakespeare and Jean Racine. +Sometimes the word tragedy is also used to mean something with a bad outcome in real life e.g. crime or death. It makes people cry when there’s sad scenes in movies . \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Tree.txt b/.github/workflows/data/simplewiki-500/Tree.txt new file mode 100644 index 000000000..6f4e43b49 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Tree.txt @@ -0,0 +1,82 @@ +A tree is a tall plant with a trunk and branches made of wood. +Trees can live for many years. The oldest living tree found is about 5,000 years old. The oldest tree from the UK is about 1,000 years old. +The four main parts of a tree are the roots, the trunk, the branches, and the leaves. Trees are a wide variety of plant species that have independently evolved a trunk and branches as a way to tower above other plants to compete for sunlight. +The roots of a tree are usually under the ground. However, this is not always true. The roots of the mangrove tree are mostly under water. A single tree has many roots. The roots carry nutrients and water from the ground through the trunk and branches to the leaves of the tree. Leaves can also breathe in air. Sometimes, roots are specialized into aerial roots, which can also provide support, as is the case with the banyan tree. +The trunk is the main body of the tree. The trunk is covered with bark which protects it from damage. Branches grow from the trunk. They spread out so that the leaves can get more sunlight. +The leaves of a tree are green most of the time, but they can come in many colors, shapes and sizes. The leaves take in sunlight and use water and food from the roots to make the tree grow, and to reproduce. +Trees and shrubs take in water and carbon dioxide and give out oxygen with sunlight to form sugars. This is the opposite of what animals do in respiration. Plants also do some respiration using oxygen the way animals do. They need oxygen as well as carbon dioxide to live. Trees are renewable resources because, if cut down, other trees can grow in their place. +Parts of a tree. +The parts of a tree are the roots, trunks, branches, twigs and leaves. Tree stems are mainly made of support and transport tissues (xylem and phloem). Wood consists of "xylem" cells, and bark is made of "phloem" and other tissues external to the vascular cambium. +Growth of the trunk. +As a tree grows, it may produce growth rings as new wood is laid down around the old wood. In areas with seasonal climate, wood produced at different times of the year may alternate light and dark rings. In temperate climates, and tropical climates with a single wet-dry season alternation, the growth rings are annual, each pair of light and dark rings being one year of growth. In areas with two wet and dry seasons each year, there may be two pairs of light and dark rings each year; and in some (mainly semi-desert regions with irregular rainfall), there may be a new growth ring with each rainfall. +In tropical rainforest regions, with constant year-round climate, growth is continuous. Growth rings are not visible and there is no change in the wood texture. In species with annual rings, these rings can be counted to find the age of the tree. This way, wood taken from trees in the past can be dated, because the patterns of ring thickness are very distinctive. This is dendrochronology. Very few tropical trees can be accurately dated in this manner. +Roots. +The roots of a tree are almost always underground, usually in a ball shaped region centered under the trunk, and extending no deeper than the tree is high. Roots can also be above ground, or deep underground. Some roots are short, some are meters long. +Roots provide support for the parts above ground, holding the tree upright, and keeping it from falling over in high wind. +Roots take in water, and nutrients, from the soil. Without help from fungus for better uptake of nutrients, trees would be small or would die. Most trees have a favorite species of fungus that they associate with for this purpose. +Branches. +Above ground, the trunk gives height to the leaf-bearing branches, competing with other plant species for sunlight. In all trees the shape of the branches improves the exposure of the leaves to sunlight. Branches start at the trunk, big and thick, and get progressively smaller the farther they grow from the trunk. Branches themselves split into smaller branches, sometime very many times, until at the end they are quite small. The small ends are called twigs. +Leaves. +The leaves of a tree are held by the branches. Leaves are usually held at the ends of the branches. The, although some have leaves along the branches. The main functions of leaves are photosynthesis and gas exchange. A leaf is often flat, so it absorbs the lightest, and thin, so that the sunlight can get to the green parts in the cells, which convert sunlight, carbon dioxide from the atmosphere, and water from the roots, into glucose and oxygen. Most of a tree's biomass comes from this process. +Most leaves have stomata, which open and close, and regulate carbon dioxide, oxygen, and water vapour exchange with the atmosphere. +Trees with leaves all year round are evergreens, and those that shed their leaves are deciduous. Deciduous trees and shrubs generally lose their leaves in autumn as it gets cold. Before this happens, the leaves change colour. The leaves will grow back in spring. +Exceptions. +The word "tree" in English means a long-lived plant having obvious main stem and growing to a considerable height and size. Thus, not all trees have all the organs or parts as mentioned above. For example, most (tree-like) palms are not branched, and tree ferns do not produce bark. There are also more exceptions. +Based on their general shape and size, all of these are nonetheless generally regarded as trees. Trees can vary a lot. A plant that is similar to a tree, but generally smaller, and may have multiple trunks, or have branches that arise near the ground, is called a "shrub", or a "bush". Since these are common English words there is no precise differentiation between shrubs and trees. Given their small size, bonsai plants would not technically be "trees", but are indeed "trees". Do not confuse the use of tree for a species of plant, with the size or shape of individual specimens. A spruce seedling does not fit the definition of a tree, but all spruces are trees. +Classification. +A tree is a plant form that can be found in many different orders and families of plants. Trees show many growth forms, leaf type and shape, bark traits and organs. +The tree form has changed separately in classes of plants that are not related, in response to similar problems (for the tree). With about 100,000 types of trees, the number of tree types in the whole world might be one fourth of all living plant types. Most tree species grow in tropical parts of the world and many of these areas have not been surveyed yet by botanists (they study plants), making species difference and ranges not well understood. +The earliest trees were tree ferns, horsetails and lycophytes, which grew in forests in the Carboniferous period; tree ferns still survive, but the only surviving horsetails and lycophytes are not of tree form. Later, in the Triassic Period, conifers, ginkgos, cycads and other gymnosperms appeared, and subsequently flowering plants in the Cretaceous period. Most species of trees today are flowering plants (Angiosperms) and conifers. +A small group of trees growing together is called a grove or copse, and a landscape covered by a dense growth of trees is called a forest. Several biotopes are defined largely by the trees that inhabit them; examples are rainforest and taiga (see ecozones). A landscape of trees scattered or spaced across grassland (usually grazed or burned over periodically) is called a savanna. A forest of great age is called old growth forest or ancient woodland (in the UK). A very young tree is called a sapling. +Records. +Tallest. +Scientists in the UK and Malaysia say they have discovered the world's tallest tropical tree measuring more than 100m (328ft) high. +A coast redwood: , in Redwood National Park, California had been measured as tallest living tree. It has been named Hyperion. Hyperion was measured as 116.07 metres (380.8 ft) tall in 2019. It is estimated to be 600 to 800 years old. +The tallest trees in Australia are all eucalypts, of which there are more than 700 species. The so-called 'mountain ash'. with a slim, straight trunk, grows to over 300 feet. +Stoutest trees. +The stoutest living single-trunk species in diameter is the African baobab: , Glencoe baobab (measured near the ground), Limpopo Province, South Africa. This tree split up in November 2009 and now the stoutest baobab could be Sunland Baobab (South Africa) with diameter 10.64 m and circumference of 33.4 m. +Some trees develop multiple trunks (whether from an individual tree or multiple trees) which grow together. The sacred fig is a notable example of this, forming additional 'trunks' by growing adventitious roots down from the branches, which then thicken up when the root reaches the ground to form new trunks; a single sacred fig tree can have hundreds of such trunks. +Altitude. +Trees have been found growing at record-breaking heights in Scotland's mountains. On Braeriach, Britain's third highest mountain, a sitka spruce was found at 1,125m (3,691ft). +Age of individual trees. +The life-span of trees is determined by growth rings. These can be seen if the tree is cut down or in cores taken from the edge to the center of the tree. Correct determination is only possible for trees which make growth rings, generally those which occur in seasonal climates. Trees in uniform non-seasonal tropical climates are always growing and do not have distinct growth rings. It is also only possible for trees which are solid to the center of the tree; many very old trees become hollow as the dead heartwood decays away. For some of these species, age estimates have been made on the basis of extrapolating current growth rates, but the results are usually little better than guesses or speculation. White proposed a method of estimating the age of large and veteran trees in the United Kingdom by correlation between a tree's stem diameter, growth character and age. +The verified oldest measured ages of living trees are: +Other species suspected of reaching exceptional age include European Yew "Taxus baccata" (probably over 2,000 years) and western redcedar "Thuja plicata". The oldest known European yew is the Llangernyw yew in the Churchyard of Llangernyw village in North Wales which is estimated to be between 4,000 and 5,000 years old. +The oldest reported age for an Angiosperm tree is 2,305 years for the Sri Maha Bodhi sacred fig ("Ficus religiosa") planted in 288 BC at Anuradhapura, Sri Lanka; this is said to be the oldest human-planted tree with a known planting date. +Oldest forests. +The earliest fossilised trees date to 386 million years ago in the Devonian period. They have been found at an abandoned quarry in Cairo, New York. The forest was so vast it originally stretched beyond Pennsylvania. +This discovery is two or three million years older than the previous oldest forest at Gilboa, also in New York State. +Tree value estimation. +Studies have shown that trees contribute as much as 27% of the appraised land value in certain markets. +These most likely use diameter measured at breast height (dbh), 4.5 feet (140 cm) above ground—not the larger base diameter. A general model for any year and diameter is: +formula_1 +assuming 2.2% inflation per year. +Tree climbing. +Tree climbing is an activity where one moves around in the crown of trees. +Use of a rope, helmet, and harness are the minimum requirements to ensure the safety of the climber. Other equipment can also be used depending on the experience and skill of the tree climber. Some tree climbers take special hammocks called "Treeboats" and Portaledges with them into the tree canopies where they can enjoy a picnic or nap or spend the night. +Tree climbing is an "on rope" activity that puts together many different tricks and gear originally derived from rock climbing and caving. These techniques are used to climb trees for many purposes, including tree care (arborists), animal rescue, recreation, sport, research, and activism. +Damage. +The three big sources of tree damage are biotic (from living sources), abiotic (from non-living sources) and deforestation (cutting trees down). Biotic sources would include insects which might bore into the tree, deer which might rub bark off the trunk, or fungi, which might attach themselves to the tree. +Abiotic sources include lightning, vehicles impacts, and construction activities. Construction activities can involve a number of damage sources, including grade changes that prevent aeration to roots, spills involving toxic chemicals such as cement or petroleum products, or severing of branches or roots. People can damage trees also. +Both damage sources can result in trees becoming dangerous, and the term "hazard trees" is commonly used by arborists, and industry groups such as power line operators. Hazard trees are trees which due to disease or other factors are more susceptible to falling during windstorms, or having parts of the tree fall. +The process of finding the danger a tree presents is based on a process called the quantified tree risk assessment. +Trees are similar to people. Both can take a lot of some types of damage and survive, but even small amounts of certain types of traumas can result in death. Arborists are very aware that established trees will not tolerate any appreciable disturbance of the root system. Even though that is true, most people and construction professionals do not realize how easily a tree can be killed. +One reason for confusion about tree damage from construction involves the dormancy of trees during winter. Another factor is that trees may not show symptoms of damage until 24 months or longer after damage has occurred. For that reason, persons who do not know about caring for trees may not link the actual cause with the later damaged effect. +Various organizations have long recognized the importance of construction activities that may damage tree health. This can result in monetary losses due to tree damage and replacement costs. As a result, standard methods of tree management for building activities are well established and tested. +Trees in culture. +The tree has always been a cultural symbol. Common icons are the World tree, for instance Yggdrasil, and the tree of life. The tree is often used to represent nature or the environment itself. A common mistake (wrong thing) is that trees get most of their mass from the ground. In fact, 99% of a tree's mass comes from the air. +Wishing trees. +A Wish Tree (or wishing tree) is a single tree, usually distinguished by species, position or appearance, which is used as an object of wishes and offerings. Such trees are identified as possessing a special religious or spiritual value. By tradition, believers make votive offerings in order to gain from that nature spirit, saint or goddess fulfillment of a wish. +Tree worship. +Tree worship refers to the tendency of many societies in all of history to worship or otherwise mythologize trees. Trees have played a very important role in many of the world's mythologies and religions and have been given deep and sacred meanings throughout the ages. Human beings, seeing the growth and death of trees, the elasticity of their branches, the sensitiveness and the annual (every year) decay and revival of their foliage, see them as powerful symbols of growth, decay and resurrection. The most ancient cross-cultural symbolic representation of the universe's construction is the 'world tree'. +World tree. +The tree, with its branches reaching up into the sky, and roots deep into the earth, can be seen to dwell in three worlds - a link between heaven, the earth, and the underworld, uniting above and below. It is also both a feminine symbol, bearing sustenance; and a masculine, phallic symbol - another union. +For this reason, many mythologies around the world have the concept of the World tree, a great tree that acts as an "Axis mundi", holding up the cosmos, and providing a link between the heavens, earth and underworld. In European mythology the best-known example is the tree Yggdrasil from Norse mythology. +The world tree is also an important part of Mesoamerican mythologies, where it represents the four cardinal directions (north, south, east, and west). The concept of the world tree is also closely linked to the motif of the Tree of life. +In literature. +In literature, a mythology was notably developed by J.R.R. Tolkien, his Two Trees of Valinor playing a central role in his 1964 "Tree and Leaf". William Butler Yeats describes a "holy tree" in his poem "The Two Trees" (1893). +List of trees. +There are many types of trees. Here is a list of some of them: +<templatestyles src="Div col/styles.css"/> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/UK.txt b/.github/workflows/data/simplewiki-500/UK.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/US Cup.txt b/.github/workflows/data/simplewiki-500/US Cup.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/US Foot.txt b/.github/workflows/data/simplewiki-500/US Foot.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/US Pound.txt b/.github/workflows/data/simplewiki-500/US Pound.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/US Yard.txt b/.github/workflows/data/simplewiki-500/US Yard.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/US gallon.txt b/.github/workflows/data/simplewiki-500/US gallon.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/data/simplewiki-500/USA.txt b/.github/workflows/data/simplewiki-500/USA.txt new file mode 100644 index 000000000..cc79d7a4d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/USA.txt @@ -0,0 +1 @@ +This is a redirect from an acronym. Page titles commonly use the full names of things, spelled out. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Unit of measurement.txt b/.github/workflows/data/simplewiki-500/Unit of measurement.txt new file mode 100644 index 000000000..c29b93558 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Unit of measurement.txt @@ -0,0 +1,30 @@ +Units of measurement give "standards" so that the numbers from our measurements refer to the same thing. Measurement is a process that uses numbers to describe a physical quantity. We can measure how big things are, how warm they are, how heavy they are, and many other features. +For example, the metre is a standard unit to measure length. Before 1982, one meter was defined as the distance between two markers on a special metal rod. During that time, saying that something had a length of two meters meant that it was exactly twice as long as the rod used to define the meter. Now scientists define the meter by using the speed of light. +In the past, different units were used in different countries. Today, most units of measure fall into one of three systems: +The older two, the British imperial system and the closely related US customary system use the foot as a measure of length, the pound as a measure for weight, and the second as a measure for time. They use other units as well. The number of smaller units that make the bigger units in these two systems varies: For example, there are 12 inches in a foot and 16 ounces in a pound. +The newest and most used of the three systems is the metric system or SI system which use 10, 100 or 1000 of a smaller unit to make a bigger one. For instance, there are 100 centimetres in one metre or 1000 grams in one kilogram. This system uses the metre for length and kilogram for mass. +The common, non-metric measurement of time does not follow this pattern. The second is the basis for time measurement, and it is based on the sexagesimal system: 60 seconds make one minute, and 60 minutes make one hour. +Number and unit of measurement. +The property of the thing being measured is given as a number of units of measure. The number only has sense when the unit of measurement is also given. By that number it represents a measurement of something. +For example, The Eiffel Tower in Paris, France is tall. That is, the distance from the top to the bottom of the Eiffel Tower is 300 metres. The property of the Eiffel Tower being measured is a distance. The number measured is 300. 300 of what? The unit of measurement is the metre. +Measurement standards. +Standards are usually special objects used to make measurements. A metre stick is an example of a standard. When you measure something with a metre stick, you can compare that measurement to anything else that is also measured with a metre stick. This makes measurement easier and comparisons between measurements easier. +Science, medicine and engineering use smaller units of measurement to measure small things with less error. It is easy to measure large things using larger units of measurement. Astronomical measurements like the width of a galaxy use light years and parsecs. +Small measurements like the mass of an atom use special units of measurement. +Systems of units of measurement. +There are many different standards and units used all over the world. Some became less used during the 19th and 20th centuries. +Metric System. +The metric system is a system of measurement used in most of the world. It is also called the International System of Units, or SI. +Units of measure in the metric system include: +Imperial units. +Imperial units were defined in the United Kingdom in 1824. These units were based on similar units that were in use before 1824. Imperial units were used in countries that were part of the British Empire. While many of these countries, including the United Kingdom, have officially adopted SI, the older system of units are still used. +US customary units. +US customary units are the official units used in the US. These are similar to the British imperial units and also based on the units used in the United Kingdom from before American Independence. Some of the units are different to the British ones. For example, there are 20 imperial fluid ounces in an imperial pint, but 16 US fluid ounces in a US pint. Additionally, the US fluid ounce is slightly bigger than the imperial fluid ounce. The result is that US pints and gallons are smaller than imperial pints and gallons. In the United States, the metric system has been legal for trade since 1866 but other measurements such as the gallon, inch, and the pound are still widely used. +Imperial and US units of measurement include: +The ounces for weight and volume are different. Even when measuring water, the number of ounces of weight is not the same as the number of fluid ounces. +Other units of measurement. +The unit of time is the second. The minute (60 seconds) and hour (60 minutes or 3600 seconds) are larger units. A day is defined as 24 hours, but the Earth’s rotation has slowed. The difference is corrected at the end of some years with what is called a leap second. A week (7 days) and month are also standard units. +A unit of measurement that applies to money is called a unit of account. This is normally a currency issued by a country. For instance, the United States use dollars. Each dollar is 100 cents. The United Kingdom uses pounds. Each pound is 100 pennies or pence. The European Union uses the Euro. There are 100 cents in the Euro. +The units for electricity, magnetism and radiation were mostly invented in the 19th century when scientists learned how to measure them. Most were originally given imperial systems, but it is usual to use metric systems for them today. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/United Kingdom.txt b/.github/workflows/data/simplewiki-500/United Kingdom.txt new file mode 100644 index 000000000..a346edfd7 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/United Kingdom.txt @@ -0,0 +1,83 @@ +The United Kingdom of Great Britain and Northern Ireland, often shortened to the United Kingdom (or UK), or just Britain, is a sovereign country in Western Europe. It is a constitutional monarchy of four countries which were once separate: England, Wales, Scotland and Northern Ireland. +It is part of the United Nations, the Commonwealth of Nations, NATO, the G7, and formerly the European Union. It had the sixth largest economy in the world by nominal GDP in 2019. +About 95 percent of the UK's population are English speakers. 5.5 per cent of the population speak languages brought to the UK as a result of relatively recent immigration. +The UK has many cities. London is the largest city in the UK and is the capital city. There are also other large cities in England such as Birmingham, Manchester, Liverpool, Leeds, Bristol and Newcastle upon Tyne. Scotland has the large cities of Edinburgh and Glasgow. Cardiff and Swansea are in Wales and Derry and Belfast are in Northern Ireland. +Between the 17th and mid 20th-centuries, Britain became a world power. It became a colonial empire that controlled large areas of Africa, Asia, North America and Oceania. +At its height in 1922, more than 458 million people lived in the British Empire, one-fifth of the Earth's population. Its area was 13,012,000 square miles: almost a quarter of the Earth's land area. The Empire was sometimes called 'the Empire on which the Sun never sets', meaning it is always daytime someplace in the Empire. Many countries left and became independent from the Empire in the 20th century, although Britain keeps links with most countries of its former empire and also still controls fourteen colonies. +History. +Prehistory. +Humans have lived in Britain for almost a million years. They did not live there all the time, probably because the climate was too extreme at times. +Archaeological remains show that the first group of modern people to live in the British Isles were hunter-gatherers after the last ice age ended. The date is not known: perhaps as early as 8000 but certainly by 5000. They built mesolithic wood and stone monuments. Stonehenge was built between 3000 and 1600. Celtic tribes arrived from mainland Europe. Britain was a changing collection of tribal areas, with no overall leader. Julius Caesar tried to invade (take over) the island in 55 but was not able to do so. The Romans successfully invaded in 43. +Written history began in Britain when writing was brought to Britain by the Romans. Rome ruled in Britain from 44 to 410. They ruled the southern two-thirds of Great Britain. The Romans never took over Ireland and never fully controlled Scotland, the land north of the valleys of the River Forth and River Clyde. Their northern border varied from time to time and was marked sometimes at Hadrian's Wall (in modern England), sometimes at the Antonine Wall (in modern Scotland). +After the Romans, waves of immigrants came to Britain. Some were German tribes: the Angles, Saxons and Jutes. Others were Celts, like the Scoti, who came to Great Britain from Ireland. English and Scots are Germanic languages. They developed from Old English. This was spoken by the Anglo-Saxons in an area from the River Forth to the River Tamar. +Middle Ages. +A later wave of immigration was that of the Vikings, during the Early Middle Ages or Viking Age. During the Viking invasion of Britain, they set up their own kingdom in north-western England, which the Anglo-Saxons named the "Danelaw", after the Danes who lived there and controlled the land. Vikings from Scandinavia also controlled most of the islands which are now part of Scotland, including the Outer Hebrides, the Inner Hebrides, and the Northern Isles (the Shetland Islands and the Orkney Islands). +After a long period when Anglo-Saxon England was split into various kingdoms, it was made into one kingdom by Æthelstan (Athelstan) in 945 . In the 13th century, the lands of Wales were unified by force with England by the wars of Edward I of England ("Edward Longshanks"). +Early modern history. +Union of the Crowns. +There were hundreds of years of fighting between both kingdoms of Great Britain. In 1603, when Queen Elizabeth I of England died, her closest relative was King James VI of Scotland. He became king of England and Ireland as well as the king of Scotland. The kingdoms of England, Ireland, and Scotland had the same monarch ever since. James VI and I was the first to be named "King of Great Britain", and he ordered the design of the Union Jack. The Union Jack has been the British national flag ever since. +Union of 1707. +In 1707, the Parliaments of England and Scotland agreed on the Treaty of Union, which joined the two countries into one country called the "United Kingdom of Great Britain" under Queen Anne with the Acts of Union 1707. This union merged Scotland and England into one kingdom. England and Scotland kept their own laws, with English law in England and Wales and Scots law in Scotland. The division between the Church of Scotland and the Church of England continued. Ireland and Great Britain continued to have the same king, but Ireland did not become part of the new kingdom in 1707. +Modern history. +Union of 1801. +Scotland and England had already independently had much influence over Ireland since 1200. In 1800 laws were passed in the parliaments of Great Britain and Ireland to merge the two kingdoms and their two parliaments. The country was then called the "United Kingdom of Great Britain and Ireland". The Union Jack was changed so that the flag of Saint Patrick (a red saltire) shows Ireland to be a part of the country. +In 1922 much of Ireland became independent from the United Kingdom as the Irish Free State (now called Ireland). However, six northern counties (called Northern Ireland) are part of the United Kingdom. The country was renamed the "United Kingdom of Great Britain and Northern Ireland" in 1927. +The new Parliament of Northern Ireland set up in the 1920s stopped working in the 1970s, because of The Troubles. However, devolution started again with the Northern Ireland Assembly after the Belfast Agreement (the "Good Friday Agreement") in 1998. Devolution in Scotland and Wales started the Scottish Parliament and the Welsh Parliament the same year. +The United Kingdom was a member state of the European Union (EU) and an older organization, the European Economic Community (EEC), from 1973 until Brexit in 2020. +In September 2024, the United Kingdom became the first G7 country to phase out coal power for electric generation, after 142 years of using the energy source. +Geography. +The UK is northwest off the coast of mainland Europe. Around the UK are the North Sea, the English Channel and the Atlantic Ocean. The UK also rules, usually indirectly, a number of smaller places (mostly islands) around the world, which are known as British Overseas Territories. They were once part of the British Empire. Examples are Gibraltar (on the Iberian Peninsula next to the Strait of Gibraltar) and the Falkland Islands (in the south Atlantic Ocean). +In the British Isles, the UK is made up of four different countries: Wales, England and Scotland and Northern Ireland. The capital city of Wales is Cardiff. The capital city of England is London. The capital city of Scotland is Edinburgh and the capital city of Northern Ireland is Belfast. Other large cities in the UK are Birmingham, Glasgow, Leeds, Manchester, Liverpool, Sheffield, Bristol, Leicester, Coventry, Nottingham, Bradford, Newcastle Upon Tyne and Southampton. +The physical geography of the UK varies greatly. England consists of mostly lowland terrain, with upland or mountainous terrain only found north-west of the River Tees-River Exe line. The upland areas include the Lake District, the Pennines, the North York Moors, Exmoor, and Dartmoor. The lowland areas are typically traversed by ranges of low hills, frequently composed of chalk, and flat plains. Scotland is the most mountainous country in the UK and its physical geography is distinguished by the Highland Boundary Fault which goes across the Scottish mainland from Helensburgh to Stonehaven. The Royal Observatory, Greenwich is the defining point of the Prime Meridian.The weather of the United Kingdom is changeable and unpredictable. Summers are moderately warm, winters are cool to cold. Rain falls throughout the year, and more on the west than the east because of its northerly latitude and the warm water from the Atlantic Ocean's Gulf Stream. The usually moderate prevailing winds from the Atlantic may be interrupted by Arctic air from the northeast or hot air from the Sahara. +The United Kingdom is reducing greenhouse gas emissions. It has met the Kyoto Protocol targets. It has signed the Paris Agreement. The British government want the UK to be carbon neutral by the year 2050. +Climate. +The United Kingdom has an oceanic climate. +The highest temperature ever recorded in the United Kingdom was , on 19 July 2022 in Coningsby. The lowest temperature ever recorded was , on February 11, 1895 & January 10, 1982 in Braemar, and December 30, 1995 in Altnaharra. +Politics. +The United Kingdom is a parliamentary democracy based on a constitutional monarchy. The people of the United Kingdom vote for a members of Parliament to speak for them and to make laws for them. King Charles III is the King of the United Kingdom of Great Britain and Northern Ireland and is the head of state. The government, led by the Prime Minister, governs the country and appoints cabinet ministers. Today, the Prime Minister is Keir Starmer, who is the leader of the centre-left Labour Party. +Parliament is where laws are made. It has three parts: the House of Commons, the House of Lords, and the King. The House of Commons is the most powerful part. It is where Members of Parliament sit. +Scotland has its own devolved Parliament with the power to make laws on things like education, health and Scottish law. Northern Ireland and Wales have their own devolved legislatures which have some powers but less than the Scottish parliament. The Parliament of the United Kingdom is sovereign and it could end the devolved administrations at any time. The UK is a unitary state and not a federation of states. +Parliament. +The Parliament of the United Kingdom is the legislature, the political assembly that makes laws and decides tax. The British people are represented by members of parliament (MPs) in the House of Commons of the United Kingdom. MPs are chosen in elections. The MPs in the House of Commons decide who will be the Prime Minister of the United Kingdom. The prime minister decides who will be in the British Government (His Majesty's Government). The government is not controlled by the king or queen, but by Parliament. In Britain, Parliament is made up of the House of Commons and the House of Lords. +Unlike the House of Commons, the people in the House of Lords are not elected. The people who sit in the House of Lords are called peers. Most peers are appointed by the government. There are some who are hereditary peers (who inherit their peerages from ancestors or other family members). Certain bishops in the established Church of England also attend the House of Lords. (The Church of England is the national church in England. The Church of Scotland does not have bishops, and neither Wales nor Northern Ireland has an established national church.) Together, the two houses make a bicameral legislature, in which the House of Commons has more power. In the past, the House of Lords had more power. Before the 20th century, the prime minister was often a member of the House of Lords. As the House of Lords lost its powers, as political reforms tried to improve democracy, the House of Commons became more powerful and the prime minister is now always a member of the House of Commons. +After the English Civil War during the Wars of the Three Kingdoms, Oliver Cromwell became Lord Protector, and the monarchy ended for a time. The British Isles were a republic, which Cromwell named the "Commonwealth of England, Scotland, and Ireland". Although the monarchy was restored after his death, the Crown slowly became the secondary power, and Parliament the first. Until the early twentieth century, only men who owned property could vote to choose MPs. In the nineteenth century, more people were given suffrage. In 1928, all men and women got the vote: this is called universal suffrage. +Almost all members of Parliament belong to political parties. The biggest parties are the Conservative Party, Labour Party, the Scottish National Party and the Liberal Democrats. Members of the same party agree to work together. A party (often with more than half the seats: a majority) forms the government. The leader of the party becomes the prime minister, who then chooses the other ministers. Because the government has a majority in Parliament, it can normally control what laws are passed. +The British Parliament is in Westminster, in London. It has power over the whole of the United Kingdom. Wales, Scotland and Northern Ireland each have their own parliaments as well, and these have more limited powers. England does not have a separate parliament. +Scotland has the Scottish Parliament at Holyrood in Edinburgh. Wales has the Welsh Parliament in Cardiff. Northern Ireland has the Northern Ireland Assembly at Stormont in Belfast. There are also parliaments in the Isle of Man and in Jersey and Guernsey (the Channel Islands), which are all island states for which the UK has responsibility in international law. Man, Jersey, and Guernsey are "crown dependencies". Some British Overseas Territories have their own legislatures. +Parts of the UK. +Countries (nations). +About 68 million people live in the UK (2022). They can be divided into four big nationalities based on the countries where they live (or where they were born or their ancestry). Each country has a demonym for its people (for example; England's people are English), but no matter which country someone is from, they have a British nationality. +Crown dependencies. +The crown dependencies are three nations which are not part of any of the four countries in the UK. They are: the Isle of Man, Jersey and Guernsey. Unlike the four countries, the governments of the crown dependencies have almost full power over the dependencies, with the exception of military and international relations. Everybody from a crown dependency has a British nationality. +Overseas Territories. +The British Overseas Territories are former colonies of the British Empire which have not become independent from the UK. There are fourteen. Some have civilisations on them while others are military bases. Most of them have their own governments. The UK is responsible for their defence and international relationships. Everybody from an overseas territory has a British nationality. +Military. +The United Kingdom has one of the most advanced militaries in the world, alongside such countries such as the USA and France, and operates a large navy (Royal Navy), a sizable army, (British Army) and an air force (Royal Air Force). +From the 18th century to the early 20th century, the United Kingdom was one of the most powerful nations in the world, with a large and powerful navy (due to the fact it was surrounded by sea, so a large navy was the most practical option). This status has faded in recent times, but it remains a member of various military groups such as the UN Security Council and NATO. It is also still seen as a great military power. +Economy. +The United Kingdom is a developed country with the sixth-largest economy in the world. It was a superpower during the 18th, 19th and early 20th century and was considered since the early 1800s to be the most powerful and influential nation in the world, in politics, economics and in military strength. +Britain continued to be the biggest manufacturing economy in the world until 1908 and the largest economy until the 1920s. The economic cost of two world wars and the decline of the British Empire in the 1950s and 1960s reduced its leading role in global affairs. The United Kingdom has strong economic, cultural, military and political influence and is a nuclear power. The United Kingdom holds a permanent seat on the United Nations Security Council, and is a member of the G8, NATO, World Trade Organization and the Commonwealth of Nations. The City of London, in the capital, is famous for being the largest centre of finance in the world. +Literature. +William Shakespeare was an English playwright. He wrote plays in the late 16th century. Some of his plays were "Romeo and Juliet" and "Macbeth". In the 19th century, Jane Austen and Charles Dickens were novelists. Twentieth-century writers include the science-fiction novelist H. G. Wells and J. R. R. Tolkien. The children's fantasy "Harry Potter" series was written by J. K. Rowling. Aldous Huxley was also from the United Kingdom. +English language literature is written by authors from many countries. Eight people from the United Kingdom have won the Nobel Prize in Literature. Seamus Heaney is a writer who was born in Northern Ireland. +Arthur Conan Doyle from Scotland wrote the Sherlock Holmes detective novels. He was from Edinburgh. The poet Dylan Thomas brought Welsh culture to international attention. +Education. +The nature of education is a devolved matter in Scotland, Wales and Northern Ireland. They have separate, but similar, systems of education with laws that a broad education is required from ages five to eighteen, except for in Scotland where school departure is allowed from the age of sixteen. Pupils attend state funded schools (academy schools, faith schools, grammar schools, sixth form colleges, further education, city technology colleges, studio schools) and other children attend independent fee-paying schools (known as public schools). +There have been universities in Britain since the Middle Ages. The "ancient universities" started at this time and in the Renaissance. They are: the University of Oxford, the University of Cambridge, the University of St Andrews, the University of Glasgow, the University of Aberdeen, and the University of Edinburgh. These are the oldest universities in the English-speaking world. +The University of Cambridge, the University of Oxford, and London universities (University College London, the London School of Economics, King's College London and Imperial College London) collectively form the Golden Triangle of universities in the south-east of England. A broader group of twenty universities form the Russell Group of research universities. +Media. +The BBC is an organisation in the United Kingdom. It broadcasts in the United Kingdom and other countries on television, radio and the Internet. The BBC also sells its programs to other broadcasting companies around the world. The organisation is run by a group of twelve governors who have been given the job by the King on the advice of government ministers. +Transport. +Road traffic in the United Kingdom drives on the left-hand side of the road (unlike the Americas and most of Europe), and the driver steers from the right-hand side of the vehicle. The road network on the island of Great Britain is extensive, with most local and rural roads having evolved from Roman and Medieval times. Major routes developed in the mid 20th Century were made to the needs of the motor car. The multi-lane high speed motorway (freeway) network was mostly built in the 1960s and 1970s. It links major towns and cities. +The system of rail transport was invented in England and Wales, so the United Kingdom has the oldest railway network in the world. It was built mostly during the Victorian era. At the heart of the network are five long-distance main lines which radiate from London to the major cities and secondary population centres with dense commuter networks and highs-speed lines in the regions. The newest part of the network connects London to the Channel Tunnel from St Pancras station. The system of underground railways in London, known as the Tube, has been copied by many other cities. +Most domestic air travel in the United Kingdom is between London and the major cities in Scotland and the North of England and Belfast. London-Heathrow is the nation’s largest airport and is one of the most important international hubs in the world. Other major airports with principal international service include London-Gatwick, Birmingham, Manchester and Glasgow. An extensive system of ferry networks operates. The Isle of Man and the Channel Islands also have domestic passenger and freight routs. +Languages. +Major languages spoken in the United Kingdom other than English include Polish (500,000 approximate number of speakers in the United Kingdom), Eastern Panjabi or Punjabi (471,000), Bengali (400,000), Urdu (400,000), Cantonese (300,000), Greek (200,000), Southwestern Caribbean Creole English (170,000). +Native languages include: +Relations with countries and other areas. +The UK has foreign relations with many countries. +The UK has foreign relations with some places that are not countries. Hong Kong has an office in London; The trade office is linked (2024) to a case in the justice system in the UK, according to media. The link is supposed to be thru one of the employees of the trade office. +Notes. +<templatestyles src="Reflist/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/United States customary units.txt b/.github/workflows/data/simplewiki-500/United States customary units.txt new file mode 100644 index 000000000..f3d849760 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/United States customary units.txt @@ -0,0 +1,12 @@ +U.S. customary units are the main system of units of measurement used to measure things in the United States and U.S. territories (except in Puerto Rico and Guam, where the metric system is also officially used and is dominant). The system of Imperial units, on which the U.S. customary units are based, is very similar but there are some differences. +Length or distance units include the inch, foot, yard and mile. +Land units include square miles (2589998.47032 square meter) and acres (4046.8726 square meter). +Common volume units are the teaspoon, tablespoon (3 teaspoons), fluid ounce (two tablespoons), cup (8 ounces), pint (2 cups, or 16 fluid ounces), quart (2 pints, or 32 fluid ounces), US gallon (16 cups, 128 fluid ounces, or 3.8 liters). +A barrel is the unit to measure oil. +Temperature is measured in degrees Fahrenheit (°F). Here is a formula to convert from °C to °F: formula_1 +Units of weight and mass include the pound (453.6 grams), which contains 16 ounces. This should not be confused with the British pound which is a type of money. The different uses of the word "pound" can cause confusion. Different sizes of ounce are also in use. +Some people have been trying to replace these units with the metric system since the 1820s. Much infrastructure in the United States and British Empire was built in past centuries using the old measures. During the 20th century some sectors such as science, medicine and the military of the United States converted to metric but Americans still use the old units for daily purposes. On the other hand, world trade is conducted using the metric system and except for the US, the world uses the metric system for almost all purposes. +Notes. +<templatestyles src="Reflist/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Universe.txt b/.github/workflows/data/simplewiki-500/Universe.txt new file mode 100644 index 000000000..0ff8f721f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Universe.txt @@ -0,0 +1,63 @@ +The universe is space and everything in it. It is made of many billions of stars and planets and enormous clouds of gas separated by big spaces. The Big Bang started the expansion of the universe. +Astronomers use telescopes to look at distant galaxies. This is how they see what the universe looked like a long time ago. The past tense is because the light from distant parts of the Universe takes a very long time to reach us. From these observations, it seems the physical laws and constants of the universe have not changed. +Physicists are currently unsure if anything existed before the Big Bang. The size of the universe is not known. +History. +People have long had ideas about the universe. They saw the sky at night, with fixed stars and other stars moving among them. Most early ideas had the Earth at the center of the universe. This is known as geocentrism. +Some ancient Greeks thought that the universe has infinite space and has existed forever. They thought it had a set of celestial spheres which corresponded to the fixed stars, the Sun and various planets. The spheres circled about a round but unmoving Earth. +Over hundreds of years, better observations led to Copernicus's Sun-centered model, known as heliocentrism. This was very controversial at the time, and was fought by religious authorities, most famously by the Christian church (see Giordano Bruno and Galileo). +The invention of the telescope in the Netherlands, 1608, was a very important moment in astronomy. By the middle of the 1800s, telescopes were good enough for other galaxies to be seen. The modern optical (uses visible light) telescope is still more advanced. Meanwhile, Isaac Newton improved the ideas of gravity and dynamics (equations) and showed how the Solar System worked. +In the 1900s, better telescopes showed astronomers more about the universe. The Solar System is in a galaxy made of billions of stars, which we call the Milky Way. Other galaxies exist outside it, as far as we can see. This started a new kind of astronomy called cosmology, in which astronomers study what these galaxies are made of and how they are spread out. By measuring the redshift of galaxies, cosmologists soon discovered that the Universe is expanding (see: Hubble). +Big Bang. +The most used scientific model of the Universe is known as the Big Bang theory, which says the Universe expanded from a single point that held all the matter and energy of the Universe. There are many kinds of scientific evidence that support the Big Bang idea. Astronomers think that the Big Bang happened about 13.73 billion years ago. this would make the universe 13.73 billion years old. Since then, the universe has expanded to be at least 93 billion light years, or 8.80 ×1026 meters, in diameter. It is still expanding right now, and the expansion is getting faster. +Astronomers are not sure what is causing the universe to expand. Because of this, they call the mysterious energy causing the expansion dark energy. By studying the expansion of the Universe, astronomers have also realized most of the matter in the Universe may be in a form which cannot be observed by any scientific equipment we have. This matter has been named dark matter. Just to be clear, dark matter and energy have not been observed directly (that is why they are called 'dark'). However, many astronomers think they must exist: many astronomical observations would be hard to explain if they didn't. +Some parts of the universe are expanding even faster than the speed of light. This means the light will never be able to reach us here on Earth, so we will never be able to see these parts of the universe. We call the part of the universe we can see the observable universe. +History of the term "universe". +The word "universe" comes from the Old French word "universe", which comes from the Latin word "universe". The Latin word was used by Cicero and later Latin authors in many of the same senses as the modern English word is used. +A different theory is an early Greek model of the universe. In that model, all matter was in rotating spheres centered on the Earth; according to Aristotle, the rotation of the outermost sphere was responsible for the motion and change of everything within. It was natural for the Greeks to assume that the Earth was stationary and that the heavens rotated about the Earth, because careful astronomical and physical measurements are needed to prove otherwise. +The most common term for "universe" among the ancient Greek philosophers from Pythagoras onwards was "το παν" (The All), defined as all matter ("το ολον") and all space ("το κενον"). +Broadest meaning. +The broadest word meaning of the Universe is found in "De division naturae" by the medieval philosopher Johannes Scotus Erigena, who defined it as simply everything: everything that exists and everything that does not exist. +Definition as reality. +Usually the universe is thought to be everything that exists, has existed, and will exist. This definition says that the universe is made of two elements: space and time, together known as space-time or the vacuum; and matter and different forms of energy and momentum occupying space-time. The two kinds of elements behave according to physical laws, in which we describe how the elements interact. +A similar definition of the term "universe" is everything that exists at a single moment of time, such as the present or the beginning of time. +In Aristotle's book "The Physics", Aristotle divided το "παν" (everything) into three roughly analogous elements: "matter" (the stuff of which the universe is made), "form" (the arrangement of that matter in space) and "change" (how matter is created, destroyed or altered in its properties, and similarly, how form is altered). Physical laws were the rules governing the properties of matter, form and their changes. Later philosophers such as Lucretius, Averroes, Avicenna and Baruch Spinoza altered or refined these divisions. For example, Averroes and Spinoza have "active" principles governing the universe which act on "passive" elements. +Space-time definitions. +It is possible to form space-times, each existing but not able to touch, move, or change (interact with each other. The entire collection of these separate space-times is denoted as the multiverse. In principle, the other unconnected universes may have different dimensionalities and topologies of space-time, different forms of matter and energy, and different physical laws and physical constants, although such possibilities are speculations. +Observable reality. +According to a still-more-restrictive definition, the Universe is everything within our connected space-time that could have a chance to interact with us and vice versa. +According to the general idea of relativity, some regions of space may never interact with ours even in the lifetime of the Universe, due to the finite speed of light and the ongoing expansion of space. For example, radio messages sent from Earth may never reach some regions of space, even if the Universe would exist forever; space may expand faster than light can traverse it. +It is worth emphasizing that those distant regions of space are taken to exist and be part of reality as much as we are; yet we can never interact with them, even in principle. Even with most of the visible universe, we cannot interact with it in practice. A relatively simple task, so it might seem, would be to communicate within our galaxy. Even if we knew how to send a message successfully, it would be well over 200,000 years before a reply could come back from the far end of the Milky Way, whose diameter is 100,000 light years. galaxy. The spatial region which we can see is called the "observable universe". +Basic data on the universe. +The Universe is huge. The matter which can be seen is spread over a space at least 93 billion light years across. +For comparison, the diameter of a typical galaxy is only 30,000 light-years, and the typical distance between two neighboring galaxies is only 3 million light-years. As an example, our Milky Way Galaxy is roughly 100,000 light years in diameter, and our nearest sister galaxy, the Andromeda Galaxy, is roughly 2.5 million light years away. The observable Universe contains more than 2 trillion (1012) galaxies and, overall, as many as an estimated stars (more stars than all the grains of sand on planet Earth). +Typical galaxies range from dwarf galaxies with as few as ten million (107) stars up to giants with one trillion (1012) stars, all orbiting the galaxy's center of mass. Thus, a rough estimate from these numbers would suggest there are around one sextillion (1021) stars in the observable Universe; though a 2003 study by Australian National University astronomers resulted in a figure of 70 sextillion (7 x 1022). +The matter that can be seen is spread throughout the Universe when averaged over distances longer than 300 million light-years. However, on smaller length-scales, matter is observed to form 'clumps', many atoms are condensed into stars, most stars into galaxies, most galaxies into galaxy groups and clusters and, lastly, the largest-scale structures such as the Great Wall of galaxies. +The present overall density of the Universe is very low, roughly 9.9 × 10−30 grams per cubic centimetre. This mass-energy appears to consist of 73% dark energy, 23% cold dark matter and 4% ordinary matter. The density of atoms is about a single hydrogen atom for every four cubic meters of volume. The properties of dark energy and dark matter are not known. Dark matter slows the expansion of the universe. Dark energy makes its expansion faster. +The Universe is old, and changing. The best good guess of the Universe's age is 13.798±0.037 billion years old, based on the cosmic microwave background radiation. Independent estimates (based on measurements such as radioactive dating) agree, although they are less precise, ranging from 11 to 20 billion years. +to 13–15 billion years. +The Universe has not been the same at all times in its history. Its getting bigger accounts for how Earth-bound people can see the light from a galaxy 30 billion light-years away, even if that light has traveled for only 13 billion years; the very space between them has expanded. This expansion is consistent with the observation that the light from distant galaxies has been redshifted; the photons emitted have been stretched to longer wavelengths and lower frequency during their journey. The rate of this spatial expansion is accelerating, based on studies of Type Ia supernovae and other data. +The relative amounts of different chemical elements — especially the lightest atoms such as hydrogen, deuterium and helium — seem to be identical in all of the Universe and throughout all of the history of it that we know of. The Universe seems to have much more matter than antimatter. The Universe appears to have no net electric charge. Gravity is the dominant interaction at cosmological distances. The Universe also seems to have no net momentum or angular momentum. The absence of net charge and momentum is expected if the Universe is finite. +The Universe appears to have a smooth space-time continuum made of three spatial dimensions and one temporal (time) dimension. On the average, space is very nearly flat (close to zero curvature), meaning that Euclidean geometry is experimentally true with high accuracy throughout most of the Universe. However, the Universe may have more dimensions, and its spacetime may have a multiply connected global topology. +As far as we can tell, the Universe has the same physical laws and physical constants throughout. According to the prevailing Standard Model of physics, all matter is composed of three generations of leptons and quarks, both of which are fermions. These elementary particles interact via at most three fundamental interactions: the electroweak interaction which includes electromagnetism and the weak nuclear force; the strong nuclear force described by quantum chromodynamics; and gravity, which is best described at present by general relativity. +Special relativity holds in all the universe in local space and time. Otherwise, general relativity holds. There is no explanation for the particular values that physical constants appear to have throughout our universe, such as Planck's constant "h" or the gravitational constant "G". Several conservation laws have been identified, such as the conservation of charge, conservation of momentum, conservation of angular momentum and conservation of energy. +Theoretical models. +General theory of relativity. +Accurate predictions of the universe's past and future require an accurate theory of gravitation. The best theory available is Albert Einstein's general theory of relativity, which has passed all experimental tests so far. However, since rigorous experiments have not been carried out on "cosmological" length scales, general relativity could conceivably be inaccurate. Nevertheless, its predictions appear to be consistent with observations, so there is no reason to adopt another theory. +General relativity provides of a set of ten nonlinear partial differential equations for the spacetime metric (Einstein's field equations) that must be solved from the distribution of mass-energy and momentum throughout the universe. Since these are unknown in exact detail, cosmological models have been based on the cosmological principle, which states that the universe is homogeneous and isotropic. In effect, this principle asserts that the gravitational effects of the various galaxies making up the universe are equivalent to those of a fine dust distributed uniformly throughout the universe with the same average density. The assumption of a uniform dust makes it easy to solve Einstein's field equations and predict the past and future of the universe on cosmological time scales. +Einstein's field equations include a cosmological constant (Lamda: "Λ"), that is related to an energy density of empty space. Depending on its sign, the cosmological constant can either slow (negative "Λ") or accelerate (positive "Λ") the expansion of the Universe. Although many scientists, including Einstein, had speculated that "Λ" was zero, recent astronomical observations of type Ia supernovae have detected a large amount of dark energy that is accelerating the Universe's expansion. Preliminary studies suggest that this dark energy is related to a positive "Λ", although alternative theories cannot be ruled out as yet. +Big Bang model. +The prevailing Big Bang model accounts for many of the experimental observations described above, such as the correlation of distance and redshift of galaxies, the universal ratio of hydrogen:helium atoms, and the ubiquitous, isotropic microwave radiation background. As noted above, the redshift arises from the metric expansion of space; as the space itself expands, the wavelength of a photon traveling through space likewise increases, decreasing its energy. The longer a photon has been traveling, the more expansion it has undergone; hence, older photons from more distant galaxies are the most red-shifted. Determining the correlation between distance and redshift is an important problem in experimental physical cosmology. +Other experimental observations can be explained by combining the overall expansion of space with nuclear physics and atomic physics. As the Universe expands, the energy density of the electromagnetic radiation decreases more quickly than does that of matter, since the energy of a photon decreases with its wavelength. Thus, although the energy density of the Universe is now dominated by matter, it was once dominated by radiation; poetically speaking, all was light. As the Universe expanded, its energy density decreased and it became cooler; as it did so, the elementary particles of matter could associate stably into ever larger combinations. Thus, in the early part of the matter-dominated era, stable protons and neutrons formed, which then associated into atomic nuclei. At this stage, the matter in the Universe was mainly a hot, dense plasma of negative electrons, neutral neutrinos and positive nuclei. Nuclear reactions among the nuclei led to the present abundances of the lighter nuclei, particularly hydrogen, deuterium, and helium. Eventually, the electrons and nuclei combined to form stable atoms, which are transparent to most wavelengths of radiation; at this point, the radiation decoupled from the matter, forming the ubiquitous, isotropic background of microwave radiation observed today. +Other observations are not clearly answered by known physics. According to the prevailing theory, a slight imbalance of matter over antimatter was present in the universe's creation, or developed very shortly thereafter. Although the matter and antimatter mostly annihilated one another, producing photons, a small residue of matter survived, giving the present matter-dominated universe. +Several lines of evidence also suggest that a rapid cosmic inflation of the universe occurred very early in its history (roughly 10−35 seconds after its creation). Recent observations also suggest that the cosmological constant ("Λ") is not zero, and that the net mass-energy content of the universe is dominated by a dark energy and dark matter that have not been characterized scientifically. They differ in their gravitational effects. Dark matter gravitates as ordinary matter does, and thus slows the expansion of the universe; by contrast, dark energy serves to accelerate the universe's expansion. +Multiverse hypothesis. +Some people think that there is more than one universe. They think that there is a set of universes called the multiverse. +By definition, there is no way for anything in one universe to affect something in another. The multiverse is not yet a scientific idea because there is no way to test it. An idea that cannot be tested or is not based on logic is not science. It is not known if the multiverse is a scientific idea. +Future. +This is a scientific topic called "the ultimate fate of the universe". It is a topic in cosmology. There are possible scenarios for its evolution. The basic issue is whether its existence is finite or infinite. +The future of the universe is a mystery. However, there are a couple of theories based on the possible shapes of the universe: +There is a consensus among cosmologists that the shape of the universe is considered "flat" (parallel lines stay parallel) and will continue to expand forever. +Related pages. +<templatestyles src="Div col/styles.css"/> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Uranus.txt b/.github/workflows/data/simplewiki-500/Uranus.txt new file mode 100644 index 000000000..50f9ddc20 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Uranus.txt @@ -0,0 +1,37 @@ +Uranus is the seventh planet from the Sun in our Solar System. Like Neptune, it is an ice giant. It is the third largest planet in the solar system. +The planet is made of ice, gases and liquid metal. Its atmosphere contains hydrogen, helium and methane. The temperature on Uranus is near the top of its atmosphere. Its small solid core (about 55% the mass of Earth) is probably about . +The planet is tilted on its axis so much that it is sideways. Nobody knows why exactly it is. It has five big moons, many small ones, and a small system of 13 planetary rings. +The distance between Uranus and the Sun is about 2.8 billion km. Uranus completes its orbit around the Sun in 84 earth years. It completes a spin around its axis in 17 hours and 14 minutes. This means there are about 43,000 days in a year on Uranus. +Uranus was discovered in 1781. This planet can be seen with the naked eye under perfect conditions. John Flamsteed saw it decades before but thought it was a star (34 Tauri). +Near the solstice, one pole faces the Sun continuously and the other faces away. Only a narrow strip around the equator has a rapid day–night cycle, with the Sun low over the horizon. Each pole gets around 42 years of continuous sunlight, followed by 42 years of darkness. +Uranus is named after Uranus, the Greek mythology version of the Sumerian god Anu, who was a god of the sky. +History. +Discovery. +Uranus has been seen many times through a telescope, and even sometimes without any, but people thought it was a star due to its slow orbit. Sir William Herschel observed Uranus on 13 March 1781 from the garden of his house at 19 New King Street in Bath, Somerset, England (now the Herschel Museum of Astronomy), and first said it was a comet (on 26 April 1781). With a homemade 6.2-inch reflecting telescope, Herschel "engaged in a series of observations on the parallax of the fixed stars." +Herschel wrote in his journal: "In the quartile near ζ Tauri... either [a] Nebulous star or perhaps a comet." On 17 March he noted: "I looked for the Comet or Nebulous Star and found that it is a Comet, for it has changed its place." When he presented his discovery to the Royal Society, he continued to assert that he had found a comet, but also implicitly compared it to a planet: +<templatestyles src="Template:Blockquote/styles.css" /> +Herschel notified the Astronomer Royal Nevil Maskelyne of his discovery and received this reply from him on 23 April 1781: "I don't know what to call it. It is as likely to be a regular planet moving in an orbit nearly circular to the sun as a Comet moving in a very eccentric ellipsis. I have not yet seen any coma or tail to it." +Although Herschel continued to say this new object was a comet, other astronomers had already begun to think otherwise. Finnish-Swedish astronomer Anders Johan Lexell, working in Russia, was the first to calculate the orbit of the new object. Its nearly circular orbit showed him that it was a planet rather than a comet. Berlin astronomer Johann Elert Bode described Herschel's discovery as "a moving star that can be deemed a hitherto unknown planet-like object circulating beyond the orbit of Saturn". Bode concluded that its near-circular orbit was more like a planet's than a comet's. +The object was soon widely accepted as a new planet. By 1783, Herschel acknowledged this to Royal Society president Joseph Banks: "By the observation of the most eminent Astronomers in Europe it appears that the new star, which I had the honor of pointing out to them in March 1781, is a Primary Planet of our Solar System." In recognition of his achievement, King George III gave Herschel £200 per year on condition that he move to Windsor so that the Royal Family could look through his telescopes (). +Exploring. +In 1986, NASA's "Voyager 2" visited Uranus. This is the only space probe that tried to see the planet from a short distance. The spacecraft studied the atmosphere of the planet. +Features. +Moons. +Uranus has 27 known moons. They are named for characters from the works of Shakespeare and Alexander Pope. The five biggest moons are Miranda, Ariel, Umbriel, Titania and Oberon. It is likely that more moons will be found. +Clouds. +Uranus is covered in blue clouds. The top clouds, made of methane, are hard to see. Lower clouds are thought to be frozen water. There are also violent storms. Wind speeds can reach . Scientists are studying the clouds to try to understand the storms on the planet. +Rings. +The planet Uranus has a system made of 13 rings, which is far fewer than the rings of Saturn but more than those around Jupiter and Neptune. The rings of Uranus were discovered in 1977. More than 200 years ago, William Herschel also said he saw rings, but today astronomers do not believe that he saw them, because they are very dark and hard to see. Two inner rings were discovered in 1986 in images taken by Voyager 2, and two outer rings were found in 2003–2005 by the Hubble Space Telescope. The rings are probably made of ice. +A lot of people think the rings of Uranus are quite new. They say that the rings are less than 600 million years old. The planet's ring system probably came from when some of its moons crashed together. After crashing, the moons probably broke up into many small pieces of rock and ice, which orbited Uranus and turned into rings. +General properties. +The ring system of Uranus has thirteen rings. In order of how close they are to Uranus, the rings are 1986U2R/ζ, 6, 5, 4, α, β, η, γ, δ, λ, ε, ν, μ rings. There are three groups: nine small main rings (6, 5, 4, α, β, η, γ, δ, ε), two dusty rings (1986U2R/ζ, λ) and two outer rings (μ, ν). The rings of Uranus consist mainly of macroscopic (or visible) particles and less dust, although people know dust is in 1986U2R/ζ, η, δ, λ, ν and μ rings. +There also may be a lot of thin dust bands and faint rings between them. These faint rings and dust bands may stay for only a short time. Some of them became visible during a series of ring events in 2007 when the rings were at different angles. Many dust bands between the rings were seen by "Voyager 2". All rings of Uranus have different brightnesses. +The rings are made of somethng that is super dark. The rings are slightly red in the ultraviolet and visible parts of the spectrum and grey in near-infrared. The chemical composition of the ring particles is not known. However, they cannot be made of pure water ice like the rings of Saturn because they are too dark, darker than the inner moons of Uranus. So they are probably a mixture of ice and a dark material. It is hard to know what this material is, but scientists think it may be organic compounds that were darkened by charged particle irradiation from the planet's magnetosphere. The rings' particles may by made of a crushed material, which the inner moons used to be made of. +The ring system of Uranus is not like the faint dusty rings of Jupiter or the big rings of Saturn, some that are very bright because of water ice. However, some parts of their ring systems are close to being the same. The Saturnian F ring and the ε ring are both thin, dark and are shepherded by a pair of moons. The newly discovered outer rings of Uranus are similar to the outer G and E rings of Saturn. Smaller rings existing in the wide Saturnian rings also look like the thin rings of Uranus. Also, dust bands seen between the main rings of Uranus may be like the rings of Jupiter. The Neptunian ring system is a little bit like Uranus's one, although it is smaller, darker and contains more dust. The Neptunian rings are also further from their planet. +Orbit and rotation. +Uranus goes around the Sun completely every 84 Earth years. Its normal distance from the Sun is around 3 billion km (about 20 AU). The amount of sunlight on Uranus is about 1/400, or 0.25% of that on Earth. Its orbital elements were first calculated in 1783 by Pierre-Simon Laplace. With time, changes began to appear between the predicted and observed orbits, and in 1841, John Couch Adams first said that the differences might be because of the gravity of another planet. In 1845, Urbain Le Verrier began his own independent research into Uranus's orbit. On September 23, 1846, Johann Gottfried Galle found a new planet, later called Neptune, close to the area Le Verrier said it would be. +The time it takes for the inside of Uranus to spin around itself is 17 hours and 14 minutes, clockwise (retrograde). Like all giant planets, its upper atmosphere has very strong winds in the direction that the planet rotates. At some latitudes, such as about two-thirds between the equator and the south pole, the parts of the atmosphere we can see move much faster, making a full rotation in just 14 hours. +References. +<templatestyles src="Reflist/styles.css" /> +Notes. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Value (personal and cultural).txt b/.github/workflows/data/simplewiki-500/Value (personal and cultural).txt new file mode 100644 index 000000000..912c14f41 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Value (personal and cultural).txt @@ -0,0 +1,3 @@ +A value (or principle) usually means an abstract rule, one that can be seen to apply in many experiences, or can be applied by choice in a lot of situations. It can also mean a moral choice one makes often and consistently, for example, some Buddhists avoid eating meat (vegetarianism) as a matter of principle. +Many groups of people agree on lists of principles. They may also try to agree on the order in which they are to apply, that is, which principles should be violated before which other ones. They might also try to list best practices which reflect the principles in the right order, and provide more practical (less abstract) instruction. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Windows.txt b/.github/workflows/data/simplewiki-500/Windows.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/mini/.env b/.github/workflows/mini/.env new file mode 100644 index 000000000..d7d00ca11 --- /dev/null +++ b/.github/workflows/mini/.env @@ -0,0 +1,66 @@ +# LLM +BASE_URL=http://localhost:8001/ +API_KEY=sk- +MODEL=HuggingFaceTB/SmolLM2-135M-Instruct + +# VLM (Visual Language Model) you can set it to the same as LLM if your LLM supports images +VLM_BASE_URL=http://localhost:8002/ +VLM_API_KEY=sk- +VLM_MODEL=HuggingFaceTB/SmolVLM-Instruct + +## FastAPI App (no need to change it) +# APP_PORT=8080 # this is the forwarded port +# API_NUM_WORKERS=1 # Number of uvicorn workers for the FastAPI app + +## To enable API HTTP authentication via HTTPBearer +# AUTH_TOKEN=sk-openrag-1234 + +# SAVE_UPLOADED_FILES=true # usefull for chainlit source viewing + +# Set to true, it will mount chainlit chat ui to the fastapi app (Default: true) +## WITH_CHAINLIT_UI=true + +# RETRIEVER +CONTEXTUAL_RETRIEVAL=false + +# EMBEDDER +EMBEDDER_MODEL_NAME=ibm-granite/granite-embedding-small-english-r2 #Qwen/Qwen3-Embedding-0.6B # or any other embedder from huggingface compatible with vllm +EMBEDDER_BASE_URL=http://vllm:8000/v1 +# EMBEDDER_API_KEY=EMPTY + +# RERANKER +RERANKER_ENABLED=true +RERANKER_MODEL=Alibaba-NLP/gte-multilingual-reranker-base # or jinaai/jina-reranker-v2-base-multilingual + +# Prompts +PROMPTS_DIR=../prompts/example3_en # you can change it to ../prompts/example3 for french prompts + +# Loaders +PDFLoader=MarkerLoader +XDG_CACHE_HOME=/app/model_weights +# If using MarkerLoader +MARKER_MAX_TASKS_PER_CHILD=1 +MARKER_MAX_PROCESSES=1 +MARKER_MIN_PROCESSES=1 +MARKER_POOL_SIZE=1 # Value au increment if you have a cluster of machines +MARKER_NUM_GPUS=0.01 + +# Ray +RAY_POOL_SIZE=1 # Number of serializer actor instances +RAY_MAX_TASKS_PER_WORKER=2 # Number of tasks per serializer +RAY_DEDUP_LOGS=0 # turns off ray log deduplication that appear across multiple processes +RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # # to enable logs at task level in ray dashboard +RAY_task_retry_delay_ms=3000 +RAY_ENABLE_UV_RUN_RUNTIME_ENV=0 # critical with the newest version of UV +RAY_memory_monitor_refresh_ms=0 + +# Indexer UI +## 1. replace X.X.X.X with localhost if launching local or with your server IP +## 2. APP_PORT with your FastAPI port (8080 by default) +## 3. Base URL of the Indexer UI (required to prevent CORS issues). Replace INDEXERUI_PORT with its value +## 4. Base URL of your FastAPI backend. Used by the frondend. Replace APP_PORT with the actual port number of your FastAPI backend + +VITE_INCLUDE_CREDENTIALS=false # set true if fastapi authentification is enabled +INDEXERUI_PORT=8060 # Port to expose the Indexer UI (default is 3042) +INDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT' +VITE_API_BASE_URL='http://X.X.X.X:APP_PORT' diff --git a/.github/workflows/mini/docker-compose.yaml b/.github/workflows/mini/docker-compose.yaml new file mode 100644 index 000000000..ccb1d9c93 --- /dev/null +++ b/.github/workflows/mini/docker-compose.yaml @@ -0,0 +1,132 @@ +include: + - vdb/milvus.yaml +# - extern/infinity.yaml + +x-openrag: &openrag_template + #image: ghcr.io/linagora/openrag:dev-latest + build: + context: . + dockerfile: Dockerfile + volumes: + - ${CONFIG_VOLUME:-./.hydra_config}:/app/.hydra_config + - ${DATA_VOLUME:-./data}:/app/data + - ${MODEL_WEIGHTS_VOLUME:-~/.cache/huggingface}:/app/model_weights # Model weights for RAG + - ./openrag:/app/openrag # For dev mode + - /$SHARED_ENV:/ray_mount/.env # Shared environment variables + - ./ray_mount/logs:/app/logs + ports: + - ${APP_PORT:-8080}:${APP_iPORT:-8080} + - ${RAY_DASHBOARD_PORT:-8265}:8265 # Disable when in cluster mode + networks: + default: + aliases: + - openrag + env_file: + - ${SHARED_ENV:-.env} + shm_size: 10.24gb + +x-vllm: &vllm_template + networks: + default: + aliases: + - vllm + restart: always + environment: + - HUGGING_FACE_HUB_TOKEN + ipc: "host" + volumes: + - ${VLLM_CACHE:-/root/.cache/huggingface}:/root/.cache/huggingface # put ./vllm_cache if you want to have the weights on the vllm_cache folder in your project + command: > + --model ${EMBEDDER_MODEL_NAME:-jinaai/jina-embeddings-v3} + --trust-remote-code + --task embed + --gpu_memory_utilization 0.3 + # --max-num-seqs 1 + # --max-model-len ${MOX_MODEL_LEN:-2048} + # gpu_memory_utilization, max-num-seqs et max-model-len can be tuned depending on your GPU memory + + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 360s + # ports: + # - ${VLLM_PORT:-8000}:8000 +services: + # GPU - default + openrag: + <<: *openrag_template + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [ gpu ] + profiles: + - '' + depends_on: + milvus: + condition: service_healthy + vllm-gpu: + condition: service_healthy + + # No GPU + openrag-cpu: + <<: *openrag_template + deploy: {} + profiles: + - 'cpu' + depends_on: + milvus: + condition: service_healthy + vllm-cpu: + condition: service_healthy + + rdb: + image: postgres:15 + environment: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-root_password} + - POSTGRES_USER=${POSTGRES_USER:-root} + volumes: + - ${DB_VOLUME:-./db}:/var/lib/postgresql/data + + vllm-gpu: + <<: *vllm_template + image: vllm/vllm-openai:v0.9.2 + runtime: nvidia + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [gpu] + profiles: + - '' # Empty string gives default behavior (but does not run when cpu requested) + + vllm-cpu: + <<: *vllm_template + build: + context: extern/vllm + dockerfile: Dockerfile.cpu + target: vllm-openai + image: openrag-vllm-openai-cpu + deploy: {} + environment: + - VLLM_CPU_KVCACHE_SPACE=8 + - VLLM_USE_V1=0 # for ibm-granite/granite-embedding-small-english-r2 + # Default value isn't sufficient for full context length + command: > + --model ${EMBEDDER_MODEL_NAME:-jinaai/jina-embeddings-v3} + --trust-remote-code + --dtype float32 + --max-num-batched-tokens 32768 + # dtype is required for aarch64 (https://github.com/vllm-project/vllm/issues/11327) and improves speed on amd64. + # max-num-batched-tokens is required for aarch64 because chunked prefill isn't supported by V1 vllm backend + # for aarch64 yet. On aarch64 max-num-batched-tokens must be equal max-model-len for now (without chunked prefill). + # For details see https://github.com/vllm-project/vllm/issues/21179 + + profiles: + - 'cpu' diff --git a/.github/workflows/mini/index_docs.sh b/.github/workflows/mini/index_docs.sh new file mode 100755 index 000000000..3146e0189 --- /dev/null +++ b/.github/workflows/mini/index_docs.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +source venv/bin/activate + +docker container ls +OPENRAG_ADDR=`docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' openrag-openrag-cpu-1` +docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' openrag-openrag-cpu-1 + +docker logs openrag-openrag-cpu-1 + +sleep 180s + +python3 utility/data_indexer.py \ + -u http://${OPENRAG_ADDR}:8080 \ + -d .github/workflows/data/simplewiki-500/ \ + -p simplewiki-500 + +docker logs openrag-openrag-cpu-1 + +.github/workflows/mini/wait_for_tasks_completed.sh openrag-openrag-cpu-1 8080 500 + diff --git a/.github/workflows/mini/wait_for_healthy.sh b/.github/workflows/mini/wait_for_healthy.sh new file mode 100755 index 000000000..b986690e0 --- /dev/null +++ b/.github/workflows/mini/wait_for_healthy.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +NAME="${1:-openrag-vllm-cpu-1}" +PORT="${2:-8000}" +ADDR=`docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${NAME}` + +while ! curl -fs "${ADDR}:${PORT}/health" >/dev/null 2>&1; +do + echo "Waiting for ${NAME} to start at ${ADDR}:${PORT}" + sleep 10s +done + +echo "${NAME} at ${ADDR}:${PORT} is healthy" + diff --git a/.github/workflows/mini/wait_for_tasks_completed.sh b/.github/workflows/mini/wait_for_tasks_completed.sh new file mode 100755 index 000000000..43d228fdb --- /dev/null +++ b/.github/workflows/mini/wait_for_tasks_completed.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +NAME="${1:-openrag-openrag-cpu-1}" +PORT="${2:-8080}" +NUM=$3 +ADDR=`docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${NAME}` + +while true +do + tf=`curl -fs "${ADDR}:${PORT}/queue/info" 2>/dev/null | jq '.tasks.total_failed'` + + if [ "${tf}" -ne 0 ] + then + df -h + docker logs openrag-openrag-cpu-1 + echo "ERROR: ${tf} tasks failed. Aborting." + exit 1 + fi + + tc=`curl -fs "${ADDR}:${PORT}/queue/info" 2>/dev/null | jq '.tasks.total_completed'` + + if [ "${tc}" -eq ${NUM} ] + then + echo "${tc} tasks completed." + break + fi + + echo "Waiting: ${tc} tasks completed, ${tf} tasks failed on ${ADDR}:${PORT}" + sleep 10s +done + diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml new file mode 100644 index 000000000..117bd4f6b --- /dev/null +++ b/.github/workflows/tests.yaml @@ -0,0 +1,123 @@ +name: tests + +on: + push: + workflow_dispatch: + +jobs: + build-openrag-from-scratch: + runs-on: ubuntu-latest + steps: + - name: Update apt and install packages + run: | + df -h + echo ${PWD} + sudo apt update + sudo apt install -y curl git jq + sudo apt clean + sudo apt autoremove --purge -y + + - + name: Set up Docker Compose + uses: docker/setup-compose-action@v1 + with: + version: v2.34.0 + + - + name: Free up space and move Docker storage to /mnt + run: | + echo "Stopping Docker..." + sudo systemctl stop docker + + echo "Creating new Docker root at /mnt/docker..." + sudo mkdir -p /mnt/docker + sudo rsync -aqxP /var/lib/docker/ /mnt/docker + + echo "Updating Docker daemon config..." + echo '{"data-root": "/mnt/docker"}' | sudo tee /etc/docker/daemon.json + + cat /etc/docker/daemon.json + + echo "Restarting Docker..." + sudo systemctl start docker + + echo "Verifying Docker root directory:" + docker info | grep "Docker Root Dir" + + - + name: Checkout current branch + uses: actions/checkout@v5 + with: + submodules: true + + - + name: Set up mini env + run: | + cp .github/workflows/mini/.env ./ + cp .github/workflows/mini/*.yaml ./ + + - + name: Build + run: docker compose --profile cpu build + + - + name: Run + run: | + docker compose --profile cpu up -d || docker logs openrag-vllm-cpu-1 + .github/workflows/mini/wait_for_healthy.sh openrag-vllm-cpu-1 + + - + name: Cleanup + run: | + docker container prune -f + docker image prune -f + docker builder prune -f + df -h + + - + name: List containers + run: docker container ls + + - + name: Install Python venv + run: | + python3 -m venv venv + source venv/bin/activate + pip3 install -r utility/requirements.txt + + - + name: Index 500 documents + run: .github/workflows/mini/index_docs.sh + + - + name: Create backup + run: | + mkdir ${PWD}/backup + docker compose run --rm -v ${PWD}/backup:/backup:rw --entrypoint "bash /app/openrag/scripts/entrypoint-backup.sh simplewiki-500" openrag-cpu + wc -l backup/simplewiki-500.openrag + + - + name: Change parition name + run: sed 's/"simplewiki-500"/"simplewiki-500-2"/g' backup/simplewiki-500.openrag > backup/tmp.openrag + + - + name: Restore from modified backup + run: | + docker compose run --rm -v ${PWD}/backup:/backup:ro --entrypoint "bash /app/openrag/scripts/entrypoint-restore.sh simplewiki-500-2 /backup/tmp.openrag" openrag-cpu + + - + name: Create backup again + run: | + docker compose run --rm -v ${PWD}/backup:/backup:rw --entrypoint "bash /app/openrag/scripts/entrypoint-backup.sh simplewiki-500-2" openrag-cpu + wc -l backup/simplewiki-500-2.openrag + + - + name: Compare backups + run: | + sed -i 's/"simplewiki-500-2"/"simplewiki-500"/g' backup/simplewiki-500-2.openrag + diff <(grep -Ev '^{"created": ' backup/simplewiki-500.openrag) <(grep -Ev '^{"created": ' backup/simplewiki-500-2.openrag) + + - + name: Prnt + run: ls -lah && sleep 20s && docker container ls + From f2213b0a69bd3d63c080a1d79367cfb5024ec1d2 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Thu, 9 Oct 2025 13:24:18 +0000 Subject: [PATCH 054/126] Rename MarkItDownLoader to DocxLoader --- .hydra_config/config.yaml | 2 +- openrag/components/indexer/loaders/doc.py | 4 ++-- openrag/components/indexer/loaders/{markItdown.py => docx.py} | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename openrag/components/indexer/loaders/{markItdown.py => docx.py} (98%) diff --git a/.hydra_config/config.yaml b/.hydra_config/config.yaml index 812cc70d4..70b33de17 100644 --- a/.hydra_config/config.yaml +++ b/.hydra_config/config.yaml @@ -91,7 +91,7 @@ loader: txt: TextLoader pdf: ${oc.env:PDFLoader, MarkerLoader} # DoclingLoader # MarkerLoader # PyMuPDFLoader # Custompymupdf4llm eml: EmlLoader - docx: MarkItDownLoader + docx: DocxLoader pptx: PPTXLoader doc: DocLoader png: ImageLoader diff --git a/openrag/components/indexer/loaders/doc.py b/openrag/components/indexer/loaders/doc.py index 7981520ad..334eff917 100644 --- a/openrag/components/indexer/loaders/doc.py +++ b/openrag/components/indexer/loaders/doc.py @@ -4,7 +4,7 @@ from spire.doc import Document, FileFormat from .base import BaseLoader -from .markItdown import MarkItDownLoader +from .docx import DocxLoader os.environ["DOTNET_SYSTEM_GLOBALIZATION_INVARIANT"] = "1" # Disable Globalization @@ -12,7 +12,7 @@ class DocLoader(BaseLoader): def __init__(self, **kwargs) -> None: super().__init__(**kwargs) - self.MDLoader = MarkItDownLoader(**kwargs) + self.MDLoader = DocxLoader(**kwargs) async def aload_document(self, file_path, metadata, save_markdown=False): """Here we convert the document to docx format, save it in local and then use the MarkItDownLoader diff --git a/openrag/components/indexer/loaders/markItdown.py b/openrag/components/indexer/loaders/docx.py similarity index 98% rename from openrag/components/indexer/loaders/markItdown.py rename to openrag/components/indexer/loaders/docx.py index d4565597f..8bbd7929f 100644 --- a/openrag/components/indexer/loaders/markItdown.py +++ b/openrag/components/indexer/loaders/docx.py @@ -23,7 +23,7 @@ def convert_to_png_image(image: Image.Image) -> Image.Image: return png_image -class MarkItDownLoader(BaseLoader): +class DocxLoader(BaseLoader): def __init__(self, **kwargs): super().__init__(**kwargs) self.converter = MarkItDown() From f4cce2e0284b3d77183198f48995456a57d25cef Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Thu, 9 Oct 2025 15:33:16 +0200 Subject: [PATCH 055/126] vllm: don't restart, don't use V0 --- .github/workflows/mini/docker-compose.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/mini/docker-compose.yaml b/.github/workflows/mini/docker-compose.yaml index ccb1d9c93..d91df2c55 100644 --- a/.github/workflows/mini/docker-compose.yaml +++ b/.github/workflows/mini/docker-compose.yaml @@ -30,7 +30,7 @@ x-vllm: &vllm_template default: aliases: - vllm - restart: always + #restart: always # Better to fail in the CI context environment: - HUGGING_FACE_HUB_TOKEN ipc: "host" @@ -116,7 +116,7 @@ services: deploy: {} environment: - VLLM_CPU_KVCACHE_SPACE=8 - - VLLM_USE_V1=0 # for ibm-granite/granite-embedding-small-english-r2 + #- VLLM_USE_V1=0 # for ibm-granite/granite-embedding-small-english-r2 # Default value isn't sufficient for full context length command: > --model ${EMBEDDER_MODEL_NAME:-jinaai/jina-embeddings-v3} From 5c80663ddf54474213c355659e32e3ed29d3267e Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Thu, 9 Oct 2025 15:49:43 +0200 Subject: [PATCH 056/126] Patch vllm to v0.9.2 (it works fine with ibm-granite/granite-embedding-small-english-r2) --- .github/workflows/tests.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 117bd4f6b..962065bf4 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -5,7 +5,7 @@ on: workflow_dispatch: jobs: - build-openrag-from-scratch: + index-backup-restore: runs-on: ubuntu-latest steps: - name: Update apt and install packages @@ -56,6 +56,10 @@ jobs: cp .github/workflows/mini/.env ./ cp .github/workflows/mini/*.yaml ./ + - + name: Patch vllm to v0.9.2 + run: sed -Ei 's/checkout v[0-9\.]+/checkout v0.9.2/' extern/vllm/Dockerfile.cpu + - name: Build run: docker compose --profile cpu build From da7b48d9b6faa623f260d35253a4b991a02fee51 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Thu, 9 Oct 2025 15:07:40 +0000 Subject: [PATCH 057/126] update gitignore --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 35252f665..de6bcce37 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ # Ignore environment files .env -node_modules # generate files and folders .files/ From ffe41e26d8a67aa1f1827bba2e8a0acf1fe2c12c Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Thu, 9 Oct 2025 15:16:09 +0000 Subject: [PATCH 058/126] trigger PR update From d9ce52c0711e81c284e2f207ec55023575b6811f Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Thu, 9 Oct 2025 15:42:21 +0000 Subject: [PATCH 059/126] update documentation --- docs/assets/env_example.env | 53 +++++ docs/content/docs/documentation/API.mdx | 2 +- .../chainlit_data_persistency.md | 2 +- .../docs/documentation/deploy_ray_cluster.md | 2 +- docs/content/docs/documentation/setup_vpn.md | 2 +- .../docs/getting_started/quickstart.mdx | 196 ++++++++++++++---- docs/content/docs/getting_started/usage.mdx | 12 +- 7 files changed, 215 insertions(+), 54 deletions(-) create mode 100644 docs/assets/env_example.env diff --git a/docs/assets/env_example.env b/docs/assets/env_example.env new file mode 100644 index 000000000..f5c7cb782 --- /dev/null +++ b/docs/assets/env_example.env @@ -0,0 +1,53 @@ +# LLM +BASE_URL= +API_KEY= +MODEL= + +# VLM (Visual Language Model) you can set it to the same as LLM if your LLM supports images +VLM_BASE_URL= +VLM_API_KEY= +VLM_MODEL= + +## FastAPI App (no need to change it) +# APP_PORT=8080 # this is the forwarded port +# API_NUM_WORKERS=1 # Number of uvicorn workers for the FastAPI app + +## To enable API HTTP authentication via HTTPBearer +# AUTH_TOKEN=sk-openrag-1234 + +# SAVE_UPLOADED_FILES=true # usefull for chainlit (chat interface) source viewing + +# Set to true, it will mount chainlit chat ui to the fastapi app (Default: true) +## WITH_CHAINLIT_UI=true + +# EMBEDDER +EMBEDDER_MODEL_NAME=jinaai/jina-embeddings-v3 # or other embedder from huggingface compatible with vllm +# EMBEDDER_BASE_URL=http://vllm:8000/v1 +# EMBEDDER_API_KEY=EMPTY + + +# RETRIEVER +# RETRIEVER_TOP_K=20 # number of top documents to retrieve, before reranking (lower (~10) is faster on CPU | on GPU, you can try to increase the value (~40) ). + +# RERANKER +RERANKER_ENABLED=true # deactivate the reranker if your CPU is not powerful enough +RERANKER_MODEL=Alibaba-NLP/gte-multilingual-reranker-base # or jinaai/jina-reranker-v2-base-multilingual + +# Prompts +PROMPTS_DIR=../prompts/example3_en # you can change it to ../prompts/example3 for french prompts + +# Ray +RAY_DEDUP_LOGS=0 # turns off ray log deduplication that appear across multiple processes +RAY_ENABLE_RECORD_ACTOR_TASK_LOGGING=1 # # to enable logs at task level in ray dashboard +RAY_task_retry_delay_ms=3000 +RAY_ENABLE_UV_RUN_RUNTIME_ENV=0 # critical with the newest version of UV + +# Indexer UI +## 1. replace X.X.X.X with localhost if launching local or with your server IP +## 2. Used by the frondend. Replace APP_PORT (8080 by default) with the actual port number of your FastAPI backend +## 3. Replace INDEXERUI_PORT with its value in the INDEXERUI_URL variable + +INCLUDE_CREDENTIALS=false # set true if fastapi authentification is enabled, i.e AUTH_TOKEN is set +INDEXERUI_PORT=3042 # Port to expose the Indexer UI (default is 3042) +INDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT' +API_BASE_URL='http://X.X.X.X:APP_PORT' # Base URL of your FastAPI backend. \ No newline at end of file diff --git a/docs/content/docs/documentation/API.mdx b/docs/content/docs/documentation/API.mdx index 22e542363..b1a394b2b 100644 --- a/docs/content/docs/documentation/API.mdx +++ b/docs/content/docs/documentation/API.mdx @@ -239,7 +239,7 @@ OpenAI-compatible text completion endpoint. For indexing multiple files programmatically, you can use this script [`data_indexer.py`](../utility/data_indexer.py) utility script in the [`📁 utility`](../utility/) folder or simply use **`indexer ui`**. -### OpenAI Client Integration +#### Example OpenAI Client Usage ```python {9-10} from openai import OpenAI, AsyncOpenAI diff --git a/docs/content/docs/documentation/chainlit_data_persistency.md b/docs/content/docs/documentation/chainlit_data_persistency.md index b6893cb95..1444dcc70 100644 --- a/docs/content/docs/documentation/chainlit_data_persistency.md +++ b/docs/content/docs/documentation/chainlit_data_persistency.md @@ -28,7 +28,7 @@ Chainlit datalayer is cloud-compatible, and the same applies for local data pers * Variables for the postgres data :::tip{icon="heart"} -Knowing that OpenRAG already has a running postgres service (**`rdb`**) (refer to the [docker-compose.yaml](/docker-compose.yaml) file), there is no need to deploy another postgres service. In that case, comment out the postgres service definition in the [compose.yaml](/extern/chainlit-datalayer/compose.yaml) file and add the following variable to your .env +Knowing that OpenRAG already has a running postgres service (**`rdb`**) (refer to the [docker-compose.yaml](../docker-compose.yaml) file), there is no need to deploy another postgres service. In that case, comment out the postgres service definition in the [compose.yaml file](../extern/chainlit-datalayer/compose.yaml) and add the following variable to your .env ::: ```bash diff --git a/docs/content/docs/documentation/deploy_ray_cluster.md b/docs/content/docs/documentation/deploy_ray_cluster.md index a5b7e2525..e7f0b3ab4 100644 --- a/docs/content/docs/documentation/deploy_ray_cluster.md +++ b/docs/content/docs/documentation/deploy_ray_cluster.md @@ -54,7 +54,7 @@ UV_CACHE_DIR=/tmp/uv-cache + VDB_HOST= # ✅ instead of VDB_HOST=milvus ``` -:::tip[🧠 **Tips**] +:::tip[**Tips**] - `RAY_NUM_GPUS` defines **per-actor resource requirements**. Ray will not start a task until these resources are available on one of the nodes. For example, if one indexation consumes ~1GB of VRAM and your GPU has 4GB, setting `RAY_NUM_GPUS=0.25` allows you to run **4 indexers per node**. In a 2-node cluster, that means up to **8 concurrent indexation tasks**. diff --git a/docs/content/docs/documentation/setup_vpn.md b/docs/content/docs/documentation/setup_vpn.md index a0a7f19ec..0fce6a2c6 100644 --- a/docs/content/docs/documentation/setup_vpn.md +++ b/docs/content/docs/documentation/setup_vpn.md @@ -119,7 +119,7 @@ Test the VPN connection: --- -:::caution +:::caution{icon="approve-check"} - After the VPN is up, you can configure services like **NFS** using the **10.0.0.0/24 private network**. - Make sure your firewall allows `UDP 51820`. - Adjust the `AllowedIPs` and network according to your needs. diff --git a/docs/content/docs/getting_started/quickstart.mdx b/docs/content/docs/getting_started/quickstart.mdx index 3075ac9c7..7ee6843a1 100644 --- a/docs/content/docs/getting_started/quickstart.mdx +++ b/docs/content/docs/getting_started/quickstart.mdx @@ -1,58 +1,166 @@ --- title: Quick Start --- - -import { Tabs, TabItem, Code } from '@astrojs/starlight/components'; -import compose_ollama_cpu from '../../../assets/compose_ollama_cpu.yaml?raw'; -import env_ollama_cpu from '../../../assets/env_ollama_cpu.env?raw'; -import compose_linux_gpu from '../../../assets/compose_linux_gpu.yaml?raw'; -import env_linux_gpu from '../../../assets/env_linux_gpu.env?raw'; +import { Code } from '@astrojs/starlight/components'; +import env_example from '/src/assets/env_example.env?raw'; +import { FileTree } from '@astrojs/starlight/components'; +import { Tabs, TabItem } from '@astrojs/starlight/components'; OpenRAG is an open source Retrieval Augmented Generation (RAG) solution. This guide is a step-by-step walkthrough to help you get started with OpenRAG. +## Docker +### Prerequisites +- [Docker](https://www.docker.com/get-started) and **Docker Compose** +- Your hardware should meet these specifications: + - **CPU deployment**: Minimum **13 GiB** RAM for light PDF parsers (**`PyMuPDF4LLMLoader`, `PyMuPDFLoader`**), or **23 GiB** RAM for heavier parsers like **`MarkerLoader`** (refer to [this section](/getting_started/environment_setup/#3-file-parser-configuration) for details) + - **GPU deployment**: **16 GB** GPU memory recommended (for systems with separate CPU and GPU memory) -- Before proceeding, ensure your hardware meets the [recommended specifications](/minimum-specifications). -- Install [Docker](https://www.docker.com/get-started). +### Installation and Configuration +#### 1. Clone the repository: -## Docker +```bash title="Cloning the OpenRag repository" +git clone --recurse-submodules git@github.com:linagora/openrag.git + +cd openrag/ +git checkout main # or a given release +``` +#### 2. Create a `.env` File +Create a `.env` file at the root of the project, mirroring the structure of `.env.example`, to configure your environment and supply blank environment variables. + +```bash title="Creating the .env file mirroring .env.example" +cp .env.example .env +``` +Here is a brief overview of key environment variables to configure: + + + +#### 3. File Parser configuration +All supported file format parsers are pre-configured. For PDF processing, **[MarkerLoader](https://github.com/datalab-to/marker)** serves as the default parser, offering comprehensive support for OCR-scanned documents, complex layouts, tables, and embedded images. MarkerLoader operates efficiently on both GPU and CPU environments. -Use the following `docker-compose.yml` file to set up a simple OpenRAG environment: - - - - - -
- Click to expand the docker-compose.yml content - -
- You will also need to provide some environment variables. Create a `.env` file in the same directory as your `docker-compose.yml` file with the following content: -
- Click to expand the .env content - -
- -
- - ```yaml - Nothing here - ``` - -
+:::note +For **`CPU-only deployments`** or lightweight testing scenarios, you can consider switching to **`PyMuPDF4LLMLoader`** or **`PyMuPDFLoader`**. To change the loader, set the **`PDFLoader`** variable like this `PDFLoader=PyMuPDF4LLMLoader`. +:::caution[Important] +These alternative loaders have limitations - they cannot process non-searchable (image-based) PDFs and do not extract or handle embedded images. +::: + +#### 4. For Local Deployment +:::tip[Setting up the Indexer UI] +In case **`Indexer UI` (A Web interface for intuitive document ingestion, indexing, and management.)** is not configured already in your `.env`, follow this dedicated guide: +➡ [Deploy with Indexer UI](/documentation/setup_indexerui/) +::: + +* **Simple and quick** launch for testing + :::info + [OpenRAG repository](https://github.com/linagora/openrag) contains a ready-to-use `docker-compose.yml` file in the **`quick_start` folder**. This setup is ideal for local testing and quick deployments. + + - quick_start + - extern reranker and embedder utils + - vllm cpu dockerfile for different architectures + - Dockerfile.cpu for x86 CPU + - infinity.yaml reranker service + - vdb + - milvus.yaml + - docker-compose.yml + - .env the configured .env file + + ::: + + 1. Navigate to the **`quick_start`** directory or copy it + 2. Place your **`.env`** file in the **`quick_start`** folder + 3. Run the appropriate command for your system: + + + + + GPU deployment, recommended for optimal performance + + ```bash frame="none" {4} + docker compose up -d + + # run the following command to stop the application + # docker compose down + ``` + + + CPU deployment + ```bash frame="none" "--profile cpu" {4} + docker compose --profile cpu up -d + + # to stop the application + # docker compose --profile cpu down + ``` - The simplest way to run OpenRAG on MacOS is to use the ollama model inference server. For more in-depth deployment options, refer to the [Docker installation guide](/installation/docker). -
- Click to expand the docker-compose.yml content - -
- - You will also need to provide some environment variables. Create a `.env` file in the same directory as your `docker-compose.yml` file with the following content: -
- Click to expand the .env content - -
+ :::danger[Important] + **`Apple Metal/MPS`** is not currently supported in Docker. Additionally, our implementations of **vLLM** (embeddings) and **Infinity** (reranking) are not optimized for macOS: **`We are working on it`**. + ::: + As an alternative, you can use **Ollama** or **LlamaCpp** to run embeddings locally on macOS using MPS. The embedder is OpenAI-compatible, so you can configure it via the `.env` file. + + + 1. **Disable Docker services for embeddings and reranking** + Comment out the relevant services in `docker-compose.yml`. + + 2. **Disable the reranker** + :::note[Important] + Our reranker interface matches the [Infinity](https://github.com/michaelfeil/infinity) API and is not OpenAI-compatible: Current work is being done for that. + ```bash + // .env + RERANKER_ENABLED=False + ``` + ::: + + 3. **Run an external embedding service** + Deploy an embedding service with **LlamaCpp** or **Ollama** locally. Then, configure your `.env` with the following variables: + + ```bash + // .env + EMBEDDER_MODEL_NAME=... + EMBEDDER_BASE_URL=... + EMBEDDER_API_KEY=... + ``` +
+
+ + + +* **Development Environment**: For development builds, use the **`--build`** flag to rebuild images: + Execute these commands from the project root directory or the cloned repository: + + + - .github/ + - .hydra_config/ + - ... + - extern/ + - vdb/ + - docker-compose.yml + - README.md + - .env.example + - pyproject.toml + - uv.lock + - .env the configured .env file + + + + + GPU deployment + ```bash frame="none" {4} + docker compose up -d + + # run the following command to stop the application + # docker compose down + ``` + + + CPU deployment + ```bash frame="none" "--profile cpu" {4} + docker compose --profile cpu up -d + + # to stop the application + # docker compose --profile cpu down + ``` - +
+ +Once the app is up and running, you can access the provided services. See the next section. ## Ansible diff --git a/docs/content/docs/getting_started/usage.mdx b/docs/content/docs/getting_started/usage.mdx index 86e474145..b0d4dce31 100644 --- a/docs/content/docs/getting_started/usage.mdx +++ b/docs/content/docs/getting_started/usage.mdx @@ -8,11 +8,11 @@ Once you have installed your OpenRAG instance, you can start using it to upload By default, OpenRAG services are exposed on the following ports: -| Service | Port | Description | -|-------------------|---------------|----------------------------------------------------------------| -| API Documentation | 8080/docs | Main API for document ingestion and querying | -| Chainlit UI | 8080/chainlit | User interface for interacting with the RAG system | -| Ray Dashboard | 8265 | Ray dashboard for monitoring and managing tasks | -| Indexer UI | 3043 | Main user interface for indexing and viewing indexed documents | +| Service | Port | Description | +|-------------------|----------------|----------------------------------------------------------------| +| API Documentation | 8080/docs | Main FastAPI’s for document ingestion and querying. See [this](/documentation/api)| +| Chainlit UI | 8080/chainlit | User interface for interacting with the RAG system | +| Ray Dashboard | 8265 | Ray dashboard for monitoring and managing tasks | +| Indexer UI | 3042/ | Main user interface for indexing and viewing indexed documents | More information about the different services can be found in their respective documentation pages. \ No newline at end of file From 802a01e32580ca332eaac3498e584b41b6ee75a6 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Thu, 9 Oct 2025 22:43:34 +0200 Subject: [PATCH 060/126] Stop pipeline in case of problem with vllm --- .github/workflows/mini/docker-compose.yaml | 2 +- .github/workflows/mini/wait_for_healthy.sh | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/mini/docker-compose.yaml b/.github/workflows/mini/docker-compose.yaml index d91df2c55..87c5afc63 100644 --- a/.github/workflows/mini/docker-compose.yaml +++ b/.github/workflows/mini/docker-compose.yaml @@ -30,7 +30,7 @@ x-vllm: &vllm_template default: aliases: - vllm - #restart: always # Better to fail in the CI context + restart: none # Better to fail in the CI context environment: - HUGGING_FACE_HUB_TOKEN ipc: "host" diff --git a/.github/workflows/mini/wait_for_healthy.sh b/.github/workflows/mini/wait_for_healthy.sh index b986690e0..1bd5d3432 100755 --- a/.github/workflows/mini/wait_for_healthy.sh +++ b/.github/workflows/mini/wait_for_healthy.sh @@ -6,8 +6,16 @@ ADDR=`docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end} while ! curl -fs "${ADDR}:${PORT}/health" >/dev/null 2>&1; do + if docker ps --format '{{.Names}}' | grep -qw "$NAME"; then + echo "Container '$NAME' is running but not helthy yet ..." + else + echo "Container '$NAME' has stopped or was never started." + break + fi + echo "Waiting for ${NAME} to start at ${ADDR}:${PORT}" sleep 10s + done echo "${NAME} at ${ADDR}:${PORT} is healthy" From 2b0e98746bfff75c376114ae154757c57751bb87 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Thu, 9 Oct 2025 22:50:45 +0200 Subject: [PATCH 061/126] Fail explicitly --- .github/workflows/mini/wait_for_healthy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mini/wait_for_healthy.sh b/.github/workflows/mini/wait_for_healthy.sh index 1bd5d3432..9e3c5540f 100755 --- a/.github/workflows/mini/wait_for_healthy.sh +++ b/.github/workflows/mini/wait_for_healthy.sh @@ -10,7 +10,7 @@ do echo "Container '$NAME' is running but not helthy yet ..." else echo "Container '$NAME' has stopped or was never started." - break + exit 1 fi echo "Waiting for ${NAME} to start at ${ADDR}:${PORT}" From 8a1800f2cd4e860bc95ed6cadfb6bb84c1c9f77c Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Thu, 9 Oct 2025 22:51:27 +0200 Subject: [PATCH 062/126] Add requirements for data_indexer.py --- utility/requirements.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 utility/requirements.txt diff --git a/utility/requirements.txt b/utility/requirements.txt new file mode 100644 index 000000000..cf196c5e8 --- /dev/null +++ b/utility/requirements.txt @@ -0,0 +1,3 @@ +httpx +loguru + From 3c9e59973745fc47b2547822ce33ab0566f87e1c Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Thu, 9 Oct 2025 22:58:13 +0200 Subject: [PATCH 063/126] vllm: turn off V1 --- .github/workflows/mini/docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mini/docker-compose.yaml b/.github/workflows/mini/docker-compose.yaml index 87c5afc63..80a8ba894 100644 --- a/.github/workflows/mini/docker-compose.yaml +++ b/.github/workflows/mini/docker-compose.yaml @@ -116,7 +116,7 @@ services: deploy: {} environment: - VLLM_CPU_KVCACHE_SPACE=8 - #- VLLM_USE_V1=0 # for ibm-granite/granite-embedding-small-english-r2 + - VLLM_USE_V1=0 # for ibm-granite/granite-embedding-small-english-r2 # Default value isn't sufficient for full context length command: > --model ${EMBEDDER_MODEL_NAME:-jinaai/jina-embeddings-v3} From 9dc7ff43347493aba5cc3ae9b71e952dfd3a95cc Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Fri, 10 Oct 2025 09:58:52 +0200 Subject: [PATCH 064/126] Remove redundant files --- .github/workflows/data/simplewiki-100/A.txt | 15 ---- .../data/simplewiki-100/Abbreviation.txt | 4 - .../simplewiki-100/Abrahamic religions.txt | 1 - .../data/simplewiki-100/Acceleration.txt | 26 ------- .../data/simplewiki-100/Ad hominem.txt | 10 --- .../data/simplewiki-100/Addition.txt | 24 ------ .../data/simplewiki-100/Adobe Illustrator.txt | 6 -- .../data/simplewiki-100/Afghanistan.txt | 57 -------------- .github/workflows/data/simplewiki-100/Air.txt | 16 ---- .../data/simplewiki-100/Alan Turing.txt | 24 ------ .../data/simplewiki-100/Alanis Morissette.txt | 16 ---- .../data/simplewiki-100/Albigensian.txt | 0 .../workflows/data/simplewiki-100/Algebra.txt | 51 ------------ .../data/simplewiki-100/American English.txt | 14 ---- .../American Units Of Measurement.txt | 0 .../workflows/data/simplewiki-100/Anatomy.txt | 9 --- .../data/simplewiki-100/Andouille.txt | 3 - .../workflows/data/simplewiki-100/Angel.txt | 69 ---------------- .../workflows/data/simplewiki-100/Angola.txt | 16 ---- .../workflows/data/simplewiki-100/Animal.txt | 18 ----- .../data/simplewiki-100/Animalia.txt | 0 .../workflows/data/simplewiki-100/Apple.txt | 40 ---------- .../data/simplewiki-100/Application.txt | 2 - .../workflows/data/simplewiki-100/April.txt | 12 --- .../data/simplewiki-100/Aquaculture.txt | 5 -- .../data/simplewiki-100/Archaeology.txt | 27 ------- .../data/simplewiki-100/Architecture.txt | 14 ---- .../data/simplewiki-100/Argentina.txt | 27 ------- .../data/simplewiki-100/Arithmetic.txt | 9 --- .../workflows/data/simplewiki-100/Armenia.txt | 21 ----- .github/workflows/data/simplewiki-100/Art.txt | 34 -------- .github/workflows/data/simplewiki-100/As.txt | 0 .../data/simplewiki-100/Asteroid.txt | 7 -- .../data/simplewiki-100/Astronomy.txt | 64 --------------- .../workflows/data/simplewiki-100/Atom.txt | 66 ---------------- .../workflows/data/simplewiki-100/August.txt | 11 --- .../data/simplewiki-100/Australia.txt | 78 ------------------- .../workflows/data/simplewiki-100/Austria.txt | 33 -------- .../Autonomous communities of Spain.txt | 6 -- .../data/simplewiki-100/Bankruptcy.txt | 27 ------- .../workflows/data/simplewiki-100/Beard.txt | 4 - .../data/simplewiki-100/Beekeeping.txt | 12 --- .../workflows/data/simplewiki-100/Beijing.txt | 21 ----- .../workflows/data/simplewiki-100/Being.txt | 4 - .../workflows/data/simplewiki-100/Belgium.txt | 59 -------------- .../workflows/data/simplewiki-100/Berry.txt | 8 -- .../workflows/data/simplewiki-100/Biology.txt | 9 --- .../data/simplewiki-100/Black pudding.txt | 8 -- .../workflows/data/simplewiki-100/Black.txt | 7 -- .../workflows/data/simplewiki-100/Boil.txt | 2 - .../data/simplewiki-100/Boot device.txt | 6 -- .../workflows/data/simplewiki-100/Boot.txt | 3 - .../data/simplewiki-100/Bootlace.txt | 0 .../data/simplewiki-100/Bootstrap.txt | 0 .../workflows/data/simplewiki-100/Botany.txt | 5 -- .../workflows/data/simplewiki-100/Bottle.txt | 2 - .../workflows/data/simplewiki-100/Brazil.txt | 23 ------ .../data/simplewiki-100/Breakfast sausage.txt | 19 ----- .../workflows/data/simplewiki-100/Britain.txt | 0 .../data/simplewiki-100/British English.txt | 15 ---- .../workflows/data/simplewiki-100/Browser.txt | 2 - .../data/simplewiki-100/Bubonic plague.txt | 24 ------ .../data/simplewiki-100/Calculus.txt | 30 ------- .../data/simplewiki-100/Cartography.txt | 8 -- .../data/simplewiki-100/Catharism.txt | 16 ---- .../simplewiki-100/Census of Marine Life.txt | 3 - .../workflows/data/simplewiki-100/Chat.txt | 4 - .../data/simplewiki-100/Chemistry.txt | 22 ------ .../workflows/data/simplewiki-100/China.txt | 45 ----------- .../workflows/data/simplewiki-100/Chinese.txt | 2 - .../workflows/data/simplewiki-100/Chorizo.txt | 6 -- .../data/simplewiki-100/Church (building).txt | 23 ------ .../workflows/data/simplewiki-100/Cities.txt | 0 .../workflows/data/simplewiki-100/City.txt | 34 -------- .../workflows/data/simplewiki-100/Civics.txt | 4 - .../simplewiki-100/Classical Elements.txt | 0 .../data/simplewiki-100/Classical element.txt | 4 - .../workflows/data/simplewiki-100/Coin.txt | 9 --- .../data/simplewiki-100/Colchester.txt | 11 --- .../workflows/data/simplewiki-100/Comedy.txt | 30 ------- .../workflows/data/simplewiki-100/Comet.txt | 12 --- .../data/simplewiki-100/Compound.txt | 1 - .../data/simplewiki-100/Computer science.txt | 16 ---- .../data/simplewiki-100/Computer.txt | 54 ------------- .../simplewiki-100/Conceptual metaphor.txt | 8 -- .../data/simplewiki-100/Contact network.txt | 2 - .../data/simplewiki-100/Continent.txt | 24 ------ .../workflows/data/simplewiki-100/Cooking.txt | 9 --- .../data/simplewiki-100/Cosmology.txt | 12 --- .../data/simplewiki-100/Countries.txt | 0 .../workflows/data/simplewiki-100/Country.txt | 19 ----- .../data/simplewiki-100/Creativity.txt | 5 -- .../workflows/data/simplewiki-100/Creator.txt | 3 - .../workflows/data/simplewiki-100/Crime.txt | 22 ------ .../workflows/data/simplewiki-100/Crust.txt | 3 - .github/workflows/data/simplewiki-100/Cup.txt | 3 - .../workflows/data/simplewiki-100/Farming.txt | 28 ------- .../workflows/data/simplewiki-100/Maize.txt | 8 -- .../data/simplewiki-100/Native American.txt | 42 ---------- .../data/simplewiki-100/Time Cube.txt | 6 -- 100 files changed, 1623 deletions(-) delete mode 100644 .github/workflows/data/simplewiki-100/A.txt delete mode 100644 .github/workflows/data/simplewiki-100/Abbreviation.txt delete mode 100644 .github/workflows/data/simplewiki-100/Abrahamic religions.txt delete mode 100644 .github/workflows/data/simplewiki-100/Acceleration.txt delete mode 100644 .github/workflows/data/simplewiki-100/Ad hominem.txt delete mode 100644 .github/workflows/data/simplewiki-100/Addition.txt delete mode 100644 .github/workflows/data/simplewiki-100/Adobe Illustrator.txt delete mode 100644 .github/workflows/data/simplewiki-100/Afghanistan.txt delete mode 100644 .github/workflows/data/simplewiki-100/Air.txt delete mode 100644 .github/workflows/data/simplewiki-100/Alan Turing.txt delete mode 100644 .github/workflows/data/simplewiki-100/Alanis Morissette.txt delete mode 100644 .github/workflows/data/simplewiki-100/Albigensian.txt delete mode 100644 .github/workflows/data/simplewiki-100/Algebra.txt delete mode 100644 .github/workflows/data/simplewiki-100/American English.txt delete mode 100644 .github/workflows/data/simplewiki-100/American Units Of Measurement.txt delete mode 100644 .github/workflows/data/simplewiki-100/Anatomy.txt delete mode 100644 .github/workflows/data/simplewiki-100/Andouille.txt delete mode 100644 .github/workflows/data/simplewiki-100/Angel.txt delete mode 100644 .github/workflows/data/simplewiki-100/Angola.txt delete mode 100644 .github/workflows/data/simplewiki-100/Animal.txt delete mode 100644 .github/workflows/data/simplewiki-100/Animalia.txt delete mode 100644 .github/workflows/data/simplewiki-100/Apple.txt delete mode 100644 .github/workflows/data/simplewiki-100/Application.txt delete mode 100644 .github/workflows/data/simplewiki-100/April.txt delete mode 100644 .github/workflows/data/simplewiki-100/Aquaculture.txt delete mode 100644 .github/workflows/data/simplewiki-100/Archaeology.txt delete mode 100644 .github/workflows/data/simplewiki-100/Architecture.txt delete mode 100644 .github/workflows/data/simplewiki-100/Argentina.txt delete mode 100644 .github/workflows/data/simplewiki-100/Arithmetic.txt delete mode 100644 .github/workflows/data/simplewiki-100/Armenia.txt delete mode 100644 .github/workflows/data/simplewiki-100/Art.txt delete mode 100644 .github/workflows/data/simplewiki-100/As.txt delete mode 100644 .github/workflows/data/simplewiki-100/Asteroid.txt delete mode 100644 .github/workflows/data/simplewiki-100/Astronomy.txt delete mode 100644 .github/workflows/data/simplewiki-100/Atom.txt delete mode 100644 .github/workflows/data/simplewiki-100/August.txt delete mode 100644 .github/workflows/data/simplewiki-100/Australia.txt delete mode 100644 .github/workflows/data/simplewiki-100/Austria.txt delete mode 100644 .github/workflows/data/simplewiki-100/Autonomous communities of Spain.txt delete mode 100644 .github/workflows/data/simplewiki-100/Bankruptcy.txt delete mode 100644 .github/workflows/data/simplewiki-100/Beard.txt delete mode 100644 .github/workflows/data/simplewiki-100/Beekeeping.txt delete mode 100644 .github/workflows/data/simplewiki-100/Beijing.txt delete mode 100644 .github/workflows/data/simplewiki-100/Being.txt delete mode 100644 .github/workflows/data/simplewiki-100/Belgium.txt delete mode 100644 .github/workflows/data/simplewiki-100/Berry.txt delete mode 100644 .github/workflows/data/simplewiki-100/Biology.txt delete mode 100644 .github/workflows/data/simplewiki-100/Black pudding.txt delete mode 100644 .github/workflows/data/simplewiki-100/Black.txt delete mode 100644 .github/workflows/data/simplewiki-100/Boil.txt delete mode 100644 .github/workflows/data/simplewiki-100/Boot device.txt delete mode 100644 .github/workflows/data/simplewiki-100/Boot.txt delete mode 100644 .github/workflows/data/simplewiki-100/Bootlace.txt delete mode 100644 .github/workflows/data/simplewiki-100/Bootstrap.txt delete mode 100644 .github/workflows/data/simplewiki-100/Botany.txt delete mode 100644 .github/workflows/data/simplewiki-100/Bottle.txt delete mode 100644 .github/workflows/data/simplewiki-100/Brazil.txt delete mode 100644 .github/workflows/data/simplewiki-100/Breakfast sausage.txt delete mode 100644 .github/workflows/data/simplewiki-100/Britain.txt delete mode 100644 .github/workflows/data/simplewiki-100/British English.txt delete mode 100644 .github/workflows/data/simplewiki-100/Browser.txt delete mode 100644 .github/workflows/data/simplewiki-100/Bubonic plague.txt delete mode 100644 .github/workflows/data/simplewiki-100/Calculus.txt delete mode 100644 .github/workflows/data/simplewiki-100/Cartography.txt delete mode 100644 .github/workflows/data/simplewiki-100/Catharism.txt delete mode 100644 .github/workflows/data/simplewiki-100/Census of Marine Life.txt delete mode 100644 .github/workflows/data/simplewiki-100/Chat.txt delete mode 100644 .github/workflows/data/simplewiki-100/Chemistry.txt delete mode 100644 .github/workflows/data/simplewiki-100/China.txt delete mode 100644 .github/workflows/data/simplewiki-100/Chinese.txt delete mode 100644 .github/workflows/data/simplewiki-100/Chorizo.txt delete mode 100644 .github/workflows/data/simplewiki-100/Church (building).txt delete mode 100644 .github/workflows/data/simplewiki-100/Cities.txt delete mode 100644 .github/workflows/data/simplewiki-100/City.txt delete mode 100644 .github/workflows/data/simplewiki-100/Civics.txt delete mode 100644 .github/workflows/data/simplewiki-100/Classical Elements.txt delete mode 100644 .github/workflows/data/simplewiki-100/Classical element.txt delete mode 100644 .github/workflows/data/simplewiki-100/Coin.txt delete mode 100644 .github/workflows/data/simplewiki-100/Colchester.txt delete mode 100644 .github/workflows/data/simplewiki-100/Comedy.txt delete mode 100644 .github/workflows/data/simplewiki-100/Comet.txt delete mode 100644 .github/workflows/data/simplewiki-100/Compound.txt delete mode 100644 .github/workflows/data/simplewiki-100/Computer science.txt delete mode 100644 .github/workflows/data/simplewiki-100/Computer.txt delete mode 100644 .github/workflows/data/simplewiki-100/Conceptual metaphor.txt delete mode 100644 .github/workflows/data/simplewiki-100/Contact network.txt delete mode 100644 .github/workflows/data/simplewiki-100/Continent.txt delete mode 100644 .github/workflows/data/simplewiki-100/Cooking.txt delete mode 100644 .github/workflows/data/simplewiki-100/Cosmology.txt delete mode 100644 .github/workflows/data/simplewiki-100/Countries.txt delete mode 100644 .github/workflows/data/simplewiki-100/Country.txt delete mode 100644 .github/workflows/data/simplewiki-100/Creativity.txt delete mode 100644 .github/workflows/data/simplewiki-100/Creator.txt delete mode 100644 .github/workflows/data/simplewiki-100/Crime.txt delete mode 100644 .github/workflows/data/simplewiki-100/Crust.txt delete mode 100644 .github/workflows/data/simplewiki-100/Cup.txt delete mode 100644 .github/workflows/data/simplewiki-100/Farming.txt delete mode 100644 .github/workflows/data/simplewiki-100/Maize.txt delete mode 100644 .github/workflows/data/simplewiki-100/Native American.txt delete mode 100644 .github/workflows/data/simplewiki-100/Time Cube.txt diff --git a/.github/workflows/data/simplewiki-100/A.txt b/.github/workflows/data/simplewiki-100/A.txt deleted file mode 100644 index dcc31563d..000000000 --- a/.github/workflows/data/simplewiki-100/A.txt +++ /dev/null @@ -1,15 +0,0 @@ -A is the first letter of the English alphabet. The small letter, a, is used as a lowercase vowel. -Overview. -When it is spoken, ā is said as a long a, a diphthong of ĕ and y. A is similar to Alpha of the Greek alphabet. That is not surprising, because it means the same sound. "Alpha and Omega" (the last letter of the Greek alphabet) means from beginning to the end. In musical notation, the letter A is the symbol of a note in the scale, below B and above G. -A is the letter that was used to represent a team in an old TV show, The A-Team. A capital a is written "A". Use a capital A at the start of a sentence if writing. A is also a musical note, sometimes referred to as "La". -Origin. -The letter 'A' was in the Phoenician alphabet's aleph. This symbol came from a simple picture of an ox head. -This Phoenician letter helped make the basic blocks of later types of the letter. The Greeks later modified this letter and used it as their letter alpha. The Greek alphabet was used by the Etruscans in northern Italy, and the Romans later modified the Etruscan alphabet for their own language. -Using the letter. -The letter A has six different sounds. It can sound like æ, in the International Phonetic Alphabet, such as the word "pad". Other sounds of this letter are in the words "father", which developed into another sound, such as in the word "ace". -Use in mathematics. -In algebra, the letter "A" along with other letters at the beginning of the alphabet is used to represent known quantities. -In geometry, capital A, B, C etc. are used to label line segments, lines, etc. Also, A is typically used as one of the letters to label an angle in a triangle. -Its letter shape is referred to abstractly in Sir William Vallance Douglas Hodge's 5th postulate, the basis for, as one of the Millennium Prize Problems, the Hodge Conjecture. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Abbreviation.txt b/.github/workflows/data/simplewiki-100/Abbreviation.txt deleted file mode 100644 index f9cdff783..000000000 --- a/.github/workflows/data/simplewiki-100/Abbreviation.txt +++ /dev/null @@ -1,4 +0,0 @@ -An abbreviation is a shorter way to write a word or phrase. People use abbreviations for words that they write a lot. The English language occasionally uses the apostrophe mark ' to show that a word is written in a shorter way, but some abbreviations do not use this mark. More often, they use periods, especially the ones that come from the Latin language. Common Latin abbreviations include i.e. [id est] "that is", e.g. [exempli gratia] "for example", and et al. [et alia] "and others". -Some new abbreviations have been created by scientists, by workers in companies and governments, and by people using the Internet. -People often think words are abbreviations when in fact they are acronyms. -Here are examples of common acronyms: The word "radar" is an acronym for "Radio Detection and Ranging". The name of the large computer company IBM comes from the words "International Business Machines". The name of the part of the United States government that sends rockets into outer space is NASA, from the words "National Aeronautics and Space Administration". When people using the Internet think that something is very funny, they sometimes write "LOL" to mean "Laughing Out Loud". People sometimes write "ASAP" for "As Soon As Possible". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Abrahamic religions.txt b/.github/workflows/data/simplewiki-100/Abrahamic religions.txt deleted file mode 100644 index f3c5d44ff..000000000 --- a/.github/workflows/data/simplewiki-100/Abrahamic religions.txt +++ /dev/null @@ -1 +0,0 @@ -The Abrahamic religions, are a group of religious communities of faith that claim descent from the religion of the ancient Israelites and the worship of the God of Abraham. The Abrahamic religions are monotheistic. The term derives from patriarch Abraham, a major biblical figure from The Hebrew Bible. The major Abrahamic religions are Christianity, Islam, Judaism and the Bahá'í Faith. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Acceleration.txt b/.github/workflows/data/simplewiki-100/Acceleration.txt deleted file mode 100644 index 2416f3995..000000000 --- a/.github/workflows/data/simplewiki-100/Acceleration.txt +++ /dev/null @@ -1,26 +0,0 @@ -Acceleration is a measure of how fast velocity changes. Acceleration is the change of velocity divided by the change of time. Acceleration is a vector, and therefore includes both a size and a direction. Acceleration is also a change in speed and direction, there is: -Speed (a scalar quantity) (uses no direction) -Velocity (a vector quantity) (uses a direction) -The measurement of how fast acceleration changes is called jerk. -Finding acceleration. -Acceleration is the rate of change of the velocity of an object. Acceleration formula_1 can be found by using: -formula_2 -where -formula_3 is the velocity at the start -formula_4 is the velocity at the end -formula_5 is the time at the start -formula_6 is the time at the end -Sometimes the change in velocity formula_7 is written as Δformula_8. Sometimes the change in time formula_9 is written as Δt. -In difficult situations, the acceleration can be calculated using mathematics: in calculus, acceleration is the derivative of the velocity (with respect to time), formula_10. -Units of measurement. -Acceleration has its own units of measurement. For example, if velocity is measured in meters per second, and if time is measured in seconds, then acceleration is measured in meters per second squared (m/s2). -Other words. -Acceleration can be positive or negative. When the acceleration is negative (but the velocity does not change direction), it is sometimes called deceleration. For example, when a car brakes it decelerates. Physicists usually only use the word "acceleration". -Newton's second law of motion. -Newton's laws of motion are rules for how things move. These rules are called "laws of motion". Isaac Newton is the scientist who first wrote down the main laws of motion. -According to Newton's Second Law of Motion, the force something needs to accelerate an object depends on the object's mass (the amount of "stuff" the object is made from or how "heavy" it is). -The formula of Newton's Second Law of Motion is formula_11, -where formula_12 is the acceleration, formula_13 is the force, and formula_14 the mass. -This formula is very well-known, and it is very important in physics. Newton's Second Law of Motion, in short "Newton's Second Law", is often one of the first things that physics students learn. -Deceleration. -Deceleration is negative or backwards acceleration. This means that something slows down instead of speeding up. For example, when a car brakes, it is decelerating. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Ad hominem.txt b/.github/workflows/data/simplewiki-100/Ad hominem.txt deleted file mode 100644 index a51049419..000000000 --- a/.github/workflows/data/simplewiki-100/Ad hominem.txt +++ /dev/null @@ -1,10 +0,0 @@ -Ad hominem is a Latin word for a type of argument. It is a word often used in rhetoric. Rhetoric is the science of speaking well, and convincing other people of your ideas. -Translated to English, "ad hominem" means "against the person". In other words, when someone makes an ad hominem, they are attacking the person they are arguing against, instead of what they are saying. -The term comes from the Latin word "homo", which means human. "Hominem" is a gender neutral version of the word "homo". In ancient Rome it referred to all free men, or in other words, all free human beings. -Ad hominem can be a way to use reputation, rumors and hearsay to change the minds of other people listening. When a social network has already excluded or exiled one person, or applied a negative label to them, this can work more often. -It is most of the time considered to be a weak and poor argument. In courts and in diplomacy ad hominems are not appreciated. -Ad hominems are not wrong every time. For example, when people think that someone can't be trusted, things that they have said previously can be doubted. -What an ad hominem argument looks like. -In logic, a proof is something that starts with premises, and goes through a few logical arguments, to reach a conclusion. -Ad hominem example. -In this example it can be seen that the (completely unrelated) fact that person A is uneducated and poor is used to prove that abortion should not be illegal. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Addition.txt b/.github/workflows/data/simplewiki-100/Addition.txt deleted file mode 100644 index 983d43022..000000000 --- a/.github/workflows/data/simplewiki-100/Addition.txt +++ /dev/null @@ -1,24 +0,0 @@ -"Not to be confused with building extensions which are also called additions." -In mathematics, addition, represented by the symbol formula_1, is an operation which combines two mathematical objects together into another mathematical object of the same type, called the sum. Addition can occur with simple objects such as numbers, and more complex objects and concepts such as vectors and matrices. -Addition has several important properties. It is commutative, meaning that the order of the operands does not matter, and it is associative, meaning that when one adds more than two numbers, the order in which addition is performed does not matter (see "Summation"). Repeated addition of 1 is the same as counting. Addition of 0 does not change a number. Addition also obeys predictable rules concerning related operations such as subtraction and multiplication. -Arithmetic. -In arithmetic, addition is the operation where two or more numbers called "addends" are used to make a new number, which is the "sum" or total that is expressed with the equals sign. The symbol for addition, in infix notation, is the plus sign "+" placed between the operands. -Counting examples. -For example, there are objects in two groups (as shown on the right). The objects are various shapes, where one group has 3 of them while the other has 2. When the two groups combine into one, the overall amount (sum) of the shapes become 5. -Vertical Addition. -The animation above demonstrates the addition of seven hundred eighty six and four hundred sixty seven. The problem's digits have been separated into units, tens and hundreds (see Place value). -First, the units 6 and 7 are added together to make 13, so 1 ten and 3 units, with the 3 written below and the 1 ten carried to the tens column. Next, in the tens column, the 1, 8, and 6 are added together to make 15 tens, so 1 hundred and 5 tens, with the 5 written below and the 1 hundred carried to the hundreds column. Finally, in the hundreds column, 1, 7, and 4 are added together to make 12 hundreds, so 1 thousand and 2 hundreds, with the 2 written below and the 1 thousand carried to the thousand column. The final answer is thus one thousand two hundred fifty three. -A measurement example. -Tom wants to know the distance between his house and Sally's house. Bob's house is 300 m east of Tom's house. Sally's house is 120 m east of Bob's house: -Tom's house formula_2 300 m formula_3 Bob's house formula_2 120 m formula_3 Sally's house -The distance from Tom's house to Sally's house can be found by adding the distances already measured. The distance from Tom's house to Bob's house, added to the distance from Bob's house to Sally's house, is the same as the distance from Tom's house to Sally's house. That is, 300 m plus 120 m. -formula_6 -Hence Sally's house is 420 m to the east of Tom's house. -Properties. -Commutativity. -Addition is commutative, meaning that one can change the order of the numbers in a sum, but still get the same result. For example: -formula_7 and formula_8 -Associativity. -Addition is also associative, which means that when three or more numbers are added together, the order of operations does not change the result. -For any three numbers formula_9, formula_10, and formula_11, it is true that formula_12. For example, formula_13 and formula_14, which means that formula_15. -When addition is used together with other operations, the order of operations becomes important. In the standard order of operations, addition is to be computed later than exponentiation, roots, multiplication and division, but has equal importance as subtraction. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Adobe Illustrator.txt b/.github/workflows/data/simplewiki-100/Adobe Illustrator.txt deleted file mode 100644 index 974f5d840..000000000 --- a/.github/workflows/data/simplewiki-100/Adobe Illustrator.txt +++ /dev/null @@ -1,6 +0,0 @@ -Adobe Illustrator is a computer program for making graphic design and illustrations. It is made by Adobe Systems. Pictures created in "Adobe Illustrator" can be made bigger or smaller, and look exactly the same at any size. It works well with the rest of the products with the Adobe name. -History. -It was first released in 1986 for the Apple Macintosh. The latest version is Adobe Illustrator 2024, part of Adobe Creative Cloud. -References. -<templatestyles src="Reflist/styles.css" /> - "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Afghanistan.txt b/.github/workflows/data/simplewiki-100/Afghanistan.txt deleted file mode 100644 index 20b6152ff..000000000 --- a/.github/workflows/data/simplewiki-100/Afghanistan.txt +++ /dev/null @@ -1,57 +0,0 @@ -Afghanistan, officially the Islamic Emirate of Afghanistan is a country in Asia. It borders Pakistan in the south and east, Iran in the west, Turkmenistan, Uzbekistan and Tajikistan in the north, and China in the far northeast. Kabul is the capital city. -Afghanistan is currently governed by the Taliban, after the collapse of the internationally recognized Islamic Republic of Afghanistan on 15 August 2021. In early times people passed through it with animals and other goods as it connected China and India with Central Asia and the Middle East. More recently, Afghanistan has been damaged by many years of war. There are not enough jobs. -The country is around in size. There are 40.976 million people in Afghanistan. There are about 3 million Afghan refugees (people who had to leave the country) in Pakistan and Iran. In 2011 Kabul, had about 3,691,400 people living in it. -United Nations Human Rights Council decided in October 2021 to appoint an independent expert, known as a United Nations special rapporteur on Afghanistan, to find out about violations carried out by the Taliban and others who are now part of a big conflict. -Economy. -The economy does not have growth (as April 2024), of that kind that is called GDP growth, according to Worldbank.org. In regard to the mining industry: In 2024, Chinese engineers broke ground for a mine; "The deposit is estimated to [... have] 11.5 million tons of copper ore". -Geography. -Afghanistan has many mountains. The mountains are called the Hindu Kush and Himalayas. The tallest mountain in Afghanistan is Mount Nowshak. There are plains (which have soil that is good for growing plants) and foothills. Parts of the country are also dry, especially the Registan Desert. Afghanistan has snow and glaciers in the mountains. Amu Darya is the big water stream, or river. -The country has a lot of a valuable stone called lapis lazuli, which was used to decorate the tomb of the Egyptian pharaoh Tutankhamun. -Climate. -Afghanistan has a continental climate with hot summers and cold winters. Having no water sometimes causes problems for farmers. Sandstorms happen a lot in the desert. -Plants and animals. -Southern Afghanistan has not many plants because it is dry. There are more plants where there is more water. Mountains have forests of pine and fir, cedar, oak, walnut, alder, and ash trees. -Afghanistan's wild animals live in the mountains. There are wolves, foxes, jackals, bears, and wild goats, gazelles, wild dogs, camels, and wild cats such as the snow leopard in the country. The birds are falcons, eagles and vultures. The Rhesus Macaque and the red flying squirrel are also in Afghanistan. -Many years of war, hunting, and years of no water have killed animals in Afghanistan. There used to be tigers in Afghanistan, but now there aren't any. Bears and wolves are almost gone. -People and culture. -Many people have moved through or invaded the land of Afghanistan. Today's people of Afghanistan are known as "Afghans". -The largest group of people are the Pashtuns. These make up about half the population. Tajiks are the second-largest ethnic group, making up about one-fifth of the population. Before the 20th century, Tajiks were called Sarts and some come from Iranian peoples. Most Pashtuns are also related to the Iranian peoples. Some Pashtuns and Tajiks marry each other but at the same time they are rivals. The third-largest group are the Hazaras. They are native to the Hazaristan area in central Afghanistan. The country's other groups include the Uzbek, Aimaq, Turkmen, Nuristani, Baloch, and Pashayi. -Dari-Persian and Pashto are the official languages of Afghanistan. Many people speak both languages. Both are Indo-European languages from the Iranian languages sub-family. They are usually written with the Arabic alphabet. Uzbek and Turkmen are widely spoken in the north and Nuristani and Pashai are spoken in the east. Around 99% of Afghans follow the religion of Islam. -Afghanistan is a largely rural country. This means there are only a few major cities. About one fifth of the population live in cities. Kabul, the capital, is the largest city. It is south of the Hindu Kush range and alongside the Kabul River. Other cities are Kandahar, Herat, Mazar-e Sharif, and Jalalabad. The rural population is made up of farmers and nomads. The farmers live mainly in small villages along the rivers. The nomads live in tents while moving from place to place with their animals and belongings. Some people live in the high central mountains. Some live in the deserts in the south and southwest. Millions of people left Afghanistan to get away from the wars that happened in the late 20th and early 21st centuries. Most of them went to Pakistan and Iran. -History. -Afghanistan is in the path of important trade routes that connect southern and eastern Asia to Europe and the Middle East. Because of this, many empire builders have tried to rule over the area. Signs that these emperors were near Afghanistan still exist in many parts of the country. Afghanistan is near what used to be the Silk Road. The peoples of Afghanistan helped develop major world religions, traded and exchanged many products, and sometimes controlled politics and culture in Asia. -Prehistory. -Archaeologists digging a cave in Badakhshan discovered that people lived in the country as early as 100,000 years ago. They found the skull of a Neanderthal, or early human, as well as tools from about 30,000 years ago. In other parts of Afghanistan, archaeologists uncovered pottery and tools that are 4,000 to 11,000 years old—evidence that Afghans were among the first people in the world to grow crops and raise animals. -Farmers and herders settled in the plains surrounding the Hindu Kush as early as 7000 B.C. These people may have grown rich off the lapis lazuli they found along riverbeds, which they traded to early city sites to the west, across the Iranian plateau and Mesopotamia. As farms and villages grew these ancient people started irrigation (digging ditches for water so it flows to crops) that allowed them to grow crops on the northern Afghanistan desert plains. This civilization (advanced state of organization) is today called BMAC (Bactria–Margiana Archaeological Complex), or the "Oxus civilization". -The Oxus civilization expanded as far east as western edge of the Indus Valley during the period between 2200 and 1800 B.C. These people, who were the ancestors of the Indo-Aryans, used the term "Aryan" to identify their ethnicity, culture, and religion. Scholars know this when they read the ancient texts of these people; the Avesta of Iranic peoples and the Vedas of Indo-Aryans. -Zoroaster, the founder of the Zoroastrian religion, the world's earliest monotheistic religion, (meaning a religion believing in one god) lived in the area (somewhere north of today's Afghanistan), around 1000 B.C. -Ancient history. -Before the middle of the sixth century BCE, Afghanistan was held by the Medes. Then the Achaemenids took over control of the land and made it part of the Persian empire. Alexander the great defeated and conquered the Persian Empire in 330 BCE. He founded some cities in the area. The people used Macedonian culture and language. After Alexander, Seleucids, Mauryas, Greco-Bactrians, Scythians, Kushans, Parthians, Guptas and Sassanians ruled the area. -Kushans spread Buddhism from India in the 1st century BCE, and Buddhism remained an important religion in the area until the Islamic conquest in the 7th century CE. -The Buddhas of Bamiyan were giant statues, a reminder of Buddhism in Afghanistan. They were destroyed by the Taliban in 2001. There were international protests. The Taliban believe that the ancient statues were un-Islamic and that they had a right to destroy them. -Medieval history. -Arabs introduced Islam in the 7th century and slowly began spreading the new religion. In the 9th and 10th centuries, many local Islamic dynasties rose to power inside Afghanistan. One of the earliest was the Tahirids, whose kingdom included Balkh and Herat; they established independence from the Abbasids in 820. The Tahirids were succeeded in about 867 by the Saffarids of Zaranj in western Afghanistan. Local princes in the north soon became feudatories of the powerful Samanids, who ruled from Bukhara. From 872 to 999, north of the Hindu Kush in Afghanistan enjoyed a golden age under Samanid rule. -In the 10th century, the local Ghaznavids turned Ghazni into their capital and firmly established Islam throughout all areas of Afghanistan, except the Kafiristan region in the northeast. Mahmud of Ghazni, a great Ghaznavid sultan, conquered the Multan and Punjab region, and carried raids into the heart of India. Mohammed bin Abdul Jabbar Utbi, a historian from the 10th century, wrote that thousands of "Afghans" were in the Ghaznavid army. The Ghaznavid dynasty was replaced by the Ghorids of Ghor in the late 12th century, who reconquered Ghaznavid territory in the name of Islam and ruled it until 1206. The Ghorid army also included ethnic Afghans. -Afghanistan was recognized as "Khorasan", meaning "land of the rising sun," which was a prosperous and independent geographic region reaching as far as the Indus River. -All the major cities of modern Afghanistan were centers of science and culture in the past. The New Persian literature arose and flourished in the area. The early Persian poets such as Rudaki were from what is now Afghanistan. Moreover, Ferdowsi, the author of Shahnameh, the national epic of Iran, and Rumi, the famous Sufi poet, were also from here. It has produced scientists such as Avicenna, Al-Farabi, Al-Biruni, Omar Khayyám, Al-Khwarizmi, and many others who are widely known for their important contributions in areas such as mathematics, astronomy, medicine, physics, geography, and geology. It remained the cultural capital of Persia until the devastating Mongol invasion in the 13th century. -Timur, the Turkic conqueror, took over in the end of the 14th century and began to rebuild cities in this region. Timur's successors, the Timurids (1405–1507), were great patrons of learning and the arts who enriched their capital city of Herat with fine buildings. Under their rule Afghanistan enjoyed peace and prosperity. -Between south of the Hindu Kush and the Indus River (today's Pakistan) was the native land of the Afghan tribes. They called this land "Afghanistan" (meaning "land of the Afghans"). The Afghans ruled the rich northern Indian subcontinent with their capital at Delhi. From the 16th to the early 18th century, Afghanistan was disputed between the Safavids of Isfahan and the Mughals of Agra who had replaced the Lodi and Suri Afghan rulers in India. The Safavids and Mughals occasionally oppressed the native Afghans but at the same time the Afghans used each empire to punish the other. In 1709, the Hotaki Afghans rose to power and completely defeated the Persian Empire. Then they marched towards the Mughals of India and defeated them with the help of the Afsharid forces under Nader Shah Afshar. -In 1747, after Nader Shah of Persia was killed, a great leader named Ahmad Shah Durrani united all the different Muslim tribes and established the Afghan Empire (Durrani Empire). He is considered the founding father of the modern state of Afghanistan while Mirwais Hotak is the grandfather of the nation. -Since the 1800s. -During the 1800s, Afghanistan became a buffer zone between two powerful empires, the British Indian Empire and the Russian Empire. As British India advanced into Afghanistan, Russia felt threatened and expanded southward across Central Asia. To stop the Russian advance, Britain tried to make Afghanistan part of its empire but the Afghans fought wars with British-led Indians from 1839 to 1842 and from 1878 to 1880. After the third war in 1919, Afghanistan under King Amanullah gained respect and recognition as a completely independent state. -The Kingdom of Afghanistan was a constitutional monarchy established in 1926. It was the successor state to the Emirate of Afghanistan. On 27 September 1934, during the reign of Zahir Shah, the Kingdom of Afghanistan joined the League of Nations. During World War II, Afghanistan remained neutral. It pursued a diplomatic policy of non-alignment. -The creation of Pakistan in 1947 as its eastern neighbor created problems. In 1973, political crises led to the overthrow of the king. The country's new leader ended the monarchy and made Afghanistan a republic. In 1978, a Communist political party supported by the Soviet Union seized control of Afghanistan's government. This move sparked rebellions throughout the country. The government asked the Soviet Union for military assistance. The Soviets took advantage of the situation and invaded Afghanistan in December 1979. -Most people in Afghanistan opposed the sudden Soviet presence in their country. For nearly a decade, anti-Communist Islamic forces known as "Mujahideen" were trained in Pakistan to fight the Soviets and the Afghan government. The United States and other anti-Soviet countries supported the Mujahideen. In the long war, over one million Afghan civilians were killed. The Soviet Army also lost more than 15,000 soldiers in that war. Millions of Afghans left their country to stay safe in neighboring Pakistan and Iran. In 1989 the Soviet Army withdrew the last of its troops. -After the Soviets left in 1989, the Afghan Civil War started; different Afghan warlords began fighting for control of the country. The warlords received support from other countries, including neighboring Pakistan and Iran. A very conservative Islamic group known as the Taliban emerged in an attempt to end the civil war. By the late 1990s the Taliban had gained control over 95% of Afghanistan. A group known as the Northern Alliance, based in northern Afghanistan near the border with Tajikistan, continued to fight against the Taliban. -The Taliban ruled Afghanistan according to their strict version of Islamic law. People whom the Taliban believed violated these laws were given cruel punishments. In addition, the Taliban completely restricted the rights of women. Because of such policies, most countries refused to recognize the Taliban government. Only Pakistan, Saudi Arabia and the United Arab Emirates accepted them as the official government. The Taliban also angered other countries by allowing suspected terrorists to live freely in Afghanistan. Among them were Osama bin Laden and members of the al-Qaeda terrorist network. In September 2001, the United States blamed bin Laden for the terrorist attacks on the World Trade Center in New York City and the Pentagon outside Washington, D.C. The Taliban refused to hand him over to the United States. In response, the United States and its allies launched a bombing campaign against al-Qaeda in October 2001. Within months the Taliban abandoned Kabul, and a new government led by Hamid Karzai came to power, but fighting between the Taliban and US-led armies continued. Taliban fighters have gone into Afghanistan from neighboring Pakistan. Afghans accused Pakistan's military of being behind the Taliban militants but Pakistan rejected this and stated that a stable Afghanistan is in Pakistan's own interest. -In December 2004, Hamid Karzai became the first democratically elected president of Afghanistan. NATO began rebuilding Afghanistan, including its military and government institutions. Many schools and colleges were built. Freedom for women improved. Women can study, work, drive, and run for office. Many Afghan women work as politicians, some are ministers while at least one is a mayor. Others have opened businesses, or joined the military or police. Afghanistan's economy has also improved dramatically, and NATO agreed in 2012 to help the country for at least another 10 years after 2014. Afghanistan improved diplomatic ties with many countries in the world and continues. -In August 2021, the Cabinet of Afghanistan lost its power. Most of the country fell to the Taliban on 15 August 2021 with President Ashraf Ghani escaping the country. As of 18 August 2021, the former government's last remaining holdout is the Panjshir Valley. -Government. -Since the Taliban captured Kabul on 15 August 2021, the governance of Afghanistan is disputed between the Islamic Emirate of Afghanistan and the Islamic Republic of Afghanistan. -According to Transparency International, Afghanistan remains in the top most corrupt countries list. -Provinces. -As of 2004, there are thirty-four provinces. Each province is divided into districts. (For cities see List of cities in Afghanistan.) -Notes. -<templatestyles src="Reflist/styles.css" /> -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Air.txt b/.github/workflows/data/simplewiki-100/Air.txt deleted file mode 100644 index f6329795a..000000000 --- a/.github/workflows/data/simplewiki-100/Air.txt +++ /dev/null @@ -1,16 +0,0 @@ -Air is the Earth's atmosphere. Air is a mixture of many gases and tiny dust particles. It is the clear gas in which living things live and breathe. It has an indefinite shape and volume. It has mass and weight, because it is matter. The weight of air creates atmospheric pressure. There is no air in outer space. -Earth's atmosphere is composed of about 78 percent nitrogen, 21 percent oxygen, 0.9 percent argon, and 0.1 percent other gases. -Animals live and need to breathe the oxygen in the atmosphere. In breathing, the lungs put oxygen into the blood, and send back carbon dioxide to the air. Plants need the carbon dioxide in the air to live. They give off the oxygen that we breathe. Without it animals die of asphyxia. -Air can be polluted by some gases (such as carbon monoxide, hydrocarbons, and nitrogen oxides), smoke, and ash. This air pollution causes various problems including smog, acid rain and global warming. It can damage people's health and the environment. There are debates about whether or not to act upon climate change, but soon enough the Earth will heat up too much, causing it to become too hot and not support life. Some say fewer people would die of cold weather, and that is true but there is already a huge amount of people dying from heat and that number is and will keep increasing more and more. -Since early times, air has been used to create technology. Ships moved with sails and windmills used the mechanical motion of air. Aircraft use propellers to move air over a wing, which allows them to fly. Pneumatics use air pressure to move things. Since the late 1900s, air power is also used to generate electricity. -Air is invisible: it cannot be seen by the eye, though a shimmering in hot air can be seen. -Air is one of the 4 classical elements (water, air, earth and fire). -Main history. -Original atmosphere. -At first it was mainly a hydrogen atmosphere. It has changed dramatically on several occasions—for example, the Great Oxygenation Event 2.4 billion years ago, greatly increased oxygen in the atmosphere from practically no oxygen to levels closer to present day. Humans have also contributed to significant changes in atmospheric composition through air pollution, especially since industrialisation, leading to rapid environmental change such as ozone depletion and global warming. -Second atmosphere. -Out gassing from volcanism, supplemented by gases produced during the late heavy bombardment of Earth by huge asteroids, produced the next atmosphere, consisting largely of nitrogen plus carbon dioxide and inert gases. -Third atmosphere. -The constant re-arrangement of continents by plate tectonics influences the long-term evolution of the atmosphere. Carbon dioxide was transferred to and from large continental carbonate stores. Free oxygen did not exist in the atmosphere until about 2.4 billion years ago. The Great Oxygenation Event is shown by the end of the banded iron formations. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Alan Turing.txt b/.github/workflows/data/simplewiki-100/Alan Turing.txt deleted file mode 100644 index 8993627f9..000000000 --- a/.github/workflows/data/simplewiki-100/Alan Turing.txt +++ /dev/null @@ -1,24 +0,0 @@ -Alan Mathison Turing OBE FRS (London, 23 June 1912 – Wilmslow, Cheshire, 7 June 1954) was an English mathematician and computer scientist. He was born in Maida Vale, London. -Early life and family. -Alan Mathison Turing was born in Maida Vale, London on 23 June 1912. His father was part of a family of merchants from Scotland. His mother, Ethel Sara, was the daughter of an engineer. -Education. -Turing went to St. Michael's, a school at 20 Charles Road, St Leonards-on-sea, when he was five years old. -"This is only a foretaste of what is to come, and only the shadow of what is going to be.” – Alan Turing. -The Stoney family were once prominent landlords in North Tipperary. His mother Ethel Sara Stoney (1881–1976) was daughter of Edward Waller Stoney (Borrisokane, North Tipperary) and Sarah Crawford (Cartron Abbey, Co. Longford), who were Protestant Anglo-Irish gentry. She was educated in Dublin at Alexandra School and College. On 1 October 1907, she married Julius Mathison Turing, who was Reverend John Robert Turing and Fanny Boyd, in Dublin. Alan Turing was born on 23 June 1912. He would go on to be regarded as one of the greatest figures of the twentieth century. -Alan was a brilliant mathematician and cryptographer. He became the founder of modern-day computer science and artificial intelligence. He designed a machine at Bletchley Park to break secret Enigma encrypted messages used by the Nazi German war machine to protect sensitive commercial, diplomatic and military communications during World War 2. This made the single biggest contribution to the Allied victory in the war against Nazi Germany. It possibly saved the lives of an estimated 2 million people, and shortened World War II. -In 2013, almost 60 years later, Turing received a posthumous Royal Pardon from Queen Elizabeth II. Today, the “Turing law” grants an automatic pardon to men who died before the law came into force, making it possible for living convicted gay men to seek pardons for offences now no longer on the statute book. -Turing died in 1954, after being subjected by a British court to chemical castration. He is known to have ended his life at the age of 41 years, by eating an apple laced with cyanide. -Career. -Turing was one of the people who worked on the first computers. He created the theoretical Turing machine in 1936. The machine was imaginary, but it included the idea of a computer program. -Turing was interested in artificial intelligence. He proposed the Turing test, to say when a machine could be called "intelligent". A computer could be said to "think" if a human talking with it could not tell it was a machine. -During World War II, Turing worked with others to break German ciphers (secret messages). He worked for the Government Code and Cypher School (GC&CS) at Bletchley Park, Britain's codebreaking centre that produced Ultra intelligence. -Using cryptanalysis, he helped to break the codes of the Enigma machine. After that, he worked on other German codes. -From 1945 to 1947, Turing worked on the design of the ACE (Automatic Computing Engine) at the National Physical Laboratory. He presented a paper on 19 February 1946. That paper was "the first detailed design of a stored-program computer". Although it was possible to build ACE, there were delays in starting the project. In late 1947 he returned to Cambridge for a sabbatical year. While he was at Cambridge, the Pilot ACE was built without him. It ran its first program on 10 May 1950. -Private life. -Turing was a homosexual man. In 1952, he admitted having had sex with a man in England. At that time, homosexual acts were illegal. Turing was convicted. He had to choose between going to jail and taking hormones to lower his sex drive. He decided to take the hormones. After his punishment, he became impotent. He also grew breasts. -In May 2012, a private member's bill was put before the House of Lords to grant Turing a statutory pardon. In July 2013, the government supported it. A royal pardon was granted on 24 December 2013. -Death. -In 1954, Turing died from cyanide poisoning. The cyanide came from either an apple which was poisoned with cyanide, or from water that had cyanide in it. The reason for the confusion is that the police never tested the apple for cyanide. It is also suspected that he committed suicide. -The treatment forced on him is now believed to be very wrong. It is against medical ethics and international laws of human rights. In August 2009, a petition asking the British Government to apologise to Turing for punishing him for being a homosexual was started. The petition received thousands of signatures. Then Prime Minister, Gordon Brown acknowledged the petition. He called Turing's treatment "appalling". -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Alanis Morissette.txt b/.github/workflows/data/simplewiki-100/Alanis Morissette.txt deleted file mode 100644 index 4c4d1ed7d..000000000 --- a/.github/workflows/data/simplewiki-100/Alanis Morissette.txt +++ /dev/null @@ -1,16 +0,0 @@ -Alanis Nadine Morissette (born June 1, 1974) is a Grammy Award-winning Canadian-American singer and songwriter. She was born in Ottawa, Canada. She began singing in Canada as a teenager in 1990. In 1995, she became popular all over the world. -As a young child in Canada, Morissette began to act on television, including 5 episodes of the long-running series, "You Can't Do That on Television". Her first album was released only in Canada in 1990. -Her first international album was "Jagged Little Pill", released in 1995. It was a rock-influenced album. "Jagged" has sold more than 33 million units globally. It became the best-selling debut album in music history. Her next album, "Supposed Former Infatuation Junkie", was released in 1998. It was a success as well. Morissette took up producing duties for her next albums, which include "Under Rug Swept", "So-Called Chaos" and "Flavors of Entanglement". Morissette has sold more than 60 million albums worldwide. -She also acted in several movies, including Kevin Smith's "Dogma", where she played God. -About her life. -Alanis Morissette was born in Riverside Hospital of Ottawa in Ottawa, Ontario. Her father is French-Canadian. Her mother is from Hungary. She has an older brother, Chad, and a twin brother, Wade, who is 12 minutes younger than she is. Her parents had worked as teachers at a military base in Lahr, Germany. -Morissette became an American citizen in 2005. She is still Canadian citizen. -On May 22, 2010, Morissette married rapper Mario "MC Souleye" Treadway. -Jagged Little Pill. -Morissette has had many albums. Her 1995 album "Jagged Little Pill" became a very popular album. It has sold over 30 million copies worldwide. The album caused Morissette to win four Grammy Awards. The album "Jagged Little Pill" touched many people. -On the album, Morissette sang songs about many different things. These things include: -Discography. -Selected songs. -Morissette has written many songs. Some of her most famous songs are: -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Albigensian.txt b/.github/workflows/data/simplewiki-100/Albigensian.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-100/Algebra.txt b/.github/workflows/data/simplewiki-100/Algebra.txt deleted file mode 100644 index 083cd3cb9..000000000 --- a/.github/workflows/data/simplewiki-100/Algebra.txt +++ /dev/null @@ -1,51 +0,0 @@ -Algebra (from Arabic: الجبر, transliterated "al-jabr", meaning "completion") is a part of mathematics. It uses variables to represent a value that is not yet known or can be replaced with any value. When an equals sign (=) is used, this is called an equation. A very simple equation using a variable is: formula_1. In this example, formula_2, or it could also be said that "formula_3 equals five". This is called "solving for" formula_3. -Besides equations, there are inequalities ("less than" and "greater than"). A special type of equation is called the function. This is often used in making graphs because it always turns one input into one output. -Algebra can be used to solve real problems because the rules of algebra work in real life and numbers can be used to represent the values of real things. Physics, engineering and computer programming are areas that use algebra all the time. It is also useful to know in surveying, construction and business, especially accounting. -People who do algebra use the rules of numbers and mathematical operations used on numbers. The simplest are adding, subtracting, multiplying, and dividing. More advanced operations involve exponents, starting with squares and square roots. -Algebra was first used to solve equations and inequalities. Two examples are linear equations (the equation of a straight line, formula_5 or formula_6) and quadratic equations, which has variables that are squared (multiplied by itself, for example: formula_7, formula_8, or formula_9). -History. -Early forms of algebra were developed by the Babylonians and Greek geometers such as Hero of Alexandria. However the word "algebra" is a Latin form of the Arabic word "Al-Jabr" ("casting") and comes from a mathematics book "Al-Maqala fi Hisab-al Jabr wa-al-Muqabilah", ("Essay on the Computation of Casting and Equation") written in the 9th century by a Persian mathematician, Muhammad ibn Mūsā al-Khwārizmī, who was a Muslim born in Khwarizm in Uzbekistan. He flourished under Al-Ma'moun in Baghdad, Iraq through 813-833 CE, and died around 840 CE. The book was brought into Europe and translated into Latin in the 12th century. The book was then given the name "Algebra". (The ending of the mathematician's name, al-Khwarizmi, was changed into a word easier to say in Latin, and became the English word "algorithm"). -Examples. -Here is a simple example of an algebra problem: -Sue has 12 candies, and Ann has 24 candies. They decide to share so that they have the same number of candies. How many candies will each have? -These are the steps you can use to solve the problem: -With practice, algebra can be used when faced with a problem that is too hard to solve any other way. Problems such as building a freeway, designing a cell phone, or finding the cure for a disease all require algebra. -Writing algebra. -As in most parts of mathematics, adding formula_22 to formula_23 (or formula_22 plus formula_23) is written as formula_26; -subtracting formula_23 from formula_22 (or formula_22 minus formula_23) is written as formula_31; -and dividing formula_22 by formula_23 (or formula_22 over formula_23) is written as formula_36 or formula_37. -In algebra, multiplying formula_22 by formula_23 (or formula_22 times formula_23) can be written in 3 different ways: formula_42, formula_43 or just formula_44. All of these notations mean the same thing: formula_22 times formula_23. The symbol "formula_47" used in arithmetic is not used in algebra, because it looks too much like the letter formula_3, which is often used as a variable. -When we multiply a number and a variable in algebra, we can simply write the number in front of the letter: formula_49. When the number is 1, then it is not written because 1 times any number is that number (formula_50) and so it is not needed. And when it is 0, we can completely remove the terms, because 0 times any number is zero (formula_51). -As a side note, you do not have to use the letters formula_3 or formula_22 in algebra. Variables are just symbols that mean some unknown number or value, so you can use any letter for a variable (except formula_54 (Euler's number) and formula_55 (Imaginary unit), because these are mathematical constants). formula_3 and formula_22 are the most common, though. -Functions and Graphs. -An important part of algebra is the study of functions, since they often appear in equations that we are trying to solve. A function is like a machine you can put a number (or numbers) into and get a certain number (or numbers) out. When using functions, graphs can be powerful tools in helping us to study the solutions to equations. -A graph is a picture that shows all the values of the variables that make the equation or inequality true. Usually this is easy to make when there are only one or two variables. The graph is often a line, and if the line does not bend or go straight up-and-down it can be described by the basic formula formula_5. The variable formula_59 is the y-intercept of the graph (where the line crosses the vertical axis) and formula_60 is the slope or steepness of the line. This formula applies to the coordinates of a graph, where each point on the line is written formula_61. -In some math problems like the equation for a line, there can be more than one variable (formula_3 and formula_22 in this case). To find points on the line, one variable is changed. The variable that is changed is called the "independent" variable. Then the math is done to make a number. The number that is made is called the "dependent" variable. Most of the time the independent variable is written as formula_3 and the dependent variable is written as formula_22, for example, in formula_66. This is often put on a graph, using an formula_3 axis (going left and right) and a formula_22 axis (going up and down). It can also be written in function form: formula_69. So in this example, we could put in 5 for formula_3 and get formula_71. Put in 2 for formula_3 would get formula_73. And 0 for formula_3 would get formula_75. So there would be a line going through the points formula_76, formula_77, and formula_78 as seen in the graph to the right. -If formula_3 has a power of 1, it is a straight line. If it is squared or some other power, it will be curved. If it uses an inequality (formula_80 or formula_81), then usually part of the graph is shaded, either above or below the line. -Rules. -In algebra, there are a few rules that can be used for further understanding of equations. These are called the rules of algebra. While these rules may seem senseless or obvious, it is wise to understand that these properties do not hold throughout all branches of mathematics. Therefore, it will be useful to know how these axiomatic rules are declared, before taking them for granted. Before going on to the rules, reflect on two definitions that will be given. -Commutative property of addition. -"Commutative" means that a function has the same result if the numbers are swapped around. In other words, the order of the terms in an equation does not matter. When two terms (addends) are being added, the "commutative property of addition" is applicable. In algebraic terms, this gives formula_86. -Note that this does not apply for subtraction (i.e. formula_87 except if formula_88). -Commutative property of multiplication. -When two terms (factors) are being multiplied, the "commutative property of multiplication" is applicable. In algebraic terms, this gives formula_89. -Note that this does not apply for division (i.e. formula_90, when formula_91 and formula_92, except if formula_88). -Associative property of addition. -"Associative" refers to the grouping of numbers. The associative property of addition implies that, when adding three or more terms, it doesn't matter how these terms are grouped. Algebraically, this gives formula_94. Note that this does not hold for subtraction, e.g. formula_95 (see distributive property). -Associative property of multiplication. -The associative property of multiplication implies that, when multiplying three or more terms, it doesn't matter how these terms are grouped. Algebraically, this gives formula_96. Note that this does not hold for division, e.g. formula_97. -Distributive property. -The distributive property states that the multiplication of a term by another term can be distributed. For instance: formula_98. (Do not confuse this with the associative properties! For instance: formula_99.) -Additive identity. -"Identity" refers to the property of a number that it is equal to itself. In other words, there exists an operation of two numbers so that it equals the variable of the sum. The additive identity property states that any number plus 0 is that number: formula_100. This also holds for subtraction: formula_101. -Multiplicative identity. -The multiplicative identity property states that any number times 1 is that number: formula_102. This also holds for division: formula_103. -Additive inverse property. -The additive inverse property is somewhat like the inverse of the additive identity. When we add a number and its opposite, the result is 0. Algebraically, it states the following: formula_104, which is the same as formula_105. For example, the additive inverse (or opposite) of 1 is -1. -Multiplicative inverse property. -The multiplicative inverse property means that when we multiply a number and its reciprocal, the result is 1. Algebraically, it states the following: formula_106, which is the same as formula_107. For example, the multiplicative inverse (or reciprocal) of 2 is 1/2. To get the reciprocal of a fraction, switch the numerator and the denominator: the reciprocal of formula_108 is formula_109. -Advanced Algebra. -In addition to "elementary algebra", or basic algebra, there are advanced forms of algebra, taught in colleges and universities, such as abstract algebra, linear algebra, and universal algebra. This includes how to use a matrix to solve many linear equations at once. Abstract algebra is the study of things that are found in equations, going beyond numbers to the more abstract with groups of numbers. -Many math problems are about physics and engineering. In many of these physics problems time is a variable. The letter used for time is formula_110. Using the basic ideas in algebra can help reduce a math problem to its simplest form making it easier to solve difficult problems. Energy is formula_54, force is formula_112, mass is formula_60, acceleration is formula_82 and speed of light is sometimes formula_115. This is used in some famous equations, like formula_116 and formula_117 (although more complex math beyond algebra was needed to come up with that last equation). -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/American English.txt b/.github/workflows/data/simplewiki-100/American English.txt deleted file mode 100644 index b1af36a8d..000000000 --- a/.github/workflows/data/simplewiki-100/American English.txt +++ /dev/null @@ -1,14 +0,0 @@ -American English or US English is the dialect of the English language spoken in the United States of America. It is different in some ways from other types of English, such as British English. Most types of American English came from local dialects in England. During the 18th and 19th centuries, pronunciation changed less in America than in England. -Use. -Many people today know about American English even if they live in a country where another type of English is spoken. They hear and read American English through the media, for example movies, television, and the Internet, where the most common form of English is American English. -Because people all over the world use the English language, it gets many new words. English has been changing in this way for hundreds of years. For example, the many millions who speak Indian English frequently add American English words to go along with its British English base and many other words from the various Indian languages. -Sometimes people learn American English as it is spoken in the US. For example, in telephone call centers in India and other places, people often learn American English to sound more like their customers who call from the US. These people often keep using American English in everyday life. -Spelling. -There are many words that sound the same in both American and British English but have different spellings. British English often keeps more traditional ways of spelling words than American English. -Vocabulary. -There are also some words in American English that are a bit different from British English, e.g.: -Regional accents. -General American English is the kind most spoken in mass media. It more vigorously pronounces the letter "R" than some other kinds do. "R-dropping" is frequent in certain places where "r" sound is not pronounced after a vowel. For example as in the words "car" and "card" sounding like "cah" and "cahd". This occurs in the Boston area. -Some regional accents of American English include: -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/American Units Of Measurement.txt b/.github/workflows/data/simplewiki-100/American Units Of Measurement.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-100/Anatomy.txt b/.github/workflows/data/simplewiki-100/Anatomy.txt deleted file mode 100644 index 422d395b3..000000000 --- a/.github/workflows/data/simplewiki-100/Anatomy.txt +++ /dev/null @@ -1,9 +0,0 @@ -Anatomy is the study of the bodies of people and other animals. Anatomy is the study of the inside of the body and outside the body. Anatomy notes the position and structure of organs such as muscles, glands and bones. A person who studies anatomy is an anatomist. -The history of anatomy dates back to 1600 BC when Egyptians began studying human anatomy. They discovered the functions of many organs like the liver, spleen, kidneys, heart etc. and were the first to discover the structure and functions of the lymphatic system. -For long periods the dissection of deceased people was forbidden, and correct ideas about human anatomy was a long time coming. -Academic human anatomists are usually employed by universities, medical schools and teaching hospitals. They are often involved in teaching and research. Gross anatomy studies parts of the body that are big enough to see. Micro-anatomy studies smaller parts. -Body systems. -There are different organ systems, such as the cardiovascular system, also known as the circulatory system (the system that gets blood around the body), the muscular system (the system that contains muscles), the nervous system (the system that controls the nerves,and the brain) and the skeleton (the bones). -Anatomy, physiology and biochemistry are similar basic medical sciences. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Andouille.txt b/.github/workflows/data/simplewiki-100/Andouille.txt deleted file mode 100644 index c1aae3b1b..000000000 --- a/.github/workflows/data/simplewiki-100/Andouille.txt +++ /dev/null @@ -1,3 +0,0 @@ -Andouille is a type of pork sausage. It is spicy (hot in taste) and smoked. There are different kinds, all with different combinations of pork meat, fat, intestines (tubes going to the stomach), and tripe (the wall of the stomach). -Other sorts are "French andouille" and "German andouille"; they are less spicy than Cajun. Cajun has extra salt, black pepper, and garlic. Andouille makers smoke the sausages over pecan wood and sugar cane for a maximum of seven or eight hours, at about 175 degrees Fahrenheit (80 degrees Celsius). - "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Angel.txt b/.github/workflows/data/simplewiki-100/Angel.txt deleted file mode 100644 index 6c3cc98e1..000000000 --- a/.github/workflows/data/simplewiki-100/Angel.txt +++ /dev/null @@ -1,69 +0,0 @@ -In many mythologies and religions, an angel is a good spirit. The word angel comes from the Greek word "angelos" which means "messenger". Angels appear frequently in the Old Testament, the New Testament, Qur'an and Aqdas. -Different references to angels throughout the Bible suggest different kinds and ranks of angels, such as seraphs (Hebrew plural: seraphim) or cherubs (Hebrew plural: cherubim). This resulted in medieval theologians outlining a hierarchy of such divine messengers, including not only cherubs and seraphs, but also archangels, powers, principalities, dominions and thrones. -The study of angels is called angelology. -In the Bible. -Angels are powerful spirits that obey God's commands. They sometimes appear to humans in a human form. They can deliver messages to people in person or in dreams. Angels that are named in the Bible are Michael (called a "chief prince"), Gabriel (known for telling Mary that she would be the mother of Jesus), and Raphael (in the Apocryphal Book of Tobit). The Ethiopian Book of Enoch also lists four Archangels which watch over the four parts of heaven; Michael, Raphael, Gabriel and Uriel. Lucifer is also known as an angel in the Bible. -Appearances in Genesis. -God, in the Book of Genesis sends an Angel with a sword made out of fire to keep Adam and Eve from going back to the Garden of Eden. -Appearances in Exodus. -In the Book of Exodus, an Angel comes to a bush and makes a fire but the bush doesn't burn. When Moses sees this, he comes close to the Bush and he hears God speak to him. On the way to Egypt, Moses forgets to circumcise his son so an Angel tries to kill him but then Zipporah circumcises him and the Angel lets Moses live. Angels are also there when God gives the Ten Commandments at Mount Sinai. -Appearances in Leviticus. -In the Book of Leviticus, the Ark of the Covenant, has statues of two angels called Cherubim on top of it. -Appearances in Numbers. -In the Book of Numbers, Balaam goes to curse the Israelites but G-d sends an Angel to be a Satan against Balaam. Balaam doesn't see the Angel but his donkey does so she moves out of the way. Balaam then hits her and gets her to go continue moving. When the donkey sees the Angel again and Balaam doesn't, she moves to the other side of the road and Balaam hits her and she starts walking again. When she sees the Angle again and there's nowhere on the road to go, she stops moving, so Balaam hits her. Balaam's donkey then talks to him and asks him why he's hitting her. He says if he had a sword, then he would kill her. Then Balaam sees the Angel and the Angel tells Balaam that Balaam's donkey is more righteous than he is and that he would have only killed Balaam but not the donkey. -Appearances in Deuteronomy. -When Moses spoke to the Israelites in the Book of Deuteronomy, there were ten thousand angels next to him. -Appearances in Judges. -G-d sends an Angel to Gideon in the Book of Judges to tell Gideon that he must save the Israelites. He later sends an Angel to an Israelite woman and her husband Manoach to tell them that they would have a son Samson. -Appearances in Samuel. -When King David has a census, G-d punishes him by sending an Angel to cause a plague. -Appearances in Kings. -When Queen Jezebel wants to kill Elijah, an Angel comes to help him. Another Angel later protects Elisha. When King Ahab asks the prophet Micaiah for a prediction, Mecaiah tells him that G-d sent an Angel to trick Ahab into fighting a war and getting killed. Later when Sannecherib attacks Judah, G-d sends His Angel to kill Sannecherib's entire Assyrian army. -Isaiah. -Isaiah said that the Angels sang songs and that every Angel had six wings, two for covering its face, two for covering its feet and two for flying. Isaiah said that when he heard the Angels sing he said "I am doomed for I live among a people of unclean lips" and that G-d got angry with him for saying that. -Ezekiel. -The Book of Ezekiel begins with Ezekiel seeing Angels on a Chariot. -Zechariah. -The prophet Zechariah saw an Angel tell him that G-d would have mercy on the Jews. And that their enemies will be punished. Another Angel says that even the Kingdom of Israel will come back to the land. Zechariah sees an Angel defending the Priest from The Satan when The Satan says that the Priest did a bad thing. An Angel shows Zechariah a Menorah in the Temple of Jerusalem. The Angel tells Zechariah that the children of Zerubavel will be Kings. -Malachi. -G-d told Malachi that He would send an Angel and Elijah to announce that the Messiah was coming. -Job. -In the Book of Job, all the Angels meet with G-d and The Satan bets G-d that he can make Job curse G-d -Daniel. -In the Book of Daniel, an Angel rescues Daniel's friends from Nebuchadnezzar. Daniel also mentions Angels being named Michael and Gabriel -Chronicles. -In the Books of Chronicles, The Satan gets King David to want to have his census. -Appearances in The New Testament. -In the New Testament, an Angel tells The Virgin Mary that she will give birth to Jesus, Angels proclaim the birth of Jesus in the Adoration of the shepherds (Luke 2:10) and Angels help Jesus in the desert. -In Luke 22:43 of the New Testament, an Angel comforts Jesus during the agony in the garden of Gethsemane and in Matthew 28:5 an Angel speaks at the empty tomb following the Resurrection of Jesus saying: “Do not be afraid, for I know that you are looking for Jesus, who was crucified. He is not here; he has risen, just as He said". -Types of Angels. -Ezekiel 28:13-14 -13. Thou hast been in Eden the garden of God; every precious stone was thy covering, the sardius, topaz, and the diamond, the beryl, the onyx, and the jasper, the sapphire, the emerald, and the carbuncle and gold: the workmanship of thy tabrets and of thy pipes was prepared in thee in the day that thou wast created. -14. Thou art the anointed cherub that covereth; and I have set thee so: thou wast upon the holy mountain of God; thou hast walked up and down in the midst of the stones of fire. -It describes the sound of their wings, "like the roar of rushing waters." -Ezekiel 10:5-7 ; Ezekiel 10:8 reveals that they have hands like a man under their wings . -Ezekiel 1:7 KJV reveals that they look like man but are different because they have "straight feet" and four wings and four faces. -Ezekiel ch 1, and 10 describe the cherubim creatures ascending and descending from the earth with wheels. Ezekiel 1:14-20 ; Ezekiel 10:16 -Ezekiel 10:9-13 describes what the wheels appeared to look like, and how they moved around, how they moved or flew through the sky quickly but turned not as they went; and how the inside workings of the wheels appeared to be "a wheel in the midst of a wheel" and that the color of the wheels was the color of "Amber" Stone. There are four separate wheels in both accounts, one for each single cherub which is there. -Religion. -Rabbinic Judaism. -In Judaism angels are created by God from fire. They fullfil tasks given by God. Rabbinic Judaism rejects earlier accounts on fallen angels who sinned by mating with humans. Instead, angels are servants of God. Still, not all angels are benevolent. Some angels are jealous of humans, because God loves them so much. Unlike angels, humans can overcome sin and repent. Angels cannot repent their sin, because they are already sinless. -When the Bible speaks about the creation of humans in the plural, Judaism sometimes argues that God discussed his decision with the angels. But they make clear, it is God alone who creates humans. God only wanted to discuss with the angels to show that someone in power, should still try to value the opinion of people lower. -Islam. -In Islam angels are created by God (referred to as Allah in the Arabic, Persian, Urdu, Pashto, and Dari languages) before jinn and humans. Some say, that before angels however, demons were created. Angels were created in heaven and fullfil God's orders. Some angels deliver messages to humans and prophets, most famous among them is Gabriel. Other angels support humans with rain. Some angels don't have a task on earth, but dwell in heaven, for example, to praise God. -Muslims disagree if angels can fail a task, but they agree that an angel never wants to disobey. Sometimes angels might simply make mistakes on accident, like the angels Harut and Marut. But these angels are not considered evil, they just lose their rank as punishment, but can restore their rank later again. Not all angels are nice. God gives angels violent tasks too. For example, God orders angels to punish people in hell, not demons. Muslims believe hell is under God's control, and not the demon's. They believe hell is not only suffering, but also justice. Angels watch out that people don't escape their punishment. While the benevolent angels are said to be created from light, some Muslims think the angels in hell are created from fire. -Muslims believe that angels are also present in life. They are, however, only in clean places. They are believed to give also good advises and blessings. -In art. -They are often shown in art as having wings and a halo. The wings represent their speed, and the halo represents their holiness. -The cherubim in art always appear as baby faced angels with very small, non-useful wings. -The cherubim statue or bronze casting of cherubim in the Temple of Solomon depicted them as two four winged creatures whose wings touched at the peak of the ark that they were making. -The same cherubim creatures were said to be cast in gold on top of the Ark of the Covenant. Casting metal is one of the oldest forms of artwork, and was attempted by Leonardo da Vinci. -In literature. -Angels are generally held to be holy and virtuous, hence the term is used loosely to apply to anyone particularly good or kind, or having a good influence. In his novel "Far From the Madding Crowd", Thomas Hardy chooses the name of an angel, Gabriel, for his kind and helpful hero. On the other hand, in his play "Measure for Measure", Shakespeare's use of the name Angelo is ironic, since Angelo is a character who likes to see himself as virtuous, but who is concealing evil aspects of his nature. Fallen angels, who are no longer holy or virtuous, are also known as devils. -However, since angels are held to be spirits (that is, non-material beings), medieval theologians were faced with the problem of how humans could see a non-physical creature. Eventually a theory was put forward that angels must make themselves a body out of the nearest thing to the non-physical, i.e. from air. Hence in his famous poem "Aire and Angels", the seventeenth century metaphysical poet John Donne uses this idea to write a cynical comment on women, whose love, he says, is like an angel's body of air, while men's love is like the real thing, the angel itself. -Idea of Guardian angel. -From the era of the Romantics onwards, there has developed the widely held belief that everyone has an angel assigned to guard them. This concept is probably based on Jesus' comment in Matthew 18:10 regarding children, though it is not mentioned elsewhere in the Bible. -In superstitions. -Seeing repetitive numbers are thought to be associated with numerology, also referred to as angel numbers. It is believed that angels communicate with humans through repetitive appearances of numbers. Humanity has studied and used numbers since the dawn of time, and no matter what the culture is, there are certain numbers that hold specific value or meaning over other numbers. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Angola.txt b/.github/workflows/data/simplewiki-100/Angola.txt deleted file mode 100644 index a636be89b..000000000 --- a/.github/workflows/data/simplewiki-100/Angola.txt +++ /dev/null @@ -1,16 +0,0 @@ -Angola, officially the Republic of Angola, is a country in southern Africa. It shares borders with Namibia in the south, the Democratic Republic of the Congo in the north, and Zambia in the east. Its west border touches the Atlantic Ocean. Its coastline is 1600 kilometers. Angola's capital is Luanda. The country has many natural resources. Angola is the seventh largest country in Africa. The capital and most populated city of Angola is Luanda. -Angola is a member state of the African Union, the Community of Portuguese Language Countries, the Latin Union, South Atlantic Peace and Cooperation Zone and the Southern African Development Community. -History. -Portugal built up its power in Angola from the late 15th to the middle 20th century. -After independence there was a civil war from 1975 to 2002. Cuba and the Soviet Bloc supported the ruling People's Movement for the Liberation of Angola (MPLA). South Africa supported the insurgent National Union for the Total Independence of Angola (UNITA) until the end of apartheid. The war ended after the rebel leader Jonas Savimbi was killed. -Geography. -Angola is the world's twenty-third largest country. Angola is bordered by Namibia to the south, Zambia to the east, the Democratic Republic of the Congo to the north-east, the Republic of the Congo via the exclave of Cabinda, and the South Atlantic Ocean to the west. -Climate. -Angola's average temperature on the coast is in the winter and in the summer. It has two seasons; dry (May to October) and hot rainy (November to April). -Demographics. -Angola had a population of 25,789,024 in 2014. -Provinces. -Angola is divided into eighteen provinces. -See List of settlements in Angola for the cities and towns in the country. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Animal.txt b/.github/workflows/data/simplewiki-100/Animal.txt deleted file mode 100644 index 1584a02ad..000000000 --- a/.github/workflows/data/simplewiki-100/Animal.txt +++ /dev/null @@ -1,18 +0,0 @@ -Animals (or Metazoa) are living creatures with many cells that make up the kingdom Animalia. -Animals get their energy from other living things. Usually, they eat them or are parasites. Animals, plants, fungi, and some other living things have complex cells, so they are grouped together as eukaryotes. -The study of animals is called zoology. The study of ancient life is called palaeontology. -Most animals are mobile, meaning they can move around. Animals take in oxygen, and give out carbon dioxide. This cellular respiration is part of their metabolism (chemical working). In both these ways they are different from plants. Also, the cells of animals have different cell membranes to other eukaryotes like plants and fungi. -Plants are also multicellular eukaryotic organisms, but live by using light, water and basic elements to make their tissues. -Grouping animals. -There are many different types of animals. The common animals most people know are only about 3% of the animal kingdom. When biologists look at animals, they find things that certain animals have in common. They use this to group the animals in a biological classification. Several million species may exist, but biologists have only identified about one million. -Animals can mainly be divided into two main groups: the invertebrates and the vertebrates. Vertebrates have a backbone, or spine; invertebrates do not. Vertebrates are the only group to have an adaptive immune system, which may be partly responsible for their size and success. -Vertebrates are: -Some invertebrates are: -Life styles. -The animal mode of nutrition is called heterotrophic because they get their food from other living organisms. Some animals eat only plants; they are called herbivores. Other animals eat only meat and are called carnivores. Animals that eat both plants and meat are called omnivores. Some animals get their energy from photosynthetic protists that live inside them. -The environments animals live in vary greatly. By the process of evolution, animals adapt to the habitats they live in. A fish is adapted to its life in water and a spider is adapted to a life catching and eating insects. A mammal living on the savannahs of East Africa lives quite a different life from a dolphin or porpoise catching fish in the sea. -The fossil record of animals goes back about 600 million years to the Ediacaran period, or somewhat earlier. During the whole of this long time, animals have been constantly evolving, so that the animals alive on Earth today are very different from those on the edges of the sea-floor in the Ediacaran. -Everyday language. -In scientific usage, humans are animals. But in everyday use, humans are often not regarded as animals. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Animalia.txt b/.github/workflows/data/simplewiki-100/Animalia.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-100/Apple.txt b/.github/workflows/data/simplewiki-100/Apple.txt deleted file mode 100644 index f4bcea649..000000000 --- a/.github/workflows/data/simplewiki-100/Apple.txt +++ /dev/null @@ -1,40 +0,0 @@ -An apple is the edible fruit of a number of trees, known for its juicy green or red fruit. The tree (Malus spp.) is grown worldwide. The fruit is low-cost, popular, and common all over the earth. -Applewood is a type of wood that comes from this tree. -The apple tree comes from southern Kazakhstan, Kyrgyzstan, Uzbekistan, and northwestern part of China. Apples have been grown for thousands of years in Asia and Europe. They were brought to North America by European settlers. Apples have religious and mythological significance in many cultures. -Apples are generally grown by grafting, although wild apples grow readily from seed. Apple trees are large if grown from seed, but small if grafted onto roots (rootstock). There are more than 10000 known variants of apples, with a range of desired characteristics. Different variants are bred for various tastes and uses: cooking, eating raw and cider production are the most common uses. In addition to that, when it comes to food toxicity, the seeds in apples can be fatal, but only if they've been crushed. Apples contain amygdalin, which can release cyanide when digested. Though the amount in apple seeds is generally low and requires significant ingestion to be harmful (killing or paralyzing you) but it is still important to address such issue. -Trees and fruit are attacked by fungi, bacteria and pests. In 2010, the fruit's genome was sequenced as part of research on disease control and selective breeding in apple production. -Worldwide production of apples in 2013 was 90.8 million tonnes. China grew 49% of the total. -Botanical information. -The apple tree is a small, leaf-shedding tree that grows up to tall. The apple tree has a broad crown with thick twigs. -The leaves are alternately arranged simple ovals. They are 5 to 12 centimetres long and 3–6 centimetres (1.2–2.4 in) wide. It has a sharp top with a soft underside. Blossoms come out in spring at the same time that the leaves begin to bud. The flowers are white. They also have a slightly pink color. They have five petals, and 2.5 to 3.5 centimetres (0.98 to 1.4 in) in diameter. The fruit matures in autumn. It is usually 5 to 9 centimetres (2.0 to 3.5 in) in diameter. There are five carpels arranged in a star in the middle of the fruit. Every carpel has one to three seeds. -Wild ancestors. -The wild ancestor of apple trees is "Malus sieversii". They grow wild in the mountains of Central Asia in the north of Kazakhstan, Kyrgyzstan, Tajikistan, and Xinjiang, China, and possibly also "Malus sylvestris". Unlike domesticated apples, their leaves become red in autumn. They are being used recently to develop "Malus domestica" to grow in colder climates. -History. -The apple tree was possibly the earliest tree to be cultivated. Its fruits have become better over thousands of years. It is said that Alexander the Great discovered dwarf apples in Asia Minor in 300 BC. Asia and Europe have used winter apples as an important food for thousands of years. From when Europeans arrived, Argentina and the United States have used apples as food as well. Apples were brought to North America. The first apple orchard on the North American continent was said to be near Boston in 1625. In the 1900s, costly fruit industries, where the apple was a very important species, began developing. -In culture. -Paganism. -In Norse mythology, the goddess Iðunn gives apples to the gods in "Prose Edda" (written in the 13th century by Snorri Sturluson) that makes them young forever. English scholar H. R. Ellis Davidson suggests that apples were related to religious practices in Germanic paganism. It was from there, she claims, that Norse paganism developed. She points out that buckets of apples were discovered in the place of burial for the Oseberg ship in Norway. She also remarks that fruit and nuts (Iðunn having been described as changing into a nut in "Skáldskaparmál") have been discovered in the early graves of the Germanic peoples in England. They have also been discovered somewhere else on the continent of Europe. She suggests that this may have had a symbolic meaning. Nuts are still a symbol of fertility in Southwest England. -Cooking. -Sometimes apples are eaten after they are cooked. Often, apples are eaten uncooked. Apples can also be made into drinks. Apple juice and apple cider are drinks made with apples. -The flesh of the fruit is firm with a taste anywhere from sour to sweet. Apples used for cooking are sour, and need to be cooked with sugar, while other apples are sweet, and do not need cooking. There are some seeds at the core, that can be removed with a tool that removes the core, or by carefully using a knife. -The scientific name of the apple tree genus in the Latin language is "Malus". Most apples that people grow are of the "Malus domestica" species. -Most apples are good to eat raw (not cooked), and are also used in many kinds of baked foods, such as apple pie. Apples are cooked until they are soft to make apple sauce. -Apples are also made into the drinks apple juice and cider. Usually, cider contains a little alcohol, about as much as beer. The regions of Brittany in France and Cornwall in England are known for their apple ciders. -Apple variants. -If one wants to grow a certain type of apple, it is not possible to do this by planting a seed from the wanted type. The seed will have DNA from the apple that the seeds came from, but it will also have DNA from the apple flower that pollinated the seeds, which might be a different variant of apple. This means that the tree which would grow from planting would be a mixture of two, or a hybrid. In order to grow a certain type of apple, a small twig, or 'scion', is cut from the tree that grows the type of apple desired, and then added on to a specially grown stump called a rootstock. The tree that grows will create apples of the type needed. -There are more than 7,500 known variants of apples. Different variants are available for temperate and subtropical climates. One large collection of over 2,100 apple variants is at the National Fruit Collection in England. Most of these variants are grown for eating fresh (dessert apples). However, some are grown simply for cooking or making cider. Cider apples are usually too tart to eat immediately. However, they give cider a rich flavor that dessert apples cannot. -Most popular apple cultivars are soft but crisp. Colorful skin, easy shipping, disease resistance, 'Red Delicious' apple shape, and popular flavor are also needed. Modern apples are usually sweeter than older cultivars. This is because popular tastes in apples have become different. Most North Americans and Europeans enjoy sweet apples. Extremely sweet apples with hardly any acid taste are popular in Asia and India. -World production. -Apples are grown around the world. China produces more than half of all commercially grown apples. In 2020/2021, China produced 44,066,000 metric tons. Other important producers were the European Union (11,719,000 metric tons), the United States (4,490,000 metric tons), and Turkey (4,300,000 metric tons). Total world production was 80,522,000 metric tons. -In the United Kingdom. -In the United Kingdom there are about 3000 different types of apples. The most common apple type grown in England is the 'Bramley seedling', which is a popular cooking apple. -Apple orchards are not as common as they were in the early 1900s, when apples were rarely brought in from other countries. Organizations such as Common Ground teach people about the importance of rare and local varieties of fruit. -In North America. -Many apples are grown in temperate parts of the United States and Canada. "Washington State currently produces over half the Nation's domestically grown apples and has been the leading apple-growing State since the early 1920s." New York and Michigan are the next two leading states in apple production. "The total reported area dedicated to the crop in the United States is 336,940 acres or 526.47 square miles." -In many areas where apple growing is important, people have huge celebrations: -Varieties of apples. -There are many different varieties of apples, including -Family. -Apples are in the group Maloideae. This is a subfamily of the family "Rosaceae". They are in the same subfamily as pears. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Application.txt b/.github/workflows/data/simplewiki-100/Application.txt deleted file mode 100644 index 772425a6b..000000000 --- a/.github/workflows/data/simplewiki-100/Application.txt +++ /dev/null @@ -1,2 +0,0 @@ -The word application has several uses. -<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/April.txt b/.github/workflows/data/simplewiki-100/April.txt deleted file mode 100644 index 2ab7bf924..000000000 --- a/.github/workflows/data/simplewiki-100/April.txt +++ /dev/null @@ -1,12 +0,0 @@ -April (Apr.) is the fourth month of the year in the Julian and Gregorian calendars, and comes between March and May. It is one of four months to have 30 days. -April always begins on the same day of the week as July, and additionally, January in leap years. April always ends on the same day of the week as December. -The Month. -April comes between March and May, making it the fourth month of the year. It also comes first in the year out of the four months that have 30 days, as June, September and November are later in the year. -April begins on the same day of the week as July every year and on the same day of the week as January in leap years. April ends on the same day of the week as December every year, as each other's last days are exactly 35 weeks (245 days) apart. -In common years, April starts on the same day of the week as October of the previous year, and in leap years, May of the previous year. In common years, April finishes on the same day of the week as July of the previous year, and in leap years, February and October of the previous year. In common years immediately after other common years, April starts on the same day of the week as January of the previous year, and in leap years and years immediately after that, April finishes on the same day of the week as January of the previous year. -In years immediately before common years, April starts on the same day of the week as September and December of the following year, and in years immediately before leap years, June of the following year. In years immediately before common years, April finishes on the same day of the week as September of the following year, and in years immediately before leap years, March and June of the following year. -April is a spring month in the Northern Hemisphere and an autumn/fall month in the Southern Hemisphere. In each hemisphere, it is the seasonal equivalent of October in the other. -It is unclear as to where April got its name. A common theory is that it comes from the Latin word "aperire", meaning "to open", referring to flowers opening in spring. Another theory is that the name could come from Aphrodite, the Greek goddess of love. It was originally the second month in the old Roman Calendar, before the start of the new year was put to January 1. -Quite a few festivals are held in this month. In many Southeast Asian cultures, new year is celebrated in this month (including Songkran). In Western Christianity, Easter can be celebrated on a Sunday between March 22 and April 25. In Orthodox Christianity, it can fall between April 4 and May 8. At the end of the month, Central and Northern European cultures celebrate Walpurgis Night on April 30, marking the transition from winter into summer. -April in poetry. -Poets use "April" to mean the end of winter. For example: "April showers bring May flowers." \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Aquaculture.txt b/.github/workflows/data/simplewiki-100/Aquaculture.txt deleted file mode 100644 index e96125451..000000000 --- a/.github/workflows/data/simplewiki-100/Aquaculture.txt +++ /dev/null @@ -1,5 +0,0 @@ -Aquaculture is the farming of fish, shrimp, abalones, algae, and other seafood. Aquaculture supplies fish, such as catfish, salmon, and trout. It was developed a few thousand years ago in China. Aquaculture supplies over 20% of all the seafood harvested. -Fish farming has been practiced, in some parts of the world, for thousands of years. Goldfish originated about a thousand years ago in carp farms in China, and the Roman Empire farmed oysters and other seafood. Today, half of the seafood eaten in the U.S. is farmed. To help meet the growing global demand for seafood, aquaculture is growing fast. -The environmental impact of fish farming varies widely, depending on the species being farmed, the methods used and where the farm is located. When good practices are used, it's possible to farm seafood in a way that has very little impact to the environment. Such operations limit habitat damage, disease, escapes of farmed fish and the use of wild fish as feed. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Archaeology.txt b/.github/workflows/data/simplewiki-100/Archaeology.txt deleted file mode 100644 index 67ba35f48..000000000 --- a/.github/workflows/data/simplewiki-100/Archaeology.txt +++ /dev/null @@ -1,27 +0,0 @@ -Archaeology, or archeology, is the study of the human past. It looks at remains and objects left by the people who lived long ago. These remains may include old coins, tools, buildings, and inscriptions. Archaeologists, the people who study archaeology, use these remains to understand how people lived. -Fieldwork. -When archaeologists do fieldwork, they look for remains, often by digging in the ground. As settlements (places where people lived in groups) change and grow, old buildings get buried. Usually, this is a natural process. A typical student project is to leave an object in a place where there is nothing going on. It will get covered rather quickly, because wind, water and plants will bury it. Sometimes buildings are deliberately buried to make way for new buildings. Ancient Rome, for example, is now up to 40 feet (12 metres) below the present city. This process of natural or man-made burial is why archaeological fieldwork involves digging, and is expensive and takes a long time. -When things are found, or even when nothing is found, the results of the fieldwork are taken back to a base. Short term, the base is often on or near the site. Longer term, the results will usually go to a university or museum. Everything is written down on paper or entered into a computer. Gradually, they build up a picture of what happened long ago. Archaeologists publish their research so others can understand what they learned. -Fields of interest. -Archaeologists do not all study the same topics. They have specialties. Some fields of interest include Ancient Egypt (these specialists are called Egyptologists), Ancient China, or the Vikings. Archaeologists study every civilization that is known, especially the ones where there is no written history. They can study any time period. For example, one might study the beginning of human life in Africa, or study World War II. Marine archaeologists study things that are now underwater. They search for sunken ships or cities that have been lost under the sea. -Subdisciplines. -There are many different ways of doing archaeology. these depend on the methods used, the things studied, and the environment. Some of these subdisciplines overlap with each other. -Marine archaeology. -Archaeology relating to oceans, seas and lakes is usually done underwater. It includes the study of sunken ships and submerged coastlines. "Maritime archaeology" is a part of this subdivision. It refers to the archaeological investigation of past ships and seafaring. A famous example of maritime archaeology is the recovery and restoration of the ship Vasa. -Ice-patch archaeology. -When a glacier melts, objects that were captured in it are revealed. The recovery and study of these objects is called "ice-patch archaeology". A famous example is Ötzi the Iceman. -Historical archaeology. -Historical archaeology deals with places, things, and issues from the past or present at or related to sites with written records or oral traditions. Or it can be defined as "the archaeological investigation of any past culture that has developed a literate tradition." A prominent example of historical archaeology is the work done at Colonial Williamsburg. -Industrial archaeology. -This relatively new branch of archaeology consists of "the systematic study of structures and artefacts as a means of enlarging our understanding of the industrial past." -Archaeozoology. -Archaeozoology, or zooarchaeology, is the study of the relationships between humans and animals in the archaeological record. This includes the study of bones, feathers, teeth and other body parts as well as their interpretation. -Paleoethnobotany. -Paleoethnobotany (also spelled palaeoethnobotany), or archaeobotany, is the study of past human-plant relations through the recovery and analysis of plant remains from the past, usually from archaeological sites. People who do this can be archaeologists, botanists, or chemists. -Experimental archaeology. -This field involves attempts at replicating the actions and conditions of ancient cultures. Good examples are Butser Ancient Farm and Overton Down. -Sites. -In many countries, governments and other groups of people protect important archaeological sites so they will not be destroyed and so that visitors can always come and see them. -Sometimes archaeological sites are found when foundations are dug for new buildings. Archaeologists have to work quickly when this happens, because people who are building often don't have a lot of time. As soon as the archaeologists are done with their work, the remains that they have found will be covered over, unless they are very important. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Architecture.txt b/.github/workflows/data/simplewiki-100/Architecture.txt deleted file mode 100644 index 4cb3ec77d..000000000 --- a/.github/workflows/data/simplewiki-100/Architecture.txt +++ /dev/null @@ -1,14 +0,0 @@ -Architecture is the process of designing structures and buildings. It uses both art and engineering. Examples include houses, churches, hotels, office buildings, roads, tunnels and bridges. -Architecture is the profession of an architect. Usually, a person must study at an institution of higher education (university) to become an architect. There were architects long before there was higher education. They learnt by being an apprentice to an established architect. -Architecture can do small designs, such as for a garage, or large designs, such as for a whole new town. The capital cities of Brasília, and Canberra were designed. Architects often work with structural engineers to make structurally sound buildings. -History. -In the past, people built huts and wood houses to protect themselves from the weather. For safety, they were often close together. Great civilizations like the Ancient Egyptians built large temples and structures, like the Great Pyramids of Giza. The Ancient Greeks and Romans made what we now call "Classical Architecture". The Romans, working over 2000 years ago, copied the arch from the Etruscans, who copied it from the Mesopotamians. -Classical architecture was formal, and it always obeyed laws. It used symmetry, which really means balance, and it used proportion between shapes. The Golden Mean was a rule which said, (to put it simply) if you are making a room, or any other thing, it will work best if you always make the long side 1.6 times as long as the short side. There are many 'laws' in classical architecture, like how high the middle of an arched bridge needs to be (which depends on how wide the bridge needs to be). These laws were learned from thousands of years of experience and they are often used today. However, today more notice is taken of specific facts, such as what wind speeds occur once or twice in a century. Several bridges have blown down because that was not properly taken into consideration. -In some parts of the world, like India, the architecture is famous for carving the stone on temples and palaces. Different architectural styles occur in China, Japan, Southeast Asia, Africa, Mexico, and Central and South America. -Architects in Western Europe in the Middle Ages made Romanesque architecture, then Gothic architecture. Gothic buildings have tall, pointed windows and arches. Many churches have Gothic architecture. Castles were also built at this time. In Eastern Europe, churches usually had domes. People added their own ideas and decoration to the Classical Architecture of the past. The Renaissance brought a return to classical ideas. -In the late 18th century with the Industrial Revolution, people began to invent machines to make things quickly and cheaply. Many factories and mills were built during, or after this revolution. Decades later, in the Victorian era, architects like George Fowler Jones and Decimus Burton still followed the Gothic style to build new churches. Up to this point, buildings were limited in size and style by the strength of the wood and masonry used to construct them. Gothic cathedrals were among the largest buildings because the gothic arch when combined with buttresses allowed stone buildings to be built taller. For example, the cathedral in Ulm, Germany is over 500 feet tall. However, building with stone has its limits, and building too tall could result in collapse. This happened to the Beauvais Cathedral, which was never completed. -Towards the end of the 19th Century with a second Industrial Revolution, steel became much cheaper. Architects began to use inventions like metal girders and reinforced concrete to build. An example is the Eiffel Tower in Paris. Buildings can now be built taller than ever before. We call them skyscrapers. This new technology has made us free from traditional limitations, and because of the new possibilities presented by these materials, many traditional methods of construction and ideas about style were reevaluated, replaced, or abandoned. Cheap, strong glass soon brought transparent exterior walls, especially for office buildings. -Modernism is the name for the architectural style which developed because of these new building technologies, and its beginnings can been seen as early as 1890. Modernism can also refer to a specific group of architects and buildings from the early to late 20th century, and so may not be the proper term to use for many building built since then, which are sometimes called "post-modern". -Many of the world's greatest structures were built by modern-day architects such as Frank Lloyd Wright; Sir Hugh Casson; Norman Foster; I. M. Pei; Adrian Smith; Edward Durell Stone; Frank Gehry; Fazlur Khan; Gottfried Böhm; and Bruce Graham. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Argentina.txt b/.github/workflows/data/simplewiki-100/Argentina.txt deleted file mode 100644 index 2a8d9fcb2..000000000 --- a/.github/workflows/data/simplewiki-100/Argentina.txt +++ /dev/null @@ -1,27 +0,0 @@ -Argentina, officially the Argentine Republic, is a country in South America. Argentina is the second-largest country in South America and the eighth-largest country in the world. -Spanish is the most spoken language, and the official language, but many other languages are spoken. There are minorities speaking Italian, German, English, Quechua and even Welsh in Patagonia. -In eastern Argentina is Buenos Aires, the capital of Argentina, it is also one of the largest cities in the world. In order by number of people, the largest cities in Argentina are Buenos Aires, Córdoba, Rosario, Mendoza, La Plata, Tucumán, Mar del Plata, Salta, Santa Fe, and Bahía Blanca. -Argentina is between the Andes mountain range in the west and the southern Atlantic Ocean in the east and south. It is bordered by Paraguay and Bolivia in the north, Brazil and Uruguay in the northeast, and Chile in the west and south. It also claims the Falkland Islands (Spanish: "Islas Malvinas") and South Georgia and the South Sandwich Islands. Most citizens of the Argentine Republic are descendants of immigrants from Europe. They are united by citizenship and not necessarily by ethnicity. Most Argentinians embrace both their ethnic origins and Argentinian nationality. -History. -The name Argentina comes from the Latin "argentum" (silver) as the Spanish conquistadors believed the area had silver. In the Americas (South and North), Canada, US, Brazil and Argentina are the largest countries (in that order). -The oldest signs of people in Argentina are in the Patagonia (Piedra Museo, Santa Cruz), and are more than 13,000 years old. In 1480 the Inca Empire conquered northwestern Argentina, making it part of the empire. In the northeastern area, the Guaraní developed a culture based on yuca and sweet potato however typical dishes all around Argentina are pasta, red wines (Italian influence) and beef. -Other languages spoken are Italian, English and German. Lunfardo is Argentinean slang and is a mix of Spanish and Italian. Argentinians are said to speak Spanish with an Italian accent. -Argentina declared independent from Spain in 1816, and achieved it in a War led by José de San Martín in 1818. Many immigrants from Europe came to the country. By the 1920s it was the 7th wealthiest country in the world, but it began a decline after this. In the 1940s, following the "infamous decade" where the country's politics were not stable, Juan Peron came to power. Peron was one of the most important people in the country's history and many politicians today call themselves Peronist. Peron was forced out of power in 1955. After spending years in exile he returned to power in the 1970s. -In 1976, the country was falling into chaos, and the military took power. This was not the first time the military had done this. Leading the new government was Jorge Rafael Videla. Videla was one of history's most brutal dictators. Thousands of people disappeared or were killed during his time as president. Videla retired in 1980. -One of his successors was another general turned dictator, Leopoldo Galtieri. By the time Galtieri was in office in 1981 the dictatorship became unpopular. To stir up support, Galtieri ordered an invasion of the Falkland Islands, starting the Falklands War. Argentina lost the war, and soon the country fell into chaos again. Galtieri was removed from power and eventually democracy was restored. Galtieri and Videla would be charged with "crimes against humanity" because of the mass murder and other crimes that they ordered as president. -In the early 21st century Argentina is one of the most important countries in Latin America, though it still has many problems. It has a large economy and is influential in the "southern cone" of South America and a member of the G20 developing nations. -Politics. -Argentina is a federal republic. The people of Argentina vote for a President to rule them and Senators and Deputies to speak for them and make laws for them. The President is Javier Milei since December 2023. -Administrative divisions. -Argentina is divided into 23 provinces ("provincias"; singular: "provincia"), and 1 city (commonly known as "capital federal"): -Geography. -Argentina is almost 3,700 km long from north to south, and 1,400 km from east to west (maximum values). It can be divided into three parts: the Pampas in the central part of the country, Patagonia in the southern part down to Tierra del Fuego; and the Andes mountain range along the western border with Chile, with the highest point in the province of Mendoza. Cerro Aconcagua, at 6,960 metres (22,834 ft), is the Americas' highest mountain. -The most important rivers include the River Plate, Paraguay, Bermejo, Colorado, Uruguay and the largest river, the Paraná. River Plate was incorrectly translated though, and should have been translated to English as River of (the) Silver. River Plate is also a famous Buenos Aires soccer team. -See List of cities in Argentina for the many places people live in Argentina. -Other information. -The majority of the Argentineans are descendants of Europeans mainly from Spain, Italy, Russia, France, Germany , Arabs other Europeans countries and Mestizo representing more than 90% of the total population of the country. More than 300,000 Roma gypsies live in Argentina. Since the 1990s, Romanian, Brazilian and Colombian gypsies arrived in Argentina. -Football or soccer is the most popular sport, although the national sport of the country is Pato. Argentina has a number of highly ranked Polo players. Field hockey (for women) rugby and golf are also favorites. -Argentina is a Christian country. Most of Argentina's people (80 percent) are Roman Catholic. Argentina also has the largest population of Jewish community after Israel and US. Middle Eastern immigrants who were Muslims converted to Catholicism, but there are still Muslims as well. -Medicine is socialized and so is education, making Argentina's literacy rate about 98%. State University is free as well. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Arithmetic.txt b/.github/workflows/data/simplewiki-100/Arithmetic.txt deleted file mode 100644 index fa2487818..000000000 --- a/.github/workflows/data/simplewiki-100/Arithmetic.txt +++ /dev/null @@ -1,9 +0,0 @@ -In mathematics, arithmetic is the basic study of numbers. The four basic arithmetic operations are addition, subtraction, multiplication, and division, although other operations such as exponentiation and roots are also studied in arithmetic. -Other arithmetic topics includes working with negative numbers, fractions, decimals and percentages. -Overview. -Most people learn arithmetic in primary school, but some people do not learn arithmetic and others forget the arithmetic they learned. Many jobs require a knowledge of arithmetic, and many employers complain that it is hard to find people who know enough arithmetic. -Applications. -A few of the many jobs that require arithmetic include carpenters, plumbers, mechanics, accountants, architects, doctors, and nurses. Arithmetic is needed in all areas of mathematics, science, and engineering. -Some arithmetic can be carried out mentally. A calculator can also be used to perform arithmetic. Computers can do it more quickly, which is one reason Global Positioning System receivers have a small computer inside. -References. - "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Armenia.txt b/.github/workflows/data/simplewiki-100/Armenia.txt deleted file mode 100644 index d1449856f..000000000 --- a/.github/workflows/data/simplewiki-100/Armenia.txt +++ /dev/null @@ -1,21 +0,0 @@ -Armenia (, romanized: "Hayastān"), officially the Republic of Armenia, is a landlocked country located in the Armenian Highlands, spanning Eastern Europe and Western Asia. -History. -The Hittites and Hayasa-Azzi may have played a significant role in the ethnicity of Armenians. It has an ancient cultural heritage. One of the earliest Armenian kingdoms such as Urartu was established in 860 BC and by the 6th century BC it was replaced by the Satrapy of Armenia. The Kingdom of Armenia reached its height under Tigranes the Great in the 1st century BC and became the first state in the world to adopt Christianity as its official state religion in the late 3rd or early 4th century AD. The official date of state adoption of Christianity is 301. -Foreign invasion. -Between the 16th century and 19th century, the traditional Armenian homeland composed of Eastern Armenia and Western Armenia came under the rule of the Ottoman and Iranian empires, repeatedly ruled by either of the two over the centuries. By the 19th century, Eastern Armenia had been conquered by the Russian Empire, while most of the western parts of the traditional Armenian homeland remained under Ottoman rule. -20th century. -During World War I, Armenians living in their ancestral lands in the Ottoman Empire were systematically -exterminated in the Armenian Genocide, perpetrated by Ottoman Young Turks. Around 1.5 million people were slaughtered and many more deported. In 1918, following the Russian Revolution, all non-Russian countries declared their independence after the Russian Empire ceased to exist, leading to the establishment of the First Republic of Armenia. By 1920, the state was incorporated into the Transcaucasian Socialist Federative Soviet Republic, and in 1922 became a founding member of the Soviet Union. In 1936, the Transcaucasian state was dissolved, transforming its constituent states, including the Armenian Soviet Socialist Republic, into full Union republics. The modern Republic of Armenia became independent in 1991 during the dissolution of the Soviet Union. -Administrative divisions. -Armenia is divided into ten provinces, with the city of Yerevan having special administrative status as the country's capital. The chief executive in each of the ten provinces is the "marzpet" ("marz" governor), appointed by the government of Armenia. In Yerevan, the chief executive is the mayor, appointed by the president. -As of 2007[ [update]], Armenia includes 915 communities, of which 49 are considered urban and 866 are considered rural. -† 2011 censusSources: Area and population of provinces. -Culture. -Armenia is a majority Christian country, with European and some wider Eurasian cultural influences. The Republic of Armenia recognises the Armenian Apostolic Church, the world's oldest national church, as the country's primary religious establishment. The unique Armenian alphabet was invented by Mesrop Mashtots in 405 AD. Armenia also has a minority of Yazidis who settled in the country after fleeing persecution and have long established themselves into the wider Armenian society and have been integrated into the country. -Armenia is a member of the Council of Europe, the Eurasian Economic Union and the Collective Security Treaty Organization. Armenia supports the de facto independent Republic of Artsakh, which was proclaimed in 1991. -Gallery. -<br> -References. -<templatestyles src="Reflist/styles.css" /> -Notes. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Art.txt b/.github/workflows/data/simplewiki-100/Art.txt deleted file mode 100644 index 6379c495b..000000000 --- a/.github/workflows/data/simplewiki-100/Art.txt +++ /dev/null @@ -1,34 +0,0 @@ -Art is a creative activity. It produces a product, an object. Art is a diverse range of human activities in creating visual, performing subjects, and expressing the author's thoughts. The product of art is called a work of art, for others to experience. -Some art is useful in a practical sense, such as a sculptured clay bowl that can be used. That kind of art is sometimes called a "craft". -Those who make art are called artists. They hope to affect the emotions of people who experience it. Some people find art relaxing, exciting or informative. Some say people are driven to make art due to their inner creativity. -"The arts" is a much broader term. It includes drawing, painting, sculpting, photography, performance art, dance, music, poetry, prose and theatre. -Types of art. -Art is divided into the plastic arts, where something is made, and the performing arts, where something is done by humans in action. The other division is between pure arts, done for themselves, and practical arts, done for a practical purpose, but with artistic content. -What "art" means. -Some people say that art is a product or item that is made with the intention of stimulating the human senses as well as the human mind, spirit and soul. Art can also be an Idea or a concept that is expressed visually. An artwork is normally judged by how much impact it has on people, the number of people who can relate to it, and how much they appreciate it. Some people also get inspired. -The first and broadest sense of "art" means "arrangement" or "to arrange." In this sense, art is created when someone arranges things found in the world into a new or different design or form; or when someone arranges colors or forms next to each other to make an image or just to make a pretty or interesting look. Art can also be an an existing object that is presented and called art, this is called re contextualizing. This is often done by placing the object in a frame or a special setting like a Gallery were the new setting gives the object a different meaning or message. (Marcel Duchamp, "Fountain," 1917) -The difference between Art and design can be subjective to the viewer and hard to distinguish. Art is often said to have a message or a meaning and design is about only the appearance. -Art may express emotion. Artists may feel a certain emotion or message and wish to express it by creating something that means something to them. Most of the art created in this case is made for the artist rather than an audience. However, if an audience is able to connect with the emotion or the message as well, then the art work may become publicly successful. -History of art. -There are sculptures, cave painting and rock art dating from the Upper Paleolithic era. -All of the great ancient civilizations, such as Ancient Egypt, India, China, Greece, Rome and Persia had works and styles of art. In the Middle Ages, most of the art in Europe showed people from the Bible in paintings, stained-glass windows, and mosaic tile floors and walls. -Islamic art includes geometric patterns, Islamic calligraphy, and architecture. In India and Tibet, painted sculptures, dance, and religious painting were done. In China, arts included jade carving, bronze, pottery, poetry, calligraphy, music, painting, drama, and fiction. There are many Chinese artistic styles, which are usually named after the ruling dynasty. -In Europe, after the Middle Ages, there was a "Renaissance" which means "rebirth". People rediscovered science and artists were allowed to paint subjects other than religious subjects. People like Michelangelo and Leonardo da Vinci still painted religious pictures, but they also now could paint mythological pictures too. These artists also invented perspective where things in the distance look smaller in the picture. This was new because in the Middle Ages people would paint all the figures close up and just overlapping each other. These artists used nudity regularly in their art. -In the late 1800s, artists in Europe, responding to Modernity created many new painting styles such as Classicism, Romanticism, Realism, and Impressionism. The history of twentieth century art includes Expressionism, Fauvism, Cubism, Dadaism, Surrealism, and Minimalism. -Roles of art. -In some societies, people think that art belongs to the person who made it. They think that the artist put his or her "talent" and industry into the art. In this view, the art is the property of the artist, protected by copyright. -In other societies, people think that art belongs to no one. They think that society has put its social capital into the artist and the artist's work. In this view, society is a collective that has made the art, through the artist. -Functions of art. -The functions of art include: -1) Cognitive function - Works of art let us know about what the creator thought or knew, and what the surroundings of the author were like, real or imagined. -2) Aesthetic function - Works of art can make people happy by being beautiful or evoke any of the emotions. -3) Prognostic function - Some artists draw what they see the future like, and some of them are right, but most are not... -4) Recreation function - Art makes us think about it, not about reality; we have a rest. -5) Value function - What did the artist value? What aims did they like/dislike in human activity? This usually is clearly seen in artists' works. -6) Didactic function - What message, criticism or political change did the artist wish to achieve? \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/As.txt b/.github/workflows/data/simplewiki-100/As.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-100/Asteroid.txt b/.github/workflows/data/simplewiki-100/Asteroid.txt deleted file mode 100644 index 72fe52bcb..000000000 --- a/.github/workflows/data/simplewiki-100/Asteroid.txt +++ /dev/null @@ -1,7 +0,0 @@ -An asteroid is a minor planet that orbits within the inner solar system. It is a small object in the Solar System that travels around the Sun. It is like a planet but smaller. They range from very small (smaller than a car) to 600 miles (1000 km) across. A few asteroids have an asteroid moon. -The name "asteroid" means "like a star" in the ancient Greek language. Asteroids may look like small stars in the sky, but they really do move around the Sun. Like planets, asteroids do not make their own light. Because of this, some people think "asteroids" is not a good name, and think that the name "planetoid" ("like a planet") would be a better name. -Giuseppe Piazzi found the first asteroid, in 1801. He called it Ceres, and it is the biggest object in the asteroid belt. Others, like Juno, Pallas, and Vesta were found later. In the 1850s, so many had been found that they were numbered by a Minor planet designation starting with 1 Ceres. Today, astronomers using computerized telescopes find thousands of asteroids every month. Asteroid impact prediction is one of their purposes. -Asteroids are the leftover rock and other material from the formation of the Solar System. These rocks were too small to come together to make a planet. Some are made of carbon or metal. Depending on what's on the surface, they are classified into various asteroid spectral types including Type M (metal), Type S (stone), and Type C (carbon). -Most asteroids in our Solar System are in the asteroid belt between Mars and Jupiter. Many are not in the main asteroid belt. The ones that come close to Earth are called Near-Earth asteroids. Some scientists think asteroids striking the Earth killed off all the dinosaurs and caused some of the other extinction events. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Astronomy.txt b/.github/workflows/data/simplewiki-100/Astronomy.txt deleted file mode 100644 index fc06588ea..000000000 --- a/.github/workflows/data/simplewiki-100/Astronomy.txt +++ /dev/null @@ -1,64 +0,0 @@ -Astronomy is the scientific study of celestial bodies. Stars, galaxies, planets, moons, asteroids, comets and nebulae are studied, as are supernovae explosions, gamma ray bursts, and cosmic microwave background radiation. Astronomy includes the development, physics, chemistry, meteorology and movement of celestial bodies. The big questions are the structure and development of the universe. -Astronomy is one of the oldest sciences. The patterns of stars in the night sky were called constellations by the Arabs. They used the positions of the stars to navigate, and to find when was the best time to plant crops. -Astrophysics is an important part of astronomy. A related subject, cosmology, is concerned with studying the universe as a whole, and the way the universe changed over time. Astronomy is not the same as "astrology", a belief that the motion of the stars and the planets may affect human lives. -There are two main types of astronomy, "observational" and "theoretical" astronomy. Observational astronomy uses telescopes and cameras to "observe" or look at stars, galaxies and other astronomical objects. Theoretical astronomy explains what we see. It predicts what might happen. Observations show whether the predictions work. The main work of astronomy is to explain puzzling features of the Universe. For many years the most important issue was the motions of planets. Many other topics are now studied. -Day-time astronomy is possible. First, there's the Sun, but observing directly is dangerous. It is too bright, and can burn your eyes and can cause permanent blindness. To look at the Sun you need proper shields and equipment. Some other individual bright stars and planets can be seen during daylight hours through a telescope or a powerful pair of binoculars. -History of astronomy. -Ancient history. -Early astronomers used only their eyes to look at the stars. They made maps of the constellations and stars for religious reasons and calendars to work out the time of year. Early civilisations such as the Maya people and the Ancient Egyptians built simple observatories and drew maps of the stars positions. They also began to think about the place of Earth in the universe. For a long time people thought Earth was the center of the universe, and that the planets, the stars and the sun went around it. This is known as geocentrism. Astronomy is from the Greek "astron" (ἄστρον) meaning "star" and "nomos" (nόμος) meaning "law") -Ancient Greeks tried to explain the motions of the Sun and stars by taking measurements. A mathematician named Eratosthenes was the first who measured the size of the Earth and proved that the Earth is a sphere. A theory by another mathematician named Aristarchus was, that the Sun is the center and the Earth is moving around it. This is known as heliocentrism. Only a few people thought it was right. The rest continued to believe in the "geocentric" model. Most of the names of constellations and stars come from Greeks of that time. -Arabic astronomers made many advancements during the Middle Ages including improved star maps and ways to estimate the size of the Earth. They also learned from the ancients by translating Greek books into Arabic. -Renaissance to modern era. -During the renaissance a priest named Nicolaus Copernicus thought, from looking at the way the planets moved, that the Earth was not the center of everything. Based on previous works, he said that the Earth was a planet and all the planets moved around the Sun. This brought back the old idea of heliocentrism. Galileo Galilei built his own telescopes, and used them to look more closely at the stars and planets for the first time. He agreed with Copernicus. The Catholic Church thought Galileo was wrong. He spent the rest of his life under house arrest. Heliocentric ideas were soon improved by Johannes Kepler and Isaac Newton, who invented the theory of gravity. -After Galileo, people made better telescopes and used them to see farther objects such as the planets Uranus and Neptune. They also saw how stars were similar to our Sun, but in a range of colours and sizes. They also saw thousands of other faraway objects such as galaxies and nebulae. -Modern era. -The 20th century after 1920 saw important changes in astronomy. -In the early 1920s it began to be accepted that the galaxy in which we live, the Milky Way, is not the only galaxy. The existence of other galaxies was settled by Edwin Hubble, who identified the Andromeda nebula as a different galaxy. It was also Hubble who proved that the universe was expanding. There were many other galaxies at large distances and they are receding, moving away from our galaxy. That was completely unexpected. -In 1931, Karl Jansky discovered radio emission from outside the Earth when trying to isolate a source of noise in radio communications, marking the birth of radio astronomy and the first attempts at using another part of the electromagnetic spectrum to observe the sky. Those parts of the electromagnetic spectrum that the atmosphere did not block were now opened up to astronomy, allowing more discoveries to be made. -The opening of this new window on the Universe saw the discovery of entirely new things, for example pulsars, which sent regular pulses of radio waves out into space. The waves were first thought to be alien in origin because the pulses were so regular that (so it was thought) it implied an artificial source. -The period after World War II saw more observatories. Large and accurate telescopes were built and operated at good observing sites, usually by governments. For example, Bernard Lovell began radio astronomy at Jodrell Bank using leftover military radar equipment. By 1957, the site had the largest steerable radio telescope in the world. Similarly, the end of the 1960s saw the start of the building of dedicated observatories at Mauna Kea in Hawaii, a good site for visible and infra-red telescopes thanks to its high altitude and clear skies. -The next great revolution in astronomy was thanks to the birth of rocketry. This allowed telescopes to be placed in space on satellites. -Space telescopes gave access, for the first time in history, to the entire electromagnetic spectrum including rays that had been blocked by the atmosphere. The X-rays, gamma rays, ultraviolet light and parts of the infra-red spectrum were all opened to astronomy as observing telescopes were launched. As with other parts of the spectrum, new discoveries were made. -From 1970s satellites were launched to be replaced with more accurate and better satellites, causing the sky to be mapped in nearly all parts of the electromagnetic spectrum. -Discoveries. -Discoveries broadly come in two types: bodies and phenomena. Bodies are things in the Universe, whether it is a planet like our Earth, or a galaxy like our Milky Way. Phenomena are events and happenings in the Universe. -Bodies. -For convenience, this section has been divided by where these astronomical bodies may be found: those found around stars are solar bodies, those inside galaxies are galactic bodies and everything else larger are cosmic bodies. -Galactic. -Diffuse Objects: -Compact Stars: -Phenomena. -Burst events are those where there is a sudden change in the heavens that disappears quickly. These are called bursts because they are normally associated with large explosions producing a "burst" of energy. They include: -Periodic events are those that happen regularly in a repetitive way. The name periodic comes from period, which is the length of time required for a wave to complete one cycle. Periodic phenomena include: -Noise phenomena tend to relate to things that happened a long time ago. The signal from these events bounce around the Universe until it seems to come from everywhere and varies little in intensity. In this way, it is "noise", the background signal that pervades every instrument used for astronomy. The most common example of noise is static seen on analogue televisions. The principal astronomical example is: cosmic background radiation. -Methods. -Techniques. -There are way astronomers can get better pictures of the heavens. Light from a distant source reaches a sensor and gets measured, normally by a human eye or a camera. For very dim sources, there may not be enough light particles coming from the source for it to be seen. One technique that astronomers have for making it visible is using "integration" (which is like longer exposures in photography). -Integration. -Astronomical sources do not move much: only the rotation and movement of the Earth causes them to move across the heavens. As light particles reach the camera over time, they hit the same place making it brighter and more visible than the background, until it can be seen. -Telescopes at most observatories (and satellite instruments) can normally track a source as it moves across the heavens, making the star appear still to the telescope and allowing longer exposures. Also, images can be taken on different nights so exposures span hours, days or even months. In the digital era, digitised pictures of the sky can be added together by computer, which overlays the images after correcting for movement. -Adaptive optics. -Adaptive optics means changing the shape of the mirror or lens while looking at something, to see it better. -Data analysis. -Data analysis is the process of getting more information out of an astronomical observation than by simply looking at it. The observation is first stored as data. This data then has various techniques used to analyse it. -Fourier analysis. -Fourier analysis in mathematics can show if an observation (over a length of time) is changing periodically (changes like a wave). If so, it can extract the frequencies and the type of wave pattern, and find many things including new planets. -Subfields of astronomy. -Pulsars pulse regularly in radio waves. These turned out to be similar to some (but not all) of a type of bright source in X-rays called a Low-mass X-ray binary. It turned out that all pulsars and some LMXBs are neutron stars and that the differences were due to the environment in which the neutron star was found. Those LMXBs that were not neutron stars turned out to be black holes. -This section attempts to provide an overview of the important fields of astronomy. -Solar astronomy. -Solar astronomy is the study of the Sun. The Sun is the closest star to Earth at around 92 million (92,000,000) miles away. It is the easiest to observe in detail. Observing the Sun can help us understand how other stars work and are formed. Changes in the Sun can affect the weather and climate on Earth. A stream of charged particles called the Solar wind is constantly sent off from the Sun. The Solar wind hitting the Earth's magnetic field causes the northern lights. -Stellar astronomy -Stellar astronomy, sometimes "stellar astrophysics" is the scientific study of stars, their formation, evolution and fate (stellar evolution). In the most basic sense, Stellar Astronomy attempts to answer the questions to the universe's most common phenomena — stars. Heavily relating with Galactic and Planetary Astronomy. -Planetary astronomy. -Planetary astronomy is the study of planets, moons, dwarf planets, comets and asteroids as well as other small objects that orbit stars. The planets of our own Solar System have been studied in depth by many visiting spacecraft such as Cassini-Huygens (Saturn) and the Voyager 1 and 2. -Galactic astronomy. -Galactic astronomy is the study of distant galaxies. Studying distant galaxies is a good way of learning about our own galaxy, as the gases and stars in our own galaxy make it difficult to observe. Galactic astronomers try to understand the structure of galaxies and how they are formed by using different types of telescopes and computer simulations. -Gravitational wave astronomy. -Gravitational wave astronomy is the study of the Universe in the gravitational wave spectrum. So far, all astronomy that has been done has used the electromagnetic spectrum. Gravitational waves are ripples in spacetime emitted by very dense objects changing shape, which include white dwarves, neutron stars and black holes. Because no one has been able to detect gravitational waves directly, the impact of gravitational wave astronomy has been limited. -Unsolved problems. -Great discoveries also produce unsolved problems. This is just a short-list: -Related pages. -<templatestyles src="Div col/styles.css"/> -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Atom.txt b/.github/workflows/data/simplewiki-100/Atom.txt deleted file mode 100644 index 9305f8917..000000000 --- a/.github/workflows/data/simplewiki-100/Atom.txt +++ /dev/null @@ -1,66 +0,0 @@ -An atom is an extremely small piece of matter. All normal matter – everything that has mass – is made of atoms. This includes solids, liquids, and gases. The atom cannot be broken to parts by chemistry, so people once thought it was the smallest piece of matter that could exist. There are over 100 different kinds of atoms, called chemical elements. Each kind has the same basic structure, but a different number of parts. -Atoms are very small, but their exact size depends on the type. Atoms are from 0.1 to 0.5 nanometers across. One nanometer is about 100,000 times smaller than the width of a human hair. This makes one atom impossible to see without special tools. Scientists learn how they work by doing experiments. -Atoms are made of three kinds of subatomic particles. These are protons, neutrons, and electrons. Protons and neutrons have much more mass. These are in the middle of the atom, called the nucleus. Lightweight electrons move quickly around them. The electromagnetic force holds the nucleus and electrons together. -Atoms with the same number of protons belong to the same chemical element. Examples of elements are carbon and gold. Atoms with the same number of protons, but different numbers of neutrons, are called isotopes. Usually an atom has the same number of electrons as protons. If an atom has more or less electrons than protons, it is called an ion, and has an electric charge. -Atoms can join by chemical bonds. Many things are made of more than one kind of atom. These are chemical compounds or mixtures. A group of atoms connected by chemical bonds is called a molecule. For example, a water molecule is made of two hydrogen atoms and one oxygen atom. The forming or breaking of bonds is a chemical reaction. -Atoms split if the forces inside are too weak to hold them together. This is what causes radioactivity. Atoms can also join to make larger atoms at very high temperatures, such as inside a star. These changes are studied in nuclear physics. Most atoms on Earth are not radioactive. They are rarely made, destroyed, or changed into another kind of atom. -History. -The word "atom" comes from the Greek (ἀτόμος) "atomos", which means "indivisible" or "uncuttable". One of the first people to use the word "atom" is the Greek philosopher Democritus, around 400 . He thought that everything was made of particles called atoms, which could not be divided into smaller pieces. Some Hindu, Jain, and Buddhist philosophers also had ideas like this. Atomic theory was a mostly philosophical subject, with not much scientific investigation or study, until the early 1800s. -In 1777 French chemist Antoine Lavoisier defined the term "element" as we now use it. He said that an element was any substance that could not be broken down into other substances by the methods of chemistry. Any substance which could be broken down was a "compound". -In 1803, English philosopher John Dalton suggested that elements were made of tiny, solid balls called atoms. Dalton believed that all atoms of the same element have the same mass. He said that compounds are formed when atoms of more than one element combine. In any one compound, the atoms would always combine in the same numbers. -In 1827, British scientist Robert Brown looked at pollen grains in water under his microscope. The pollen grains appeared to be shaking. Brown used Dalton's atomic theory to describe patterns in how they moved. This was called "Brownian motion". In 1905 Albert Einstein used mathematics to prove that the pollen particles were being moved by the motion, or heat, of individual water molecules. By doing this, he proved that atoms are real without question. -In 1869, Russian scientist Dmitri Mendeleev published the first periodic table. The periodic table groups elements by their atomic number (how many protons they have; this is usually the same as the number of electrons). Elements in the same column, or group, usually have similar qualities. For example, helium, neon, argon, krypton, and xenon are all in the same column and are very similar. All these elements are gases that have no color or smell. Also, they cannot combine with other atoms to form compounds. Together they are known as noble gases. -The physicist J.J. Thomson was the first person to discover electrons. This happened while he was working with cathode rays in 1897. He learned they had a negative charge, and the rest of the atom had a positive charge. Thomson made the plum pudding model, which said that an atom was like plum pudding: the dried fruit (electrons) were stuck in a mass of pudding (having a positive charge). -In 1909, Ernest Rutherford used the Geiger–Marsden experiment to prove that most of an atom is in a very small space, the atomic nucleus. Rutherford took a photo plate and covered it with gold foil. He then shot alpha particles (made of two protons and two neutrons stuck together) at it. Many of the particles went through the gold foil, which proved that atoms are mostly empty space. Electrons are so small and fast-moving that they did not block the particles from going through. Rutherford later discovered protons in the nucleus. -In 1913, Niels Bohr created the Bohr model. This model showed that electrons travel around the nucleus in fixed circular orbits. This was better than the Rutherford model, but it was still not completely true. -In 1925, chemist Frederick Soddy discovered that some elements had more than one kind of atom, called isotopes. Soddy believed that each different isotope of an element has a different mass. To prove this, chemist Francis William Aston built the mass spectrometer, which measures the mass of single atoms. Aston proved that Soddy was right. He also found that the mass of each atom is a whole number times the mass of the proton. This meant that there must be some particles in the nucleus other than protons. In 1932, physicist James Chadwick shot alpha particles at beryllium atoms. He saw that a particle shot out of the beryllium atoms. This particle had no charge, but about the same mass as a proton. He named this particle the neutron. -The best model so far comes from the Schrödinger equation. Schrödinger learned that the electrons exist in a cloud around the nucleus, called the electron cloud. In the electron cloud, it is impossible to know exactly where electrons are. The Schrödinger equation says where an electron is likely to be. This area is called the electron's orbital. -In 1937, German chemist Otto Hahn became the first person to make nuclear fission in a laboratory. He discovered this by chance when shooting neutrons at a uranium atom, hoping to make a new isotope. However, instead of a new isotope, the uranium changed into a barium atom, a smaller atom than uranium. Hahn had "broken" the uranium atom. This was the world's first recorded nuclear fission reaction. This discovery led to the creation of the atomic bomb and nuclear power, where fission happens over and over again, creating a chain reaction. -Later in the 20th century, physicists went deeper into the mysteries of the atom. Using particle accelerators, they discovered that protons and neutrons were made of other particles, called quarks. -Structure and parts. -Parts. -An atom is made of three main particles: the proton, the neutron, and the electron. Protons and neutrons have nearly the same size and mass (about grams). The mass of an electron is about 1800 times smaller (about grams). Protons have a positive charge, electrons have a negative charge, and neutrons have no charge. Most atoms have no charge. The number of protons (positive) and electrons (negative) are the same, so the charges balance out to zero. However, ions have a different number of electrons than protons, so they have a positive or negative charge. -Scientists believe that electrons are elementary particles: they are not made of any smaller pieces. Protons and neutrons are made of quarks of two kinds: up quarks and down quarks. A proton is made of two up quarks and one down quark, and a neutron is made of two down quarks and one up quark. -Nucleus. -The nucleus is in the middle of the atom. It is made of protons and neutrons. The nucleus makes up more than 99.9% of the mass of the atom. However, it is very small: about 1 femtometer (10−15 m) across, which is around 100,000 times smaller than the width of an atom, so it has a very high density. -Usually in nature, two things with the same charge repel or shoot away from each other. So for a long time, scientists did not know how the positively charged protons in the nucleus stayed together. We now believe that the attraction between protons and neutrons comes from the "strong nuclear force". This force also holds together the quarks that make up the protons and neutrons. Particles called mesons travel back and forth between protons and neutrons, and carry the force. -The number of neutrons in relation to protons defines whether the nucleus stays together or goes through radioactive decay. When there are too many neutrons or protons, the atom tries to make the numbers smaller or more equal by removing the extra particles. It sends out radiation in the form of alpha, beta, or gamma decay. Nuclei can also change in other ways. Nuclear fission is when the nucleus breaks into two smaller nuclei, releasing a lot of energy. This release of energy makes nuclear fission useful for making bombs, and electricity in the form of nuclear power. -The other way nuclei can change is through nuclear fusion, when two nuclei join or fuse to make a larger nucleus. This process requires very high amounts of energy to overcome the electric repulsion between the protons, as they have the same charge. Such high energies are most common in stars like our Sun, which fuses hydrogen for fuel. However, once fusion happens, far more energy is released, because some of the mass becomes energy. -The energy needed to break a nucleus into protons and neutrons is called its nuclear binding energy. This energy can be converted to mass, as stated by Einstein's famous formula "E" = "mc"2. Medium-sized nuclei, such as iron-56 and nickel-62, have the highest binding energy per proton or neutron. They will probably not go through fission or fusion, because they cannot release energy in this way. Very small and very large atoms have low binding energy, so they are most willing to go through fission or fusion. -Electrons. -Electrons orbit, or travel around, the nucleus. They are called the atom's "electron cloud". They are attracted to the nucleus because of the electromagnetic force. Electrons have a negative charge, and the nucleus always has a positive charge, so they attract each other. -The Bohr model shows that some electrons are farther from the nucleus than others in different levels. These are called "electron shells". Only the electrons in the outer shell can make chemical bonds. The number of electrons in the outer shell determines whether the atom is stable or which atoms it will bond with in a chemical reaction. If an atom has only one shell, it needs two electrons to be complete. Otherwise, the outer shell needs eight electrons to be complete. -The Bohr model is important because it has the idea of energy levels. The electrons in each shell have a certain amount of energy. Shells that are farther from the nucleus have more energy. When a small burst of energy called a photon hits an electron, the electron can jump into a "higher-energy" shell. This photon must carry exactly the right amount of energy to bring the electron to the new energy level. A photon is a burst of light, and the amount of energy determines the color of light. So each kind of atom will absorb certain colors of light, called the absorption spectrum. An electron can also send out, or emit, a photon, and fall into a "lower energy" shell. For the same reason, the atom will only send out certain colors of light, called the emission spectrum. -The complete picture is more complicated. Unlike the Earth moving around the Sun, electrons do not move in a circle. We cannot know the exact place of an electron. We only know the probability, or chance, that it will be in any place. Each electron is part of an "orbital", which describes where it is likely to be. No more than two electrons can be in one orbital; these two electrons have different "spin". -For each shell, numbered 1, 2, 3, and so on, there may be a number of different orbitals. These have different shapes, or point in different directions. Each orbital can be described by its three "quantum numbers". The "principal quantum number" is the electron shell number. The "azimuthal quantum number" is represented by a letter: s, p, d, or f. Depending on the principal and azimuthal quantum numbers, the electron can have more or less energy. There is also a "magnetic quantum number", but it does not usually affect the energy level. As more electrons are added, they join orbitals in order from lowest to highest energy. This order starts as follows: 1s, 2s, 2p, 3s, 3p, 4s, 3d, 4p, 5s, 4d. For example, a chlorine atom has 17 electrons. So, it will have: -In other words, it has 2 electrons in the first shell, 8 in the second shell, and 7 in the third shell. -Properties. -Atomic number. -The number of protons in an atom is called its "atomic number". Atoms of the same element have the same atomic number. For example, all carbon atoms have six protons, so the atomic number of carbon is six. Today, 118 elements are known. Depending on how the number is counted, 90 to 94 elements exist naturally on earth. All elements above number 94 have only been made by humans. These elements are organized on the periodic table. -Atomic mass and weight. -Because protons and neutrons have nearly the same mass, and the mass of electrons is very small, we can call the number of protons and neutrons in an atom its "mass number". Most elements have several isotopes with different mass numbers. To name an isotope, we use the name of the element, followed by its mass number. So an atom with six protons and seven neutrons is called carbon-13. -Sometimes, we need a more exact measurement. The exact mass of an atom is called its "atomic mass". This is usually measured with the atomic mass unit (amu), also called the dalton. One amu is exactly 1/12 of the mass of a carbon-12 atom, which is grams. Hydrogen-1 has a mass of about 1 amu. The heaviest atom known, oganesson, has a mass of about 294 amu, or grams. The average mass of all atoms of a particular element is called its "atomic weight". -Size. -The size of an atom depends on the size of its electron cloud. Moving down the periodic table, more electron shells are added. As a result, atoms get bigger. Moving to the right on the periodic table, more protons are added to the nucleus. This more positive nucleus pulls electrons more strongly, so atoms get smaller. The biggest atom is caesium, which is about 0.596 nanometers wide according to one model. The smallest atom is helium, which is about 0.062 nanometers wide. -How atoms interact. -When atoms are far apart, they attract each other. This attraction is stronger for some kinds of atoms than others. At the same time, the heat, or kinetic energy, of atoms makes them always move. If the attraction is strong enough, relative to the amount of heat, atoms will form a solid. If the attraction is weaker, they will form a liquid, and if it is even weaker, they will form a gas. -Chemical bonds are the strongest kinds of attraction between atoms. The movement of electrons explains all chemical bonds. -Atoms usually bond with each other in a way that fills or empties their outer electron shell. The most reactive elements have an almost full or almost empty outer shell. Atoms with a full outer shell, called noble gases, do not usually form bonds. -There are three main kinds of bonds: ionic bonds, covalent bonds, and metallic bonds. -All atoms attract each other by Van der Waals forces. These forces are weaker than chemical bonds. They are caused when electrons move to one side of an atom. This movement gives a negative charge to that side. It also gives a positive charge to the other side. When two atoms line up their sides with negative and positive charges, they will attract. -Although atoms are mostly empty space, they cannot pass through each other. When two atoms are very close, their electron clouds will repel each other by the electromagnetic force. -Magnetism. -To understand how magnets work, we can look at the properties of the atom. Any magnet has a north and south pole, and a certain strength. The direction and strength of a magnet, together, are called its magnetic moment. Every electron also has a magnetic moment, like a tiny magnet. This comes from the electron's spin and its orbit around the nucleus. The magnetic moments for the electrons add up to a magnetic moment for the whole atom. This tells us how atoms act in a magnetic field. -Every electron has one of two opposite spins. We can think of one as turning to the right, and the other as turning to the left. If every electron is paired with an electron with the opposite spin in the same orbital, the magnetic moments will cancel out to zero. Atoms like this are called diamagnetic. They are only weakly repelled by a magnetic field. -However, if some electrons are not paired, the atom will have a lasting magnetic moment: it will be paramagnetic or ferromagnetic. When atoms are paramagnetic, the magnetic moment of each atom points in a random direction. They are weakly attracted to a magnetic field. When atoms are ferromagnetic, the magnetic moments of nearby atoms act on each other. They point in the same direction. This means that the whole object is a magnet, and it can point in the direction of a magnetic field. Ferromagnetic materials, such as iron, cobalt, and nickel, are strongly attracted to a magnetic field. -Radioactive decay. -Some elements, and many isotopes, have what is called an "unstable nucleus". This means the nucleus is either too big to hold itself together, or it has too many protons or neutrons. When a nucleus is unstable, it has to eliminate the excess mass of particles. It does this through radiation. An atom that does this is called "radioactive". Unstable atoms emit radiation until they lose enough particles in the nucleus to become stable. All atoms above atomic number 82 (82 protons, lead) are radioactive. -There are three main kinds of radioactive decay: alpha, beta, and gamma. -Every radioactive element or isotope has a "half-life". This is how long it takes half of any sample of atoms of that type to decay into a different isotope or element. -Creation of atoms. -Nearly all the hydrogen atoms in the Universe, most of the helium atoms, and some of the lithium atoms were made soon after the Big Bang. Even today, about 90% of all atoms in the Universe are hydrogen. -All other atoms come from nuclear fusion in stars, or sometimes from cosmic rays that hit atoms. At the start of their life, all stars fuse hydrogen to make helium. The least massive stars, red dwarfs, are expected to stop there. All other stars will then fuse helium to make carbon and oxygen. In stars like the Sun, the temperature and pressure are too low to make larger atoms. But more massive stars continue fusion, until they create iron (atomic number 26) or nickel (atomic number 28). Atoms can also grow larger when neutrons or protons hit them. This could happen inside stars or in supernovae. Most atoms on Earth were made by a star that existed before the Sun. -People make very large atoms by smashing together smaller atoms in particle accelerators. However, these atoms often decay very quickly. Oganesson (element 118) has a half-life of 0.00089 seconds. Even larger atoms may be created in the future. -Sources. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/August.txt b/.github/workflows/data/simplewiki-100/August.txt deleted file mode 100644 index 5a002950b..000000000 --- a/.github/workflows/data/simplewiki-100/August.txt +++ /dev/null @@ -1,11 +0,0 @@ -August (Aug.) is the eighth month of the year in the Gregorian calendar, coming between July and September. It has 31 days. It is named after the Roman emperor Augustus Caesar. -August does not begin on the same day of the week as any other month in common years, but begins on the same day of the week as February in leap years. August always ends on the same day of the week as November. -The Month. -This month was first called "Sextilis" in Latin, because it was the sixth month in the old Roman calendar. The Roman calendar began in March about 735 BC with Romulus. October was the eighth month. August was the eighth month when January or February were added to the start of the year by King Numa Pompilius about 700 BC. Or, when those two months were moved from the end to the beginning of the year by the decemvirs about 450 BC (Roman writers disagree). In 153 BC January 1 was determined as the beginning of the year. -August is named for Augustus Caesar who became Roman consul in this month. The month has 31 days because Julius Caesar added two days when he created the Julian calendar in 45 BC. August is after July and before September. -August, in either hemisphere, is the seasonal equivalent of February in the other. In the Northern hemisphere it is a summer month and it is a winter month in the Southern hemisphere. -No other month in common years begins on the same day of the week as August, but August begins on the same day of the week as February in leap years. August ends on the same day of the week as November every year, as each other's last days are 13 weeks (91 days) apart. -In common years, August starts on the same day of the week as March and November of the previous year, and in leap years, June of the previous year. In common years, August finishes on the same day of the week as March and June of the previous year, and in leap years, September of the previous year. In common years immediately after other common years, August starts on the same day of the week as February of the previous year. -In years immediately before common years, August starts on the same day of the week as May of the following year, and in years immediately before leap years, October of the following year. In years immediately before common years, August finishes on the same day of the week as May of the following year, and in years immediately before leap years, February and October of the following year. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Australia.txt b/.github/workflows/data/simplewiki-100/Australia.txt deleted file mode 100644 index c4667056e..000000000 --- a/.github/workflows/data/simplewiki-100/Australia.txt +++ /dev/null @@ -1,78 +0,0 @@ -Australia (officially called the Commonwealth of Australia) is a country and sovereign state located in the southern hemisphere, in Oceania. Its capital city is Canberra, and its largest city is Sydney. It is mostly desert country. -Australia is the sixth biggest country in the world by land area, and is part of the Oceanic and Australasian regions. Australia, New Zealand, New Guinea and other islands on the Australian tectonic plate are together called Australasia, which is one of the world's great ecozones. When other Pacific islands are included with Australasia, it is called Oceania. -27 million people live in Australia, and about 85% of them live near the east coast. The country is divided up into six states and two territories, and more than half of Australia's population lives in and around the cities of Sydney, Melbourne, Brisbane, Perth and Adelaide. The first people to live in the country were the Indigenous Australians: many of them died from smallpox during colonisation. -Australia is known for its mining (coal, iron, gold, diamonds and crystals). It produces wool, and is the world's largest producer of bauxite. Its emblem is a flower called the golden wattle. -Australia is also known for its animals. The national symbols of Australia are the kangaroo and the golden wattle. Scientifically, perhaps even more important are its two monotreme mammals: the platypus and the echidna. -Geography. -Australia's landmass of is on the Indo-Australian plate. The continent of Australia, including the island of Tasmania, was separated from the other continents of the world many millions of years ago. Because of this, many animals and plants live in Australia that do not live anywhere else. These include animals like the kangaroo, the koala, the emu, and the kookaburra. The duck-billed platypus. and the echidna are completely unique. -People first arrived in Australia more than 50,000 years ago. These native Australians are called the Australian Aboriginals. For the history of Australia, see History of Australia. -Most of the Australian colonies, having been settled from Britain, became mostly independent democratic states in the 1850s and all six combined as a federation on 1 January 1901. The first Prime Minister of Australia was Edmund Barton in 1901. Australia is a member of the United Nations and the Commonwealth of Nations. It is a parliamentary democracy and a constitutional monarchy with King Charles III as King of Australia and Head of State and a Governor-General who is chosen by the Prime Minister to carry out all the duties of the King in Australia. -Regions and cities. -Australia has six states, two major mainland territories, and other minor territories. The states are New South Wales, Queensland, South Australia, Victoria, Western Australia and Tasmania (which is a large island). The two major mainland territories are the Northern Territory (which is huge) and the Australian Capital Territory (ACT) which is not much more than a city. -The population is about 26 million people (2021 census = 25,890,773). Most Australians live in cities along the coast, such as Sydney, Melbourne, Brisbane, Perth, Adelaide, Newcastle and the Gold Coast. The largest inland city is Canberra, which is also the nation's capital. The largest city is Sydney. -Australia is a very large country, but much of the land is very dry, and the middle of the continent is mostly a hot desert. Only the areas around the east, west and south coast have enough rain and a suitable climate (not too hot and dry) for farms and cities. The island state of Tasmania has a more balanced climate than much of the mainland. -Climate change. -All the capital cities except Perth and Darwin are in the south-east of the country. There is now increasing rainfall and flooding which affects this region, which is ominous [threatening]. It is thought this is caused by climate change, and may continue to get worse. The BBC report comments: "In the past three years, record-breaking bushfire and flood events have killed more than 500 people and billions of animals. Drought, cyclones and freak tides have gripped communities". The BBC report continues: "Nowhere is this a bigger issue than in Queensland. It is home to almost 40% of the 500,000 homes projected to be effectively uninsurable". This means people can't get insurance because the risk of flooding (in one season) or fire (in another season) is too great. -History. -Aboriginal people. -The Aboriginal and Torres Strait Islander people arrived in Australia about 60,000 years ago or maybe even earlier. Until the arrival of British settlers in 1788, the Aboriginal people lived by hunting and gathering food from the land. They lived in all sorts of climates and managed the land in different ways. An example of Aboriginal land management was the Cumberland Plain where Sydney is now. Every few years the Aboriginal people would burn the grass and small trees. This meant that a lot of grass grew back, but not many big trees. Kangaroos like to live on grassy plains, but not in forests. The kangaroos that lived on the plain were a good food supply for the Aboriginal people. Sometimes, Aboriginals would name a person after an animal, and they could not eat that animal to help level out the food population. -Aboriginal people did not usually build houses, except huts of grass, leaves and bark. They did not usually build walls or fences, and there were no horses, cows or sheep in Australia that needed to be kept in pens. The only Aboriginal buildings that are known are fish-traps made from stones piled up in the river, and the remains of a few stone huts in Victoria and Tasmania. The Aboriginal people did not use metal or make pottery or use bows and arrows or weave cloth. In some parts of Australia the people used sharp flaked-stone spearheads, but most Aboriginal spears were made of sharply pointed wood. Australia has a lot of trees that have very hard wood that was good for spear making. The boomerang was used in some areas for sport and for hunting. -The Aboriginal people did not think that the land belonged to them. They believed that they had grown from the land, so it was like their mother, and they belonged to the land. -"Terra Australis". -In the 1600s, Dutch merchants traded with the islands of Batavia (now Indonesia), to the north of Australia and several different Dutch ships touched on the coast of Australia. The Dutch governor, van Diemen, sent Abel Tasman on a voyage of discovery and he found Tasmania, which he named Van Diemen's Land. Its name was later changed to honour the man who discovered it. -The British Government was sure that there must be a very large land in the south, that had not been explored. They sent Captain James Cook to the Pacific Ocean. His ship, "HMS Endeavour", carried the famous scientists, Sir Joseph Banks and Dr Solander who were going to Tahiti where they would watch the planet Venus pass in front of the Sun. Captain Cook's secret mission was to find "Terra Australis" (the Land of the South). -The voyage of discovery was very successful, because they found New Zealand and sailed right around it. Then they sailed westward. At last, a boy, William Hicks, who was up the mast spotted land on the horizon. Captain Cook named that bit of land Point Hicks. They sailed up the coast and Captain Cook named the land that he saw "New South Wales". At last they sailed into a large open bay which was full of fish and stingrays which the sailors speared for food. Joseph Banks and Dr. Solander went ashore and were astonished to find that they did not know what any of the plants or birds or animals that they saw were. They collected hundreds of plants to take back to England. -Captain Cook saw the Aboriginal people with their simple way of life. He saw them fishing and hunting and collecting grass seeds and fruit. But there were no houses and no fences. In most parts of the world, people put up a house and a fence or some marker to show that they own the land. But the Aboriginal people did not own the land in that way. They belonged to the land, like a baby belongs to its mother. Captain Cook went home to England and told the government that no-one owned the land. This would later cause a terrible problem for the Aboriginal people. -Settlement. -In the 1700s, in England, laws were tough, many people were poor and gaols (jails) were full. A person could be sentenced to death for stealing a loaf of bread. Many people were hanged for small crimes. But usually they were just thrown in gaol. Often they were sent away to the British colonies in America. But by the 1770s, the colonies in America became the United States. They were free from British rule and would not take England's convicts any more, so England needed to find a new and less populated place. -By the 1780s the gaols of England were so full that convicts were often chained up in rotting old ships. The government decided to make a settlement in New South Wales and send some of the convicts there. In 1788 the First Fleet of eleven ships set sail from Portsmouth carrying convicts, sailors, marines, a few free settlers and enough food to last for two years. Their leader was Captain Arthur Phillip. They were to make a new colony at the place that Captain Cook had discovered, named Botany Bay because of all the unknown plants found there by the two scientists. -Captain Phillip found that Botany Bay was flat and windy. There was not much fresh water. He went with two ships up the coast and sailed into a great harbour called Port Jackson, which he said was "the finest harbour in the world". There were many small bays on the harbour so he decided on one which had a good stream of fresh water and some flat shore to land on. On 26 January 1788, the flag was raised and New South Wales was claimed in the name of King George III of England, and the new settlement was called Sydney. -For the first few years of the settlement, things were very difficult. No-one in the British Government had thought very hard about what sort of convicts should be sent to make a new colony. Nobody had chosen them carefully. There was only one man who was a farmer. There was no-one among the convicts who was a builder, a brick-maker or a blacksmith. No-one knew how to fix the tools when they broke. All of the cattle escaped. There were no cooking pots. All the plants were different so no-one knew which ones could be eaten. It was probable that everyone in the new colony would die of starvation. -The little group of tents had a hut for the Governor, Arthur Phillip, and another hut for the supply of food. Soon it grew into a small town with streets, a bridge over the stream, a windmill for grinding grain and wharves for ships. By the 1820s there was a fine brick house for the Governor. There was also a hospital and a convict barracks and a beautiful church which are still standing today. Settlements had spread out from Sydney, firstly to Norfolk Island and to Van Diemen's Land (Tasmania), and also up the coast to Newcastle, where coal was discovered, and inland where the missing cattle were found to have grown to a large herd. Spanish Merino sheep had been brought to Sydney, and by 1820, farmers were raising fat lambs for meat and also sending fine wool back to the factories of England. -While the settlement was growing in New South Wales, it was also growing in Tasmania. The climate in Tasmania was more like that in England, and farmers found it easy to grow crops there. -Exploration. -Because Australia is such a very large land, it was easy to think that it might be able to hold a large number of people. In the early days of the colony, a great number of explorers went out, searching for good land to settle on. -When the settlers looked west from Sydney, they saw a range of mountains which they called the Blue Mountains. They were not very high and did not look very rugged but for many years no-one could find their way through them. In 1813 Gregory Blaxland, William Lawson and a 17-year-old called William Charles Wentworth crossed the Blue Mountains and found land on the other side which was good for farming. A road was built and the governor, Lachlan Macquarie founded the town of Bathurst on the other side, 160 km (100 miles) from Sydney. Bathurst became Australia's first inland settlement. -Some people, like Captain Charles Sturt were sure that there must be a sea in the middle of Australia and set out to find it. Many of the explorers did not prepare very well, or else they went out to explore at the hottest time of year. Some died like Burke and Wills. Ludwig Leichhardt got lost twice. The second time, he was never seen again. Major Thomas Mitchell was one of the most successful explorers. He mapped the country as he went, and his maps remained in use for more than 100 years. He travelled all the way to what is now western Victoria, and to his surprise and annoyance found that he was not the first white person there. The Henty brothers had come from Tasmania, had built themselves a house, had a successful farm and fed the Major and his men on roast lamb and wine. -Self government. -The gold rushes of New South Wales and Victoria started in 1851 leading to large numbers of people arriving to search for gold. The population grew across south east Australia and made great wealth and industry. By 1853 the gold rushes had made some poor people very rich. -The transportation of convicts to Australia ended in the 1840s and 1850s and more changes came. The people in Australia wanted to run their own country, and not be told what to do from London. The first governments in the colonies were run by governors chosen by London. Soon the settlers wanted local government and more democracy. William Wentworth started the Australian Patriotic Association (Australia's first political party) in 1835 to demand democratic government. In 1840, the city councils started and some people could vote. New South Wales Legislative Council had its first elections in 1843, again with some limits on who could vote. In 1855, limited self-government was given by London to New South Wales, Victoria, South Australia and Tasmania. In 1855, the right to vote was given to all men over 21 in South Australia. The other colonies soon followed. Women were given the vote in the Parliament of South Australia in 1895 and they became the first women in the world allowed to stand in elections. -Australians had started parliamentary democracies all across the continent. But voices were getting louder for all of them to come together as one country with a national parliament. -The Commonwealth of Australia. -Until 1901, Australia was not a nation, it was six separate colonies governed by Britain. They voted to join to form one new country, called the Commonwealth of Australia, in 1901. Australia was still part of the British Empire, and at first wanted only British or Europeans to come to Australia. But soon it had its own money, its own Army and its own Navy. -In Australia at this time, the trade unions were very strong, and they started a political party, the Australian Labor Party. Australia passed many laws to help the workers. -In 1914, the First World War started in Europe. Australia joined in on the side of Britain against Germany, Austria-Hungary and the Ottoman Empire. Australian soldiers were sent to Gallipoli, in the Ottoman Empire. They fought bravely, but were beaten by the Turks. Today Australia remembers this battle every year on ANZAC Day. They also fought on the Western Front. More than 60,000 Australians and New Zealanders were killed. -In 1932, the Sydney Harbour Bridge was opened. -Australia had a really hard time in the Great Depression of the 1930s and joined Britain in a war against Nazi Germany when Hitler invaded Poland in 1939. But in 1941 lots of Australian soldiers were captured in the Fall of Singapore by Japan. Then Japan started attacking Australia and people worried about invasion. But with help from the United States Navy, the Japanese were stopped. After the war, Australia became a close friend of the United States and Japan. -When the war ended, Australia felt that it needed many more people to fill the country up and to work. So the government said it would take in people from Europe who had lost their homes in the war. It did things like building the Snowy Mountains Scheme. Over the next 25 years, millions of people came to Australia. They came especially from Italy and Greece, other countries in Europe. Later they also came from countries like Turkey and Lebanon. An important new party, the Liberal Party of Australia was made by Robert Menzies in 1944 and it won lots of elections from 1949 until in 1972, then Gough Whitlam won for the Labor Party. Whitlam made changes, but he made the Senate unhappy and the Governor-General sacked him and forced an election in 1975. Then Malcolm Fraser won a few elections for the Liberal Party. -In the 1960s many people began coming to Australia from China, Vietnam, Malaysia and other countries in Asia. Australia became more multicultural. In the 1950s and 1960s Australia became one of the richest countries in the world, helped by mining and wool. Australia started trading more with America, than Japan. Australia supported the United States in wars against dictatorships in Korea and Vietnam and later Iraq. Australian soldiers also helped the United Nations in countries like East Timor in 1999. -In 1973, the famous Sydney Opera House opened. In the 1970s, 80s and 90s lots of Australian movies, actors and singers became famous around the world. In the year 2000, Sydney had the Summer Olympics. -In the 1980s and 90s, the Labor Party under Bob Hawke and Paul Keating, then the Liberal Party under John Howard made lots of changes to the economy. Australia had a bad recession in 1991, but when other Western countries had trouble with their economies in 2008, Australia stayed strong. -Today Australia is a rich, peaceful and democratic country. But it still has problems. Around 4-5% of Australians could not get a job in 2010. A lot of land in Australia (like Uluru) has been returned to Aboriginal people, but lots of Aboriginals are still poorer than everybody else. Every year the government chooses a big number of new people from all around the world to come as immigrants to live in Australia. These people may come because they want to do business, or to live in a democracy, to join their family, or because they are refugees. Australia took 6.5 million immigrants in the 60 years after World War Two, including around 660,000 refugees. -Julia Gillard became the first woman Prime Minister of Australia in 2010 when she replaced her Labor Party colleague Kevin Rudd (who later replaced her). -Politics. -Australia is part of the Commonwealth of Nations. Australia is made up of six states, and two mainland territories. Each state and territory has its own Parliament and makes its own local laws. The Parliament of Australia sits in Canberra and makes laws for the whole country, also known as the Commonwealth or Federation. -The Federal government is led by the Prime Minister of Australia, who is the member of Parliament chosen as leader. The current Prime Minister is Anthony Albanese. -The leader of Australia is the Prime Minister, although the Governor-General represents the King of Australia, who is also the King of the United Kingdom of Great Britain and Northern Ireland, as head of state. The Governor-General, currently His Excellency Sam Mostyn, is chosen by the Prime Minister. -Culture. -Australia was colonised by people from Britain, but today people from all over the world live there. English is the main spoken language. Christianity is the main religion, though all religions are accepted and not everybody has a religion. Australia is multicultural: all its people are encouraged to keep their different languages, religions and ways of life, while also learning English and joining in with other Australians. Australia has many immigrants from different countries around the world. -Famous Australian writers include the bush balladeers Banjo Paterson and Henry Lawson who wrote about life in the Australian bush. More modern famous writers include Peter Carey, Thomas Keneally and Colleen McCullough. In 1973, Patrick White won the Nobel Prize in Literature, the only Australian to have achieved this; he is seen as one of the great English-language writers of the twentieth century. -Australian music has had world-wide stars, for example the opera singers Nellie Melba and Joan Sutherland, the rock and roll bands Bee Gees, AC/DC and INXS, the folk-rocker Paul Kelly (musician), the pop singer Kylie Minogue and Australian country music stars Slim Dusty and John Williamson. Australian Aboriginal music is very special and very ancient: it has the famous didgeridoo woodwind instrument. -Australian TV has produced many successful programs for home and overseas. Skippy the Bush Kangaroo, Home and Away and Neighbours are examples. It has had well known TV stars, such as Barry Humphries ("Dame Edna Everage"), Steve Irwin ("The Crocodile Hunter") and The Wiggles. Major Australian subgroups such as the Bogan have been shown on Australian TV in shows such as Bogan Hunters and Kath & Kim. -Australia has two public broadcasters (the ABC and the multicultural SBS), three commercial television networks, three pay-TV services, and numerous public, non-profit television and radio stations. Each major city has its daily newspapers, and there are two national daily newspapers, "The Australian" and "The Australian Financial Review". -Australian movies have a long history. The world's first feature movie was the Australian movie "The Story of the Kelly Gang" of 1906. In 1933, "In the Wake of the Bounty", directed by Charles Chauvel, had Errol Flynn as the main actor. Flynn went on to a celebrated career in Hollywood. The first Australian Oscar was won by the 1942 "Kokoda Front Line!", directed by Ken G. Hall. In the 1970s and 1980s Australian movies and movie stars became world famous. There were movies like "Picnic at Hanging Rock", "Gallipoli" (with Mel Gibson), "The Man From Snowy River" and "Crocodile Dundee". Russell Crowe, Cate Blanchett and Heath Ledger became global stars during the 1990s and "Australia" starring Nicole Kidman and Hugh Jackman made a lot of money in 2008. -Australia is a popular destination for business conferences and research, with Sydney one of the top 20 meeting destinations in the world. -Sport. -Sport is an important part of Australian culture because the climate is good for outdoor activities. 23.5% Australians over the age of 15 regularly take part in organised sporting activities. The most popular sports are Australian rules football, rugby league and cricket. In international sports, Australia has very strong teams in cricket, hockey, netball, rugby league and rugby union, and performs well in cycling, rowing and swimming. Local popular sports include Australian Rules Football, horse racing, soccer and motor racing. Australia has participated in every summer Olympic Games since 1896, and every Commonwealth Games. Australia has hosted the 1956 and 2000 Summer Olympics, and has ranked in the top five medal-winners since 2000. Australia has also hosted the 1938, 1962, 1982 and 2006 Commonwealth Games and are to host the 2018 Commonwealth Games. Other major international events held regularly in Australia include the Australian Open, one of the four Grand Slam tennis tournaments, annual international cricket matches and the Formula One Australian Grand Prix. Corporate and government sponsorship of many sports and elite athletes is common in Australia. Televised sport is popular; some of the highest-rated television programs include the Summer Olympic Games and the grand finals of local and international football competitions. -The main sporting leagues for men are the AFL (Australian rules football), the NRL (rugby league), the A-League (soccer) and the NBL (basketball). For women, they are the AFLW (Australian rules football), ANZ Netball Championships (netball), the W-League (soccer) and WNBL (basketball). -Famous Australian sports players include the cricketer Sir Donald Bradman, the swimmer Ian Thorpe, the cricketer Shane Warne and the athlete Cathy Freeman. -Art festivals. -Just 60 years ago, Australia had only one big art festival. Now Australia has hundreds of smaller community-based festivals, and national and regional festivals that focus on specific art forms. -Indigenous life. -Australia is home to many animals and plants that can be found nowhere else on Earth, except perhaps New Guinea. -The platypus and the short-beaked echidna are unique, and are two of the only five surviving monotremes. Monotremes are only found in Australia and New Guinea. -Koalas, kangaroos, wombats, numbats and many others others, are marsupials. Most of the marsupials in the world are found only on the continent or on the neighbouring island of New Guinea. Wildfires from global warming in 2020 have reduced their population. -Trees. -The gum trees are almost as remarkable as the animals. They are mainly Eucalypts and other gum trees. These are woody evergeens which make essential oils and are prone to fire. Sticky heavily scented gum squeezes out of their wood. The tribe has about 860 species. They are all native to Southeast Asia and Oceania. Most live in Australia. Until British settlement in Australia, these trees were almost entirely unknown. They had been separated from the Americas, Africa and much of Asia for millions of years. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Austria.txt b/.github/workflows/data/simplewiki-100/Austria.txt deleted file mode 100644 index e07fb3c60..000000000 --- a/.github/workflows/data/simplewiki-100/Austria.txt +++ /dev/null @@ -1,33 +0,0 @@ -Austria (, ; ] ()), officially the Republic of Austria ( ] ()), is a country in Central Europe. Around Austria there are the countries of Germany, Czech Republic, Slovakia, Hungary, Slovenia, Italy, Switzerland, and Liechtenstein. -The people in Austria speak German, a few also speak Hungarian, Slovenian and Croatian. The capital of Austria is Vienna ("Wien"). -History. -Austria is more than a thousand years old. Its history can be followed to the ninth century. At that time the first people moved to the land now known as Austria. The name "Ostarrichi" is first written in an official document from 996. Since then this word has developed into the Modern German word "Österreich," which literally means "East Empire." -Ancient times. -There has been human settlement in the area that is now Austria for a long time. The first settlers go back to the Paleolithic age. That was the time of the Neanderthals. They left works of art such as the Venus of Willendorf. In the Neolithic age people were living there to dig for mineral resources, especially copper. Ötzi, a mummy found in a glacier between Austria and Italy, is from that time. In the Bronze Age people built bigger settlements and fortresses, especially where there were mineral resources. Salt mining began near Hallstatt. At that time, Celts began to form the first states. -The Romans. -The Romans came 15 B.C. to Austria and made the Celtic Regnum Noricum to a province. Modern Austria was part of three provinces, Raetia, Noricum and Pannonia. The border in the north was the Danube. -Holy Roman Empire. -From the early Middle Ages, the area of modern-day Austria was a part of the Holy Roman Empire. The capital of the Holy Roman Empire was the Austrian city Vienna. The Austrian Habsburg family were the rulers of the Empire and the son of the Holy Roman Emperor held the title of Archduke of Austria. -In 1806, France defeated the Holy Roman Empire and replaced it with the Confederation of the Rhine. Former Holy Roman Emperor Francis II became the Emperor of the new Austrian Empire, which later became Austria-Hungary. -Modern history. -In 1914, Franz Ferdinand was assassinated in Sarajevo. Austria-Hungary declared war on Serbia and this led to World War I. In 1918, both Austria and Hungary became republics. They also both split into two separate countries. -During World War II, Austria was part of Nazi Germany. It became independent in May 1945. -Geography. -Austria is a mountainous country since it is partially in the Alps. Grossglockner is the tallest mountain in Austria. The high mountainous Alps in the west of Austria flatten somewhat into low lands and plains in the east of the country where the Danube flows. -Climate. -Austria has a continental climate. -The highest temperature ever recorded in Austria was , on 8 August 2013 in Bad Deutsch-Altenburg. The lowest temperature ever recorded in Austria was , on 19 February 1932 at Grünloch doline. -Politics. -Austria is a democratic republic. The President of Austria is the head of state and the Chancellor of Austria is the head of government. -It is a neutral state, that means it does not take part in wars with other countries. It has been in the United Nations since 1955 and in the European Union since 1995. -Austria is also a federal state and divided into nine states (): -More information: "States of Austria". -The chancellor is Karl Nehammer, as of 2025's first week; However, he has said that he will not make any more attempts at creating a cabinet (Austria). Austria has been a member-state of the United Nations since 1955, the European Union since 1995 and OPEC since 2019. -Culture. -Music and Arts. -Many famous composers were Austrians or born in Austria. There are Wolfgang Amadeus Mozart, Joseph Haydn, Franz Schubert, Anton Bruckner, Johann Strauss, Sr., Johann Strauss, Jr. and Gustav Mahler. In modern times there were Arnold Schoenberg, Anton Webern and Alban Berg, who belonged to the Second Viennese School. -Austria has many artists, there are Gustav Klimt, Oskar Kokoschka, Egon Schiele or Friedensreich Hundertwasser, Inge Morath or Otto Wagner and scienc. -Food. -Famous Austrian dishes are Wiener Schnitzel, Apfelstrudel, Schweinsbraten, Kaiserschmarren, Knödel, Sachertorte and Tafelspitz. But you can also find a lot of local dishes like Kärntner Reindling (a kind of cake), Kärntner Nudeln (also called "Kärntner Kasnudeln", you may write it "...nudln" too), Tiroler Knödl (may be written "...knödel"; ), Tiroler Schlipfkrapfen (another kind of "Kärntner Nudeln"), Salzburger Nockerl (also may be written ..."Nockerln"), Steirisches Wurzelfleisch (..."Wurzlfleisch") or Sterz ("Steirischer Sterz"). -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Autonomous communities of Spain.txt b/.github/workflows/data/simplewiki-100/Autonomous communities of Spain.txt deleted file mode 100644 index 1601f58f6..000000000 --- a/.github/workflows/data/simplewiki-100/Autonomous communities of Spain.txt +++ /dev/null @@ -1,6 +0,0 @@ -Spain is divided in 17 parts called autonomous communities. "Autonomous" means that each of these autonomous communities has its own executive, legislative, and judicial powers. These are similar to, but "not" the same as, states in the United States of America, for example. -Spain has fifty smaller parts called provinces. In 1978 these parts came together, making the autonomous communities. -Before then, some of these provinces were together but were broken. The groups that were together once before are called "historic communities": Catalonia, Basque Country, Galicia and Andalusia. -The Spanish language is the sole official language in every autonomous community but six, where Spanish is co-official with other languages, as follows: -List of the autonomous communities, with their Capital city (the place where the government has its offices): -Spain also has two cities on the north coast of Africa: Ceuta and Melilla. They are called "autonomous cities" and have simultaneously the majority of the power of an autonomous community and also power of provinces and power of municipalities. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Bankruptcy.txt b/.github/workflows/data/simplewiki-100/Bankruptcy.txt deleted file mode 100644 index c37fece1c..000000000 --- a/.github/workflows/data/simplewiki-100/Bankruptcy.txt +++ /dev/null @@ -1,27 +0,0 @@ -Bankruptcy is a legal process which happens when a person or an organization does not have enough money to pay all of its debts. Legally they are insolvent. -Where it is a person who cannot pay their debts, the person's creditors may ask the court to appoint a "trustee in bankruptcy". This is a professional accountant who is appointed by the court, to take control of the bankrupt person's assets. Some assets are protected by law, but the trustee in bankruptcy will sell off all of the other assets and use the money to pay as much of that person's debts as possible. After the process is complete the person is "discharged from bankruptcy", and the person is free from any further liability to pay those claims, but normally that person will be limited in their ability to borrow money again because their credit rating will be damaged. -Where it is an organisation which cannot pay its debts, the creditors may ask the court to appoint a "liquidator". The liquidator does a very similar job to the trustee in bankruptcy except that there are no assets which are protected so the liquidator can sell everything. Once all of the assets of the organisation have been sold, the organisation is then "dissolved" and no longer exists. Organisations do not get discharged from bankruptcy in the same way that a living person does. -Insolvency or bankruptcy. -People often confuse the terms bankruptcy and insolvency, and sometimes they use one word when they really mean the other. Insolvency usually just means that a someone does not have enough money to pay their debts or (sometimes) that the total amount of their debts is worth more than the total amount of their assets. Bankruptcy is a formal legal process in front of the courts. Although the two terms are connected, just because a person is insolvent does not necessarily mean that they will go into bankruptcy. -Alternatives to bankruptcy. -Many countries have alternatives to bankruptcy to try and allow people and businesses to try and avoid the bankruptcy process. -In various countries, individual people can try and reach "individual voluntary arrangements" (or IVAs) with their creditors. This means that the creditors agree to take less money to discharge their debts. There are similar processes for companies and other organisations, and they go by various different names in different countries, but in many countries they are called "schemes of arrangement". -Bankruptcy protection. -In many countries a company or business can ask the courts for "bankruptcy protection" to try and protect the business so that the creditors cannot destroy all of the physical capital and goodwill by breaking it apart and moving it away. The aim of this is to provide more time for the business to reorganise itself and to work out a new deal between the owners and the people with whom the business owes money. In many countries this is called "going into administration". -However, not all countries have bankruptcy protection laws for businesses. -Debt slavery. -Often a creditor threatens a debtor with debt slavery in many parts of the world. In some cases the debtor does not know that they have a right to go bankrupt. This is a human rights problem in some countries. Also, some creditors continue to harass a debtor even though bankruptcy laws say they should not, hoping that the debtor will pay them money that they do not deserve. -United States. -Bankruptcy in the United States falls mostly under federal law, Title 11 of the United States Code (Bankruptcy Code). The types of bankruptcy available in the United States are named after the primary divisions, or "chapters", of that law. The person or business that files a bankruptcy case is known as the "debtor". -When a bankruptcy case is filed, a trustee is chosen by the court. The trustee has authority over the property of the bankrupt person or business and may use some of the debtor's assets to pay the creditors. After a bankruptcy is filed, creditors are notified that they are to stop trying to collect money directly from the debtor and are to make claims for payment to the bankruptcy court. -Chapter 7. -The most common form of bankruptcy is the Chapter 7 Bankruptcy, which can be filed by businesses or individuals. It is also called liquidation bankruptcy because some of a debtor's property may be sold (liquidated) to satisfy creditors. When a business is in debt which it cannot pay, it may ask or be forced to file bankruptcy in court under Chapter 7. This usually makes a company stop doing business. Employees often lose their jobs when company files for chapter 7. -Chapter 11. -Chapter 11 bankruptcy is a complicated type of bankruptcy that reorganizes the debtor's finances, usually reducing the amount of debt owed and changing debt repayment terms. A Chapter 11 bankruptcy case allows a business to keep running while it finds ways to reduce and arrange payment of its debts. -Almost all Chapter 11 bankruptcies are filed by businesses. Ordinary people do not usually file Chapter 11 bankruptcy, because a Chapter 13 bankruptcy will almost always be cheaper and easier for them. -Chapter 13. -Chapter 13 is the most popular form of bankruptcy in the United States for ordinary people. In a Chapter 13 bankruptcy some of your debts may be forgiven (discharged), but you will have to pay back a portion of your debt. The debt repayment plan is supervised by the bankruptcy court and usually lasts for three to five years. Businesses cannot file for Chapter 13 bankruptcy. -Other bankruptcy chapters. -Less common forms of bankruptcy may be filed under Chapter 9 and Chapter 12 of the bankruptcy code. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Beard.txt b/.github/workflows/data/simplewiki-100/Beard.txt deleted file mode 100644 index 6703928f9..000000000 --- a/.github/workflows/data/simplewiki-100/Beard.txt +++ /dev/null @@ -1,4 +0,0 @@ -A beard is the hair growing on the lower part of a man's face. -The hair that grows on the upper lip of some men is a mustache. When a man has hair only below the lower lip and above the chin, it is called a soul patch. Some men have a lot of hair and a big beard, and some have very little. In the modern world, many men shave part or all of their beards, or cut their beard so it does not get very long. -Some animals also have hair like this, and people sometimes also call this hair a beard. - "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Beekeeping.txt b/.github/workflows/data/simplewiki-100/Beekeeping.txt deleted file mode 100644 index d9060ba4c..000000000 --- a/.github/workflows/data/simplewiki-100/Beekeeping.txt +++ /dev/null @@ -1,12 +0,0 @@ -Beekeeping or apiculture is the farming of honeybees. -Uses. -The keeping of bees is usually, and has been in the past, for honey. That is becoming less true. Instead, it is more used for crop pollination and other products. These are wax and propolis. -There is only one queen bee in each hive and she is bigger than the rest. She lays all the eggs, which makes all the other bees in the hive her daughters and sons. However, they do not control the hive. -Types of beekeeping. -The largest beekeeping operations are agricultural businesses that are operated for profit. Some people also have small beekeeping operations that they do as a hobby. Urban beekeeping is a growing trend, and some have found that "city bees" are actually healthier than "rural bees" because there are fewer pesticides and greater biodiversity. -Threats. -Colony Collapse Disorder is a growing problem, along with mites. -References. -<templatestyles src="Reflist/styles.css" /> -Wikibooks has more about this subject: - "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Beijing.txt b/.github/workflows/data/simplewiki-100/Beijing.txt deleted file mode 100644 index 430fd123b..000000000 --- a/.github/workflows/data/simplewiki-100/Beijing.txt +++ /dev/null @@ -1,21 +0,0 @@ -Beijing is the capital of the People's Republic of China. The city used to be known as Peking. It is in the northern and eastern parts of the country. Having more that 21 million residents, it is one of the most populous capital cities. -The city of Beijing has played a very important role in the development of China. Many people from different cities and countries come to Beijing to look for better chances to find work. Nearly 15 million people live there. Beijing hosted the Summer Olympic Games in 2008, and the Winter Olympic Games in 2022. It is the only city that has hosted both. -Beijing is well known for its ancient history. Since the Jin Dynasty, Beijing has been the capital of several dynasties (especially the later ones), including the Yuan, Ming, and Qing. There are many places of historic interest in Beijing. -Name. -The Mandarin Chinese name of the city is "Běijīng", which means "The Northern Capital". It got this name when the Yongle Emperor of the Ming family of rulers moved most of his government from Nanjing ("The Southern Capital") in the early 1400s. In Chinese, Beijing's name is written . Today, people spell it "Beijing" because they use the pinyin way of spelling, which shows what the name should sound like in Mandarin. People used to spell it "Peking" because that was the spelling used by some of the first people from Europe to visit the Ming and write home about it; the Jesuits' work was made popular by their French brother Du Halde. It then became the official Chinese Postal Map spelling around 1900 and continued to be used until pinyin became more popular. -Beijing was also known as Beiping ("City of Northern Peace") between 1928 and 1949, when the Nationalists moved the Chinese capital to Nanjing and Chongqing. -History. -The center of Beijing was settled in the 1st millennium BC. In those days, the Kingdom of Yan (燕, Yān) set up their capital where Beijing is today. They called it Ji (蓟, Jì). After the Kingdom of Yan was destroyed, the city became smaller, although it was still an important place. -Beijing became more important again in the 10th century, when the Jin dynasty set its capital there. This city was destroyed by Mongol forces in 1215. Then in 1267, Mongols built a new city on the north side of the Jin capital, and called it "Great Capital" (大都, Dàdū), which was the beginning of modern Beijing. When Kublai Khan the Mongolian monarch, set up the Yuan dynasty, this city became his capital. -The Yuan Dynasty, Ming Dynasty and Qing dynasty all made Beijing their capital. When the Qing dynasty lost power and the Republic of China was set up, the new Republic moved its capital from Beijing to Nanjing. When the People's Republic of China seized power, Beijing became the capital of China again. -In 1989, there were protests in Tian'anmen Square because some people wanted democracy. -Throughout its history, Beijing was the Chinese capital six times: -Special places. -Important places in Beijing include: -Education. -Beijing is the education center of People's Republic of China. More than 500 famous universities of China are in Beijing. They also include 5 of the top universities: Peking University, Tsinghua University, China People University, Beijing Normal University, and Beihang University. Beijing is also education center of China for teaching Chinese as a foreign language. The standard Chinese pronunciation is based on Beijing dialect, so over 70% foreigners who want to study Chinese go to Beijing for their studies. -<br> -Sources. -Pages. -<templatestyles src="Reflist/styles.css" /> -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Being.txt b/.github/workflows/data/simplewiki-100/Being.txt deleted file mode 100644 index 4a4cec9b9..000000000 --- a/.github/workflows/data/simplewiki-100/Being.txt +++ /dev/null @@ -1,4 +0,0 @@ -"Being is also a present tense part of to be" -The word being means a living person or animal. ‘Human being’ means the same as ’person’. Men, women, and children are human beings. -Some people write stories or make movies about beings from other planets. Most religions talk about supernatural beings, for example spirits, angels, devils, gods, or God. - "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Belgium.txt b/.github/workflows/data/simplewiki-100/Belgium.txt deleted file mode 100644 index 642c32dcb..000000000 --- a/.github/workflows/data/simplewiki-100/Belgium.txt +++ /dev/null @@ -1,59 +0,0 @@ -Belgium (officially the Kingdom of Belgium; , , ) is a Artificial country in Western Europe founded by the Netherlands, France and Germany. Its capital, Brussels, is the home of many organizations including the European Union and NATO. Belgium is bordered by The Netherlands in the north, Germany to the east, Luxembourg to the southeast and France to the south. -Belgium has an area of . Around 11.6 million people live in Belgium. It is a founding member of the European Union and is home to its headquarters. -Regions. -There are three regions in Belgium. The regions are mainly based on language and culture. Flanders and Wallonia are both split up into five provinces each. -The population is about 60% Dutch-speaking, 39% French-speaking, and 1% German-speaking (the so-called "Deutschbelgier"). To look after all these groups, Belgium has a complex system of government with highly autonomous regions. -History. -The name 'Belgium' comes from "Gallia Belgica". This was a Roman province in the northernmost part of Gaul. Before Roman invasion in 100 BC, the "Belgae", a mix of Celtic and Germanic peoples, lived there. The Germanic Frankish tribes during the 5th century brought the area under the rule of the Merovingian kings. A slow shift of power during the 8th century led the kingdom of the Franks to change into the Carolingian Empire. The Treaty of Verdun in 843 divided the region into Middle and West Francia. They were vassals either of the King of France or of the Holy Roman Emperor. -Many of these fiefdoms were united in the Burgundian Netherlands of the 14th and 15th centuries. -The Eighty Years' War (1568–1648) divided the Low Countries into the northern United Provinces and the Southern Netherlands. Southern Netherlands were ruled by the Spanish and the Austrian Habsburgs. This made up most of modern Belgium. -After the , the Low Countries were added into the French First Republic. This ended Austrian rule in the area. Adding back the Low Countries formed the United Kingdom of the Netherlands. This happened at the end of the First French Empire in 1815. -The Belgian Revolution was in 1830. Leopold became king on July 21 1831. This is now celebrated as Belgium's National Day. -The Berlin Conference of 1885 gave control of the Congo Free State to King Leopold II. Millions of Congolese people were hurt or killed, mostly to make rubber, and Leopold became very wealthy. In 1908 the Belgian state took control of the colony after a scandal about the deaths. -Germany invaded Belgium in 1914. This was part of World War I. The opening months of the war were very bad in Belgium. During the war Belgium took over Ruanda-Urundi (modern-day Rwanda and Burundi). After the War, the Prussian districts of Eupen and Malmedy were added into Belgium in 1925. The country was again invaded by Germany in 1940 and under German control until 1944. After World War II, the people made king Leopold III leave his throne in 1951. This is because they thought he helped the Germans. Belgium joined NATO as a founding member. -In 1960 the Belgian Congo stopped being under Belgian rule. Two years later Ruanda-Urundi also became free. -Geography. -Belgium is next to France, Germany, Luxembourg and the Netherlands. Its total area is 34,143 square kilometers (including sea area). The land area alone is 30,689 km², of which 195 km² or 0.64% are inland and coastal waters. Belgium has three main geographical regions. The coastal plain is in the north-west. The central plateau are part of the Anglo-Belgian Basin. The Ardennes uplands are in the south-east. The Paris Basin reaches a small fourth area at Belgium's southernmost tip, Belgian Lorraine. -The coastal plain is mostly sand dunes and polders. Further inland is a smooth, slowly rising landscape. There are fertile valleys. The hills have many forests. The plateaus of the Ardennes are more rough and rocky. They have caves and small, narrow valleys. Signal de Botrange is the country's highest point at 694 metres (2,277 ft). -Regions. -Belgium is divided into three regions: Flemish Region (Flanders), Walloon Region (Wallonia), and Brussels-Capital Region (Brussels Region or Brussels - also the name of the city): -¹ The city of Brussels does not lie in Flanders Region and therefore cannot be the largest city of this region. -² German name: Wallonie(n): the very eastern part of the Walloon Region is officially German-speaking, the so-called German-speaking Community of Belgium. -Provinces. -Flanders and Wallonia are divided into provinces. Brussels (Region) is not part of any province. -¹ German name: Lüttich - the very eastern part of the province of Liège is officially German-speaking, the so-called German-speaking Community of Belgium. -Climate. -Belgium has a mostly oceanic climate, but the Belgian Ardennes has a continental climate. -The highest temperature ever recorded in Belgium was , on 25 July 2019 in Begijnendijk. The lowest temperature ever recorded in Belgium was , on 20 January 1940 in Lesse. -Politics. -Since 1993, Belgium is a federal state, divided into three regions and three communities. -Regions: -Communities: -It has a system of government known as a constitutional monarchy, meaning that it has a monarch, but that the monarch does not rule the country, and that a government is elected democratically. -Belgium has had its own monarchy since 1831. King Albert II left the throne on July 21, 2013 and the current king is Philippe. -In Belgium, the government is elected. Between mid-2010 and late 2011, after no clear result in the election, Belgium had no official government, until Elio Di Rupo became Prime Minister. Flanders and Wallonia both also have their own regional governments, and there is a notable independence movement in Flanders. Alexander De Croo is currently the Prime Minister. -Military. -The Belgian Armed Forces have about 46,000 active troops. In 2009 the yearly defence budget was $6 billion. There are four parts: Belgian Land Component, or the Army; Belgian Air Component, or the Air Force; Belgian Naval Component, or the Navy; Belgian Medical Component. -Science and technology. -Adding to science and technology has happened throughout the country's history. cartographer Gerardus Mercator, anatomist Andreas Vesalius, herbalist Rembert Dodoens and mathematician Simon Stevin are among the most influential scientists. -Chemist Ernest Solvay and engineer Zenobe Gramme gave their names to the Solvay process and the Gramme dynamo in the 1860s. Bakelite was formed in 1907–1909 by Leo Baekeland. A major addition to science was also due to a Belgian, Georges Lemaître. He is the one who made the Big Bang theory of the start of the universe in 1927. -Three Nobel Prizes in Physiology or Medicine were awarded to Belgians: Jules Bordet in 1919, Corneille Heymans in 1938 and Albert Claude together with Christian De Duve in 1974. Ilya Prigogine was awarded the Nobel Prize in Chemistry in 1977. Two Belgian mathematicians have been awarded the Fields Medal: Pierre Deligne in 1978 and Jean Bourgain in 1994. -In February 2014, Belgium became the first country in the world to legalize euthanasia without any age limits. -Culture. -Fine arts. -There have been many additions to painting and architecture. Several examples of major architectural places in Belgium belong to UNESCO's World Heritage List. In the 15th century the religious paintings of Jan van Eyck and Rogier van der Weyden were important. The 16th century had more styles such as Peter Breughel's landscape paintings and Lambert Lombard's showing of the antique. The style of Peter Paul Rubens and Anthony van Dyck was strong in the early 17th century in the Southern Netherlands. -During the 19th and 20th centuries many original romantic, expressionist and surrealist Belgian painters started. These include James Ensor and other artists in the Les XX group, Constant Permeke, Paul Delvaux and René Magritte. The sculptor Panamarenko is still a remarkable figure in contemporary art. The artist Jan Fabre and the painter Luc Tuymans are other internationally known figures in contemporary art. -Belgian contributions to architecture were also in the 19th and 20th centuries. Victor Horta and Henry van de Velde were major starters of the Art Nouveau style. -In the 19th and 20th centuries, there were major violinists, such as Henri Vieuxtemps, Eugène Ysaÿe and Arthur Grumiaux. Adolphe Sax invented the saxophone in 1846. The composer César Franck was born in Liège in 1822. Newer music in Belgium is also famous. Jazz musician Toots Thielemans and singer Jacques Brel have made global fame. In rock/pop music, Telex, Front 242, K's Choice, Hooverphonic, Zap Mama, Soulwax and dEUS are well known. In the heavy metal scene, bands like Machiavel, Channel Zero and Enthroned have a worldwide fan-base. -Belgium has several well-known authors, including the poet Emile Verhaeren and novelists Hendrik Conscience, Georges Simenon, Suzanne Lilar and Amélie Nothomb. The poet and playwright Maurice Maeterlinck won the Nobel Prize in literature in 1911. "The Adventures of Tintin" by Hergé is the best known of Franco-Belgian comics. Many other major authors, including Peyo, André Franquin, Edgar P. Jacobs and Willy Vandersteen brought the Belgian cartoon strip industry a worldwide fame. -Belgian cinema has brought a number of mainly Flemish novels to life on-screen. Belgian directors include André Delvaux, Stijn Coninx, Luc and Jean-Pierre Dardenne. Well-known actors include Jan Decleir and Marie Gillain. Successful films include "Man Bites Dog" and "The Alzheimer Affair". -Cuisine. -Belgium is famous for beer, chocolate, waffles and french fries. French fries were first made in Belgium. The national dishes are "steak and fries with salad", and "mussels with fries". -Other local fast food dishes include a Mitraillette. Brands of Belgian chocolate and pralines, like Côte d'Or, Guylian, Neuhaus, Leonidas, Corné and Galler are famous. Belgium makes over 1100 varieties of beer. The Trappist beer of the Abbey of Westvleteren has repeatedly been rated the world's best beer. The biggest brewer in the world by volume is Anheuser-Busch InBev, based in Leuven. -Sports. -Since the 1970s, sports clubs are organised separately by each language community. Association football is one of the most popular sports in both parts of Belgium, together with cycling, tennis, swimming and judo. With five victories in the Tour de France and many other cycling records, Belgian Eddy Merckx is said to be one of the greatest cyclists of all time. Jean-Marie Pfaff, a former Belgian goalkeeper, is said to be one of the greatest in the history of football (soccer). Belgium and The Netherlands hosted the UEFA European Football Championship in 2000. Belgium hosted the 1972 European Football Championships. -Kim Clijsters and Justine Henin both were Player of the Year in the Women's Tennis Association. The Spa-Francorchamps motor-racing circuit hosts the Formula One World Championship Belgian Grand Prix. The Belgian driver, Jacky Ickx, won eight Grands Prix and six 24 Hours of Le Mans. Belgium also has a strong reputation in motocross. Sporting events held each year in Belgium include the Memorial Van Damme athletics competition, the Belgian Grand Prix Formula One, and a number of classic cycle races such as the Tour of Flanders and Liège–Bastogne–Liège. The 1920 Summer Olympics were held in Antwerp. -References. -<templatestyles src="Reflist/styles.css" /> -Other websites. - Media related to at Wikimedia Commons \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Berry.txt b/.github/workflows/data/simplewiki-100/Berry.txt deleted file mode 100644 index a67459d06..000000000 --- a/.github/workflows/data/simplewiki-100/Berry.txt +++ /dev/null @@ -1,8 +0,0 @@ -The word berry is used for many different kinds of small fruits that have many seeds and can be used as food. Some examples are raspberry, strawberry, sutberry, lingonberry and blueberry. -When botanists talk about "berries", they mean a simple fruit produced from a single ovary. They sometimes call this "true berry", to distinguish it from "false berries". By that statement of how words are used, grapes or tomatoes are true berries. -The berry is the most common type of soft fruit in which the entire ovary wall gets to the right stage of development of the pericarp which can be taken as food. The flowers of these plants have an upper ovary with one or more carpels. The seeds are inside the soft body of the ovary. -Berries are small, sweet, bright colored fruits. Due to this, they are able to bring more animals towards them and spread their seeds. -Some fruits that are called "berries" in English are not "true berries" by the use of words above. These include raspberries, strawberry, sutberry, blackberries, cranberries, and boysenberries. Some true berries do not have "berry" in their name. These include tomatoes, bananas, eggplants, guavas, pomegranates and chillies. Pumpkins, cucumbers, melons, oranges and lemons are also berries that have slightly different structure and may be called by different names (pepo for pumpkins, cucumbers, and melons, or hesperidium for oranges and lemons). -References. -<templatestyles src="Reflist/styles.css" /> - "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Biology.txt b/.github/workflows/data/simplewiki-100/Biology.txt deleted file mode 100644 index 6c3f39be9..000000000 --- a/.github/workflows/data/simplewiki-100/Biology.txt +++ /dev/null @@ -1,9 +0,0 @@ -Biology is the science that studies life, living things, and the evolution of life. Living things include animals, plants, fungi (such as mushrooms), and microorganisms such as bacteria and archaea. -The term 'biology' is relatively modern. It was introduced in 1799 by a physician, Thomas Beddoes. -People who study biology are called biologists. Biology looks at how animals and other living things behave and work, and what they are like. Biology also studies how organisms react with each other and the environment. It has existed as a science for about 200 years, and before that it was called "natural history". Biology has many research fields and branches. Like all sciences, biology uses the scientific method. This means that biologists must be able to show evidence for their ideas and that other biologists must be able to test the ideas for themselves. -Biology attempts to answer questions such as: -Modern biology is influenced by evolution, which answers the question: "How has the living world come to be as it is?" -History. -The word "biology" comes from the Greek word "βίος" ("bios"), "life", and the suffix "-λογία" ("logia"), "study of". -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Black pudding.txt b/.github/workflows/data/simplewiki-100/Black pudding.txt deleted file mode 100644 index 9931d6339..000000000 --- a/.github/workflows/data/simplewiki-100/Black pudding.txt +++ /dev/null @@ -1,8 +0,0 @@ -Black pudding is an English name for zwarte pudding. It is food made by cooking down the blood of any mammal (usually pigs or cattle) with meat, fat or filler until it is thick enough to congeal (become firm or solid) when cooled. -Types of black pudding. -In Great Britain, blood sausage is called "black pudding". The ingredients include pig's blood, suet, bread, barley and oatmeal. Bury is well known for them. The most common kind of German "Blutwurst" is made from fatty pork meat, beef blood and filler such as barley. Though already cooked and "ready to eat" it is usually served warm. -Other kinds of blood sausage include "boudin noir" (France), "boudin rouge" (Creole and Cajun) and "morcilla" (Spain). -History. -A legend says that blood sausage was invented in a bet between two Bavarian butchers drunk on the alcoholic drink absinthe during the 14th century. Homer's "Odyssey" from Ancient Greece says that "As when a man besides a great fire has filled a sausage with fat and blood and turns it this way and that and is very eager to get it quickly roasted...". -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Black.txt b/.github/workflows/data/simplewiki-100/Black.txt deleted file mode 100644 index 3d4d3f2fc..000000000 --- a/.github/workflows/data/simplewiki-100/Black.txt +++ /dev/null @@ -1,7 +0,0 @@ -In light, black is the absence of all color. It is a shade. In painting, however, the black pigment is the combination of all colors. In heraldry, black is called "sable". It is the opposite of white. -Black in science. -In science, an object that is black absorbs the light that hits it. Because these objects do not reflect any light, the human eye can't see any color coming from that object. The brain then sees these objects as black. -A way to create black objects is to mix pigments. A pigment works by reflecting only the color of the pigment. For example, a blue pigment absorbs all colors except blue. By mixing pigments in the right quantities, black can be made. In sunlight, black objects become warm more quickly than other colored objects because they absorb more light. -Meaning of black. -Black is associated with power, elegance, formality, safety, birth, male, evil and mystery. Black is a dark color, the darkest color there is. Black, along with gray and white, is a "neutral" color. This means that it is not a "hot" color or a "cool" color. -Black is a color seen with fear and the unknown (black holes). It can have a bad meaning (blackbird, black bunny) or a good meaning ('in the black', 'black is beautiful'). Black can stand for strength and power. It can be a formal, elegant and high-class color (black tie, black Mercedes). \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Boil.txt b/.github/workflows/data/simplewiki-100/Boil.txt deleted file mode 100644 index c957bf4d8..000000000 --- a/.github/workflows/data/simplewiki-100/Boil.txt +++ /dev/null @@ -1,2 +0,0 @@ -Boil might mean: -<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Boot device.txt b/.github/workflows/data/simplewiki-100/Boot device.txt deleted file mode 100644 index 766552343..000000000 --- a/.github/workflows/data/simplewiki-100/Boot device.txt +++ /dev/null @@ -1,6 +0,0 @@ -A boot device is used to start a computer. It is named after a boot which fits on the foot. The word bootstrap is also closely related, and means, to use something simpler to get something more complex to make itself work better. It comes from the English phrase "pull yourself up by your own bootstraps." -Before a computer can operate normally, it must have operating system instructions that tell it how to perform basic functions. A boot device loads the operating system into the memory of the computer. -Devices that can boot a computer are usually boot disks or boot drives (normally a hard drive or Solid State Drive, but can be a floppy disk, flash drive or a CD). Some network computers use "boot chips" that get the operating system over a network. Web phones also use such chips to identify the user to the mobile phone network. Boot card standards may let many users boot kiosk computers with full privacy and access to all application software they own. There are also boot boards or boot "add-in" cards that are more permanent than boot cards. -Some people refer to the boot device as just a boot and non-boot devices as data devices, although it is not the computer but the operating system that cares about the difference between these. -Origin. -The boot in boot device is the same as booting (or starting up). This is short for bootstrapping, or to start with simple stuff and make complex stuff out of it. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Boot.txt b/.github/workflows/data/simplewiki-100/Boot.txt deleted file mode 100644 index 66c79b278..000000000 --- a/.github/workflows/data/simplewiki-100/Boot.txt +++ /dev/null @@ -1,3 +0,0 @@ -A boot is a type of footwear that protects the foot and ankle. Boots are higher and larger than shoes and sandals. Some boots are high enough to protect the calves (lower part of the leg) as well. Some boots are held on with "bootstraps" or "bootlaces". Some also have spats or "gaiters" to keep water out. Most have a very strong "boot sole", the bottom part of a boot. -Other websites. - Media related to at Wikimedia Commons \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Bootlace.txt b/.github/workflows/data/simplewiki-100/Bootlace.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-100/Bootstrap.txt b/.github/workflows/data/simplewiki-100/Bootstrap.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-100/Botany.txt b/.github/workflows/data/simplewiki-100/Botany.txt deleted file mode 100644 index 4c71db797..000000000 --- a/.github/workflows/data/simplewiki-100/Botany.txt +++ /dev/null @@ -1,5 +0,0 @@ -Botany is the study of plants. It is a science. It is a branch of biology. -It is also called plant biology, and sometimes phytology. Scientists who study botany are called botanists. They study how plants work. -Branches of botany. -Recent trends. -University departments of botany are often now merged into a wider group of specialities, including cell biology, genetics, ecology, cytology, palaeontology and other topics. This gives students and research workers access to a wider education and a wider range of research techniques. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Bottle.txt b/.github/workflows/data/simplewiki-100/Bottle.txt deleted file mode 100644 index 97b7df1e6..000000000 --- a/.github/workflows/data/simplewiki-100/Bottle.txt +++ /dev/null @@ -1,2 +0,0 @@ -A bottle is a container used to carry liquids. Bottles can have many different sizes. Bottles are usually made of glass or plastic. Drinks such as milk, wine, lemonade, soft drinks, and water are often put into bottles. Other liquids put into bottles include chemicals like bleach or detergent, and some kinds of medicines. - "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Brazil.txt b/.github/workflows/data/simplewiki-100/Brazil.txt deleted file mode 100644 index 4acfb9fbf..000000000 --- a/.github/workflows/data/simplewiki-100/Brazil.txt +++ /dev/null @@ -1,23 +0,0 @@ -Brazil, officially the Federative Republic of Brazil, is a country in South America. It is the world's fifth largest country. The country has about 212 million people. The capital of Brazil is Brasília. Brazil was named after brazilwood, which is a tree that once grew very well along the Brazilian coast. -History. -The first people to come to Brazil came around 9,000 B.C. That group of indigenous people is often called the South American Indians and probably came from North America. They practiced hunting, foraging, and farming. Over thousands of years, many different indigenous people were living there. -Pedro Álvares Cabral was the first European to see Brazil. He saw it in 1500. He was from Portugal and the Portuguese kingdom claimed Brazil. Soon, Portugal colonized Brazil and created colonies all along the coastline. They began to import black slaves from Africa and force them to work. Because of the violence of the slave masters, many of these slaves would run away into the forest and create their own communities called quilombos. -In the late 1500s and early 1600s, the Dutch and the French tried to take some land in Brazil. Dutch, French, and Portuguese started moving inland further than the Treaty of Tordesillas said they could. This caused some fights with the Spaniards (people from Spain) and indigenous people in the area. -In 1822, Brazil claimed to be its own country and not a part of Portugal anymore. Soon there was civil war. Meanwhile, the quilombos survived and Brazil was bringing in more slaves than any other country in the Americas, even though many countries were beginning to legally abolish slavery. This led to an increase in slave revolts, especially in the 1860s and 1880s, which forced the government to change the system to keep the country stable. Slavery was legally abolished in 1888. -In 1889, there was a military coup, and Pedro II had to leave the country. In 1889, Brazil became a republic. The only people who could vote were people who owned land. There were some uprisings in the 1920s because some people thought the government was unfairly helping coffee growers. Brazil joined the Allies during World War II. -During the 1960s, the military leader Castelo Branco overthrew the government and created a dictatorship that was supported by the United States. It was very anti-communist and they imprisoned, tortured, or killed many people on the left. Since then, the country has become more democratic, but some people feel that there are still big problems in health, education, crime, poverty and social inequality. -In August 2016, then-president Dilma Rousseff was removed from office because of impeachment. -Languages. -The official language of Brazil is Portuguese. Brazil is the only country in South America that speaks Portuguese but more people in South America speak Portuguese than Spanish because the population of Brazil is larger than the combined population of all the Spanish-speaking countries in South America. -Some people in Brazil speak German dialects. That came from German immigrants. 2% of Brazilians speak German as their first language. Yiddish is spoken by the elders of the Jewish community. -Other people in Brazil speak their ancestors' languages like Italian, Japanese, Polish, Ukrainian, French, Russian, Lithuanian, Chinese, Dutch and Korean. Spanish or "Portunhol", a mix of Portuguese and Castilian (Spanish) is spoken at some of the borders. Indigenous languages as Guarani and Aymará are the first languages of a small number of Brazilians. -Geography. -Brazil has the world's largest rainforest, the Amazon Rainforest. It makes up 40% of the country's land area. Brazil also has other types of land, including a type of savanna, called "cerrado", and a dry plant region named "caatinga". -The most important cities are Brasília (the capital), Belém, Belo Horizonte, Curitiba, Florianópolis, Fortaleza, Goiânia, Manaus, Porto Alegre, Recife, Rio de Janeiro, Salvador, São Paulo (the biggest city) and Vitória. Other cities are at List of largest cities in Brazil. -Brazil is divided into 26 states plus the Federal District in five regions (north, south, northeast, southeast and centre-west): -The country is the fifth-largest in the world by area. It is known for its many rainforests and jungles. It is next to every country in South America except Chile and Ecuador. -The name Brazil comes from a tree named brazilwood. -Culture. -Brazil is the largest country in South America and the fifth-largest in the world. Its people are called Brazilians or Brasileiros (In Portuguese). The people include citizens of Portuguese or other European descent who mainly live in the South and Southeast, Africans, Native Americans, Arabs, Gypsies, and people of mixed ancestry. Brazil also has the largest Japanese community outside Japan. Other East Asians follow the Japanese group. The Amazon River flows through Brazil, it is the 2nd longest river in the world (after the Nile). The current President of Brazil is Luiz Inacio Lula da Silva. Two major sporting events were held in Brazil recently: the 2014 FIFA World Cup and the 2016 Summer Olympics in Rio de Janeiro. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Breakfast sausage.txt b/.github/workflows/data/simplewiki-100/Breakfast sausage.txt deleted file mode 100644 index 010e2854a..000000000 --- a/.github/workflows/data/simplewiki-100/Breakfast sausage.txt +++ /dev/null @@ -1,19 +0,0 @@ -Breakfast sausage is a type of fresh pork sausage made from seasoned ground meat mixed with bread crumbs. Breakfast sausage has a blander flavor than many other types of sausage, such as British or Italian-style sausages. -History of breakfast sausages. -The journey of breakfast sausages began centuries ago in Europe, with each European country adding its unique twist. For instance, Germany is known for its variety of wursts, while Italian sausages often feature fennel and garlic. This evolution reflects changes in societal norms and eating habits, transitioning from a means of preservation to a convenient breakfast option. -Using breakfast sausages. -Breakfast sausages are not cured or smoked like other types of sausages, which means that they have to be cooked soon after they are purchased (unless they are frozen). Uncooked sausages should be stored in the refrigerator or the freezer. Individuals handling them should wash their hands in hot soapy water, because uncooked pork is unhealthy for humans. Pork sausages have to be heated until all of the meat inside is cooked. -They are usually fried or grilled in a pan until they are browned and served at breakfast, often with cooked eggs, pancakes, and toasted bread. Breakfast sausages are also used in other dishes, such as "toad in the hole" a cooked batter dish. -Preparation and Cooking. -Cooking breakfast sausages to perfection is an art. Frying in a pan over medium heat brings out rich flavors, while baking offers a healthier alternative with minimal attention. Grilling imparts a unique smoky flavor. Regardless of the method, the internal temperature should reach 160°F (71°C) to ensure they are cooked through. -Types of breakfast sausages. -Different types made from pork and beef mixtures as well as poultry can now be found. There are also vegetarian types that use textured vegetable protein in place of meat. Breakfast sausages are available in patties or slices from a large roll, or in weiner-like links of different lengths and thickness. -Nutritional Information. -Breakfast sausages are a good protein source but can be high in saturated fat and sodium. Leaner versions are available, and for those looking for plant-based alternatives, vegetarian sausages offer similar textures and flavors but are lower in fat and cholesterol-free. -Cultural Variations. -Breakfast sausages are a staple in many cultures. In the US, they are often paired with pancakes and eggs. In the UK, they are a key part of the 'full English breakfast.' German Bratwurst and Italian sausages with fennel and garlic are examples of how different regions have embraced and adapted breakfast sausages. -Recipes and Serving Suggestions. -Creative ways to incorporate breakfast sausages into meals include Sausage and Egg Muffin Cups, Sausage Breakfast Casseroles, and Sausage and Vegetable Skillets. These recipes demonstrate the versatility of breakfast sausages in various cuisines. -Modern Developments and Trends. -Recent trends in breakfast sausages include the rise of plant-based options, ethically sourced meats, global flavors, and healthier ingredients. This reflects changing consumer preferences towards healthier and more diverse food choices. - "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Britain.txt b/.github/workflows/data/simplewiki-100/Britain.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-100/British English.txt b/.github/workflows/data/simplewiki-100/British English.txt deleted file mode 100644 index f6a68acb8..000000000 --- a/.github/workflows/data/simplewiki-100/British English.txt +++ /dev/null @@ -1,15 +0,0 @@ -British English or UK English is the dialect of the English language spoken in the United Kingdom. It is different in some ways from other types of English, such as American English. British English is widely spoken throughout most countries that were historically part of the British Empire. -Use in other countries. -American English is used in the United States. In Canada, the accent sounds extremely similar to American English but with few exceptions (see Canadian English). Canada has mixed the spelling rules of American and British English to form its own spelling rules. -All members of the Commonwealth of Nations learn British English, while American English is often learnt in the Americas, Japan, South Korea and Taiwan. The United Kingdom and Ireland use British layout keyboards, while Australia, South Africa, Canada, New Zealand and the US use American layout keyboards. In continental Europe, English as a second language is sometimes taught in American English, except in Scandinavia and the Netherlands where British English is taught. -Pronunciation. -In the United Kingdom, the spelling remains the same but the pronunciation varies with local dialect. For example, a person from a place near London may not pronounce his "r"s the same as a person from Scotland. Across the country, the accent is different. In Liverpool, people may speak with a "Scouse" accent, in Birmingham with a "Brummie" accent. -In London the "Cockney" accent was once common, but is almost never heard today. All these regional accents became less extreme in the 20th century. This is generally attributed to the arrival of radio and television. Another factor is the increased mobility of people. A similar process has been noted in the United States, where regional differences are much less noticeable than they used to be. -Spelling. -There are many words that sound the same in both American and British English but have different spellings. British English often keeps more traditional ways of spelling words than American English. Many of the British English rules are also used in other countries outside of the United Kingdom. Most of those countries are members of the Commonwealth of Nations. -Vocabulary. -In British English, "dock" refers to the water in the space between two "piers" or "wharfs". In American English, the "pier" or "wharf" could be called a "dock", and the water between would be a "slip". -Some common differences: -British English – American English -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Browser.txt b/.github/workflows/data/simplewiki-100/Browser.txt deleted file mode 100644 index 7b57c388c..000000000 --- a/.github/workflows/data/simplewiki-100/Browser.txt +++ /dev/null @@ -1,2 +0,0 @@ -A browser is a name given to any animal, usually a herbivorous mammal, which eats leaves and shrubs rather than grass. It is contrasted with grazers, which eat grass. - "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Bubonic plague.txt b/.github/workflows/data/simplewiki-100/Bubonic plague.txt deleted file mode 100644 index d97281bc0..000000000 --- a/.github/workflows/data/simplewiki-100/Bubonic plague.txt +++ /dev/null @@ -1,24 +0,0 @@ -Bubonic plague is the best-known form of the disease plague caused by the bacterium "Yersinia pestis". The name "bubonic plague" is specific for this form of the disease, which enters through the skin, and travels through the lymphatic system. -The plague was spread by fleas on rats. This method of spreading disease is called a zoonosis. -If the disease is left untreated, it kills about half its victims in three to seven days. The bubonic plague was the disease that caused the Black Death, which killed tens of millions of people in Europe, in the Middle Ages. -Symptoms of this disease include coughing, fever, and black spots on the skin. -Different kinds of the same disease. -There are different kinds of Bubonic plague. The most common form of the disease is spread by a certain kind of flea, that lives on rats. Then there is an incubation period which can last from a few hours to about seven days. -Septicemic plague. -Sepsis happens when the bacterium enters the blood and makes it form tiny clots. -Pneumonic plague. -This happens when the bacterium can enter the lungs. About 95% of all people with this form will die. Incubation period is only one to two days. -The abortive form. -This is the most harmless form. It will result in a small fever. After that, the victim's body produces antibodies that protect against all forms of the disease for a long time. -History. -The first recorded epidemic was in the Eastern Roman Empire (Byzantine Empire), It was called the Plague of Justinian after emperor Justinian I, who was infected but survived after long treatment. The pandemic resulted in the deaths of an estimated 25 million (6th century outbreak) to 50 million people (two centuries of recurrence). -During the 1300s, this epidemic struck parts of Asia, North Africa, and Europe. Almost a third of the people in Europe died of it. Unlike catastrophes that pull communities together, this epidemic was so terrifying that it broke people's trust in one another. Giovanni Boccaccio, an Italian writer of the time, described it: ""This scourge had implanted so great a terror in the hearts of men and women that brothers abandoned brothers, uncles their nephews, sisters their brothers, and in many cases wives deserted their husbands. But even worse... fathers and mothers refused to nurse and assist their own children"." -Local outbreaks of the plague are grouped into three plague pandemics, whereby the respective start and end dates and the assignment of some outbreaks to either pandemic are still subject to discussion. The pandemics were: -Globally about 600 cases of plague are reported a year. In 2017 the countries with the most cases include the Democratic Republic of the Congo, Madagascar, and Peru. -Vector. -The transmission of "Y. pestis" by fleas is well known. Fleas are the vector. The flea gets the bacteria as they feed on an infected animal, usually a rodent. Several proteins then work to keep the bacteria in the flea's digestive tract. This is important for the survival of "Y. pestis" in fleas. -Modern history. -In the 20th century, some countries did research on the bacteria that causes bubonic plague, in order to use it for biological warfare. -Samples of this bacteria are carefully controlled. There is much paranoia (fear) about it. Dr. Thomas C. Butler, a US expert in this organism was charged in October 2003 by the FBI with various crimes. This happened after he said he lost samples of "Yersinia pestis". This is the bacteria that causes bubonic plague. The FBI did not find the samples. They do not know what happened to them. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Calculus.txt b/.github/workflows/data/simplewiki-100/Calculus.txt deleted file mode 100644 index dfddd8ed8..000000000 --- a/.github/workflows/data/simplewiki-100/Calculus.txt +++ /dev/null @@ -1,30 +0,0 @@ -Calculus is a branch of mathematics that describes continuous change. -There are two different types of calculus. Differential calculus divides ("differentiates") things into small ("different") pieces, and tells us how they change from one moment to the next, while integral calculus joins ("integrates") the small pieces together, and tells us how much of something is made, overall, by a series of changes. Calculus is used in many different sciences such as physics, astronomy, biology, engineering, economics, medicine and sociology. -History. -In the 1670s and 1680s, Sir Isaac Newton in England and Gottfried Leibniz in Germany figured out calculus at the same time, working separately from each other. Newton wanted to have a new way to predict where to see planets in the sky, because astronomy had always been a popular and useful form of science, and knowing more about the motions of the objects in the night sky was important for navigation of ships. Leibniz wanted to measure the space (area) under a curve (a line that is not straight). Many years later, the two men argued over who discovered it first. Scientists from England supported Newton, but scientists from the rest of Europe supported Leibniz. Most mathematicians today agree that both men share the credit equally. Some parts of modern calculus come from Newton, such as its uses in physics. Other parts come from Leibniz, such as the symbols used to write it. -They were not the first people to use mathematics to describe the physical world — Aristotle and Pythagoras came earlier, and so did Galileo Galilei, who said that mathematics was the language of science. But both Newton and Leibniz were the first to design a system that describes how things change over time, and can predict how they will change in the future. -The name "calculus" was the Latin word for a small stone the ancient Romans used in counting and gambling. The English word "calculate" comes from the same Latin word. -Differential calculus. -Differential calculus is used to find the rate of change of a variable—compared to another variable. -Variables can change their value. This is different from numbers because numbers are always the same. For example, the number 1 is always equal to 1, and the number 200 is always equal to 200. One often writes variables as letters such as the letter x: "x" can be equal to 1 at one point and 200 at another. -Some examples of variables are distance and time, because they can change. The speed of an object is how far it travels in a particular time. So if a town is 80 kilometres (50 miles) away and a person in a car gets there in one hour, they have traveled at an average speed of 80 kilometres (50 miles) per hour. But this is only an average: they travelled faster at some times (say on a highway), and slower at other times (say at a traffic light or on a small street where people live). Certainly it is more difficult for a driver to figure out a car's speed using only its odometer (distance meter) and clock—without a speedometer. -Until calculus was invented, the only way to work this out was to cut the time into smaller and smaller pieces, so the average speed over the smaller time would get closer and closer to the actual speed at a point in time. This was a very long and hard process, and had to be done each time people wanted to work something out. -Differential calculus is also useful for graphing. A very similar problem is to find the slope (how steep it is) at any point on a curve. The slope of a "straight" line is easy to work out — it is simply how much it goes up or down ("y" or vertical) divided by how much it goes across ("x" or horizontal). On a "curve", however, the slope is a variable (has different values at different points) because the line bends. But if the curve was to be cut into very, very small pieces, the curve at the point would look almost like a very short straight line. So to work out its slope, a straight line can be drawn through the point with the same slope as the curve at that point. If this is done exactly right, the straight line will have the same slope as the curve, and is called a tangent. But there is no way to know (without complex mathematics) whether the tangent is exactly right, and our eyes are not accurate enough to be certain whether it is exact or simply very close. -What Newton and Leibniz found was a way to work out the slope (or the speed in the distance example) exactly, using simple and logical rules. They divided the curve into an infinite number of very small pieces. They then chose points on either side of the range they were interested in and worked out tangents at each. As the points moved closer together towards the point they were interested in, the slope "approached" a particular value as the tangents approached the real slope of the curve. The particular value it approached was the actual slope. -Given a function formula_1. "f" is short for function, so this equation means "y is a function of x". This tells us that how high y is on the vertical axis depends on what x (the horizontal axis) is at that time. For example, with the equation formula_2, we know that if formula_3 is 1, then formula_4 will be 1; if formula_3 is 3, then formula_4 will be 9; if "formula_3" is 20, then "formula_4" will be 400. The slope of the tangent line produced using this method here is formula_9, or 2 multiplied by "formula_3". So we know without having to draw any tangent line at any point on the curve formula_11 that the derivative, often written as formula_12 (marked with the prime symbol), will be formula_9 at any point. This process of working out a slope using limits is called differentiation, or finding the derivative. -The way to write the derivative in mathematics is -formula_14 -Leibniz came to the same result, but called h "formula_15", which means "with respect to x". He called the resulting change in formula_16 "formula_17", which means "a tiny amount of y". Leibniz's notation is used by more books, because it is easy to understand when the equations become more complicated. In Leibniz notation: -formula_18. -Mathematicians have grown this basic theory to make simple algebra rules—which can be used to find the derivative of almost any function. -In the real world, calculus can be used to find the speed of a moving object, or to understand how electricity and magnetism work. It is very important for understanding physics—and many other areas of science. -Integral calculus. -Integral calculus is the process of calculating the area underneath a graph of a function. An example is calculating the distance a car travels: if one knows the speed of the car at different points in time and draw a graph of this speed, then the distance the car travels will be the area under the graph. -The way to do this is to divide the graph into many very small pieces, and then draw very thin rectangles under each piece. As the rectangles become thinner and thinner, the rectangles cover the area underneath the graph better and better. The area of a rectangle is easy to calculate, so we can calculate the total area of all the rectangles. For thinner rectangles, this total area value "approaches" the area underneath the graph. The final value of the area is called the "integral" of the function. -In mathematics, the integral of the function "f(x)" from "a"  to "b", is written as -formula_19. -Main idea of calculus. -The main idea in calculus is called the fundamental theorem of calculus. This main idea says that the two calculus processes, differentiation and integration, are inverses of each other. That is, a person can use differentiation to undo an integration process. Also, a person can use integration to undo a differentiation. This is just like using division to "undo" multiplication, or addition to "undo" subtraction. -In a single sentence, the fundamental theorem runs something like this: "The derivative of the integral of a function "f" is the function itself". -Applications of calculus. -Calculus is used to describe things that change, like things in nature. It can be used for showing and learning all of these: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Cartography.txt b/.github/workflows/data/simplewiki-100/Cartography.txt deleted file mode 100644 index 7dabdd54e..000000000 --- a/.github/workflows/data/simplewiki-100/Cartography.txt +++ /dev/null @@ -1,8 +0,0 @@ -Cartography is making maps. It is part of geography. How people make maps is always changing. In the past, maps were drawn by hand, but today most printed maps are made using computers and people usually see maps on computer screens. Someone who makes maps is called a cartographer. -Making a map can be as simple as drawing a direction on a napkin, or as complicated as showing a whole country or world. Anyone can make a map, but cartographers spend their lives learning how to make better maps. -For many centuries maps were usually carefully drawn onto paper or parchment. Now they are made on a computer which makes them look neater with accurate images. -Maps are of two main types: -General maps are produced in a series. Governments produce them in larger-scale and smaller-scale maps of great detail. -Thematic maps are now very common. They are necessary to show spatial, cultural and social data. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Catharism.txt b/.github/workflows/data/simplewiki-100/Catharism.txt deleted file mode 100644 index f7ed09457..000000000 --- a/.github/workflows/data/simplewiki-100/Catharism.txt +++ /dev/null @@ -1,16 +0,0 @@ -The Cathar faith was a version of Christianity. They were usually considered Gnostics. The word 'Cathar' comes the Greek word "katharos" meaning 'unpolluted' (from Tobias Churton, "The Gnostics") or "the pure ones". -They used a bible in the language people spoke. Most other Western Christians used a Bible in Latin. Latin was spoken only by the priests. -Doctrines. -The Cathars believed that the world had been made by a bad god. They believed that this bad god had taken them from the good god and put them in the world, but inside their bodies there was a spirit, and that spirit needed to return to the good god. They were famous for a belief in a form of reincarnation and believed that when someone died the bad god would put that person's spirit in a new body. They believed this cycle of coming back to life could be escaped by a ritual cleansing. They were opposed to the doctrine of sin. -Women were prominent in the faith. They were pacifists. They didn't eat anything that was made from other animals, including meat and cows milk. The only exception to this was fish. Fish was OK to eat because they believed fishes were not alive but just things that were sometimes produced from dirt and water. -They preached tolerance of other faiths. They rejected the usual Christian rules of marriage and only believed in the New Testament. An earlier 10th-century Bulgarian heresy, Bogomilism and also Manichaeism started some of these trends. -Problems. -In 1145, open challenge to Catholic dominance began. In about 1165, the first Cathars said that the Church was "full of ravening (starving) wolves and hypocrites" and "worshipping the wrong God", right in front of the most powerful Catholics. In 1166, the Council of Oxford in England wiped out the English Cathars. They were also suppressed in Northern France. In 1167, Cathar bishops met to discuss organizing a counter Church - in the South of France, the Languedoc nobles protected it, and many noble women became "Perfects". Parish clergy had low morale, or confidence. -The Catholic Church was against Catharism, seeing it as a heresy. In the South of France there was tremendous religious fervor, and an economy that was starting to grow, and a social class of merchants and peasants was starting to grow. Peasants owned their own land. Meanwhile, in other parts of Europe, peasants were forced to give up their land to nobles and become serfs or slaves - the system of feudalism. There was a strong central absolute monarchy that did not exist in the South of France. The burghers and bankers had more power in this looser system. R. I. Moore is a historian who believes that it was desire to crush this system and take over the land that drove the attack. However, there was real cultural and religious difference to cause problems: Troubadors, who combined some of the traditions of the Bards of the Celts, and Jews were both part of the multicultural society in the South of France. Their influences were not appreciated by local or Roman Church figures. The 12th century Roman Catholic Monks were founding their monasteries outside the towns, drawing the best people there. -The Cathars had little competition. The Cathar "Perfects", the so-called Good Men or Good Women, lived restrained lives and spread their faith in towns - where the Catholics in general did not have their best people. Also, Cathars preached that only these Good leaders had to follow the regimens their whole lives - lay people could repent only on their deathbeds. Many 20th century Christian sects have similar beliefs. -The Albigensian Crusade. -Methods. -The Pope ordered a crusade against the Cathars in southern France. He said any crusader who answered the call would be given the same rewards as a crusader who went to the Holy Land. This was an absolution of all sin. -In the Launguedoc, on the 22nd of July 1209, a force of about 30,000 Crusaders arrived at the walls of Beziers bearing the cross pattee to mislead and create ease among the Cathars, thinking they were friends, not foe, and demanded that about 200 Cathars be surrendered. The people of the town who were mostly Catholic, said that rather than turn over their friends and family, "we would rather be flayed alive." -A mistake by the defenders of Beziers let thousands of attackers in. Arnauld Amaury made the famous quote "Kill them all, God knows his own" on being asked how to tell who were Cathars during the assault. Everyone in the town was killed, some while taking refuge in the church. It is guessed that 20,000 were killed, many of whom were Catholics and not Cathars at all. The crusade became known as the Albigensian crusade after the town of Albi. It was to wipe out the Cathars almost entirely over forty or so years. The Crusaders wanted to go home, but were ordered by the Pope to continue until the whole South of France was controlled and all Cathars were dead. In 1210, they attacked the fortress at Minerv and built "the first great bonfire of heretics" - beginning the practice of burning at the stake that would continue in the Inquisition of the Counter-Reformation. At the siege of Montsegur when the fires were lit the Cathars ran down the hill and threw themselves on, as their beliefs were very strong... -Catharism disappeared from the northern Italian cities after the 1260s, pressured by the Inquisition. The last known Cathar perfectus in the Languedoc, Guillaume Bélibaste, was killed in 1321. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Census of Marine Life.txt b/.github/workflows/data/simplewiki-100/Census of Marine Life.txt deleted file mode 100644 index eea0bdca5..000000000 --- a/.github/workflows/data/simplewiki-100/Census of Marine Life.txt +++ /dev/null @@ -1,3 +0,0 @@ -The Census of Marine Life was a ten-year survey of life in the oceans, starting in 2000. Its head was Ron O'Dor of Dalhousie University in Halifax, Nova Scotia, Canada. It used data from researchers all over the world. More than 70 nations were involved and over a billion US dollars were spent on it. -It was a major work of marine ecology. It was founded by J. Frederick Grassle. -The purpose of the Census of Marine Life was to say what is alive in our seas and oceans. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Chat.txt b/.github/workflows/data/simplewiki-100/Chat.txt deleted file mode 100644 index 37370ebd2..000000000 --- a/.github/workflows/data/simplewiki-100/Chat.txt +++ /dev/null @@ -1,4 +0,0 @@ -To chat is to talk about ordinary things that are not usually very important. However, important issues can also classify as “chat”, for instance when organising gatherings, meetings or events, such as air show attendance. A person can chat with another person, or to many people. People also use this word now for parts of the Internet where we can talk with many different people at the same time. Usually, people chat on the Internet in a chat room or messaging service like AOL Instant Messenger (AIM), Yahoo Messenger Windows Live Messenger or Tencent QQ. There are also programs which let people use different messaging services from one program, such as Pidgin. -Online Chat is real time, text-based, digital communication between two or more parties. -Related pages. - "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Chemistry.txt b/.github/workflows/data/simplewiki-100/Chemistry.txt deleted file mode 100644 index 2bf1eab1e..000000000 --- a/.github/workflows/data/simplewiki-100/Chemistry.txt +++ /dev/null @@ -1,22 +0,0 @@ -Chemistry is a branch of science that deals with chemical elements and compounds, and how they work together and change. In other words, chemistry is the branch of science about fundamental properties of matter and chemical reactions. Chemistry is the study of the substances and their transformations (or change). -History. -In history, people studied elements to figure out how to do things such as turn lead into gold, but they did not manage to do it. This early form of chemistry was called alchemy. During the 18th century, alchemists became chemists when they began using the scientific method. Chemists separated the air into many parts and isolated the noble gases from it. They also processed special minerals from a mine in Sweden to get rare earth metals. Radioactivity was also discovered. 118 different elements have been found. Some are very common, like oxygen. Many are very rare and expensive, like platinum. Some cannot be found on earth and can only be made in labs, like rutherfordium. -Since the 1920s, the increased understanding of physics has changed chemists' theories about chemical reactions. With smaller and faster computers, chemists have built better tools for analyzing substances. These tools have been sent to study chemicals on Mars. Police also use those tools to study evidence from crime scenes. -Types of chemistry. -There are several types of chemistry. Analytical chemistry looks at which chemicals are in things. For example, looking at how much arsenic is in food. Organic chemistry looks at things that have carbon in them. For example, making acetylene. Inorganic chemistry looks at things that do not have carbon in them. One example is making an integrated circuit. Theoretical chemistry tries to explain chemical data with mathematics and computers. -A large area of chemistry is polymer chemistry. This looks at plastics. One example is making nylon. Because plastics are made of carbon, polymer chemistry is part of organic chemistry. Another area is biochemistry. This looks at the chemistry of living things. An example would be seeing how arsenic poisons people. Biochemistry is also part of organic chemistry. There are many other small branches of chemistry. -Concepts of chemistry. -Basic concepts. -The basic unit of an element is called an atom. An atom is the smallest building block that you can cut an element into without the element breaking down (turning into a lighter element, for example through nuclear fission or radioactive decay). A chemical compound is a substance made up of two or more elements. In a compound, two or more atoms are joined to form a molecule. The tiniest speck of dust or drop of liquid, that one can see is made up of many millions or billions of these molecules. Mixtures are substances where chemicals are mixed but not reacted. An example would be mixing sand and salt. This can be undone again to produce salt and sand separately. Chemical compounds are changed by a chemical reaction. An example would be heating sodium bicarbonate, common baking soda. It will make water, carbon dioxide, and sodium carbonate. This reaction cannot be undone. -One very important concept in chemistry is that different atoms interact with one another in very specific proportions. For example, two hydrogen atoms interacting with one oxygen atom lead to the water molecule, H2O. This relationship is known as the "Law of constant proportions" and leads to the idea of "stoichiometry", a term that refers to the ratios of different atoms in chemical compounds. For example, in water, there are always exactly 2 hydrogen atoms to 1 oxygen atom. In carbon dioxide, there are exactly 2 oxygen atoms for 1 carbon atom. These relationships are described using chemical formulas such as H2O (two hydrogen atoms and one oxygen atom) and CO2 (one carbon atom and two oxygen atoms). -Mole. -Because atoms of different elements react with one another in very specific proportions but atoms of different elements have different weights, chemists often describe the number of different elements and compounds in terms of the number of "moles". A "mole" of any element contains the same number of atoms: 602,214,150,000,000,000,000,000 atoms. The atomic mass of an element can be used to see how much of the element makes a mole. For example, the atomic mass of copper is about 63.55. That means about 63.55 grams of copper metal has a mole of atoms. The atomic mass of chlorine is about 35.45. That means 35.45 grams of chlorine has a mole of atoms in it. -Moles can be used to see how many molecules are in chemical compounds, too. Copper(II) chloride is an example. CuCl2 is its chemical formula. There is one copper atom (63.55) and two chlorine atoms (35.45 · 2 = 70.90). Add all the molar masses of the elements together to get the molar mass of the chemical compound (63.55 + 70.90 = 134.45). That means in 134.45 grams of copper(II) chloride, there is one mole of copper(II) chloride molecules. This concept is used to calculate how much chemicals are needed in a chemical reaction if no reactants (chemicals that are reacted) should be left. If too much reactant is used, there will be some reactants left in the chemical reaction. -Acids and bases. -Acids and bases are common chemicals. Acids release H+ ions when in water, and bases release OH− ions when in water. Acids can react with bases. The H+ ion is taken from the acid by the base. This makes water, H2O. A salt is also made when an acid and a base react together. An example would be reacting hydrochloric acid (HCl) and sodium hydroxide (NaOH). Hydrochloric acid releases H+ and Cl- ions in water. The base releases Na+ and OH- ions. The H+ and the OH- react to make water. There is a solution of sodium chloride (NaCl) left. Sodium chloride is a salt. -Usefulness. -Chemistry is very useful in everyday life and makes up the foundation of many branches of science. Most objects are made by chemists (people who do chemistry). Chemists are constantly working to find new and useful substances. Chemists make new drugs and materials like paints that we use every day. -Safety. -Many chemicals are harmless, but there are some chemicals that are dangerous. For example, mercury(II) chloride is very toxic. Chromates can cause cancer. Tin(II) chloride pollutes water easily. Hydrochloric acid can cause bad burns. Some chemicals like hydrogen can explode or catch fire. To stay safe, chemists experiment with chemicals in a chemical lab. They use special equipment and clothing to do reactions and keep the chemicals contained. The chemicals used in drugs and in things like bleach have been tested to make sure they are safe if used correctly. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/China.txt b/.github/workflows/data/simplewiki-100/China.txt deleted file mode 100644 index fd9171fa4..000000000 --- a/.github/workflows/data/simplewiki-100/China.txt +++ /dev/null @@ -1,45 +0,0 @@ -China ( Pinyin: Zhōngguó) is a cultural region, an ancient civilization, and a nation in East Asia. The official name is People's Republic of China or PRC. -The latest Chinese Civil War (1927–1949) resulted from two different political powers today: -China is one of the world's oldest civilizations, having the oldest continuous civilization near the Yellow River region. There is archaeological evidence found that is over 5,000 years old. China also has one of the world's oldest writing systems (and the oldest in use today). China has been the source of making many major inventions. Geographically, China’s longest river is the Yangtze River, which runs through mega cities and is home to many species. It is the world’s third longest river. -Origins. -The first recorded use of the word "China" is dated to be 190. It is derived from "chīnī", a Persian adjective meaning 'Chinese' which was popularized in Europe by Marco Polo. -History. -Ancient (2100 B.C. – 1500 A.D.). -Ancient China was one of the first civilizations, and was active since the 2nd millennium BC as a feudal society. Chinese civilization was also one of the few to invent writing, with the others being Mesopotamia, the Indus Valley civilization, the Maya civilization, the Minoan civilization of ancient Greece, and Ancient Egypt. Ancient China reached its golden age during the Tang Dynasty (c. A.D. 10th century). Home of Confucianism and Daoism, it had great influence on nearby countries including Japan, Korea, and Vietnam in the areas of political system, philosophy, religion, art, writing and literature. China is home to some of the oldest artwork in the world. Statues and pottery, as well as decorations made of jade, are some classic examples. -Before the Qin Dynasty united China, there were many small feudal states, nominally loyal to the Zhou King, which typically fought each other for hundreds of years in battles for control of China. The majority of these states were ruled by relatives and clansmen of the Zhou royal house and carried the surname Ji (姬), and were tied by family bonds to the Zhou king, to whom they were ritually subordinate, as members of collateral or lesser lineages. A minority of these states, such as the Qin and Chu, were ruled by non-Zhou clansmen, and were awarded their fiefs on account of some merit. Over time, these feudal states attained to power and wealth, that exceeded that of their Zhou nominal overlord, whose direct authority became confined to a very small territory near present-day Zhengzhou. These states also began to acquire some distinctive characteristics and identities of their own during the long centuries of loose control by the Zhou. Eventually, the Zhou kings were eclipsed in power by two especially problematic vassals - the Qin and Chu, and the functional independence of the Qin later led to its gradual conquest of all other vassal states and the formal supplantation of the Zhou to form a heavily centralised Empire. -The long decline of the Zhou, incidentally the longest ruling dynastic house of China, is known as the Warring States Period. Despite the bloodiness and strife of the period, this was the time when many great philosophies emerged - including Confucianism and Daoism as a response to disintegrating central authority of the Zhou kings and fluctuating power of the vassal states, and the general uncertainty of that era. Confucianism and Daoism have been the foundation of many social values seen in modern east Asian cultures today. -Other notable dynasties include the Han (from which is derived the ethnonym the Han Chinese, which is synonymous with the older self-referential term - the Huaxia) as well as dynasties such as the Tang, Song, and Ming, which were characterised by periods of affluence, wealth, population growth, and the proliferation of literature. -During the later years, China was often raided or invaded by northern nomadic people such as the Xiongnu, the Xianbei, the Jurchens and the Mongols (the latter led by Genghis Khan and Kublai Khan). One effect of regular nomadic invasion and the collapse of native dynasties was the massive migration of Han Chinese - especially the aristocratic elite and the literati, to sparsely populated frontier regions south of the Yangzi river such as Jiangsu, Zhejiang, Guangdong and Fujian. Several notable waves of Han Chinese immigration to Jiangsu, Zhejiang, Guangdong and Fujian took place during the collapse of the Jin, the Tang, and the Song. -Some nomadic groups succeeded in conquering the whole territory of China, establishing dynasties such as the Yuan (Mongol) and Qing (Manchu). Each time, they also brought new elements into Chinese culture - for instance, military uniform, the qipao and the pigtail, the latter of which was deeply resented by the Han Chinese. -A new age (1500 A.D. - Present). -While China achieved many things in the First millennium and early 2nd millennium, it became an isolationist country in the 15th century C.E. This was because Spain found enormous silver in the new continent, which was the main currency (money) in China and Europe at the time, and China did not want to be bought by the foreigners. -By the time of the Renaissance, European powers started to take over other countries in Asia. While China was never actually taken over, many European countries, such as Britain and France built spheres of influence in China. Since China had cut itself off from the world over the previous few centuries, by the Qing Dynasty, it had fallen behind other countries in technology, and was helpless to stop this from happening. This had become clear when it lost the Opium Wars to Britain in the 19th century. -Still influenced by Western sources, China faced internal strife. The Taiping Rebellion or Taiping War occurred in China from 1851 through 1864. The Taiping Rebellion was led by Hong Xiuquan from Guangdong. Hong Xiuquan was influenced by Christian missionaries and declared himself the brother of Jesus. Hong made his mission to bring down the Qing Dynasty. Gaining influence on the southern Chinese population, the Taiping Rebellion attracted tens of thousands of supporters. The Taiping regime successfully created a state within the Qing Empire with the capital at Nanjing. Hong called his new state the Taiping Tianguo or "The Heavenly State of Great Peace". Local armies eventually suppressed the rebellion at the final battle of Nanjing. -In 1911, the Republic of China was founded after the Xinhai revolution led by Sun Yat-sen, but its government was very weak. Warlords controlled many areas. Chiang Kai-shek led wars against them, and he became president and dictator. -In 1931, Japan invaded Manchuria, a place in the northeastern part of China. On July 7, 1937, the Japanese attacked the rest of the country, starting what was called the Second Sino-Japanese War. -On December 13 of that same year, The Japanese Army killed an estimated (guessed) 200,000 to 300,000 Chinese civilians (people) which is called Nanjing Massacre. The war later became part of World War II. The war was fought for eight years and millions of Chinese people were killed. -However, the Chinese Civil War later started between the Kuomintang (Nationalists) of the Republic of China (ROC) and the Communists of the People's Republic of China (PRC). The Communists wanted to make China like the Soviet Union, whereas the other side wanted to keep China in its current state at the time. The Communists were led by Mao Zedong, Liu Shaoqi, Zhou Enlai and others. The Communists eventually won the war by uniting all the people from different positions. The Nationalists (led by Chiang Kai-shek) fled to the island of Taiwan and set up their new capital city in Taipei. After the Chinese Civil War, the Communist leader Mao Zedong declared a new country, the People's Republic of China (PRC), in Beijing on October 1, 1949. -Under Mao the country stayed poor while Taiwan became richer. His attempt at industrialization and collectivization with the Great Leap Forward led to the deaths of many people from famine. The Cultural Revolution caused great social upheaval. After 1976, China underwent market economy reforms under Deng Xiaoping, and experienced rapid economic growth, which made the former progress made by Taiwan became overshadowed. China is now one of the largest economies in the world, relying mainly on exports and manufacturing. -In recent history, China has had problems with protests, blocking of information on the Internet, and censorship of news. 1989 was notable for the controversial Tiananmen Square protests. Since the 2008 Olympics, China has hosted many major international events, and the 2022 Winter Olympics were held in Beijing, China. -Geography. -China's landscape is vast and diverse. It ranges from the Gobi and Taklamakan Deserts in the north to subtropical forests in the south. The Himalaya, Karakoram, Pamir and Tian Shan mountain ranges separate China from much of South and Central Asia. The Yangtze and Yellow Rivers run from the Tibetan Plateau to the densely populated eastern coast. The Yangtze River is the third-longest river in the world while the Yellow River is the sixth-longest. China's coastline along the Pacific Ocean is 14,500 kilometers (9,000 mi) long. It is bounded by the Bohai, Yellow, East China and South China seas. China connects through the Kazakh border to the Eurasian Steppe. The Eurasian Steppe has been an artery of communication between East and West since the Neolithic through the Steppe route. The Steppe Route is the ancestor of the terrestrial Silk Road(s). -Politics. -China's constitution states that The People's Republic of China "is a socialist state under the people's democratic dictatorship led by the working class and based on the alliance of workers and peasants". It also states the state organs "apply the principle of democratic centralism." The PRC is one of the world's only socialist states openly being communist. -Military. -With 2.3 million active troops, the People's Liberation Army (PLA) is the largest standing military force in the world. The PLA is commanded by the Central Military Commission (CMC). China has the second-biggest military reserve force, only behind North Korea. The PLA consists of the Ground Force (PLAGF), the Navy (PLAN), the Air Force (PLAAF), and the People's Liberation Army Rocket Force (PLARF). According to the Chinese government, China's military budget for 2017 was US$151,5 billion. China has the world's second-largest military budget. -Science and technology. -China was once a world leader in science and technology up until the Ming dynasty. There are many Ancient Chinese discoveries and inventions. For example, papermaking, printing, the compass, and gunpowder are known as the Four Great Inventions. They became widespread across East Asia, the Middle East and later to Europe. Chinese mathematicians were the first to use negative numbers. By the 17th century, Europe and the Western world became better than China in science and technology. -Demographics. -The national census of 2010 recorded the population of the People's Republic of China to be about 1,370,536,875. About 16.60% of the population were 14 years old or younger, 70.14% were between 15 and 59 years old, and 13.26% were over 60 years old. The population growth rate for 2013 is estimated to be 0.46%. -Culture. -China is the origin of Eastern martial arts, called Kung Fu or its first name Wushu. China is also the home of the well-respected Spa Monastery and Wudang Mountains. Martial art started more for the purpose of survival, defense, and warfare than art. Over time some art forms have branched off, while others have retained their distinct Chinese flavor. -China has had renowned artists including Wong Fei Hung (Huang Fei Hung or Hwang Fei Hung) and many others. Art has also co-existed with a variety of paints including the more standard 18 colors. Legendary and controversial moves like Big Mak are also praised and talked about within the culture. -China has many traditional festivals, such as Spring Festival, Dragon Boat Festival, Mid-autumn Festival and so on. The most important is Chinese New Year. People in China will have holidays to celebrate these festivals. -Festivals. -Spring Festival is the Chinese New Year. -Dragon Boat Festival is celebrated to commemorate the death of Qu Yuan, a patriotic poet of the State of Chu during the Warring States period. He persuaded his emperor not to accept Qin's diplomats' offers several times but his emperor did not listen to him. He was very sad and ended up jumping into the river to end his life. The people loved him so much that they did not want the fish to eat his corpse. They made and threw rice dumplings into the river. They hope the fish eat these dumplings instead of the poet's corpse. They also rowed dragon boats in the river to get rid of the fish. Such practices, eating rice dumplings and holding dragon boat races, become what Chinese do in this festival nowadays. -Held on the fifteenth day of the eighth lunar month, Mid-Autumn Festival is a festival for families. Now when the festival sets in, people would sit together to eat moon cakes, appreciate the bright full moon cakes, appreciate the bright full moon, celebrate the bumper harvest and enjoy the family love and happiness. To the Chinese people, the full moon symbolizes family reunion, as does the "moon cakes." Hence the Mid-Autumn Festival is also called the Family Reunion Festival. -Notes. -<templatestyles src="Reflist/styles.css" /> -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Chinese.txt b/.github/workflows/data/simplewiki-100/Chinese.txt deleted file mode 100644 index 269f18cce..000000000 --- a/.github/workflows/data/simplewiki-100/Chinese.txt +++ /dev/null @@ -1,2 +0,0 @@ -Chinese might mean: -<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Chorizo.txt b/.github/workflows/data/simplewiki-100/Chorizo.txt deleted file mode 100644 index 1fe01e197..000000000 --- a/.github/workflows/data/simplewiki-100/Chorizo.txt +++ /dev/null @@ -1,6 +0,0 @@ -Chorizo is a pork (pig-meat) sausage which people first made in the Iberian Peninsula. It is made with large pieces of fatty pork, chili pepper and paprika. The special taste of this sausage comes from the mild Spanish paprika in it. -In the western hemisphere, the Mexican and Caribbean types are better known. These types of chorizo are made with smaller pieces of pork and different seasonings and peppers are used. -Cured smoked chorizo is edible and can be eaten without cooking. Fresh chorizo must be cooked before eating. It can be eaten by its self, or as part of meal. It can also be used in place of ground beef or pork. -Chorizo can be fresh. Also it can be dried. It can be spicy or not spicy depending on the recipe. There are many ways to eat chorizo. It can be sliced and eaten as a snack, or cooked. Dishes like stews, soups and rice dishes also use Chorizo. In Spain, chorizo is served as a small plate of food with drinks. In Latin America, chorizo is served with beans and eggs for breakfast. To make chorizo, the pork is cut into small pieces. Then it is mixed with spices and other ingredients. The mixture is then put into a casing. Casing is a thin, tube-like skin. Casing is made from the intestine of a pig. The chorizo is then left to dry for a few weeks. By doing this chorizo gets its special flavor and texture. There are many kinds of chorizo. Recipe of chorizo also different in different countries. In Spain, there are two main kinds of chorizo: chorizo de verdeo, and chorizo de cantimpalo. Chorizo de verdeo made with white wine and chorizo de cantimpalomade with red wine. In Latin America, chorizo is made with a mixture of chili peppers and other spices. It makes chorizo spicy. There are a few different ways to cook with chorizo. One popular way is to slice the chorizo and fry it in a pan until it is crispy. It can then be added to dishes like soups, stews and rice dishes. Chorizo can also be grilled, which gives it a smoky flavor. It can be sliced and added to sandwiches or served as a topping on pizza. Chorizo is a tasty and versatile food that can be enjoyed in many different ways. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Church (building).txt b/.github/workflows/data/simplewiki-100/Church (building).txt deleted file mode 100644 index 3dd5aebc4..000000000 --- a/.github/workflows/data/simplewiki-100/Church (building).txt +++ /dev/null @@ -1,23 +0,0 @@ -A church is a building that was constructed to allow people to meet to worship together. These people are usually Christians, or influenced by Christianity. Some other non-Christian religious groups also call their religious buildings churches, most notably Scientology. -The following description is about Roman Catholic churches, although some parts are the same in Episcopalian and Lutheran churches. Depending on the number of people that are in a community, the churches come in different sizes. Small churches are called chapels. The churches in a particular geographical area form a group called the diocese. Each diocese has a cathedral. In most cases, the cathedral is a very big church. Cathedrals are the seat of bishops. -History of church buildings. - -In the early days of Christianity people met in private buildings. Church buildings are mentioned for the first time around A.D. 260 when the Emperor Galienus ordered an end of a persecution and to return the places of worship. In the third century we hear of large church buildings. We do not know, how these early buildings looked. Only in Dura-Europos (Syria) a building was discovered, which had been a private house modified for Christian services. -After the death of the Roman emperor Constantine in A.D. 337, Christians were allowed to have buildings to worship in. These first churches were built on a similar plan to Roman basilicas. This plan was later used for the fine Gothic cathedrals and churches that were built at the end of the Middle Ages. -The parts of a church. -There are several parts in the architecture of a church. Not all churches will have all these parts: -In Roman Catholic churches there is always a stoup (bowl) of holy water near the entrance of the church. This tradition comes from the fact that Roman basilicas had a fountain for washing in front of the entrance. The font is a bowl where people (often babies) are baptized. This is also near the entrance of the church. This is a symbol of the fact that it is welcoming the people into the Christian church. -Traditionally the nave has long benches for the congregation to sit on. These are called pews. Some churches may now have replaced their pews with chairs so that they can be moved about for different occasions. At the front of the nave is the pulpit where the priest preaches (these talks are called “sermons”). There is also a lectern (like a large music stand) from where the lessons (the Bible readings) are read. -If there are aisles along the side of the nave there will be pillars which hold up the roof. In large churches or cathedrals there may be a row of little arches along the top of these pillars. This is called the triforium. Over the triforium is the clerestory which is a row of windows high up in the church wall. -The chancel is the most holy part of the church, and this is why it is often separated from the nave by a screen which can be made of wood or stone, or occasionally iron. The congregation can see through the screen. On the top of the screen there may be a cross. This is called a rood (pronounce like “rude”) screen. Priests used to climb up a staircase to the top of the rood screen to read the epistle and the gospel. Sometimes people sang from there. -Inside the chancel are the benches where the choir sit. These are called choir stalls. They are on both sides. The two sides of the choir sit facing one another. The choir members who sit on the left (north side) are called “cantoris” (the side where the “cantor” sits) and those on the right (south side) are called “decani” (the side where the deacon sits). In some large churches or cathedrals the seats for the priests tip up. The top of these seats, when they are tipped up, are called misericords (from the Latin word for “mercy”). This is because the priests or monks were able to lean against them when they got tired if they had to stand up for a long time. -Sometimes there are holes in the walls of the screen so that the congregation can see through. These are called squints. If there is a recess in the wall it is called an aumbry. It is a cupboard for communion wine and bread that have been consecrated by a priest. -The altar may be right at the east end of the church, but in larger churches or cathedrals it is often much farther forward. In that case the very east end is called an apse. Sometimes it is a separate chapel called the “Lady Chapel”. -Churches through the ages. -The design of churches changed a lot during the course of history. Often churches were made bigger. When this happened there may be a mixture of architectural styles. These styles vary a lot in different countries. -English churches. -In English churches there were several different periods of architecture: -In the 1600s, churches were built in a variety of styles. Often they copied some of the older styles. After the Great Fire of London many new churches were built by the architect Sir Christopher Wren. They were built in the classical style. Churches continued to be built in later centuries like this, but also the Gothic style continued to be used. -Modern churches often do not have the traditional cross-shape. It is difficult for the congregation to see and hear what is happening in the chancel. Modern churches bring the congregation, choir and priests in closer touch. An example is the round design for the Church of Christ the Cornerstone in Milton Keynes. Modern churches are often simpler but with a warmer character than the Gothic churches. Many have beautiful mosaic glass windows. Coventry Cathedral is a famous example of a modern church building. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Cities.txt b/.github/workflows/data/simplewiki-100/Cities.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-100/City.txt b/.github/workflows/data/simplewiki-100/City.txt deleted file mode 100644 index 254157c10..000000000 --- a/.github/workflows/data/simplewiki-100/City.txt +++ /dev/null @@ -1,34 +0,0 @@ -A city is a place where many people live close together. -A city has many buildings and streets. It has houses, hotels, condominiums, and apartments for many people to live in, shops where they may buy things, places for people to work, and a government to run the city and keep law and order in the city. People live in cities because it is easy for them to find and do everything they want there. A city usually has a "city center" where government and business occur and suburbs where people live outside the center. -Definition. -No rule is used worldwide to decide why some places are called "city," and other places are called "town." -Some things that make a city are : -In American English, people often call all places where many people live cities. (See below: Size of cities ) -Size of cities. -The sizes of cities can be very different. This depends on the type of city. Cities built hundreds of years ago and which have not changed much are much smaller than modern cities. There are two main reasons. One reason is that old cities often have a city wall, and most of the city is inside it. Another important reason is that the streets in old cities are often narrow. If the city got too big, it was hard for a cart carrying food to get to the marketplace. People in cities need food, and the food always has to come from outside the city. -Cities that were on a river like London could grow much bigger than cities that were on a mountain like Siena in Italy, because the river made a transport route for carrying food and other goods, as well as for transporting people. London has been changing continually for hundreds of years, while Siena, a significant city in the 1300s, has changed very little in 700 years. -Modern cities with modern transport systems can grow very large, because the streets are wide enough for cars, buses, and trucks, and there are often railway lines. -U.S.A. usage. -In the US, the word "city" is often used for towns that are not very big. When the first European people went to America, they named "city" to new places. They hoped the places would be great cities in the future. For example, Salt Lake City was the name given to a village of 148 people. When they started building the town, they made street plans and called it Great Salt Lake City (for the nearby Great Salt Lake). Now, 150 years later, it really is a big city. -Los Angeles, which sounds like a single city, is really made of a number of cities which over the years have become amalgamated. It now covers a huge area which goes by the name of Los Angeles. The city is governed by a Common Council only since 1948. -Growth of cities. -In modern times many cities have grown bigger and bigger. The whole area is often called a "metropolis" and usually includes several ancient small towns and villages. The metropolis of London includes London, Westminster, and many old villages such as Notting Hill, Southwark, Richmond, Greenwich, etc. The part that is officially known as the "City of London" only takes up one square mile. The rest is known as "Greater London". Many other cities have grown in the same way. In general speech, it is all a city. But, confusingly, that includes the City of London. -Modern cities have many problems. Not everyone has jobs in the cities and they often get money by begging or by crime. Automobiles, factories, and waste create a lot of pollution that makes people sick. Roads are crowded and traffic is slow. The cause of all this is population growth. -Historically, a big problem with cities was the water supply, which periodically got contaminated. That was fixed by an extraordinary man, Joseph Bazalgette. He was the first man to solve this problem, which had plagued mankind since at least Roman times. There are parts of the world where his ideas are still not understood. -Urban history. -Urban history is history of civilization. The first cities were made in ancient times, as soon as people began to create civilizations. The oldest city on Earth is probably Catal Huyuk, which existed from 7500 to 6500BC. Famous ancient cities which fell to ruins included Babylon, Troy, Mycenae and Mohenjo-daro. -Benares in northern India is one among the ancient cities which has a history of more than 3000 years. Other cities that have existed since ancient times are Athens in Greece, Rome and Volterra in Italy, Alexandria in Egypt. -In Europe in the Middle Ages, being a city was a special privilege, granted by nobility. Cities that fall into this category, usually had (or still have) city walls. This shows that security was one pf the problems of a city. The people who lived in the city were privileged over those who did not. Medieval cities that still have walls include Carcassonne in France, Tehran in Iran, Toledo in Spain, and York and Canterbury in England. -Features. -Infrastructure. -People in a city live close together, so they cannot grow all their own food or gather their own water or energy. People also create waste and need a place to put it. Modern cities have infrastructure to solve these problems. Pipes carry running water, and power lines carry electricity. Sewers take away the dirty water and human waste (see Bazelguette). Most cities collect garbage to take it to a landfill, burn it, or recycle it. -Transport is any way of getting from one place to another. Cities have roads which are used by automobiles (including trucks), buses, motorcycles, bicycles, and pedestrians (people walking). Some cities have trains and larger cities have airports. Many people in cities travel to work each day, which is called commuting. -Buildings and design. -Houses and apartments are common places to live in cities. Great numbers of people in developing countries (and developed countries, in the past) live in slums. A slum is poorly built housing, without clean water, where people live very close together. Buildings are usually taller in the city center, and some cities have skyscrapers. -City streets can be shaped like a grid, or as a "wheel and spokes": a set of rings and lines coming out from the center. Streets in some older cities like London are arranged at random, without a pattern. The design of cities is a subject called urban planning. One area of the city might have only shops, and another area might have only factories. Cities have parks, and other public areas like city squares. -United States politics. -Cities in the US are usually very-left leaning. The best examples of these would be New York, New York, and Washington, D.C. For example, in Louisiana, the only Democratic delegate in US Congress who is a Democrat was elected from a district comprising in New Orleans. Below is a list of states and the major city/cities that provide much of the liberal support in them : -World's largest cities. -These cities have more than 10 million people and can be called megacities: -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Civics.txt b/.github/workflows/data/simplewiki-100/Civics.txt deleted file mode 100644 index 78a7ece9a..000000000 --- a/.github/workflows/data/simplewiki-100/Civics.txt +++ /dev/null @@ -1,4 +0,0 @@ -Civics is the study of government. It most often refers to studying government in high school to prepare to be a good citizen. In college, civics is usually called political science. Since a city has the most unsimple government problems, the word for this study is like that for city. -Theories of civics can be grouped as: - "This about can be made longer. You can help Wikipedia by [ adding to it]". -It contains the rule and regulations of the citizen to make the country democratic \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Classical Elements.txt b/.github/workflows/data/simplewiki-100/Classical Elements.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-100/Classical element.txt b/.github/workflows/data/simplewiki-100/Classical element.txt deleted file mode 100644 index 27e526c48..000000000 --- a/.github/workflows/data/simplewiki-100/Classical element.txt +++ /dev/null @@ -1,4 +0,0 @@ -The Greek classical elements are fire, air, water, and earth. In Greek philosophy, science and medicine, these make up a whole. -The image below has two squares on top of each other. The corners of one are the classical elements. The corners of the other are the properties. -Galen said these elements were used by Hippocrates to describe the human body. The elements are linked to the four humours: phlegm (water), yellow bile (fire), black bile (earth), and blood (air). -In Chinese Taoism the elements are metal, wood, water, fire, earth (). \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Coin.txt b/.github/workflows/data/simplewiki-100/Coin.txt deleted file mode 100644 index dbab99911..000000000 --- a/.github/workflows/data/simplewiki-100/Coin.txt +++ /dev/null @@ -1,9 +0,0 @@ -A coin is a piece of metal that is used as currency, or money. The earliest coins were in Lydia, in what is Turkey today, in 7th Century BC. They were made from electrum, an alloy found in riverbeds. -Most people use coins as currency. They usually have lower value than banknotes. Most are made in government mints. -Appearance. -Many coins have unique or complicated decorations; one side often has the picture of a king or ither important person's head on it. -The different decorations on each side of a coin might be used to decide things randomly. This is called "tossing a coin". A person can throw the coin into the air and catch it. You then look at which side is facing up. If the head is facing up it is called "heads", if the other side is facing up it is called "tails". Before tossing the coin someone has to decide what each side means. Tossing a coin can be a type of gambling, which is illegal (against the law) in some countries. -Collecting. -Because coins have been made for a very long time, some people collect old coins. They can be much cheaper than other old things, especially if they are made of cheap metals like copper. Older coins normally cost more than newer ones, but rarity matters more-some coins from the 1920s cost vast sums, while some Roman coins cost very little. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Colchester.txt b/.github/workflows/data/simplewiki-100/Colchester.txt deleted file mode 100644 index da4b5064a..000000000 --- a/.github/workflows/data/simplewiki-100/Colchester.txt +++ /dev/null @@ -1,11 +0,0 @@ -Colchester is a city in the northern part of the English county of Essex. It has a population of 130,245 people. People believe that Colchester is the oldest Roman town in England. -History. -Before Roman times, Colchester was "Camulodunon". This is a Celtic name that came from Camulos. Camulos was the Celtic god of war. The Romans called Colchester "Camulodunum" (written "CAMVLODVNVM") and made it the capital of Roman Britain. Colchester was attacked and burnt by Boudicca in 61 AD. The Romans moved their capital of Britannia to Londinium (now London), but Camulodunum remained an important city until the fifth century, when the Saxons conquered the region. -The Roman town of "Camulodunum", officially known as "Colonia Victricensis", reached its peak in the Second and Third centuries AD. It may have reached a population of 30,000 in those centuries, but when the Romans withdrew from Britannia in 410 AD it probably had fewer than 5,000 inhabitants. -The church at the Benedictine abbey of Saint John the Baptist was destroyed in 1539. This action was part of the dissolution of the monasteries by King Henry VIII. Only a gate remains, that people still go to visit. -King Cunobelinus (or "Cunobelin") was from Colchester. -Until 2022, Colchester was officially a town, not a city. On 5 September, Queen Elizabeth II signed letters patent to grant it city status. This was planned as part of her Platinum Jubilee celebrations. However, she died three days later. On 29 September, these letters were publicly released. -Twin cities. -Colchester is twinned with the following cities: -Bibliography. - "This about the  can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Comedy.txt b/.github/workflows/data/simplewiki-100/Comedy.txt deleted file mode 100644 index fb5dda4fe..000000000 --- a/.github/workflows/data/simplewiki-100/Comedy.txt +++ /dev/null @@ -1,30 +0,0 @@ -Comedy (from ), in modern times, is an entertainment with generally funny content. It is able to make people laugh. This definition was used for theatre plays, and was first used in Ancient Greece. Aristotle defined this as “Comedy is, as we have said, an imitation of characters of a lower type- not, however, in the full sense of the word bad, the ludicrous being merely a subdivision of the ugly. It consists in some defect or ugliness which is not painful or destructive. To take an obvious example, the comic mask is ugly and distorted, but does not imply pain.” To him, the lampooners became writers of Comedy and the truly artistic ones became writers of Tragedy. -Comedy is also a media genre that is for television shows or movies that are either funny or silly. People who are known for acting in comedies are termed as comedians or comedic actors. -History. -Satire. -The ancient Greeks had comedies, which were presented in competitions at the festival of Dionysia. -One of the best-known comedy authors of the time was Aristophanes (about 446–386 BC). One of his works, "The Clouds" was performed 425 BC. The work did not survive completely, but a later version did survive. It is a satire against Socrates, and pictures the great philosopher as a swaggering con artist. Some of the accusations were re-used at Socrates' trial, twenty years later. -Typical for satire are that the author criticizes society, and living people. -Satyr plays. -Another type of Ancient Greek theatre was the satyr play. This was mock drunkenness, brazen sexuality (including phallic props), pranks, sight gags, and general merriment. The modern equivalent would be knock-about comedy. -Humour. -Humour, or 'New Comedy' is not about criticizing people or ideas, but rather about showing characters in funny situations. The most important Greek playwright of this type was probably Menander. The best known Roman comedy writer was Plautus. He often used Greek comedies for his plays. -Many comedy plays were written in the 1500s by the British writer William Shakespeare. -Shakespeare's comedy plays include:" All’s Well That Ends Well, The Comedy of Errors, A Midsummer Nights Dream", and "Twelfth Night". In Shakespeare's day a comedy did not mean a play that would make people laugh or that had a lot of jokes. Instead it was a play in which all the problems work out all right in the end. This was unlike a tragedy, where the problems do not work out, usually resulting in someone's death. -The two masks, one was smiling, the other crying, often associated with theatre represent comedy and tragedy. -Types. -Slapstick. -There are different types of comedy. One type of comedy is called "slap stick comedy." In "slap stick comedy," people do silly things such as tripping, falling over or embarrassing themselves just to make people laugh. Slap stick comedy can be used in comedy movies or comedy television shows. -Slap stick comedy was used a lot in silent (no sound) movies from the 1920s. A comedian who acted in the silent movies who used a lot of slapstick comedy was Charlie Chaplin. In the 1950s and 1960s, comedian Jerry Lewis also used silly slap stick comedy in his comedy movies. -Comedy movies. -A comedy is a very popular type of movie. Some comedy movies have "slapstick comedy," in which people just do silly things such as tripping, falling over or embarrassing themselves just to make people laugh. Other comedy movies show funny stories or situations in which people are behaving in a silly manner. Some comedies make the audience laugh by showing strange or unusual images or situations that do not make sense. -Offensive Comedy. -a genre of comedy that existed before the rise of "political correctness" generally racist and discriminatory against minorities but can be used as a way to offend those who offend others this is known as "Reverse Racism". an example of this is calling a white person a "honky" or "white trash" these terms are offensive to white people which is racist but if used against a person who calls someone another terminology, as a way of keeping ones honour. -Parody/Spoof. -A parody or spoof movie imitates or exaggerates another person or movie to make them seem silly, dumb, or just plain out of it. -Different types of comedy movies. -Some types of comedy movies mix comedy with other types of movies. -Comedy television shows. -Comedy shows are very popular on television. Comedy shows on television are often called "sitcoms." The word "sitcom" is a shortened way of saying "situational comedy." Television situational comedies usually show characters who do silly or funny things which make the audience laugh. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Comet.txt b/.github/workflows/data/simplewiki-100/Comet.txt deleted file mode 100644 index b79834a40..000000000 --- a/.github/workflows/data/simplewiki-100/Comet.txt +++ /dev/null @@ -1,12 +0,0 @@ -A comet is a ball of mostly ice that moves around in outer space. Comets are often described as "dirty snowballs". They are very different from asteroids. The orbital inclinations of comets are usually high and not near the ecliptic where most solar system objects are found. Most of them are long-period comets and come from the Kuiper belt. That is very far away from the Sun, but some of them also come near enough to Earth for us to see at night. -They have long "tails", because the Sun melts the ice. A comet's tail does not trail behind it, but points directly away from the Sun, because it is blown by the solar wind. -The hard centre of the comet is the "nucleus". It is one of the blackest things (lowest albedo) in the solar system. When light shone on the nucleus of Halley's Comet, the comet reflected only 4% of the light back to us. -"Periodic" comets visit again and again. "Non-periodic" or "single-apparition" comets visit only once. -Comets sometimes break up, as Comet Biela did in the 19th century. Comet Shoemaker-Levy 9 broke up, and the pieces hit Jupiter in 1994. Some comets orbit (go around) together in groups. Astronomers think these comets are broken pieces that used to be one object. -History of comets. -For thousands of years, people feared comets. They did not know what they were, or where they came from. Some thought that they were fireballs sent from demons or gods to destroy the earth. They said that each time a comet appeared, it would bring bad luck with it. Whenever a comet appeared, a king would die. For example, the Bayeux Tapestry shows the return of Halley's Comet and the death of a king. Comets were also known to end wars and thought to bring famine. During the Renaissance, astronomers started to look at comets with less superstition and to base their science on observations. Tycho Brahe reasoned that comets did not come from the earth, and his measurements and calculations showed that comets must be six times farther than the earth is from the moon. -Edmond Halley reasoned that some comets are periodic, that is, they appear again after a certain number of years, and again and again. This led to the first prediction of a comet's return, Halley's Comet, named after him. -Isaac Newton also studied comets. He realised that comets make U-turns around the sun. He asked his friend Edmond Halley to publish this in his book "Philosophiae Naturalis Principia Mathematica". Before Newton said this, people believed that comets go in to the sun, then another comes out from behind the sun. -In later years, some astronomers thought comets were spit out by planets, especially Jupiter. -All this new information and research gave people confidence, but some still thought that comets were messengers from the gods. One 18th century vision said that comets were the places that hell was, where souls would ride, being burned up by the heat of the sun and frozen by the cold of space. -In modern times, space probes have visited comets to learn more about them. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Compound.txt b/.github/workflows/data/simplewiki-100/Compound.txt deleted file mode 100644 index 8ed5970df..000000000 --- a/.github/workflows/data/simplewiki-100/Compound.txt +++ /dev/null @@ -1 +0,0 @@ -<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Computer science.txt b/.github/workflows/data/simplewiki-100/Computer science.txt deleted file mode 100644 index 0aa310312..000000000 --- a/.github/workflows/data/simplewiki-100/Computer science.txt +++ /dev/null @@ -1,16 +0,0 @@ - Computer science deals with the theoretical foundations of computation and practical techniques for their application. -Computer science is the science of information. Computer scientists study different ways of reading, using, and encoding information. -There are many different areas within computer science. In some areas, scientists only work with ideas "on paper". In other areas they use those ideas to make things like computers and computer programs. -A person who works in computer science will often need to understand logic and mathematics. -Common tasks for a computer scientist. -Asking questions. -This is so people can find new and easier ways to do things, and the way to approach problems with this information. -While computers can do some things easily (like simple math, or sorting out a list of names from A-to-Z), computers cannot answer questions when there is not enough information, or when there is no real answer. Also, computers may take too much time to finish long tasks. For example, it may take too long to find the shortest way through all of the towns in the USA - so instead a computer will try to make a close guess. A computer will answer these simpler questions much faster. -Answering the question. -Algorithms are a specific set of instructions or steps on how to complete a task. For example, a computer scientist wants to sort playing cards. There are many ways to sort them - by suits (diamonds, clubs, hearts, and spades) or by numbers (2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King, and Ace). By deciding on a set of steps to sort the cards, the scientist has created an algorithm. The scientist then needs to test whether this algorithm works. This shows how well and how fast the algorithm sorts cards. -A simple but slow algorithm is: pick up two cards and check whether they are sorted correctly. If they are not, reverse them. Then do it again with another two, and repeat them all until they are all sorted. This is called a bubble sort. This method will work, but it will take a very long time. -A better algorithm is: find the first card with the smallest suit and smallest number (2 of diamonds), and place it at the start. After this, look for the second card, and so on. This algorithm is much faster, and does not need much space. This algorithm is called a "selection sort". -Ada Lovelace wrote the first computer algorithm in 1843, for a computer that was never finished. Computers began during World War II. Computer science separated from the other sciences during the 1960s and 1970s. Now, computer science has its own methods, and has its own technical terms. It is related to electrical engineering, mathematics, and language science. -Computer science looks at the theoretical parts of computers. Computer engineering looks at the physical parts of computers (hardware). Software engineering looks at the use of computer programs and how to make them. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Computer.txt b/.github/workflows/data/simplewiki-100/Computer.txt deleted file mode 100644 index 1bdb838eb..000000000 --- a/.github/workflows/data/simplewiki-100/Computer.txt +++ /dev/null @@ -1,54 +0,0 @@ -A computer is a machine that uses electronics to input, process, store, and output data. Data is information such as numbers, words, and lists. Input of data means to read information from a keyboard, a storage device like a hard drive, or a sensor. The computer processes or changes the data by following the instructions in software programs. A computer program is a list of instructions the computer has to perform. Programs usually perform mathematical calculations, modify data, or move it around. The data is then saved on a storage device, shown on a display, or sent to another computer. Computers can be connected together to form a network such as the internet, allowing the computers to communicate with each other. -The processor of a computer is made from integrated circuits (chips) that contains many transistors. Most computers are digital, which means that they represent information using binary digits, or bits. Computers come in different shapes and sizes, depending on the brand, model, and purpose. They range from small computers, such as smartphones and laptops, to large computers, such as supercomputers. -Characteristics. -The two things that define a computer are that it responds to a specific instruction set in a well-defined manner, and that it can execute a stored list of instructions called a program. There are four main actions in a computer: inputting, storing, outputting and processing. -Modern computers can do billions of calculations in a second. Being able to calculate many times per second allows modern computers to multi-task, which means they can do many different tasks at the same time. Computers do many different jobs where automation is useful. Some examples are controlling traffic lights, vehicles, security systems, washing machines and digital televisions. -Computers can be designed to do almost anything with information. Computers are used to control large and small machines that, in the past, were controlled by humans. Most people have a personal computer at home or at work. They are used for things such as calculation, listening to music, reading, writing, or playing games. -Hardware. -Modern computers are electronic computer hardware. They do mathematical arithmetic very quickly, but computers do not really "think." They only follow the instructions in their software programs. The software uses the hardware when the user gives it instructions and produces useful outputs. -Controls. -Computers are controlled with user interfaces. Input devices which include keyboards, computer mice, buttons, and touch screens, etc.computer are electronic computer hardware -Programs. -Computer programs are designed or written by computer programmers. A few programmers write programs in the computer's own language, called machine code. Most programs are written using a programming language like C, C++, JavaScript. These programming languages are more like the language with which one talks and writes every day. The compiler converts the user's instructions into binary code (machine code) that the computer will understand and do what is needed. -History of computers. -First computer. -In 1837, Charles Babbage proposed the first general mechanical computer, the Analytical Engine. The Analytical Engine contained an Arithmetic Logic Unit, basic flow control, punched cards, and integrated memory. It is the first general-purpose computer concept that could be used for many things and not only one particular program. However, this computer was never built while Charles Babbage was alive, because he didn't have enough money. In 1910, Henry Babbage, Charles Babbage's youngest son, was able to finish a part of this machine and do basic calculations. -Before the computer era there were machines that could do the same thing over and over again, like a music box. But some people wanted to be able to tell their machine to do different things. For example, they wanted to tell the music box to play different music every time. This part of computer history is called the "history of programmable machines", which in simple words means "the history of machines that I can order to do different things if I know how to speak their language." -One of the first examples of programmable machines was built by Hero of Alexandria (c. 10–70 AD). He built a mechanical theater which performed a play lasting 10 minutes and was operated by a complex system of ropes and drums. These ropes and drums were the language of the machine- they told what the machine did and when. Some people argue that this is the first programmable machine. -Some people disagree on which early computer is programmable. Many say the "castle clock", an astronomical clock invented by Al-Jazari in 1206, is the first known programmable analog computer. The length of day and night could be adjusted every day in order to account for the changing lengths of day and night throughout the year. Some count this daily adjustment as computer programming. -Others say the first computer was made by Charles Babbage. Ada Lovelace is considered to be the first programmer. -The computing era. -At the end of the Middle Ages, people started thinking math and engineering were more important. In 1623, Wilhelm Schickard made a mechanical calculator. Other Europeans made more calculators after him. They were not modern computers because they could only add, subtract, and multiply- you could not change what they did to make them do something like play Tetris. Because of this, we say they were not programmable. Now engineers use computers to design and plan. -In 1801, Joseph Marie Jacquard used punched paper cards to tell his textile loom what kind of pattern to weave. He could use punch cards to tell the loom what to do, and he could change the punch cards, which means he could program the loom to weave the pattern he wanted. This means the loom was programmable. At the end of the 1800s Herman Hollerith invented the recording of data on a medium that could then be read by a machine, developing punched card data processing technology for the 1890 U.S. census. His tabulating machines read and summarized data stored on punched cards and they began use for government and commercial data processing. -Charles Babbage wanted to make a similar machine that could calculate. He called it "The Analytical Engine". Because Babbage did not have enough money and always changed his design when he had a better idea, he never built his Analytical Engine. -As time went on, computers were used more. People get bored easily doing the same thing over and over. Imagine spending your life writing things down on index cards, storing them, and then having to go find them again. The U.S. Census Bureau in 1890 had hundreds of people doing just that. It was expensive, and reports took a long time. Then an engineer worked out how to make machines do a lot of the work. Herman Hollerith invented a tabulating machine that would automatically add up information that the Census bureau collected. The Computing Tabulating Recording Corporation (which later became IBM) made his machines. They leased the machines instead of selling them. Makers of machines had long helped their users understand and repair them, and CTR's tech support was especially good. -Because of machines like this, new ways of talking to these machines were invented, and new types of machines were invented, and eventually the computer as we know it was born. -Analog and digital computers. -In the first half of the 20th century, scientists started using computers, mostly because scientists had a lot of math to figure out and wanted to spend more of their time thinking about science questions instead of spending hours adding numbers together. For example, if they had to launch a rocket ship, they needed to do a lot of math to make sure the rocket worked right. So they put together computers. These analog computers used analog circuits, which made them very hard to program. In the 1930s, they invented digital computers, and soon made them easier to program. However this is not the case as many consecutive attempts have been made to bring arithmetic logic to l3.Analog computers are mechanical or electronic devices which solve problems.Some are used to control machines as well. -High-scale computers. -Scientists figured out how to make and use digital computers in the 1930s to 1940s. Scientists made a lot of digital computers, and as they did, they figured out how to ask them the right sorts of questions to get the most out of them. Here are a few of the computers they built: -Several developers of ENIAC saw its problems. They invented a way to for a computer to remember what they had told it, and a way to change what it remembered. This is known as "stored program architecture" or von Neumann architecture. John von Neumann talked about this design in the paper "First Draft of a Report on the EDVAC", distributed in 1945. A number of projects to develop computers based on the stored-program architecture started around this time. The first of these was completed in Great Britain. The first to be demonstrated working was the Manchester Small-Scale Experimental Machine (SSEM or "Baby"), while the EDSAC, completed a year after SSEM, was the first really useful computer that used the stored program design. Shortly afterwards, the machine originally described by von Neumann's paper—EDVAC—was completed but was not ready for two years. -Nearly all modern computers use the stored-program architecture. It has become the main concept which defines a modern computer. The technologies used to build computers have changed since the 1940s, but many current computers still use the von-Neumann architecture. -In the 1950s computers were built out of mostly vacuum tubes. Transistors replaced vacuum tubes in the 1960s because they were smaller and cheaper. They also need less power and do not break down as much as vacuum tubes. In the 1970s, technologies were based on integrated circuits. Microprocessors, such as the Intel 4004 made computers smaller, cheaper, faster and more reliable. By the 1980s, microcontrollers became small and cheap enough to replace mechanical controls in things like washing machines. The 1980s also saw home computers and personal computers. With the evolution of the Internet, personal computers are becoming as common as the television and the telephone in the household. -In 2005 Nokia started to call some of its mobile phones (the N-series) "multimedia computers" and after the launch of the Apple iPhone in 2007, many are now starting to add the smartphone category among "real" computers. In 2008, if smartphones are included in the numbers of computers in the world, the biggest computer maker by units sold, was no longer Hewlett-Packard, but rather Nokia. -Kinds of computers. -There are many types of computers. Some include: -<templatestyles src="Div col/styles.css"/> -A "desktop computer" is a small machine that has a screen (which is not part of the computer). Most people keep them on top of a desk, which is why they are called "desktop computers." "Laptop computers" are computers small enough to fit on your lap. This makes them easy to carry around. Both laptops and desktops are called personal computers, because one person at a time uses them for things like playing music, surfing the web, or playing video games. -There are larger computers that can be used by multiple people at the same time. These are called "mainframes," and these computers do all the things that make things like the internet work. You can think of a personal computer like this: the personal computer is like your skin: you can see it, other people can see it, and through your skin you feel wind, water, air, and the rest of the world. A mainframe is more like your internal organs: you never see them, and you barely even think about them, but if they suddenly went missing, you would have some very big problems. -An embedded computer, also called an embedded system is a computer that does one thing and one thing only, and usually does it very well. For example, an alarm clock is an embedded computer. It tells the time. Unlike your personal computer, you cannot use your clock to play Tetris. Because of this, we say that embedded computers cannot be programmed because you cannot install more programs on your clock. Some mobile phones, automatic teller machines, microwave ovens, CD players and cars are operated by embedded computers. -All-in-one PC. -All-in-one computers are desktop computers that have all of the computer's inner mechanisms in the same case as the monitor. Apple has made several popular examples of all-in-one computers, such as the original Macintosh of the mid-1980s and the iMac of the late 1990s and 2000s. -Working methods. -Computers store data and the instructions as numbers, because computers can do things with numbers very quickly. These data are stored as binary symbols (1s and 0s). A 1 or a 0 symbol stored by a computer is called a bit, which comes from the words binary digit. Computers can use many bits together to represent instructions and the data that these instructions use. A list of instructions is called a program and is stored on the computer's hard disk. Computers work through the program by using a central processing unit, and they use fast memory called RAM (also known as Random Access Memory) as a space to store the instructions and data while they are doing this. When the computer wants to store the results of the program for later, it uses the hard disk because things stored on a hard disk can still be remembered after the computer is turned off. -An operating system tells the computer how to understand what jobs it has to do, how to do these jobs, and how to tell people the results. Millions of computers may be using the same operating system, while each computer can have its own application programs to do what its user needs. Using the same operating systems makes it easy to learn how to use computers for new things. A user who needs to use a computer for something different, can learn how to use a new application program. Some operating systems can have simple command lines or a fully user-friendly GUI. -The Internet. -One of the most important jobs that computers do for people is helping with communication. Communication is how people share information. Computers have helped people move forward in science, medicine, business, and learning, because they let experts from anywhere in the world work with each other and share information. They also let other people communicate with each other, do their jobs almost anywhere, learn about almost anything, or share their opinions with each other. The Internet is the thing that lets people communicate between their computers. The Internet also allows the computer user to play an Online game. -Computers and waste. -A computer is now almost always an electronic device. It usually contains materials that will become electronic waste when discarded. When a new computer is bought in some places, laws require that the cost of its waste management must also be paid for. This is called product stewardship. -Computers can become obsolete quickly, depending on what programs the user runs. Very often, they are thrown away within two or three years, because some newer programs require a more powerful computer. This makes the problem worse, so computer recycling happens a lot. Many projects try to send working computers to developing nations so they can be re-used and will not become waste as quickly, as most people do not need to run new programs. Some computer parts, such as hard drives, can break easily. When these parts end up in the landfill, they can put poisonous chemicals like lead into the ground-water. Hard drives can also contain secret information like credit card numbers. If the hard drive is not erased before being thrown away, an identity thief can get the information from the hard drive, even if the drive doesn't work, and use it, for example, to steal money from the previous owner's bank account. -Main hardware. -Computers come in different forms, but most of them have a common design. -A computer has several main parts. When comparing a computer to a human body, the CPU is like a brain. It does most of the thinking and tells the rest of the computer how to work. The CPU is on the Motherboard, which is like the skeleton. It provides the basis for where the other parts go, and carries the nerves that connect them to each other and the CPU. The motherboard is connected to a power supply, which provides electricity to the entire computer. The various drives (CD drive, floppy drive, and on many newer computers, USB flash drive) act like eyes, ears, and fingers, and allow the computer to read different types of storage, in the same way that a human can read different types of books. The hard drive is like a human's memory, and keeps track of all the data stored on the computer. Most computers have a sound card or another method of making sound, which is like vocal cords, or a voice box. Connected to the sound card are speakers, which are like a mouth, and are where the sound comes out. Computers might also have a graphics card, which helps the computer to create visual effects, such as 3D environments, or more realistic colors, and more powerful graphics cards can make more realistic or more advanced images, in the same way a well trained artist can. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Conceptual metaphor.txt b/.github/workflows/data/simplewiki-100/Conceptual metaphor.txt deleted file mode 100644 index 588ed10e1..000000000 --- a/.github/workflows/data/simplewiki-100/Conceptual metaphor.txt +++ /dev/null @@ -1,8 +0,0 @@ -A conceptual metaphor or cognitive metaphor is a metaphor which refers to one domain (group of ideas) in terms of another. For example, treating quantity in terms of direction: -The idea of a conceptual metaphor came from a book by George Lakoff and Mark Johnson in 1980: "Metaphors we live by". -"The most recent linguistic approach to literature is that of cognitive metaphor, which claims that metaphor is not a mode of language, but a mode of thought". Donald Freeman. -A convention is to write conceptual metaphors in small capital letters, e.g. time is money, with the target domain (idea being referred to) first, here "money," and the source domain (terms used to refer to it) second. -Political metaphors. -There are many more, enough to prove the importance of the metaphor in our lives. -Notes. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Contact network.txt b/.github/workflows/data/simplewiki-100/Contact network.txt deleted file mode 100644 index 0ec01f485..000000000 --- a/.github/workflows/data/simplewiki-100/Contact network.txt +++ /dev/null @@ -1,2 +0,0 @@ -Contact network may mean: -<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Continent.txt b/.github/workflows/data/simplewiki-100/Continent.txt deleted file mode 100644 index 16c846dac..000000000 --- a/.github/workflows/data/simplewiki-100/Continent.txt +++ /dev/null @@ -1,24 +0,0 @@ -A continent is a large area of the land on Earth that is joined. There are no strict rules for what land is considered a continent, but in general the Earth is known to have seven continents; these being, Africa, Antarctica, Asia, Europe, North America, South America and Oceania (or Australia). -Statistics. -<templatestyles src="Reflist/styles.css" /> -The most populous continent by population is Asia, followed by Africa. The third most populous continent is Europe. The fourth most populous is North America, and then South America. In sub-Saharan Africa, the largest age group are denarians (in their teens). In north Africa, the largest age group are vicenarian (in their twenties). In Europe, most people are tricenarian (in their thirties) or quadragenarian (in their forties). -Continents. -Geologists use the term "continent" to mean continental crust, a platform of metamorphic and igneous rock, largely of granitic composition. Continental crust is less dense and much thicker than oceanic crust, which is why it "floats" higher than oceanic crust on the underlying mantle. This explains why the continents form high platforms surrounded by deep ocean basins. -Australia. -Some sources say that Australia is one of the seven continents. Others say that Australia is part of a larger continent, such as Australasia, or Oceania. Oceania is a region which includes Australia, New Zealand and the Pacific Islands. Australasia includes at least all countries on the Australian continental plate. This includes the islands of New Guinea, Tasmania, New Zealand and a number of smaller islands. It is on the south-eastern side of the Wallace Line, with distinct differences in its biology from the Asian side of the line. -"It includes all the islands of the Malay Archipelago... as well as the various groups of islands in the Pacific. The term has been used in very different senses". -Zealandia. -Zealandia is an almost entirely submerged land mass, and 93% of it still remains under water. Zealandia may have broken off the Australian plate between 85 and 130 million years ago. -North and South America. -North America and South America together are often described as one continent, "the Americas", or simply "America". This has the advantage of including Central America and the Caribbean islands. Otherwise, Central America is counted as part of North America. -Eurasia. -Eurasia is not really an alternative, rather it is a recognition that the landmasses of Europe and Asia are continuous, and some of its largest countries are in both regions. Russia extends from eastern Europe to the far east of Asia without a break. The Ural Mountains, which run roughly north–south, are the traditional dividing-line between Europe and Asia. For many purposes it is convenient to consider the great landmass as a single continent, Eurasia. -When British people talk about "the Continent" (or "Continental" things) they mean the European mainland. This meaning is not used as much as it used to be, but is still seen in phrases like "Continental breakfast" (rolls with cheese, jam etc. as distinct from an "English breakfast" which is a cooked breakfast). -Continents not only move but also sometimes move against each other. The Indian subcontinent has been colliding with the Eurasian continent for a while now. As these continents push against each other, they buckle and bend. Because of this, the Himalaya Mountains, with Mount Everest, are still being built up today. -Antarctica. -Antarctica is Earth's fifth largest continent. Antarctica, the coldest place on Earth, covers Earth's South Pole. It has a surface area of ~13.6 –14 million km2: this is about 1.4 times the size of Europe, The continent only has two seasons, a brief summer and a long winter. Antarctica is a cold desert. It does not rain or snow much there. Ever since its discovery in 1812, Antarctica was a great challenge for explorers. Despite being nearly completely covered by a thick layer of ice, Antarctica has a range of aquatic and terrestrial environments. -Origin of continents. -A craton is an old and stable part of the continental lithosphere. It is the Earth's two topmost layers, the crust and the uppermost mantle. -There are various hypotheses of how cratons have been formed.. Continents may have been formed by giant meteorite impacts in the first billion years of Earth's existence. The question is not yet settled. What is clear is that the cratons are very old, and are the basis for the continents we see today. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Cooking.txt b/.github/workflows/data/simplewiki-100/Cooking.txt deleted file mode 100644 index 73247a957..000000000 --- a/.github/workflows/data/simplewiki-100/Cooking.txt +++ /dev/null @@ -1,9 +0,0 @@ -Cooking is a process to make food ready to eat by heating it. -Methods. -Cooking is often done in a kitchen using a stove or an oven. It can also be done over a fire (for example, over a campfire or on a barbecue). -The heat for cooking can be made in different ways. It can be from an open fire that burns wood or charcoal. It can be on a stove or in an oven that uses propane, natural gas, or electricity. -There are several different ways to cook food. Boiling cooks food in hot water. Frying (deep or shallow) cooks food in hot butter, fat or oil. Baking and roasting cook food by surrounding it with hot air. Grilling means cooking food on a metal grill that has heat under it. -People often cook meat by boiling, roasting, frying, or grilling it. Some foods such as bread or pastries are usually baked. -Usually food is cooked in some kind of pot or pan. Sometimes people cook food by putting it directly into the fire, or by wrapping the food in leaves before they put it into the fire. -Cooks. -A person whose job it is to cook food may be called a "cook" or a "chef". The word "cooker" means a machine or tool that a cook might use to cook food. Rice cookers and pressure cookers are examples. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Cosmology.txt b/.github/workflows/data/simplewiki-100/Cosmology.txt deleted file mode 100644 index b682ee64c..000000000 --- a/.github/workflows/data/simplewiki-100/Cosmology.txt +++ /dev/null @@ -1,12 +0,0 @@ -Cosmology is the branch of astronomy that deals with the universe. -NASA defines cosmology as "The study of the structure and changes in the present universe". Another definition of cosmology is "the study of the universe, and humanity's place in it". -Modern cosmology is dominated by the Big Bang theory, which brings together observational astronomy and particle physics. -Though the word "cosmology" is recent (first used in 1730 in Christian Wolff's "Cosmologia Generalis"), the study of the universe has a long history. -History. -Until the Renaissance people thought the universe was only the planets up to Saturn, and stars. With the invention of the telescope, we could see more of the universe. Early in the 20th century, astronomers thought the Milky Way was the entire universe. Later, with astrophotography and spectroscopy, astronomers (for example Edwin Hubble) showed that the Milky Way was only one of many galaxies. -Modern cosmology is considered to have started in 1917 with the final paper of Albert Einstein's theory of general relativity. This made physicists realize that the universe changed. When a scientific discipline begins to change an idea that is believed by many people, it is known as a paradigm shift. Many scientists debated if there were other galaxies. The debate ended when Edwin Hubble found Cepheid Variables in the Andromeda Galaxy in 1926. -The Big Bang model was then proposed by Belgian priest, Georges Lemaître in 1927. This was supported by Edwin Hubble's discovery of the redshift in 1929. Later the discovery of cosmic microwave background radiation was made. This was found by Arno Penzias and Robert Woodrow Wilson in 1964. -All of these discoveries have been supported in the 21st century. Some more observations of the cosmic microwave background radiation were found by the COBE, WMAP, and Planck satellites. Some more observations of the redshift were found by the 2dfGRS and SDSS. An astronomical survey looks at a place in space. A redshift survey is a survey that looks for redshifts. -On 1 December 2014, at the "Planck 2014" meeting in Ferrara, Italy, astronomers reported that the universe is 13.8 billion years old and is composed of 4.9% regular matter, 26.6% dark matter and 68.5% dark energy. -According to Dr Robert Massey, deputy director of the Royal Astronomical Society, the evidence for a rethink of what has been a central plank of astronomy is growing. -"This is the seventh large structure discovered in the universe that contradicts the idea that the cosmos is smooth on the largest scales. If these structures are real, then it's definitely food for thought for cosmologists and the accepted thinking on how the universe has evolved over time," he said. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Countries.txt b/.github/workflows/data/simplewiki-100/Countries.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-100/Country.txt b/.github/workflows/data/simplewiki-100/Country.txt deleted file mode 100644 index 69d65f9f2..000000000 --- a/.github/workflows/data/simplewiki-100/Country.txt +++ /dev/null @@ -1,19 +0,0 @@ -A country is a distinct territory with defined borders, boundaries, people and government. Most countries are sovereign states while others make up one part of a larger state. The people that live in a country are referred to as a nation. The government that runs the country is called the state. Australia, New Zealand, United Kingdom, United States, Canada and other countries. -Number of countries. -There is no universally accepted answer as to how many countries in the world there actually are, however the minimum answer is 195, though there are 193 United Nations members. -This can be developed on even further by adding the constituent countries of the United Kingdom, The Kingdom of the Netherlands and the Kingdom of Denmark which could add anywhere from three to eleven more countries. -There are multiple organisations that have their own lists of countries, one example being the Travellers Century Club which recognises 330 countries as of January 2022. -Disputed countries. -Palestine is classified as a country. However, there is an ongoing dispute over Palestine’s independence with Israel. -There are a number of disputed areas that have declared independence from their parent state and receive limited recognition. For example,  Kosovo,  Transnistria,  Abkhazia,  South Ossetia,  Northern Cyprus,  Chechnya,  Tibet and  Somaliland. These are just some of the many examples of territories with limited to no recognition that are sometimes classed as countries. -There is a lot of controversy surrounding the above examples and quite often any of these territories may be counted as countries purely based on opinion. If all of the above were added the list of U.N members there could be anything up to 211 countries. -There are, however, many more territories with unique political circumstances that could also be counted. -Depending on how loosely the dictionary definition for the word country is used there could be many more than 193 countries in the world. The matter is purely subjective depending on varying opinions. -Constituent country. -Constituent country is a term sometimes used, usually by official institutions, in contexts in which a number of countries are part of a sovereign state. The Organisation for Economic Co-operation and Development (OECD) has used the term referring to the former Yugoslavia, and the European institutions like the Council of Europe often use it in reference to the European Union. -Territorial dispute. -A disputed territory is that territory whose sovereignty is jealously desired by two or more countries. Usually the administration of the territory is carried out by one of the countries that claims sovereignty, while the other country does not recognize the sovereignty over the territory of the other country. This does not usually happen in land or sea areas on which none possesses effective control, such as Antarctica, or only partially -Nation-state. -A nation-state is a sovereign country in which the majority of citizens are somewhat homogeneous in terms of culture,religion,language, ethnicity, etc. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Creativity.txt b/.github/workflows/data/simplewiki-100/Creativity.txt deleted file mode 100644 index 2c9e7f5f7..000000000 --- a/.github/workflows/data/simplewiki-100/Creativity.txt +++ /dev/null @@ -1,5 +0,0 @@ -Creativity is the ability of a person or group to make something new and useful or valuable, or the process of making something new and useful or valuable. It happens in all areas of life - science, art, literature and music. -As a personal ability it is difficult to measure. The reason is that we don't understand the mental processes that help some people be more creative than others. Judging who and what is creative is also controversial. Some people say only things that are historically new are creative, while other people say that if it is new for the creator and the people around them, then it is also creativity. -Some think that creativity is an important thing that makes humans different from apes. Others recognize that even apes, other primates, other mammals, and some birds adapt to survive by being creative (for example - primates using tools). Liane Gabora believes that all culture comes from creativity, not imitation. Therefore, these people say, human science should focus on it (pay special attention to it): Ethics for example would focus on finding creative solutions to ethical dilemmas. Politics would focus on the political virtues that need some creativity. Imitation would not be the focus of education. Linguistics might be more interested in how new words are created by culture, rather than in how existing ones are used in grammar. -Intellectual interests (recognized as intellectual rights or intellectual property in the law) are a way to reward creativity in law, but they do not always work very well. A good example is copyright which is supposed to pay writers and artists, but may only pay lawyers to make (imitative) arguments in court. -Creativity is a central question in economics, where it is known as ingenuity (the ability to come up with new ideas) or individual capital - capacities that individuals have, that do not arise from simple imitation of what is known already. This is separate from the instructional capital that might try to capture some of that in a patent or training system that helps others do what the individual leader or founder of the system can do. In urban economics there are various ways to measure creativity - the Bohemian Index and Gay Index are two attempts to do this accurately and predict the economic growth of cities based on creativity. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Creator.txt b/.github/workflows/data/simplewiki-100/Creator.txt deleted file mode 100644 index b7d44ec0f..000000000 --- a/.github/workflows/data/simplewiki-100/Creator.txt +++ /dev/null @@ -1,3 +0,0 @@ -A creator is a person who creates something. -In some religions (Judaism, Christianity, Islam) God (or Allah meaning the God in Arabic) is the most important and original creator of the whole universe - including Man who is made "in his image" (see Genesis) to observe it and control it like God. The idea that anything that a person is creating, like an idea, can be owned as property comes from the ethical traditions and legal codes that came from these religions. -In other traditions (Buddhism, Native American mythology) anyone has this potential for creating, and can become part of the greater creating of the universe. Stewardship of home, land and all of Earth is a test for participating in this, or just good sense. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Crime.txt b/.github/workflows/data/simplewiki-100/Crime.txt deleted file mode 100644 index b5c0da658..000000000 --- a/.github/workflows/data/simplewiki-100/Crime.txt +++ /dev/null @@ -1,22 +0,0 @@ -A crime (or misdemeanor or felony) is an act done by a person which is against the laws of a country or region. A person who does this is called a criminal. -The basic idea of what things are called "crimes" is that they are thought to be things that might cause a problem for another person. Things like killing another person, injuring another person, or stealing from another person are crimes in most countries. Also, it can be a crime to have or sell contraband such as guns or illegal drugs. The latter two often fall under the category of victimless crime -When some criminals make money from crime, they try to stop the police finding out where the money came from by money laundering. Men and boys commit many more crimes than women and girls. -Etymology. -The word "crime" is derived from the Latin root "cernō", meaning "I decide, I give judgment". Originally the Latin word "crīmen" meant "charge" or "cry of distress." The Ancient Greek word κρίμα, "krima", from which the Latin cognate derives, typically referred to an intellectual mistake or an offense against the community, rather than a private or moral wrong. -In 13th century English "crime" meant "sinfulness", according to the Online Etymology Dictionary. It was probably brought to England as Old French "crimne" (12th century form of Modern French "crime"), from Latin "crimen" (in the genitive case: "criminis"). In Latin, "crimen" could have signified any one of the following: "charge, indictment, accusation; crime, fault, offense". -Definition. -England and Wales. -Whether a given act or omission constitutes a crime does not depend on the nature of that act or omission; it depends on the nature of the legal consequences that may follow it. An act or omission is a crime if it is capable of being followed by what are called criminal proceedings. -Scotland. -For the purpose of section 243 of the Trade Union and Labour Relations (Consolidation) Act 1992, a crime means an offence punishable on indictment, or an offence punishable on summary conviction, and for the commission of which the offender is liable under the statute making the offence punishable to be imprisoned either absolutely or at the discretion of the court as an alternative for some other punishment. -Sociology. -A normative definition views crime as deviant behavior that violates prevailing norms – cultural standards prescribing how humans ought to behave normally. -Levels of crime. -There are various levels of crimes. In some jurisdictions they are: -Different countries have different ideas of what things are crimes, and which ones are the worst. Some things that are crimes in one country are not crimes in other countries. Many countries get their ideas of what things are crimes from religions or controversial events which cause a law to be quickly created. For example, a religious Taboo might say eating a particular food is a crime. When automobiles became numerous, they killed or hurt many people in road accidents, so new laws were made for them. -In many countries, if people say they made or wrote a book, movie, song, or Web page that they did not really make or write, it is a crime against copyright laws. In many countries, helping to grow, make, move, or sell illegal drugs is a crime. -In most countries, police try to stop crimes and to find criminals. When the police find someone who they think might be a criminal, they usually hold the person in a jail. Then, usually, a court or a judge decides if the person really did a crime. If the court or judge decides that the person really did it, then he or she might have to pay a fine or go to prison. Sometimes the judge might decide that the criminal should be executed (killed). This is called Capital punishment (or the "Death Penalty"). There are countries in the world that execute criminals, and others that do not. -In many countries, two conditions must exist for an act to be thought of as a crime: -Both must be present for the act to be thought of as a crime. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Crust.txt b/.github/workflows/data/simplewiki-100/Crust.txt deleted file mode 100644 index 00a3b9f90..000000000 --- a/.github/workflows/data/simplewiki-100/Crust.txt +++ /dev/null @@ -1,3 +0,0 @@ -Crust is a piece of bread where the edge where it is harder and darker. -Crust can also mean: -<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Cup.txt b/.github/workflows/data/simplewiki-100/Cup.txt deleted file mode 100644 index 58c3a1fed..000000000 --- a/.github/workflows/data/simplewiki-100/Cup.txt +++ /dev/null @@ -1,3 +0,0 @@ -A cup is any kind of container used for holding liquid and drinking. These include: -Cup may also mean: -<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Farming.txt b/.github/workflows/data/simplewiki-100/Farming.txt deleted file mode 100644 index 0eed17061..000000000 --- a/.github/workflows/data/simplewiki-100/Farming.txt +++ /dev/null @@ -1,28 +0,0 @@ -Farming is growing crops and keeping animals for food and raw materials. Farming is a Significant part of agriculture. -History. -Farming started thousands of years ago, but no one knows for sure how old it is. The development of farming gave rise to the Neolithic Revolution as people gave up nomadic hunting and became settlers in cities. -Farming and domestication probably started in the Fertile Crescent (the Nile Valley, the Levant and Mesopotamia). The area called Fertile Crescent is now in the countries of Iraq, Syria, Turkey, Jordan, Lebanon, Israel, and Egypt. Wheat and barley are some of the first crops people grew. -Cotton was domesticated in Peru by 4200 BC. -Livestock including horses, cattle, sheep, and goats were taken to the Americas, from the Old World. The first of those horses, came with the Spanish conquistadors (or soldiers and explorers) in the 1490s. Moving those cattle, sheep, goats and horses, were part of the Columbian Exchange. -People probably started agriculture by planting a few crops, but still gathered many foods from the wild. People may have started farming because the weather and soil began to change. Farming can feed many more people than hunter-gatherers can feed on the same amount of land. -This allowed the human population to grow to such large numbers as there are today. -Types. -Many people still live by subsistence farming, on a small farm. They can only grow enough food to feed the farmer, his family, and his animals. The yield is the amount of food grown on a given amount of land, and it is often low. This is because subsistence farmers are generally less educated, and they have less money to buy equipment. Drought and other problems sometimes cause famines. Where yields are low, deforestation can provide new land to grow more food. This provides more nutrition for the farmer's family, but can be bad for the country and the surrounding environment over many years. -In some countries, farms are often fewer and larger. During the 20th century they have become more productive because farmers are able to grow better varieties of plants, use more fertilizer, use more water, and more easily control weeds and pests. Many farms also use machines, so fewer people can farm more land. There are fewer farmers in rich countries, but the farmers are able to grow more. -This kind of intensive agriculture comes with its own set of problems. Farmers use a lot of chemical fertilizers, pesticides (chemicals that kill bugs), and herbicides (chemicals that kill weeds). These chemicals can pollute the soil or the water. They can also create bugs and weeds that are more resistant to the chemicals, causing outbreaks of these pests. The soil can be damaged by erosion (blowing or washing away), salt builddup, or loss of structure. Irrigation (adding water from rivers) can pollute water and lower the water table. These problems have all got solutions, and modern young farmers usually have a good technical education. -Farmers select plants with better yield, taste, and nutritional value. They also choose plants that can survive plant disease and drought, and are easier to harvest. Centuries of artificial selection and breeding have changed crop plants. The crops produce better yield. Fertilizers, chemical pest control, and irrigation all help. -Some plants are improved with genetic engineering. One example is modifying the plant to resist herbicides. -Livestock. -Farms may also keep animals. That is called animal husbandry. If they are used to make meat for people to eat, that is livestock production. Non-meat animals, such as milk cows and egg-producing chickens, are kept for their produce. "Produce" here means their eggs and milk, which are sold by the farm, usually in markets. Large animals need grassland of some kind for grazing. What they need depends on the animals. Goats eat a much wider range of plants than cows. In some parts of the world, that makes goats a more sensible choice for a farmer than cows. -Food. -It is important for there to be enough food for everyone. The food must also be safe and good. People say it is not always safe, because it contains some chemicals. Other people say intensive agriculture is damaging the environment. For this reason, there are several types of agriculture. -Agricultural policy means the goals and methods of agricultural production. Common goals of policy include the quality, amount, and safety of food. -Problems. -There are some serious problems that people face trying to grow food today. -These include: -There are also difficulties with the distribution of food: -Crops. -In produced weight, these crops are the most important (global production in metric tonnes): -The figure for sugarcane is rather deceptive. It omits sugar beet, but includes the weight of the woody stalk. Most of the plants which produce food are in the grass family Poaceae. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Maize.txt b/.github/workflows/data/simplewiki-100/Maize.txt deleted file mode 100644 index 791bd9341..000000000 --- a/.github/workflows/data/simplewiki-100/Maize.txt +++ /dev/null @@ -1,8 +0,0 @@ -Maize or Indian corn (called corn in some countries) is "Zea mays", a member of the grass family "Poaceae". It is a cereal grain which was first grown by people in ancient Central America. Approximately 1 billion tonnes are harvested every year. However, little of this maize is eaten directly by humans. Most is used to make corn ethanol, animal feed and other maize products, such as corn starch and corn syrup. -Maize is a leafy stalk whose kernels have seeds inside. It is an angiosperm, which means that its seeds are enclosed inside a fruit or shell. It is has long been a staple food by many people in Mexico, Central and South America and parts of Africa. In Europe and the rest of North America, maize is grown mostly for use as animal feed. In Canada and the United States, maize is commonly referred to as "corn". -Centuries of cross breeding have produced larger plants, and specialized varieties. Corn has become an important ingredient in American foods through the use of corn starch. People have long eaten sweet corn and popcorn with little processing, and other kinds after processing into flour for making cornbread, tortillas, and other artificial foods. -Maize has been a fruitful model organism for research in genetics for many years: see Barbara McClintock. Research has shown that artificial selection developed maize from a Mexican plant called Teosinte. -The genus "Zea". -There are five species and many subspecies in the genus. They are all plants similar to the cultivated maize, with less developed cobs. The wild ones are sometimes called teosintes, and they are all native to Mesoamerica. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Native American.txt b/.github/workflows/data/simplewiki-100/Native American.txt deleted file mode 100644 index a2fba51a1..000000000 --- a/.github/workflows/data/simplewiki-100/Native American.txt +++ /dev/null @@ -1,42 +0,0 @@ -Native Americans (also called Aboriginal Americans, American Indians, Amerindians, or Indigenous peoples of the Americas) are the indigenous peoples and their descendants, who were in the Americas before Europeans arrived. -Name. -The people are sometimes called Indians, but that may be confusing, because it is the same word used for people from India. When Christopher Columbus explored the area, he did not know about the Americas. He was in the Caribbean but thought he was in the East Indies and so he called the people Indians. Today, some think that it is racism to use Indian for a Native American. -There are different Native American tribes, with many different languages. Some tribes were hunter-gatherers who moved from place to place. Others lived in one place and built cities and kingdoms. Many Native Americans died after the European settlers came to the Americas. One reason is that diseases came with the Europeans but were new to the Native Americans. There were also battles with the Europeans. Many native people were hurt, killed, or forced to leave their homes by settlers, who took their lands. -Origins. -The ancestors of Native Americans came to the Americas from Asia. Some of them may have come to the Americas 15,000 years ago, when Alaska was connected to Siberia by the Bering land bridge. -The earliest people in the Americas came from Siberia when there was an ice bridge across the Bering Strait. The cold but mainly grassy plain, called Beringia, was a land bridge that connected Siberia with Canada. It is believed that a few thousand people arrived in Beringia from eastern Siberia during the Last Glacial Maximum and that they moved into the Americas sometime after 16,500 years before the present (BP). That would have occurred as the American glaciers blocking the way southward melted but before the land bridge was covered by the sea about 11,000 years BP. -Before the European colonization of the Americas and Russian expansion to the Russian Far East, Beringia was inhabited by the Yupik peoples on both sides of the straits. The culture remains in the region today, with others. In 2012, the governments of Russia and the United States announced a plan to formally establish "a transboundary area of shared Beringian heritage." Among other things, the agreement would establish close ties between the Bering Land Bridge National Preserve and the Cape Krusenstern National Monument in the United States, and Beringia National Park in Russia. Native Americans were divided into many small nations that are called called First Nations in Canada and tribes in the United States. -Culture. -The Native American tribes have their own cultures, which can be grouped together by region. For example, the tribes living in Mesoamerica have similar cultures. -Food. -Native Americans ate various food depending on where they lived. Native Americans from Mesoamerica introduced vanilla, avocados and chocolate to the world. -Religion. -Before Europeans came, the Native Americans practiced many different religions. Each tribe had its own different beliefs. Many Native Americans now practice Christianity, a religion that was brought to the Americas by Europeans. Others, meanwhile, still practice their own religions. -Languages. -Native Americans speak over 1000 different languages. Some of these languages had writing systems before Europeans came. Many of these languages are endangered because more people speak European languages and do not not teach their children Native American languages. -Music. -Native Americans make musical instruments using the things around them. -Art. -Native Americans made many different kinds of art. -Today. -North America. -There are now more than three million Native Americans in Canada and the United States combined. About 51 million more Native Americans live in Latin America. Many Native Americans still speak native languages and have their own cultural practices, and others have adopted parts of Western culture. Many Native Americans still face problems with racism. -United States. -According to the 2010 United States Census, 0.9% of Americans say that they are Native American, 2.9 million people, and 0.8% of Americans say they are both Native American and something else. They are not evenly spread out through the United States. About a third of the people in Alaska are Native Alaskan. and about a sixth of the people in Oklahoma are Native American. -In the United States, most Native Americans live in cities. About 28% of Native Americans live on Indian reservations. Many Native Americans are poor, and 24% are extremely poor. The history of violence against Native Americans still persists in higher rates of violence against Native Americans than whites. -Mexico. -Many Mexicans are of Native American or mestizo ancestry. Mexico has the largest and most diverse Native American population in Latin America. -Canada. -In the 2016 census, more than 1.67 million people in Canada identified as Indigenous, making them 4.9 percent of Canada’s population. -Central America. -Guatemala. -About 40% of the people of Guatemala identify as Native American. Many indigenous groups in the country are descendants of the Maya. Many Native Americans in Guatemala are poor. Many of them have left the country to find better jobs elsewhere. -South America. -Bolivia. -Most people in Bolivia belong to indigenous groups. Many of them are Aymara and Quechua. -Peru. -Peru has a large indigenous population, around 80% of the country's population identifying as indigenous or mestizo. -Indigenous activism. -In the later half of the 20th century, many Native Americans protested the unfair treatment that they experienced from the societies in which they lived. Some Native Americans have become famous in politics. For example, an Aymara man. Evo Morales was elected as president of Bolivia in 2005. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-100/Time Cube.txt b/.github/workflows/data/simplewiki-100/Time Cube.txt deleted file mode 100644 index 9cfdfcd6e..000000000 --- a/.github/workflows/data/simplewiki-100/Time Cube.txt +++ /dev/null @@ -1,6 +0,0 @@ -Time Cube was a personal website created in 1997 by Otis Eugene Ray. On that website, Ray explained his theory of everything, known as "Time Cube". It described the planet Earth as having a cubic symmetry, and time as rotating four "corners". He also said that all of modern physics is wrong. Scientists reject these ideas, saying that they make no sense and cannot be tested. -The Time Cube website was written in an angry and hateful voice. On his site, Ray said that not believing in Time Cube would be "stupid and evil". Some of the comments were racist and discriminatory, especially against black people and Jews. There were also many comments against gay people. Many people found the site to be difficult to understand. -Ray spoke about Time Cube at the Massachusetts Institute of Technology in January 2002. At MIT, a professor tried to cancel the lecture before it took place. Ray believed this is proof of a conspiracy to keep information about Time Cube hidden. Ray also spoke about Time Cube at the Georgia Institute of Technology in April 2005. -Otis Eugene Ray died on March 18, 2015. He was 87 years old. The website went down in August 2015. It was last archived by the Wayback Machine on January 12, 2016. -References. -<templatestyles src="Reflist/styles.css" /> \ No newline at end of file From 28b37e823a223e75609b9f331844a2adbba99942 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Fri, 10 Oct 2025 10:28:31 +0200 Subject: [PATCH 065/126] Permissions/contents : read -> write --- .github/workflows/build_dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_dev.yml b/.github/workflows/build_dev.yml index e0ed49ec9..a0f9ec8f0 100644 --- a/.github/workflows/build_dev.yml +++ b/.github/workflows/build_dev.yml @@ -18,7 +18,7 @@ jobs: build-and-push-dev-image: runs-on: ubuntu-latest permissions: - contents: read + contents: write packages: write attestations: write steps: From ea08df2b1608138b3fd16fb55ca943e170120259 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Fri, 10 Oct 2025 10:35:15 +0200 Subject: [PATCH 066/126] Create release always, just to test --- .github/workflows/build_dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_dev.yml b/.github/workflows/build_dev.yml index a0f9ec8f0..c69286825 100644 --- a/.github/workflows/build_dev.yml +++ b/.github/workflows/build_dev.yml @@ -71,7 +71,7 @@ jobs: cache-to: type=gha,mode=max - name: Create development release (nightly only) - if: github.event_name == 'schedule' + #if: github.event_name == 'schedule' uses: ncipollo/release-action@v1 with: tag: ${{ steps.dev_version.outputs.version }} From 1ce74fc29828835a73968d4a5a68fb27ad03914b Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Fri, 10 Oct 2025 10:41:49 +0200 Subject: [PATCH 067/126] Create release always, just to test (again) --- .github/workflows/build_dev.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_dev.yml b/.github/workflows/build_dev.yml index c69286825..8b8c5c668 100644 --- a/.github/workflows/build_dev.yml +++ b/.github/workflows/build_dev.yml @@ -104,7 +104,7 @@ jobs: cleanup-old-dev-releases: runs-on: ubuntu-latest - if: github.event_name == 'schedule' + #if: github.event_name == 'schedule' needs: [build-and-push-dev-image] permissions: contents: write @@ -207,7 +207,7 @@ jobs: cache-to: type=gha,mode=max - name: Create development release (nightly only) - if: github.event_name == 'schedule' + #if: github.event_name == 'schedule' uses: ncipollo/release-action@v1 with: tag: ${{ steps.dev_version.outputs.version }} From aa2a8940eb2d55acd56b01810d25715025392407 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Fri, 10 Oct 2025 10:43:52 +0200 Subject: [PATCH 068/126] Permissions/contents (ray) : read -> write --- .github/workflows/build_dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_dev.yml b/.github/workflows/build_dev.yml index 8b8c5c668..126a0c1d0 100644 --- a/.github/workflows/build_dev.yml +++ b/.github/workflows/build_dev.yml @@ -153,7 +153,7 @@ jobs: build-and-push-dev-image-ray: runs-on: ubuntu-latest permissions: - contents: read + contents: write packages: write attestations: write steps: From 372112b506d36549bf902105c8e88c12f98a9875 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:17:20 +0200 Subject: [PATCH 069/126] Version: add "-ray" postfix --- .github/workflows/build_dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_dev.yml b/.github/workflows/build_dev.yml index 126a0c1d0..ad342efd8 100644 --- a/.github/workflows/build_dev.yml +++ b/.github/workflows/build_dev.yml @@ -182,7 +182,7 @@ jobs: else VERSION="dev-${DATE}-${SHORT_SHA}" fi - echo "version=${VERSION}" >> $GITHUB_OUTPUT + echo "version=${VERSION}-ray" >> $GITHUB_OUTPUT - name: Extract metadata (tags, labels) for Docker id: meta From be759df23550c680b6f5dce9ad3db553b1d5c7ef Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:21:51 +0200 Subject: [PATCH 070/126] Restore conditions --- .github/workflows/build_dev.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_dev.yml b/.github/workflows/build_dev.yml index ad342efd8..f5423fee6 100644 --- a/.github/workflows/build_dev.yml +++ b/.github/workflows/build_dev.yml @@ -71,7 +71,7 @@ jobs: cache-to: type=gha,mode=max - name: Create development release (nightly only) - #if: github.event_name == 'schedule' + if: github.event_name == 'schedule' uses: ncipollo/release-action@v1 with: tag: ${{ steps.dev_version.outputs.version }} @@ -104,7 +104,7 @@ jobs: cleanup-old-dev-releases: runs-on: ubuntu-latest - #if: github.event_name == 'schedule' + if: github.event_name == 'schedule' needs: [build-and-push-dev-image] permissions: contents: write @@ -207,7 +207,7 @@ jobs: cache-to: type=gha,mode=max - name: Create development release (nightly only) - #if: github.event_name == 'schedule' + if: github.event_name == 'schedule' uses: ncipollo/release-action@v1 with: tag: ${{ steps.dev_version.outputs.version }} From 7fbe0827167edacb8439f64dd1ca1d5d4b8006ff Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:26:08 +0200 Subject: [PATCH 071/126] Rename --- .github/workflows/{tests.yaml => smoke_test.yaml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .github/workflows/{tests.yaml => smoke_test.yaml} (99%) diff --git a/.github/workflows/tests.yaml b/.github/workflows/smoke_test.yaml similarity index 99% rename from .github/workflows/tests.yaml rename to .github/workflows/smoke_test.yaml index 962065bf4..8f85599ff 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/smoke_test.yaml @@ -1,4 +1,4 @@ -name: tests +name: Smoke test on: push: From bc60e890944fa41cc6ed48ab593d47bd6d8089d8 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:35:52 +0200 Subject: [PATCH 072/126] Cleanup --- .github/workflows/mini/.env | 2 +- .github/workflows/mini/wait_for_healthy.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/mini/.env b/.github/workflows/mini/.env index d7d00ca11..fa8dac8c0 100644 --- a/.github/workflows/mini/.env +++ b/.github/workflows/mini/.env @@ -24,7 +24,7 @@ VLM_MODEL=HuggingFaceTB/SmolVLM-Instruct CONTEXTUAL_RETRIEVAL=false # EMBEDDER -EMBEDDER_MODEL_NAME=ibm-granite/granite-embedding-small-english-r2 #Qwen/Qwen3-Embedding-0.6B # or any other embedder from huggingface compatible with vllm +EMBEDDER_MODEL_NAME=ibm-granite/granite-embedding-small-english-r2 EMBEDDER_BASE_URL=http://vllm:8000/v1 # EMBEDDER_API_KEY=EMPTY diff --git a/.github/workflows/mini/wait_for_healthy.sh b/.github/workflows/mini/wait_for_healthy.sh index 9e3c5540f..798f6a5a3 100755 --- a/.github/workflows/mini/wait_for_healthy.sh +++ b/.github/workflows/mini/wait_for_healthy.sh @@ -7,7 +7,7 @@ ADDR=`docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end} while ! curl -fs "${ADDR}:${PORT}/health" >/dev/null 2>&1; do if docker ps --format '{{.Names}}' | grep -qw "$NAME"; then - echo "Container '$NAME' is running but not helthy yet ..." + echo "Container '$NAME' is running but not healthy yet ..." else echo "Container '$NAME' has stopped or was never started." exit 1 From d68a7addc0689fe6be272b24487e90591b579f7c Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:36:35 +0200 Subject: [PATCH 073/126] Don't need extended kv cache? --- .github/workflows/mini/docker-compose.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/mini/docker-compose.yaml b/.github/workflows/mini/docker-compose.yaml index 80a8ba894..4878ec92d 100644 --- a/.github/workflows/mini/docker-compose.yaml +++ b/.github/workflows/mini/docker-compose.yaml @@ -115,9 +115,8 @@ services: image: openrag-vllm-openai-cpu deploy: {} environment: - - VLLM_CPU_KVCACHE_SPACE=8 + # - VLLM_CPU_KVCACHE_SPACE=8 # Default value isn't sufficient for full context length - VLLM_USE_V1=0 # for ibm-granite/granite-embedding-small-english-r2 - # Default value isn't sufficient for full context length command: > --model ${EMBEDDER_MODEL_NAME:-jinaai/jina-embeddings-v3} --trust-remote-code From 85dedbb1b244b3f22ab4219d8a1b377d5dfdf42b Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:37:55 +0200 Subject: [PATCH 074/126] Restore reranker --- .github/workflows/mini/docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mini/docker-compose.yaml b/.github/workflows/mini/docker-compose.yaml index 4878ec92d..06db63a60 100644 --- a/.github/workflows/mini/docker-compose.yaml +++ b/.github/workflows/mini/docker-compose.yaml @@ -1,6 +1,6 @@ include: - vdb/milvus.yaml -# - extern/infinity.yaml + - extern/infinity.yaml x-openrag: &openrag_template #image: ghcr.io/linagora/openrag:dev-latest From 28824f0c82f0c4ea14789e93102e84541799b494 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:58:11 +0200 Subject: [PATCH 075/126] Remove the unnecessary step. --- .github/workflows/smoke_test.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/smoke_test.yaml b/.github/workflows/smoke_test.yaml index 8f85599ff..9b5eaad3e 100644 --- a/.github/workflows/smoke_test.yaml +++ b/.github/workflows/smoke_test.yaml @@ -121,7 +121,3 @@ jobs: sed -i 's/"simplewiki-500-2"/"simplewiki-500"/g' backup/simplewiki-500-2.openrag diff <(grep -Ev '^{"created": ' backup/simplewiki-500.openrag) <(grep -Ev '^{"created": ' backup/simplewiki-500-2.openrag) - - - name: Prnt - run: ls -lah && sleep 20s && docker container ls - From 46f1a4ca669d9364daf6bbc02ca1da9fadc64538 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Fri, 10 Oct 2025 13:44:38 +0200 Subject: [PATCH 076/126] Rename everything --- .github/workflows/smoke_test.yaml | 10 +++++----- .github/workflows/{mini => smoke_test}/.env | 0 .../workflows/{mini => smoke_test}/docker-compose.yaml | 0 .github/workflows/{mini => smoke_test}/index_docs.sh | 2 +- .../workflows/{mini => smoke_test}/wait_for_healthy.sh | 0 .../{mini => smoke_test}/wait_for_tasks_completed.sh | 0 6 files changed, 6 insertions(+), 6 deletions(-) rename .github/workflows/{mini => smoke_test}/.env (100%) rename .github/workflows/{mini => smoke_test}/docker-compose.yaml (100%) rename .github/workflows/{mini => smoke_test}/index_docs.sh (85%) rename .github/workflows/{mini => smoke_test}/wait_for_healthy.sh (100%) rename .github/workflows/{mini => smoke_test}/wait_for_tasks_completed.sh (100%) diff --git a/.github/workflows/smoke_test.yaml b/.github/workflows/smoke_test.yaml index 9b5eaad3e..6f171ef26 100644 --- a/.github/workflows/smoke_test.yaml +++ b/.github/workflows/smoke_test.yaml @@ -51,10 +51,10 @@ jobs: submodules: true - - name: Set up mini env + name: Set up env run: | - cp .github/workflows/mini/.env ./ - cp .github/workflows/mini/*.yaml ./ + cp .github/workflows/smoke_test/.env ./ + cp .github/workflows/smoke_test/*.yaml ./ - name: Patch vllm to v0.9.2 @@ -68,7 +68,7 @@ jobs: name: Run run: | docker compose --profile cpu up -d || docker logs openrag-vllm-cpu-1 - .github/workflows/mini/wait_for_healthy.sh openrag-vllm-cpu-1 + .github/workflows/smoke_test/wait_for_healthy.sh openrag-vllm-cpu-1 - name: Cleanup @@ -91,7 +91,7 @@ jobs: - name: Index 500 documents - run: .github/workflows/mini/index_docs.sh + run: .github/workflows/smoke_test/index_docs.sh - name: Create backup diff --git a/.github/workflows/mini/.env b/.github/workflows/smoke_test/.env similarity index 100% rename from .github/workflows/mini/.env rename to .github/workflows/smoke_test/.env diff --git a/.github/workflows/mini/docker-compose.yaml b/.github/workflows/smoke_test/docker-compose.yaml similarity index 100% rename from .github/workflows/mini/docker-compose.yaml rename to .github/workflows/smoke_test/docker-compose.yaml diff --git a/.github/workflows/mini/index_docs.sh b/.github/workflows/smoke_test/index_docs.sh similarity index 85% rename from .github/workflows/mini/index_docs.sh rename to .github/workflows/smoke_test/index_docs.sh index 3146e0189..f024a1064 100755 --- a/.github/workflows/mini/index_docs.sh +++ b/.github/workflows/smoke_test/index_docs.sh @@ -17,5 +17,5 @@ python3 utility/data_indexer.py \ docker logs openrag-openrag-cpu-1 -.github/workflows/mini/wait_for_tasks_completed.sh openrag-openrag-cpu-1 8080 500 +.github/workflows/smoke_test/wait_for_tasks_completed.sh openrag-openrag-cpu-1 8080 500 diff --git a/.github/workflows/mini/wait_for_healthy.sh b/.github/workflows/smoke_test/wait_for_healthy.sh similarity index 100% rename from .github/workflows/mini/wait_for_healthy.sh rename to .github/workflows/smoke_test/wait_for_healthy.sh diff --git a/.github/workflows/mini/wait_for_tasks_completed.sh b/.github/workflows/smoke_test/wait_for_tasks_completed.sh similarity index 100% rename from .github/workflows/mini/wait_for_tasks_completed.sh rename to .github/workflows/smoke_test/wait_for_tasks_completed.sh From 1fe1542d18270a9884e0fcfc8e2af9a1f9cdf1e3 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Fri, 10 Oct 2025 14:23:25 +0000 Subject: [PATCH 077/126] Moving `data_model.md` & `user_auth.md` docs to the `documentation` directory (docs/content/docs/documentation) --- docs/{ => content/docs/documentation}/data_model.md | 5 +++-- docs/{ => content/docs/documentation}/user_auth.md | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) rename docs/{ => content/docs/documentation}/data_model.md (98%) rename docs/{ => content/docs/documentation}/user_auth.md (98%) diff --git a/docs/data_model.md b/docs/content/docs/documentation/data_model.md similarity index 98% rename from docs/data_model.md rename to docs/content/docs/documentation/data_model.md index c6d8575ab..0edf2e61c 100644 --- a/docs/data_model.md +++ b/docs/content/docs/documentation/data_model.md @@ -1,5 +1,6 @@ -# 🗄️ Data Model Overview - +--- +title: 🗄️ Data Model Overview +--- This document describes the database schema used for managing users, partitions (spaces), files, and their relationships. It is implemented using **SQLAlchemy ORM** with PostgreSQL as the backend. diff --git a/docs/user_auth.md b/docs/content/docs/documentation/user_auth.md similarity index 98% rename from docs/user_auth.md rename to docs/content/docs/documentation/user_auth.md index c5e604f9b..24ec8d20c 100644 --- a/docs/user_auth.md +++ b/docs/content/docs/documentation/user_auth.md @@ -1,4 +1,6 @@ -# 🔐 Authentication & Authorization Overview +--- +title: 🔐 Authentication & Authorization Overview +--- This document explains how **user authentication** and **access control** work within the application. It covers admin behavior, user tokens, and partition-level permissions. From 6c46ac0820656c10cfdbf7117d9eebdfc949960b Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Mon, 13 Oct 2025 11:52:35 +0200 Subject: [PATCH 078/126] Replace empty files --- .github/workflows/data/simplewiki-500/0.txt | 54 +++++++++++++++ .../workflows/data/simplewiki-500/Africa.txt | 38 +++++++++++ .../data/simplewiki-500/Albigensian.txt | 0 .../American Units Of Measurement.txt | 0 .../data/simplewiki-500/Animalia.txt | 0 .../data/simplewiki-500/Antarctica.txt | 33 ++++++++++ .../data/simplewiki-500/Arctic Ocean.txt | 16 +++++ .github/workflows/data/simplewiki-500/As.txt | 0 .../workflows/data/simplewiki-500/Asia.txt | 10 +++ .../data/simplewiki-500/Atlantic Ocean.txt | 19 ++++++ .../workflows/data/simplewiki-500/Basket.txt | 5 ++ .github/workflows/data/simplewiki-500/Bed.txt | 12 ++++ .../workflows/data/simplewiki-500/Beer.txt | 17 +++++ .../data/simplewiki-500/Bootlace.txt | 0 .../data/simplewiki-500/Bootstrap.txt | 0 .../workflows/data/simplewiki-500/Britain.txt | 0 .../workflows/data/simplewiki-500/Butter.txt | 12 ++++ .../data/simplewiki-500/Capital city.txt | 17 +++++ .../data/simplewiki-500/Capitalize.txt | 0 .../data/simplewiki-500/Chinese language.txt | 18 +++++ .../workflows/data/simplewiki-500/Cities.txt | 0 .../simplewiki-500/Classical Elements.txt | 0 .../workflows/data/simplewiki-500/Climate.txt | 6 ++ .../data/simplewiki-500/Cold War.txt | 35 ++++++++++ .../data/simplewiki-500/Container.txt | 3 + .../Coordinated Universal Time.txt | 9 +++ .../data/simplewiki-500/Copyright.txt | 30 +++++++++ .../data/simplewiki-500/Countries.txt | 0 .../data/simplewiki-500/Data Device.txt | 0 .../data/simplewiki-500/Degree (geometry).txt | 0 .../data/simplewiki-500/Dimensions.txt | 0 .../workflows/data/simplewiki-500/Dollar.txt | 5 ++ .github/workflows/data/simplewiki-500/EAL.txt | 0 .github/workflows/data/simplewiki-500/ESL.txt | 0 .../data/simplewiki-500/Elements.txt | 0 .../English As A Second Language.txt | 0 .../workflows/data/simplewiki-500/Etc..txt | 0 .github/workflows/data/simplewiki-500/Etc.txt | 0 .../workflows/data/simplewiki-500/Eurasia.txt | 8 +++ .../data/simplewiki-500/Experiments.txt | 0 .../workflows/data/simplewiki-500/Flaming.txt | 0 .../Flesch-Kincaid Reading Level.txt | 0 .../data/simplewiki-500/Fog Index.txt | 0 .../data/simplewiki-500/Fold (geology).txt | 16 +++++ .../workflows/data/simplewiki-500/Freedom.txt | 0 .../workflows/data/simplewiki-500/GFDL.txt | 0 .../data/simplewiki-500/Goodness.txt | 0 .../data/simplewiki-500/Hard Science.txt | 0 .../data/simplewiki-500/Human death.txt | 0 .../data/simplewiki-500/IP address.txt | 57 ++++++++++++++++ .../data/simplewiki-500/Immigrant.txt | 0 .../data/simplewiki-500/Immigrants.txt | 0 .../data/simplewiki-500/Immune System.txt | 0 .../data/simplewiki-500/Imperial Cup.txt | 0 .../data/simplewiki-500/Imperial Gallon.txt | 0 .../data/simplewiki-500/Indian Ocean.txt | 4 ++ .../data/simplewiki-500/Ingenuity.txt | 0 ...tional English Language Testing System.txt | 0 .../workflows/data/simplewiki-500/Inuit.txt | 25 +++++++ .../data/simplewiki-500/Latin Language.txt | 0 .../data/simplewiki-500/Life science.txt | 0 .../List of common elements.txt | 0 .../simplewiki-500/Ludwik Lejzer Zamenhof.txt | 0 .../data/simplewiki-500/Mainland China.txt | 5 ++ .../workflows/data/simplewiki-500/Math.txt | 0 .../data/simplewiki-500/Mediawiki.txt | 0 .../data/simplewiki-500/Mercury (element).txt | 42 ++++++++++++ .../workflows/data/simplewiki-500/Mercury.txt | 2 + .../workflows/data/simplewiki-500/Mexico.txt | 21 ++++++ .../data/simplewiki-500/Microsoft Windows.txt | 13 ++++ .../data/simplewiki-500/Models of nature.txt | 0 .../simplewiki-500/Models of our universe.txt | 0 .github/workflows/data/simplewiki-500/NGO.txt | 0 .github/workflows/data/simplewiki-500/NPO.txt | 0 .../workflows/data/simplewiki-500/Natural.txt | 0 .../data/simplewiki-500/Nearctic Ecozone.txt | 0 .../data/simplewiki-500/Negentropic.txt | 0 .../data/simplewiki-500/No Sense.txt | 0 .../data/simplewiki-500/Non-profit.txt | 0 .../data/simplewiki-500/Nonsense.txt | 0 .../data/simplewiki-500/North Pole.txt | 6 ++ .../workflows/data/simplewiki-500/Numeral.txt | 0 .github/workflows/data/simplewiki-500/Ok.txt | 0 .../workflows/data/simplewiki-500/Okay.txt | 0 .../data/simplewiki-500/Our Universe.txt | 0 .../data/simplewiki-500/Pacific Ocean.txt | 4 ++ .../workflows/data/simplewiki-500/Phase 3.txt | 0 .../workflows/data/simplewiki-500/Plantae.txt | 0 .../workflows/data/simplewiki-500/Plural.txt | 10 +++ .../data/simplewiki-500/Power structure.txt | 0 .../workflows/data/simplewiki-500/Prison.txt | 30 +++++++++ .../workflows/data/simplewiki-500/Romans.txt | 0 .../workflows/data/simplewiki-500/Sheep.txt | 0 .../data/simplewiki-500/Simple English.txt | 2 + .github/workflows/data/simplewiki-500/Sky.txt | 8 +++ .../data/simplewiki-500/Snapshot Algebra.txt | 0 .../workflows/data/simplewiki-500/Social.txt | 0 .../data/simplewiki-500/Sociology.txt | 12 ++++ .../data/simplewiki-500/Software.txt | 6 ++ .../data/simplewiki-500/South America.txt | 12 ++++ .../data/simplewiki-500/South Pole.txt | 16 +++++ .../data/simplewiki-500/Speedword.txt | 0 .../data/simplewiki-500/Speedwords.txt | 0 .../workflows/data/simplewiki-500/Sports.txt | 0 .../workflows/data/simplewiki-500/Steal.txt | 0 .../simplewiki-500/Systeme internationale.txt | 0 .../data/simplewiki-500/Television.txt | 8 +++ .../simplewiki-500/Terrestrial ecoregion.txt | 0 .../data/simplewiki-500/Tone language.txt | 13 ++++ .github/workflows/data/simplewiki-500/UK.txt | 0 .../workflows/data/simplewiki-500/US Cup.txt | 0 .../workflows/data/simplewiki-500/US Foot.txt | 0 .../data/simplewiki-500/US Pound.txt | 0 .../workflows/data/simplewiki-500/US Yard.txt | 0 .../data/simplewiki-500/US gallon.txt | 0 .../data/simplewiki-500/University.txt | 18 +++++ .../workflows/data/simplewiki-500/Value.txt | 3 + .../data/simplewiki-500/Vatican City.txt | 22 +++++++ .../data/simplewiki-500/Vegetable oil.txt | 4 ++ .../data/simplewiki-500/Velocity.txt | 26 ++++++++ .../workflows/data/simplewiki-500/Venus.txt | 30 +++++++++ .../workflows/data/simplewiki-500/Verb.txt | 65 +++++++++++++++++++ .../data/simplewiki-500/Virtual community.txt | 8 +++ .../data/simplewiki-500/Vocabulary.txt | 9 +++ .../data/simplewiki-500/Volap\303\274k.txt" | 12 ++++ .../data/simplewiki-500/Volcanism.txt | 15 +++++ .../workflows/data/simplewiki-500/Volume.txt | 14 ++++ .../workflows/data/simplewiki-500/Wall.txt | 15 +++++ .../workflows/data/simplewiki-500/Want.txt | 4 ++ .github/workflows/data/simplewiki-500/War.txt | 18 +++++ .../workflows/data/simplewiki-500/Water.txt | 48 ++++++++++++++ .../data/simplewiki-500/Web browser.txt | 9 +++ .github/workflows/data/simplewiki-500/Web.txt | 2 + .../workflows/data/simplewiki-500/Webpage.txt | 6 ++ .../workflows/data/simplewiki-500/Website.txt | 16 +++++ .../workflows/data/simplewiki-500/Width.txt | 5 ++ .../workflows/data/simplewiki-500/Wiki.txt | 9 +++ .../data/simplewiki-500/WikiWiki.txt | 1 + .../data/simplewiki-500/Wiktionary.txt | 8 +++ .../workflows/data/simplewiki-500/Window.txt | 23 +++++++ .../workflows/data/simplewiki-500/Windows.txt | 0 .../workflows/data/simplewiki-500/Wine.txt | 18 +++++ .../workflows/data/simplewiki-500/Word.txt | 11 ++++ .../data/simplewiki-500/World Wide Web.txt | 6 ++ .../simplewiki-500/Yard (disambiguation).txt | 3 + .../workflows/data/simplewiki-500/Year.txt | 7 ++ .../workflows/data/simplewiki-500/Yiddish.txt | 9 +++ .github/workflows/data/simplewiki-500/You.txt | 2 + .../workflows/data/simplewiki-500/Zebra.txt | 10 +++ .../workflows/data/simplewiki-500/Zinc.txt | 51 +++++++++++++++ .github/workflows/data/simplewiki-500/Zoo.txt | 8 +++ .../workflows/data/simplewiki-500/Zoology.txt | 8 +++ 152 files changed, 1182 insertions(+) create mode 100644 .github/workflows/data/simplewiki-500/0.txt create mode 100644 .github/workflows/data/simplewiki-500/Africa.txt delete mode 100644 .github/workflows/data/simplewiki-500/Albigensian.txt delete mode 100644 .github/workflows/data/simplewiki-500/American Units Of Measurement.txt delete mode 100644 .github/workflows/data/simplewiki-500/Animalia.txt create mode 100644 .github/workflows/data/simplewiki-500/Antarctica.txt create mode 100644 .github/workflows/data/simplewiki-500/Arctic Ocean.txt delete mode 100644 .github/workflows/data/simplewiki-500/As.txt create mode 100644 .github/workflows/data/simplewiki-500/Asia.txt create mode 100644 .github/workflows/data/simplewiki-500/Atlantic Ocean.txt create mode 100644 .github/workflows/data/simplewiki-500/Basket.txt create mode 100644 .github/workflows/data/simplewiki-500/Bed.txt create mode 100644 .github/workflows/data/simplewiki-500/Beer.txt delete mode 100644 .github/workflows/data/simplewiki-500/Bootlace.txt delete mode 100644 .github/workflows/data/simplewiki-500/Bootstrap.txt delete mode 100644 .github/workflows/data/simplewiki-500/Britain.txt create mode 100644 .github/workflows/data/simplewiki-500/Butter.txt create mode 100644 .github/workflows/data/simplewiki-500/Capital city.txt delete mode 100644 .github/workflows/data/simplewiki-500/Capitalize.txt create mode 100644 .github/workflows/data/simplewiki-500/Chinese language.txt delete mode 100644 .github/workflows/data/simplewiki-500/Cities.txt delete mode 100644 .github/workflows/data/simplewiki-500/Classical Elements.txt create mode 100644 .github/workflows/data/simplewiki-500/Climate.txt create mode 100644 .github/workflows/data/simplewiki-500/Cold War.txt create mode 100644 .github/workflows/data/simplewiki-500/Container.txt create mode 100644 .github/workflows/data/simplewiki-500/Coordinated Universal Time.txt create mode 100644 .github/workflows/data/simplewiki-500/Copyright.txt delete mode 100644 .github/workflows/data/simplewiki-500/Countries.txt delete mode 100644 .github/workflows/data/simplewiki-500/Data Device.txt delete mode 100644 .github/workflows/data/simplewiki-500/Degree (geometry).txt delete mode 100644 .github/workflows/data/simplewiki-500/Dimensions.txt create mode 100644 .github/workflows/data/simplewiki-500/Dollar.txt delete mode 100644 .github/workflows/data/simplewiki-500/EAL.txt delete mode 100644 .github/workflows/data/simplewiki-500/ESL.txt delete mode 100644 .github/workflows/data/simplewiki-500/Elements.txt delete mode 100644 .github/workflows/data/simplewiki-500/English As A Second Language.txt delete mode 100644 .github/workflows/data/simplewiki-500/Etc..txt delete mode 100644 .github/workflows/data/simplewiki-500/Etc.txt create mode 100644 .github/workflows/data/simplewiki-500/Eurasia.txt delete mode 100644 .github/workflows/data/simplewiki-500/Experiments.txt delete mode 100644 .github/workflows/data/simplewiki-500/Flaming.txt delete mode 100644 .github/workflows/data/simplewiki-500/Flesch-Kincaid Reading Level.txt delete mode 100644 .github/workflows/data/simplewiki-500/Fog Index.txt create mode 100644 .github/workflows/data/simplewiki-500/Fold (geology).txt delete mode 100644 .github/workflows/data/simplewiki-500/Freedom.txt delete mode 100644 .github/workflows/data/simplewiki-500/GFDL.txt delete mode 100644 .github/workflows/data/simplewiki-500/Goodness.txt delete mode 100644 .github/workflows/data/simplewiki-500/Hard Science.txt delete mode 100644 .github/workflows/data/simplewiki-500/Human death.txt create mode 100644 .github/workflows/data/simplewiki-500/IP address.txt delete mode 100644 .github/workflows/data/simplewiki-500/Immigrant.txt delete mode 100644 .github/workflows/data/simplewiki-500/Immigrants.txt delete mode 100644 .github/workflows/data/simplewiki-500/Immune System.txt delete mode 100644 .github/workflows/data/simplewiki-500/Imperial Cup.txt delete mode 100644 .github/workflows/data/simplewiki-500/Imperial Gallon.txt create mode 100644 .github/workflows/data/simplewiki-500/Indian Ocean.txt delete mode 100644 .github/workflows/data/simplewiki-500/Ingenuity.txt delete mode 100644 .github/workflows/data/simplewiki-500/International English Language Testing System.txt create mode 100644 .github/workflows/data/simplewiki-500/Inuit.txt delete mode 100644 .github/workflows/data/simplewiki-500/Latin Language.txt delete mode 100644 .github/workflows/data/simplewiki-500/Life science.txt delete mode 100644 .github/workflows/data/simplewiki-500/List of common elements.txt delete mode 100644 .github/workflows/data/simplewiki-500/Ludwik Lejzer Zamenhof.txt create mode 100644 .github/workflows/data/simplewiki-500/Mainland China.txt delete mode 100644 .github/workflows/data/simplewiki-500/Math.txt delete mode 100644 .github/workflows/data/simplewiki-500/Mediawiki.txt create mode 100644 .github/workflows/data/simplewiki-500/Mercury (element).txt create mode 100644 .github/workflows/data/simplewiki-500/Mercury.txt create mode 100644 .github/workflows/data/simplewiki-500/Mexico.txt create mode 100644 .github/workflows/data/simplewiki-500/Microsoft Windows.txt delete mode 100644 .github/workflows/data/simplewiki-500/Models of nature.txt delete mode 100644 .github/workflows/data/simplewiki-500/Models of our universe.txt delete mode 100644 .github/workflows/data/simplewiki-500/NGO.txt delete mode 100644 .github/workflows/data/simplewiki-500/NPO.txt delete mode 100644 .github/workflows/data/simplewiki-500/Natural.txt delete mode 100644 .github/workflows/data/simplewiki-500/Nearctic Ecozone.txt delete mode 100644 .github/workflows/data/simplewiki-500/Negentropic.txt delete mode 100644 .github/workflows/data/simplewiki-500/No Sense.txt delete mode 100644 .github/workflows/data/simplewiki-500/Non-profit.txt delete mode 100644 .github/workflows/data/simplewiki-500/Nonsense.txt create mode 100644 .github/workflows/data/simplewiki-500/North Pole.txt delete mode 100644 .github/workflows/data/simplewiki-500/Numeral.txt delete mode 100644 .github/workflows/data/simplewiki-500/Ok.txt delete mode 100644 .github/workflows/data/simplewiki-500/Okay.txt delete mode 100644 .github/workflows/data/simplewiki-500/Our Universe.txt create mode 100644 .github/workflows/data/simplewiki-500/Pacific Ocean.txt delete mode 100644 .github/workflows/data/simplewiki-500/Phase 3.txt delete mode 100644 .github/workflows/data/simplewiki-500/Plantae.txt create mode 100644 .github/workflows/data/simplewiki-500/Plural.txt delete mode 100644 .github/workflows/data/simplewiki-500/Power structure.txt create mode 100644 .github/workflows/data/simplewiki-500/Prison.txt delete mode 100644 .github/workflows/data/simplewiki-500/Romans.txt delete mode 100644 .github/workflows/data/simplewiki-500/Sheep.txt create mode 100644 .github/workflows/data/simplewiki-500/Simple English.txt create mode 100644 .github/workflows/data/simplewiki-500/Sky.txt delete mode 100644 .github/workflows/data/simplewiki-500/Snapshot Algebra.txt delete mode 100644 .github/workflows/data/simplewiki-500/Social.txt create mode 100644 .github/workflows/data/simplewiki-500/Sociology.txt create mode 100644 .github/workflows/data/simplewiki-500/Software.txt create mode 100644 .github/workflows/data/simplewiki-500/South America.txt create mode 100644 .github/workflows/data/simplewiki-500/South Pole.txt delete mode 100644 .github/workflows/data/simplewiki-500/Speedword.txt delete mode 100644 .github/workflows/data/simplewiki-500/Speedwords.txt delete mode 100644 .github/workflows/data/simplewiki-500/Sports.txt delete mode 100644 .github/workflows/data/simplewiki-500/Steal.txt delete mode 100644 .github/workflows/data/simplewiki-500/Systeme internationale.txt create mode 100644 .github/workflows/data/simplewiki-500/Television.txt delete mode 100644 .github/workflows/data/simplewiki-500/Terrestrial ecoregion.txt create mode 100644 .github/workflows/data/simplewiki-500/Tone language.txt delete mode 100644 .github/workflows/data/simplewiki-500/UK.txt delete mode 100644 .github/workflows/data/simplewiki-500/US Cup.txt delete mode 100644 .github/workflows/data/simplewiki-500/US Foot.txt delete mode 100644 .github/workflows/data/simplewiki-500/US Pound.txt delete mode 100644 .github/workflows/data/simplewiki-500/US Yard.txt delete mode 100644 .github/workflows/data/simplewiki-500/US gallon.txt create mode 100644 .github/workflows/data/simplewiki-500/University.txt create mode 100644 .github/workflows/data/simplewiki-500/Value.txt create mode 100644 .github/workflows/data/simplewiki-500/Vatican City.txt create mode 100644 .github/workflows/data/simplewiki-500/Vegetable oil.txt create mode 100644 .github/workflows/data/simplewiki-500/Velocity.txt create mode 100644 .github/workflows/data/simplewiki-500/Venus.txt create mode 100644 .github/workflows/data/simplewiki-500/Verb.txt create mode 100644 .github/workflows/data/simplewiki-500/Virtual community.txt create mode 100644 .github/workflows/data/simplewiki-500/Vocabulary.txt create mode 100644 ".github/workflows/data/simplewiki-500/Volap\303\274k.txt" create mode 100644 .github/workflows/data/simplewiki-500/Volcanism.txt create mode 100644 .github/workflows/data/simplewiki-500/Volume.txt create mode 100644 .github/workflows/data/simplewiki-500/Wall.txt create mode 100644 .github/workflows/data/simplewiki-500/Want.txt create mode 100644 .github/workflows/data/simplewiki-500/War.txt create mode 100644 .github/workflows/data/simplewiki-500/Water.txt create mode 100644 .github/workflows/data/simplewiki-500/Web browser.txt create mode 100644 .github/workflows/data/simplewiki-500/Web.txt create mode 100644 .github/workflows/data/simplewiki-500/Webpage.txt create mode 100644 .github/workflows/data/simplewiki-500/Website.txt create mode 100644 .github/workflows/data/simplewiki-500/Width.txt create mode 100644 .github/workflows/data/simplewiki-500/Wiki.txt create mode 100644 .github/workflows/data/simplewiki-500/WikiWiki.txt create mode 100644 .github/workflows/data/simplewiki-500/Wiktionary.txt create mode 100644 .github/workflows/data/simplewiki-500/Window.txt delete mode 100644 .github/workflows/data/simplewiki-500/Windows.txt create mode 100644 .github/workflows/data/simplewiki-500/Wine.txt create mode 100644 .github/workflows/data/simplewiki-500/Word.txt create mode 100644 .github/workflows/data/simplewiki-500/World Wide Web.txt create mode 100644 .github/workflows/data/simplewiki-500/Yard (disambiguation).txt create mode 100644 .github/workflows/data/simplewiki-500/Year.txt create mode 100644 .github/workflows/data/simplewiki-500/Yiddish.txt create mode 100644 .github/workflows/data/simplewiki-500/You.txt create mode 100644 .github/workflows/data/simplewiki-500/Zebra.txt create mode 100644 .github/workflows/data/simplewiki-500/Zinc.txt create mode 100644 .github/workflows/data/simplewiki-500/Zoo.txt create mode 100644 .github/workflows/data/simplewiki-500/Zoology.txt diff --git a/.github/workflows/data/simplewiki-500/0.txt b/.github/workflows/data/simplewiki-500/0.txt new file mode 100644 index 000000000..fc6c2c2cd --- /dev/null +++ b/.github/workflows/data/simplewiki-500/0.txt @@ -0,0 +1,54 @@ +Zero (0) is a unique number. If there are zero things, then there is nothing at all. For example, if a person has zero hats, that means they do not have any hats. The Roman numeral for zero is Ↄ. +Symbol. +The symbol for the number zero is "0". It is the additive identity of common numbers. This means that if a number is added to 0, then that number would remain unchanged. +Mathematics. + 3 + 0 = 3 + 3 − 0 = 3 + 0 − 3 = −3 + 3 × 0 = 0 + 0 ÷ 3 = 0 + 3 ÷ 0 has an undefined answer. + 0 ÷ 0 has an undefined answer. +The following table includes all of the above examples along with other operations in a condensed, generalized form (where "x" represents any number). +History. +The Bakhshali manuscript, discovered in 1881 near Peshawar has been identified as the earliest known text featuring the zero symbol (0), dating back to the 3rd or 4th century CE. The ancient Greeks did not use zero as a number, because they thought numbers represented shapes: To the [ancient] Greeks, who looked upon mathematics from a geometric perspective, zero seemed absurd or unnecessary. When numbers or unknowns represented lengths, and squares represented areas, zero had no place. Why solve a problem that did not exist? If a length is zero, there is no line; if an area is zero, there is no object.The idea of zero was first thought about in Babylon, Indian subcontinent and in Central America at different times. Some places and countries did not know about zero, which may have made it harder for those people to do mathematics. For example, the year after 1 BC is AD 1 (there is no year zero). In India, zero was theorized in the seventh century by the Mathematician Aryabhata. +Over hundreds of years, the idea of zero was passed from country to country Greece, Persia and the Arab world. The Europeans learned about zero from the Arabs, and stopped using Roman math. This is why numbers are called "Arabic numerals". +Computer science. +Zero is almost never used as a place number (Ordinal number). This means that it is not used like 1, 2, or 3 to indicate the order, or place, of something, like 1st, 2nd, or 3rd. An exception to this is seen in many programming languages. Some other things about zero: +Any number divided by itself equals one, except if that number is zero. In symbols: +0 ÷ 0 = undefined +Other applications. +In time, zero means "now". For example, when a person is counting down the time to the start of something, such as a foot race or when a rocket takes off, the count is: "three, two, one, zero (or "go")". Zero is the exact time of the start of the race or when the rocket takes off into the sky. +0 as a number. +Definition. +0 is the integer that precedes the positive 1, and follows −1. In most numerical systems, 0 was identified before the idea of "negative integers" was accepted. It means "courageous one" in hieroglyphics. +Zero is a number which means an amount of null size; that is, if the number of brothers is zero, that means the same thing as having no brothers, and if something has a weight of zero, it has no weight. If the difference between the numbers of pieces in two piles is zero, it means the two piles have an equal number of pieces. +Before counting starts, the result can be assumed to be zero; that is the number of items counted before one counts the first item, and counting the first item brings the result to one. And if there are no items to be counted, zero remains the final result. +Debates. +Is zero a number ? +While mathematicians all accept zero as a number, some non-mathematicians would say that zero is not a number, arguing that one cannot have zero of something. Others say that if one has a bank balance of zero, one has a specific quantity of money in that account, namely none. It is that latter view which is accepted by mathematicians and most others. +Is zero a natural number? +A debate asking if 0 is or not a natural number has been discussed over time. +The Encyclopædia Britannica defines 0 as a natural number. Wolfram MathWorld´says it isn't. The "On-Line Encyclopedia of Integer Sequences" objects. "The Princeton Companion to Mathematics" defines 0 as a natural number. +Although the International Baccalaureate (IB) mathematics curriculum sees 0 as a natural number, the "Oxford Dictionary" states, +<templatestyles src="Template:Blockquote/styles.css" />a positive whole number such as 1, 2, or 3, and sometimes also zero. +As year. +There was no year zero between 1 BC and 1 AD. More specifically, almost all historians leave out the "year zero" from the proleptic proleptic Gregorian and Julian calendar, but astronomers include it in these same calendars. However, the phrase "Year Zero" may be used to describe any event considered so important, that someone might want to start counting years all over again from zero. +0 as a numeral. +The modern numeral 0 is normally written as a circle or (rounded) rectangle. In old-style fonts with text figures, 0 is usually the same height as a lowercase x. +On the seven-segment displays of calculators, watches etc., 0 is usually written with six-line segments, though on some historical calculator models, it was written with four line segments. The four-segment 0 is not common. The "number" zero, as in the "zero brothers" example above, is not the same as the "numeral" or "digit" zero, used in numeral systems using positional notation. Successive positions of digits have higher values, so the digit zero is used to skip a position and give appropriate value to the preceding and following digits. A zero digit is not always necessary in a different positional number system. Something called bijective numeration is a possible example of a system without zeroes. +As numerical digit. +0 is also used as a numerical digit used to represent that number in numerals. It is used to hold the place of that digit, because correct placing of digits affects a numeral's value. Examples: +Telling zero and the letter O apart. +The number 0 and the letter O are both round, though of different widths. The difference is important on a computer. For one thing, a computer will not do arithmetic with the letter O, because it does not know that it should have been a zero. +The oval-shaped zero and circular letter O came into use together on modern character displays. The zero with a dot in the centre seems to have begun as a choice on IBM 3270 controllers (this has the problem that it looks like the Greek letter theta). +The slashed zero, looking like the letter O with a diagonal line drawn inside it, is used in old-style ASCII graphic sets that came from the default typewheel on the well-known ASR-33 Teletype. This format causes problems because it looks like the symbol formula_1, representing the empty set, as well as for certain Scandinavian languages which use Ø as a letter. +The rule which has the letter O with a slash and the zero without was used at IBM and a few other early mainframe makers; this is even more of a problem for Scandinavians, because it looks like two of their letters at the same time. Some Burroughs/Unisys computers display a zero with a backwards slash. +Yet, another convention common on early line printers left zero without any extra dots or slashes but added a tail or hook to the letter O so that it resembled an inverted Q or cursive capital letter O.The letters used on some European number plates for cars make the two symbols look different. This is done by making the zero rather egg-shaped and the O more circular, but most of all by cutting open the zero on the upper right side, so the circle is not closed any more (as in ). The style of letters chosen is called "" (abbr.: "FE Schrift"), meaning "script which is harder to falsify". +However, those used in the United Kingdom do not make the letter o and the number 0 look different from each other, because there can never be any mistake if the letters are correctly spaced. In paper writing, one does not have to make the 0 (zero) and O (letter O) look different at all. Or you may add a slash across the zero in order to show the difference. +Zeroes of a function. +If the function "f"("x") = 0, then "x" is called a zero (or root) of the function "f". For example, if the function "f"("x") is "x"2 − 1, then the zeroes of the function are +1 and −1, because "f"(+1) = (+1)2 − 1 = 0, and "f"(−1) = (−1)2 − 1 = 0. +Zeroes of a function are used because they are another way to talk about solving an equation, which is a main goal in algebra. If we want to solve an equation like "x"2 = 1, then we can subtract the right-hand side of the equation from both sides, in this case 1. Whatever we get on the left-hand side, in this case "x"2 − 1, can be called a function "f"(x). The right-hand side has to be zero, because we subtracted it from itself. So "f"(x) = 0. Finding the zeroes of this function is the same as solving this equation. In the paragraph before, the zeroes of this function are +1 and −1, so they are the solutions of this equation. We got this equation by subtracting the same thing from both sides, so we also have solutions to the equation we started with, in this case "x"2 = 1. More generally, if we could find zeroes of functions, we could solve any equation. +References. +Citations. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Africa.txt b/.github/workflows/data/simplewiki-500/Africa.txt new file mode 100644 index 000000000..fe0c915e7 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Africa.txt @@ -0,0 +1,38 @@ +Africa is the second largest continent in the world. It makes up about a fifth of the world's total land. It is surrounded by large areas of water. There are 54 fully recognised and independent countries in Africa, and 14.7% (1.216 billion) of the world's population lives there. It is thought to be the continent where the first humans evolved. +History. +The history of Africa begins with the first modern human beings and continues to its present difficult state as a politically developing continent. +Africa's ancient historic period includes the rise of Egyptian civilization. It also includes the development of other societies outside the Nile River Valley, and the interaction between these societies and civilizations outside of Africa. In the late 7th century, North and East Africa were heavily influenced by the spread of Islam. That led to the appearance of new cultures, like the Swahili people and the Mali Empire, whose king, Musa Keita I, became one of the richest and most influential people of the early 14th century. This also led to an increase in the slave trade, which had a very bad influence on Africa’s development until the 19th century. +Slavery. +Slavery has long been practiced in Africa, just like the rest of the world. But two new slave trades would create a much bigger and more violent version of slavery. +Between the 7th and 20th centuries, the Arab slave trade took 18 million slaves from Africa via trans-Saharan routes and the Indian Ocean. Between the 15th and 20th centuries (a period of 500 years), the Atlantic slave trade took an estimated 7–12 million slaves to the Americas. While some Africans collaborated with European and Asian slave traders, many were strongly opposed to slavery and avoided, protested, or fought it violently. +Africans who had been captured and sent to the French colony of Saint Domingue on slave ships played an important role in ending the Atlantic slave trade. They began the Haitian Revolution, which created Haiti, the first country to permanently ban slavery. After this revolution, European empires began to reduce slave trading and abolitionism became more popular. Between 1808 and 1860, the British Navy captured approximately 1,600 slave ships and freed 150,000 Africans who were aboard. +Colonialism. +In the late 19th century, the European powers occupied much of the continent, creating many colonial and dependent territories. They left only two fully independent states: Liberia and Ethiopia (which the Europeans called “Abyssinia"). +Egypt and Sudan were never formally made a part of any European colonial empire. However, after the British occupation of 1882, Egypt was effectively under British administration until 1922. +Modern history. +African independence movements had their first success in 1951, when Libya became the first former colony to become independent. Modern African history is full of revolutions and wars, as well as the growth of modern African economies and democratization across the continent. +A civil war in the Democratic Republic of the Congo (formerly Zaire) began in 1998. Neighbouring African countries have become involved. Since the conflict began, it has killed an estimated 5.5 million people. +Political associations such as the African Union offer hope for greater co-operation and peace between the continent's many countries. +Climate. +From north to south, Africa has most types of climate. In sequence from the north: +Running north-east to the south is the East African Great Rift Valley. This has mountains, volcanoes, deep rifts and valleys, rivers and lakes. +In fact, Africa has examples of most of the Earth's climate types. +Rainfall. +Much of North Africa is dry and hot: it is dominated by the Sahara Desert and does not receive much rain. In Saharan Africa, there are few rivers or other water sources. Underground water sources are very important in the desert. These often form oases. An oasis is an area of vegetation (plant life) surrounded by desert. +In that part of the world, the wind comes mostly from the east. That does bring rain, but the Himalayas and the Tibetan Plateau block the monsoon rain and prevent it from getting to North Africa. Also, the Atlas Mountains near the north coast +of Africa prevent rain from coming in from the north. That is another rain shadow. +These two rain shadows are mainly responsible for the Sahara desert. +Conditions and winds are different further south, where huge amounts of rainfall near the equator. The equator runs across the middle of Africa (see red line drawn on map). That means much of Africa is between the two tropics: +Plants and animals. +Africa has a lot of wildlife. There are many types of animals there. In particular, it is now the only continent that has many native species of large mammals. Some of them occur in very large numbers. There are antelope, buffalo, zebra, cheetah, elephant, lion, giraffe, rhinoceros, apes, hyaena, and a lot more. Over 2,000 types of fish live in African lakes and rivers. +Politics. +The African Union (AU) is an international organisation. It aims to transform the African Economic Community, a federated commonwealth, into a state under established international conventions. The African Union has a parliamentary government, known as the African Union Government, consisting of legislative, judicial, and executive organs. It is led by the African Union President and Head of State, who is also the President of the Pan African Parliament. A person becomes President of the AU by being elected to the PAP and then gaining majority support in the PAP. +Extensive human rights abuses still occur in several parts of Africa, often under the oversight of the state. Most of such violations occur for political reasons, often as a side effect of civil war. Countries where major human rights violations have been reported in recent times include Uganda, Sierra Leone, Liberia, Sudan, Zimbabwe, and Côte d'Ivoire. There are 54 UN member states in Africa. +People. +Africa was the homeland for the first people. +People who come from Africa are called Africans. People in the north are called North Africans and people in the south are called South Africans. Languages in eastern Africa include Swahili, Oromo and Amharic. Languages in western Africa include Lingala, Igbo, Hausa and Fulani. The most popular language in Northern Africa is Arabic. +The most populated country in Africa is Nigeria. +African diaspora. +Countries with significant African descendents outside Africa: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Albigensian.txt b/.github/workflows/data/simplewiki-500/Albigensian.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/American Units Of Measurement.txt b/.github/workflows/data/simplewiki-500/American Units Of Measurement.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Animalia.txt b/.github/workflows/data/simplewiki-500/Animalia.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Antarctica.txt b/.github/workflows/data/simplewiki-500/Antarctica.txt new file mode 100644 index 000000000..2a261a547 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Antarctica.txt @@ -0,0 +1,33 @@ +Antarctica is the Earth's southernmost and the continent with the least people. It is on the South Pole. It is almost entirely south of the Antarctic Circle. Around Antarctica is the Southern Ocean. It is the fifth-largest continent in area after Asia, Africa, North America, and South America. About 99% of Antarctica is covered by ice. This ice averages at least 1.6 kilometers (1.0 miles) thick. +Antarctica is the coldest, driest and windiest continent. It is also, on average, the highest of all the continents. Antarctica is considered a desert. It is the largest and coldest desert in the world. It has yearly precipitation of only 200 mm (8 inches) near the sea and far less inland. No humans live in Antarctica permanently. However, about 1,000 to 5,000 people live through the year at the science stations in Antarctica. Only plants and animals that can live in cold live there. The animals include penguins, seals, nematodes, tardigrades and mites. Plant life includes some grass and shrubs, algae, lichen, fungi, and bacteria. +The first known polar sighting of the continent was in 1820. Antarctica was mostly forgotten for the rest of the 19th century. This was because of its incredibly hostile environment, few resources, and isolation. The first official use of the name "Antarctica" as a continental name in the 1890s is said to have been used by Scottish cartographer John George Bartholomew. +The Antarctic Treaty was signed in 1959 by 21 countries. More countries have signed the treaty since then. So far, 46 countries have signed the treaty. The treaty declares that military activities and mineral mining are against the law. However, it supports scientific research. It also helps the continent's ozone. More than 4,000 scientists from different nations and different interests experiment together. +Geography and geology. +Antarctica is covered by an ice sheet about four kilometers thick. Under the ice it is mostly land, although the ice shelves are glossing over the ocean. The Trans Antarctic Mountains divide the land between East Antarctica in the Eastern Hemisphere and West Antarctica in the Western Hemisphere. +Antarctica has some important features hidden by the ice. One is Lake Vostok, which has been covered by ice for at least 15 million years. The lake is 250 km long and 50 km wide. Another is the huge Gamburtsev mountain chain, which are the size of the Alps, yet entirely buried under the ice. The Gamburtsev range has a nearby massive rift valley similar to the East African Great Rift Valley. It is called the Lambert system. Scientists used radar that can work under ice to survey the whole of Antarctica. +Ancient Antarctica. +Antarctica was formed by the breaking of the Gondwana supercontinent. Scientists say Antarctica used to be much farther from north and much warmer, moving to where it is now through continental drift. From 2010 to 2015, scientists collected fossils of frogs, water lilies, and shark and ray teeth, showing that these life forms used to live on Antarctica. The frog fossils were about 40 million years old. Scientists say marsupials, animals that keep their babies in pouches, could have started in South America, went to a warm ancient Antarctica, and gone to Australia from there. +Life in Antarctica. +Plants. +Few land plants grow in Antarctica. This is because Antarctica does not have much moisture (water), sunlight, good soil, or a warm temperature. Plants usually only grow for a few weeks in the summer when penguins produce the most feces. However, moss, lichen and algae do grow. The most important organisms in Antarctica are the plankton which grow in the ocean. +Animals. +One important source of food in the Antarctic is the krill, which is a general term for the small shrimp-like marine crustaceans. Krill are near the bottom of the food chain: they feed on phytoplankton and to a lesser extent zooplankton. Krill are a food form suitable for the larger animals for whom krill makes up the largest part of their diet. Whales, penguins, seals, and even some of the birds that live in Antarctica, all depend on krill. +Whales are the largest animals in the ocean, and in Antarctica. They are mammals, not fish. That means that they breathe air and do not lay eggs. Many different kinds of whales live in the oceans around Antarctica. +Whalers have hunted whales for hundreds of years, for meat and blubber. Nowadays most whaling is done in the Antarctic area. +Penguins only live south of the equator. Several different kinds live in and around Antarctica. The biggest ones can stand nearly 4 feet (1.2m) tall and can weigh almost 100 pounds (40 kg). The smallest kinds are only about one foot (30 cm) tall. Penguins are large birds that swim very well but cannot fly. They have black backs and wings with white fronts. Their feathers are very tightly packed and make a thick cover. They also have a layer of woolly down under the feathers. The feathers themselves are coated with a type of oil that makes them waterproof. A thick layer of blubber also keeps them warm. Penguins eat fish and are at home in the ocean. They come up on the land or ice to lay their eggs and raise the chicks. They nest together in a huge group. +Largest land animal. +The largest animal in Antarctica that lives entirely on land is a wingless midge. +History of its discovery. +For a long time, people had believed that there was a great continent in the far south of Earth. They thought this "Terra Astral-is" would "balance" the lands in the north like Europe, Asia and North Africa. People have believed this from the times of Ptolemy (1st century AD). He suggested this idea to keep the balance of all known lands in the world. Pictures of a large land in the south were common in maps. In the late 17th century, people discovered that South America and Australia were not part of the mythical "Antarctica". However, geographers still believed that Antarctica was much bigger than it really was. +European maps continued to show this unknown land until Captain James Cook's ships, HMS "Resolution" and "Adventure", first crossed the Antarctic Circle on 17 January 1773. In fact, he did come within about of the Antarctic coast. However, he was forced to go back because of ice. +The first confirmed sighting of Antarctica were by three different men. According to different organizations, three different ships saw Antarctica in 1820. The three ships were captained by Fabian von Bellingham (a captain in the Russian Imperial Navy), Edward Mansfield (a captain in the Royal Navy), and Nathaniel Palmer (an American seal hunter out of Stonington, Connecticut). The first recorded landing on mainland Antarctica was by the American sealer John Davis. He landed on West Antarctica on 7 February 1821. However, some historians are not sure about this claim. +People began discovering different parts of Antarctica and mapping them. This was slow work because they could only work in the summer. At last a map was made, and people began to talk about exploring the land, not only the sea. However, this would have been very hard work. They would have to break through the ice that was around Antarctica. Then they would have to land on it and bring in enough things to live on while they explored the land. +The first serious exploration of the Antarctic land was the Nimrod Expedition led by Ernest Shackleton in 1907–09. They were the first to climb Mount Erebus and to reach the South Magnetic Pole. Shackleton himself and three other members of his expedition made several firsts in December 1908 – February 1909. They were the first humans to cross the Ross Ice Shelf, and the Trans-antarctic Mountain Range (via the Beardmore Glacier). They were the first to set foot on the South Polar Plateau. +Robert Falcon Scott, the most well known of all of the explorers, wanted to be the first man to reach the South Pole. At the same time, another team from Norway lead by Roald Amundsen started. They both raced each other to the South Pole, but in the end Amundsen won because he had made a good use of his sleigh dogs. Scott had used ponies and motor sleds, but when he got to the South Pole he found a message from Amundsen, showing that he had beaten Scott. +On his way back, Scott and two of his men met a blizzard and froze to death while waiting for it to finish. The people who found him eight months later also found his records and diary, which he had written to the day he died. +Climate change and global warming are showing effects in Antarctica, particularly the Antarctic Peninsula. +People. +No one lives in Antarctica all the time. People who go to Antarctica are there to learn about Antarctica, so most of the people who live there are scientists. Most live at national science stations on the coast. Some bases are far from the sea, for example at the South pole. They study the weather, animals, glaciers, and the Earth's atmosphere. Some scientists drill ice cores to find out about the weather long ago. People who work in the Antarctic must be careful, because a blizzard can start any time and anywhere. When they go far away from their shelter, they must always take lots of food just in case. +Today, people explore Antarctica using snowmobiles, which are faster than dogs and can pull heavier loads. Many come to Antarctica just for a short visit. There are companies in South America that have vacations to Antarctica, so people pay to go there on a ship. Some people take their own boats. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Arctic Ocean.txt b/.github/workflows/data/simplewiki-500/Arctic Ocean.txt new file mode 100644 index 000000000..d7e4542e3 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Arctic Ocean.txt @@ -0,0 +1,16 @@ +The Arctic Ocean is the ocean around the North Pole. The most northern parts of Eurasia and North America are around the Arctic Ocean. Thick pack ice and snow cover almost all of this ocean in winter, and most of it in summer. An icebreaker or a nuclear-powered submarine can use the Northwest Passage through the Arctic Ocean to go between the Pacific and Atlantic oceans. +The ocean's area is about 14.056 million km2, which is the smallest of the world's five oceans, and it has of coastline. The central surface covered by ice about thick. The biology there is quite special. Endangered species there include walruses, whales and polar bears. Year by year the Arctic Ocean is becoming less icy, as a result of global warming. +The average depth of the Arctic Ocean is . The deepest point is in the Eurasian Basin, at . +Geography. +The Arctic Ocean covers an area of about 14,056,000 km2. The coastline is 45,390 km (28,200 mi) long It is surrounded by Eurasia, North America, Greenland, and by several islands. +It is generally taken to include Baffin Bay, Barents Sea, Beaufort Sea, Chukchi Sea, East Siberian Sea, Greenland Sea, Hudson Bay, Hudson Strait, Kara Sea, Laptev Sea, White Sea and other bodies of water. It is connected to the Pacific Ocean by the Bering Strait and to the Atlantic Ocean through the Greenland Sea and Labrador Sea. +Countries bordering the Arctic Ocean are: Russia, Norway, Iceland, Greenland, Canada and the United States. +Climate. +The Arctic Ocean is in a polar climate. Winters are characterized by the polar night, cold and stable weather conditions, and clear skies. +The temperature of the surface of the Arctic Ocean is fairly constant, near the freezing point of seawater. Arctic Ocean consists of saltwater but its salinity is less than other oceans. The temperature must reach −1.8 °C (28.8 °F) before freezing occurs. +Ice covers most of the Arctic Ocean. It covers almost the whole ocean in late winter and the majority of the ocean in late summer. Much of the Arctic ice pack is covered in snow for about 10 months of the year. The maximum snow cover is in March or April — about 20 to 50 cm (7.9 to 19.7 in). +The climate of the Arctic region has varied significantly in the past. As recently as 55 million years ago, during the eocene epoch, the region reached an average annual temperature of 10–20 °C (50–68 °F). The surface waters of the Arctic Ocean warmed enough to support tropical lifeforms. +Animal and plant life. +Endangered marine species in the Arctic Ocean include walruses and whales. The area has a fragile ecosystem. The Arctic Ocean has relatively little plant life except for phytoplankton. Phytoplankton are a crucial part of the ocean. They feed on nutrients from rivers and the currents of the Atlantic and Pacific oceans. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/As.txt b/.github/workflows/data/simplewiki-500/As.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Asia.txt b/.github/workflows/data/simplewiki-500/Asia.txt new file mode 100644 index 000000000..75d525af3 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Asia.txt @@ -0,0 +1,10 @@ +Asia is the largest continent on Earth by area and number of people. It is mainly in the northern hemisphere. Asia is connected to Europe in the west and Africa on the south.Sometimes Asia and Europe are combined to form a larger continent called Eurasia. Some of the oldest human civilizations began in Asia, for example Sumer, China, and India. Asia was the birthplace of many religions, for example Hinduism, Zoroastrianism, Judaism, Jainism, Buddhism, Confucianism, Taoism, Christianity, Islam, and Sikhism. It was also home to some large empires, for example the Persian Empire, the Mughal Empire, the Mongol Empire, and the Ming Empire. It is home to at least 44 countries. Georgia, Russia, Azerbaijan, Kazakhstan, Turkey, and Greece have territory in both Europe and Asia. +Area. +Asia includes a large amount of land. Covering about 30% of the world's land area, it has more people than any other continent, with about 60% of the world's total population. Stretching from the icy Arctic in the north to the hot and steamy equatorial lands in the south, Asia contains huge, empty deserts, as well as some of the world's highest mountains and longest rivers. +Asia is surrounded by the Mediterranean Sea, the Black Sea, the Arctic Ocean, the Pacific Ocean, and the Indian Ocean. It is separated from Europe by the Pontic Mountains and the Turkish Straits. A long, mainly land border in the west separates Europe and Asia. This line runs north–south down the Ural Mountains in Russia, along the Ural River to the Caspian Sea, and through the Caucasus Mountains to the Black Sea. +List of countries in Asia. +<templatestyles src="Div col/styles.css"/> +Some countries are in both Europe and Asia, for example Russia, Georgia, Kazakhstan, and Turkey. The Sinai Peninsula of Egypt is in western Asia. The rest of the country is in North-East Africa. +There are some other countries in Asia with limited recognition. Many countries do not recognize them as separate countries. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Atlantic Ocean.txt b/.github/workflows/data/simplewiki-500/Atlantic Ocean.txt new file mode 100644 index 000000000..35da3f4f0 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Atlantic Ocean.txt @@ -0,0 +1,19 @@ +The Atlantic Ocean is the world's second largest ocean. It covers a total area of about . It covers about 20 percent of the Earth's surface. It is named after the god Atlas from Greek mythology. +Geologic history. +The Atlantic formed when the Americas moved west from Eurasia and Africa. This began sometime in the Cretaceous period, roughly 135 million years ago. It was part of the break-up of the supercontinent Pangaea. +The east coast of South America is shaped somewhat like the west coast of Africa, and this gave a clue that continents moved over long periods of time (continental drift). The Atlantic Ocean is still growing now, because of sea-floor spreading from the mid-Atlantic Ridge, while the Pacific Ocean is said to be shrinking because the sea floor is folding under itself or subducting into the mantle. +Geography. +The Atlantic Ocean is bounded on the west by North and South America. It connects to the Arctic Ocean through the Denmark Strait, Greenland Sea, Norwegian Sea and Barents Sea. It connects with the Mediterranean Sea through the Strait of Gibraltar. +In the southeast, the Atlantic merges into the Indian Ocean. The 20° East meridian defines its border. +In the southwest, the Drake Passage connects it to the Pacific Ocean. The Panama Canal links the Atlantic and Pacific. +The Atlantic Ocean is second in size to the Pacific. It occupies an area of about . The volume of the Atlantic, along with its adjacent seas (the seas next to it), is 354,700,000 cubic kilometres. +The average depth of the Atlantic, along with its adjacent seas, is . The greatest depth is Milwaukee Deep near Puerto Rico, where the Ocean is deep. +The RMS Titanic currently rests at the bottom of the Atlantic Ocean. +Gulf Stream. +The Atlantic Ocean has important ocean currents. One of these, called the Gulf Stream, flows across the North Atlantic. Water gets heated by the sun in the Caribbean Sea and then moves northwest toward the North Pole. This makes France, the British Isles, Iceland, and Norway in Europe much warmer in winter than Newfoundland and Nova Scotia in Canada. Without the Gulf Stream, the climates of northeast Canada and northwest Europe might be the same, because these places are about the same distance from the North Pole. +There are currents in the South Atlantic too, but the shape of this sea means that it has less effect on South Africa. +Geology. +The main feature of the Atlantic Ocean's seabed is a large underwater mountain chain called the Mid-Atlantic Ridge. It runs from north to south under the Ocean. This is at the boundary of four tectonic plates: Eurasian, North American, South American and African. The ridge extends from Iceland in the north to about 58° south. +The salinity of the surface waters of the open ocean ranges from 33–37 parts per thousand and varies with latitude and season. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Basket.txt b/.github/workflows/data/simplewiki-500/Basket.txt new file mode 100644 index 000000000..a5867942b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Basket.txt @@ -0,0 +1,5 @@ +A basket is a container. It is usually light in weight. +Basket makers use a wide variety of materials to create a basket, such as bark, willow rods, leaves, wire, plastic, paper, and rope. There are three basic kinds of baskets—coiled, twined, or woven. A woven basket is made of spokes and weavers: the spokes run up and down and the weavers go over and under the spokes. A coiled basket is made by sewing rings of a fibrous material to the previous ring. Twined baskets have flexible weavers that are twined around the spokes in a variety of patterns. +Basketmaking is a very old practice; it features in myths from various cultures. Baskets were often used to carry fruits, berries, and other things to be gathered. Nowadays, baskets are less practical but still common. Ancient baskets can be found in many cultures. Basket weaving is one of these activities, either for practical use or fun. In Native American culture, basket weaving is a common activity. +In basketball, the basket is an open net fixed to a metal ring in which players try to throw the ball. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Bed.txt b/.github/workflows/data/simplewiki-500/Bed.txt new file mode 100644 index 000000000..26fc8a251 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Bed.txt @@ -0,0 +1,12 @@ +A bed is an item of furniture that people sleep on. It normally has a soft mattress on a bed frame. Many beds also have bed sheets to cover the mattress and additional sheets for the people to sleep under. People also use a pillow under their heads. A bed comes in many different sizes including a single, double and king size. +History. +In August 2020 archaeologists reported the discovery of the oldest grass bedding from Middle Paleolithic (at least 200,000 years ago). This was much older than the oldest previously known bedding. +They found insect-repellent plants and ash layers beneath the bedding. This would have made a dirt-free, insulated base which helped to keep away insects. So early beds were little more than piles of straw or some other natural material (e.g. a heap of palm leaves, animal skins, or dried ferns). +Here's an example of what they said: "Several cultures have used ash as an insect repellent because insects cannot easily move through fine powder. Ash blocks insects' breathing and biting apparatus, and eventually dehydrates them. "Tarchonanthus" (camphor bush) remains were on top of the grass from the oldest bedding in the cave. This plant is still used to deter insects in rural parts of East Africa". +Mattresses stuffed with feathers were first used in Ancient Rome. +In Ancient Egypt, beds were considered to be status symbols. While the lower classes simply slept on a heap of palm bows or straw, the wealthy constructed wood platform beds that were ascended by stairs, were often curtained, and piled high with cushions for comfort. +In Ancient Rome, the bed was utilized as a multi-purpose reclining surface rather than just a place to sleep. Several beds, or "dining couches" were arranged around the perimeter of the home's living space, and friends and family would recline in bed while socializing, studying, and dining. +Types of beds. +There are several kinds of bed in use today. Several terms refer to the size of the mattress. Some kinds are usually temporary, such as camp cots, air mattresses, and hammocks. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Beer.txt b/.github/workflows/data/simplewiki-500/Beer.txt new file mode 100644 index 000000000..3bfe3ec7c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Beer.txt @@ -0,0 +1,17 @@ +"Beer is also the name of a place in Devon, England - Beer (Devon)" +Beer is a type of alcoholic drink. It is made with water, hops, barley (types of cereal grains), and types of yeast (a fungus that produces alcohol). A process called fermentation turns sugar into alcohol, using yeast. Another product of the fermentation is carbon dioxide. +In general, all alcoholic drinks where yeast turns sugar into alcohol are called "beer". In these cases, distillation is not used. The difference to wine is that with wine, sugars from plants, such as fruit sugar, or that made by animals is used. As an example, mead is a wine made from honey. Japanese sake is made from rice, and uses yeast for fermentation; so even if some people call it "rice wine", sake is really a kind of beer. +Making beer. +The act of making beer is called "brewing". Beer is made by adding warm water to malted barley and other grains. The enzymes in the barley change the malted barley and other grains into simple sugars. This is called mash. The water is then sparged (drained) from the grain. The water is now called wort. The wort is boiled and hops are added. Hops provide flavour and preserve the beer. After boiling the wort, it is cooled and yeast is added. The yeast turns the sugars into alcohol and the wort into beer. +Different beers can have different natures, depending on the ingredients used; for example, an ale uses top fermenting yeast. Top fermenting yeasts eat more sugar and produce more alcohol. A lager uses bottom fermenting yeast. Bottom fermenting yeasts eat less sugar and produce a crisper, cleaner taste. Adding hops makes the beer more bitter and aromatic. Specialty malts (different types of cooked barley) produce different flavours and colours. These flavours and colours are most notable in dark beers like Porter and Stout. +Different countries have different ways to make beer. In Germany, Austria, Switzerland, Czech Republic, and Slovakia, beer is usually made from just hops, malt, water, and yeast. This is because of the Reinheitsgebot. The Reinheitsgebot was a law that said says that beer can only be made from hops, malt, and water. Yeast was discovered after the Reinheitsgebot. The law was overturned by the European Union in 1992. In Belgium, however, beers have always been made with wheat, sugar, fruit, and other ingredients. +Different ways to make beer. +The type of yeast used determines the kind of beer made: +History of beer. +Beer has been made since prehistoric times. Around 10,000 BCE, early humans began to store food and supplies. They settled in one spot, and gathered grains that naturally grew there. Then, by accident, the ancient humans discovered that the grains, especially barley, became some pleasant liquid, now called beer. At first, the early people thought that the making of beer was spontaneous (sudden and unnatural), but now we know that the fermentation by yeast chemically formed beer. +Mesopotamia was the first civilisation that ever made beer, at 7000 BCE and the Sumerians were probably the first people to brew beer. The earliest records of beer were written around 7000 years ago by the Sumerians. They began adapting beer, by adding berries, adding or reducing the amount of fermented grain, and making other experiments with the beverage. One seal (paper that is stuck on beer) around 4,000 years old is a Sumerian "Hymn to Ninkasi", the goddess of brewing. This "hymn" is also a recipe for making beer. A description of the making of beer on this ancient engraving in the Sumerian language is the earliest account of what is easily recognised as barley, followed by a pictograph of bread being baked, crumbled into water to form a mash, and then made into a drink, that is recorded as having made people feel "...wonderful and blissful". It could even be possible that bread was first baked to be a way to make beer that is easy to carry around. They had found a "divine drink" -- they felt it was a gift from the gods. +Beer and Bread. +Ancient beer makers used a kind of hard bread made from barley called 'bappir', meaning beer-bread. This was used by the Egyptians to control the colour, density, and taste of beer. While it was usually not eaten, Bappir was sometimes consumed during times of famine. +Some historians argue that bread was invented after beer to make it taste better, while others say that bread came first, and accidentally used in the process of brewing beer. +Amount of alcohol in beer. +"Normal" beers have around 3-6 % alcohol (for the volume, i.e. in 100ml beer there is 3-5ml alcohol). In brewing beer, the amount of alcohol can be made more or less quite easily. The Belgian types of beer are made by adding more sugar. Through the fermentation, this will then turn to alcohol. Today, there are beers with between 2% and about 16% of alcohol (about the same alcohol content as wine). Spirits can have up to 80% alcohol. Some beer labels say there is no alcohol in them because it was taken out later. This is not completely true, though. Beers "without alcohol" usually do have less than 1% of alcohol. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Bootlace.txt b/.github/workflows/data/simplewiki-500/Bootlace.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Bootstrap.txt b/.github/workflows/data/simplewiki-500/Bootstrap.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Britain.txt b/.github/workflows/data/simplewiki-500/Britain.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Butter.txt b/.github/workflows/data/simplewiki-500/Butter.txt new file mode 100644 index 000000000..a7688a26e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Butter.txt @@ -0,0 +1,12 @@ +Butter is a dairy food. It is made by moving the milk from whole cream for a long time. The fat in the cream separates from the liquid. The fat is butter. +Butter is often put on bread, as a main ingredient in biscuits, as a shortening agent in some baking and cooking recipes, and for frying foods. +Often, butter is made from cows' milk, butter can also be made from the milk of other mammals, like sheep, goats, bison, and yaks. Salt, flavorings and preservatives are sometimes added to butter. +Many people use butter in their foods instead of oil. +It has a melting point of about . +There are 717 calories in of butter. +Types. +Cultured butter is a butter made from fermented cream. Sweet cream butter is butter made from pasteurized fresh cream. Raw cream butter is butter made from fresh or cultured unpasteurized cream. +References. +<templatestyles src="Reflist/styles.css" /> +Other websites. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Capital city.txt b/.github/workflows/data/simplewiki-500/Capital city.txt new file mode 100644 index 000000000..2bb0ec40e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Capital city.txt @@ -0,0 +1,17 @@ +A capital city, or capital town or capital, is a city or town, specified by law or constitution, by the government of a country, or part of a country, such as a state, province, or county. It usually serves as the location of the government's central meeting place and offices. +Most of the country's leaders, embassy and officials work in the capital city. This does not have to be the case though: Monaco, Nauru, Switzerland and Vatican City are examples of countries that do not have a capital city. Israel said Jerusalem was its capital: Most countries do not recognise this, and most embassies are in Tel Aviv. In Japan, the city of Tokyo, which was the capital, was disbanded in 1943. Today, the 23 city districts (called wards) have the role of capital city. Each district is a city of its own, though. "Capital city" can also mean a city most famous for something, in this case, Capital of the World is a nickname. +Size. +Capitals are usually among the largest cities in their regions and often are the biggest. For example, Montevideo is Uruguay's capital and its biggest city. The capital may also be the most important center of commerce, as in London or Bangkok. +However, a capital is not always the largest city in a country. For example, the capital of India is New Delhi, which is smaller than Mumbai. +In countries with subdivisions like the United States, the capitals of the federated states are often not the biggest cities. For example, New York City is the biggest city in the United States and in New York State, but is not the capital of either. The capital of the country is Washington, DC, and the capital of the state is Albany. +There is an unusual case in Canada since the federal capital, Ottawa, is not the largest city in its province, Ontario; Toronto is the largest city in Ontario. Toronto is the capital of Ontario, so Toronto is a provincial capital but not a federal one. +Number. +Some countries have more than one capital for different purposes. For example, Bolivia has two (Sucre and La Paz) and South Africa has three (Pretoria, Cape Town, and Bloemfontein). In a city-state like Singapore, Monaco, and the Vatican City, the capital is the country. +Not all countries have capitals. Nauru is a country that does not officially have a capital, but the district of Yaren, which is where the government is, can be called the "de facto" capital. Also, although many people consider the city of Bern in Switzerland to be the capital of the country, it is by law not the capital but the "." +Location. +Countries can make capitals from cities that are already there, like Athens or Rome; or a new town can be built and made the capital, like Canberra and Alexandria. Countries can change capitals from time to time. Several cities have been the capital of China. The United States once had its capital in Philadelphia and later in New York City but moved to the new city of Washington, D.C. in 1800. Rio de Janeiro was the capital of Brazil until the new city of Brasilia was built between 1956 and 1960. +Reykjavík, the capital of Iceland, is the world's northernmost capital city. +Seat of government. +Most countries have their seat of government within their capital. However, Malaysia has its capital at Kuala Lumpur, but its seat of government is at Putrajaya. In the Netherlands, the constitution calls Amsterdam the capital, but the seat of government is The Hague. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Capitalize.txt b/.github/workflows/data/simplewiki-500/Capitalize.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Chinese language.txt b/.github/workflows/data/simplewiki-500/Chinese language.txt new file mode 100644 index 000000000..5fa29d017 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Chinese language.txt @@ -0,0 +1,18 @@ +The Chinese language is the group of languages used by Chinese people in China and elsewhere. It forms part of a language family called the Sino-Tibetan family of languages. +Chinese includes many regional language varieties, the main ones being Mandarin, Wu, Yue and Min. These are not mutually intelligible and many of the regional varieties are themselves a number of non-mutually-intelligible subvarieties. As a result, many linguists refer to these varieties as separate languages. +'Chinese' can refer to the written or the spoken languages. Although there are many spoken Chinese languages, they use the same writing system. Differences in speaking are reflected in differences in writing. Official China has a similar policy to the one in the Soviet Union: one official language is used so people can understand each other. The Standard Chinese language is referred to as Mandarin in English, "Pǔtōnghuà" or "common to everybody speech" in mainland China and "Guóyǔ" or "language of the whole country" in Taiwan. All official documents in Pinyin are written in Mandarin and Mandarin is taught all over China. It is also a standard for language teaching in some other countries. +Chinese is used by the Han people in China and other ethnic groups in China who are declared Chinese by the Chinese government. Many people in autonomous regions of China speak other languages. Chinese is almost always written in Chinese characters. They are symbols that have meaning, called logograms. They also give "some" indication of pronunciation, but the same character can get very different pronunciations among the different kinds of Chinese. Since Chinese characters have been around for at least 3500 years, people in places far from each other say them differently, just as "1, 2, 3" can be read differently in different languages. +Chinese people needed to write down pronunciations in dictionaries. Chinese does not have an alphabet, so how to write down sounds was a big problem in the beginning. Nowadays, the Mandarin language uses Hanyu Pinyin to represent the sounds in Roman letters. +All the Chinese languages (or dialects) use tones. This means that they use high and low pitches to help make differences in meaning clear. +Different languages or dialects of Chinese. +The Chinese language is like a big tree. The base of the tree started thousands of years ago. It now has several main limbs. Some people call "just a branch" what other people call a main limb, so you can say there are six or seven main limbs. Each of these main limbs splits off into branches about the way there are branches of English spoken in Great Britain, the United States, Australia, India, Canada, and so forth. Just as the Romance languages all come from the area around Rome and are based on Latin, the Chinese languages all have some common source, so they keep many common things among them. +Here are the main seven main groups of languages/dialects of Chinese by size: +Traditional and simplified characters. +In 1956, the government of the People's Republic of China made public a set of simplified Chinese characters to make learning, reading and writing the Chinese language easier. In Mainland China and Singapore, people use these simpler characters. In Hong Kong, Taiwan and other places where they speak Chinese, people still use the more traditional characters. The Korean language also uses Chinese characters to represent certain words. The Japanese language uses them even more often. These characters are known in Korean as Hanja and in Japanese as Kanji. +A Chinese person with a good education today knows 6,000-7,000 characters. About 3,000 Chinese characters are needed to read a Mainland newspaper. However, people who have learned only the 400 most frequently used characters can read a newspaper—but they will have to guess some less-used words. +Examples. +Here are some samples of some words and sentences in Mandarin Chinese. Simplified Characters are on the left, and Traditional characters are on the right. The pronunciation is given in the pinyin system, which may not always be as simple as it looks for those who have not studied it. +The Traditional Characters are now used in Hong Kong and Taiwan. Chinese from Mainland China uses the Simplified Characters, but may recognize Traditional Characters. +Before 1956, Chinese was written using only Traditional Characters. At that time, most Chinese people could not read or write at all. The government of the People's Republic of China thought that the Traditional characters were very hard to understand. They also thought that if they made the characters simpler, more people could learn how to read and write. Today, many people in China can read and write with the new Simplified Characters. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Cities.txt b/.github/workflows/data/simplewiki-500/Cities.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Classical Elements.txt b/.github/workflows/data/simplewiki-500/Classical Elements.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Climate.txt b/.github/workflows/data/simplewiki-500/Climate.txt new file mode 100644 index 000000000..7f4b070c5 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Climate.txt @@ -0,0 +1,6 @@ +Climate means the usual condition of the temperature, humidity, atmospheric pressure, wind, rainfall, and other meteorological patterns in an area of the Earth's surface for a long time. In simple terms, climate is the average condition for about thirty years. Climate and weather are different: weather is the day to day conditions in the atmosphere. +The types of climates are: Tropical, Desert/dry, Temperate, Polar, Mediterranean. +The latitude, ground, and height can change the climate of a location. It is also important to note if oceans or other large bodies of water are nearby. Climates are most commonly classified by temperature and precipitation. The most commonly used classification was the Köppen climate classification, first made by Wladimir Köppen. The Thornthwaite system, which was used from 1948, not only uses temperature and precipitation information, but evapotranspiration too. This makes it useful for studying how many different kinds of animal species there are, and about the things that could happen when climates change. The Bergeron and Spatial Synoptic Classification systems focus more on where the air masses which help make climates come from. +Climates can change after a long time. Nowadays people are making the world warmer in many places, but not in all: 12/2023 "Beijing shivers through coldest December on record" (BBC). North Korea and Japan are also unusually cold, Decenber 2023. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Cold War.txt b/.github/workflows/data/simplewiki-500/Cold War.txt new file mode 100644 index 000000000..fdd39a8ee --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Cold War.txt @@ -0,0 +1,35 @@ +The Cold War (1947-1991) was the tense fighting between the United States and its allies and the Soviet Union (also called the USSR) and its allies between the end of World War II and the fall of the Soviet Union. It is called the "Cold" War because the Americans and the Soviet Union never actually fought each other directly. Instead, they attacked each other in conflicts known as proxy wars in which powerful countries fight a foreign war but do not send their own troops. Both sides built large militaries with many new weapons and advanced technology. They spied on and threatened each other. +Conflicting countries. +Most of the countries on one side were allied by NATO, whose most powerful country was the United States. Most of the countries on the other side were allied by the Warsaw Pact, whose most powerful country was the Soviet Union. +The Western Bloc was the name of the capitalist countries led by the United States. The North Atlantic Treaty Organization (NATO) is an alliance created in 1949 and included the United States, the United Kingdom, France, West Germany, Canada, Netherlands, Belgium, Luxembourg, Spain, Portugal, Italy, Norway, Denmark, Greece, and Turkey. Other countries allied with the Western Bloc include Israel, Brazil, South Korea, Kenya (1960-1991), Bangladesh (1964-1968), Pakistan, North Yemen, Malaysia, Saudi Arabia, Philippines, South Africa, Australia and New Zealand. +The Eastern Bloc was the group of communist countries led by the Soviet Union. The Warsaw Pact was an alliance created in 1955 and included the USSR, Albania, Bulgaria, Czechoslovakia, East Germany, Hungary, Poland, and Romania. Other countries allied with the Eastern Bloc included Angola (1975–1991), Cuba, Afghanistan, Bolivia, Cambodia (1977–1979), South Yemen, Tunisia, Nepal, Libya (1974–1991), Mongolia, Jamaica, North Korea, North Vietnam, China and Laos (1975–1991). +Background. +In February 1917, Tsar Nicholas II of the Russian Empire was overthrown because people were unhappy with their living conditions (like being a serf), especially during World War I. The new government in Russia was a democratic socialist government. Unfortunately, it was ineffective, and people were still unhappy. In November 1917, a communist group called the Bolsheviks, led by Vladimir Lenin, overthrew the new government and were supported by groups of workers called Soviets. The Bolsheviks created a new communist government called the Russian Soviet Federation Socialist Republic (also called simply Soviet Russia or the Russian SFSR). +However, not everyone supported the communists. Many countries that had been part of the Russian Empire had left, such as Belarus, Estonia, Latvia and Lithuania. The Russian Civil War began, with the Soviet Russian Red Army fighting against the White Army of anticommunist Russians. The White Army was not very united or organized. The Allied Parts of World War I, such as the United States, the United Kingdom, and France, invaded Russia to support the White Army and stop the Red Army. The Red Army eventually won the war in 1922, and established the Union of Soviet Socialist Republics (also called the Soviet Union), along with the newly formed Socialist Republics of Ukrainian SSR, Armenian SSR, Azerbaijan SSR and Georgian SSR. +World War II. +The start of the Cold War in 1947 was caused by a belief that all governments would become either communist or capitalist. The Western Allies feared that the Soviet Union would spread communism to the rest of Europe and was very concerned that Soviet agents had learnt how to make atomic bombs after the war. +Both nations had opposed Nazi Germany although the United States worked with Nazi scientists and Soviet Union had chosen not to fight with Germany in the Molotov-Ribbentrop pact and the two occupied Poland in 1939. However, Germany turned against the Soviet Union in June 1941 and invaded it during Operation Barbarossa. +After World War II. +After World War II, Germany was left in ruins. The victorious Allies that occupied it split it into four parts. in the western half of Germany, one part was given to the United States, one to the United Kingdom, and one to France. The eastern half was occupied by the USSR. The city of Berlin was also split among the four countries even though it was entirely within the eastern half. +The Federal Republic of Germany ("Bundesrepublik Deutschland" or BRD), or West Germany, was recognized by the Western Allies in June 1949 and was a capitalist democracy. West Berlin was considered a part of the country. The Soviets named their section of Germany the German Democratic Republic ("Deutsche Demokratische Republik" or DDR), or East Germany, later in 1949 was established, and was a socialist state. +From April 1948 to May 1949, the Soviets blockaded West Berlin to prevent the city from using West Germany's currency. The United States and its allies supplied the city by airplanes until September 1949 in what became known as the Berlin Airlift. Many East Germans wanted to live in West Germany for having greater quality of life and political freedom. In 1961, the East German government built the Berlin Wall, dividing the two halves of the city, and heavily guarded it to prevent more people from escaping to the west. The wall was considered a symbol of the Cold War and the Iron Curtain that divided Europe. +Khrushchev era (1953–1964). +Espionage, or "spying," has been around for a long time and was very important during the Cold War. After its successful nuclear espionage in the Manhattan Project, the Soviets created their spy organs, especially the KGB. The CIA led Americans efforts abroad, and the FBI led counterespionage. Catching foreign spies and fighting domestic subversion were KGB functions. +In 1953, the Soviet leader Joseph Stalin died, and Nikolai Bulganin and Nikita Khrushchev took his place. Khrushchev later took sole control of the Soviet Union. Khrushchev's Secret Speech marked a period of de-Stalinization, and Khrushchev tried to undo many of the things done by Stalin (such as the Gulag prisons and Stalin's cult of personality). +In the United States, there was a "Red Scare", and when the Soviets detonated their own atom bomb, there was a big political fallout and the United States government made everybody scared about communists. Famous people in many fields who had been Communist sympathizers in the past like Larry Adler lost their positions. Many actors were 'blacklisted' and so were not hired to act in movies, which ruined their careers. US Senator Joseph McCarthy was believed by many when he accused some important Americans of being communists, including some high government officials. +The 1950s were the beginning of the Space Race between the United States and the Soviet Union. It began when the Soviets put the first satellite, Sputnik 1, into orbit around Earth. They were the first country to send a vehicle into space. The United States responded by starting NASA and soon sent up its own satellites. The Soviets also sent the first man (Yuri Gagarin) into Earth orbit and claimed that proved communism to be the better ideology. +In the 1950s, the United States (under President Dwight Eisenhower) created a policy called "New Look" to cut defense spending and to increase the number of nuclear weapons as a deterrent in order to prevent the Soviet Union from attacking the West. The Soviets also increased their nuclear force, which resulted in mutual assured destruction. +In the Suez Crisis of 1956, the Cold War alliances were broken in an important way for the first time with the Soviet Union and United States favoring one side and Britain and France the other. The Western Allies also decided to let Soviet troops suppress the Hungarian Revolution of 1956. +US vice-president Richard Nixon engaged in several talks with Khrushchev during the 1950s. One of these was the 1959 "Kitchen Debate" in a model kitchen in Moscow. The debates highlighted the political and economic differences between the Americans and the Soviets. The following year, the United States U-2 spy plane crashed in the Soviet Union. Tensions between the two countries increased. +Cuban Missile Crisis (1962). +After the United States had invaded Cuba and failed in the Bay of Pigs, the Soviet Union attempted to supply Cuba with nuclear missiles. The missiles in Cuba would have allowed the Soviet Union to target almost the entire United States effectively. In response the United States sent a large number of ships to blockade Cuba to prevent the Soviet Union from sharing the weapons. The United States and Soviet Union agreed that the Soviet Union would no longer give nuclear weapons to Cuba if the United States didn't invade Cuba again. That was the highest period of tension during the Cold War and was the closest the world came to a nuclear war, with possible global conflict to follow. +Détente (1962–1981). +After the agreement that ended the Cuban Missile Crisis, relations between both sides eased up. Several treaties, designed to reduce the number of nuclear weapons, were signed. In 1964, the US under President Lyndon Johnson invaded North Vietnam, which resulted in a humiliating defeat for the Americans and South Vietnam in 1975. During this period of détente, the United States began building a good relationship with the People's Republic of China, which had once been an ally of the Soviet Union. +End of the Cold War (1981–1991). +The policy of détente ended in 1981, when US President Ronald Reagan ordered a massive military build-up to challenge Soviet influence around the world. The United States began to support anti-communists all over the world with money and weapons. The idea was to help them overthrow their communist governments. +The Soviets had a slow economy during this decade because military spending was at an all-time high. They tried to keep up with the United States in military spending but could not do so. In the Soviet war in Afghanistan, which started in 1979, the Soviets had a difficult time fighting resistance groups, with some of them armed and trained by the United States. The Soviets' failed invasion of Afghanistan is often compared to the American failure during the Vietnam War. +In the late 1980s, the new Soviet leader, Mikhail Gorbachev, made an effort to make an ally of the United States to fix world problems caused by the war, with the ultimate aim of eliminating nuclear weapons. However, that did not take place because Reagan insisted on having a nuclear missile defence system. The people of the Soviet Union were divided. Some wanted Gorbachev to fight harder to eliminate nuclear weapons, but others did not want him to be talking to the United States at all. The mixed feelings created an atmosphere of political infighting, and the people were no longer united behind one goal. Also, the Communist Party started to crumble. +After the fall of the Berlin Wall in 1989 and without communist rule holding together the countries that comprised the Soviet Union, it was divided into smaller countries in 1991 like Russia, Ukraine, Lithuania and Georgia. Eastern Europe got very poor and broken and returned to capitalism. The Cold War was over. +Not all historians agree on when the Cold War ended. Some think it ended when the Berlin Wall fell, but others think it ended when the Soviet Union collapsed in 1991. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Container.txt b/.github/workflows/data/simplewiki-500/Container.txt new file mode 100644 index 000000000..7cd405710 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Container.txt @@ -0,0 +1,3 @@ +A container is an object used for holding something. People put things in a container. The use of shipping containers is called Containerization. +Types of container. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Coordinated Universal Time.txt b/.github/workflows/data/simplewiki-500/Coordinated Universal Time.txt new file mode 100644 index 000000000..ccd95c8a0 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Coordinated Universal Time.txt @@ -0,0 +1,9 @@ +Coordinated Universal Time (or UTC) is the standard time system of the world. It is the standard by which the world regulates clocks and time. It is, within about 1 second, mean solar time at 0° longitude. +The standard before was Greenwich Mean Time (GMT). UTC and GMT are almost the same. In fact, there is no practical difference which would be noticed by ordinary people. +Some websites, for example Wikipedia, use UTC because it does not make any country look more important than the others. It offers one time for all the Internet (the same time can be used by people all over the world). +Time zones are often named by how many hours they are different from UTC time. For example, UTC−5 (United States east coast) is 5 hours behind UTC. If the time is 07:00 UTC, the local time is 02:00 in New York (UTC−5) and 10:00 in Moscow (UTC+3). +07:00 UTC is also written more simply as 0700Z (or 07:00Z). +Note that UTC uses the 24-hour clock. That means there is no 'AM' or 'PM'. For example, 4:00PM would be 16:00 or 1600. UTC also does not use daylight saving time - that way the time stays consistent the entire year. +When this page loaded, it was , 2025 16, 15:59:02 in UTC. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Copyright.txt b/.github/workflows/data/simplewiki-500/Copyright.txt new file mode 100644 index 000000000..44a74f42c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Copyright.txt @@ -0,0 +1,30 @@ + Copyright or ©️ is a law that gives the work (for example, a book, movie, television programs, picture, song or website) an ownership. Copyright laws make it easier for owners to make money by selling their works. It is one part of a group of laws about intellectual property (the others being trademark and patent law). It helps protect authors from other people copying their works without permission and/or for commercial purposes. +With copyright, a work can only be copied if the owner gives permission. If someone copies a work without permission, the owner can say they infringed their copyright. When this happens, the owner may sue for the amount that should have been paid. Most cases are handled by civil law. In more serious cases, a person who copies a work that is protected under copyright could be arrested, fined or even go to prison. Commonly, the copyright law will protect the authors and their heirs for 50 to 100 years since the author's death, or the first day of multiple authors' deaths. +Many countries have modified their copyright law to meet international standards. However, there are still differences in national laws. In some countries, someone violating copyright law will be sued only to the civil law courts but other countries they can also be charged by criminal courts. +History. +Before printing presses were made, books could only be copied by hand, which took time. But when printing presses were made, books could be copied faster and easier. Because of this, some books were copied by people who did not own the book themselves. So, lawmakers in the 18th century gave only owners the right to copy. National laws were somewhat standardized by international treaties such as the Berne Convention of 1886. +Because technology got better over time, copyright began to cover other types of media such as pictures, sound, and film. Commonly, copyright violation warning would be shown at the beginning of the media to warn audiences against violating copyright law. +Who owns copyright? +In most countries, authors automatically own the copyright to any work they make or create, as long as they do not give the copyright to someone else. +In most countries, there is no need to register the copyright, and some countries do not even have procedures to register copyrights. But, where registration is available, many authors register anyway, especially for works that are sold for money. That is because registration helps to prove that the copyright of a work belongs to a certain author. +If an author gets paid to make a work for someone else, the person who pays for making the work (for example, the author's employer) will often get to own the copyright instead of the author themselves. For example, if a person working for a company, Microsoft creates a new computer software program at work, the Microsoft company would own the copyright. It is very common that the company will instead register the copyright to avoid their employees from claiming their works. +Length of copyright protection. +Copyright laws usually protect owners of copyright beyond their lifetime. In some countries, such as Canada and New Zealand, works are protected for 50 years after the last living author dies. In other countries, like the United States and the European Union, the protection lasts for 70 years after death. When the period of copyright protection has ended, the written document, musical composition, book, picture, or other creative work is in the public domain. This means that no one owns the copyright and everyone is free to copy, use and change them without having to ask for permission or pay the owner. +Fair use. +There is an exception to the rules of copyright, called fair use. This means that people can copy a very small amount of a work to use in reviews or in research reports. +An example of fair use is when newspaper writers quote several sentences from a copyright-protected document to tell the story. Another example of "fair use" is when a university professor quotes several sentences from a copyright-protected book in a review of the book, or in a research report. +Copyright in different countries. +Different countries have different copyright laws. Most of the differences are about: +Because of these differences, a certain piece of work may be under copyright in one country, and in the public domain in another. +Problems with copyright. +Creativity. +Some people argue that copyright laws make it easier for people to make new works and think of new ideas. After all, if authors get to make money for the time, effort and money they put in, then they will want to make more works later, and make more money. +But others believe that copyright laws make it harder to be creative. Without copyright, other people could reuse existing work, and copyright law often stops that. +Publisher control. +If an author wants to sell a work, it's often easiest to give the copyright to a publisher. The publisher will do all the selling, and in return for that service, will keep part of the money. But the publisher has many different things to sell, and they may not want to sell the work the author made. Authors often find it very hard to find a publisher willing to sell their work. +But without a publisher, it can be even harder for an author to sell his or her work. In many markets, a few big publishers own the copyrights to almost everything available, and stores will not want to sell works published by small authors themselves. Many people say copyright law helps big publishers stay in control, and keeps smaller authors out of the market. (tragedy of the anticommons). +Open content. +As a solution to these problems, groups of authors have come up with the idea of open content. With open content, authors give everyone permission to copy, change and give away or sell their works, as long as they follow certain rules. These rules are explained in an open content license. Some possible open content rules are: +The term for Open Content is sometimes called Copyleft. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Countries.txt b/.github/workflows/data/simplewiki-500/Countries.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Data Device.txt b/.github/workflows/data/simplewiki-500/Data Device.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Degree (geometry).txt b/.github/workflows/data/simplewiki-500/Degree (geometry).txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Dimensions.txt b/.github/workflows/data/simplewiki-500/Dimensions.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Dollar.txt b/.github/workflows/data/simplewiki-500/Dollar.txt new file mode 100644 index 000000000..392bb2976 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Dollar.txt @@ -0,0 +1,5 @@ +A dollar is a type of currency. Many countries have named their money "the dollar", so it is important to say which dollar is being talked about. The symbol for the dollar is a capital letter S, pierced by one or two vertical lines ($). +History. +The dollar is named after the thaler. The thaler was a large silver coin first made in the year 1518. The thaler named after the Joachimsthal (Joachim's valley) mine in Bohemia ("Thal" means valley in German). The later Spanish Peso was the same size and was often called "Spanish dollar" and the similar coin of the Dutch Republic was called “lion dollar”. In the 18th century it became a world currency. Many national currencies were originally Spanish dollars including the ones now called dollar or peso and the Japanese yen and Chinese Renminbi. +List of dollars. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/EAL.txt b/.github/workflows/data/simplewiki-500/EAL.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/ESL.txt b/.github/workflows/data/simplewiki-500/ESL.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Elements.txt b/.github/workflows/data/simplewiki-500/Elements.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/English As A Second Language.txt b/.github/workflows/data/simplewiki-500/English As A Second Language.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Etc..txt b/.github/workflows/data/simplewiki-500/Etc..txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Etc.txt b/.github/workflows/data/simplewiki-500/Etc.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Eurasia.txt b/.github/workflows/data/simplewiki-500/Eurasia.txt new file mode 100644 index 000000000..60cf78ac7 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Eurasia.txt @@ -0,0 +1,8 @@ +Eurasia is the combined landmass of Europe and Asia in the northern part of Earth. It has the Atlantic Ocean on its west, and the Pacific Ocean to the east. The Arctic Ocean is to its north, and the Mediterranean and Indian Ocean to its south. It is the largest of the continents. Its name comes from adding the "Eur" from "Europe" to "Asia". It and Africa form a part of the world called "Afro-Eurasia". +Some geographers say Eurasia is one continent, because Europe and Asia are mostly on the same tectonic plate and do not have a sea between them. The Ancient Greeks divided the world they knew into Europe, Asia and Africa. To them, the Aegean Sea was the division between the Balkan Peninsula in Europe and Asia Minor in Asia. North of the Sea of Marmara, the Greeks thought the lands on the western side of the Black Sea was Europe and the eastern side was Asia. The ancient Greeks did not know very much about the lands north of the Black Sea. Since Classical Antiquity, people have talked about Asia and Europe separately, so it is now a tradition to see them as two continents. +Some other continents, which are not completely divided by sea, are joined by a thin strip of land (called an isthmus). An example is North America and South America, which are connected by the Isthmus of Panama. Europe and Asia are not divided by a sea, nor by any isthmus. +Outside of geological definitions, Eurasia also includes the Indian subcontinent and the Arabian Peninsula. +Sometimes Eurasia is divided into West Eurasia and East Eurasia. Here, the dividing line is the Ural Mountains. West Eurasia includes Europe and the Middle East. Historians sometimes add North Africa to West Eurasia, because the Sahara Desert divides North Africa from Sub-Saharan Africa, and it is as difficult to cross as a sea. Also, North Africa is culturally linked to Europe by the Mediterranean Sea. +List of countries. +<templatestyles src="Div col/styles.css"/> +The OECD’s Eurasia activities involve 13 countries extending from the borders of the European Union to the Far East: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Experiments.txt b/.github/workflows/data/simplewiki-500/Experiments.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Flaming.txt b/.github/workflows/data/simplewiki-500/Flaming.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Flesch-Kincaid Reading Level.txt b/.github/workflows/data/simplewiki-500/Flesch-Kincaid Reading Level.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Fog Index.txt b/.github/workflows/data/simplewiki-500/Fog Index.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Fold (geology).txt b/.github/workflows/data/simplewiki-500/Fold (geology).txt new file mode 100644 index 000000000..1ea442fcb --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Fold (geology).txt @@ -0,0 +1,16 @@ +Rock often deforms in such a way that it bends instead of breaking. This is called a fold. The term fold is used in geology when one or a stack of originally flat, level surfaces, such as sedimentary strata, are bent or curved as a result of pressure and high temperature. The basic cause is likely to be some aspect of plate tectonics. +When two forces act towards each other from opposite sides, rock layers are bent into "folds". How folds are formed due to compression is known as folding. Folding is one of the endogenetic processes; it takes place within the Earth's crust. +Folds in rocks vary in size from microscopic crinkles to mountain-sized folds. They occur singly as isolated folds and in extensive fold trains of different sizes, on a variety of scales. A set of folds distributed on a regional scale constitutes a "fold belt", a common feature of orogenic zones. +There are large-scale and small-scale folds. Large-scale folds are found mainly along a collision boundary between two tectonic plates. +Structure of a fold. +The upfold is called an anticline. The downfold is called a syncline. +The imaginary line joining the highest points along the upfold is called the crest line. +The flanks of a fold are known as the limbs. +The central line from which the rock strata dip away in opposing directions is called the axis of fold. +According to the degree of folding of the layers, folds can be classified into five main types. +Formation of a fold mountain. +Large depressions called geosynclines form between plates. Seas filled the geosynclines and rivers flowing into them carried sediments (sand and silt) which build up on the sea bed. +Over millions of years the sediments were compressed, by their own weight, into sedimentary rocks, e.g. sandstone, limestone etc. +Landforms formed by folding. +Large-scale folding will develop parallel ranges of round-top mountains along destructive plate boundaries. These mountains are known as fold mountains. +Examples of fold mountain ranges: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Freedom.txt b/.github/workflows/data/simplewiki-500/Freedom.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/GFDL.txt b/.github/workflows/data/simplewiki-500/GFDL.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Goodness.txt b/.github/workflows/data/simplewiki-500/Goodness.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Hard Science.txt b/.github/workflows/data/simplewiki-500/Hard Science.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Human death.txt b/.github/workflows/data/simplewiki-500/Human death.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/IP address.txt b/.github/workflows/data/simplewiki-500/IP address.txt new file mode 100644 index 000000000..bfa53d97d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/IP address.txt @@ -0,0 +1,57 @@ +An IP address (short for Internet Protocol address) is a label which is used to identify one or more devices on a computer network, such as the internet. +Overview. +An IP can be compared to a postal address. An IP address is a long +number written in binary. Since such numbers are hard to communicate, IP addresses are usually written as a set of numbers in a given order. Devices using IP addresses use what is called the internet protocol to communicate. +Registration. +IANA (Internet Assigned Numbers Authority) allocates the IP address. IANA is responsible for the IP addressing system. The Internet Assigned Numbers Authority assigns IP addresses to regional internet registries (RIRs). The RIRs assign them to Internet Service Providers. Internet Service Providers then assign IP addresses to their customers. Often, people have a router or gateway at home, to which they connect computers, printers, and other devices. These routers or gateways are often configured to assign "local" IP addresses to the devices that are connected. +Parts. +Each address has two parts: one that specifies the computer or group of computers, and another which specifies the network. A device can have more than one IP address. Certain types of IP addresses are used to address a group of devices, while others are used to address only one device. Certain types of addresses are unique, others can be re-used. A number of IP addresses are used for special purposes, for example to obtain an IP address automatically. +Examples. +Suppose one of our friends wants to meet us but they don't know our address. They ask us for our address and then we give it (Example: 123 Main Street, Anytown, USA). Knowing the address, they can easily locate us. The same thing is done in this case with the internet. Every network is assigned an address. +IP address composition. +An IP address is a long binary number, made of ones and zeros. +IPv4. +An IPv4 address is 32 binary digits (or bits) long. An IPv6 is 128 bits long, allowing many more IP addresses to be used. IP addresses are usually written in human-readable form, where 8 bits are grouped into one octet. IPv4 addresses are usually written as a group of four numbers. Each number can take a value from 0 to 255. +IPv6. +IPv6 addresses are written as a group of eight hexadecimal numbers. Many Ipv6 addresses contain many zeroes. There are special rules which say that in certain cases, these zeroes do not need to be written. +Public and private addresses. +Certain IP addresses can be assigned freely on the local area network. Since they are not unique, they are not routed on the internet. The addresses which can be freely assigned are called private IP addresses, and the ones which are unique are called public IP addresses. To be routed, a private address needs to be translated into a public one. This process of translating between private and public addresses is called network address translation, or NAT. Routers and firewalls often also perform such task. +Reaching one or more devices. +There are three types of addresses: +Obtaining new IP addresses. +There are different ways of assigning a new IP address. One of them is called the Bootstrap Protocol (usually shortened to BOOTP). The device that needs a new address, does not know what network it is in, so it uses an IP address of all zeroes (0.0.0.0) which it sends as a broadcast to the current network, on a special port. +In addition, it sends the MAC address of the network card, plus a 4 byte random number. The BOOTP server will send a reply, also as broadcast, addressed to a different port. The reply will contain the mac address of the client, the random number, and the IP address of the client. When the client receives the data, it will set the address specified. +If the BOOTP server is configured that way, it will also send the IP address and hostname of the BOOTP Server, the name and path to a file which should be loaded to boot the client (with TFTP) or the name of a directory, which the client should mount using NFS. DHCP extends BOOTP, and allows to send more information, such as the address of a time server, or information which is useful for routing. IP addresses obtained automatically can be dynamic or static. Static addressing means the same machine will always get the same IP address. With dynamic addresses, a device will get the next address which is not used. Dynamic addresses which are used need to be reviewed from time to time. If they are not renewed, they can be used for other devices. +As discussed previously, IP version 4 is commonly abbreviated as IPv4. With IPv4, each address consists of four 8-digit binary numbers, called octets. An IPv4 address is 32 bits in total. The biggest number one can make with 8 regular digits is 99,999,999, but the biggest number one can make with 8 binary digits is 255 (11111111 in binary), so each octet can be any number from 0 to 255. An IPv4 address could look something like this: + 198.51.100.137 +Each octet is converted to its decimal form and separated by a period. +There are also special meanings associated with two different ending numbers. In general, a last number of 0 stands for the network (called "base address"), and a last number of 255 stands for all hosts on that network (called "broadcast address"). Computers that are on the same local network share 3 of the 4 numbers. A computer can be on more than one network. It can also have several names. +Public or private addresses. +The problem with IPv4 is that it only allows for 4.3 billion addresses, and we've almost used them all. To delay this, Network Address Translation (NAT) was created. Network Address Translation has a network share one "public" IP address and give every computer on the network a "private" IP address. Everyone living in the same house uses the same address, but mail can be meant for multiple different people living in the house. +Special IP addresses. +There are some IP addresses that are reserved for special purposes. For example, the address "127.0.0.1" is called the Loopback Address and will "loop back" any packets sent to this address back to the computer that sent them, like sending mail to yourself. Although this may not seem useful, it is used to test servers. +Network. +It identifies the class of a network. +Host part. +It identifies the host on a network. +Static IP address. +It is a permanent internet address. It has to be configured manually. It is used in smaller networks. All servers use static IP addresses. It is a simple way for communication. +Dynamic IP address. +It is a temporary internet address. It is assigned by a DHCP (Dynamic Host Configuration Protocol) server from a specific range of IP address. +IPv4 subnetting. +To make a network work faster, it is split up into subnets. To do this, an IP address contains a "network" ID, "subnet" ID, and a "host" ID. A special binary number called a subnet mask is used to determine the size of the network, subnet, and host IDs. +The original IPv4 only supported 254 networks, so in 1981 the Internet addressing specification was changed to a classful network architecture. Classful network design allowed for a larger number of individual networks. The first three bits of an IP address determined its "class". Three classes ("A", "B", and "C") were defined for normal computer communication (Unicast). +The size of the network ID was based on the class of the IP address. Each class used more octets for the network ID, making the host ID smaller and reducing the number of possible hosts. +Classful networks have been replaced by Classless Inter-Domain Routing (CIDR) since 1993. CIDR also provides a network address and host address. CIDR does not have classes, which means network and host address sizes don't have to be in octets. +An IPv4 Address in CIDR notation looks like192.168.0.14/24The slash and number represent the amount of bits that the network id uses, in this case 24 or 3 octets. +IP Version 6. +Because IPv4 is only 32 bits, the number of available addresses will run out. To prevent this, an organization called the Institute of Electrical and Electronics Engineers (IEEE) created IP Version 6 (IPv6), which will eventually finish replacing IPv4. +IP Version 6 uses 8 octets each 16 bits = 128 bits in total. Octets in IPv6 are written in hexadecimal, and separated by colons (:). An IPv6 address might look like this: + 2001:0db8:85a3:0000:0000:8a2e:0370:7334 +An IPv6 address can be long and this can lead to mistakes when typing them into the computer or writing them down. There are two ways in which an IPv6 address can be made shorter without leaving anything out: +DNS. +DNS stands for Domain Name System. It is also called a service server, and is based on client server network architecture. Like a phonebook, it contains a database of public IP addresses. +Other versions. +Versions before IPv4 were experimental and never widely used. Version 5 was used exclusively for the Internet Stream Protocol (ISP), which was also never widely used. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Immigrant.txt b/.github/workflows/data/simplewiki-500/Immigrant.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Immigrants.txt b/.github/workflows/data/simplewiki-500/Immigrants.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Immune System.txt b/.github/workflows/data/simplewiki-500/Immune System.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Imperial Cup.txt b/.github/workflows/data/simplewiki-500/Imperial Cup.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Imperial Gallon.txt b/.github/workflows/data/simplewiki-500/Imperial Gallon.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Indian Ocean.txt b/.github/workflows/data/simplewiki-500/Indian Ocean.txt new file mode 100644 index 000000000..f0989bb1e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Indian Ocean.txt @@ -0,0 +1,4 @@ +The Indian Ocean is the ocean surrounded by Asia to the north, Australia and the Pacific Ocean to the east, the Southern Ocean to the south, and Africa and the Atlantic Ocean to the west. It is named for the river Indus and Ancient India on its north shore. The Bay of Bengal, the Arabian Sea, the Persian Gulf and the Red Sea are all parts of this ocean. +The deepest point in the Indian Ocean is in the Java Trench near the Sunda Islands in the east, deep. The average depth is . The Indian Ocean is the third largest ocean, in size. The majority is in the southern hemisphere. +Other websites. + "This about a  can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Ingenuity.txt b/.github/workflows/data/simplewiki-500/Ingenuity.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/International English Language Testing System.txt b/.github/workflows/data/simplewiki-500/International English Language Testing System.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Inuit.txt b/.github/workflows/data/simplewiki-500/Inuit.txt new file mode 100644 index 000000000..3f98c1145 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Inuit.txt @@ -0,0 +1,25 @@ +The Inuit are one of many groups of indigenous people in the Americas and live in very cold places in the Arctic: northern Canada, Greenland, and Alaska. +The word Inuit means "the people" in Inuktitut, their language. The people are sometimes called "Eskimos", a word that likely comes from the Algonquin language and may mean "eater of raw meat," which many believe to be misinformation. The term "Eskimo" means "netter of snowshoes." +Most Inuit prefer to be called by their own name, either the more general Inuit," particularly in Canada, or their actual tribal name. Inuit is a tribal name, but not all indigenous Arctic peoples in North America are Inuit. Particularly in Alaska, the word "Eskimo" is accepted as a more general term, but they probably prefer to be called by their tribal name. +Etymology. +Inuit in Canada and Greenland prefer the name "Inuit" because it is their own name for themselves. "Inuit" means "more than one man," and "one man" is an ""Inuk"." The term "Eskimo" is more frequently used in the United States, where such concerns get less attention. +Their language is Inuktitut, and it is one of the official languages of Nunavut and of the Northwest Territories, both in Canada. Greenland's official language is a variety of Inuktitut. "Eskimo" is a term that is more frequently used in the United States, where such concerns get less attention. +Inuit in Alaska have various concerns, such as protecting the caribou from American oil pipelines. Campaigns against seal hunting campaigns work to eliminate that aspect of northern culture, which most Inuit regard as vital to their lives. +Traditional culture. +Food. +Inuit ate both raw and cooked meat and fish, as well as the fetuses of pregnant animals. Whale blubber was burned as fuel for cooking and lamps. +Inuit were also nomadic, but they did not domesticate any animals except for dogs, which they used to pull their sleds and help with the hunt. Inuit were hunter-gatherers, who lived living off the land. They were very careful to make good use of every part of the animals that they killed. Respect for the land and the animals that they harvested has been a focal part of their culture. +Hunting. +In the summer, Inuit lived in tents made of animal skins. In the winter, they lived in sod houses and igloos. They could build an igloo out of snow bricks in just a couple of hours. Snow is full of air spaces, which helps it hold in warmth. With just a blubber lamp for heat, an igloo can be warmer than the air outside. The Inuit made very clever things from the bones, antlers, and wood that they had. They invented the harpoon, which was used to hunt seals and whales. They built boats from wood or bone covered with animal skins. They invented the "kayak" for one man to use for hunting the ocean and among the pack ice. +Inuit sleds could be built from wood, bone, or even animal skins wrapped around frozen fish. Dishes were made from carving soapstone, bones, or musk ox horns. They wore two layers of skins, one fur side in and the other facing out, to stay warm. +Inuit had to be good hunters to survive. When an animal was killed in a hunt, it was thanked respectfully for offering itself to the hunter. They believed that it intended to provide itself as a gift towards the survival of the hunter and his children. Their gratitude was deeply sincere and an important aspect of their belief system. In the winter, seals did not come out onto the ice but came up only for air at holes that they chewed in the ice. Inuit used their dogs to find the air holes and then waited patiently until the seal came back to breathe and kill it with a harpoon. In the summer, the seals would lie out on the ice enjoying the sun. Hunters would have to creep up on a seal slowly to kill it. They would use their dogs and spears to hunt polar bears, musk ox, and caribou. They would sometimes kill caribou from their boats as the animals crossed the rivers on their migration. +Inuit even hunted whales. From their boat, they would throw harpoons, which were attached to floats made of inflated seal skins. The whale would grow tired from dragging the floats under the water. When it slowed down and came up to the surface, the Inuit could keep hitting it with more harpoons or spears until it died. Whale blubber provided vitamin D and omega fatty acids to their cultural diet and prevented rickets. The whaling industry around the world has depleted the whale population, and traditional whale hunting for subsistence purposes is now rare around the world. The Inuit have added to their modern northern diet with grocery foods, which are normally very expensive in the North. +Clothes. +During the summer, Inuit gathered berries and roots to eat. They also collected grass to line their boots or make baskets. Often the food that they found or killed during the summer was often put into a "cache" for use during the long winter. A cache was created by digging down to the permafrost and building a rock lined pit there. The top would be covered with a pile of rocks to keep out the animals. It was as good as a freezer because the food would stay frozen there until the family needed it. +Inuit cultural traditions and traditional stories provided each new generation with lifes kills and knowledge to survive their environment and to work together. Inuit usually moved around in small groups looking for food, and they would sometimes get together with other groups to hunt for larger animals such as whales. Men hunted; built homes; and made weapons, sleds, and boats. Women cooked, made the clothes, and took care of the children. Children and infants under the age of 5 became easy victims of hypothermia. +Canadian companies such as Canada Goose and Moose Knuckle have clothing designs based on Inuit culture. +Today. +Today, most Inuit live in modern houses. Many still hunt or fish for a major part of their food supply or for income. Seal pelts are used to protect from the extreme Arctic cold. The technology has worked well for many thousands of years. Besides, commercial winter clothes are expensive. Today, Inuit use rifles and snowmobiles to hunt, but traditional values respecting the animals hunted still very much apply. In Alaska, many Inuit have received money from the oil that was discovered in that state on their traditional lands. +The Arctic is very different from the rest of the world. The way of life in the South does not work well in the area. Canada values having Inuit peoples in its northernmost lands as proof of sovereignty over the Canadian portion of the Arctic Circle. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Latin Language.txt b/.github/workflows/data/simplewiki-500/Latin Language.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Life science.txt b/.github/workflows/data/simplewiki-500/Life science.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/List of common elements.txt b/.github/workflows/data/simplewiki-500/List of common elements.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Ludwik Lejzer Zamenhof.txt b/.github/workflows/data/simplewiki-500/Ludwik Lejzer Zamenhof.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Mainland China.txt b/.github/workflows/data/simplewiki-500/Mainland China.txt new file mode 100644 index 000000000..a9a7ca43e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Mainland China.txt @@ -0,0 +1,5 @@ +Mainland China, also called the Chinese Mainland, is the part of China not including the Republic of China controlling Taiwan, Kinmen, Matsu, and the Pescadores. The term also excludes Hong Kong and Macau. +In the Qing Dynasty (Manchu Dynasty), all of Mainland China, Hong Kong, Macau, Taiwan, Kinmen, Matsu, the Pescadores, and Mongolia were part of the Manchu Empire. Taiwan, Hong Kong, and Macau were colonized by foreigners for some years (Taiwan to the Japanese, Hong Kong to the British, and Macau to the Portuguese). +By the end the Qing Empire, China became Nationalist China (the Republic of China) and it got Taiwan back in 1945. After the Communists (the People's Republic of China) took over most of China, the Nationalists kept only Taiwan, Kinmen, Matsu, and the Pescadores. Mongolia became an independent state later. +Since then, Communist China only includes the part on the continent (mainland) and some small islands that are very near (the largest communist island is Hainan). This region is Mainland China. +Later Hong Kong and Macau were returned to the government of China, but because the government calls them "special administrative regions" under a "one country, two systems" idea, they are still not thought of as part of Mainland China. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Math.txt b/.github/workflows/data/simplewiki-500/Math.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Mediawiki.txt b/.github/workflows/data/simplewiki-500/Mediawiki.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Mercury (element).txt b/.github/workflows/data/simplewiki-500/Mercury (element).txt new file mode 100644 index 000000000..8d5cf9b7f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Mercury (element).txt @@ -0,0 +1,42 @@ +Mercury, also known as quicksilver or hydrargyrum (pronounced hai-DRAR-jər-əm), is a chemical element. Its symbol on the periodic table is Hg, and its atomic number is 80. Its atomic mass is 200.59. +The symbol "Hg" stands for its Latinized Greek name "hydrargyrum", meaning watery or liquid silver. +History. +No one has the credit for finding mercury. It was known in ancient times. Mercury was found in Egyptian tombs that are from 1500 BC. +Chinese people also knew about it long ago. In China and Tibet, people thought using mercury would make them live longer and have better health. One of China's emperors, Qín Shǐ Huáng Dì, is said to have been buried in a tomb with rivers of flowing mercury. He died from drinking a mixture of mercury and powdered jade because he wanted to live forever. However, this only made him die of liver failure, poisoning, and brain death. The ancient Greeks used mercury in ointments. The Egyptians and the Romans used it in cosmetics. These cosmetics sometimes hurt and made faces uglier. +Properties. +Physical properties. +Mercury is a silvery-white liquid post-transition metal. The reason for mercury being a liquid is complex. It is heavy; a chunk of iron can float on mercury. Compared to other metals, it does not conduct heat well. However, it conducts electricity fairly well. Mercury is the only metal with a known melting point (−38.83 °C) lower than caesium. Mercury is one of the two elements that are liquids at standard temperature and pressure. Bromine is the other one. +Mercury may be seen as a transition metal, but it is normally seen as a post-transition metal. It is in Group 12 of the periodic table. Mercury has seven stable (nonradioactive) isotopes. 202Hg is the most common isotope. Mercury makes a blue to ultraviolet color in a tube when a spark is passed through it. The ultraviolet light can kill germs or light fluorescent lamps. +Chemical properties. +Mercury is an unreactive metal. It does not corrode in air unless hydrogen sulfide is also there, similar to silver. Mercury can oxidize to mercury(II) oxide when heated in air. If it is heated further, it decomposes into mercury and oxygen again. It does not dissolve in ordinary acids, but can dissolve in oxidizing acids to make mercury salts. It can make amalgams when mixed with most metals, like aluminium, gold, and zinc. Iron, tantalum, tungsten, and platinum do not make amalgams with mercury. Iron flasks were used to trade mercury because of this. +Mercury can dissolve large amounts of aluminium metal, making it dangerous to transport in aluminium containers. The thin layer of oxide on aluminium stops it from amalgamating (making an amalgam with) aluminium, but the oxide coating can be damaged to expose the metal. Then the aluminium metal is dissolved and oxidizes to aluminium oxide. The aluminium oxide forms a solid and releases the mercury, which amalgamates more aluminium. This process keeps repeating until a large amount of aluminium is dissolved. +Chemical compounds. +Mercury forms chemical compounds in 2 oxidation states: +1 and +2. Mercury(I) compounds are weak oxidizing agents and weak reducing agents. Most of them are colorless. They easily disproportionate to mercury(II) compounds and mercury metal. They react with oxygen in the air to make mercury(II) compounds. Many mercury(I) compounds do not dissolve in water. Mercury(I) chloride is one of the most common mercury(I) compounds. Mercury(II) compounds are strong oxidizing agents and very corrosive. Mercury(II) compounds are red, yellow, or colorless. Mercury(II) oxide and mercury(II) chloride are the most common mercury(II) compounds in the laboratory. +One thing they have in common is that they are all toxic. The soluble ones are more toxic than the insoluble ones. +Mercury(I) compounds. +Also known as mercurous compounds, these are weak reducing agents and weak oxidizing agents. Most of them do not dissolve in water, making them less toxic than mercury(II) compounds. Most of them are colorless or yellow. +Mercury(II) compounds. +Also known as mercuric compounds, these are strong oxidizing agents. Most of them dissolve in water, making them very toxic. They are colorless or red. +Organomercury compounds. +These contain mercury reacted with a organic molecule. They are even more toxic than other mercury compounds since they get absorbed very easily. +Occurrence. +Mercury is a rare metal. It is about as common as silver. Mercury is not expensive like silver because the mercury is very easy to get from the places where it is found. Mercury can be found in elemental (liquid) form in nature, but this is not common. Mercury as an element is the only liquid that is recognized as a mineral by the International Mineralogical Association. It is most often found in the form of cinnabar, a mercury(II) sulfide mineral. The biggest deposits of cinnabar used to be found in Spain, but now are found in China. It also occurs in other minerals like calomel, a mercury(I) chloride mineral. +Preparation. +China and Kyrgyzstan are the two main makers of mercury. Mines in Italy, the United States, and Mexico have been closed. China is opening more mines because the European Union wants to use fluorescent lights, which need mercury. +Mercury is made by roasting cinnabar in a furnace. The sulfide is oxidized to sulfur dioxide, leaving mercury behind. +Uses of mercury. +Medical uses. +Mercury has been used in dental fillings until it was replaced with safer materials. They are an amalgam of mercury with another element. An organic mercury compound called thiomersal is used to preserve vaccines. Merbromin, another organic mercury compound, is used as an antiseptic. It has been banned in some countries like the US. +Mercury(I) chloride (also known as calomel or mercurous chloride) has been used as a diuretic, skin disinfectant, and laxative. Together with other mercury compounds, Mercury(II) chloride (also known as mercuric chloride or corrosive sublimate) was used to treat syphilis. The problem with this was that mercury(II) chloride is very toxic. Sometimes the symptoms of its toxicity were confused with those of the syphilis it was believed to treat. It is also used as a disinfectant. , a pill or syrup in which mercury is the main ingredient, was prescribed throughout the 1800s for different conditions such as constipation, depression, child-bearing and toothaches. In the early 20th century, mercury was given to children once a year as a laxative and dewormer. Teething powders for infants also had it in them. +Since the 1930s some vaccines have contained the preservative thiomersal. In the body, this is changed to ethylmercury. At first it was thought that this mercury-based preservative can cause or trigger autism in children, but scientific studies could not show such a link. Because of this, thiomersal has been removed from most U.S. vaccines recommended for children six years of age and under. There are certain exceptions to this rule for influenza vaccines. In some cases, vaccines may still have very small amounts of thiomersal in them. +Cinnabar is still an important component of traditional Chinese, Tibetan, and Ayurvedic medicine. Certain countries do not allow the use of mercury or its compounds in drugs. For this reason, cinnabar has recently been replaced with less toxic products. +Today, the use of mercury in medicine has greatly declined in all respects, especially in developed countries. Thermometers and blood pressure devices using mercury were invented in the early 18th and late 19th centuries, respectively. Now their use is declining and has been banned in some countries, states and medical institutions. In 2002, the U.S. Senate passed legislation to phase out the sale of non-prescription mercury thermometers. In 2003, Washington and Maine became the first states to ban mercury blood pressure devices. Mercury compounds are in some over-the-counter drugs, including topical antiseptics, stimulant laxatives, diaper rash ointment, eye drops, and nasal sprays. The FDA has “inadequate data to establish general recognition of the safety and effectiveness” of the mercury in these products. Mercury is still used in some diuretics, although other things can be used for most therapeutic uses. +Other uses. +Mercury is also used: +In 2017 the worldwide use of mercury was less than half of what it was in 1980. +Toxicity. +Mercury is liquid at room temperature, and fumes of mercury are very poisonous. Ingested elemental mercury is less dangerous. The biggest problems are organic mercury compounds which are eaten with food. As with other heavy metals, inorganic compounds such as mercury(II) nitrate are also highly toxic by ingestion (eating) or inhalation (breathing in) of the dust. Mercury can cause both chronic and acute poisoning. +In the year 1810, over 200 people died of mercury poisoning on the ship "Triumph" because a barrel of mercury had leaked. +Mercury is extremely poisonous and has to be used carefully. When mercury is spilled, there are special ways to clean it up. Smaller drops should be combined to a larger drop on hard surfaces to be removed more easily (for example, being pushed into a bag that can be thrown away). Vacuum cleaners and brooms should not be used. This is because they can spread mercury even more. Afterwards, elements such as sulfur or zinc powder should be sprinkled over the place, then collected and cleaned away. It is not easy to clean mercury entirely off clothing, so it is better not to use them anymore. Breathing in mercury vapor is also very dangerous. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Mercury.txt b/.github/workflows/data/simplewiki-500/Mercury.txt new file mode 100644 index 000000000..2002543a7 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Mercury.txt @@ -0,0 +1,2 @@ +Mercury may mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Mexico.txt b/.github/workflows/data/simplewiki-500/Mexico.txt new file mode 100644 index 000000000..b994b319e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Mexico.txt @@ -0,0 +1,21 @@ +Mexico (; official name: United Mexican States , ) is a country in North America. Mexico is south of Texas, California and other American states. Guatemala and Belize are south of Mexico. Mexico is between the Pacific Ocean and the Gulf of Mexico. +People living in Mexico or who are from there are called Mexicans. Most Mexicans speak Spanish as their native language. Some Mexicans speak Native American languages, like Nahuatl, Mayan, and Zapotec. Most modern Mexicans are descended from Native Americans such as Aztecs and Mayans and mostly have native blood. They are Catholic. The capital of Mexico is Mexico City. +History. +Before the Europeans came, many Native American cultures existed in Mexico. The earliest was the Olmec culture in the south. The Olmecs are famous for the large stone heads they made. On the Yucatán peninsula lived the Mayans. The Mayans lived in city states ruled by kings. The Mayans were most powerful between 200 and 900 A.D. Another powerful empire belonged to Teotihuacan. Teotihuacan was a very large city, one of the largest at that time. After Teotihuacan declined the Toltecs became powerful. Things made by the Toltecs have been found from the southern parts of the U.S. all the way to Costa Rica. A famous Toltec god is Quetzalcoatl. The Toltec culture declined too, and it was succeeded by the Aztecs. The Aztecs called their own empire Mexico. A famous Aztec king was Moctezuma II. +In 1519 the Spanish explorer Hernán Cortés came to Mexico. The Aztecs thought he was the returned Quetzalcoatl, so they did not want to fight against him. Cortes allied himself with the enemies of the Aztecs. In 1521 they conquered the Aztec capital Tenochtitlan. The Aztec Empire became part of Spain. It was called New Spain. +In 1810 the Mexican priest Miguel Hidalgo started the Mexican war of independence. In 1821 the Spanish finally retreated and Mexico became independent. The first leader of independent Mexico was Agustin de Iturbide. He set up the First Mexican Empire and became emperor. But the Mexicans were not happy with him, and in 1823 the country became a republic. +A man who was very important in Mexico in the early 19th century was Antonio López de Santa Anna. He was the president of Mexico 11 times. When he became a dictator, Texas declared independence (1836). The Battle of the Alamo was part of this Texas Revolution. Between 1846 and 1848 there was war between Mexico and the United States. In this war Mexico lost its large northern areas, which became the southwestern United States. After this war Santa Anna was sent away to Venezuela. +Between 1858 and 1861 there was war again, between liberals and conservatives. The liberal Benito Juárez won the war and became president afterwards. Juarez stayed president until France invaded Mexico and made Maximilian of Habsburg emperor of the Second Mexican Empire. But Maximilian was very unpopular. After more war he was executed in 1867, and Juarez became president again. +Conservatives thought Juarez had too much power. In 1876 they ousted him, and made Porfirio Díaz, a general who had won a battle against the French, president. Porfirio Díaz made the country wealthier, but the poor people became poorer. Franciso I. Madero started the Mexican Revolution in 1910. +The next 10 years the country was in chaos. There were many presidents who ruled for a short time and all kinds of people fought against each other. Famous people from this period are Emiliano Zapata, Pancho Villa and Francisco I. Madero. When Álvaro Obregón became president in 1920 the fighting calmed down. +In 1929 President Plutarco Elías Calles founded the National Mexican Party, PNM. The party was later renamed Institutional Revolutionary Party, PRI. The party would rule for a very long time. Most PRI presidents were not popular, it was said that they were only president to become richer themselves. An exception was president Lázaro Cárdenas. He was president between 1934 and 1940. +After several decades more and more people became unhappy with the PRI. In 1968 security forces shot at protesters, this caused several hundred deaths and became known as the Tlatelolco massacre. Another uprising was in 1994 when Zapatistas rebelled in the province Chiapas. +Mainly through election fraud, the PRI managed to stay into power until 2000, when Vicente Fox of the National Action Party, PAN, was elected president. In total the PRI had governed Mexico for 71 years. +Politics. +Mexico is a constitutional federal democracy ruled by a president. The president is elected every 6 years. The current president is Claudia Sheinbaum. Parliament has a Senate and House of Deputies. +Geography. +Mexico is in the southern part of North America. It is roughly shaped like a triangle. Mexico is more than 3000 km (1,850 miles) long from northwest to southeast. Mexico is between two large seas: the Pacific Ocean in the West and the Gulf of Mexico and the Caribbean Sea in the East. Mexico has two large peninsulas. Baja California in the northwest, and Yucatán in the southeast. In central and western Mexico are the Sierra Madre mountains. In the Sierra Madre is the Pico de Orizaba, the highest mountain of Mexico. In central Mexico there are also a few volcanoes like the Popocatépetl and the Iztaccíhuatl. The Pico de Orizaba is also a volcano. In the north of Mexico are deserts. In the south are tropical rainforests. Some rivers in Mexico are the Río Bravo (known in the US as the Rio Grande), the Río Balsas, the Río Pánuco, and the Río Yaqui. +People. +Mexico is the most populous Spanish-speaking country in the world. It is also the second most populous country in Latin America (after Brazil). 60% of Mexicans have Native American and Spanish forefathers (mostly Native American); these are called mestizos. Almost 30% of Mexicans are pure Native American and 10% are pure Spanish. Most Mexicans (90%) speak Spanish. 10% of the Mexicans speak a Native American language, like Nahuatl, the language of the Aztecs, Maya or Zapotec. Non-indigenous ethnic groups in Mexico speak another foreign language such as Arabic or Japanese. Most people in Mexico are Catholic (89%) Christians and the vast majority of Mexicans are religious and strongly believe in the Catholic Christian faith. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Microsoft Windows.txt b/.github/workflows/data/simplewiki-500/Microsoft Windows.txt new file mode 100644 index 000000000..84c14bf86 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Microsoft Windows.txt @@ -0,0 +1,13 @@ +Microsoft Windows is an operating system for computers made by the United States-based company Microsoft. Windows is used by almost 90% of desktop and laptop computers. +History. +The first version of Windows, Windows 1.0, came out on November 20, 1985. The newest version, Windows 11, came out October 5, 2021. Most personal computers made after 2015 come with Windows 10. However, some older or cheaper personal computers may come with Windows 8.1 or Windows 7. +Windows makes it easier to run programs (applications) than MS-DOS did. DOS required typed commands to make the computer do something. However, DOS required correct syntax of each command. Making mistakes caused the computer to usually give an error message and do nothing. +Design. +Users control their Windows computer by its graphical user interface (or GUI for short). It only needs a keyboard "or" a mouse to work. In later versions, a touch screen works as well. However, using both a keyboard and a mouse makes many tasks easier. By clicking a few buttons on the screen, Windows helps keep your files safe, and easier to change and move. Versions of Windows after 2005 make it even easier for some users with disabilities because these versions have touch screens. For use of a touch screen, some mobile devices come with Windows. Tablet computers and smartphones such as Microsoft Surface and Microsoft Lumia use Windows. +Programs. +The following programs are included with Windows: +Windows has several kinds of applications/programs available. Popular applications include games, word processors (to write words) or additional programs like Adobe Flash Player (to watch some videos and play many games on internet sites). Adding new applications to Windows is called "installing". Applications can be bought/purchased on a CD or DVD. Applications can also be downloaded from the Internet. Some internet applications can be downloaded for free, and others can be bought using the internet. +Criticism. +Many users complain that Windows creates problems for them. Some users complain that Windows made their computers slower when they changed from DOS. Many people also complain about problems that make their computer less safe to use, even though Microsoft tries to fix these problems. Many computer viruses are created to infect computers running Windows since it is such a popular operating system. Windows was the most popular operating system until recently (today mobile operating systems such as Android are more popular). +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Models of nature.txt b/.github/workflows/data/simplewiki-500/Models of nature.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Models of our universe.txt b/.github/workflows/data/simplewiki-500/Models of our universe.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/NGO.txt b/.github/workflows/data/simplewiki-500/NGO.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/NPO.txt b/.github/workflows/data/simplewiki-500/NPO.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Natural.txt b/.github/workflows/data/simplewiki-500/Natural.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Nearctic Ecozone.txt b/.github/workflows/data/simplewiki-500/Nearctic Ecozone.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Negentropic.txt b/.github/workflows/data/simplewiki-500/Negentropic.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/No Sense.txt b/.github/workflows/data/simplewiki-500/No Sense.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Non-profit.txt b/.github/workflows/data/simplewiki-500/Non-profit.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Nonsense.txt b/.github/workflows/data/simplewiki-500/Nonsense.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/North Pole.txt b/.github/workflows/data/simplewiki-500/North Pole.txt new file mode 100644 index 000000000..f88b7cd06 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/North Pole.txt @@ -0,0 +1,6 @@ +The North Pole is the point that is farthest north on Earth. It is the point on which axis of Earth turns. It is in the Arctic Ocean and it is cold there because the sun does not shine there for about half a year and never rises very high. The ocean around the pole is always very cold and it is covered by a thick sheet of ice. +There is also a Magnetic North Pole. It is near the physical North Pole. A compass points toward the magnetic North Pole. +There is a star called the North Star (or Polaris) that is always in the sky above the North Pole. People can tell how far north they are by seeing how high the North Star appears in the sky. +References. +<templatestyles src="Reflist/styles.css" /> + "This about a  can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Numeral.txt b/.github/workflows/data/simplewiki-500/Numeral.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Ok.txt b/.github/workflows/data/simplewiki-500/Ok.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Okay.txt b/.github/workflows/data/simplewiki-500/Okay.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Our Universe.txt b/.github/workflows/data/simplewiki-500/Our Universe.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Pacific Ocean.txt b/.github/workflows/data/simplewiki-500/Pacific Ocean.txt new file mode 100644 index 000000000..cfbd1f677 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Pacific Ocean.txt @@ -0,0 +1,4 @@ +The Pacific Ocean is the body of water between Asia and Australia in the west, the Americas in the east, the Southern Ocean to the south, and the Arctic Ocean to the north. It is the largest named ocean and it covers one-third of the surface of the entire world. It joins the Atlantic Ocean at a line drawn south from Cape Horn, Chile/Argentina to Antarctica, and joins the Indian Ocean at a line drawn south from Tasmania, Australia to Antarctica. +As the Atlantic slowly gets wider, the Pacific is slowly shrinking. It does this by folding the sea floor in towards the centre of the Earth - this is called subduction. This bumping and grinding is hard so there are many earthquakes and volcanoes when the pressure builds up and is quickly released as large explosions of hot rocks and dust. When an earthquake happens under the sea, the quick jerk causes a tsunami. This is why tsunamis are more common around the edge of the Pacific than anywhere else. Many of the Earth's volcanoes are either islands in the Pacific, or are on continents within a few hundred kilometers of the ocean's edge. Plate tectonics are another reason which makes Pacific Ocean smaller. +Other websites. + "This about a  can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Phase 3.txt b/.github/workflows/data/simplewiki-500/Phase 3.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Plantae.txt b/.github/workflows/data/simplewiki-500/Plantae.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Plural.txt b/.github/workflows/data/simplewiki-500/Plural.txt new file mode 100644 index 000000000..8300e8c45 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Plural.txt @@ -0,0 +1,10 @@ +In linguistics, noun phrases have grammatical number. Plural is one kind of grammatical number. In English, plural noun phrases are counted as more or less than one (e.g., "–32 degrees, no bananas", "0.5 liters", "1.2 grams", "two times", "three fish", "20 mothers"). In contrast, a singular noun phrase usually refers to something that you would count as one only (e.g., "one time", "a glass", "the sun", "my mother", "Jennifer"). Noun phrases that cannot be counted are also singular in English (e.g., "water", "the meat", "some space", etc.). +In many languages, a suffix (word ending) is added to a word to show that the word is plural. In English, the normal plural suffix "i"s "-s" (e.g., "cat" is singular, and "cats" is plural). +Plurals in English. +There are a number of exceptions: +It is fair to say that most native English-speakers make mistakes in this area, which is one of the more troublesome aspects of English. +Other languages. +All European languages have plural forms. The suffix that is used in each language is different from the one that is applied to English nouns. +In other languages, such as Chinese, Korean and Japanese, there is usually no plural ending. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Power structure.txt b/.github/workflows/data/simplewiki-500/Power structure.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Prison.txt b/.github/workflows/data/simplewiki-500/Prison.txt new file mode 100644 index 000000000..9abd1096f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Prison.txt @@ -0,0 +1,30 @@ +A prison or jail is a building where people are forced to take their freedom away. The main cause for imprisonment is breaking the law. Those who break the law and are convicted (found guilty) in court can receive a prison sentence, which is an order to spend an amount of time in prison. Prisons are usually run by the government. People in prisons are called prisoner or inmates. Prisons are core parts of most countries' Justice systems. +There are other reasons why someone might be held in prison. Sometimes, people can be held in prison following arrest and before their trial (known as pre-trial detention or remand). In times of war, captured soldiers may become prisoners of war and civilians (non-soldiers) may be placed in an internment camp. In some countries, prisons are also used for political prisoners (people who disagree with the country's leader or government). +Other words for a prison include a gaol (pronounced like "jail"), penitentiary or correctional facility. In the US, the words "prison" and "jail" mean separate things. A US "jail" is run by a local government and holds people who have not yet had their trial or who have been convicted for a minor crime. A US "prison" or "penitentiary" is run by the state or federal government and holds people who are serving a long sentence for a serious crime. Outside of North America, "prison" and "jail" mean the same thing. There are lots of slang words for prisons. +In the United States and many other developed countries, inmates have most or all their personal possessions confiscated until release and are forced to wear prison uniforms. +Prison buildings and facilities. +Prisons are usually surrounded by walls and gates. There are usually many locked gates inside the prison to control the inmates. +The inmates sleep in small locked rooms called cells. Cells have a bunk bed, a toilet, and a sink. Inmates are allowed to leave their cell every day for exercise. Some inmates work in the prison during the day, either in a factory or doing cooking or cleaning. Law enforcement officers called prison guards watch the inmates. The manager of a prison is called the warden (US, Canada), superintendent (some parts of the US, India) or governor (UK, Australia). +Prisons usually also include other buildings and facilities, such as a chapel, a library, an exercise yard, a gymnasium, an infirmary (small hospital), visiting rooms (for visits from family and lawyers), kitchens, and accommodation for prison staff. +The level of security a prison has depends on the type of prison. A "maximum security prison" has even more protection than a regular prison. Some prisons in the United States and Japan have a section called "death row", where people who have been sentenced to death are kept in prison until their execution. On the other hand, an "open prison" is a prison where inmates can often travel out of the prison. These are used for prisoners who have been convicted of minor crimes, or who will soon be released. +The United Nations made the "Standard Minimum Rule" for human treatment for prisoners in 1955. Also the Article 10 of International Covenant on Civil and Political Rights also affirm the treatment with humanity for them in prison. In some prisons, people imprisoned for child sexual abuse are separated from other prisoners for their own safety. +Purpose. +There are four main ideas about what prisons should be used for: +Pre-trial detention. +A person who has been charged with a crime, but has not yet been convicted for it in a court, may be sent to prison if: +In some parts of the US, a person who is arrested may be held at a county jail until they decide whether to charge or release the person. In other places, a person who is arrested will be held at a police station, not a prison. +Special prisons. +Male and female inmates are usually kept in separate locations, and often in separate prisons. +There are special prisons for people under the age of 18 who commit crimes. These inmates are called young offenders or juvenile offenders. These places will not always have the word "prison" in their name, instead having names like "Young Offenders' Institution". +While not called "prisons" most of the time, psychiatric hospitals often share characteristics with prisons, such as residents staying against their will and the various security measures implemented. +A penal colony is a correctional facility operated in one country by the government of another. These were common during the 18th and 19th centuries when France, Spain, and Britain had colonies. Soviet gulags were a form of penal colony. +A labour camp is a simplified prison in which inmates are forced into manual labor. Prisoners tend to be accommodated in bunkhouses or barracks. +Concentration camps (also called internment camps) are facilities for confining people without trial based on perceived threat, ethnicity, religion, etc. +Controversy. +Prisons are a controversial topic that people have different views about. +Number of people in prison. +As of 2006, there are currently nine million people in prison in the world. The United States currently has the most people in prison; it has more than 2 million people in prison. In 2002, both Russia and China also had over 1 million people in prison. In 2003, the United Kingdom had 73,000 people in prison; France and Germany had a similar number of people in prison. +Cultural references to prisons and prison life. +There are many books and poems about prisons or prison life, such as "The Count of Monte Cristo" by Alexandre Dumas, père and "The Ballad of Reading Gaol" by Oscar Wilde. +There are also movies that depict prison life, including: +There have also been television programs, such as "" (1979–1986), "Prison Break" (2005–2009), Lockup (2005 - present) and (2006 - present), as well as Locked Up Abroad. A current TV show about a women's prison is Orange Is the New Black. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Romans.txt b/.github/workflows/data/simplewiki-500/Romans.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Sheep.txt b/.github/workflows/data/simplewiki-500/Sheep.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Simple English.txt b/.github/workflows/data/simplewiki-500/Simple English.txt new file mode 100644 index 000000000..88a2dfcdb --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Simple English.txt @@ -0,0 +1,2 @@ +Simple English might mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Sky.txt b/.github/workflows/data/simplewiki-500/Sky.txt new file mode 100644 index 000000000..ecc124a58 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Sky.txt @@ -0,0 +1,8 @@ +The sky is the appearance of the atmosphere around the surface of the planet from our point of view. We see many objects that are actually in space such as the Sun, the Moon, and stars because they are in the sky. On a clear day the sky appears blue. +At night it appears from very dark blue to black. The deepness of the blue increases as we look toward the horizon, and up to the point above us. +The sky, which is made up of gas molecules, is blue because of the random scattering of sunlight by the molecules. Rayleigh scattering defines the amount of scattering of light rays. +Blue light scatters much more than red, which is why the sky appears blue on a clear day. Depending on the time of day, the sky may appear different colors. At dawn (sunrise) or dusk (sunset) the sky may appear red, orange, and other colors depending on how low the sun is and how close it is to night. +Other planets have skies too. Because the types of gases in their atmospheres are different, they have different sky colors. For example, the sky on Mars is pink. +Many things can be seen in the sky. There are objects from space like the Sun, Moon, planets and stars. There are also many weather events seen in the sky. For example, these can be clouds, rain, lightning, or fog. Weather is caused by different patterns and temperatures in the atmosphere. Other things that can be seen in the sky are birds, other flying animals, and aircraft. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Snapshot Algebra.txt b/.github/workflows/data/simplewiki-500/Snapshot Algebra.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Social.txt b/.github/workflows/data/simplewiki-500/Social.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Sociology.txt b/.github/workflows/data/simplewiki-500/Sociology.txt new file mode 100644 index 000000000..1aadae109 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Sociology.txt @@ -0,0 +1,12 @@ +Sociology is the study of societies and how humans act in groups. Sociology is a social science. People who study sociology are called sociologists. A society is the community of people living in a particular country or region and having shared customs, laws, and organizations. +Emmanuel-Joseph Sieyès in 1780 was first to use the term. The problems caused by the change to an industrial society, where many people moved to cities and worked in factories, were an early focus of sociology. Auguste Comte, Max Weber and Émile Durkheim were leading figures in the study of social phenomena. Themes included community, authority, status, alienation and lack of power. +In the 2000s, some sociologists look at things, such as race, ethnicity, class, gender, the family and social interaction. They also study the breakdown of social structures; crime and divorce. +Work of sociologists. +Sociologists research the structures that organize society, such as race, gender (whether a person is male, female, or nonbinary), and social classes (rich or poor). They study the family and examine problems, such as crime and drug abuse. +Most sociologists work in one or more specialty areas or "subfields". Sociology includes many subfields that examine different aspects of society. For example, social stratification studies inequality and class structure in society. The field of demography studies changes in population size or type. Criminology examines criminal behavior and crime. Political sociology studies government and laws. Sociology of race and sociology of gender examine how people think about race and gender. +Many sociologists also do research outside of the university. Their research is intended to help teachers, lawmakers, and government administrators to make better institutions, government programs, and rules. +Sociologists often use statistics to count and measure patterns in how people act or behave. Sociologists also interview people or hold group discussions to find out why people behave in certain ways. Some sociologists combine different research methods. +History of sociology. +Social analysis has been done since the time of Plato. Sociology became accepted as a type of science in the early 1800s. European cities were changing as many people moved into cities and began working in factories. Sociologists tried to understand how people interacted and how groups interacted. +The word "sociology" was invented by French thinker Emmanuel-Joseph Sieyès in 1780. Early thinkers who wrote about sociology included Auguste Comte and Max Weber. +Sociology was taught in a university for the first time at the University of Kansas in 1890. The first European department of sociology was founded in 1895 at the University of Bordeaux by Émile Durkheim. The first sociology department to be established in Britain was at the London School of Economics and Political Science in 1904. In 1919, a sociology department was established in Germany at the Ludwig Maximilians University of Munich by Max Weber. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Software.txt b/.github/workflows/data/simplewiki-500/Software.txt new file mode 100644 index 000000000..e3cfa3275 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Software.txt @@ -0,0 +1,6 @@ +Computer software, also called software, is a set of instructions and documentation that tells a computer what to do or how to perform a task. Software includes all different programs on a computer, such as applications and the operating system. Applications are programs that are designed to perform a specific operation, such as a game or a word processor. The operating system (e.g. Mac OS, Microsoft Windows, Android and various Linux distributions) is a type of software that is used as a platform for running the applications, and controls all user interface tools including display and the keyboard. +The word software was first used in the late 1960s to emphasize on its difference from computer hardware, which can be physically observed by the user. Software is a set of instructions that the computer follows. Before compact discs (CDs) or development of the Internet age, software was used on various computer data storage media tools like paper punch cards, magnetic discs or magnetic tapes. +The word firmware is sometimes used to describe a style of software that is made specifically for a particular type of computer or an electronic device and is usually stored on a Flash memory or ROM chip in the computer. Firmware usually refers to a piece of software that directly controls a piece of hardware. The firmware for a CD drive or the firmware for a modem are examples of firmware implementation. +Today, software has become an important part of our lives. software is used everywhere. software engineers are responsible for producing fault-free software which has literally become an essential part of our daily lives. Changeability and conformity are two of the main properties of software design. There are also different processing models for designing software including Build and Fix, Waterfall and Agile software processing design methods. +Types of Software. +The different types of software can be put into categories based on common function, type, or field of use. There are three broad classifications: \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/South America.txt b/.github/workflows/data/simplewiki-500/South America.txt new file mode 100644 index 000000000..04b725fd5 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/South America.txt @@ -0,0 +1,12 @@ +South America is the continent to the south of North America. These two continents are separated by the Panama Canal. There are seven continents which make up the globe, South America being the 4th largest. South America includes 13 countries and 6 dependencies: Argentina, Aruba (Netherlands), Bolivia, Bonaire (Netherlands), Brazil, Chile, Colombia, Curazao (Netherlands), Ecuador, Falkland Islands (United Kingdom), French Guiana (France), Guyana, Paraguay, Peru, South Georgia and the South Sandwich Islands (United Kingdom), Suriname, Trinidad and Tobago, Uruguay and Venezuela. +South America is attached to Central America at the boundary of Panama. Geographically all of Panama – including the part east of the Panama Canal is usually included in North America alone, among the countries of Central America. +Natural resources. +The soil in Argentina's Pampas is among the best in the world. Brazil's soil is very good for growing coffee. A great number of minerals have been found. Few, however, have been mined. Among those that were mined are iron, manganese, gold, and gemstones. The tropical forests are rich in valuable trees, like mahogany, ebony, and rubber. Oil is also a resource in some places. +Wildlife. +South America is home to a large variety of animal life. These include animals such as jaguars, macaws, monkeys, anacondas, llamas, piranhas, toucans, rheas, tapirs, cougars, condors and chinchillas. +Tourist attractions. +The most popular attractions are: +The Amazon rain forest. +The amazon rain forest is a moist grassy land where many wild animals live and contains the amazon river which is the 2nd longest river in the world and has the largest volume of water. The world's longest river is the Nile in Africa. The forest is known as a rain forest as it rains very often but due to the dense surroundings not every droplet reaches the bottom. The Amazon is shared by eight countries (Brazil, Bolivia, Peru, Ecuador, Colombia, Venezuela, Guyana and Suriname) and stretches for 6.7 million kilometers2. In the amazon rain forest, hundreds of thousands of trees have been cut down for wood and paper, meaning that the forest is endangered. Unlike the Boreial forest in Canada the trees are not getting replanted. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/South Pole.txt b/.github/workflows/data/simplewiki-500/South Pole.txt new file mode 100644 index 000000000..329ee1a04 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/South Pole.txt @@ -0,0 +1,16 @@ +The South Pole is the most southern point on the Earth. It is in Antarctica and is the center of the Southern Hemisphere. From the South pole, everywhere is North. +Unlike the North Pole, which is covered by sea and flat sea-ice, the South Pole is on a mountainous continent called Antarctica. Antarctica has not always been at the South Pole. Continental drift has occurred. +The geographic North and South poles are the poles the Earth spins around. These poles stay in the same place, and are usually the ones we mean if we just say North or South Pole. People can tell that they are at these poles by looking at the stars (at the poles, a star just circles around at the same height, never dipping to the horizon). The Sun rises once a year and gives the South Pole half a year of summer but it is always cold. When the Sun sets half a year later it makes half a year of winter which is even colder. The South Pole is always cold because the Sun never rises high in the sky. +The south magnetic pole is something different. It is defined by the Earth's magnetic field, as roughly where a magnetic compass needle points. People can tell they are near these poles by looking at a compass. +Exploration. +The South Pole is hard to reach. Unlike the North pole, which is covered by the sea and flat sea-ice, the South Pole is on a mountainous continent. This continent is called Antarctica. It is covered by thick ice (more than a mile thick in the centre). The south Pole is very high up, and is very windy. It is far from places where people live, and ships going there often have to find their way through thick sea ice. Once ashore, land-travelling explorers have to travel more than a thousand miles to get to the pole. They must cross a floating ice shelf, then up onto the ice-covered land, up steep mountain glaciers covered in broken, twisted ice slowly sliding to the sea, and across a high level land ("plateau") covered in ice and swept by strong freezing winds. +Two expeditions early in the 20th century, led by Robert Falcon Scott (1901–1904) and then Ernest Shackleton, failed to reach the South Pole, but returned safely. Shackleton turned back quite close to the pole, but it was late in the season and supplies were low. He knew that he would be risking the lives of his men, so he turned back. +The first men to reach the South Pole were a group from Norway led by Roald Amundsen. They arrived at the Pole on December 14, 1911 and left the Norwegian flag. Amundsen and his men returned home safely. Amundsen's story is one of excellent planning, good leadership, and willingness to learn from others: this made extreme endurance unnecessary, and perhaps made the successful expedition less of a story, and therefore perhaps less famous, than the next one. +The most famous South Pole expedition is perhaps the one that failed badly. This was the British expedition (not just UK, it included people from the British Empire, who at that time were considered British citizens) led by Robert Falcon Scott (1910–1913). Scott and four other men, dragging their equipment on sledges, had hoped to be first to the Pole. When they arrived, they saw a Norwegian flag. A letter left for Scott showed that Amundsen and his men had beaten them by a month, by using dogs to pull their sledges. +On their journey back from the Pole, Scott's team found that food "dumps" were short of supplies, particularly kerosene. Kerosene was very important: not just for cooking but for melting ice. Once it ran out, they would have no water to drink. One man collapsed and died while walking. Oates knew his frostbitten feet could not carry him back to base, and that he might delay his companions and risk their lives. He committed suicide by walking out of their tent into the cold. Scott and his remaining two companions died of starvation, thirst, and cold – trapped in the tent by bad weather until their supplies ran out. Next spring, the three bodies in the tent were found by a team from the main part of the expedition – who had spent the winter in the expeditions's hut by the sea. Scott's letters to his wife, written in the tent when he knew he was going to die, have just (Jan 2007) been made public. +Apart from Ernest Shackleton's expedition to cross the Antarctic (another heroic failure, but Shackleton saved all his men, after a very courageous sea crossing in an open boat, and a crossing of an unknown mountain range while starving and freezing), this was the end of the "heroic" age of exploration. Motors, planes, radios, and GPS made sure that future expeditions were never truly "unsupported". +Today there is an American science base at the South Pole. It is the Amundsen–Scott South Pole Station, set up in 1956. +Climate. +The South Pole has a desert climate. It almost never gets any precipitation. Air humidity is about zero. However, high winds can cause the blowing of snowfall, and the accumulation of snow amounts to about per year. The former dome seen in pictures of the Amundsen-Scott station is partially buried due to snow storms, and the entrance to the dome had to be regularly bulldozed to uncover it. More recent buildings are raised on stilts so that the snow does not build up against the sides. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Speedword.txt b/.github/workflows/data/simplewiki-500/Speedword.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Speedwords.txt b/.github/workflows/data/simplewiki-500/Speedwords.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Sports.txt b/.github/workflows/data/simplewiki-500/Sports.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Steal.txt b/.github/workflows/data/simplewiki-500/Steal.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Systeme internationale.txt b/.github/workflows/data/simplewiki-500/Systeme internationale.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Television.txt b/.github/workflows/data/simplewiki-500/Television.txt new file mode 100644 index 000000000..2ce75a35e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Television.txt @@ -0,0 +1,8 @@ +A television set (also known as a television receiver or televisor or simply a television, TV set, TV receiver or TV) is a machine with a screen or set of lenses. Televisions receive broadcasting signals and change them into pictures and sound. The word "television" comes from the words tele (Greek for "far away") and vision ("sight"). +Sometimes a television can look like a box. Older TVs had a large cathode ray tube in a large wooden frame and sat on the floor like furniture. Newer TVs are much lighter and flatter. +A TV can show pictures from many television networks. Computers and mobile devices also can be used for watching television programs. +The television was invented in the 1920s but the equipment was expensive and the pictures were poor. By the 1950s, these problems had been fixed and TVs became widespread. +At first, all televisions used an antenna (or aerial). This would pick up television programmes from broadcasting stations. A TV station could be many miles or kilometers away, and still be received. TVs can also show movies from VCD and DVD players or VCRs. Cable TV and Satellite television can provide more programs at once than broadcast can. Video game consoles connect to most modern TVs. Some computers can also use a TV as a computer monitor. +All TVs have screens where the picture is viewed. Before the 1950s these were usually "black and white", which made everything look grey, but all modern TVs show colors. Most 20th century screens also had rounded corners. That is because television screens were cathode ray tubes. These are like heavy glass jars with one side bulging out to form the screen. +Today flat panel displays are the usual kind. These are usually flat rectangles with straight edges. This long rectangle looks more like the shape of a movie theatre screen. This is called widescreen. If a widescreen set was 30 cm tall, it would be 53 cm wide. For this to work best, TV shows also need to be made in widescreen. Widescreen sets can still be any size, but they have the same widescreen shape. +The early 21st century is also when digital television transmission became more common than analog television. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Terrestrial ecoregion.txt b/.github/workflows/data/simplewiki-500/Terrestrial ecoregion.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Tone language.txt b/.github/workflows/data/simplewiki-500/Tone language.txt new file mode 100644 index 000000000..dfb6d7465 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Tone language.txt @@ -0,0 +1,13 @@ +A tonal language or tone language is a language in which words can differ by tones (like pitches in music) in addition to consonants and vowels. +Many languages, including Mandarin, Cantonese, Vietnamese, Thai, Lao, Hmong, Meitei, Punjabi, Chittagonian, Noakhali, Yorùbá, Igbo, Luganda, , Lingála, Cilubà, and Cherokee are tonal. Other languages, including Indo-European languages such as English and Hindi, are not considered tonal languages but can use intonation in different ways. +In some languages, pitch accent is important instead. A word's meaning can then change if a different syllable is stressed. Examples include Ancient Greek, Hebrew, Swedish, Norwegian, Serbo-Croatian, Lithuanian, and some Asian languages like Persian, Turkish, Mongolian, Japanese, Korean, and Khmer. However, pitch accent is different from tones. +Some tones may sound alike to people who do not speak a tone language. They are the most difficult part of learning a tone language for those people. +Example. +In Mandarin, the most famous example is ""mā má mǎ mà" (), " which has four different words, which are pronounced in exactly the same way but with four different tones. If numbers identify the tones, they can be written m"a1 ma2 ma3 ma4", which means "mom hemp horse scold." Some ways of romanization mark each tone by a different spelling; "ma1 ma2 ma3 ma4" in Pinyin would be written "ma mha maa mah" in Gwoyeu Romatzyh. Most use numbers or accent marks ("mā má mǎ mà" in Pinyin). There is a passage called (). It has 92 characters, all of which read the same way in Mandarin ("shi") but with different tones. +Mandarin does not have many syllables. The words for "mother," "hemp," "horse," "scold," and a word put at the end of sentences to make it a question are all pronounced "ma:" +Mandarin has "first tone," "second tone," "third tone," "fourth tone," and "neutral tone." Other Chinese dialects have more tones, with some as many as twelve. +Tonal markings. +Vietnamese and pinyin use accents as the tone marks for the Latin alphabet. Each accent shows an altered sound for the syllable. Most syllables have only one tone marking, but the letters in the syllable can be altered by other markings. Syllables usually form one word in un-hyphenated compound words. +Pinyin may have style differences because it is made to help Westerners. On the other hand, Vietnamese has a national script that always has the same style. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/UK.txt b/.github/workflows/data/simplewiki-500/UK.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/US Cup.txt b/.github/workflows/data/simplewiki-500/US Cup.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/US Foot.txt b/.github/workflows/data/simplewiki-500/US Foot.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/US Pound.txt b/.github/workflows/data/simplewiki-500/US Pound.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/US Yard.txt b/.github/workflows/data/simplewiki-500/US Yard.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/US gallon.txt b/.github/workflows/data/simplewiki-500/US gallon.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/University.txt b/.github/workflows/data/simplewiki-500/University.txt new file mode 100644 index 000000000..e8e65622b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/University.txt @@ -0,0 +1,18 @@ +A university is a higher learning institution. The word "university" comes from the Latin "universitas magistrorum et scholarium", roughly meaning "community of teachers and scholars". Students can go to university to get an academic degree. Unlike the schooling they have done before, the courses at university are specialised. A person studying biology at university has many courses about biology and fewer courses in other fields such as languages or history. To get a higher degree, people must do some research. +Not all subjects are offered at universities. Mainly, universities offer courses which are about knowledge. They usually do not offer courses in practical trades. In some cases such as law, where there are both knowledge and practical issues, the university does mainly the theoretical side of the subject. Practical qualifications are done elsewhere. +History. +The universities were born in Europe during the Middle Ages. The first institution of this type was the University of Bologna, which later became a model for other centres of education. +At first, the universities had formed themselves according to the model of the professional groups and like almost everything in the Middle Ages, they remained tied to the Catholic Church. At the beginning, they had worked to teach the so-called "seven liberal arts" (the "trivium" and the "quadrivium"): +That earliest division caused the present divisions between literary and scientific fields. From one point of view, the world's oldest university is Qarawiyyin university. However, teaching religion is not the definition used by most people. A university should in theory teach every subject. +The university is generally regarded as a formal institution that has its origin in the Medieval Christian tradition. European higher education took place for hundreds of years in cathedral schools or monastic schools ("scholae monasticae"). There, monks and nuns taught classes: evidence of these dates back to the 6th century. +The Universities of Paris and Oxford were founded by members of the church. Later universities were founded by kings. +In the early medieval period, most new universities were founded from pre-existing schools, usually when these schools became mainly sites of higher education. Pope Gregory VII promoted the concept of modern university as his 1079 Papal Decree. He ordered the establishment of cathedral schools, which eventually turned into the first European universities. +Organisation. +A university can include several campuses or different places where classes are taught by professors. In each campus there are several faculties and university schools (mainly for teaching), and also laboratories, departments and institutes of research. Many campuses also have housing for students in buildings called dormitories and structures like libraries, study rooms and gymnasiums for students that live there. Each school offers many courses that students take to earn a degree. The person with the highest right to control and to command in a university is the rector, who governs the university with the help of the party of vice-rectors and of other organs such as the social council and the governing body. +Notable universities. +United States. +There is a group of notable universities called the Ivy League. They are: +Some other universities are: +There are also institutions of technology who provide course offerings primarily in scientific and technological studies. Some examples are: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Value.txt b/.github/workflows/data/simplewiki-500/Value.txt new file mode 100644 index 000000000..27601be4d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Value.txt @@ -0,0 +1,3 @@ +Value is how much something is worth. Often the best way to find the value of something is to use the price that it can be sold for. However Oscar Wilde wrote that 'people know the price of everything but the value of nothing'- in other words true value does not depend on money alone. +In math, a value is a number which is concrete, something everyone can agree upon. However people may disagree on the value of water, depending if you live in a desert or next to a river. Disagreements on the value of things can create fights between nations, political parties, religions, etc. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Vatican City.txt b/.github/workflows/data/simplewiki-500/Vatican City.txt new file mode 100644 index 000000000..f93205c51 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Vatican City.txt @@ -0,0 +1,22 @@ +Vatican City (; officially Vatican City State, ) (also sometimes referred to as the Vatican) is the smallest country in the world by size, at 0.49 km² and by population. It is also one of the world's three city-states. +Its territory is completely surrounded by Italy and it is only one of three countries in the world that are enclaves of another country (the others being San Marino, also in Italy, and Lesotho in southern Africa). Also, it is the only country in the world that is an enclave of a city, as all of the land around it is part of Rome, the capital of Italy. The Vatican City is a city-state, because all its territory is urban and built-up. +The Vatican City is the headquarters of the Roman Catholic Church, and the religion's and country's government Holy See. Its head of state or sovereign is the Pope which is, in religious contexts, the Bishop of Rome and head of the Roman Catholic Church. The current Pope, Pope Francis, former cardinal Jorge Mario Bergoglio, was elected on 13 March 2013. +The Vatican City is also important for its culture and art. The Vatican's masterpieces are very well known in the world: St. Peter's Square, St. Peter's Basilica, the Sistine Chapel, the Vatican Museums and the Apostolic Palace, where the Pope lives. There are also hundreds of other sculptures and pictures. +History. +The Pope used to rule the Papal States, which included most of Italy. Catholic popes had generally tried to stop Italy from becoming one country because they feared they would lose their control of at least one of the Papal States. In 1861 Italy was unified under the King of Savoy, but Rome and Latium remained unconquered. On September 20, 1870 Italian troops invaded. Rome became capital of the new kingdom. +The Pope claimed he was a prisoner of the Italian state and excommunicated all the people who helped invade the Papal state. This stopped Catholics from taking part in public life under Catholic government. +In 1929 Benito Mussolini, decided to sign an agreement with Pope Pius XI, called the Lateran Treaty, which gave the territory of the Vatican to the Pope. Another treaty gave the Vatican money each year to compensate for the lost territories. +Politics and Government. +The government structure is a theocracy (a country governed by a religion particularly by the Holy See) with the Pope as the head. The pope is elected by the College of Cardinals whicha re bishops and archbishops of the Roman Catholic Church, allowing one to lead both the religion and city-state. The Pope also holds the title of "Bishop of Rome". +The Pope is the head of state or sovereign of the Vatican and holds the office until death or resignation therefore his title is officially "the Sovereign". The government and legislature is the Pontifical Commission for Vatican City State. +People. +Population. +Vatican City has a population of 526. The citizens of the Vatican include the Pope, all the cardinals, all the nuncios (who is the equivalent of an ambassador) and other diplomats, all the Swiss Guards, and other important people. Also, there are 372 Vatican citizens who live in other countries, including cardinals and nuncios. Vatican citizenship cannot be passed to children and spouses; and, except for the Pope and cardinals, Vatican citizenship is lost when the term of office comes to an end, for the Swiss Guards, nuncios and diplomats, and other people working for the Holy See. +Language. +The Vatican does have a law declaring an official language. Italian is the most used language, and the only official language in Vatican City. The Holy See's official language is Latin, but its working language is Italian. +Religion. +The official religion of the Vatican is Roman Catholic Christianity, and because the country is governed by the Holy See, it is a theocracy. +References. +<templatestyles src="Reflist/styles.css" /> +Notes. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Vegetable oil.txt b/.github/workflows/data/simplewiki-500/Vegetable oil.txt new file mode 100644 index 000000000..79a3cfc64 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Vegetable oil.txt @@ -0,0 +1,4 @@ +Vegetable oils are triglyceride oils made from plants. They are used in food and for cooking. In past centuries they were much used as fuel in oil lamps. Some kinds of plant oils that people use are palm oil, maize, olive, peanut, rapeseed, soy, and sunflower. +Margarine is an artificial butter made from vegetable oil. +Related pages. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Velocity.txt b/.github/workflows/data/simplewiki-500/Velocity.txt new file mode 100644 index 000000000..db64f340e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Velocity.txt @@ -0,0 +1,26 @@ +Velocity is a measure of how fast something moves in a particular direction. To define it needs both magnitude and direction. If an object moves east at 9 metres per second (9 m/s), then its velocity is 9 m/s to the east. +The idea behind this is that speed does not tell us in which direction the object moves in a given frame of reference. Speed is one part of velocity, direction is the other part. Depending on the frame of reference, the velocity can be defined with many mathematical concepts required for making the correct analysis. +Velocity in one-dimensional motion. +Average velocity. +To calculate the average velocity of an object, we divide its displacement (its change of position) by the time it took to change position. +formula_1 +For example, if an object moves 20 meters (m) to the left in 1 seconds (s), its velocity (v) would be equal to: +formula_2 +Instantaneous velocity. +Unlike average velocity, the instantaneous velocity tells us how fast something is moving at only one time, because velocity can only change with time. +formula_3 +Velocity in two-dimensional motion. +The concept of velocity allows us to consider two different means of calculating the velocity. Two-dimensional motion "requires" us to use vector notation to define the physical quantities found throughout the kinematics. +Distinction between average velocity and instantaneous velocity regarding two dimensional motion. +Average velocity. +To calculate the average velocity of an object, we divide its displacement (its change of position) by the time it took to change position. +formula_4 +where: formula_5is the total distance traveled in a given time interval formula_6. Each of these quantities can be calculated by substracting two different values intertwined within the given quantity, hence formula_7give the desired formula_8. +Instantaneous velocity. +Contrary to average velocity, the instantaneous velocity tells us the rate of change at which a given object is moving along a certain path at a given instance of time, which usually tends to be infinitesimally small. +formula_9 +When formula_10, we can see that formula_11. Taking that into consideration we can conceptualize this rate of change between displacement vector and interval of time using mathematical analysis "(most notably-" "Calculus)" +Relative velocity. +Velocity can also be measured by comparing the motion of two objects. This is called relative velocity. The second object is called the reference frame. To find the relative velocity, subtract the velocity of the reference frame from the velocity of the first object. For example, Earth moves at 67,000 miles per hour around the Sun. Usually, we do not care about this motion. So we subtract the vector that represents Earth's motion from the total motion. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Venus.txt b/.github/workflows/data/simplewiki-500/Venus.txt new file mode 100644 index 000000000..ca3ff07ba --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Venus.txt @@ -0,0 +1,30 @@ +Venus is the second planet from the Sun. It is a "terrestrial planet", meaning it is made of solid matter. The orbit of Venus is between the orbits of Mercury and Earth. +Overview. +Venus is a "terrestrial planet" because it has a solid, rocky surface like other planets in the inner Solar System. Astronomers have known Venus for thousands of years. The ancient Romans named it after their goddess Venus, goddess of love and beauty. +Venus is the brightest thing in the night sky except for the Moon. It is sometimes called the "morning star" or the "evening star" as at some elongations it is easily seen just before the Sun comes up in the morning. At other times, it can be seen just after the sun goes down in the evening. Venus comes closer to the Earth than any other planet does. +Composition. +Venus is sometimes called the sister planet of Earth as they are quite similar in size and gravity. In other ways the planets are very different. Venus' atmosphere is mostly carbon dioxide (CO2) with clouds of sulphuric acid (H2SO4). H2SO4 is a chemical that is poisonous to life. For this it is sometimes known as the Earth's "evil twin". +The thick atmosphere makes it hard to see the surface. Until the late twentieth century many thought there might be life there. The pressure on Venus' surface is 92 times that of Earth. Venus is one of only two planets in the Solar System (the other being Mercury) that has no moons. Venus spins very slowly on its axis and it spins in the opposite direction to the other planets. +Physical properties. +Venus is a terrestrial planet, meaning its surface is made of rock. Venus is much hotter than Earth. All the carbon dioxide in the atmosphere acts like a blanket, trapping heat from the Sun. This effect is called the greenhouse effect and it is very strong on Venus. This makes the surface of Venus the hottest of any planet's surface in the Solar System with an estimated average temperature of . This is hot enough to melt lead or zinc. +Geography. +Venus has no oceans because it is much too hot for water. Venus' surface is a dry desert. Because of the clouds, only radar can map the surface. It is about 80% smooth, rocky plains, made mostly of basalt. Two higher areas called continents make up the north and south of the planet. The north is called "Ishtar Terra" and the south is called "Aphrodite Terra". They are named after the Babylonian and Greek goddesses of love. +The surface of Venus looks like it has been shaped by volcanic activity. Venus has a lot of volcanoes. The surface of Venus is estimated to be 300–600 million years old. +Unlike Earth or Mars, Venus does not have defined highlands or lowlands, and it does not have tectonic plates. +Atmosphere. +Venus' atmosphere is mostly carbon dioxide and nitrogen gas with clouds of sulphuric acid. Because the atmosphere is so thick or dense the pressure is very high. The pressure is 92 times the pressure on Earth, enough to crush many things. +It is impossible to see the planet's surface from space as the thick cloud layer reflects 60% of the light that hits it. The only way scientists are able to see it is by using infrared and ultraviolet cameras and radar. +Scientists believe that billions of years ago, the atmosphere of Venus could have been like Earth's atmosphere. There may have been lots of water on the surface of Venus. But after 600 million to several billion years, the evaporation of the water put greenhouse gases into its atmosphere. +Magnetic field. +In 1967, Venera 4 found that the magnetic field of Venus was much weaker than that of Earth. This magnetic field is induced by an interaction between the ionosphere and the solar wind. Venus' magnetosphere is not strong enough to protect the atmosphere from cosmic rays. +Transit of Venus. +Venus can sometimes be seen passing between the Sun and Earth. Venus looks like a black dot when seen through a special telescope. These passages are called "transits". These "transits" happen in pairs eight years apart. Then it is more than a hundred years to the next pair. +Orbit and rotation. +Venus orbits the Sun at an average distance of about 108 million km (68~ million mi). It completes an orbit every 224.7 days. This length of time is called a Venusian year. +The rotation of Venus is slower than its orbit. Venus is the only planet in the Solar System that has a sidereal day longer than its year. The length of a Venusian year is 225 Earth days. The length of a Venusian day is 243 Earth days. +List of satellites sent to Venus. +Many man-made satellites have been sent to Venus to study it. They are: +Notes. +<templatestyles src="Reflist/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Verb.txt b/.github/workflows/data/simplewiki-500/Verb.txt new file mode 100644 index 000000000..7ac568ab8 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Verb.txt @@ -0,0 +1,65 @@ +A verb is a kind of word (part of speech) that tells about an action or a state. It is the main part of a sentence: every sentence has a verb. In English, verbs are the only kind of word that changes to show past or present tense. +Every language in the world has verbs, but they are not always used in the same ways. They also can have different properties in different languages. In some other languages (Chinese & Indonesian, for example) verbs do not change for past and present tense. This means the definition above only works well for English verbs. +There are sixteen verbs used in . They are: "be, , , , go, see, , , , , , , , , , ." +The word 'verb'. +The word "verb" originally comes from "*were-", a Proto-Indo-European word meaning "a word". It comes to English through the Latin "verbum" and the Old French "verbe". +Verbal phrase. +In simple sentences, the verb may be one word: "The cat "sat" on the mat". However, the verb may be a phrase: "The cat "will sit" on the mat". +Verbal phrases can be extremely difficult to analyse: "I'm afraid I will need to be going soon". There seem to be three verbal phrases here, which mean something like "Sorry, I must go soon". +Verb forms. +In English and many other languages, verbs change their form. This is called inflection. Most English verbs have six inflected forms (see the table), but "be" has eight different forms. +You should notice that some of the verb forms look the same. You can say they have the same shape. For example, the plain present and the plain form of "walk" have the same shape. The same is true for the past and the past participle. But these different forms can have different shapes in other verbs. For example, the plain present of "be" is usually "are" but the plain form is "be". Also, the past of "eat" is "ate", but the past participle is "eaten". When you look for a verb in the dictionary, it is usually the plain form that you look for. +An English sentence must have at least one primary-form verb. Each main clause can only have one primary-form verb. +Kinds of Verbs. +English has two main kinds of verbs: normal verbs (called lexical verbs) and auxiliary verbs. The difference between them is mainly in where they can go in a sentence. Some verbs are in both groups, but there are very few auxiliary verbs in English. There are also two kinds of auxiliary verbs: modal verbs and non-modal verbs. The table below shows most of the English auxiliaries and a small number of other verbs. +There are several auxiliary verbs: +The following verbs are "modal auxiliaries". +Auxiliary verbs also inflect for negation. Usually this is done by adding "not" or "n't". +Use of the auxiliary do. +Sometimes the verb "do" is used with other verbs. It does not really change the meaning, but it can be used to make a strong statement. +It is also used in the negative when no other auxiliary verbs are used. +Sometimes it comes before the subject. This is called inversion and it usually means the sentence is a question. +Many other languages do not use the verb "do" as an auxiliary verb. They use the simple present for "do", and the simple past or perfect for "did". +Tense, aspect, and mood. +There are three main systems related to the verb: tense, aspect, and mood. +Tense. +Tense is mainly used to say when the verb happens: in the past, present, or future. In order to explain and understand tense, it is useful to imagine time as a line on which past tense, present tense and future tense are positioned. +Some languages have all three tenses, some have only two, and some have no tenses at all. English and Japanese for example have only two tenses: past and present. Chinese and Indonesian verbs do not show tense. Instead they use other words in the sentence to show when the verb happens. +Aspect. +Aspect usually shows us things like whether the action is finished or not, or if something happens regularly. English has two aspects: progressive and perfect. In English, aspect is usually shown by using participle verb forms. Aspect can combine with present or past tense. +Progressive aspect. +English uses the gerund-participle, usually together with the auxiliary "be" (and its forms am, is, are, was, and were) to show the progressive aspect. +Many other languages, such as French, do not use progressive tenses. +The past perfect can be used to express an unrealized hope, wish, etc. +After If, wish and would rather, the past perfect can be used to talk about past events that never happened. +Mood. +Finally, English mood is now usually shown by using modal verbs. In the past, English had a full mood system but that has almost completely disappeared. The subjunctive mood now uses the plain form. There is also a form of "be" that is used in conditionals to show that something is not true (e.g., If I were a bird, I would fly to California.) +Sentence parts that go with verbs. +Certain parts of a sentence naturally come before verbs or after them, but these are not always the same for all verbs. The main sentence parts are: subject, object, complement, and modifier. +Subjects. +Almost all English sentences have subjects, but sentences that are orders (called imperatives) usually do not have any subjects. A subject usually comes before a verb, but it can also come after auxiliary verbs. In the following examples, the subject is underlined and the primary verb is in bold. +Objects. +Many verbs can be followed by an object. These verbs are called transitive verbs. In fact, some verbs must have an object (e.g., "take"), but some verbs never take an object (e.g., "sleep"). Verbs that do not take an object are called intransitive verbs. Some verbs can even have two objects. They are called ditransitive verbs. In the following examples, the object is underlined and the primary verb is in bold. +Complements. +Some verbs can or must be followed by a complement. These verbs are called linking verbs or copula. In the following examples, the complement is underlined and the verb is in bold. +Modifiers. +Verbs can be modified by various modifiers, mainly adverbs. Note that verbs generally do not need modifiers; it's usually a choice. In the following examples, the adverb is underlined and the verb is in bold. +Verbs also commonly take a variety of other modifiers including prepositions. +Differences between verbs and other words. +Sometimes a verb and another word can have the same shape. In these cases you can usually see the difference by looking at various properties of the words. +Verbs vs. adjectives. +Sometimes a verb and an adjective can have the same shape. Usually this happens with participles. For example, the present participle "interesting" and the adjective "interesting" look the same. Verbs are different from adjectives, though, because they cannot be modified by "very", "more", or "most". For example, you can say "That is very interesting," so you know interesting is an adjective here. But you cannot say "My teacher is very interesting me in math" because in this sentence "interesting" is a verb. On the other hand, if you cannot change the 'be' verb to 'seem' or 'become', it is probably a verb. +Verbs vs. nouns. +The gerund-particle sometimes looks like a noun. This is especially true when it is used as a subject, as in the following example: +The main differences between these verbs and nouns are: modifiers, number, and object/complement +Modifiers. +Verbs cannot generally be modified by adjectives and nouns cannot generally be modified by adverbs. So, in "Running regularly is good for you", "running" is a verb because it is modified by "regularly", an adverb. +Number. +Verbs cannot change for number, so if you can make the word plural, it is a noun, not a verb. For example, "this drawing is nice" can change to "these drawings are nice", so "drawing" is a noun. But "drawing trees is fun" cannot change to "drawings trees is fun", so it is a verb here. +Object/complement. +Many verbs can take objects or complements, but nouns cannot. So, in "parking the car is hard", "parking" is a verb because it takes the object "the car". But, if you say, "there's no parking", parking may be a noun because it does not have an object. +Verbs vs. prepositions. +Some verbs have become prepositions. Again, usually these share a shape with participles. Here are some examples: +The main difference between verbs and prepositions is that verbs have a subject. Even if the subject is not written, you can understand what it is. Prepositions do not have a subject. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Virtual community.txt b/.github/workflows/data/simplewiki-500/Virtual community.txt new file mode 100644 index 000000000..c1830a004 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Virtual community.txt @@ -0,0 +1,8 @@ +A virtual community is a group of people who share an interest, hobby or set of views. +The people in it may come from many different places. +They talk with each other using technology, such as the Internet, telephone calls, texting, video calls and email. +How virtual communities communicate. +Virtual communities may use any of the following to communicate: +Internet +Telephone +Mail \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Vocabulary.txt b/.github/workflows/data/simplewiki-500/Vocabulary.txt new file mode 100644 index 000000000..f547291a3 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Vocabulary.txt @@ -0,0 +1,9 @@ +The vocabulary a person uses is all the words that person knows and uses. In general, a person who is five knows about 4,000 to 5,000 words. Adults who have gone to college may know 20,000 words. A hearing vocabulary and reading vocabulary are bigger than a speaking vocabulary or writing vocabulary, as people understand some words that they do not use. +Overview. +The number of words in a language is more than the words listed in one dictionary. One dictionary may have a list of 500,000 words. Another dictionary may have some other words that the other dictionary does not have. Adding up all the words in those dictionaries, there are about 750,000 words in English. There may be more words than that. +Usage. +The most used words are short words. That is true in all languages. The 50 most common words in English have fewer than seven letters. Half of these words have fewer than four letters. The vocabulary of a language is always changing. New words are made or words change their meaning. Words about computers, like "download" are new to English. The new word "bling" came from hip hop. Words like "cool" have developed new meanings. +References. +<templatestyles src="Reflist/styles.css" /> +Other websites. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git "a/.github/workflows/data/simplewiki-500/Volap\303\274k.txt" "b/.github/workflows/data/simplewiki-500/Volap\303\274k.txt" new file mode 100644 index 000000000..8e9a6270f --- /dev/null +++ "b/.github/workflows/data/simplewiki-500/Volap\303\274k.txt" @@ -0,0 +1,12 @@ +Volapük (pronounced ] in English, ] in Volapük) is a constructed language created in 1880 by Johann Martin Schleyer. Schleyer was a Catholic priest from Germany. He felt that God had told him in a dream to make an international language. The name "Volapük" comes from the words "vol" (world) and "pük" (language). Volapük conventions took place in 1884, 1887, and 1889. The aim was to help people from different cultures speak to each other. +Volapük became less popular after 1887 when Esperanto was published. Part of the reason for this was that Esperanto is easier to learn with a simpler grammar. There are believed to only be 20-30 Volapük speakers in the world today. +The vocabulary of Volapük is mostly English, with some words from German and French. The grammar is based on Indo-European languages. +History. +Volapük was created by Johann Martin Schleyer. He first wrote about his idea in 1887. He published a book about Volapük in 1880. The book was translated into ten languages. Soon, people started creating Volapük clubs in Europe. +The language started to become popular. People published books and journals in Volapük. However, not everybody liked the language. The American Philosophical Society thought that Volapük was too complex. +Example text. +Below is the Lord's Prayer written in Volapük. +<poem> +</poem> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Volcanism.txt b/.github/workflows/data/simplewiki-500/Volcanism.txt new file mode 100644 index 000000000..1ce25b65d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Volcanism.txt @@ -0,0 +1,15 @@ +Volcanism (or vulcan activity) is the eruption of magma onto the surface of the Earth. +Magma under the crust is under very great pressure. When folding and faulting occur, cracks or fractures appear. These are lines of weakness. +When these lines of weakness develop downward in the crust and reach the magma, they will release the pressure in the magma. This allows magma to rise up along the lines of weakness and intrude into the crust. Some magma may even reach the Earth's surface as lava. +Volcanoes. +Volcanoes are the places where magma reaches the earth's surface. The type of volcano depends on the location of the eruption and the consistency of the magma. +Intrusions. +Intrusive volcanism is when magma is forced into the rocks that make up the Earth's crust. When it cools and become solid while still underground, different features called plutons are formed. The rock formed is intrusive igneous rock. +These plutons will be exposed at the surface of land when the overlying rocks are removed after a long time of denudation (laid bare by erosion). +Major features formed by intrusive volcanicity include: batholith, laccolith, dyke, pipe and sill. +Extrusions. +The molten magma under great pressure forces its way through the fissure of underground rocks and reaches the Earth's surface to form "igneous extrusion". +Major extruded materials include gas, liquid and solid. +Features formed are: +Notes. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Volume.txt b/.github/workflows/data/simplewiki-500/Volume.txt new file mode 100644 index 000000000..bb38eadcc --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Volume.txt @@ -0,0 +1,14 @@ +"This article is about physical object; for meaning from audio field, see loudness." +The volume of an object is a measure of the amount of space occupied by that object, and is not to be confused with mass. The volume of a mountain is much larger than the volume of a rock, for instance. +By convention, the word volume implies a three-dimensional context where: +For objects at or near the Earth's surface, height or depth often refers to the dimension of the object along the local vertical. All physical objects occupy a volume, even if some are so thin that they appear to be two-dimensional, like a sheet of paper. +Units of volume. +The unit of volume in the International System of Units is the cubic meter, which is represented by the symbol m3. +In some fields or applications, one often uses different units to simplify the discussions or writings. For instance: +Traditional units are still in encountered in some countries: Imperial units such as the gallon or the fluid ounce were in widespread use within the British Empire. Some of them are still popular in the United States, which also uses units like the bushel, the quart, the cup and the teaspoon (in cooking recipes, for example). See U.S. customary units for more examples. +Non-conservation of volume. +The volume of an object is not a fundamental property of that object: it can change with environmental conditions such as pressure and temperature, especially if the object is highly compressible. +The volume of a mixture of fluids (liquids, gases) may or may not be equal to the sum of their volumes before they were mixed. +Measuring a volume. +In mathematics, the volume of simple geometric objects, written formula_1, can often be calculated on the basis of their shape and dimensions: +The volume of a gas is typically that of its container, but it could be ill-defined, as in the case of the atmosphere, which has no clear upper limit. The volume of a liquid is often measured by pouring it into a graduated container. The volume of a small solid can be estimated by immersing it into a graduated container partially filled with a known amount of liquid, provided the solid is not soluble in the liquid. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Wall.txt b/.github/workflows/data/simplewiki-500/Wall.txt new file mode 100644 index 000000000..203763bf4 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Wall.txt @@ -0,0 +1,15 @@ +A wall is a vertical dividing surface. It divides space in buildings into rooms or protects buildings. It is usually made of stone or brick. Walls have two main purposes: to support the top part of buildings, and to divide space, giving protection from invasion, escape, and weather. +Before powerful artillery was invented, many cities had protective walls. Since they are not suitable for defense any more, most city walls have been removed. +The term "the Wall" usually referred to the Berlin Wall, built during the Cold War, which fell in 1989, but may also refer to the Pink Floyd album of the same name. +Sealing people behind walls, in the form of immurement has historically been a method of human sacrifice and punishment. +Retaining wall. +A retaining wall is a structure made to hold soil from collapsing. It is made in special areas for any other construction work, such as farming or road making. +Types of retaining wall are: +Main type of walls. +Load Bearing Wall is a structural element. It carries the weight of a house from the roof and upper floors, all the way to the foundation. It supports structural members like beams, slab and walls on above floors. +Non-Load Bearing Wall doesn't help the structure to stand up and holds up only itself. It doesn't support floor roof loads above. It is a framed structure. Most are interior walls whose purpose is to divide the structure into rooms. +Partition Wall separates spaces from buildings. It can be solid, constructed from brick or stone. It is a framed construction. The partition wall is secured to the floor, ceiling, and walls. It is enough strong to carry its own load. It resists impact. It is stable and strong to support wall fixtures. The partition wall works as a sound barrier and it is fire resistant. +Cavity Wall A cavity wall or hollow wall consists of two separate walls, called leaves or skins, with a cavity or gap in-between. The two leaves of the cavity wall may be of equal thickness if it a non-load-bearing wall or the internal leaf may be thicker than the external leaf, to meet the structural requirements. +Veneered Wall holds up the material. It can be made of brick or stone. The most famous veneered wall is made of brick. The wall is only one wythe thick. It became the norm when building codes began to require insulation in interior walls. It is light weighted. Veneered walls can be built quickly. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Want.txt b/.github/workflows/data/simplewiki-500/Want.txt new file mode 100644 index 000000000..2f5cb1e31 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Want.txt @@ -0,0 +1,4 @@ +A want is a wish or a desire for something. If a person would like to have something, but can choose not to have it, that thing is wanted or can be called a want. To want is not the same as to need, which is when someone "must" have something. +People often talk about needing a thing, when they really just want it. Wants can be for the same things as needs. For example, a person can "need" to eat food and can "want" to eat cake. If there is no cake then he or she may have to eat something else, perhaps bread. The need is no longer so important (the person is no longer hungry) although the want may still be there. If there is cake, then the person's needs and wants can both be met. +In economics, a want is about goods or services. Choice is how to satisfy a want, when there are different ways to do this. +Want can also be the idea of what it means to be poor, hungry or with no money. Charles Dickens wrote a famous book called "A Christmas Carol" in which there are two children, named Want and Ignorance. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/War.txt b/.github/workflows/data/simplewiki-500/War.txt new file mode 100644 index 000000000..8232e4f44 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/War.txt @@ -0,0 +1,18 @@ +War is a situation or a period of fighting between countries or groups of people. A war generally involves the use of weapons, a military organization and soldiers. War is a situation in which a nation enforces its rights by using force. Not every armed conflict is a war. A fight between individuals, between gangs, drug cartels, etc. is not considered a war. However, most wars are called armed conflicts. International humanitarian law is a set of rules that tries to limit the effects of wars. International Humanitarian Law recognizes two kinds of wars. These are: +Karl von Clausewitz wrote in his classic book, "On War", that "war is a mere continuation of policy with other means.” Clausewitz viewed war as a political instrument. His book about military philosophy remains the most influential work on the history and strategy of war. An earlier authority on war was Sun Tzu. In his book "The Art of War", Sun Tzu saw war as a necessary evil. It was something people do. +Wars have been fought to control natural resources, for religious or cultural reasons and over political balances of power. They have been fought over legitimacy (correctness) of particular laws. They have been fought to settle arguments about land or money, and many other issues. The reasons behind any war are often very complex. While a war can start for just about any reason, there is usually more than one cause. +War and the beginning of nations. +From the earliest times, individual states or political factions have used war to gain sovereignty over regions. In one of the earliest civilizations in history, Mesopotamia, they were in a near constant state of war. Ancient Egypt during its Early Dynastic Period came about by war when Lower and Upper Egypt were joined as one country, about 3100 BC. The Zhou Dynasty ruled Ancient China came to power in 1046 through war. Scipio Africanus (236-183 BCE) defeated Carthage leading Ancient Rome to begin a conquest of the known world. Philip II of Macedon (382-336 BCE) united a group of city-states to become Ancient Greece. +Kinds of war. +Sometimes, people don't see a difference between fighting between countries or people, and the formal declaration of a state of war. Those who do see this difference usually only use the word "war" for the fighting where the countries' governments have officially declared war on each other. Smaller armed conflicts are often called riots, rebellions, coups, etc. +One country may send forces to another country for a variety of reasons. Sometimes it is to help keep order or prevent killings of innocents or other crimes against humanity. It may be to protect a friendly government against an uprising. Here it may be called a police action or humanitarian intervention instead of a war. Some people think it's still a war. +Another kind of war existed from 1947 until 1991 called the Cold War. This started when diplomatic relations between the United States and the Soviet Union broke down. Both countries had nuclear weapons and both stood ready to use them against the other. But there was no actual war between the two. It ended with the fall of the Soviet Union in 1991. The cold war was also called a containment where the United States tried to prevent the spread of communism to other countries. During the cold war, the major powers did not fight themselves, but often backed third parties in what was called a proxy war. The Vietnam War is often given as an example of a proxy war. But proxy wars happened long before the cold war and are still happening. +A war between peoples and groups in the same country is known as a civil war. It is generally agreed there are two things that make a war a civil war. It must be a struggle between groups in the same country or state over political control or to force a major change in the government's policy. The second criterion is that more than 1000 people have to have been killed, with a minimum of 100 from each side. The American Civil War is an example of a civil war. While the figures are mere estimates, the total casualties are thought to be about 750,000. +Laws of war. +Only in the last 150 years or so, have states agreed on international laws to limit warfare. This has been mainly for humanitarian reasons. The Geneva conventions and the Hague Conventions are two examples of agreements that establish laws governing wars. Collectively, these are usually called International humanitarian law (IHL). Because these are established laws, they restrict those engaged in armed conflicts to follow the IHL. Also, a country must not only respect the law but they also need to make sure other countries respect it as well. They cannot turn a blind eye (meaning pretend they do not see a thing) to countries who are not following IHC. The first of these was the Geneva Convention in 1864. It became international law with the signatures of 100 countries. +Statistical analysis. +The statistical analysis of war was started by Lewis Fry Richardson following World War I. More recent databases of wars have been assembled by the Correlates of War Project and Peter Brecke. +Notes. +<templatestyles src="Reflist/styles.css" /> +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Water.txt b/.github/workflows/data/simplewiki-500/Water.txt new file mode 100644 index 000000000..c473c2b93 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Water.txt @@ -0,0 +1,48 @@ +<templatestyles src="Chembox/styles.css"/> +Water (H2O) is a transparent, tasteless, odourless, and almost always colourless chemical substance and covers about 71% of Earth's surface. +It is know as the vital element and the most important thing for our life, because no known life can live without it. This has to be qualified a bit. There are some forms of life which can survive without it, but cannot reproduce without it. Since reproduction is a central part of life, it is clear that water is essential for an organism to survive and reproduce. +Lakes, oceans, seas, and rivers are made of water. Precipitation is water that falls from clouds in the sky. It may be rain if it is liquid, or it may be snow or ice frozen if it is cold. When water gets below , it freezes and becomes ice, the frozen kind of water. If water gets very hot (above , it boils and becomes steam or water vapor. +There is a cycle called; the water cycle. +Physical chemistry of water. +Water is a fluid. Water is the only chemical substance on Earth that exists naturally in three states. There are over 40 anomalies (strange things) about water. Unlike most other liquids such as alcohol or oil, when water freezes, it expands by about 9%. This expansion can cause pipes to break if the water inside them freezes. +Water is a molecule made of two hydrogen atoms and one oxygen atom. Its chemical formula is H2O. +Like other liquids, water has a surface tension, so a little water can make drops on a surface, rather than always spreading out to wet the surface. +Things having something to do with water may have "hydro" or "aqua" in their name, such as hydropower or aquarium, from the Greek and Latin names for water. It is also called the "universal solvent", because it dissolves many other compounds. +In small amounts, water appears to have no color but in large amounts (such as seas or lakes), it has a very light blue color. +Uses of water. +Plants and animals (including people) are mostly water inside, and must drink water to live. It gives a medium for chemical reactions to take place, and is the main part of blood. It keeps the body temperature the same by sweating from the skin. Water helps blood carry nutrients from the stomach to all parts of the body to keep the body alive. Water also helps the blood carry oxygen from the lungs to the body. Saliva, which helps animals and people digest food, is mostly water. Water helps make urine. Urine helps remove bad chemicals from the body. The human body is between 60% and 70% water, but this value differs with age; i.e. a foetus is 95% water inside. +Water is the main component of drinks like milk, juice, and wine. Each type of drink also has other things that add flavor or nutrients, things like sugar, fruit, and sometimes alcohol. Water that a person can drink is called "potable water" (or "drinking water"). The water in oceans is salt water, but lakes and rivers usually have unsalted water. Only about 3% of all the water on earth is fresh water. The rest is salt water. +Many places, including cities and deserts, don't have as much water as people want. They build aqueducts to bring water there. +Though people can survive a few months without food, they can only survive for a day or two without water. A few desert animals can get enough water from their food, but the others must drink. +Water has no smell, taste, or color. +Water is also used for recreational purposes, "see list of water sports". +Water is used as both the coolant and the neutron moderator in most nuclear reactors. This may be ordinary water (called light water in the nuclear industry) or heavy water. +Water is also used for washing a lot of objects. Goods, services and people are transported to other countries in watercrafts on bodies of water. +Water is used in chemical reactions as a solvent or reactant. Water is also used in fire fighting. Water is also used for cooking. +Dihydrogen monoxide parody. +The dihydrogen monoxide parody involves calling water by the unfamiliar chemical name "dihydrogen monoxide" (DHMO) and listing some of its harmful effects in an alarming way. Some examples include talking about how "it causes burning, suffocation and corrosion," when it is actually just talking about hot water, drowning and rust. Sometimes the parody calls for it to be banned and/or labelled as dangerous. +The prank works because it takes advantage of people's misunderstanding. Calling water by an unfamiliar name and making it sound like a harmful chemical can make people think it is dangerous. +"Dihydrogen monoxide" is an alternative chemical name for water, but nobody uses it. The word "dihydrogen" means two hydrogens, and "monoxide" means one oxygen. The chemical formula of water has two hydrogen atoms and one oxygen atom. +The parody gained most of its popularity in the 1990s, when a 14-year-old named Nathan Zohner collected anti-DHMO petitions for a science project about gullibility. Zohner fooled a lot of people, which has led to his project being used in lessons about critical thinking and the scientific method. +The website DHMO.org is a joke website which lists the harmful effects of water (DHMO), answers questions, and calls for it to be banned, among other things. +Origin of the Earth's water. +The weirdness of water. +A BBC short item explains that every molecule on Earth has existed for billions of years, and all of them came from elsewhere. Water is alien because it arrived on asteroids and comets. It is the second most common molecule in the universe. It is made of two very light elements. Ice floating on water is also an oddity, caused by the nature of water to expand and drop in density when it freezes. Also, hot water can freeze faster than cold, and both this effect and it's causes are still the source of scientific debate and study today. Molecules of water can move up against the force of gravity (that is due to surface adhesion). +Water in the universe. +Much of the universe's water is produced as a by-product of star formation. +On 22 July 2011, a report described the discovery of a gigantic cloud of water vapor containing "140 trillion times more water than the Earth's oceans combined" around a quasar 12 billion light years from Earth. According to the researchers, the "discovery shows that water has been prevalent in the universe for nearly its entire existence". +Water has been detected in interstellar clouds in our galaxy, the Milky Way. Water probably exists in abundance in other galaxies, too. Its components, hydrogen and oxygen, are among the most abundant elements in the universe. Most other planetary systems may have similar ingredients. +Origin of water on Earth: possibilities. +We do not know exactly how the Earth came to have so much water. It is everywhere in the Universe, but it is uncommon for a place to have so much. The reasoning is like this: every element (except hydrogen and some helium) has been formed in stars. Therefore, oxygen was originally formed in stars. The formation of water is not a problem: it is exothermic, so forming the molecule from its atoms does not need outside energy. But to explain why the Earth has so much compared to, for example, Mars, is not easy. It is an undecided problem in planetary geology. +For a while, people thought Earth’s water did not come from the planet’s region of the protoplanetary disk. Instead, it was thought that water and other volatiles must have been delivered to Earth from the outer Solar System later in its history. But hydrogen inside the Earth did play some role in the formation of the ocean. The two ideas may each be partly right. Water was delivered to Earth by impacts from icy planetesimals (asteroids) in the outer edges of the asteroid belt. How much is not known. +Water vapor. +Water vapor (or water vapour) is the gas form of water. It is found in: +Liquid water. +Liquid water is found on Earth. It covers about 71% of the surface of the Earth. Liquid water is sometimes found in small amounts on Mars. Scientists believe that liquid water is in the moons Enceladus, Titan, Europa and Ganymede. +Frozen water. +The frozen form of water (ice) is found in: +Related pages. +<templatestyles src="Div col/styles.css"/> +References. +<templatestyles src="Reflist/styles.css" /> +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Web browser.txt b/.github/workflows/data/simplewiki-500/Web browser.txt new file mode 100644 index 000000000..2e5fae817 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Web browser.txt @@ -0,0 +1,9 @@ +A web browser is a computer program application for reading pages of the World Wide Web. Since the late 1990s, most personal computers and mobile phones and other mobile devices have a browser. +Web browsers are used by people to find and look at websites on the Internet. The first web browser was created in 1990. Many web browsers are available for free. All web browsers can go to websites but each browser has good things and bad things about it. For example, some browsers focus on data security and keeping computers safe from viruses. Other browsers are made so that web pages appear on-screen faster. +Some popular web browsers include: +Other browsers are: +Web browsers and HTML. +A webpage is one page of a website. Every web page has a web address. +A web browser goes to a web page using a web address. It downloads the HTML file stored at that address. Its browser engine then reads and translates the HTML file. The browser will then show the webpage on the screen as text, images and clickable links. +Other websites. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Web.txt b/.github/workflows/data/simplewiki-500/Web.txt new file mode 100644 index 000000000..008f083f6 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Web.txt @@ -0,0 +1,2 @@ +Web can mean several things +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Webpage.txt b/.github/workflows/data/simplewiki-500/Webpage.txt new file mode 100644 index 000000000..637f772e7 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Webpage.txt @@ -0,0 +1,6 @@ +A webpage (or web page) is a document from the internet which can be seen with a web browser. Web pages each have a URL or address, which is how a page is found, and is different for every page. When a webpage is part of a larger group of pages managed by a company, person, or organization, it is part of a website. +Pages can have words, pictures, videos, and links. Links are ways to get to other web pages. +For example, this article is a webpage. It has the URL https://simple.wikipedia.org/wiki/Webpage, and is part of the Wikipedia website. It has words and links. The links in this page are shown in blue and can be clicked to go to other webpages. +Technology. +Web pages are usually stored in HTML code which describes what to show on the page like words or pictures. Web pages can also use two other types of code to tell the page how to work: + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Website.txt b/.github/workflows/data/simplewiki-500/Website.txt new file mode 100644 index 000000000..a73444cfe --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Website.txt @@ -0,0 +1,16 @@ +A website is a set of webpages that are joined. People look at websites with a computer of some kind, which can sometimes be the computer inside a mobile phone or a television. The websites are kept on computers called web servers. +Overview. +There is almost always a single homepage which has links to other pages that are part of that website. Sometimes it has links to pages that are part of other websites as well. (Note that net jargon uses the word "site", which also means a physical place in the real world, to mean a web URL). A home page serves as the introduction page of a website. +Some websites are used to advertise or sell things. Some websites can also be used to talk to other people. Many websites are good for looking up information on the computer. A blog is a website where the location of the material is less relevant than who writes it, and which is more focused on dialogue. Very often the people who use blogs dislike the word "site" since it implies a controlled place. +Accessing websites. +Users can access any website by using a URL. This is the website address which is shown near the top of the web browser. The homepage and the rest of the site usually have the same words at the start of the URL — for example, pages at the Simple English Wikipedia always start "http://simple.wikipedia.org/..." but are different after that. However, if a person does not buy a domain name, the website could be an IP Address. An example of an IP address is 172.217.13.228. +Appearance. +Web sites are usually shown in HTML (Hyper Text Markup Language) but are not always written or kept that way - some use WAP and others use XML. +Website builder software is usually a collection of software tools that allow the construction of websites without manual code editing. Several hosted website services have website builder software built-in. +Types. +There are many different types of website based on their purpose and the type of organisation they are created for. +Domain types. +Websites have different kinds of domain endings, which are the two-or-three letter pieces after the period (".") on the website. Different website owners use different domain endings for different purposes. +References. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Width.txt b/.github/workflows/data/simplewiki-500/Width.txt new file mode 100644 index 000000000..c3b537fac --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Width.txt @@ -0,0 +1,5 @@ +Width or breadth is the side-to-side length, measuring across the object at right angles to the height. +For example, the distance between the left side and right side of a chair is its width. +Objects have a length and a width in two dimensions or more. In shapes such as rectangles, multiplying the length and the width equals the area of the shape. +Related pages. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Wiki.txt b/.github/workflows/data/simplewiki-500/Wiki.txt new file mode 100644 index 000000000..36ee25c3f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Wiki.txt @@ -0,0 +1,9 @@ +A wiki is a type of website that lets anyone create and change its pages. The word is sometimes used in Internet slang to mean Wikipedia. W"iki" is short for WikiWikiWeb. "Wikiwiki" is a word from the Hawaiian language, meaning "fast" or "speed". Examples of wikis include Wikipedia, Everipedia, Citizendium, , Conservapedia, Wiktionary and Wikibooks. +Every wiki can be changed, or edited, by anyone who has an account on the wiki, or by everyone in the world if the wiki allows it. Some important pages can only be changed by certain users. Wikis are central places where everybody can share and add new information, and then people read them. Wikis allow information from all around the world to be collected. +On a wiki, people can write pages by collaboration and teamwork. Pages are watched closely to see whether changes are good or bad. If one person writes something wrong, another can correct it. Other users can also add something new to the page. Because of this, the page gets better when people change it. Administrators can block someone from editing if they vandalize, or for other reasons. Users can also discuss things on wikis. Discussion can help people understand things better and get a chance to tell their views. In Wikipedia, the talk pages are for that, but in some wikis, the article and the discussion are in the same page. +Wikis can be used for different things; not all wikis follow the same rules for using them. For example, the purpose of Wikipedia is to write articles for an encyclopedia. That is why on Wikipedia, people do not want general discussion that does not help in writing articles. +Ward Cunningham started the first wiki in March 1995. Many people liked it, and wrote there, after which they started similar websites such as Wikipedia. MediaWiki is the most used software for wikis and is the software used for Wikipedia and many other Wikis. JSPWiki is one of many others. "Wiki" is also sometimes an abbreviation for Wikipedia. +Vandalism. +Most wikis can be edited by anyone and everyone. Some wikis are even available to people without an account, so sometimes wikis will become a target for vandals to add unwelcome, disruptive or even misleading content. There are many ways to prevent this. Individual pages can be protected to allow only certain users, or only those with an account, to edit them. Administrators can also block users who make repeated Vandal edits after a minimum of a single warning. Vandalism may not be stopped totally, but regular, careful checking can limit the amount of disruption. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/WikiWiki.txt b/.github/workflows/data/simplewiki-500/WikiWiki.txt new file mode 100644 index 000000000..788611d7f --- /dev/null +++ b/.github/workflows/data/simplewiki-500/WikiWiki.txt @@ -0,0 +1 @@ +<--/ sorry I mistake --The supposed ""Deletor"" --> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Wiktionary.txt b/.github/workflows/data/simplewiki-500/Wiktionary.txt new file mode 100644 index 000000000..b2f461f65 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Wiktionary.txt @@ -0,0 +1,8 @@ +Wiktionary is a wiki-based project to develop a multilingual online dictionary, or a group of meanings for words, in the form of a wiki. There are many languages of Wiktionary. Wiktionary is also a thesaurus. Wiktionary is run by the Wikimedia Foundation, which also runs Wikipedia. The English Wiktionary currently has over 7.3 million pages and 4.0 million users. Much like Wikipedia, the Wiktionary is run in several different languages that can be selected from its main page. These include the Simple English Wiktionary. +Logo. +In 2006, there was a vote for the change of the logo of Wiktionary. The original logo of only words was replaced. However, there were very few people who voted in this contest. Therefore, smaller wikis used the newer logo but the English Wiktionary stayed with the same logo. +In 2009, there was a second contest for a newer logo "(pictured)". This was a step to make all the Wiktionaries to have the same logo on all projects. However, the English Wiktionary still did not use the new logo. The Simple English Wiktionary voted on the new logo on November 30, 2010 and the community decided the new logo to use it as their logo. However, no changes were made to the logo and the discussion was thus forgotten. +References. +<templatestyles src="Reflist/styles.css" /> +Other websites. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Window.txt b/.github/workflows/data/simplewiki-500/Window.txt new file mode 100644 index 000000000..fc6904392 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Window.txt @@ -0,0 +1,23 @@ +A window is an opening in a wall or roof of a building, in a car etc., to let air and light in. It is usually filled with a sheet of glass. There can be many different shapes and sizes, including rectangular, square, circular, or irregular shapes. Some windows include coloured glass. Windows are usually transparent so that people can see through them. +Before glass was used in windows, people in Asia used paper to fill the hole in the wall. The paper would let light in. +Types of windows. +There are different types of windows. They are: +Cross-window. +A cross-window is a window that has a mullion and a transom, that makes a cross. +Fixed window. +A fixed window is a window that cannot be opened. It is made to allow light to enter. The windows in churches are usually fixed. +Single-hung sash. +A single-hung sash window is a window that has one horizontal sash at the bottom that can move up and down. +Double-hung sash. +A double-hung sash is a window that has two sashes (panels) that can independently move up and down. One is usually the lower; one the upper. +Casement window. +A casement window is a window with a sash that has a hinge that swings in or out like a door. Casement windows are usually held open using a casement stay. +Skylight. +A skylight is a window built into a roof. This type of window allows natural daylight and moonlight to enter. +Roof lantern. +A roof lantern is a glass structure that has lots of different colours. It looks like a small building. It is built on a roof for day or moon light. +Stained-glass window. +A stained-glass window is a window that is made up of pieces of coloured glass. The coloured glass can be transparent, translucent or opaque. It usually shows people or places. Usually, the glass in these windows is separated by lead rods. Stained-glass windows are very common in churches. +How they are made. +Different materials are used when making a window. For the frame of the window wood, polyvinyl chloride, composite, aluminium, steel, fiberglass are used. +Many windows have movable window coverings such as blinds or curtains. They keep out light and add insulation. They also ensure privacy. Windows allow natural light to enter. Too much can have bad effects such as glare and too much heat. \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Windows.txt b/.github/workflows/data/simplewiki-500/Windows.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/workflows/data/simplewiki-500/Wine.txt b/.github/workflows/data/simplewiki-500/Wine.txt new file mode 100644 index 000000000..0b7a2fdd9 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Wine.txt @@ -0,0 +1,18 @@ +Wine is an alcoholic drink. It is made from the juice of grape. +If alcoholic drinks made from the juice of other fruits (such as plums or blackberries they may be called "wine". This article only deals with wine made from grapes. +Different types of wine. +There are two main types of wine, red wine and white wine. Red wine is made using the skins of the grapes. The skins give the wine a dark color, and chemicals called tannins that taste slightly bitter. Red wine can be sweet or dry. "Dry" means low in sugar. +White wine is made without the grape skins at all, so it is usually less bitter and more acidic. Like red wines, they can be sweet or dry. +Rosé wine (a French word meaning "pink") is in between: it has some flavor and color from the skins, but not as much as a red wine. +Wine with bubbles in it, called sparkling wine. Sparkling wine can be red, white, or rosé, but is usually white. It can be made in any country, but the best-known sparkling wines are champagne, which comes from France and (recently) southern England, "Prosecco", from Italy. +Fortified wine is made by mixing liquor into the wine while it ferments. +Wine making. +Wine making begins with growing red or white grapes. Wine grapes have thicker skins and bigger seeds compared to grapes for eating. After the grapes are ripe, they are picked off the plants. There are different ways of picking (for example, using machines, or picking by hand, in the day, or at night). +After harvest, the grapes are crushed to release their juice, which is very sugary. Before, this was done by people stomping on grapes with their bare feet. Today, machines are used, but people sometimes use their bare feet in festivals. The person making the wine also decides now if the wine will be red, white, or rose: +Next, the sweet grape juice is fermented, by adding yeast. In a few days, the yeast turns the sugar into alcohol, and also releases carbon dioxide. +After fermenting, the wine is stored for a while (called "aging"). The person making the wine can make different choices, which will change the flavor of the wine. They can choose to store the wine in a steel container, or a barrel made of oak wood. If they choose wood, the wine will absorb some of the wood flavor, which wine drinkers call "oakiness". This process can take only a couple of weeks, up to several years, depending on what kind of flavor the wine maker wants. +Lastly, the wine is bottled and sent to a customer, restaurant or store to be enjoyed. +Wine and people. +People have been making wine for at least 5000 years. The oldest evidence of ancient wine production has been found in Georgia from c. 6000 BC (the earliest known traces of grape wine), +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Word.txt b/.github/workflows/data/simplewiki-500/Word.txt new file mode 100644 index 000000000..27987bb7c --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Word.txt @@ -0,0 +1,11 @@ +A word is something spoken by the mouth which is meaningful. It is usually part of a sentence which makes the meaning clear. +Words are also used in writing, which is a relatively modern invention. In alphabetic writing, a word is a collection of letters. The word then communicates a meaning. These can also usually be pronounced. A logogram is also a word. +Some words have more than one meaning, for example 'spring' can refer to the season, the device, or a conjugation of the verb. These are homonyms. Some words have different pronunciation, for example, 'wind' (the noun) and 'wind' (the verb) are pronounced differently. +Some words have different spelling - for example 'color' and 'colour', which are both correct. ‘Color' is used in American English and ‘colour' is used in British English. Some words can be only one letter, for example "a" and "I" in English. Besides English, all other languages have their own words. When written with an alphabet, words are usually separated by a space. When written with ideograms, each word is usually a separate symbol. +Words can be invented. This is called neologism. For example, radar was originally an acronym but became an actual word. Two words may be joined to make a compound word. +Fuller definition. +A word is the smallest thing which can be said "with meaning". For example, "hello" is a word. +This contrasts with a morpheme, which is the smallest unit of meaning but may not stand on its own. A word may consist of a single morpheme (for example: "oh!, rock, red, quick, run, expect"), or several ("rocks, redness, quickly, running, unexpected"), whereas a morpheme may not be able to stand on its own as a word (in the words just given, these are "-s, -ness, -ly, -ing, un-, -ed"). +The meaning of a word can be found in a dictionary. +More reading. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/World Wide Web.txt b/.github/workflows/data/simplewiki-500/World Wide Web.txt new file mode 100644 index 000000000..738f7b2e7 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/World Wide Web.txt @@ -0,0 +1,6 @@ +""The Web" redirects here. For other uses, see Web (disambiguation)". +The World Wide Web ("WWW" or "The Web") is the part of the Internet that contains websites and webpages. It was invented in 1989 by Tim Berners-Lee at CERN, Geneva, Switzerland. Sir Tim Berners-Lee created a new markup language called HTML. Websites comprise of pages linked by hypertext links that are written in HTML. +The software to see the World Wide Web is called a web browser. To access the World Wide Web, one also needs a connection to the Internet. +Many companies nowadays offer website hosting allowing one to make websites that can be displayed on the World Wide Web, including a custom domain (www.stuff.com) site. +Other websites. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Yard (disambiguation).txt b/.github/workflows/data/simplewiki-500/Yard (disambiguation).txt new file mode 100644 index 000000000..4e4e324ba --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Yard (disambiguation).txt @@ -0,0 +1,3 @@ +A yard is a unit of length in some measuring systems. +Yard can also mean: +<templatestyles src="Dmbox/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Year.txt b/.github/workflows/data/simplewiki-500/Year.txt new file mode 100644 index 000000000..0233c7b7d --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Year.txt @@ -0,0 +1,7 @@ +A year is about 365 days (except in a leap year). It is the time it takes the Earth to go completely around (orbit) the sun once. A year is actually almost 365.25 days long, but a calendar has 365 days, except in a leap year, which has 366 days. +The year starts on January 1 and ends on December 31 in the Gregorian calendar, but a fiscal year or a school year can start on a different day of the year. +There are several ways used to measure the length of a year. +Solar and lunar years are used by different calendars for daily life. The other measurements are used by astronomers. +A specific calendar is provided for the liturgical year. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Yiddish.txt b/.github/workflows/data/simplewiki-500/Yiddish.txt new file mode 100644 index 000000000..634608564 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Yiddish.txt @@ -0,0 +1,9 @@ +Yiddish is a language used by some Jews. At first, it was a dialect of German that Jews began to use in 11th century Europe. It is still used in the United States, especially in New York City, and other countries with surviving Jewish populations. +Overview. +Most Yiddish words come from German and Hebrew. Some Yiddish words come from Slavic languages (particularly Polish), Latin, French, Hungarian. Yiddish is often written in Hebrew alphabet and spoken by about 3,000,000 people worldwide, mainly Hasidic Jews. In Sweden and the Netherlands, Yiddish is protected by the "European Charter for Regional or Minority Languages". +English words of Yiddish origin. +Some modern English words derive from Yiddish, including but not limited to: +Other websites. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/You.txt b/.github/workflows/data/simplewiki-500/You.txt new file mode 100644 index 000000000..17c5b7649 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/You.txt @@ -0,0 +1,2 @@ +You is a second-person English pronoun. The word can be singular or plural. It is what a person says when he or she is addressing another person in second person. Sometimes, just using the English letter "u" is acceptable, and "ur" for the words "you're" and "your". This is very informal, and is mostly used in texting. + "This can be made longer. You can help Wikipedia by [ adding to it]".</div > \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Zebra.txt b/.github/workflows/data/simplewiki-500/Zebra.txt new file mode 100644 index 000000000..30d810fb2 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Zebra.txt @@ -0,0 +1,10 @@ +Zebras mammals family "Equidae". Zebras African horses. They same genus common horse, "Equus caballus", and donkeys. Zebras known having black and white stripes. There three species zebra, Grevy's Zebra, Plains Zebra, and Mountain Zebra. +Appearance. +All zebras have very short fur because they live in hot areas. Their fur has black and white stripes. The main part of the body has mostly vertical stripes, and the legs have horizontal stripes. They also have a dark line directly down their spine. Each of the different zebra species has different types of stripes. Each zebra has a unique pattern. +Despite many attempts, we do not really know what the advantage is of having those characteristic stripes. There are different species and sub-species of zebra, and they all have stripes, so scientists think it must be important. +Life. +Zebras are social animals that spend time in herds, they graze together and sometimes even groom each other. They can have babies (foals) when they are about five years old and can have one every year. Zebras mainly eat grass. They always live near water and are an endangered species. +Zebras live in Africa, south of the Sahara desert. +References. +<templatestyles src="Reflist/styles.css" /> + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Zinc.txt b/.github/workflows/data/simplewiki-500/Zinc.txt new file mode 100644 index 000000000..405246e44 --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Zinc.txt @@ -0,0 +1,51 @@ +Zinc, sometimes called spelter, is a chemical element. It is in the group of metals called the transition metals. It is sometimes considered a post-transition metal. Its symbol on the periodic table is "Zn". Zinc is the 30th element on the periodic table, and has an atomic number of 30. Zinc has a mass number of 65.38. It contains 30 protons and 30 electrons. In total, 29 isotopes of zinc are known, and five of these occur in nature. Some isotopes are radioactive. Their half-lives are between 40 milliseconds for 57Zn and 5x1018 years for 70Zn. +Zinc is a metal that is mostly used for galvanizing and batteries. It is the fourth most common metal used by people. +Properties. +Physical properties. +Zinc is a shiny bluish grey metal. When it has just been cut, zinc has a whitish-grey color. If it is exposed to air, it will not stay shiny for long. Its melting point is (), and its boiling point is (). This temperature is lower than most transition metals but higher than tin or lead. It can be melted on a cooking stove. It boils at a low temperature for a metal. It is not magnetic. When heated a little, it becomes very flexible. If it is heated more, it becomes very brittle. It forms alloys easily with other metals. +Chemical properties. +Zinc is a reactive metal. It is about as reactive as aluminium and more reactive than most of the more common metals, such as iron, copper, nickel, and chromium. It is less reactive than magnesium. Zinc can react with acids, bases, and nonmetals. It does not rust in air, though. A coating of zinc oxide and zinc carbonate forms on the surface of the zinc when it is in air. This coating stops corrosion. Acids can dissolve this coating and react with the zinc metal. This reaction of zinc with an acid makes a zinc(II) salt such as zinc chloride and hydrogen gas. This is a very common chemical reaction. The reaction below is the reaction with hydrochloric acid. +Zn + 2HCl → ZnCl2 + H2 +Zinc can burn when powdered or in small pieces to make zinc oxide, a white powder. The flame is bright blue-green. + 2 Zn + O2 → 2 ZnO +Zinc oxide can dissolve in strong bases. This reaction happens in some batteries that have zinc in them. + ZnO + H2O + 2 OH- → Zn(OH)42-. +Zinc is a chalcophile. This means that it would rather react with sulfur and elements below it on the periodic table than oxygen. That is why zinc sulfide is the most common zinc ore, not zinc oxide. +Chemical compounds. +Zinc can make chemical compounds with other elements. These chemical compounds are only in one oxidation state: +2. A +1 compound has been found but it is hard to make. There are no other oxidation states other than +1 or +2. Most of these compounds have no color. If they have a color, it is not the zinc that is making the color. +Zinc chloride is one of the most common zinc compounds. They are quite unreactive. They are a little acidic when dissolved in water. They make a green flame when heated in a fire. +Other zinc compounds are: +Occurence. +Five isotopes of zinc are found in nature. 64Zn is the most common isotope, with 48.63% of naturally occurring Zinc. This isotope has a half-life of 4.3x1018 years. This is so long, that its radioactivity can be ignored. Similarly, 70Zn (0.6%), with a half life of 1.3x1016 years is usually considered to not be radioactive. The other isotopes found in nature are 66Zn (28%), 67Zn (4%) and 68Zn (19%). +Zinc is not found as a metal in the earth's crust. Zinc is only found as zinc compounds. Sphalerite, a mineral that is made of zinc sulfide, is a main ore of zinc. Very little zinc is in the ocean. Zinc ore is normally found with copper and lead ores. +There are some other zinc ores, such as smithsonite (zinc carbonate) and a zinc silicate mineral. They are less common. +Preparation. +The zinc sulfide is concentrated by flotation. There is a detergent that collects the zinc sulfide. The impurities sink to the bottom and are removed. Then the zinc sulfide is heated in air to make zinc oxide and sulfur dioxide. +2 ZnS + 3 O2 → 2 ZnO + 2 SO2 +The sulfur dioxide is oxidized to sulfur trioxide. +2 SO2 + O2 → 2 SO3 +The sulfur trioxide reacts with the zinc oxide to make zinc sulfate. This makes a soluble form of zinc which can be processed more. +SO3 + ZnO → ZnSO4 +The zinc sulfate is purified and electrolyzed. This electrolysis makes oxygen, zinc, and sulfuric acid. This makes a pure zinc that is known as "SHG" or special high grade. +2 ZnSO4 + 2 H2O → 2 Zn + 2 H2SO4 + O2 +The sulfuric acid is reused in place of the sulfur trioxide to leach more zinc oxide. +Zinc oxide can also be reduced by carbon to zinc metal and carbon dioxide at high temperatures. This is a blast furnace process similar to how iron is made. +2 ZnO + C → 2 Zn + CO2 +This form of zinc is cheaper but is not pure. +Zinc is the fourth most commonly used metal in the world. About 10 million tons are made every year. +Uses. +As a metal. +Zinc is used in electrical batteries. The alkaline cell and the Leclanche cell are the ones that use zinc the most. It becomes oxidized and provides electrons for the battery to run. +About 59% of zinc is used for corrosion prevention, which includes galvanizing. 47% of the world's zinc is used for galvanizing. This is used to protect another metal, usually iron, from rusting. The zinc coating corrodes instead of the iron. The zinc coating can be placed on the metal in two ways. The metal can be dipped into a pot of melted zinc. The zinc can also be electroplated on to the metal. Dipping lasts longer but has a patchy surface that some do not think looks nice. It is also used in motorboats and pipelines to slow rusting. The motor of a motorboat often has a "bullet" of zinc, that will corrode easily, but will help other metal parts of the motor to stay rust free. +Zinc is used in alloys. Brass is an alloy of copper and zinc. Brass is the most common zinc alloy. Zinc can form alloys with many other metals. Zinc aluminium is an alloy of zinc and aluminium, which makes good bearings. Commercial bronze has zinc in it. Sometimes cadmium telluride is reacted with zinc to make cadmium zinc telluride, a semiconductor. Nickel silver is another zinc alloy. +Zinc can be used in the pipes of a pipe organ. An alloy of tin and lead was used in the past. Zinc is used in the US penny, which only has a thin layer of copper. The core is zinc. Older pennies were made completely out of bronze. +A mixture of powdered zinc and sulfur can be used to propel a model rocket. This reaction makes zinc sulfide, heat, light, and gases. Zinc sheet metal is used to make zinc bars. +As zinc compounds. +About 1/4 of zinc is used to make zinc compounds. Zinc oxide can be used for sunscreen or paint pigment. Zinc oxide also is a semiconductor. Zinc chloride is used to preserve wood so it does not rot. Some fungicides have zinc in them. Zinc sulfate is used in dyes and pigments. Zinc sulfide is used in fluorescent bulbs to convert the ultraviolet light to visible light. +In biology. +Humans need a little bit of zinc to help their body run well. If they do not get enough zinc in their food, they can get a mineral deficiency. Almost two billion people have a zinc deficiency. Zinc deficiency makes one more easily get infections. Some people say that when we get colds, we should take more zinc. Others say that zinc does not make a difference. There are medicines that one can use when they have a cold. People add tiny amounts of zinc compounds to vitamin pills and cereals to make sure that they get enough zinc. Most single-tablet vitamins have zinc in them. Zinc is found in at least 100 enzymes. It is the second most common transition metal other than iron. Zinc also is used by the brain. The human body contains 2 to 4 grams of zinc. A zinc enzyme helps remove carbon dioxide from blood. Whole wheat has much zinc in it. +Safety. +Large amounts of zinc metal are toxic. It can dissolve in stomach acid. When too much zinc is eaten, copper and iron levels go down in the body. Zinc compounds can be corrosive in the stomach. Zinc compounds put in the nose can ruin the sense of smell. +Zinc ions are very toxic to fish and many things that live in water. +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Zoo.txt b/.github/workflows/data/simplewiki-500/Zoo.txt new file mode 100644 index 000000000..5a164e60b --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Zoo.txt @@ -0,0 +1,8 @@ +A zoological garden, zoological park, or zoo is a place where many different species types of animals are kept so that people can see and watch them. +Modern zoos try not only to be for people's entertainment, but for education, research, and the conservation and protection of animals. Many zoos are centers where rare animals are preserved when they are in danger of dying out. These modern zoos also want to give the animals a natural life, so that they are healthy and behave normal. This is done for the animals, but also that people can see the animals as if they were in nature, and not in a zoo. +Zoos cost money. They educate the public on the biological diversity that makes up the world. They help people and wildlife successfully coexist. They pursue continuing research and education for people. They preserve crucial natural resources. They work to provide the most natural environment possible for wildlife in their care. Without enough money they cannot do these things. +Many zoos are not like the modern type of zoo. There the animals are held in bad conditions. They are kept in small cages. They get bored. They also get sick. Animals can also get very stressed in zoos. +Types. +There are different types of zoo all over the world. They are: +References. +<templatestyles src="Reflist/styles.css" /> \ No newline at end of file diff --git a/.github/workflows/data/simplewiki-500/Zoology.txt b/.github/workflows/data/simplewiki-500/Zoology.txt new file mode 100644 index 000000000..c33b9808e --- /dev/null +++ b/.github/workflows/data/simplewiki-500/Zoology.txt @@ -0,0 +1,8 @@ +Zoology is the science of studying animal life. It is part of biology". "Animal life is classified into groups called "phyla", of which there are at least thirty. +Zoologists are scientists who study animals. They may work in laboratories, or do field research. The methods are many and various. At the heart, they cover the structure, function, ecology and evolution of animals. The structure is investigated by dissection, and microscopic examination. The function is investigated by observation and experiment. Palaeontology supplies information about extinct animals. Zoologists may be employed by zoos, museums, universities, universities, non-profit organizations. +Select zoologists. +<templatestyles src="Div col/styles.css"/> +References. +<templatestyles src="Reflist/styles.css" /> +Other websites. + "This about can be made longer. You can help Wikipedia by [ adding to it]". \ No newline at end of file From 6d7aa54cfa6f62c8f78850ce04072643bec0d599 Mon Sep 17 00:00:00 2001 From: htagourti Date: Tue, 14 Oct 2025 08:12:18 +0000 Subject: [PATCH 079/126] only delete user owned partitions --- openrag/components/indexer/vectordb/vectordb.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openrag/components/indexer/vectordb/vectordb.py b/openrag/components/indexer/vectordb/vectordb.py index c7102abe5..cac8cb7b5 100644 --- a/openrag/components/indexer/vectordb/vectordb.py +++ b/openrag/components/indexer/vectordb/vectordb.py @@ -834,6 +834,7 @@ async def delete_user(self, user_id: int): user_partitions = [ p["partition"] for p in self.partition_file_manager.list_user_partitions(user_id) + if p["role"] == "owner" ] for partition in user_partitions: self.partition_file_manager.delete_partition(partition) From 89ee7338bf68413b2a410b98681120083b41eb42 Mon Sep 17 00:00:00 2001 From: htagourti Date: Tue, 14 Oct 2025 08:43:13 +0000 Subject: [PATCH 080/126] updated users schema --- docs/content/docs/documentation/data_model.md | 1 - docs/content/docs/documentation/user_auth.md | 1 - openrag/components/indexer/vectordb/utils.py | 17 ++++++----------- openrag/components/indexer/vectordb/vectordb.py | 3 +-- openrag/routers/users.py | 2 -- 5 files changed, 7 insertions(+), 17 deletions(-) diff --git a/docs/content/docs/documentation/data_model.md b/docs/content/docs/documentation/data_model.md index 0edf2e61c..aa47cf072 100644 --- a/docs/content/docs/documentation/data_model.md +++ b/docs/content/docs/documentation/data_model.md @@ -15,7 +15,6 @@ Stores information about API users and administrators. |----------------|-----------|-------------| | `id` | Integer (PK) | Unique user identifier | | `external_ref` | String (nullable, unique) | Optional external system reference | -| `email` | String (nullable, unique, indexed) | Email address | | `display_name` | String | Display name | | `token` | String (unique, hashed) | SHA-256 hash of the user’s API token | | `is_admin` | Boolean | Marks system administrator users | diff --git a/docs/content/docs/documentation/user_auth.md b/docs/content/docs/documentation/user_auth.md index 24ec8d20c..6587fc71e 100644 --- a/docs/content/docs/documentation/user_auth.md +++ b/docs/content/docs/documentation/user_auth.md @@ -20,7 +20,6 @@ It covers admin behavior, user tokens, and partition-level permissions. When `AUTH_TOKEN` is set: 1. On startup, the application checks whether an **admin user** already exists in the database. 2. If not, it **creates one automatically**: - - `email`: `admin@example.com` - `display_name`: `"Admin"` - `is_admin`: `True` - `token`: SHA-256 hash of the `AUTH_TOKEN` value diff --git a/openrag/components/indexer/vectordb/utils.py b/openrag/components/indexer/vectordb/utils.py index 182fab165..b29612a7b 100644 --- a/openrag/components/indexer/vectordb/utils.py +++ b/openrag/components/indexer/vectordb/utils.py @@ -99,12 +99,11 @@ class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True) - external_ref = Column(String, unique=True, nullable=True) - email = Column(String, unique=True, nullable=True, index=True) + external_ref = Column(String, unique=True, nullable=True, index=True) display_name = Column(String, nullable=True) token = Column(String, unique=True, nullable=True, index=True) is_admin = Column(Boolean, default=False, nullable=False) - created_at = Column(DateTime, default=datetime.now, nullable=False, index=True) + created_at = Column(DateTime, default=datetime.now, nullable=False) memberships = relationship( "PartitionMembership", back_populates="user", cascade="all, delete-orphan" @@ -168,7 +167,6 @@ def _ensure_admin_user(self, admin_token: str): admin = s.query(User).filter_by(token=hashed_token).first() if not admin: admin = User( - email="admin@example.com", display_name="Admin", token=hashed_token, is_admin=True, @@ -338,7 +336,6 @@ def file_exists_in_partition(self, file_id: str, partition: str): def create_user( self, - email: Optional[str] = None, display_name: Optional[str] = None, external_ref: Optional[str] = None, is_admin: bool = False, @@ -349,7 +346,6 @@ def create_user( hashed_token = self.hash_token(token) user = User( - email=email, display_name=display_name, external_ref=external_ref, token=hashed_token, @@ -361,8 +357,8 @@ def create_user( return { "id": user.id, - "email": user.email, "display_name": user.display_name, + "external_ref": user.external_ref, "token": token, "is_admin": user.is_admin, } @@ -373,7 +369,6 @@ def list_users(self) -> list[dict]: return [ { "id": u.id, - "email": u.email, "display_name": u.display_name, "external_ref": u.external_ref, "is_admin": u.is_admin, @@ -400,8 +395,8 @@ def get_user_by_token(self, token: str) -> Optional[dict]: return { "id": user.id, - "email": user.email, "display_name": user.display_name, + "external_ref": user.external_ref, "is_admin": user.is_admin, "memberships": memberships, } @@ -423,8 +418,8 @@ def get_user_by_id(self, user_id: int) -> Optional[dict]: return { "id": user.id, - "email": user.email, "display_name": user.display_name, + "external_ref": user.external_ref, "is_admin": user.is_admin, "memberships": memberships, } @@ -449,8 +444,8 @@ def regenerate_user_token(self, user_id: int) -> dict: return { "id": user.id, - "email": user.email, "display_name": user.display_name, + "external_ref": user.external_ref, "token": new_token, "is_admin": user.is_admin, } diff --git a/openrag/components/indexer/vectordb/vectordb.py b/openrag/components/indexer/vectordb/vectordb.py index cac8cb7b5..efa90d409 100644 --- a/openrag/components/indexer/vectordb/vectordb.py +++ b/openrag/components/indexer/vectordb/vectordb.py @@ -816,13 +816,12 @@ def prepare_metadata(res: dict): async def create_user( self, - email: str | None = None, display_name: str | None = None, external_ref: str | None = None, is_admin: bool = False, ): return self.partition_file_manager.create_user( - email, display_name, external_ref, is_admin + display_name, external_ref, is_admin ) async def get_user(self, user_id: int): diff --git a/openrag/routers/users.py b/openrag/routers/users.py index bc3339440..1939fa31c 100644 --- a/openrag/routers/users.py +++ b/openrag/routers/users.py @@ -18,7 +18,6 @@ async def list_users(vectordb=Depends(get_vectordb), admin_user=Depends(require_ @router.post("/") async def create_user( - email: str | None = None, display_name: str | None = None, external_ref: str | None = None, is_admin: bool = False, @@ -29,7 +28,6 @@ async def create_user( Create a new user and generate a token. """ user = await vectordb.create_user.remote( - email=email, display_name=display_name, external_ref=external_ref, is_admin=is_admin, From 9d5e0a35aceadb12c2bdd0a1efa89117cad6f051 Mon Sep 17 00:00:00 2001 From: htagourti Date: Tue, 14 Oct 2025 08:47:42 +0000 Subject: [PATCH 081/126] changed external_user_id field name --- docs/content/docs/documentation/data_model.md | 2 +- openrag/components/indexer/vectordb/utils.py | 16 ++++++++-------- openrag/components/indexer/vectordb/vectordb.py | 4 ++-- openrag/routers/users.py | 4 ++-- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/content/docs/documentation/data_model.md b/docs/content/docs/documentation/data_model.md index aa47cf072..add332025 100644 --- a/docs/content/docs/documentation/data_model.md +++ b/docs/content/docs/documentation/data_model.md @@ -14,7 +14,7 @@ Stores information about API users and administrators. | Column | Type | Description | |----------------|-----------|-------------| | `id` | Integer (PK) | Unique user identifier | -| `external_ref` | String (nullable, unique) | Optional external system reference | +| `external_user_id` | String (nullable, unique) | Optional external system reference | | `display_name` | String | Display name | | `token` | String (unique, hashed) | SHA-256 hash of the user’s API token | | `is_admin` | Boolean | Marks system administrator users | diff --git a/openrag/components/indexer/vectordb/utils.py b/openrag/components/indexer/vectordb/utils.py index b29612a7b..0b8fdda97 100644 --- a/openrag/components/indexer/vectordb/utils.py +++ b/openrag/components/indexer/vectordb/utils.py @@ -99,7 +99,7 @@ class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True) - external_ref = Column(String, unique=True, nullable=True, index=True) + external_user_id = Column(String, unique=True, nullable=True, index=True) display_name = Column(String, nullable=True) token = Column(String, unique=True, nullable=True, index=True) is_admin = Column(Boolean, default=False, nullable=False) @@ -337,7 +337,7 @@ def file_exists_in_partition(self, file_id: str, partition: str): def create_user( self, display_name: Optional[str] = None, - external_ref: Optional[str] = None, + external_user_id: Optional[str] = None, is_admin: bool = False, ) -> dict: """Create a user and generate an API token for them.""" @@ -347,7 +347,7 @@ def create_user( user = User( display_name=display_name, - external_ref=external_ref, + external_user_id=external_user_id, token=hashed_token, is_admin=is_admin, ) @@ -358,7 +358,7 @@ def create_user( return { "id": user.id, "display_name": user.display_name, - "external_ref": user.external_ref, + "external_user_id": user.external_user_id, "token": token, "is_admin": user.is_admin, } @@ -370,7 +370,7 @@ def list_users(self) -> list[dict]: { "id": u.id, "display_name": u.display_name, - "external_ref": u.external_ref, + "external_user_id": u.external_user_id, "is_admin": u.is_admin, "created_at": u.created_at.isoformat(), } @@ -396,7 +396,7 @@ def get_user_by_token(self, token: str) -> Optional[dict]: return { "id": user.id, "display_name": user.display_name, - "external_ref": user.external_ref, + "external_user_id": user.external_user_id, "is_admin": user.is_admin, "memberships": memberships, } @@ -419,7 +419,7 @@ def get_user_by_id(self, user_id: int) -> Optional[dict]: return { "id": user.id, "display_name": user.display_name, - "external_ref": user.external_ref, + "external_user_id": user.external_user_id, "is_admin": user.is_admin, "memberships": memberships, } @@ -445,7 +445,7 @@ def regenerate_user_token(self, user_id: int) -> dict: return { "id": user.id, "display_name": user.display_name, - "external_ref": user.external_ref, + "external_user_id": user.external_user_id, "token": new_token, "is_admin": user.is_admin, } diff --git a/openrag/components/indexer/vectordb/vectordb.py b/openrag/components/indexer/vectordb/vectordb.py index efa90d409..270aa5448 100644 --- a/openrag/components/indexer/vectordb/vectordb.py +++ b/openrag/components/indexer/vectordb/vectordb.py @@ -817,11 +817,11 @@ def prepare_metadata(res: dict): async def create_user( self, display_name: str | None = None, - external_ref: str | None = None, + external_user_id: str | None = None, is_admin: bool = False, ): return self.partition_file_manager.create_user( - display_name, external_ref, is_admin + display_name, external_user_id, is_admin ) async def get_user(self, user_id: int): diff --git a/openrag/routers/users.py b/openrag/routers/users.py index 1939fa31c..a2d09a771 100644 --- a/openrag/routers/users.py +++ b/openrag/routers/users.py @@ -19,7 +19,7 @@ async def list_users(vectordb=Depends(get_vectordb), admin_user=Depends(require_ @router.post("/") async def create_user( display_name: str | None = None, - external_ref: str | None = None, + external_user_id: str | None = None, is_admin: bool = False, vectordb=Depends(get_vectordb), admin_user=Depends(require_admin), @@ -29,7 +29,7 @@ async def create_user( """ user = await vectordb.create_user.remote( display_name=display_name, - external_ref=external_ref, + external_user_id=external_user_id, is_admin=is_admin, ) logger.info("Created new user", user_id=user["id"]) From fa43993263f7ad102afb4b7f383ee7d73b810c19 Mon Sep 17 00:00:00 2001 From: htagourti Date: Tue, 14 Oct 2025 08:50:43 +0000 Subject: [PATCH 082/126] removed useless import --- openrag/routers/utils.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/openrag/routers/utils.py b/openrag/routers/utils.py index 08080465d..8e8910e8a 100644 --- a/openrag/routers/utils.py +++ b/openrag/routers/utils.py @@ -139,9 +139,6 @@ async def require_partitions_viewer( user=Depends(current_user), user_partitions=Depends(current_user_partitions), ): - from utils.logger import get_logger - - logger = get_logger() if SUPER_ADMIN_MODE and user.get("is_admin"): return user if isinstance(partitions, list) and len(partitions) == 1 and partitions[0] == "all": From e2670a1fa9a84ce6698bfc7ac6e2dc179e9c2ae6 Mon Sep 17 00:00:00 2001 From: htagourti Date: Tue, 14 Oct 2025 08:57:13 +0000 Subject: [PATCH 083/126] fixed super admin partition access problem --- openrag/routers/utils.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/openrag/routers/utils.py b/openrag/routers/utils.py index 8e8910e8a..ad7c7f888 100644 --- a/openrag/routers/utils.py +++ b/openrag/routers/utils.py @@ -281,7 +281,11 @@ async def get_partition_name(model_name, user_partitions, is_admin=False): status_code=status.HTTP_404_NOT_FOUND, detail=f"Partition `{partition}` not found for given model `{model_name}`", ) - if partition != "all" and partition not in user_partitions: + if ( + partition != "all" + and partition not in user_partitions + and not (is_admin and SUPER_ADMIN_MODE) + ): raise HTTPException( status_code=status.HTTP_403_FORBIDDEN, detail=f"Access to model `{model_name}` is forbidden for the current user", From 50871a60721ff403029f614ed1e02d56b30e7cf6 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Tue, 14 Oct 2025 10:05:50 +0000 Subject: [PATCH 084/126] =?UTF-8?q?New=20endpoint=20to=20retrieve=20the=20?= =?UTF-8?q?authenticated=20user's=20information=20=E2=80=94=20primarily=20?= =?UTF-8?q?intended=20for=20use=20by=20the=20Chainlit=20UI.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- openrag/routers/users.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/openrag/routers/users.py b/openrag/routers/users.py index bc3339440..9c276635d 100644 --- a/openrag/routers/users.py +++ b/openrag/routers/users.py @@ -1,4 +1,4 @@ -from fastapi import APIRouter, Depends, Response, status +from fastapi import APIRouter, Depends, Request, Response, status from fastapi.responses import JSONResponse from utils.dependencies import get_vectordb from utils.logger import get_logger @@ -16,6 +16,13 @@ async def list_users(vectordb=Depends(get_vectordb), admin_user=Depends(require_ return JSONResponse(status_code=status.HTTP_200_OK, content={"users": users}) +@router.get("/info") +async def get_current_user(request: Request): + """Get current authenticated user info""" + user = request.state.user + return user + + @router.post("/") async def create_user( email: str | None = None, From 35085daeb5004fdd87c9762eefe2ce77df68632b Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Tue, 14 Oct 2025 10:11:01 +0000 Subject: [PATCH 085/126] Allow access to Chainlit routes (`/chainlit`). Enable passing the token as a query parameter in the static file server to simplify file viewing via direct links (without requiring a bearer token) --- openrag/api.py | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/openrag/api.py b/openrag/api.py index a23e313e2..a454de186 100644 --- a/openrag/api.py +++ b/openrag/api.py @@ -51,6 +51,7 @@ class Tags(Enum): PARTITION = ("Partitions & files",) QUEUE = ("Queue management",) ACTORS = ("Ray Actors",) + USERS = ("User management",) class AppState: @@ -65,6 +66,10 @@ def __init__(self, config): INDEXERUI_URL: Optional[str] = os.getenv("INDEXERUI_URL", None) INDEXERUI_COMPOSE_FILE = os.getenv("INDEXERUI_COMPOSE_FILE", None) INDEXERUI_PORT: Optional[str] = os.getenv("INDEXERUI_PORT", "3042") +WITH_CHAINLIT_UI: Optional[bool] = ( + os.getenv("WITH_CHAINLIT_UI", "true").lower() == "true" +) +WITH_OPENAI_API: Optional[bool] = os.getenv("WITH_OPENAI_API", "true").lower() == "true" app = FastAPI() @@ -95,14 +100,30 @@ async def dispatch(self, request: Request, call_next): if AUTH_TOKEN is None: return await call_next(request) - if request.url.path in ["/docs", "/openapi.json", "/redoc"]: + # routes to allow access to without token bearer + if request.url.path in [ + "/docs", + "/openapi.json", + "/redoc", + ] or request.url.path.startswith("/chainlit"): # Allow all chainlit subroutes return await call_next(request) - # Extract Bearer token - auth = request.headers.get("authorization") - if not auth or not auth.lower().startswith("bearer "): + # Extract token + token = None + + # For /static routes, allow token via query parameter (this easy file viewing with a link without a bearer) + # usage http://localhost:8080/static?token=api_key + if request.url.path.startswith("/static"): + token = request.query_params.get("token", "") + else: + # For all other routes, require Bearer header + # # Extract Bearer token + auth = request.headers.get("authorization", "") + if auth and auth.lower().startswith("bearer "): + token = auth.split(" ", 1)[1] + + if not token: return JSONResponse(status_code=403, content={"detail": "Missing token"}) - token = auth.split(" ", 1)[1] # Lookup user in DB user = await vectordb.get_user_by_token.remote(token) @@ -163,12 +184,6 @@ async def health_check(request: Request): return "RAG API is up." -WITH_CHAINLIT_UI: Optional[bool] = ( - os.getenv("WITH_CHAINLIT_UI", "true").lower() == "true" -) -WITH_OPENAI_API: Optional[bool] = os.getenv("WITH_OPENAI_API", "true").lower() == "true" - - # Mount the indexer router app.include_router(indexer_router, prefix="/indexer", tags=[Tags.INDEXER]) # Mount the extract router @@ -182,7 +197,7 @@ async def health_check(request: Request): # Mount the actors router app.include_router(actors_router, prefix="/actors", tags=[Tags.ACTORS]) # Mount the users router -app.include_router(users_router, prefix="/users", tags=["Users"]) +app.include_router(users_router, prefix="/users", tags=[Tags.USERS]) if WITH_OPENAI_API: # Mount the openai router From b3d60739b71f944bbfd2772bc5310b99d4c8ac8f Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Tue, 14 Oct 2025 10:18:02 +0000 Subject: [PATCH 086/126] Use `RoleType` instead of `str`. This ensures that invalid roles trigger an error **before** the function is called, rather than failing **inside** the function at a later stage. --- openrag/routers/partition.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/openrag/routers/partition.py b/openrag/routers/partition.py index d429185a0..8c0b9e61a 100644 --- a/openrag/routers/partition.py +++ b/openrag/routers/partition.py @@ -1,11 +1,13 @@ +from typing import Literal from urllib.parse import quote -from fastapi import APIRouter, Depends, HTTPException, Request, Response, status +from fastapi import APIRouter, Depends, HTTPException, Query, Request, Response, status from fastapi.responses import JSONResponse from utils.dependencies import get_vectordb from utils.logger import get_logger from .utils import ( + ROLE_HIERARCHY, current_user_or_admin_partitions_list, require_partition_owner, require_partition_viewer, @@ -14,6 +16,8 @@ logger = get_logger() router = APIRouter() +RoleType = Literal[*list(ROLE_HIERARCHY.keys())] + def _quote_param_value(s: str) -> str: return quote(s, safe="") @@ -164,7 +168,7 @@ async def list_partition_users( async def add_partition_user( partition: str, user_id: int, - role: str = "viewer", + role: RoleType = Query(default="viewer"), vectordb=Depends(get_vectordb), partition_owner=Depends(require_partition_owner), ): @@ -203,7 +207,7 @@ async def remove_partition_user( async def update_partition_user_role( partition: str, user_id: int, - role: str, + role: RoleType, vectordb=Depends(get_vectordb), partition_owner=Depends(require_partition_owner), ): From 07c7a62a3af0640ab9e86db1359799100d03aa53 Mon Sep 17 00:00:00 2001 From: htagourti Date: Tue, 14 Oct 2025 12:07:14 +0000 Subject: [PATCH 087/126] fixed middleware when AUTH_TOKEN None --- openrag/api.py | 4 ++++ openrag/components/indexer/vectordb/utils.py | 13 +++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/openrag/api.py b/openrag/api.py index a23e313e2..f705276ac 100644 --- a/openrag/api.py +++ b/openrag/api.py @@ -93,6 +93,10 @@ class AuthMiddleware(BaseHTTPMiddleware): async def dispatch(self, request: Request, call_next): # Skip if no AUTH_TOKEN configured if AUTH_TOKEN is None: + user = await vectordb.get_user.remote(1) + user_partitions = await vectordb.list_user_partitions.remote(1) + request.state.user = user + request.state.user_partitions = user_partitions return await call_next(request) if request.url.path in ["/docs", "/openapi.json", "/redoc"]: diff --git a/openrag/components/indexer/vectordb/utils.py b/openrag/components/indexer/vectordb/utils.py index 0b8fdda97..820550b4b 100644 --- a/openrag/components/indexer/vectordb/utils.py +++ b/openrag/components/indexer/vectordb/utils.py @@ -149,8 +149,7 @@ def __init__(self, database_url: str, logger=logger): self.logger = logger self.Session = sessionmaker(bind=self.engine) AUTH_TOKEN = os.getenv("AUTH_TOKEN") - if AUTH_TOKEN: - self._ensure_admin_user(AUTH_TOKEN) + self._ensure_admin_user(AUTH_TOKEN) except Exception as e: raise VDBConnectionError( @@ -161,10 +160,10 @@ def __init__(self, database_url: str, logger=logger): def _ensure_admin_user(self, admin_token: str): if not admin_token: - return + admin_token = f"or-{secrets.token_hex(16)}" hashed_token = self.hash_token(admin_token) with self.Session() as s: - admin = s.query(User).filter_by(token=hashed_token).first() + admin = s.query(User).filter_by(id=1).first() if not admin: admin = User( display_name="Admin", @@ -173,13 +172,11 @@ def _ensure_admin_user(self, admin_token: str): ) s.add(admin) s.commit() - self.logger.info("Created admin user with global AUTH_TOKEN") + self.logger.info("Created admin user") elif not admin.is_admin: admin.is_admin = True s.commit() - self.logger.info( - "Upgraded existing user to admin with global AUTH_TOKEN" - ) + self.logger.info("Upgraded existing user to admin") def list_partition_files(self, partition: str, limit: Optional[int] = None): """List files in a partition with optional limit - Optimized by querying File table directly""" From 2c81a80ef760eecee903632037974f77f4d67aa0 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Tue, 14 Oct 2025 12:37:18 +0000 Subject: [PATCH 088/126] Update Chainlit integration and documentation to support the new authenticated API version. --- docs/assets/Chainlit_Login.png | Bin 0 -> 16190 bytes docs/assets/env_ollama_cpu.env | 5 - .../chainlit_data_persistency.md | 2 +- .../documentation/setup_chainlit_ui_auth.md | 22 ---- .../documentation/setup_chainlit_ui_auth.mdx | 32 ++++++ openrag/app_front.py | 104 ++++++++++++------ 6 files changed, 104 insertions(+), 61 deletions(-) create mode 100644 docs/assets/Chainlit_Login.png delete mode 100644 docs/content/docs/documentation/setup_chainlit_ui_auth.md create mode 100644 docs/content/docs/documentation/setup_chainlit_ui_auth.mdx diff --git a/docs/assets/Chainlit_Login.png b/docs/assets/Chainlit_Login.png new file mode 100644 index 0000000000000000000000000000000000000000..c478fff263dbc0c582be55548bcaad87733e7e94 GIT binary patch literal 16190 zcmcJ$1ymewkS_`$NFX?b;1GhlJA=EsJHg#OSRiO{cXxO9;5xVy9D>ULGrall-uK?_ zzPs<7d-rainKRQfUw409T~*(&epU5TSy2iVnE)9E1_o6|T3i(d2G$MwCPPAi{!-)@ z(E$B;?Jp?Q*Ox6gqFjPszb3(a!0@^3rkMAY!ckVK`(6t_gytb$OcU|_d)apy zqzI0aJPzx5nPbW#hnDFVDP(d44D!ypSD_;(v^svz!>#t0jn#GwPFdP84AF>}oFyPC zhA5J=r*s|)d1&S@VLVYJZt@_ePz(prcLqr08=>zzFhtuvd~hQVb;8Cv7Dd{n`Z^ni zF`)2YJm4=5nj*7rJXbxYc#?JhZIqIUr+Xswsz*JjZtGjE<=9q3Rve}rKW0rvy#KBm zb+%lXJhzqGMJrK(CN)dqvIo#AD+wt#V)s892@qw0(pj+9%t(ILI3zk%yl~B4(s!_! z%Hp$gxBLh$HjS7)Fmi7JjHq&+86Rn-^#d|*YuR===4Hl)hHkkUsv~X ziVD^8#y6)-+969#W1Tl5i&yrEP`5vow`d8E)BD9Fs1b}skfgP!tXaUzs2~5daQy~ z(o~Z(XZ`<#Gw}ZM8@#1>YbLTD1>HBQ+}UV`9S@Md4-3WC=z-1t(LLNnjQ9HmCp-pa zy>~Z;oY-2KJo0J>=3Ow`xI57U+V(|H!qJ#RvQOwiqU2nugu5&rt+=r;S$=$R`BnjX zVQJN2(aAT$W7g~ z&`Ol!KUcJ#4<65Gxp3S+Oskg{!7+f2d7qoAMA8d(LqjF8)XJF{I{?F>m!7Vaj|l9{ z--NA}+Ut!ol=xx~HV}mT3s5x*29TK4lNvbJZ&sd2S2D}~8tQoF|5aNObSz(k?HONQ z)&e~vR6Z=s(2n-fS!*3>#;8n1g6In!H9==@pF_sWn6N#|hBi>-*Q)==4gA1-F7TYyl`IToR1l^|5qGQn^pK)`e7mSr1N!=xr9BJSxolVwUF0kTrbO z{at@2S+cvzt#cdPGvWE|yK^IyC0qbB155tUB=tz&&loO~0o^t@?&X`iQcTpzHFA}s z_Afk3t1@R}2)P}yD$(iQ!uAI){Wx9W@Q7i23UmP?Gj#BC8wFVwZ`5v=0y)(`)5Qp4 z(BqSBRC&h{7ltQ_)?j_vq?VbEtj3t!7%V6COMcory6w(^sOv3AHaLAKB*v2|D)Q1N zu6?z81#=ef?xN?qxsskkNb*I<8OzKeS%CCpYW5!#9R-Y^mrD60QCE~|%x}5?W1qW9 zT)p;f&`RE`wD@Sqg3{aFXp^Hw(z8Q*A$?0$7*kOj#wC;S;~=$@rxz+`8YWs-w~9jP zO{S(AwVWGHf`t+X97FxX)Od7Ow|*H0WZ@8Unv7FU(+?US^yM4!l(m`8O@}2V_6<>K z?b^m9H9k~%wFpuK@MW@!0-uzt0uVcz?1e!X?4?TjLw}T4u+i%uYGL^9D`fH>M!=XV z^;Ez@I2NNW;YidvYG|x^& zb(%BJe8hTJRtRSHiS8IWs_`ao4wG2VL6QP20WyxgbSrGPSDOm&YYoZnZ%X#@oS}I4 zPMVb-=H`&*Jf^G7{cLYbxe;#o7@>&Bi|4ssIeHr$ccs@fv$L2L)D(Ea&9nv^ z^C{P~*?O}CGnoSQYnG5ygMvwSS8npzeED`MzJ!27gHl?{jnAmaq>#;+wrA~ty5oBK zgF*#H{8zD8u#H-OI~|~j>9mS-$J)K5 z0q(D6gJ9jtvC?zzM=50uPQS5c2n%s`B|_2^K@g#a_E9a6ca%6ujmzCl6$Lk;-C;x& z6}W<`Rdd0;${cVJ_MY38w=?ETzIv_4$2*Xu72tX>0t(*dK#G zHBK;~wb0V?RMHSMt-079`K4%c2%2nGGA#dLdHDjVaNFiRwR+eirUT7pmVAqHgZ-8@`;16jE)s%=p@svCPgkI(Zu4^$31si?o;2wWXd~{n zgcGe2_MrC^M;jVwmzf!G#b~ompPU@1$qz?Z_K3DpVKjYRSXn&R-of<->@z z6>kLOt%Sz`#W~9KHF_eM&o6@`%V_ejoDDBu>_IHJ$<3q)Tq>lbW6ers>h}|~GzY28 zq#oI>;H1TiIwR#?C(=^hFJ(mO)?MUpbscdm_M+dsqL>d91Cn4;FW4tJd&DsjIzjM6p!yLvQ|}O;xuv z9ab5fQF|S7W1Qq14l1~D#kNl~T8OsMI8n$w5cy`Iq&f`ZELRw0i^k2T(2L%DtkpLy zzXvTxgE>hKy7aRGugeUMYPDa?`&cS8Rfvx+vk39rFOjG_(z|~iIIA{0QhSxMz6deJ zCXS*x?;J}oEE9Ym--unlM?|RLw2d&Tfkd1?z}|Km7{%NJQU-m#3x+pL)A6-EDR>U_ zw68vA?XJk6EMDb1RZeqwnNjpo^7T2#;xe~VJ;cC7rql?BMdFsJc9SURaTd#(T-q)K zkTf4}&_?R0#hPkF-gPe=Yq=u856Y_4hTaJF3UeFPhu z9ZAgu!J&q1&1_q$)n?aeo+41!x{Cv=6})QXxVvnZN;{U__SA5VkN(UhuKa9=+_tIKNKA0fla`sThqDQx#YynRo5jE&h&F^f zeDix}5XDt{7W?;*C|8yWv?eKhMk?M1I9^b zPI;-2G3Z*INOo7cci`vd8Be`0F<=Uk#4UiVayEzlv={S$!w!R!*Wc!tZbv*4W%SlB zQTfh-;^17QB}ef0Qu6lg@C&nAow~1KI^WOH%9l-Gjb!QDD58GhR3(Chi|V-jrggQv zb((`NSq$8ESKq8wkIAFO`u)U`)!dnzmED8hVtN1a@ym?d^=J z>VFlSE%NhTVbBB&UG{|5yt0?!Be~00{XG{CFKb#WhKNsBSCgy)8nj7 zh-crh4ka-v*}cBE5xNnieX|7L4NzusSDE!$FtSvQALl7wc#57(e{MD!nBCA;dr;Iq>hpH*#lyb8XmFI{!-)EkOE6r zsw#Y?#!Nqo1+VuQ-ig=;W44C*qiT&jCTe+erqR}lso`g8_3|H!%_b6sDj7FRHcrze z(U=U{LbI`!5nb0LnDqGz_6^8t;hwXTx&sB3gKFZKlysC(OXqQn4`#NP5?4CmmW9O7 zrmOVC9$H=O$?EHOt>!RQ7_dUV8I9mFwTRhm2HEr}`jtxriXGcZX|OZ{CvKuAVrIRT4`MXryc&j@ zm3(EhcxTWZ{z9H8;vf-kht4EAza+~W>XRy$68;)gV!o12gnc%p!K*%ci3V{n={I2D zV~1S2SDJmHoDvqv70}eyk>>Lx@%`EI(R!Bh7QmRb%@Hr<+dbUz9+3vySF7e=@^=Hy zm^@bJ3D!}~lS<>`Let;O)q$iz27=8*@@=A#iauuux8|$$L4HYV#_~8iU*t$iex8Tt zNdKmDJdVGNsc8*hQAbrx86J7hd*VGui$N z2W>XNvEzgLOU`Q(ItDI|wb!v{cZ^EOaRu2P&6CG#NxQ}>P;|_+C2mNuz0cO!A4k-1 zYF{es4{nAld4&WJ=-khR$EvusA8$Y?xefGZC8X={n!T()+DqA&#rGAaV(lZ^c5@1( z6~?cp#7V`ijAL0iNKGHA?!6Vo4uGU)E_dMve?&*RZ;ADmUw>!KjNTpw!{Mj)fk$1A zW#=AtUA)Wm>sA!ZwyuQjCjEnzJ``UsK z^Q>U*`7k9+f>W^;F;1>SC>=7gfE|Kh=SwwLu8I?el3HX6Zi#-rwtHwLvF}&qDANl* ze_Ha|IdG0D>ayx1 z#4)DeT}|5LstzO<6>#k$=uJzXU888ujUt7;8kM%mp)F=}j zdzZ?4btJ-MP8r9Q#ATLKY;ss8N(f9GT~{!FLC15-tAhxJkZ^L()v3V0TY!AqUlY_H zfr}Y=jcYfxT#yh~84?>5$$V$=ZAwnTil-GL!)4~`cJzW(lW@AtVSCOoK)~Z*XM9b| zTGN?JV^IY02SFG@Sals-!2;03MxX zgtW0>@+Ez#8=>-ytH6hqbUxPpuyu-B+L?x@CsnXGTyOHZZ zLvAKJG!pv(T_r%%S{6R@C%`RhVzm&CF^Dnen{rr}t_yVWFstdAJnZd&Gz@3HUDJb- zo*B;?Xe`t$Q{I#~>GnML`QhOTHNqcT4?BufXh*}6PeE(m+a||&Kn(@3TOM+6BEJM! zw!E~lc6;3BuhD6?PtdA`m=B{e?dd0?4>ku22O7pT{O`f^U1eOB21%J6QVJIaityWi zrl;$42Z4{&4(`BC)o~AXe_*jViRbJyU16XM5L8U90j`pRg|jJJ_BiZvnkkuP2o&Lr z?ve?7KU}f3@OaRnf7_d)Htyz>LZD82N9D=#T>d4-NTv6ni*Y$X7yK%pZ41t{YEA ztjk^#MiYGd68&QW)@tQgg?3mb^V@t0n(439W6E*veS6|fuNkxK@kq z?@5_f$4}AMG1JW~{OJV8JoT1X_LE_os&s>AgYn(H@dqPn=6;Bn^_pHBUg8_B9xbhd zw(rieXG3S7fEIQJAl^bBu6)xuVdT$l#{$S$x($5xB>1D}_nB#eWekR`+DTkhaJi6< zv=3ry%Ej6kLL>-XaFHt2V0ORyS6@lZE+7_Lrg_z98ztZxlJ_GC`DSG2Kx%jX{seR* zuldFmAMRq5>XkaaRm&mU?i1YSU*xwPo)8i^o)+?0HoU&B#Ud~c_8=g?iScHIi@dW` z;rpJ`P`F%oohpZ?7aM{HcKBNHT`fMQp*KUQv`@)-F){|ac zO?LX^p=vUR8wha;f*?~dd!H#tFt6NFgZ(z^G-X;Hp&wFgbcyL^irWbwqNaHuzP}w~ zVD(Q?**|PLuPya|JHh^6rtp9Ip}7qM+c!V360jaZu;-H8bvoSIeoIa$!~ZUni5ULCm0wzG4a_ zW|ho<#FqFp&Oj6X!P7^?g$mt|m|@7+2AwExFAp$OFz!LMd|?kW6+})a@TRj3Du8f*J)_Emx~MR6~-XScV<66rYHO6KqK+-7oDVTgs*9M8jxQ z9x;11vJ=cIhNt@<2{4Fwf5lk}C=RNcB>CNFP4cwWnP7?OX%=aF@leun7QgY+M@$I4 zD|USf$2-w)#M$j97f-PrFU)n=l|2k5PUT{Ac48mL`#{N4^_7#qcc`F{JL5f;r~pzH z&M}v2ZPw8%$TpDaYsnFkAmPh5`2*t%6+gCXnQ@}rp~5LXmR&!&5yhOz3Dl|An^SDR zrUitRl{XnupWepw;Or4L`v>!!%Fm;1nv$|bT)*e$Fb^}KgTkN#6<@ z@K9-mgmT^K6A=DDS(aD+2pHt=Ovl*x>1Aw2qcYF<{wmcndC=K#>iBb2u&$D(vqv!l zp=9~Wch%Dq;Guw?Rga7Kg`kH9FWXyoQ(h`EYE|jTWh3o+kf#Q?PgvtEyL&tV)Nye& zT4DW51vkL0TviLs-9u6e_teNxu$PI`H+yF4qy(8TM5DBpnJ&Dc9PV;SD<}wcu@liQ z{ZdAaK9`~V9es=@VS}b<`eF$lT}5BQAdoIm)jA5Xg5|B@^h9GUJxW2-QqfSI3JRNA zlwxY}%7S$RYZSjR&HK?R4pZw~mbHdrJaSWKAF`@U>&k`$J8Eu z(p^#4?ErVWY%LrWYhYCZ>o(VPsTW7f+#|kOfnq(I$8?|3R4CW^dtKL)Jk-~DUS=*B zr*<{^&~v}2OxAP?Md29I9G0=^GuvTr=7T0QB;_yE1-3}{WXpHg+v3+sQ4}OC@!n?o zXbR>2tI$CLi7(W2nTFlNsf=sprx=LdWb6!REW*19MlW(q0kjLh? zG_l^;8l(d=uu~R~f=#`)shQc&7{-t{pcs+d(q1{-Li%Qvp=VCnv=WQQynv=-x@2lF zwN8^2;ingkSUdeO5`Qs-*o?kA%1qEfAg;{jGaS9r_}2~$bh@MH1NASyfjLvlovsGq zTgC9Kt-jK8lFA&SGsW8_?B4MO1&1sE#hiXte)Wz`iLg(U^AnRxtEBaPy+T6Qm1)n{ zq&zeUb3?~DAMLO4l>!95iwF#hg)!fpr8e@akyXwSi1L3dKI`mG1BsI&N1rR6+$s3o z-wSm)bQr>03EZ)cGef>pzdYZ(e%F1kuRUDEZRt{Rf@k+khjnon=XE#NEROCQgE@r~ z-*#`yMeUJ;p!`bY;1))VcnP zr1|F+Ff-z}SjEd4)Y{Hq@PP#U#|$mbE9x=)PMlCBPHF_LbZ&aN-6u0@{=Mh^W_jTC zUE0aVOU|&J3PEpgbHs<1xseChv05F2^+9 z(WrDX=PD3OCBEaX)f1NmQOzHGFR{_m-&cw1XrH4bPy!Fq2BRM=xmE_f$TCS;0M z1+P$|zO;P9*5#xT>w{~R2*voj2OG&OannC6|7=G&#yVxS=>d~H0KRrBaz0r!vIDuZ z)mBwb)mi$e_ABk5jv$i{*>_UIfyXO6y-dtF;3{)WR>ynW%xOfT`o+p}yOQv??RS1_ zz+rOo-LB-7;7oN{js;jS0|IY}Z6SOL8B#36^sPmfwIxY3zc8m`QEbz1#`yd?;&wqJ zVeJoO!DPXMk;)}L_H@%kGfA}M(Zs+kQC%2`n{E2^#|v4H9C^`wQkk%k&10}KL%@UD z>(e3OD+y-;_jBr?USV6)1Kh~#&hU5coT3&$(Wt#~f0xnI{;_ugCu~v$2&3DFlWJTq z1iUCZ(&ZfN6GE}tYsDCz==ake5DHsg`V??z+LA3lNL?W$82(V~QHEysk`CIyu`_ty zZFDBFMW@b3p;Z`kfIHR|!+Bv z2vm4I7AGg>HBIKBoL)-AC^% zTc*BwtJ-%o#U0)xIP&Tj(I$(z^Gt)srS?-z%NJ6mURp{Woay;{-+oMW*eu5VEK+AB z%sgVECT}4>Xj)IdKDm7V;FH0`3O`$PY4(t*#-rRO7$>k49&U@fcV3}WB~7Qa;1cx9 z>pN#Zn&v}U6x>OF=GA}#mtrVXoc5>(a?rL4@Z^SM`rhU1Nx z?C=|}TrTwo!2u;Bu&8J{f;!TCAr^Yww@qBxmI^6nbZlSC-myh+yxV7iGzUgH<7lJd z^IS!>DiMo;kL|r-G&K(C1DWh`*g$8NkPeP7l7VSPJvw7RwwN-ED)8u8u^?Kb+mZ`Y zijDBFvX~^ewNdd#Lb|Q~Ey3UOG)IuO;<{F{@{sjC?p>+*!jGhSUD~-STvphvC&|Sk z6-t02Y1}A6(WSxI=_21pg83h^!zkF8YH?d|nPwY}vBX+9E0AxaOsGHtjgjz)s?2A6 z!jCcd&jW9t=e0-Y;IyP$dHWhax>wk&w!XagI41(x!#i8}UVDw6CPmZ8kDX?J-sqtj zU3R3JM*C6b@zE;ZV(QgM`(+=UDEd@#yCcX7rfYoRG6o%=y@>bVi`WNxoy?Txfi}N8 zp4B6U=G{eWgSfKq!S9ppB{vJG1SXmbOjwP&z_PP#B03TL)A&+LnkrArCz8uH@lS*y zG^=F*!3wH+$nxf&fRDdq*G6s>a+-+vBB<&mX!O6Pl)(9_jrJtF``&n2{n}^feQSsc zt|l>4UU0#oS52t6_`zoCg;#-i0QN}^|G}0Qo4%du*c;-GCAz`*_$LYF`$#7Ye1oKu zE~9P?Vh+jj4>!K-PZo{4ef`5~&P9eoQ=>|bR4-9oo55qBeizfDCGB&RDqwQZRfrj^ zOeD-w?<%05(3FPCOGn|2z54Rf^vjGiP8WzIMqUr=j%S6`{?AxgARzH9+_k;oo8~T1;UO8ukMkZ$;EYa1u2bAed+OnBhajoJ>fIK z;o-~vZ}~Jl13Z^MqenvZ9Wh>5)qvV)Pg+FyQBHvpNlIh?ZDqi!Y2f$%a$}#0-A#t z(kD2HH>ODp{7LZV;=(h5g+A@3#|w$=jp+!4qv#~VS@%lGL-}ymp9d(A#(;?(S6{@f zn4MUMnSC?gBU-on@WEzs#W^fXsWJ$}3?eGIUSOCU{%PSn=Sz$ozrA;hB@&3`YM|M5 zsH6Vi-0K<@m#;OP!g0Mhy_|^G2zDYWjRTLxC2m{pZ7}Mq=Ut2SL;j3J@eYt-+bY(bf4i=!%H>ZylC(mq1csN=`@-eXZ$y^nF5FyrMuGk; z%cXTAtF&yH2`qDdiYp@ayPqN%;Eyd-sY9TVE8PNmS&VM;(q_Qp;#d zkw}DIQw^`DbRiB@APicSwTyoEsYnN^u$b`0=x2L_zOLfjn-NNWpOG1RKYzN?rVE#kJKD0^{v5Qn)%lP*FU~_ou|vS&{|iGa}R#L?AzMniAQ1X z&mYsK4)uCf{;7?HLR@2(jsF1@Q&Ur+wX%Cbrd*lVH{F4h{}($Y%B${;3Lf_8hBz`#)Cx`(I`!|3^hKi0C-7(zO%Y6k01xz)AqV zLPsuj>o)9y+9xxhGaO4;DVqtsuKztPK_Vx?@F`s^Kqm`^M z%6)K5@+Hcb!2VoRG)MNzmtKAAm>NX?}S`nxm#xD?>>kftb5CtNzKk%BQ)dxia%(JN9I34c;|KJ`heiM-z;;< z&fo)A+tZ34CC60*wY%b*WHCy=1qJvQE#;Y-2(6>(Y_)5tmU72j$GidX7xkm`>+zZ- zm$d0hxR*V3-EXx2jsg5PyxJO@A-7Sa+O^D5G{JO0ISCq?aO9WoTO>U4NF! z8z?0?WqQr<-9LKAo0=`>e9R|DZAJCw9`jiskUUfk z0#A!$Inu`Sw1Gi5VKJw~PwI2$-v*bysCC$&kjS(8d4pP7on78}UD)}PKZ)Z*wQP{ugjb+6ijDhoG#r;Oq0A$`-b%wU+>a&n!};g2Xe*=4 zlv>B(_f`}cvsKYC#F;IPX18cf?gXl>0b&(Yj+VF6jCNbq`8H7_?=5my7M(VE6%`J9 z9eF5o?gNtd8Ig+@W1^7A#f6+y^Y98x8xJ`gx1zr(oGRx#1=-@Rdo{9Nw|J5UGKfHs4ZUUJ}J*su2j8JMw{Z|nq@k;319xH_?F5>u?R@6>es zv*vSDsWstQOJ+l6PL~NMe^t+rX2keQ0-3>A3sYp%_2!iAT64)ZS@Xe+Z0%e75GX?c z;5~vSqW=@x?wxY!lfxa15L@#>aq5ezVPN#ITx{Nek1DHvct=~-GU96-g?p~$#xGqQ zfzC)r&($kO?Jyd_?>RS985jc2bd7G!-lZaB1l0i4OdPZGCwS#=I8(C6Fh~x7EC{Ka z>GQrn?UTOJ_?idnONjT^A)$#xMt@i}68asnMsm2HIs)-3g1JWSSn9>GO;4 zy=f^yg}HVfGBSO+jT=$%;ok{9XKM{-`fbhbvsBGpks!JzFAL!F&vKh}T&Y;(l*&=L zr}FP>j^%>sQ+0Mk)#IR-N|!=zI@j2iG$lr@%R9%SamgPQvtJI>7o@hdDwQmARwe~# z2^M`CA{&qN;TriM`}7rN&3hHf(nS>;_kztnOJuktU#TU+Fs2JtWXIHNq4_=7bX;gp z&Hs8E&2EEbdzw7e{K7)LZuQE=jo3JJDUSNTm*TM2*4D~QxbF*&VD5BzD9vTY^7#r% zRY8|`C^a=n1?BvR8`m$=roK&nV~64cXd6K)Vy7D1Kdc&*E}OF&8WanFh#>8fFnmIR zq7Eo;_xk#(zl2r_?*l~?XyGB>zr$FnLo<_#slR@G*Q|8cDfnBCo796EKR7|H#;luf~Zx|Ui~GBU=StQVgCBr3J}fo|Mu;SmvU?-rEU z-Hw%00kqc+|Fk}}RX;s>t+hHTxwx=VNJi&bFF+|Wm3Ns_BjswP+RZk&iBt-v59h0| zueURy;o+SfW1ixN&~7M)lZ|#)4u_4jhzKO;--Ey7DR{kaz7B??TmJbSp9KZFmbv~Z zg1!$J1O&1RB?|3MyTO&2{!;${O^1_%R3j=HnustIyuFKyslDN-lZ8_B^;SpAmxl|t zv!$3~xzxS={lNl>C>rHF7_*URXZOa-2q@MZxHw;Hj=Jo5iT!|01qFyOPxs44v}z?E zp$D36_xMBS9&8i{#)V;KW~P!)>+ABqeLAb{)nC2i{{n6Ca^lyCBb+;{&8Awk;`jp* zBn=;o2YZI}3mY5n0JdBK@&8C98yS~wHeU=;GKL@-{HrR3QP1UgmYhz#On9}yg4g5x zv;A5VY@Zz$yUijE0hgV07&7iZ=TEoP!;!mAJUs5FIP_XI=BJD0P>W!SQh;cX4s?%<%U5I^S|8=OaE_XoJPX7SM+h`UJk@nr}V_9!}zO5GeF)KVL?kLo0Eh zjPLsxNil8h&n6}&H4d^p@s;{eX!t*Ad;78tx2e$^z!-{AW7@jjNDA1Ihmy$%A+U|B zS=&IURSFK;aajUzCev>OXS=(){(0!=I8cHd8Za!JP5mb^g8P`#8t?x%Liq5HRWDv7 z{YzkB%<}8kubt>q=)5Sgu&`J@e`I>;Kk*ApkyHHn^CuMGM@v$WkdRDQXd;o{BoCXC z)6#x`a`?Hqxf5%2yE7@#*Lx?$jQ*8AVmE%?6|E?ibb+TU{TXt$%hOz)R9elYfItDuEOGQMuQ z9J{c`72^5!I{5xG&ovI1Fa*U(F5kjhK!kOQ+M$uX=aV*2#n`s`62j6oJ9g0jcTu>t ziwAK%wK7X18yYGmL*@>>x)zo#?)mM}33gshjSf=EpKCAS*ef(o^mG*)wv_U_tazqCh!J6 zK=t$N1f?*SlOWEJyev$vF8bxe%eAnZBOvZbO@eJJ(F@-F4-sAe;aUr_GrH^Q?QGa@ z%@(d_0t6y6K;Nsxp~3J1cV6x_!4D7MY`~{*vl-+`d#$#XY|)MVe>u1NcLZb~gBL(@ zg#D~^!|1;I^G;cI1M~3a3cK1wyzja+0Ok`?I1NRU1!#(Sf9(Pe*Q^!F)Vjl_i zr#uuGGy3E9uT{OZTi;LI%GKdre$P*2U4C)13U?FrJmqFkni&kB`Url3o09^sZ$cC& zP1)ut^U`;7HC8b-9n>xRC4s;uen#d{_AzC#4Z@n7KCVNv z`3b?W@=bGwZ9_?ZW0suU#deQkxld;A*9La9TLBc4u#=;8j#I=9Xp7}?=A>v$)CEKY zG&|SKgzlvWVNOi=`6$b`w^C+qd5Y9Qo1tqRsOwAFJXMbSz*>T}cbRoZe!WcWyRO^1 z*~`^Sp3iVmir`@b^1sp1vtd!zvu=Szmlw4=Dx>V9fxdYk?%qe?x*XjBZ_DTjIGSbi z=gc9wHKB3?rOIfiyo$+j+zC^F#r&3KxN=&0H1bV+1;3Gp6y$>TCpq>W~l z>5dG(6}%$4409KwTWgt`3+E>TQqn`+pvXIewyk!?G=5%|*IL}?fb3a9&awq+=PrKC zi6Z~9KzZL4C;6<<)keS%A%pAl_(-#@cU5v7`*V}H^khTbB87_p0F$Sh?(e=={Vp%# zley2$WnbkEdj)6xA(%PIOTV^`eTiJe%G(fe+ISYq@5hh~Hp1_$q~iK*>u}dQC+bO? z^UHP7{rQ!MjQ%FD;Gr{oaC0VY*nN7HV+h!s1KiR)3lpE(3B=9_4d2XRYH=$frN-0Z zK~t5~(>X5j6QBNRd;SxcclIZZJk$%Oo$TeNTT;PGI6#XWT7E&KWo`sb7uLwC|GWJb zi-Z5yVxblebvIC_a??owHEK)fx7o+4%R8TJHd{xp{6zK&OwkD6;7Ya`+Mt?C9a3=N zRJKYo)UK1D?uH3JI|RE{?9r>VHWa${SD%pD$By#*8)ydhY}00BLcL5C_NV+kX8y*1 zva8$~zsWu_ySc3X7U(3NM!RExx;Ce(jWGWs=f%~~u0VT9s27poW6ZdManmT6ZK*o{ kw@i;e=>L!D*?W5xt6L3y`E(2IZHJMOP!z8bH4gs20IfI(&j0`b literal 0 HcmV?d00001 diff --git a/docs/assets/env_ollama_cpu.env b/docs/assets/env_ollama_cpu.env index 6fe5303ea..b19d8a17a 100644 --- a/docs/assets/env_ollama_cpu.env +++ b/docs/assets/env_ollama_cpu.env @@ -68,11 +68,6 @@ SAVE_UPLOADED_FILES=true # SHARED_ENV=/ray_mount/.env # RAY_ADDRESS=ray://162.19.92.65:10001 - -# Secret key for Chainlit UI authentication -#CHAINLIT_AUTH_SECRET="bzAg5O%-HeyrVgwx-o*ebN-3*HMax-FMVsTdT.U8SX8Evs1pXf_W9qPJ3?:i%aid" -CHAINLIT_USERNAME=OpenRAG -CHAINLIT_PASSWORD=OpenRAG2025 INDEXER_INSERT_CONCURRENCY=10 RAY_ENABLE_UV_RUN_RUNTIME_ENV=0 diff --git a/docs/content/docs/documentation/chainlit_data_persistency.md b/docs/content/docs/documentation/chainlit_data_persistency.md index b6893cb95..6aae1cec8 100644 --- a/docs/content/docs/documentation/chainlit_data_persistency.md +++ b/docs/content/docs/documentation/chainlit_data_persistency.md @@ -8,7 +8,7 @@ This project uses a [dockerized fork](https://github.com/Chainlit/chainlit-datal In OpenRAG, one can activate **`Chainlit data layer`** following these steps: ### Step 1: Set up authentication -In fact, chainlit authentication is necessary for data persistency. Set chainlit authentication if not already done (refer to the [chainlit auth guide](./setup_chainlit_ui_auth.md)) +In fact, chainlit authentication is necessary for data persistency. Set chainlit authentication if not already done (refer to the [chainlit auth guide](/documentation/setup_chainlit_ui_auth)) ### Step 2: Add the following variables To deploy the Chainlit data layer service, add the following variable: diff --git a/docs/content/docs/documentation/setup_chainlit_ui_auth.md b/docs/content/docs/documentation/setup_chainlit_ui_auth.md deleted file mode 100644 index 138803d86..000000000 --- a/docs/content/docs/documentation/setup_chainlit_ui_auth.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Chainlit Authentification ---- -To configure password-based authentication for your Chainlit UI, add the following environment variables to your `.env` file: -## Step 1: Set up the authentication secret - -First, define a **`CHAINLIT_AUTH_SECRET`** environment variable. You can generate one automatically using the command `chainlit create-secret` (or `uv run chainlit create-secret` if using uv). Alternatively, you can provide your own **custom value**. - -For detailed information about this variable, see the [Chainlit authentication documentation](https://docs.chainlit.io/authentication/overview). - -## Step 2: Configure username and password - -For password-based authentication (see [Chainlit password authentication docs](https://docs.chainlit.io/authentication/password)), add your desired username and password to the `.env` file: - -```bash -// .env -CHAINLIT_AUTH_SECRET=... -CHAINLIT_USERNAME=OpenRAG -CHAINLIT_PASSWORD=OpenRAG2025 -``` - -This configuration will enable secure access to your Chainlit application using the specified credentials. \ No newline at end of file diff --git a/docs/content/docs/documentation/setup_chainlit_ui_auth.mdx b/docs/content/docs/documentation/setup_chainlit_ui_auth.mdx new file mode 100644 index 000000000..f56736855 --- /dev/null +++ b/docs/content/docs/documentation/setup_chainlit_ui_auth.mdx @@ -0,0 +1,32 @@ +--- +title: Chainlit Authentication +--- + +import { Image } from 'astro:assets'; +import myImage from "../../../assets/Chainlit_Login.png"; + + +Chainlit's password-based authentication is now integrated with the [User Model](/documentation/data_model/#-users). When [API authentication](/documentation/api/#-authentication) is enabled, Chainlit authentication is also enabled. Disabling API authentication will disable Chainlit's password-based authentication as well. + +## How to authentication +* Go to **`/chainlit`** and provide your credentials +RAG Architecture + +:::note +The password when authenticating is the generated **OpenRag `api key`** when the user is created. +The email is the email provided when the user is created. +::: + + +## Optional Configuration +When a user logs in, Chainlit generates a session token and signs it using the environment variable **`CHAINLIT_AUTH_SECRET`** (see the [Chainlit authentication documentation](https://docs.chainlit.io/authentication/overview) for details). Each time the user sends a request, the token's signature is validated. + +The `CHAINLIT_AUTH_SECRET` variable is required for authentication, and a default value (`default_secret_for_openrag_ui`) is set. For production environments, it is recommended to change this value by following these steps: + +* Generate a secret automatically using `chainlit create-secret` (or `uv run chainlit create-secret` if using uv), or set your own custom value. +* Add the secret to your environment configuration: + +```bash +# .env +CHAINLIT_AUTH_SECRET=your_secret_value +``` \ No newline at end of file diff --git a/openrag/app_front.py b/openrag/app_front.py index 44d250cf2..ec4a0c003 100644 --- a/openrag/app_front.py +++ b/openrag/app_front.py @@ -19,8 +19,10 @@ # Chainlit authentication CHAINLIT_AUTH_SECRET = os.environ.get("CHAINLIT_AUTH_SECRET") -CHAINLIT_USERNAME = os.environ.get("CHAINLIT_USERNAME", "OpenRAG") -CHAINLIT_PASSWORD = os.environ.get("CHAINLIT_PASSWORD", "OpenRAG2025") + +# Application internal URL (used to call the API from Chainlit) +port = os.environ.get("APP_iPORT", "8080") +INTERNAL_BASE_URL = f"http://localhost:{port}" # Default fallback URL commands = [ { @@ -30,12 +32,15 @@ }, ] -headers = { - "accept": "application/json", - "Content-Type": "application/json", -} -if AUTH_TOKEN: - headers["Authorization"] = f"Bearer {AUTH_TOKEN}" + +def get_headers(api_key): + headers = { + "Content-Type": "application/json", + "accept": "application/json", + } + if api_key: + headers["Authorization"] = f"Bearer {api_key}" + return headers if PERSISTENCY: @@ -45,23 +50,43 @@ async def on_chat_resume(thread): pass -if CHAINLIT_AUTH_SECRET: +if AUTH_TOKEN: + if not CHAINLIT_AUTH_SECRET: + logger.warning( + "`CHAINLIT_AUTH_SECRET` is not set a default value will be used. Not recommended for production." + ) + os.environ["CHAINLIT_AUTH_SECRET"] = ( + "default_secret_for_openrag_ui" # Set default value + ) @cl.password_auth_callback - def auth_callback(username: str, password: str): - # Fetch the user matching username from your database - # and compare the hashed password with the value stored in the database - if (username, password) == (CHAINLIT_USERNAME, CHAINLIT_PASSWORD): + async def auth_callback(username: str, password: str): + try: + async with httpx.AsyncClient( + timeout=httpx.Timeout(timeout=httpx.Timeout(4 * 60.0)) + ) as client: + response = await client.get( + url=f"{INTERNAL_BASE_URL}/users/info", + headers=get_headers(password), + ) + response.raise_for_status() # raises exception for 4xx/5xx responses + data = response.json() + if username != data.get("email"): + return None + return cl.User( - identifier=CHAINLIT_USERNAME, - metadata={"role": "admin", "provider": "credentials"}, + identifier=data.get("display_name", "user"), + metadata={ + "role": "admin" if data.pop("is_admin") else "user", + "provider": "credentials", + "api_key": password, + "extra": data, + }, ) - else: - return None - -port = os.environ.get("APP_iPORT", "8080") -INTERNAL_BASE_URL = f"http://localhost:{port}" # Default fallback URL + except Exception as e: + logger.exception("Authentication failed", error=str(e)) + return None def get_external_url(): @@ -73,11 +98,11 @@ def get_external_url(): @cl.set_chat_profiles -async def chat_profile(): - client = AsyncOpenAI( - base_url=f"{INTERNAL_BASE_URL}/v1", - api_key=AUTH_TOKEN if AUTH_TOKEN else "sk-1234", +async def chat_profile(current_user: cl.User): + api_key = ( + current_user.metadata.get("api_key", "sk-1234") if current_user else "sk-1234" ) + client = AsyncOpenAI(base_url=f"{INTERNAL_BASE_URL}/v1", api_key=api_key) try: output = await client.models.list() models = output.data @@ -106,13 +131,16 @@ async def chat_profile(): @cl.on_chat_start async def on_chat_start(): cl.user_session.set("messages", []) + user = cl.user_session.get("user") + api_key = user.metadata.get("api_key", "sk-1234") if user else "sk-1234" logger.debug("New Chat Started", internal_base_url=INTERNAL_BASE_URL) try: async with httpx.AsyncClient( - timeout=httpx.Timeout(timeout=httpx.Timeout(4 * 60.0)), headers=headers + timeout=httpx.Timeout(timeout=httpx.Timeout(4 * 60.0)) ) as client: response = await client.get( - url=f"{INTERNAL_BASE_URL}/health_check", headers=headers + url=f"{INTERNAL_BASE_URL}/health_check", + headers=get_headers(api_key), ) print(response.text) await cl.context.emitter.set_commands(commands) @@ -123,7 +151,7 @@ async def on_chat_start(): ).send() -async def __fetch_page_content(chunk_url): +async def __fetch_page_content(chunk_url, headers=None): async with httpx.AsyncClient() as client: response = await client.get(chunk_url, headers=headers) response.raise_for_status() # raises exception for 4xx/5xx responses @@ -131,7 +159,7 @@ async def __fetch_page_content(chunk_url): return data.get("page_content", "") -async def __format_sources(metadata_sources, only_txt=False): +async def _format_sources(metadata_sources, only_txt=False, api_key=None): external_url = ( get_external_url() ) # used to override the base URL when the front-end requests a file resource @@ -139,12 +167,14 @@ async def __format_sources(metadata_sources, only_txt=False): return None, None d = {} + headers = get_headers(api_key) for i, s in enumerate(metadata_sources): filename = Path(s["filename"]) file_url = s["file_url"] file_url = file_url.replace( INTERNAL_BASE_URL, external_url ) # put the correct base url + file_url = f"{file_url}?token={api_key}" # add token for authentication page = s["page"] source_name = f"{filename}" + ( f" (page: {page})" @@ -153,7 +183,9 @@ async def __format_sources(metadata_sources, only_txt=False): ) if only_txt: - chunk_content = await __fetch_page_content(chunk_url=s["chunk_url"]) + chunk_content = await __fetch_page_content( + chunk_url=s["chunk_url"], headers=headers + ) elem = cl.Text(content=chunk_content, name=source_name, display="side") else: match filename.suffix.lower(): @@ -171,12 +203,14 @@ async def __format_sources(metadata_sources, only_txt=False): case ".mp3": elem = cl.Audio(name=source_name, url=file_url, display="side") case _: - chunk_content = await __fetch_page_content(chunk_url=s["chunk_url"]) + chunk_content = await __fetch_page_content( + chunk_url=s["chunk_url"], headers=headers + ) elem = cl.Text( content=chunk_content, name=source_name, display="side" ) - d[source_name] = elem + d[source_name] = elem source_names = list(d.keys()) elements = list(d.values()) @@ -188,9 +222,11 @@ async def __format_sources(metadata_sources, only_txt=False): async def on_message(message: cl.Message): messages: list = cl.user_session.get("messages", []) model: str = cl.user_session.get("chat_profile") + user = cl.user_session.get("user") + api_key = user.metadata.get("api_key") if user else "sk-1234" client = AsyncOpenAI( base_url=f"{INTERNAL_BASE_URL}/v1", - api_key=AUTH_TOKEN if AUTH_TOKEN else "sk-1234", + api_key=api_key, ) messages.append({"role": "user", "content": message.content}) @@ -230,7 +266,9 @@ async def on_message(message: cl.Message): cl.user_session.set("messages", messages) # Show sources - elements, source_names = await __format_sources(sources) + elements, source_names = await _format_sources( + sources, api_key=api_key, only_txt=False + ) msg.elements = elements if elements else [] if source_names: s = "\n\n" + "-" * 50 + "\n\nSources: \n" + "\n".join(source_names) From 428dca77d35ed10fd43618c3f425d6ba78efc302 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Tue, 14 Oct 2025 13:13:15 +0000 Subject: [PATCH 089/126] remove email checks from chainlit authentification --- docs/content/docs/documentation/setup_chainlit_ui_auth.mdx | 7 +++++-- openrag/app_front.py | 2 -- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/content/docs/documentation/setup_chainlit_ui_auth.mdx b/docs/content/docs/documentation/setup_chainlit_ui_auth.mdx index f56736855..ca01d83cd 100644 --- a/docs/content/docs/documentation/setup_chainlit_ui_auth.mdx +++ b/docs/content/docs/documentation/setup_chainlit_ui_auth.mdx @@ -13,8 +13,11 @@ Chainlit's password-based authentication is now integrated with the [User Model] RAG Architecture :::note -The password when authenticating is the generated **OpenRag `api key`** when the user is created. -The email is the email provided when the user is created. +**Authentication credentials:** +- **Password**: Your generated OpenRAG `API key` +- **Email**: Any non-empty value (required by Chainlit interface but not validated by the backend) + +The system only verifies the API key validity during authentication. ::: diff --git a/openrag/app_front.py b/openrag/app_front.py index ec4a0c003..7a81c3513 100644 --- a/openrag/app_front.py +++ b/openrag/app_front.py @@ -71,8 +71,6 @@ async def auth_callback(username: str, password: str): ) response.raise_for_status() # raises exception for 4xx/5xx responses data = response.json() - if username != data.get("email"): - return None return cl.User( identifier=data.get("display_name", "user"), From 0f87bfe74368f08a36a03264a256effb0632f87e Mon Sep 17 00:00:00 2001 From: htagourti Date: Tue, 14 Oct 2025 13:15:48 +0000 Subject: [PATCH 090/126] regen admin token if env changes --- openrag/components/indexer/vectordb/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openrag/components/indexer/vectordb/utils.py b/openrag/components/indexer/vectordb/utils.py index 820550b4b..99c63c40b 100644 --- a/openrag/components/indexer/vectordb/utils.py +++ b/openrag/components/indexer/vectordb/utils.py @@ -173,8 +173,9 @@ def _ensure_admin_user(self, admin_token: str): s.add(admin) s.commit() self.logger.info("Created admin user") - elif not admin.is_admin: + else: admin.is_admin = True + admin.token = hashed_token s.commit() self.logger.info("Upgraded existing user to admin") From f5a70b57650410e59e6333d6145dee95c49f88fc Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Tue, 14 Oct 2025 13:31:17 +0000 Subject: [PATCH 091/126] update documentation --- docs/content/docs/documentation/user_auth.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/content/docs/documentation/user_auth.md b/docs/content/docs/documentation/user_auth.md index 6587fc71e..109b468a3 100644 --- a/docs/content/docs/documentation/user_auth.md +++ b/docs/content/docs/documentation/user_auth.md @@ -13,6 +13,10 @@ It covers admin behavior, user tokens, and partition-level permissions. - The presence of the environment variable **`AUTH_TOKEN`** activates authentication. - If **`AUTH_TOKEN`** is **absent**, the middleware **bypasses all authentication checks**, allowing open access (useful for local or testing environments). +:::danger[Attention !!!] +**`SUPER_ADMIN_MODE=true`** must be activated if you want admin users to access all existing partitions, not just the admin's own partitions. +::: + --- ## **2. Admin Bootstrapping** From 894e4715e75514836bf50ad7b4de90f69d241c62 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Tue, 14 Oct 2025 13:52:12 +0000 Subject: [PATCH 092/126] get all details of a partition not just the name as it's necessary in indexerui --- openrag/routers/partition.py | 4 ++-- openrag/routers/utils.py | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/openrag/routers/partition.py b/openrag/routers/partition.py index 8c0b9e61a..7f1e35fee 100644 --- a/openrag/routers/partition.py +++ b/openrag/routers/partition.py @@ -8,7 +8,7 @@ from .utils import ( ROLE_HIERARCHY, - current_user_or_admin_partitions_list, + partitions_with_details, require_partition_owner, require_partition_viewer, ) @@ -26,7 +26,7 @@ def _quote_param_value(s: str) -> str: @router.get("/") async def list_existant_partitions( vectordb=Depends(get_vectordb), - partitions=Depends(current_user_or_admin_partitions_list), + partitions=Depends(partitions_with_details), ): if partitions == ["all"]: partitions = await vectordb.list_partitions.remote() diff --git a/openrag/routers/utils.py b/openrag/routers/utils.py index ad7c7f888..d59fb404c 100644 --- a/openrag/routers/utils.py +++ b/openrag/routers/utils.py @@ -56,6 +56,10 @@ def current_user_or_admin_partitions_list(request: Request): return [p["partition"] for p in current_user_or_admin_partitions(request)] +def partitions_with_details(request: Request): + return current_user_or_admin_partitions(request) + + def request_partition(request: Request): """Return the partition from path params""" return request.path_params.get("partition", None) From 3e58b5818f5cb8db6ce397d0c89e4b3eca06d9d9 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Tue, 14 Oct 2025 13:57:02 +0000 Subject: [PATCH 093/126] indexerui updated --- extern/indexer-ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/indexer-ui b/extern/indexer-ui index 2c4cde5a6..867ec99d7 160000 --- a/extern/indexer-ui +++ b/extern/indexer-ui @@ -1 +1 @@ -Subproject commit 2c4cde5a69c99dfe781d30fb4494a059f7366f08 +Subproject commit 867ec99d7bd3331fd003e8ed97be8d3dbe7712b8 From dcfd643ba1cd36a7efd4da8340c95e697523714d Mon Sep 17 00:00:00 2001 From: htagourti Date: Tue, 14 Oct 2025 14:52:15 +0000 Subject: [PATCH 094/126] use form instead of query param for write endpoints --- openrag/routers/partition.py | 8 ++++---- openrag/routers/users.py | 10 ++++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/openrag/routers/partition.py b/openrag/routers/partition.py index 7f1e35fee..3e6bc9a72 100644 --- a/openrag/routers/partition.py +++ b/openrag/routers/partition.py @@ -1,7 +1,7 @@ from typing import Literal from urllib.parse import quote -from fastapi import APIRouter, Depends, HTTPException, Query, Request, Response, status +from fastapi import APIRouter, Depends, Form, HTTPException, Request, Response, status from fastapi.responses import JSONResponse from utils.dependencies import get_vectordb from utils.logger import get_logger @@ -167,8 +167,8 @@ async def list_partition_users( @router.post("/{partition}/users") async def add_partition_user( partition: str, - user_id: int, - role: RoleType = Query(default="viewer"), + user_id: int = Form(...), + role: RoleType = Form("viewer"), vectordb=Depends(get_vectordb), partition_owner=Depends(require_partition_owner), ): @@ -207,7 +207,7 @@ async def remove_partition_user( async def update_partition_user_role( partition: str, user_id: int, - role: RoleType, + role: RoleType = Form(...), vectordb=Depends(get_vectordb), partition_owner=Depends(require_partition_owner), ): diff --git a/openrag/routers/users.py b/openrag/routers/users.py index fca8eded3..b71b06109 100644 --- a/openrag/routers/users.py +++ b/openrag/routers/users.py @@ -1,4 +1,6 @@ -from fastapi import APIRouter, Depends, Request, Response, status +from typing import Optional + +from fastapi import APIRouter, Depends, Form, Request, Response, status from fastapi.responses import JSONResponse from utils.dependencies import get_vectordb from utils.logger import get_logger @@ -25,9 +27,9 @@ async def get_current_user(request: Request): @router.post("/") async def create_user( - display_name: str | None = None, - external_user_id: str | None = None, - is_admin: bool = False, + display_name: Optional[str] = Form(None), + external_user_id: Optional[str] = Form(None), + is_admin: bool = Form(False), vectordb=Depends(get_vectordb), admin_user=Depends(require_admin), ): From ae300d82248e85c30c34d0ff90db6e2028d1a2ad Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Wed, 15 Oct 2025 12:23:32 +0000 Subject: [PATCH 095/126] update indexerui --- extern/indexer-ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/indexer-ui b/extern/indexer-ui index e0fa5735e..867ec99d7 160000 --- a/extern/indexer-ui +++ b/extern/indexer-ui @@ -1 +1 @@ -Subproject commit e0fa5735eb30f0524c494f1b1d5523f559d090ca +Subproject commit 867ec99d7bd3331fd003e8ed97be8d3dbe7712b8 From 40c3ef426fff32322f8316a39c4eaac6f87142e0 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Wed, 15 Oct 2025 12:48:46 +0000 Subject: [PATCH 096/126] Update docker compose with new indexer-ui version --- docker-compose.yaml | 3 +-- quick_start/docker-compose.yaml | 25 ++++++++++++++++--------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index d16bb6062..f08e6edbb 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -2,7 +2,6 @@ include: - vdb/milvus.yaml - ${CHAINLIT_DATALAYER_COMPOSE:-extern/dummy.yaml} - extern/infinity.yaml - # - ${INDEXERUI_COMPOSE_FILE:-extern/indexer-ui/docker-compose.yaml} x-openrag: &openrag_template image: ghcr.io/linagora/openrag:dev-latest @@ -59,7 +58,7 @@ x-vllm: &vllm_template services: # OpenRAG Indexer UI indexer-ui: - image: linagoraai/indexer-ui:v1.1 + image: linagoraai/indexer-ui:v1.0.1 build: context: ./extern/indexer-ui dockerfile: Dockerfile diff --git a/quick_start/docker-compose.yaml b/quick_start/docker-compose.yaml index e6b9f7725..71360d4a9 100644 --- a/quick_start/docker-compose.yaml +++ b/quick_start/docker-compose.yaml @@ -25,14 +25,13 @@ x-openrag: &openrag_template env_file: - ${SHARED_ENV:-.env} shm_size: 10.24gb - restart: always x-vllm: &vllm_template networks: default: aliases: - vllm - restart: always + restart: on-failure environment: - HUGGING_FACE_HUB_TOKEN ipc: "host" @@ -43,7 +42,8 @@ x-vllm: &vllm_template --trust-remote-code --task embed --gpu_memory_utilization 0.3 - --max-model-len ${MAX_MODEL_LEN:-8192} + --max-model-len ${MAX_MODEL_LEN:-16384} + # --max-num-seqs 1 # gpu_memory_utilization, max-num-seqs et max-model-len can be tuned depending on your GPU memory healthcheck: @@ -55,11 +55,14 @@ x-vllm: &vllm_template # ports: # - ${VLLM_PORT:-8000}:8000 services: - # Ragondin Indexer UI - indexer-ui: - image: linagoraai/indexer-ui:v1.1 + # OpenRAG Indexer UI + indexer-ui: + image: linagoraai/indexer-ui:v1.0.1 + build: + context: ./extern/indexer-ui + dockerfile: Dockerfile environment: - - API_BASE_URL=${API_BASE_URL:-http://localhost:${APP_iPORT:-8080}} + - API_BASE_URL=${API_BASE_URL:-http://localhost:${APP_PORT:-8080}} - INCLUDE_CREDENTIALS=${INCLUDE_CREDENTIALS:-false} ports: - "${INDEXERUI_PORT:-3042}:3000" @@ -78,6 +81,8 @@ services: profiles: - '' depends_on: + rdb: + condition: service_started milvus: condition: service_healthy vllm-gpu: @@ -90,6 +95,8 @@ services: profiles: - 'cpu' depends_on: + rdb: + condition: service_started milvus: condition: service_healthy vllm-cpu: @@ -132,8 +139,8 @@ services: --model ${EMBEDDER_MODEL_NAME:-jinaai/jina-embeddings-v3} --trust-remote-code --dtype float32 - --max-model-len ${MAX_MODEL_LEN:-8192} - # --max-num-batched-tokens 16384 + --max-model-len ${MAX_MODEL_LEN:-16384} + # --max-num-batched-tokens 32768 # dtype is required for aarch64 (https://github.com/vllm-project/vllm/issues/11327) and improves speed on amd64. # max-num-batched-tokens is required for aarch64 because chunked prefill isn't supported by V1 vllm backend # for aarch64 yet. On aarch64 max-num-batched-tokens must be equal max-model-len for now (without chunked prefill). From bdb9f08415e018b155d2387d46bca36b64518b09 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Wed, 15 Oct 2025 12:52:55 +0000 Subject: [PATCH 097/126] update docs --- docs/assets/compose_linux_gpu.yaml | 1 - docs/assets/env_ollama_cpu.env | 1 - docs/content/docs/getting_started/quickstart.mdx | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/assets/compose_linux_gpu.yaml b/docs/assets/compose_linux_gpu.yaml index decb8e4ce..ee75c64be 100644 --- a/docs/assets/compose_linux_gpu.yaml +++ b/docs/assets/compose_linux_gpu.yaml @@ -2,7 +2,6 @@ include: - vdb/milvus.yaml - ${CHAINLIT_DATALAYER_COMPOSE:-extern/dummy.yaml} - extern/infinity.yaml - - ${INDEXERUI_COMPOSE_FILE:-extern/indexer-ui/docker-compose.yaml} x-openrag: &openrag_template image: ghcr.io/linagora/openrag:dev-latest diff --git a/docs/assets/env_ollama_cpu.env b/docs/assets/env_ollama_cpu.env index 6fe5303ea..c9bd9e784 100644 --- a/docs/assets/env_ollama_cpu.env +++ b/docs/assets/env_ollama_cpu.env @@ -57,7 +57,6 @@ RAY_DASHBOARD_PORT=8265 # Indexer UI -INDEXERUI_COMPOSE_FILE=extern/indexer-ui/docker-compose.yaml INDEXERUI_PORT=8067 INDEXERUI_URL=http://localhost:8067 VITE_API_BASE_URL=http://localhost:8090 diff --git a/docs/content/docs/getting_started/quickstart.mdx b/docs/content/docs/getting_started/quickstart.mdx index 7ee6843a1..c21e30849 100644 --- a/docs/content/docs/getting_started/quickstart.mdx +++ b/docs/content/docs/getting_started/quickstart.mdx @@ -2,7 +2,7 @@ title: Quick Start --- import { Code } from '@astrojs/starlight/components'; -import env_example from '/src/assets/env_example.env?raw'; +import env_example from '../../../assets/env_example.env?raw'; import { FileTree } from '@astrojs/starlight/components'; import { Tabs, TabItem } from '@astrojs/starlight/components'; From bd0f3104b72672003d12d23c0a847e70a54b82ae Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Wed, 15 Oct 2025 16:47:33 +0000 Subject: [PATCH 098/126] Update docker compose with the latest indexer-ui version --- docker-compose.yaml | 2 +- quick_start/docker-compose.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index f08e6edbb..bd474f370 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -58,7 +58,7 @@ x-vllm: &vllm_template services: # OpenRAG Indexer UI indexer-ui: - image: linagoraai/indexer-ui:v1.0.1 + image: linagoraai/indexer-ui:v1.1 build: context: ./extern/indexer-ui dockerfile: Dockerfile diff --git a/quick_start/docker-compose.yaml b/quick_start/docker-compose.yaml index 71360d4a9..a2c1d8c1a 100644 --- a/quick_start/docker-compose.yaml +++ b/quick_start/docker-compose.yaml @@ -3,8 +3,8 @@ include: - extern/infinity.yaml x-openrag: &openrag_template - # image: ghcr.io/linagora/openrag:dev-latest - image: linagoraai/openrag:latest + image: ghcr.io/linagora/openrag:dev-latest + # image: linagoraai/openrag:latest build: context: . dockerfile: Dockerfile @@ -57,10 +57,10 @@ x-vllm: &vllm_template services: # OpenRAG Indexer UI indexer-ui: - image: linagoraai/indexer-ui:v1.0.1 - build: - context: ./extern/indexer-ui - dockerfile: Dockerfile + image: linagoraai/indexer-ui:v1.1 + # build: + # context: ./extern/indexer-ui + # dockerfile: Dockerfile environment: - API_BASE_URL=${API_BASE_URL:-http://localhost:${APP_PORT:-8080}} - INCLUDE_CREDENTIALS=${INCLUDE_CREDENTIALS:-false} From a910500e10abc4a36b8f12ab4159263cdce9eeb8 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Wed, 15 Oct 2025 16:48:05 +0000 Subject: [PATCH 099/126] Update quick_start doc --- docs/content/docs/getting_started/quickstart.mdx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/content/docs/getting_started/quickstart.mdx b/docs/content/docs/getting_started/quickstart.mdx index c21e30849..4a2ebee4e 100644 --- a/docs/content/docs/getting_started/quickstart.mdx +++ b/docs/content/docs/getting_started/quickstart.mdx @@ -11,7 +11,7 @@ OpenRAG is an open source Retrieval Augmented Generation (RAG) solution. This gu ### Prerequisites - [Docker](https://www.docker.com/get-started) and **Docker Compose** - Your hardware should meet these specifications: - - **CPU deployment**: Minimum **13 GiB** RAM for light PDF parsers (**`PyMuPDF4LLMLoader`, `PyMuPDFLoader`**), or **23 GiB** RAM for heavier parsers like **`MarkerLoader`** (refer to [this section](/getting_started/environment_setup/#3-file-parser-configuration) for details) + - **CPU deployment**: Minimum **13 GiB** RAM for light PDF parsers (**`PyMuPDF4LLMLoader`, `PyMuPDFLoader`**), or **23 GiB** RAM for heavier parsers like **`MarkerLoader`** (refer to [this section](/getting_started/quickstart/#3-file-parser-configuration) for details) - **GPU deployment**: **16 GB** GPU memory recommended (for systems with separate CPU and GPU memory) ### Installation and Configuration @@ -42,13 +42,13 @@ For **`CPU-only deployments`** or lightweight testing scenarios, you can conside These alternative loaders have limitations - they cannot process non-searchable (image-based) PDFs and do not extract or handle embedded images. ::: -#### 4. For Local Deployment +#### Deployment :::tip[Setting up the Indexer UI] In case **`Indexer UI` (A Web interface for intuitive document ingestion, indexing, and management.)** is not configured already in your `.env`, follow this dedicated guide: ➡ [Deploy with Indexer UI](/documentation/setup_indexerui/) ::: -* **Simple and quick** launch for testing +##### `Simple and quick` launch for testing :::info [OpenRAG repository](https://github.com/linagora/openrag) contains a ready-to-use `docker-compose.yml` file in the **`quick_start` folder**. This setup is ideal for local testing and quick deployments. @@ -121,8 +121,9 @@ In case **`Indexer UI` (A Web interface for intuitive document ingestion, indexi +##### Development Environment -* **Development Environment**: For development builds, use the **`--build`** flag to rebuild images: +For development builds, use the **`--build`** flag to rebuild images: Execute these commands from the project root directory or the cloned repository: From 6162bc2db1552191efea56f7183b0184cac6162c Mon Sep 17 00:00:00 2001 From: htagourti Date: Thu, 16 Oct 2025 08:24:39 +0000 Subject: [PATCH 100/126] block default admin deletion --- openrag/routers/users.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/openrag/routers/users.py b/openrag/routers/users.py index b71b06109..9533531b4 100644 --- a/openrag/routers/users.py +++ b/openrag/routers/users.py @@ -1,6 +1,6 @@ from typing import Optional -from fastapi import APIRouter, Depends, Form, Request, Response, status +from fastapi import APIRouter, Depends, Form, HTTPException, Request, Response, status from fastapi.responses import JSONResponse from utils.dependencies import get_vectordb from utils.logger import get_logger @@ -63,6 +63,10 @@ async def delete_user( """ Delete a user. """ + if user_id == 1: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, detail="Cannot delete default admin user." + ) await vectordb.delete_user.remote(user_id) return Response(status_code=status.HTTP_204_NO_CONTENT) From 4b4c43a84a484d441d254e87fc3e8c64256a0dc3 Mon Sep 17 00:00:00 2001 From: htagourti Date: Thu, 16 Oct 2025 08:36:17 +0000 Subject: [PATCH 101/126] fixed file delete error --- openrag/routers/indexer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openrag/routers/indexer.py b/openrag/routers/indexer.py index 3273249ad..bc9826b93 100644 --- a/openrag/routers/indexer.py +++ b/openrag/routers/indexer.py @@ -164,7 +164,7 @@ async def delete_file( indexer=Depends(get_indexer), user=Depends(require_partition_editor), ): - await indexer.delete_file.remote(file_id, partition, user=user) + await indexer.delete_file.remote(file_id, partition) return Response(status_code=status.HTTP_204_NO_CONTENT) From 055b112823b16f8edf8417f4325af6595de3bcea Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Thu, 16 Oct 2025 10:46:17 +0200 Subject: [PATCH 102/126] Generate / replace embedding (#87) * Calls the OpenAI-compatible Embedder. * Dynamically guesses the optimal batch size (optional). --------- Co-authored-by: Ahmath-Gadji --- .../docs/documentation/backup_restore.md | 37 +- .../docs/documentation/update_embeddings.md | 30 ++ openrag/scripts/embed.py | 359 ++++++++++++++++++ openrag/scripts/restore.py | 220 +++++++---- 4 files changed, 554 insertions(+), 92 deletions(-) rename README-backup.md => docs/content/docs/documentation/backup_restore.md (92%) create mode 100644 docs/content/docs/documentation/update_embeddings.md create mode 100644 openrag/scripts/embed.py diff --git a/README-backup.md b/docs/content/docs/documentation/backup_restore.md similarity index 92% rename from README-backup.md rename to docs/content/docs/documentation/backup_restore.md index 944ef3921..0a43ee9af 100644 --- a/README-backup.md +++ b/docs/content/docs/documentation/backup_restore.md @@ -1,7 +1,15 @@ +--- +title: How to backup or restore OpenRag partition/data ? +--- -# How to backup OpenRag partition ? +# How to backup partitions? +## Backup one partition -``` +:::caution +It's better to stop `openrag-cpu` (or `openrag`) service before starting backup. +::: + +```bash docker compose \ run \ --build \ @@ -9,12 +17,12 @@ docker compose \ -v /my-backup-dir/:/backup:rw \ --entrypoint "bash /app/openrag/scripts/entrypoint-backup.sh ${PARTITION_NAME}" \ openrag-cpu + ``` -It's better to stop `openrag-cpu` (or `openrag`) service before starting backup. +:::info By default backup script creates plan text uncomressed file. To make things faster you can use multithread compressor the following way: - -``` +```bash docker compose \ run \ --build \ @@ -23,6 +31,8 @@ docker compose \ --entrypoint "bash /app/openrag/scripts/entrypoint-backup-mt.sh ${PARTITION_NAME}" \ openrag-cpu ``` +::: + ## Backup all partitions @@ -31,14 +41,16 @@ docker compose run --build --rm \ -v ~/backup:/backup:rw \ --entrypoint "uv run /app/openrag/scripts/backup.py -o /backup/test.openrag" \ openrag + # Use --include-only to specify the partitions to back up. ``` -# How to restore OpenRag partition ? +# How to backup partitions? +## How to restore OpenRag partition ? Start with dry run to ensure the backup file is correct: -``` +```bash docker compose \ run \ --build \ @@ -49,7 +61,7 @@ docker compose \ ``` Backup files are expected to be in `/my-backup-dir/`. If the dry run is successful, run the following script to insert the data : -``` +```bash docker compose \ run \ --build \ @@ -64,8 +76,9 @@ docker compose \ ```bash docker compose run --build --rm \ -v ~/backup:/backup:rw \ - --entrypoint "uv run /app/openrag/scripts/restore.py -i /backup/test.openrag" \ + --entrypoint "uv run /app/openrag/scripts/restore.py /backup/test.openrag"\ openrag + # Use --include-only to specify the partitions to restore. ``` @@ -83,7 +96,8 @@ There are two types of sections: All `rdb` sections must appear before the `vdb` section. Example: -``` + +```txt rdb {"created": "2025-07-28T16:20:43.144796", "name": "frwiki-nocontext"} {"created_at": "2025-07-28T16:20:39.612784", "file_id": "10", "file_size": "13.57 KB", "filename": "Algorithmique.txt", "revid": "2962", "source": "/app/data/Algorithmique.txt", "title": "Algorithmique", "url": "https://fr.wikipedia.org/wiki?curid=10"} @@ -100,5 +114,4 @@ vdb {"created_at": "2025-07-28T16:20:39.680783", "file_id": "7", "file_size": "11.01 KB", "filename": "Algèbre linéaire.txt", "page": 1, "partition": "frwiki-nocontext", "revid": "2523928", "source": "/app/data/Algèbre linéaire.txt", "text": "L’algèbre linéaire est ...", "title": "Algèbre linéaire", "url": "https://fr.wikipedia.org/wiki?curid=7", "vector": [0.00012493133544921875, -0.052978515625, ...]} {"created_at": "2025-07-28T16:20:39.680783", "file_id": "7", "file_size": "11.01 KB", "filename": "Algèbre linéaire.txt", "page": 1, "partition": "frwiki-nocontext", "revid": "2523928", "source": "/app/data/Algèbre linéaire.txt", "text": "Ce n'est qu'au XIXsiècle que ...", "title": "Algèbre linéaire", "url": "https://fr.wikipedia.org/wiki?curid=7", "vector": [-0.0206298828125, -0.09765625, ...]} ... -``` - +``` \ No newline at end of file diff --git a/docs/content/docs/documentation/update_embeddings.md b/docs/content/docs/documentation/update_embeddings.md new file mode 100644 index 000000000..537603283 --- /dev/null +++ b/docs/content/docs/documentation/update_embeddings.md @@ -0,0 +1,30 @@ +--- +title: How to update embeddings? +--- + + +## How to update embeddings? +A command-line utility for generating text embeddings using any **OpenAI-compatible embedding endpoint**. +It supports adaptive batching for optimal performance and handles both plain and `.xz` compressed [backup files](README-backup.md). + +```bash +python3 openrag/scripts/embed.py \ + -u http://openai-compatible-endpoint/v1 \ + -m Qwen/Qwen3-Embedding-0.6B \ + -k sk-... \ + -b 1024 \ + -i input-file.openrag(.xz) \ + -o output-file.openrag(.xz) + +## The following version if you're using uv +# uv run python3 openrag/scripts/embed.py \ +# -u http://openai-compatible-endpoint/v1 \ +# -m Qwen/Qwen3-Embedding-0.6B \ +# -k sk-... \ +# -b 1024 \ +# -i input-file.openrag(.xz) \ +# -o output-file.openrag(.xz) +``` + +This script can also be used in pipelines, reading input from STDIN (`-i -`) and writing output to STDOUT (`-o -`). + diff --git a/openrag/scripts/embed.py b/openrag/scripts/embed.py new file mode 100644 index 000000000..166e8bf78 --- /dev/null +++ b/openrag/scripts/embed.py @@ -0,0 +1,359 @@ +#!/usr/bin/env python3 + +import sys +import os +import json +import time +import logging + +from typing import IO, Any, Dict, List, Optional, Set, Tuple + + +class Embedder: + """ + A wrapper around an OpenAI-compatible embedding endpoint with adaptive batching. + + Attributes: + client: OpenAI client instance. + model_name: Name of the embedding model. + batch_size: Fixed batch size if > 0, otherwise adaptive. + max_batch_size: Upper bound for adaptive batch size. + curr_batch_size: Current adaptive batch size being tested. + durations: Timing history for different batch sizes. + max_duration_items: Number of duration samples stored per batch size. + num_outliers: Number of outliers to remove before averaging timings. + """ + + def __init__( + self, + url: str, + key: str, + model_name: str, + batch_size: int, + logger: Any, + verbose: bool = False): + """ + Initialize an Embedder instance. + + Args: + url: URL to the OpenAI-compatible embedding service. + key: API key for authentication. + model_name: Embedding model name. + batch_size: Fixed batch size (0 or less means auto-detect optimal). + logger: Logger instance. + verbose: If True, log detailed performance info. + """ + from openai import OpenAI + + self.client = OpenAI(base_url=url, api_key=key) + self.model_name = model_name + self.batch_size = batch_size + + self.verbose = verbose + self.logger = logger + + self.max_batch_size = 1024 * 4 + self.curr_batch_size = 1 + self.durations = { self.curr_batch_size: [] } + self.max_duration_items = 12 + self.num_outliers = 2 + if self.batch_size <= 0: + self.batch_size = None + # We'll guess the best value + + + def get_batch_size(self) -> int: + """ + Get the current batch size. + + Returns: + int: Batch size for the next embedding request. If batch size was set + to 0 initially, adaptively selects a size based on measured timings. + """ + if self.batch_size is None: + if len(self.durations[self.curr_batch_size]) >= self.max_duration_items: + if self.curr_batch_size >= self.max_batch_size: + # We are ready to make a choice + self.calc_batch_size() + assert(self.batch_size is not None and self.batch_size > 0) + return self.batch_size + self.curr_batch_size *= 2 + return self.curr_batch_size + + assert(self.batch_size is not None and self.batch_size > 0) + return self.batch_size + + + def calc_batch_size(self) -> None: + """ + Compute the optimal batch size based on recorded durations. + + Uses mean time per item (excluding outliers) for each tested batch size + and picks the one with the lowest average. + + """ + data = [] + for k, v in self.durations.items(): + assert(len(v) >= self.max_duration_items) + assert(int == type(k)) + + v.sort() + + # remove outliers + v = v[self.num_outliers:-self.num_outliers] + mean = float(sum(v)) / len(v) + data.append({ 'batch_size': k, 'time_per_item': mean / k }) + + if self.verbose: + self.logger.info(f'calc_batch_size: batch_size={k} time_per_item={mean/k:.4f} mean={mean:.4f}\n') + + data.sort(key=lambda item: item['time_per_item']) + self.batch_size = data[0]['batch_size'] + + + def embed(self, data: list) -> list: + """ + Generate embeddings for a batch of input texts. + + Args: + data: List of strings to embed. + + Returns: + List of embeddings (lists of floats). + + """ + before = time.time() + response = self.client.embeddings.create( + model=self.model_name, + input=data + ) + + elapsed = time.time() - before + l = len(data) + if l not in self.durations: + self.durations[l] = [] + elif len(self.durations[l]) >= self.max_duration_items: + self.durations[l].pop(0) + self.durations[l].append(elapsed) + + return [ item.embedding for item in response.data ] + + +def call_embedder_and_save( + embedder: Embedder, + ofh: IO[str], + batch: list, + text_field_name: str, + vector_field_name: str, + logger: Any, + verbose: bool = False): + """ + Call the embedder on a batch of items and save the results. + + Args: + embedder: Embedder instance. + ofh: Output file handle. + batch: List of JSON objects. + text_field_name: Key holding the text to embed. + vector_field_name: Key where the embedding will be stored. + logger: Logger instance. + verbose: If True, logs extra info. + + """ + embd = embedder.embed([ item[text_field_name] for item in batch ]) + + for i in range(len(batch)): + batch[i][vector_field_name] = embd[i] + ofh.write(json.dumps(batch[i], ensure_ascii=False, sort_keys=True) + '\n') + + +def read_vdb_section( + ifh: IO[str], + ofh: IO[str], + embedder: Any, + logger: Any, + text_field_name: str = 'text', + vector_field_name: str = 'vector', + verbose: bool = False, + ) -> None: + """ + Reads chunks, deletes old vectors and creates new ones with given embedder. + + Parameters: + ifh: Input backup file handle (already open for reading). + ofh: Output backup file handle (already open for writing). + embedder: Wrapper object around embedding model. + logger: Logger for status and error reporting. + text_field_name Name of the field with text to embed. + vector_field_name Name of the field to store vector. + verbose: If True, logs additional info. + """ + if verbose: + logger.info(f'Read vdb section') + + batch_size = embedder.get_batch_size() + + batch = [] + cnt = 0 + for line in ifh: + # End of section + if 0 == len(line): + break + + if len(batch) >= batch_size: + call_embedder_and_save(embedder, ofh, batch, text_field_name, vector_field_name, logger, verbose) + batch = [] + batch_size = embedder.get_batch_size() + + chunk = json.loads(line) + + chunk.pop('_id', None) + chunk.pop(vector_field_name, None) + batch.append(chunk) + + if len(batch) > 0: + call_embedder_and_save(embedder, ofh, batch, text_field_name, vector_field_name, logger, verbose) + + +def open_input_file( + file_name: str, + logger: Any + ) -> IO[str]: + """ + Opens a input file for reading, with support for plain text and LZMA-compressed (.xz) files. + + Parameters: + file_name: Path to the backup file. + logger: Logger for status and error reporting. + + Returns: + file object: Opened file handle in text mode. + """ + if file_name in [ '-' ]: + return sys.stdin + + try: + if file_name.endswith('.xz'): + import lzma + return lzma.open(file_name, 'rt', encoding='utf-8') + else: + return open(file_name, 'rt', encoding='utf-8') + except Exception as e: + logger.error(f'Failed while opening file \'{file_name}\' for reading:\n' + str(e)) + raise + + +def open_output_file( + file_name: str, + logger: Any + ) -> IO[str]: + """ + Opens output file for writing + + Parameters: + file_name: Path to the output file or '-' for STDOUT + logger: Logger for status and error reporting. + + Returns: + file object: Opened file handle in text mode. + """ + if file_name in [ '-' ]: + return sys.stdout + + if os.path.isfile(file_name): + raise Exception(f'File \'{file_name}\' already exists.') + + try: + if file_name.endswith('.xz'): + import lzma + return lzma.open(file_name, 'wt', encoding='utf-8', preset=9 | lzma.PRESET_EXTREME) + else: + return open(file_name, 'wt', encoding='utf-8') + except Exception as e: + logger.error(f'Failed while opening file \'{file_name}\' for writing:\n' + str(e)) + raise + + +def close_file( + file_handle: IO[str], + file_name: str, + logger: Any + ) -> None: + """ + Depending of the file name closes the file handle or does nothing + + Parameters: + file_handle: File handle presumably opened + file_name: The corresponding file name + logger: Logging for status and error reporting + + Returns: + Nothing + """ + if file_name in [ '-' ] or file_handle is None: + return + + try: + file_handle.close() + except Exception as e: + logger.exception(f'Failed to close file \'{file_name}\': ' + str(e)) + raise + + +def main(): + """ + Main entry point: + - Parses CLI arguments. + + Parameters: + None (arguments are parsed from sys.argv) + + Returns: + int: Exit code (0 on success, non-zero on failure). + """ + + + # Arguments and configs + import argparse + parser = argparse.ArgumentParser(description='OpenRAG embed tool') + parser.add_argument('-b', '--batch-size', default=0, type=int, help='Batch size (0 - guess optimal batch size)') + parser.add_argument('-v', '--verbose', default=False, action='store_true', help='Be verbose') + parser.add_argument('-i', '--input', default='-', type=str, help='Input file name (\'-\' for STDIN)') + parser.add_argument('-o', '--output', default='-', type=str, help='Output file name (\'-\' for STDOUT)') + parser.add_argument('-u', '--url', type=str, help='URL to embedder OpenAI compatible endpoint') + parser.add_argument('-k', '--key', type=str, help='Secret key to access embedder') + parser.add_argument('-m', '--model', required=True, type=str, help='Model name') + + args = parser.parse_args() + + logger = logging.getLogger(__name__) + + + try: + embedder = Embedder(args.url, args.key, args.model, args.batch_size, logger, args.verbose) + except Exception as e: + logger.exception(f'Failed while trying to create embedder: ' + str(e)) + raise + + try: + ifh, ofh = None, None + ifh = open_input_file(args.input, logger) + ofh = open_output_file(args.output, logger) + + for line in ifh: + ofh.write(line) + + if line.strip() in [ 'vdb' ]: + read_vdb_section(ifh, ofh, embedder, logger, 'text', 'vector', args.verbose) + + except Exception as e: + logger.exception(f'Error: ' + str(e)) + raise + finally: + close_file(ifh, args.input, logger) + close_file(ofh, args.output, logger) + + +if __name__ == '__main__': + sys.exit(main()) + diff --git a/openrag/scripts/restore.py b/openrag/scripts/restore.py index bd3363463..363eb2a85 100644 --- a/openrag/scripts/restore.py +++ b/openrag/scripts/restore.py @@ -1,27 +1,37 @@ #!/usr/bin/env python3 -import sys import json +import sys import time - from typing import IO, Any, Dict, List, Optional, Set, Tuple +import ray +from components.indexer.vectordb import MilvusDB +from components.indexer.vectordb.utils import PartitionFileManager from pymilvus import MilvusClient - from utils.logger import get_logger -from components.indexer.vectordb.utils import PartitionFileManager + +# It will create a the Milvus collection if it doesn't exist +vdb = MilvusDB.options( + name="Vectordb", namespace="openrag", lifetime="detached" +).remote() + +ray.get( + vdb.__ray_ready__.remote() +) # ensure the actor is fully initialized and ready: collection and all created if nont existing +print("VectorDB (Milvus) actor fully initialized") def read_rdb_section( - fh: IO[str], - pfm: PartitionFileManager, - include_only: Optional[List[str]], - added_documents: Dict[str, Set[str]], - existing_partitions: Dict[str, Any], - logger: Any, - verbose: bool = False, - dry_run: bool = False - ) -> None: + fh: IO[str], + pfm: PartitionFileManager, + include_only: Optional[List[str]], + added_documents: Dict[str, Set[str]], + existing_partitions: Dict[str, Any], + logger: Any, + verbose: bool = False, + dry_run: bool = False, +) -> None: """ Reads and restores a relational database (RDB) section from the backup file. @@ -39,14 +49,14 @@ def read_rdb_section( line = next(fh) part = json.loads(line) except Exception as e: - logger.exception(f'Failed while parsing the following json:\n{line}\n' + str(e)) + logger.exception(f"Failed while parsing the following json:\n{line}\n" + str(e)) raise - if part['name'] in existing_partitions: - raise Exception(f'Partition \"{part["name"]}\" already exists') + if part["name"] in existing_partitions: + raise Exception(f'Partition "{part["name"]}" already exists') if verbose: - logger.info(f'Read rdb section | partition=\"{part["name"]}\"') + logger.info(f'Read rdb section | partition="{part["name"]}"') for line in fh: line = line.strip() @@ -54,40 +64,49 @@ def read_rdb_section( if 0 == len(line): break - if include_only is not None and len(include_only) > 0 and part['name'] not in include_only: + if ( + include_only is not None + and len(include_only) > 0 + and part["name"] not in include_only + ): continue try: doc = json.loads(line) except Exception as e: - logger.exception(f'Failed while parsing the following json:\n{line}\n' + str(e)) + logger.exception( + f"Failed while parsing the following json:\n{line}\n" + str(e) + ) raise if not dry_run: try: - res = pfm.add_file_to_partition(doc['file_id'], part['name'], doc) + res = pfm.add_file_to_partition(doc["file_id"], part["name"], doc) except Exception as e: - logger.exception(f'{type(e)} in add_file_to_partition({doc["file_id"]}, {part["name"]}, ...)\n' + str(e)) + logger.exception( + f"{type(e)} in add_file_to_partition({doc['file_id']}, {part['name']}, ...)\n" + + str(e) + ) raise else: res = True if res: - if part['name'] not in added_documents: - added_documents[part['name']] = set() - added_documents[part['name']].add(doc['file_id']) + if part["name"] not in added_documents: + added_documents[part["name"]] = set() + added_documents[part["name"]].add(doc["file_id"]) else: - logger.error(f'Can\'t add file {doc["file_id"]} to partition {part["name"]}') + logger.error(f"Can't add file {doc['file_id']} to partition {part['name']}") def insert_into_vdb( - client: MilvusClient, - collection_name: str, - batch: list, - logger: Any, - verbose: bool = False, - dry_run: bool = False - ) -> None: + client: MilvusClient, + collection_name: str, + batch: list, + logger: Any, + verbose: bool = False, + dry_run: bool = False, +) -> None: """ Inserts a batch of chunks into the vector database. @@ -103,26 +122,30 @@ def insert_into_vdb( try: if not dry_run: res = client.insert(collection_name=collection_name, data=batch) - if 'insert_count' not in res or res['insert_count'] != len(batch): - raise Exception(f'Unexpected number of items inserted: \'insert_count\'=={res["insert_count"]} with len(batch)=={len(batch)}') + if "insert_count" not in res or res["insert_count"] != len(batch): + raise Exception( + f"Unexpected number of items inserted: 'insert_count'=={res['insert_count']} with len(batch)=={len(batch)}" + ) except Exception as e: - logger.exception(f'{type(e)} in client.insert({collection_name}, {len(batch)} items)') + logger.exception( + f"{type(e)} in client.insert({collection_name}, {len(batch)} items)" + ) raise elapsed = time.time() - before if verbose: - logger.info(f'Inserting {len(batch)} items took {elapsed:.2f}s') + logger.info(f"Inserting {len(batch)} items took {elapsed:.2f}s") def read_vdb_section( - fh: IO[str], - collection_name: str, - added_documents: Dict[str, Set[str]], - client: MilvusClient, - batch_size: int, - logger: Any, - verbose: bool = False, - dry_run: bool = False - ) -> None: + fh: IO[str], + collection_name: str, + added_documents: Dict[str, Set[str]], + client: MilvusClient, + batch_size: int, + logger: Any, + verbose: bool = False, + dry_run: bool = False, +) -> None: """ Reads and restores a vector database (VDB) section from the backup file. @@ -136,10 +159,10 @@ def read_vdb_section( verbose: If True, logs additional info. dry_run: If True, no changes are made to the database. """ - assert(batch_size > 0) + assert batch_size > 0 if verbose: - logger.info(f'Read vdb section') + logger.info("Read vdb section") batch = [] for line in fh: @@ -153,18 +176,18 @@ def read_vdb_section( chunk = json.loads(line) - if chunk['partition'] in added_documents and chunk['file_id'] in added_documents[chunk['partition']]: - chunk.pop('_id', None) + if ( + chunk["partition"] in added_documents + and chunk["file_id"] in added_documents[chunk["partition"]] + ): + chunk.pop("_id", None) batch.append(chunk) if len(batch) > 0: insert_into_vdb(client, collection_name, batch, logger, verbose, dry_run) -def open_backup_file( - file_name: str, - logger: Any - ) -> IO[str]: +def open_backup_file(file_name: str, logger: Any) -> IO[str]: """ Opens a backup file for reading, with support for plain text and LZMA-compressed (.xz) files. @@ -176,13 +199,14 @@ def open_backup_file( file object: Opened file handle in text mode. """ try: - if file_name.endswith('.xz'): + if file_name.endswith(".xz"): import lzma - return lzma.open(file_name, 'rt', encoding='utf-8') + + return lzma.open(file_name, "rt", encoding="utf-8") else: - return open(file_name, 'rt', encoding='utf-8') + return open(file_name, "rt", encoding="utf-8") except Exception as e: - logger.error(f'Failed while opening file \'{file_name}\' for reading:\n' + str(e)) + logger.error(f"Failed while opening file '{file_name}' for reading:\n" + str(e)) raise @@ -200,6 +224,7 @@ def main(): Returns: int: Exit code (0 on success, non-zero on failure). """ + def load_openrag_config(logger: Any) -> Tuple[Dict[str, Any], Dict[str, Any]]: """ Loads OpenRAG configuration. @@ -217,21 +242,36 @@ def load_openrag_config(logger: Any) -> Tuple[Dict[str, Any], Dict[str, Any]]: try: config = load_config() except Exception as e: - logger.error(f'Failed while trying to obtain OpenRAG config: {e}') + logger.error(f"Failed while trying to obtain OpenRAG config: {e}") raise - return config['rdb'], config['vectordb'] - + return config["rdb"], config["vectordb"] # Arguments and configs import argparse - parser = argparse.ArgumentParser(description='OpenRAG restore from backup tool') - parser.add_argument('-i', '--include-only', nargs='*', help='Include only listed partitions') - parser.add_argument('-b', '--batch-size', default=1024, type=int, help='Batch size used to iterate Milvus') - parser.add_argument('-v', '--verbose', default=False, action='store_true', help='Be verbose') - parser.add_argument('-d', '--dry-run', default=False, action='store_true', help='Don\'t change the target database') - parser.add_argument('input', help='input file name') + parser = argparse.ArgumentParser(description="OpenRAG restore from backup tool") + parser.add_argument( + "-i", "--include-only", nargs="*", help="Include only listed partitions" + ) + parser.add_argument( + "-b", + "--batch-size", + default=1024, + type=int, + help="Batch size used to iterate Milvus", + ) + parser.add_argument( + "-v", "--verbose", default=False, action="store_true", help="Be verbose" + ) + parser.add_argument( + "-d", + "--dry-run", + default=False, + action="store_true", + help="Don't change the target database", + ) + parser.add_argument("input", help="input file name") args = parser.parse_args() @@ -240,8 +280,9 @@ def load_openrag_config(logger: Any) -> Tuple[Dict[str, Any], Dict[str, Any]]: rdb, vdb = load_openrag_config(logger) if args.verbose: - logger.info(f'rdb @ {rdb["host"]}:{rdb["port"]} | vdb @ {vdb["host"]}:{vdb["port"]} | collection: {vdb["collection_name"]}') - + logger.info( + f"rdb @ {rdb['host']}:{rdb['port']} | vdb @ {vdb['host']}:{vdb['port']} | collection: {vdb['collection_name']}" + ) # List existing partitions try: @@ -250,19 +291,21 @@ def load_openrag_config(logger: Any) -> Tuple[Dict[str, Any], Dict[str, Any]]: logger=logger, ) - existing_partitions = { item['partition']: item for item in pfm.list_partitions() } + existing_partitions = { + item["partition"]: item for item in pfm.list_partitions() + } except Exception as e: - logger.error(f'Failed while accessing PartitionFileManager at {rdb["host"]}:{rdb["port"]}\n{e}') + logger.error( + f"Failed while accessing PartitionFileManager at {rdb['host']}:{rdb['port']}\n{e}" + ) raise - if args.include_only: for part_name in args.include_only: if part_name in existing_partitions: logger.error(f'Partition "{part_name}" already exists') return 1 - client = MilvusClient(uri=f"http://{vdb['host']}:{vdb['port']}") try: @@ -272,18 +315,35 @@ def load_openrag_config(logger: Any) -> Tuple[Dict[str, Any], Dict[str, Any]]: for line in fh: line = line.strip() - if line in [ 'rdb' ]: - read_rdb_section(fh, pfm, args.include_only, added_documents, existing_partitions, logger, args.verbose, args.dry_run) - - if line in [ 'vdb' ]: - read_vdb_section(fh, vdb['collection_name'], added_documents, client, args.batch_size, logger, args.verbose, args.dry_run) + if line in ["rdb"]: + read_rdb_section( + fh, + pfm, + args.include_only, + added_documents, + existing_partitions, + logger, + args.verbose, + args.dry_run, + ) + + if line in ["vdb"]: + read_vdb_section( + fh, + vdb["collection_name"], + added_documents, + client, + args.batch_size, + logger, + args.verbose, + args.dry_run, + ) except Exception as e: - logger.error(f'Error: ' + str(e)) + logger.error("Error: " + str(e)) raise finally: client.close() -if __name__ == '__main__': +if __name__ == "__main__": sys.exit(main()) - From ea029e4b1da8d9156debdf6a28dc93718ffa0733 Mon Sep 17 00:00:00 2001 From: htagourti Date: Thu, 16 Oct 2025 09:00:31 +0000 Subject: [PATCH 103/126] raise 404 on delete non existant partition --- openrag/components/indexer/vectordb/vectordb.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/openrag/components/indexer/vectordb/vectordb.py b/openrag/components/indexer/vectordb/vectordb.py index 270aa5448..6c2e69ed3 100644 --- a/openrag/components/indexer/vectordb/vectordb.py +++ b/openrag/components/indexer/vectordb/vectordb.py @@ -700,10 +700,8 @@ def collection_exists(self, collection_name: str): return self._client.has_collection(collection_name=collection_name) async def delete_partition(self, partition: str): + self._check_partition_exists(partition) log = self.logger.bind(partition=partition) - if not self.partition_file_manager.partition_exists(partition): - log.debug(f"Partition {partition} does not exist") - return False try: count = self._client.delete( From bda42c75e71d47abcf0ecadb0fb1c09bc92cc13f Mon Sep 17 00:00:00 2001 From: Paul Tran-Van Date: Thu, 16 Oct 2025 11:31:52 +0200 Subject: [PATCH 104/126] feat: Add log level in .env config This is useful to have control over logging level and typically avoid debug logs in production environment. --- .env.example | 5 ++++- .hydra_config/config.yaml | 3 +-- openrag/utils/logger.py | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 5ec1a776a..7552041ec 100644 --- a/.env.example +++ b/.env.example @@ -47,4 +47,7 @@ RAY_ENABLE_UV_RUN_RUNTIME_ENV=0 # critical with the newest version of UV VITE_INCLUDE_CREDENTIALS=false # set true if fastapi authentification is enabled INDEXERUI_PORT=8060 # Port to expose the Indexer UI (default is 3042) INDEXERUI_URL='http://X.X.X.X:INDEXERUI_PORT' -VITE_API_BASE_URL='http://X.X.X.X:APP_PORT' \ No newline at end of file +VITE_API_BASE_URL='http://X.X.X.X:APP_PORT' + +# LOGGING +LOG_LEVEL=DEBUG # See possible values https://loguru.readthedocs.io/en/stable/api/logger.html \ No newline at end of file diff --git a/.hydra_config/config.yaml b/.hydra_config/config.yaml index 812cc70d4..70720f66a 100644 --- a/.hydra_config/config.yaml +++ b/.hydra_config/config.yaml @@ -56,8 +56,7 @@ map_reduce: map_reduce_n_docs: ${oc.decode:${oc.env:MAP_REDUCE_N_DOCS, 10}} # Number of documents to use in map-reduce verbose: - verbose: true - level: DEBUG + level: ${oc.env:LOG_LEVEL, DEBUG} paths: prompts_dir: ${oc.env:PROMPTS_DIR, ../prompts/example3} diff --git a/openrag/utils/logger.py b/openrag/utils/logger.py index 7f16a16e9..684cbd494 100644 --- a/openrag/utils/logger.py +++ b/openrag/utils/logger.py @@ -28,7 +28,7 @@ def formatter(record): logger.add( sys.stderr, format=formatter, - level=config.verbose.level, # INFO or DEBUG + level=config.verbose.level, ) # JSON logs to file for later use (e.g. Grafana ingestion) From 5ed72af4b8453998ec5d91f0a0d23412d65a129a Mon Sep 17 00:00:00 2001 From: htagourti Date: Thu, 16 Oct 2025 10:15:33 +0000 Subject: [PATCH 105/126] updated schema doc --- docs/content/docs/documentation/data_model.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/content/docs/documentation/data_model.md b/docs/content/docs/documentation/data_model.md index add332025..9edb98810 100644 --- a/docs/content/docs/documentation/data_model.md +++ b/docs/content/docs/documentation/data_model.md @@ -27,6 +27,9 @@ Stores information about API users and administrators. ### 📁 `partitions` Represents a logical workspace or “space” that groups files and users. +:::caution +Note that "partition" has to be unique accross all app users as it is used as a partition key in Milvus. +::: | Column | Type | Description | |---------------|------|-------------| From 7ca29eb16de3724e4aee0daffe3503171b70d91b Mon Sep 17 00:00:00 2001 From: htagourti Date: Thu, 16 Oct 2025 11:58:54 +0000 Subject: [PATCH 106/126] fixed copy endpoint jsonresponse --- openrag/routers/indexer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openrag/routers/indexer.py b/openrag/routers/indexer.py index bc9826b93..8e8ec2ec7 100644 --- a/openrag/routers/indexer.py +++ b/openrag/routers/indexer.py @@ -281,7 +281,7 @@ async def copy_file_between_partitions( await indexer.copy_file.remote( file_id=source_file_id, metadata=metadata, partition=source_partition, user=user ) - return JSONResponse(status_code=status.HTTP_201_CREATED) + return JSONResponse(status_code=status.HTTP_201_CREATED, content={"message": "File copied successfully."}) @router.get("/task/{task_id}") From da771a81b9c82816145fc733f78958441d7de33d Mon Sep 17 00:00:00 2001 From: htagourti Date: Thu, 16 Oct 2025 12:19:57 +0000 Subject: [PATCH 107/126] fixed vectordb restart errors --- openrag/api.py | 3 ++- openrag/routers/utils.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/openrag/api.py b/openrag/api.py index e6a4836b4..206e44832 100644 --- a/openrag/api.py +++ b/openrag/api.py @@ -33,7 +33,7 @@ from routers.search import router as search_router from routers.users import router as users_router from starlette.middleware.base import BaseHTTPMiddleware -from utils.dependencies import vectordb +from utils.dependencies import get_vectordb from utils.exceptions import OpenRAGError from utils.logger import get_logger @@ -96,6 +96,7 @@ def custom_openapi(): class AuthMiddleware(BaseHTTPMiddleware): async def dispatch(self, request: Request, call_next): + vectordb = get_vectordb() # Skip if no AUTH_TOKEN configured if AUTH_TOKEN is None: user = await vectordb.get_user.remote(1) diff --git a/openrag/routers/utils.py b/openrag/routers/utils.py index d59fb404c..f76eb6024 100644 --- a/openrag/routers/utils.py +++ b/openrag/routers/utils.py @@ -13,7 +13,6 @@ # load config config = load_config() logger = get_logger() -vectordb = get_vectordb() task_state_manager = get_task_state_manager() SUPER_ADMIN_MODE = os.getenv("SUPER_ADMIN_MODE", "false").lower() == "true" @@ -84,6 +83,7 @@ async def ensure_partition_role( ): """Ensure the user has at least `required_role` for the partition.""" # Super-admin bypass + vectordb = get_vectordb() if SUPER_ADMIN_MODE and user.get("is_admin"): return True From 70e4e24ae4d1fdf00b09018127d6f1deb543529a Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Thu, 16 Oct 2025 14:38:21 +0000 Subject: [PATCH 108/126] correct /partition in order for super admin to list them instead of just seeing "all" --- openrag/routers/partition.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openrag/routers/partition.py b/openrag/routers/partition.py index 3e6bc9a72..7bc6b81ab 100644 --- a/openrag/routers/partition.py +++ b/openrag/routers/partition.py @@ -28,7 +28,7 @@ async def list_existant_partitions( vectordb=Depends(get_vectordb), partitions=Depends(partitions_with_details), ): - if partitions == ["all"]: + if len(partitions) == 1 and partitions[0]["partition"] == "all": partitions = await vectordb.list_partitions.remote() logger.debug( "Returned list of existing partitions.", partition_count=len(partitions) From 879d48fe67a7922193e272dd029d4e4bc7be5479 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Thu, 16 Oct 2025 15:03:32 +0000 Subject: [PATCH 109/126] remove prompts not used prompt folders --- .../demo/contextualize_prompt_template.txt | 44 ------ prompts/demo/hyde.txt | 2 - prompts/demo/multi_query_prompt_template.txt | 7 - prompts/demo/rag_sys_prompt_template copy.txt | 24 ---- prompts/demo/rag_sys_prompt_template.txt | 14 -- .../basic_sys_prompt_template_legacy.txt | 136 ------------------ .../contextualize_prompt_template.txt | 24 ---- prompts/example1/hyde.txt | 2 - .../example1/multi_query_prompt_template.txt | 7 - prompts/example1/rag_sys_prompt_template.txt | 25 ---- prompts/example2/contextualizer_pmpt.txt | 30 ---- prompts/example2/hyde.txt | 2 - prompts/example2/image_captioning.txt | 11 -- .../example2/multi_query_prompt_template.txt | 7 - .../example2/rag_sys_prompt_template copy.txt | 24 ---- prompts/example2/rag_sys_prompt_template.txt | 14 -- .../example3/chunk_contextualizer_tmpl.txt | 23 --- prompts/example3/contextualizer_pmpt.txt | 20 --- prompts/example3/hyde.txt | 2 - prompts/example3/image_captioning.txt | 11 -- .../example3/multi_query_prompt_template.txt | 7 - prompts/example3/rag_sys_prompt_template.txt | 14 -- 22 files changed, 450 deletions(-) delete mode 100644 prompts/demo/contextualize_prompt_template.txt delete mode 100644 prompts/demo/hyde.txt delete mode 100644 prompts/demo/multi_query_prompt_template.txt delete mode 100644 prompts/demo/rag_sys_prompt_template copy.txt delete mode 100644 prompts/demo/rag_sys_prompt_template.txt delete mode 100644 prompts/example1/basic_sys_prompt_template_legacy.txt delete mode 100644 prompts/example1/contextualize_prompt_template.txt delete mode 100644 prompts/example1/hyde.txt delete mode 100644 prompts/example1/multi_query_prompt_template.txt delete mode 100644 prompts/example1/rag_sys_prompt_template.txt delete mode 100644 prompts/example2/contextualizer_pmpt.txt delete mode 100644 prompts/example2/hyde.txt delete mode 100644 prompts/example2/image_captioning.txt delete mode 100644 prompts/example2/multi_query_prompt_template.txt delete mode 100644 prompts/example2/rag_sys_prompt_template copy.txt delete mode 100644 prompts/example2/rag_sys_prompt_template.txt delete mode 100644 prompts/example3/chunk_contextualizer_tmpl.txt delete mode 100644 prompts/example3/contextualizer_pmpt.txt delete mode 100644 prompts/example3/hyde.txt delete mode 100644 prompts/example3/image_captioning.txt delete mode 100644 prompts/example3/multi_query_prompt_template.txt delete mode 100644 prompts/example3/rag_sys_prompt_template.txt diff --git a/prompts/demo/contextualize_prompt_template.txt b/prompts/demo/contextualize_prompt_template.txt deleted file mode 100644 index c227c4f1d..000000000 --- a/prompts/demo/contextualize_prompt_template.txt +++ /dev/null @@ -1,44 +0,0 @@ -You are a contextualizer assistant. Your role is to convert user queries into clear, standalone, context-aware search queries by taking into account previous chat conversations while preserving the original tone and intent. - -# TASK: -- If the user's query is a follow-up, enrich it with relevant keywords from the chat history by replacing pronouns with the corresponding noun. -- If the query is standalone and not related to the previous messages, apply only minor corrections (grammar, keyword fixes, etc.). - -# PRESERVATION: -- Retain the original tone and intent. -- Never add/alter information beyond what's needed for contextualization. -- Never answer questions - only reformulate them. - -# OUTPUT: -- Return only the reformulated query as plain text without extra formatting, quotes, brackets, markdown, or commentary. - -# Examples -* Example 1: ----------------------------- -Chat History: -User: I'm planning a trip to Italy and I'm interested in exploring historical landmarks and local cuisine. -Assistant: Italy offers a wealth of history and culinary delights. ----------------------------- -User's Query: What are some must-see sites? ----------------------------- -Reformulated Query: What are some must-see historical landmarks and local cuisine spots in Italy? ----------------------------- - -* Example 2: ----------------------------- -Chat History: -User: I'm researching methods for brewing coffee at home. -Assistant: There are many effective home coffee brewing techniques. ----------------------------- -User's Query: do i need a grinder? ----------------------------- -Reformulated Query: Do I need a coffee grinder for home coffee brewing? ----------------------------- - -Now, using the guidelines above, convert the following: ----------------------------- -Chat History: -{chat_history} ----------------------------- -User's Query: -{query} \ No newline at end of file diff --git a/prompts/demo/hyde.txt b/prompts/demo/hyde.txt deleted file mode 100644 index 9b17e3f00..000000000 --- a/prompts/demo/hyde.txt +++ /dev/null @@ -1,2 +0,0 @@ -Répondez au question de l'utilisateur, en rédigeant un paragraphe clair, concis et informatif. -Question : {query} diff --git a/prompts/demo/multi_query_prompt_template.txt b/prompts/demo/multi_query_prompt_template.txt deleted file mode 100644 index b3e9638b9..000000000 --- a/prompts/demo/multi_query_prompt_template.txt +++ /dev/null @@ -1,7 +0,0 @@ -Écris {k_queries} versions différentes de la question donnée. -Ces variantes aideront à trouver des documents pertinents dans une base de données vectorielles. -Écris ces questions alternatives sur une même ligne séparées par '[SEP]' sans rien d'autres. - -Example : Question 1?[SEP]Question 2?[SEP]Question 3? - -Question originale : {query} \ No newline at end of file diff --git a/prompts/demo/rag_sys_prompt_template copy.txt b/prompts/demo/rag_sys_prompt_template copy.txt deleted file mode 100644 index 769247d61..000000000 --- a/prompts/demo/rag_sys_prompt_template copy.txt +++ /dev/null @@ -1,24 +0,0 @@ -You are a multilingual conversational AI assistant designed to provide structured, accurate, and reliable answers based exclusively on the provided `Context` (retrieved data). -Prioritize clarity and thoroughness in your answers. - -# Rules -1. Context-Exclusive Answers - - Match the user’s query language in your answer. - - Only use information from the provided `Context`. Never infer, speculate, or use external knowledge. - - If the context is insufficient, politely ask the user to refine their query or provide additional keywords. - -2. In-text Citation Rules -In-text citation is critical to improve uses trust on your answers. Each document has its own *source* which will be used in in-text citation when appropriate. - - - Single fact: If a fact is supported by one or multiple documents, cite all relevant sources. - - Example: Cloud infrastructure adoption increased efficiency by 40% [doc_2], [doc_5]. - - Multiple facts from one document: If a paragraph (multiple sentences) is backed by source, cite it at the end of the paragraph. - - Example: The team initially focused on software development. By 2015, they expanded into client-facing solutions. Both efforts prioritized open-source tools [doc_3]. - - Facts from multiple documents: For mixed sourcing, cite each claim individually or group citations logically. - - Example: User retention improved by 25% after interface updates [doc_4]. Further analysis tied this to reduced load times [doc_8] and streamlined workflows [doc_4], [doc_9]. - -3. Formatting for Readability - - Use headings, bullet points, or numbered lists to organize complex answers. - - Avoid jargon and ensure technical terms are explained in context - -Here are the retrived documents: {context} \ No newline at end of file diff --git a/prompts/demo/rag_sys_prompt_template.txt b/prompts/demo/rag_sys_prompt_template.txt deleted file mode 100644 index efbc28076..000000000 --- a/prompts/demo/rag_sys_prompt_template.txt +++ /dev/null @@ -1,14 +0,0 @@ -You are a multilingual conversational AI assistant designed to provide structured, accurate, and reliable answers based exclusively on the provided `Context` (retrieved data). -Prioritize clarity and thoroughness in your answers. - -# Rules -1. Context-Exclusive Answers - - Match the user’s query language in your answer. - - Only use information from the provided `Context`. Never infer, speculate, or use external knowledge. - - If the context is insufficient, politely ask the user to refine their query or provide additional keywords. - -2. Formatting for Readability - - Use headings, bullet points, or numbered lists to organize complex answers. - - Avoid jargon and ensure technical terms are explained in context - -Here are the retrived documents: {context} \ No newline at end of file diff --git a/prompts/example1/basic_sys_prompt_template_legacy.txt b/prompts/example1/basic_sys_prompt_template_legacy.txt deleted file mode 100644 index 7dc478aa4..000000000 --- a/prompts/example1/basic_sys_prompt_template_legacy.txt +++ /dev/null @@ -1,136 +0,0 @@ -You are a conversational chatbot and your task is to interact with users and answer questions grounded on the given Context. Make sure to provide complete answers. - -For relevant paragraphs of your answer that come from a specific document, insert a reference like this `[doc_n]`, where n corresponds to the document number in the contexte. -Include references to attribute specific information to a document. - -# Instructions: -* Answer the question using the information in the documents provided. -* Whenever you refer to specific information from a document, append a reference like this `[doc_n]` at the end of the relevant paragraphs. -* Do not insert a reference for every sentence, only for paragraphs where specific attribution is needed. -* If a fact is supported by two or three different sources, cite them all as in the following: `[doc_k], [doc_n]` -* This is a conversation, no need to say "According to..." - -Context: {context} - -------------- - - -You are a friendly and knowledgeable conversational AI assistant. Your goal is to engage with users naturally and provide accurate, structured answers to their inputs based on the provided `Context`. - -Instructions: -* Ensure your answer is grounded in the `Context` while maintaining a conversational tone. -* Cite references when specific attribution to a document in the context is necessary. -* When referencing specific information from documents, subtly include a reference `[doc_n]` at the end of the paragraph. -* If a point is supported by multiple documents, list them together like this: `[doc_k], [doc_n]`. -* Make sur to only add references at the end of the paragraphs and be exhaustive in your answers. - -Context: {context} - ------------------- - -You are a friendly, knowledgeable, and professional RAG (retrieval-augmented generation) AI assistant for Linagora. -Your goal is to engage naturally with employees, providing accurate and structured answers based on the given `Context`. - -Instructions: - -* Ground your answers in the `Context` while maintaining a conversational, professional tone. -* Provide information relevant to Linagora's operations, products, and services. -* Cite references at the end of paragraphs when specific attribution is necessary, using the format `[doc_n]`. When supported by multiple documents, list references together: `[doc_k], [doc_n]`. -* If the context is insufficient, politely ask the user to provide more details or suggest enriching the database with new documents. -* Offer comprehensive answers, focusing on key points most relevant to Linagora employees. -* Use Linagora-specific terminology and examples when appropriate. -* If asked about topics outside your knowledge base, clearly state that you don't have that information and suggest contacting the appropriate department or person at Linagora. - -Context: {context} - - ------------------------ - - -You are an AI assistant specifically designed for Linagora employees. Your core purpose is to provide insights and answers based on the company's internal data. - -CRITICAL REQUIREMENTS: -1. You MUST base all responses EXCLUSIVELY on the provided Context -2. You MUST use the following citation format: - - Single source: `[doc_n]` at the end of the relevant sentence/paragraph - - Multiple sources: `[doc_k]`, `[doc_n]` -3. Citations are MANDATORY when referencing specific information -4. Only include citations where direct attribution is needed - -RESPONSE GUIDELINES: -- Structure responses with clear headings and bullet points for clarity -- Maintain a conversational, colleague-to-colleague tone -- Make information actionable and easily digestible -- Organize complex information hierarchically - -PROHIBITED: -- Do not include information from outside the provided Context -- Do not speculate beyond the given information - -FORMAT EXAMPLE: -Topic -- Key point from source A `[doc_1]` -- Related insight combining sources B and C `[doc_2]`, `[doc_3]` - -Context: {context} - - ------------------- - - -You are an AI assistant designed to empower Linagora employees with accurate insights based on company internal data. -Your role is to help employees make informed decisions through structured, reliable information. - -# Guidelines -1. Only use information from the context to maintain accuracy and reliability. -2. Structure answers with clear headings and bullet points for easy comprehension when necessary. -3. Include document citations using the following format: - - When a document is used in a paragraph, cite it within the paragraph. - - If a document is used multiple times in a paragraph, cite it only at the end of that paragraph. - - If multiple documents are used in the same paragraph, cite them all by separating them with comma: `[doc_1]`, `[doc_2]`. - -DOT NOT wait until the end to cite all the sources. -Provide concise, actionable responses that foster knowledge-sharing and drive company progress. - -Context: {context} - ------------------------- - -You are an AI assistant designed to empower Linagora employees with accurate insights based on company internal data. -Your role is to help employees make informed decisions through structured, reliable information. - -# Guidelines -1. Only use information from the context to maintain accuracy and reliability. -2. Structure answers with clear headings and bullet points for easy comprehension when necessary. -3. Include document inline citations using the following format: - - When a document is used in a paragraph, cite it within the paragraph. - - If a document is used multiple times in a paragraph, cite it only at the end of that paragraph. - - If multiple documents are used in the same paragraph, cite them all by separating them with comma: `[doc_1]`, `[doc_2]`. - -# Important -Don't wait until the end to cite all the sources, citations should be inline. -Provide concise, actionable responses that foster knowledge-sharing and drive company progress. - -Context: {context} - --------------------- - -You are a conversational AI assistant. Your role is to support Linagora employees with compact, structured, accurate, and reliable answers based exclusively on the provided `Context` (Linagora’s internal data). -To ensure trust, reliability and credibility of your answers, you should: - -1. Ground all your answers strictly on the provided `Context`. Do not invent or infer information beyond the `Context`. If the context is not enough to answer the query, ask the user for further clarification or suggest alternative keywords to improve precision. - -2. You must to add inline citations for transparency and to uphold trust by following this format: - - For single facts: Add the document id (`[doc_x]`) immediately afterward as inline citation - - For multiple facts from one document: add `[doc_x]` once at the end of the paragraph. - - For a fact backed by multiple documents: List the relevant document ids as `[doc_x], [doc_y], [doc_z]` - - Example: - - Question: When was the Linagora Vietnam office established? - - Answer: The Linagora Vietnam office was established in Hanoi in 2012 as Linagora’s first Asia-Pacific location [doc_1]. Initially, it started with a team of five developers, expanding over time into a significant hub for cloud solutions and open-source development [doc_1], [doc_2]. - -3. Structure responses for clarity and readability: - - Use headings and bullet points when they improve readability and coherence. - - Keep responses clear, concise, and to the point. - -Context: {context} \ No newline at end of file diff --git a/prompts/example1/contextualize_prompt_template.txt b/prompts/example1/contextualize_prompt_template.txt deleted file mode 100644 index 277a400b0..000000000 --- a/prompts/example1/contextualize_prompt_template.txt +++ /dev/null @@ -1,24 +0,0 @@ -You optimize user queries for precise, context-aware searches by reformulating them based on conversation context while preserving the original intent, tone of the query. - -### Guidelines: -1. **Objective**: - - Convert the latest user message into a clear, standalone query. Use chat context if it’s a follow-up query; otherwise, make minor corrections only (grammar corrections, etc). - - Do not contextualize expressions of gratitude or irrelevant phrases. -2. **Preservation**: - - Keep the original tone and intent. - - Avoid adding new or unrelated information as this may degrade search performance. -3. **People-Related Queries**: - - Focus on contextualizing; do not answer. -4. **Output**: - - Exclude: Formatting, Quotation marks, Brackets, Markdown, Explanatory text, Additional commentary, etc. - - Provide only the reformulated query as plain text. - ----------------------------- -### Prior Chat history - -{chat_history} ----------------------------- -### User's query - -{query} ----------------------------- \ No newline at end of file diff --git a/prompts/example1/hyde.txt b/prompts/example1/hyde.txt deleted file mode 100644 index 9b17e3f00..000000000 --- a/prompts/example1/hyde.txt +++ /dev/null @@ -1,2 +0,0 @@ -Répondez au question de l'utilisateur, en rédigeant un paragraphe clair, concis et informatif. -Question : {query} diff --git a/prompts/example1/multi_query_prompt_template.txt b/prompts/example1/multi_query_prompt_template.txt deleted file mode 100644 index b3e9638b9..000000000 --- a/prompts/example1/multi_query_prompt_template.txt +++ /dev/null @@ -1,7 +0,0 @@ -Écris {k_queries} versions différentes de la question donnée. -Ces variantes aideront à trouver des documents pertinents dans une base de données vectorielles. -Écris ces questions alternatives sur une même ligne séparées par '[SEP]' sans rien d'autres. - -Example : Question 1?[SEP]Question 2?[SEP]Question 3? - -Question originale : {query} \ No newline at end of file diff --git a/prompts/example1/rag_sys_prompt_template.txt b/prompts/example1/rag_sys_prompt_template.txt deleted file mode 100644 index 020707679..000000000 --- a/prompts/example1/rag_sys_prompt_template.txt +++ /dev/null @@ -1,25 +0,0 @@ -You are a multilingual conversational AI assistant dedicated to empowering Linagora employees by providing structured, accurate, and reliable answers exclusively based on the provided `Context` (the company's internal data). -Make sur to provide well-detailed answers. - -# Response Guidelines -1. Use `Context` Exclusively: - - Always answer in the same language as the user's query. - - Base your answers solely on the provided `Context`. - - If the context is uninformative, ask for clarification or prompt the user to supply more keywords / context to improve accuracy. - - Do no rely on the chat history when answering as it's not a reliable source and leads astray - -2. In-line citation format: - - You must mention documents used in your answer following this format: - - For single facts: Add the document id (`[doc_x]`) immediately afterward as inline citation - - For multiple facts from one document: add `[doc_x]` once at the end of the paragraph. - - For a fact backed by multiple documents: List the relevant document ids as `[doc_x], [doc_y], [doc_z]` - -3. Clarity and Readability: - - Organize your answers using headings, bullet points, or lists where appropriate. - -# Example: - * Question: When was the Linagora Vietnam office established? - * Answer: The Linagora Vietnam office was established in Hanoi in 2012 as Linagora’s first Asia-Pacific location *[doc_1]*. It started with a small team of five developers and has grown into a major hub for cloud solutions and open-source development *[doc_1], [doc_3]*. - -If absolutely primordial and critical to add citations -Context: {context} \ No newline at end of file diff --git a/prompts/example2/contextualizer_pmpt.txt b/prompts/example2/contextualizer_pmpt.txt deleted file mode 100644 index d0d00fe15..000000000 --- a/prompts/example2/contextualizer_pmpt.txt +++ /dev/null @@ -1,30 +0,0 @@ -Convert queries into clear, standalone search queries by incorporating relevant context from previous conversations. - -# Task: -- If the user's query is a follow-up query, reformulate and enrich it with relevant keywords by replacing pronouns with the corresponding nouns -- For standalone queries not related to the previous messages: Apply minimal corrections only (grammar, keyword fixes, etc.) -- For simple thank you messages, there not need in reformulating them - -# Requirements: -- Preserve the original tone and intent and only add necessary context -- Never add or alter information beyond what's needed for contextualization. -- Don't answer to queries, only reformulate them - -## Examples: - -* Example 1: - -user: I'm planning a trip to Italy and I'm interested in exploring historical landmarks and local cuisine. -assistant: Italy offers a wealth of history and culinary delights. -User: What are some must-see sites? -Reformulated Query: What are some must-see historical landmarks and local cuisine spots in Italy? - -* Example 2: - -user: I'm researching methods for brewing coffee at home. -assistant: There are many effective home coffee brewing techniques. -User: do i need a grinder? -Reformulated Query: Do I need a coffee grinder for home coffee brewing? - -# Output: -- Only return the reformulated query as plain text without extra formatting, quotes, brackets, markdown, or commentary. \ No newline at end of file diff --git a/prompts/example2/hyde.txt b/prompts/example2/hyde.txt deleted file mode 100644 index 9695dc0b5..000000000 --- a/prompts/example2/hyde.txt +++ /dev/null @@ -1,2 +0,0 @@ -Répondez au question de l'utilisateur, en rédigeant un paragraphe clair, concis et informatif. -Question : {question} diff --git a/prompts/example2/image_captioning.txt b/prompts/example2/image_captioning.txt deleted file mode 100644 index 28a7a0004..000000000 --- a/prompts/example2/image_captioning.txt +++ /dev/null @@ -1,11 +0,0 @@ -Fournissez une description exhaustive, structurée et précise de cette image ou figure, rédigée intégralement en français. -* S'il y a un tableau: - - convertissez-le en un tableau formaté en Markdown, en respectant scrupuleusement les en-têtes, les lignes et les données et analysez-le succintement. -* Si l'élément est un graphique, un diagramme ou une illustration: - * Interprétez son contenu en détaillant les tendances et les informations clés pertinentes. Mentionnez explicitement toute donnée quantitative ou qualitative pertinente. - -Structure de la réponse attendue: -1. **Description générale** : Résumez l'objet et le contexte en 1-2 phrases. -2. **Analyse détaillée** : - - Pour un `tableau` : Présentez-le en Markdown et ajouter en bas une interprétation succinte. - - Pour un `visuel` ou graphique : Décrivez/Interprétez l'image et les conclusions à en tirer. \ No newline at end of file diff --git a/prompts/example2/multi_query_prompt_template.txt b/prompts/example2/multi_query_prompt_template.txt deleted file mode 100644 index b3e9638b9..000000000 --- a/prompts/example2/multi_query_prompt_template.txt +++ /dev/null @@ -1,7 +0,0 @@ -Écris {k_queries} versions différentes de la question donnée. -Ces variantes aideront à trouver des documents pertinents dans une base de données vectorielles. -Écris ces questions alternatives sur une même ligne séparées par '[SEP]' sans rien d'autres. - -Example : Question 1?[SEP]Question 2?[SEP]Question 3? - -Question originale : {query} \ No newline at end of file diff --git a/prompts/example2/rag_sys_prompt_template copy.txt b/prompts/example2/rag_sys_prompt_template copy.txt deleted file mode 100644 index 769247d61..000000000 --- a/prompts/example2/rag_sys_prompt_template copy.txt +++ /dev/null @@ -1,24 +0,0 @@ -You are a multilingual conversational AI assistant designed to provide structured, accurate, and reliable answers based exclusively on the provided `Context` (retrieved data). -Prioritize clarity and thoroughness in your answers. - -# Rules -1. Context-Exclusive Answers - - Match the user’s query language in your answer. - - Only use information from the provided `Context`. Never infer, speculate, or use external knowledge. - - If the context is insufficient, politely ask the user to refine their query or provide additional keywords. - -2. In-text Citation Rules -In-text citation is critical to improve uses trust on your answers. Each document has its own *source* which will be used in in-text citation when appropriate. - - - Single fact: If a fact is supported by one or multiple documents, cite all relevant sources. - - Example: Cloud infrastructure adoption increased efficiency by 40% [doc_2], [doc_5]. - - Multiple facts from one document: If a paragraph (multiple sentences) is backed by source, cite it at the end of the paragraph. - - Example: The team initially focused on software development. By 2015, they expanded into client-facing solutions. Both efforts prioritized open-source tools [doc_3]. - - Facts from multiple documents: For mixed sourcing, cite each claim individually or group citations logically. - - Example: User retention improved by 25% after interface updates [doc_4]. Further analysis tied this to reduced load times [doc_8] and streamlined workflows [doc_4], [doc_9]. - -3. Formatting for Readability - - Use headings, bullet points, or numbered lists to organize complex answers. - - Avoid jargon and ensure technical terms are explained in context - -Here are the retrived documents: {context} \ No newline at end of file diff --git a/prompts/example2/rag_sys_prompt_template.txt b/prompts/example2/rag_sys_prompt_template.txt deleted file mode 100644 index efbc28076..000000000 --- a/prompts/example2/rag_sys_prompt_template.txt +++ /dev/null @@ -1,14 +0,0 @@ -You are a multilingual conversational AI assistant designed to provide structured, accurate, and reliable answers based exclusively on the provided `Context` (retrieved data). -Prioritize clarity and thoroughness in your answers. - -# Rules -1. Context-Exclusive Answers - - Match the user’s query language in your answer. - - Only use information from the provided `Context`. Never infer, speculate, or use external knowledge. - - If the context is insufficient, politely ask the user to refine their query or provide additional keywords. - -2. Formatting for Readability - - Use headings, bullet points, or numbered lists to organize complex answers. - - Avoid jargon and ensure technical terms are explained in context - -Here are the retrived documents: {context} \ No newline at end of file diff --git a/prompts/example3/chunk_contextualizer_tmpl.txt b/prompts/example3/chunk_contextualizer_tmpl.txt deleted file mode 100644 index cfad8386e..000000000 --- a/prompts/example3/chunk_contextualizer_tmpl.txt +++ /dev/null @@ -1,23 +0,0 @@ -**Objectif** : Rédiger succinctement un texte de contextualisation pour le fragment (issu d'un document) suivant en intégrant les éléments fournis. - -**Consignes de rédaction** : -1. Prendre en compte : - - **Source du document** : Informations sur l'origine et la nature du document (CV, vidéos, propositions commerciales, etc.) à mentionner explicitement pour situer la provenance du fragment - - **Les premières fragments du document d'origine** : Structure/En-tête du document original - - **Fragment précédent** : Contenu adjacent pour assurer la continuité - -2. Contraintes : - - Langue : Utiliser la langue du fragment actuel - - Format de réponse : Texte brut uniquement (pas de titres/markdown) - - Longueur : 1 à 3 phrase(s) selon la pertinence si necessaire - -**Contexte** : -- Source du Document: {source} à prendre en compte dans la contextualisation -- Premières fragments du document d'origine: -{first_chunks} - -- Fragment précédent : -{prev_chunk} - -**Fragment à contextualiser** : -{chunk} \ No newline at end of file diff --git a/prompts/example3/contextualizer_pmpt.txt b/prompts/example3/contextualizer_pmpt.txt deleted file mode 100644 index d6607273f..000000000 --- a/prompts/example3/contextualizer_pmpt.txt +++ /dev/null @@ -1,20 +0,0 @@ -A partir d'un historique de chat, reformule le dernier message du user en une requête de recherche autonomes en intégrant le contexte pertinent des conversations précédentes. - -# Tâche : -- Pour les questions de suivi : Reformuler en remplaçant les pronoms par les noms correspondants et ajouter les mots-clés pertinents -- Pour les questions indépendantes : Appliquer uniquement des corrections minimales (grammaire, mots-clés) -- Pour les simples messages de remerciement : Aucune reformulation nécessaire - -# Exigences : -- Conserver le ton et l'intention d'origine -- Ne pas ajouter d'informations au-delà du contexte nécessaire -- Ne pas répondre aux questions, seulement les reformuler -- Répondre dans la langue du dernier message de l'utilisateur - -# Exemples : -- User : Je prévois un voyage en Italie et je m'intéresse aux monuments historiques et à la cuisine locale. -- Assistant : L'Italie offre une richesse d'histoire et de délices culinaires. -- User : Quels sont les sites incontournables ? -Requête reformulée : Quels sont les monuments historiques et restaurants de cuisine locale incontournables en Italie ? - -# Format de réponse: Retourner uniquement la requête reformulée en texte brut, sans formatage supplémentaire. \ No newline at end of file diff --git a/prompts/example3/hyde.txt b/prompts/example3/hyde.txt deleted file mode 100644 index 9695dc0b5..000000000 --- a/prompts/example3/hyde.txt +++ /dev/null @@ -1,2 +0,0 @@ -Répondez au question de l'utilisateur, en rédigeant un paragraphe clair, concis et informatif. -Question : {question} diff --git a/prompts/example3/image_captioning.txt b/prompts/example3/image_captioning.txt deleted file mode 100644 index cadd57293..000000000 --- a/prompts/example3/image_captioning.txt +++ /dev/null @@ -1,11 +0,0 @@ -Tu es un expert chargé d’analyser des images. Ta mission est de produire une description factuelle, structurée et complète dans la même langue que celle utilisée dans l’image. - -1. Pour les contenus non informatifs comme les logos, icônes, émojis, objets isolés, photos: -* Fournir une courte description sans entrer dans les détails liés aux couleurs, thèmes, etc. - * Exemple de description : `Logo de Nike`, `Photo d’un chat`, `Icône de dossier`, etc. - -2. Pour les images complexes et informatifs : tableaux, graphiques, diagrammes, interfaces, schémas, etc. - * Reproduire les données visibles en **Markdown** et proposer une description précise et interprétation complète de l'image. - -3. Images contenant uniquement du texte -* Transcrire le texte dans son intégralité, sans ajouter d'informations supplémentaires. \ No newline at end of file diff --git a/prompts/example3/multi_query_prompt_template.txt b/prompts/example3/multi_query_prompt_template.txt deleted file mode 100644 index b3e9638b9..000000000 --- a/prompts/example3/multi_query_prompt_template.txt +++ /dev/null @@ -1,7 +0,0 @@ -Écris {k_queries} versions différentes de la question donnée. -Ces variantes aideront à trouver des documents pertinents dans une base de données vectorielles. -Écris ces questions alternatives sur une même ligne séparées par '[SEP]' sans rien d'autres. - -Example : Question 1?[SEP]Question 2?[SEP]Question 3? - -Question originale : {query} \ No newline at end of file diff --git a/prompts/example3/rag_sys_prompt_template.txt b/prompts/example3/rag_sys_prompt_template.txt deleted file mode 100644 index 10bfa46b8..000000000 --- a/prompts/example3/rag_sys_prompt_template.txt +++ /dev/null @@ -1,14 +0,0 @@ -Vous êtes un assistant conversationnel IA multilingue conçu pour fournir des réponses structurées, précises et fiables en se basant exclusivement sur le `Contexte` fourni (données récupérées). -Priorisez la clarté et l’exhaustivité dans vos réponses. - -# Règles - -1. Réponses basées exclusivement sur le contexte - * Utilisez uniquement les informations présentes dans le `Contexte` fourni. N’inférez jamais, ne faites pas de suppositions et n’utilisez aucune connaissance externe. - * Si le contexte est insuffisant, invitez poliment l’utilisateur à reformuler sa requête ou à fournir des mots-clés supplémentaires. - * Répondez toujours dans la langue de la requête de l’utilisateur. - -2. Mise en forme pour une meilleure lisibilité - * Utilisez des titres, des listes à puces ou numérotées, tes tableaux pour structurer les réponses complexes. - -Voici les documents récupérés : `{context}` \ No newline at end of file From c9da430cc96b49dccb35af4f75e7d1d661447955 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Fri, 17 Oct 2025 10:21:31 +0000 Subject: [PATCH 110/126] refacto prompts --- .env.example | 2 +- .hydra_config/config.yaml | 16 +++++--- .hydra_config/retriever/hyde.yaml | 3 +- .hydra_config/retriever/multiQuery.yaml | 3 +- charts/openrag-stack/values.yaml | 3 +- docs/assets/env_linux_gpu.env | 2 +- docs/assets/env_ollama_cpu.env | 2 +- openrag/components/indexer/chunker/chunker.py | 6 +-- openrag/components/indexer/loaders/base.py | 10 ++--- openrag/components/pipeline.py | 19 ++-------- openrag/components/prompts/__init__.py | 1 + openrag/components/prompts/prompts.py | 38 +++++++++++++++++++ openrag/components/retriever.py | 15 ++------ openrag/components/utils.py | 9 +---- .../chunk_contextualizer_tmpl.txt | 2 +- prompts/{example3_en => example1}/hyde.txt | 0 prompts/example1/image_captioning_tmpl.txt | 24 ++++++++++++ .../multi_query_pmpt_tmpl.txt} | 0 .../query_contextualizer_tmpl.txt} | 3 +- .../sys_prompt_tmpl.txt} | 8 ++-- prompts/example3_en/image_captioning.txt | 11 ------ 21 files changed, 99 insertions(+), 78 deletions(-) create mode 100644 openrag/components/prompts/__init__.py create mode 100644 openrag/components/prompts/prompts.py rename prompts/{example3_en => example1}/chunk_contextualizer_tmpl.txt (85%) rename prompts/{example3_en => example1}/hyde.txt (100%) create mode 100644 prompts/example1/image_captioning_tmpl.txt rename prompts/{example3_en/multi_query_prompt_template.txt => example1/multi_query_pmpt_tmpl.txt} (100%) rename prompts/{example3_en/contextualizer_pmpt.txt => example1/query_contextualizer_tmpl.txt} (90%) rename prompts/{example3_en/rag_sys_prompt_template.txt => example1/sys_prompt_tmpl.txt} (60%) delete mode 100644 prompts/example3_en/image_captioning.txt diff --git a/.env.example b/.env.example index 5ec1a776a..6ea5b0665 100644 --- a/.env.example +++ b/.env.example @@ -30,7 +30,7 @@ RERANKER_ENABLED=true RERANKER_MODEL=Alibaba-NLP/gte-multilingual-reranker-base # or jinaai/jina-reranker-v2-base-multilingual # Prompts -PROMPTS_DIR=../prompts/example3_en # you can change it to ../prompts/example3 for french prompts +PROMPTS_DIR=../prompts/example1 # Ray RAY_DEDUP_LOGS=0 # turns off ray log deduplication that appear across multiple processes diff --git a/.hydra_config/config.yaml b/.hydra_config/config.yaml index 70b33de17..a47fc6366 100644 --- a/.hydra_config/config.yaml +++ b/.hydra_config/config.yaml @@ -60,16 +60,20 @@ verbose: level: DEBUG paths: - prompts_dir: ${oc.env:PROMPTS_DIR, ../prompts/example3} + prompts_dir: ${oc.env:PROMPTS_DIR, ../prompts/example1} data_dir: ${oc.env:DATA_DIR, ../data} db_dir: ${oc.env:DB_DIR, /app/db} log_dir: ${oc.env:LOG_DIR, /app/logs} -prompt: - rag_sys_pmpt: rag_sys_prompt_template.txt - contextualizer_pmpt: contextualizer_pmpt.txt - chunk_contextualizer_pmpt: chunk_contextualizer_tmpl.txt - image_describer: image_captioning.txt +prompts: + sys_prompt: sys_prompt_tmpl.txt + query_contextualizer: query_contextualizer_tmpl.txt + chunk_contextualizer: chunk_contextualizer_tmpl.txt + image_describer: image_captioning_tmpl.txt + + # query templates for different retriever types + hyde: hyde.txt + multi_query: multi_query_pmpt_tmpl.txt loader: image_captioning: true diff --git a/.hydra_config/retriever/hyde.yaml b/.hydra_config/retriever/hyde.yaml index 66709dd73..6a246638d 100644 --- a/.hydra_config/retriever/hyde.yaml +++ b/.hydra_config/retriever/hyde.yaml @@ -3,5 +3,4 @@ defaults: type: hyde # Extra params -combine: False -prompt_tmpl: 'hyde.txt' \ No newline at end of file +combine: False \ No newline at end of file diff --git a/.hydra_config/retriever/multiQuery.yaml b/.hydra_config/retriever/multiQuery.yaml index 5cd709b72..bc8ab73cf 100644 --- a/.hydra_config/retriever/multiQuery.yaml +++ b/.hydra_config/retriever/multiQuery.yaml @@ -2,5 +2,4 @@ defaults: - base type: multiQuery -k_queries: 3 -prompt_tmpl: multi_query_prompt_template.txt +k_queries: 3 \ No newline at end of file diff --git a/charts/openrag-stack/values.yaml b/charts/openrag-stack/values.yaml index 486d86d93..ab14d05da 100644 --- a/charts/openrag-stack/values.yaml +++ b/charts/openrag-stack/values.yaml @@ -191,8 +191,7 @@ env: RERANKER_MODEL_TYPE: "infinity" # Prompts - PROMPTS_DIR: "../prompts/example3" - COLBERT_LOAD_TORCH_EXTENSION_VERBOSE: "True" + PROMPTS_DIR: "../prompts/example1" # Loaders PDFLoader: "MarkerLoader" diff --git a/docs/assets/env_linux_gpu.env b/docs/assets/env_linux_gpu.env index 799662f4d..33ff43a92 100644 --- a/docs/assets/env_linux_gpu.env +++ b/docs/assets/env_linux_gpu.env @@ -30,7 +30,7 @@ RERANKER_ENABLED=true RERANKER_MODEL=Alibaba-NLP/gte-multilingual-reranker-base # or jinaai/jina-reranker-v2-base-multilingual # Prompts -PROMPTS_DIR=../prompts/example3_en # you can change it to ../prompts/example3 for french prompts +PROMPTS_DIR=../prompts/example1 # Ray RAY_DEDUP_LOGS=0 # turns off ray log deduplication that appear across multiple processes diff --git a/docs/assets/env_ollama_cpu.env b/docs/assets/env_ollama_cpu.env index b19d8a17a..67f84be73 100644 --- a/docs/assets/env_ollama_cpu.env +++ b/docs/assets/env_ollama_cpu.env @@ -41,7 +41,7 @@ RERANKER_TOP_K=5 RERANKER_BASE_URL= # Prompts -PROMPTS_DIR=../prompts/example3 +PROMPTS_DIR=../prompts/example1 # Loaders PDFLoader=MarkerLoader diff --git a/openrag/components/indexer/chunker/chunker.py b/openrag/components/indexer/chunker/chunker.py index aab5a8ae0..601e8fbe9 100644 --- a/openrag/components/indexer/chunker/chunker.py +++ b/openrag/components/indexer/chunker/chunker.py @@ -3,7 +3,8 @@ from pathlib import Path from typing import Optional -from components.utils import get_llm_semaphore, load_config, load_sys_template +from components.prompts import CHUNK_CONTEXTUALIZER +from components.utils import get_llm_semaphore, load_config from langchain_core.documents.base import Document from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate @@ -20,9 +21,6 @@ logger = get_logger() config = load_config() -prompt_paths = Path(config.paths.get("prompts_dir")) -chunk_contextualizer_pmpt = config.prompt.get("chunk_contextualizer_pmpt") -CHUNK_CONTEXTUALIZER = load_sys_template(prompt_paths / chunk_contextualizer_pmpt) class BaseChunker(ABC): diff --git a/openrag/components/indexer/loaders/base.py b/openrag/components/indexer/loaders/base.py index f2c284f25..8f8a931e2 100644 --- a/openrag/components/indexer/loaders/base.py +++ b/openrag/components/indexer/loaders/base.py @@ -5,7 +5,8 @@ from pathlib import Path from typing import Dict, Optional, Union -from components.utils import get_vlm_semaphore, load_config, load_sys_template +from components.prompts import IMAGE_DESCRIBER +from components.utils import get_vlm_semaphore, load_config from langchain_core.messages import HumanMessage from langchain_openai import ChatOpenAI from PIL import Image @@ -14,11 +15,6 @@ logger = get_logger() config = load_config() -# Load the image description prompt from the configuration -prompts_dir = Path(config.paths.prompts_dir) -img_desc_prompt_path = prompts_dir / config.prompt["image_describer"] -IMAGE_DESCRIPTION_PROMPT = load_sys_template(img_desc_prompt_path) - class BaseLoader(ABC): def __init__(self, **kwargs) -> None: @@ -140,7 +136,7 @@ async def get_image_description( "type": "image_url", "image_url": {"url": image_url}, }, - {"type": "text", "text": IMAGE_DESCRIPTION_PROMPT}, + {"type": "text", "text": IMAGE_DESCRIBER}, ] ) diff --git a/openrag/components/pipeline.py b/openrag/components/pipeline.py index a2648c5f4..24c20f6f0 100644 --- a/openrag/components/pipeline.py +++ b/openrag/components/pipeline.py @@ -1,7 +1,7 @@ import copy from enum import Enum -from pathlib import Path +from components.prompts import QUERY_CONTEXTUALIZER_PROMPT, SYS_PROMPT_TMPLT from langchain_core.documents.base import Document from openai import AsyncOpenAI from utils.logger import get_logger @@ -10,7 +10,7 @@ from .map_reduce import RAGMapReduce from .reranker import Reranker from .retriever import ABCRetriever, RetrieverFactory -from .utils import format_context, load_sys_template +from .utils import format_context logger = get_logger() @@ -70,17 +70,6 @@ def __init__(self, config, logger=None) -> None: # retriever pipeline self.retriever_pipeline = RetrieverPipeline(config=config, logger=self.logger) - self.prompts_dir = Path(config.paths.prompts_dir) - # contextualizer prompt - self.contextualizer_pmpt = load_sys_template( - self.prompts_dir / config.prompt["contextualizer_pmpt"] - ) - - # rag sys prompt - self.rag_sys_prompt: str = load_sys_template( - self.prompts_dir / config.prompt["rag_sys_pmpt"] - ) - self.rag_mode = config.rag["mode"] self.chat_history_depth = config.rag["chat_history_depth"] @@ -117,7 +106,7 @@ async def generate_query(self, messages: list[dict]) -> str: response = await self.contextualizer.chat.completions.create( model=self.config.vlm["model"], messages=[ - {"role": "system", "content": self.contextualizer_pmpt}, + {"role": "system", "content": QUERY_CONTEXTUALIZER_PROMPT}, { "role": "user", "content": f"Given the following chat, generate a query. \n{chat_history}\n", @@ -171,7 +160,7 @@ async def _prepare_for_chat_completion(self, partition: list[str], payload: dict 0, { "role": "system", - "content": self.rag_sys_prompt.format(context=context), + "content": SYS_PROMPT_TMPLT.format(context=context), }, ) payload["messages"] = messages diff --git a/openrag/components/prompts/__init__.py b/openrag/components/prompts/__init__.py new file mode 100644 index 000000000..25d4532cb --- /dev/null +++ b/openrag/components/prompts/__init__.py @@ -0,0 +1 @@ +from .prompts import * diff --git a/openrag/components/prompts/prompts.py b/openrag/components/prompts/prompts.py new file mode 100644 index 000000000..1c754073e --- /dev/null +++ b/openrag/components/prompts/prompts.py @@ -0,0 +1,38 @@ +from pathlib import Path + +from config import load_config + +config = load_config() + +prompts_dir: Path = config.paths.prompts_dir +prompt_mapping: dict = config.prompts + + +def load_prompt( + prompt_name: str, + prompts_dir: Path = prompts_dir, + prompt_mapping: dict = prompt_mapping, +) -> tuple[str, str]: + file_name = prompt_mapping.get(prompt_name, None) + if not file_name: + raise ValueError(f"No associated file name found for prompt: `{prompt_name}`") + + file_path = prompts_dir / file_name + + if not file_path.exists(): + raise FileNotFoundError(f"Prompt file not found: `{file_path}`") + + with open(file_path, mode="r") as f: + sys_msg = f.read() + return sys_msg + + +# Load prompts +SYS_PROMPT_TMPLT = load_prompt("sys_prompt") +QUERY_CONTEXTUALIZER_PROMPT = load_prompt("query_contextualizer") +CHUNK_CONTEXTUALIZER = load_prompt("chunk_contextualizer") +IMAGE_DESCRIBER = load_prompt("image_describer") + +# Retrievers prompts +HYDE_PROMPT = load_prompt("hyde") +MULTI_QUERY_PROMPT = load_prompt("multi_query") diff --git a/openrag/components/retriever.py b/openrag/components/retriever.py index ca3edc939..9393fbbfb 100644 --- a/openrag/components/retriever.py +++ b/openrag/components/retriever.py @@ -2,6 +2,7 @@ from abc import ABC, abstractmethod from pathlib import Path +from components.prompts import HYDE_PROMPT, MULTI_QUERY_PROMPT from langchain_core.documents.base import Document from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate @@ -9,8 +10,6 @@ from omegaconf import OmegaConf from utils.dependencies import get_vectordb -from .utils import load_sys_template - CRITERIAS = ["similarity"] @@ -114,12 +113,8 @@ def __init__( raise TypeError(f"`k_queries` should be of type {int}") self.k_queries = k_queries - pmpt_tmpl_path = extra_args.get("prompts_dir") / extra_args.get( - "prompt_tmpl" - ) - multi_query_tmpl = load_sys_template(pmpt_tmpl_path) prompt: ChatPromptTemplate = ChatPromptTemplate.from_template( - multi_query_tmpl + MULTI_QUERY_PROMPT ) self.generate_queries = ( prompt | llm | StrOutputParser() | (lambda x: x.split("[SEP]")) @@ -159,11 +154,7 @@ def __init__( if not isinstance(llm, ChatOpenAI): raise TypeError(f"`llm` should be of type {ChatOpenAI}") - pmpt_tmpl_path = extra_args.get("prompts_dir") / extra_args.get( - "prompt_tmpl" - ) - hyde_template = load_sys_template(pmpt_tmpl_path) - prompt: ChatPromptTemplate = ChatPromptTemplate.from_template(hyde_template) + prompt: ChatPromptTemplate = ChatPromptTemplate.from_template(HYDE_PROMPT) self.generate_hyde = prompt | llm | StrOutputParser() self.combine = extra_args.get("combine", False) diff --git a/openrag/components/utils.py b/openrag/components/utils.py index 9dae288d2..35510e197 100644 --- a/openrag/components/utils.py +++ b/openrag/components/utils.py @@ -2,7 +2,6 @@ import atexit import threading from abc import ABCMeta -from pathlib import Path import ray from config import load_config @@ -119,12 +118,6 @@ def cleanup(self): ray.get(self._actor.cleanup.remote()) -def load_sys_template(file_path: Path) -> tuple[str, str]: - with open(file_path, mode="r") as f: - sys_msg = f.read() - return sys_msg - - def format_context(docs: list[Document]) -> str: if not docs: return "No document found from the database" @@ -158,4 +151,4 @@ def get_vlm_semaphore() -> DistributedSemaphore: get_llm_semaphore() -get_vlm_semaphore() +get_vlm_semaphore() \ No newline at end of file diff --git a/prompts/example3_en/chunk_contextualizer_tmpl.txt b/prompts/example1/chunk_contextualizer_tmpl.txt similarity index 85% rename from prompts/example3_en/chunk_contextualizer_tmpl.txt rename to prompts/example1/chunk_contextualizer_tmpl.txt index ea3846f0f..8d2022b3e 100644 --- a/prompts/example3_en/chunk_contextualizer_tmpl.txt +++ b/prompts/example1/chunk_contextualizer_tmpl.txt @@ -1,4 +1,4 @@ -**Objective**: Succinctly write a contextualization text for the following chunk (from a document) by integrating the provided elements. +Succinctly write a contextualization text for the following chunk (from a document) by integrating the provided elements. **Writing Instructions**: 1. Take into account: diff --git a/prompts/example3_en/hyde.txt b/prompts/example1/hyde.txt similarity index 100% rename from prompts/example3_en/hyde.txt rename to prompts/example1/hyde.txt diff --git a/prompts/example1/image_captioning_tmpl.txt b/prompts/example1/image_captioning_tmpl.txt new file mode 100644 index 000000000..023d19be7 --- /dev/null +++ b/prompts/example1/image_captioning_tmpl.txt @@ -0,0 +1,24 @@ +You are an expert tasked with describing images. +Your mission is to produce a factual, structured and complete description in markdown format in the same language as that used in the image. + +1. Non-informative content such as logos, icons, emojis, isolated objects, photos: + * Provide a short description without going into details related to colors, themes, etc. + * Example descriptions: `Nike logo`, `Photo of a cat`, `Folder icon`, etc. + +2. Text Content + - Transcribe the text in its entirety, without adding additional information. + +3. Tables + - Use correct Markdown table syntax to reproduce tables from the content. + - Ensure alignment, readability, and preservation of all data while keeping the table structure intact. + +4. For advanced visuals: charts, graphs, diagrams, schemas, or other data visualizations + a. Firstly do a markdown conversion: + - convert visible data as markdown tables whenever possible: numbers should be included accurately. + - Include the figure’s title if present. + + b. Secondly do a figure interpretation in the same language as the document’s: + - Provide a brief description of the visual’s content, context, and purpose. + - Interpret the figure and mention any visible trends, patterns, or key insights (include numbers) and using the legends. + +The output should be in the same language as the content of the image \ No newline at end of file diff --git a/prompts/example3_en/multi_query_prompt_template.txt b/prompts/example1/multi_query_pmpt_tmpl.txt similarity index 100% rename from prompts/example3_en/multi_query_prompt_template.txt rename to prompts/example1/multi_query_pmpt_tmpl.txt diff --git a/prompts/example3_en/contextualizer_pmpt.txt b/prompts/example1/query_contextualizer_tmpl.txt similarity index 90% rename from prompts/example3_en/contextualizer_pmpt.txt rename to prompts/example1/query_contextualizer_tmpl.txt index d0ce72045..e316a7db0 100644 --- a/prompts/example3_en/contextualizer_pmpt.txt +++ b/prompts/example1/query_contextualizer_tmpl.txt @@ -17,4 +17,5 @@ From a chat history, reformulate the user's last message into an autonomous sear - User: What are the must-see sites? Reformulated query: What are the must-see historical monuments and local cuisine restaurants in Italy? -# Response format: Return only the reformulated query in plain text, without additional formatting. \ No newline at end of file +# Response format: +Return only the reformulated query in plain text, without additional formatting. \ No newline at end of file diff --git a/prompts/example3_en/rag_sys_prompt_template.txt b/prompts/example1/sys_prompt_tmpl.txt similarity index 60% rename from prompts/example3_en/rag_sys_prompt_template.txt rename to prompts/example1/sys_prompt_tmpl.txt index f1ed4a170..5bf4d8df5 100644 --- a/prompts/example3_en/rag_sys_prompt_template.txt +++ b/prompts/example1/sys_prompt_tmpl.txt @@ -1,14 +1,14 @@ -You are a multilingual conversational AI assistant designed to provide structured, accurate and reliable responses based exclusively on the provided `Context` (retrieved data). +You are an AI assistant designed to provide structured, accurate and reliable answers based exclusively on the provided `Context` (retrieved data). Prioritize clarity and comprehensiveness in your responses. # Rules -1. Responses based exclusively on context +1. Answer based exclusively on the provided context * Use only information present in the provided `Context`. Never infer, make assumptions, or use any external knowledge. * If the context is insufficient, politely invite the user to reformulate their query or provide additional keywords. - * Always respond in the language of the user's query. + * Always answer in the language of the user's query language. 2. Formatting for better readability - * Use headings, bullet points or numbered lists, and tables to structure complex responses. + * Use headings, bullet points or numbered lists, and tables to structure complex answers. Here are the retrieved documents: `{context}` \ No newline at end of file diff --git a/prompts/example3_en/image_captioning.txt b/prompts/example3_en/image_captioning.txt deleted file mode 100644 index 1862b6a75..000000000 --- a/prompts/example3_en/image_captioning.txt +++ /dev/null @@ -1,11 +0,0 @@ -You are an expert tasked with analyzing images. Your mission is to produce a factual, structured and complete description in the same language as that used in the image. - -1. For non-informative content such as logos, icons, emojis, isolated objects, photos: -* Provide a short description without going into details related to colors, themes, etc. - * Example descriptions: `Nike logo`, `Photo of a cat`, `Folder icon`, etc. - -2. For complex and informative images: tables, charts, diagrams, interfaces, schemas, etc. - * Reproduce the visible data in **Markdown** and provide a precise description and complete interpretation of the image. - -3. Images containing only text -* Transcribe the text in its entirety, without adding additional information. \ No newline at end of file From a869826f623156669d64434fbd4904bfb477a199 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Fri, 17 Oct 2025 14:46:24 +0000 Subject: [PATCH 111/126] refacto retriever --- .hydra_config/config.yaml | 2 +- .hydra_config/retriever/base.yaml | 1 - openrag/components/pipeline.py | 24 ++--- openrag/components/retriever.py | 155 ++++++++++-------------------- openrag/routers/openai.py | 2 +- 5 files changed, 63 insertions(+), 121 deletions(-) diff --git a/.hydra_config/config.yaml b/.hydra_config/config.yaml index a47fc6366..75b34ed11 100644 --- a/.hydra_config/config.yaml +++ b/.hydra_config/config.yaml @@ -1,7 +1,7 @@ defaults: - _self_ # TODO: Silences the hydra version migration warning (PLEASE REVIEW FOR BREAKING CHANGES) - chunker: recursive_splitter # markdown_splitter # semantic_splitter # - - retriever: single + - retriever: ${oc.env:RETRIEVER_TYPE, single} # single # multiQuery # hyde - rag: ChatBotRag llm_params: &llm_params diff --git a/.hydra_config/retriever/base.yaml b/.hydra_config/retriever/base.yaml index d3e821320..a8e43c6af 100644 --- a/.hydra_config/retriever/base.yaml +++ b/.hydra_config/retriever/base.yaml @@ -1,4 +1,3 @@ type: '' -criteria: similarity top_k: ${oc.decode:${oc.env:RETRIEVER_TOP_K, 50}} # Number of documents to return before reranking similarity_threshold: 0.6 \ No newline at end of file diff --git a/openrag/components/pipeline.py b/openrag/components/pipeline.py index 24c20f6f0..f269e2feb 100644 --- a/openrag/components/pipeline.py +++ b/openrag/components/pipeline.py @@ -21,26 +21,23 @@ class RAGMODE(Enum): class RetrieverPipeline: - def __init__(self, config, logger=None) -> None: + def __init__(self, config) -> None: self.config = config - self.logger = logger # retriever - self.retriever: ABCRetriever = RetrieverFactory.create_retriever( - config=config, logger=self.logger - ) + self.retriever: ABCRetriever = RetrieverFactory.create_retriever(config=config) # reranker self.reranker = None self.reranker_enabled = config.reranker["enable"] - self.logger.debug("Reranker", enabled=self.reranker_enabled) + logger.debug("Reranker", enabled=self.reranker_enabled) self.reranker_top_k = int(config.reranker["top_k"]) # map reduce self.map_reduce_n_docs = self.config.map_reduce["map_reduce_n_docs"] if self.reranker_enabled: - self.reranker = Reranker(self.logger, config) + self.reranker = Reranker(logger, config) async def retrieve_docs( self, partition: list[str], query: str, use_map_reduce: bool = False @@ -63,20 +60,19 @@ async def retrieve_docs( class RagPipeline: - def __init__(self, config, logger=None) -> None: + def __init__(self, config) -> None: self.config = config - self.logger = logger # retriever pipeline - self.retriever_pipeline = RetrieverPipeline(config=config, logger=self.logger) + self.retriever_pipeline = RetrieverPipeline(config=config) self.rag_mode = config.rag["mode"] self.chat_history_depth = config.rag["chat_history_depth"] - self.llm_client = LLM(config.llm, self.logger) - self.vlm_client = LLM(config.vlm, self.logger) + self.llm_client = LLM(config.llm, logger) + self.vlm_client = LLM(config.vlm, logger) self.contextualizer = AsyncOpenAI( - base_url=config.vlm["base_url"], api_key=config.vlm["api_key"] + base_url=config.llm["base_url"], api_key=config.llm["api_key"] ) self.max_contextualized_query_len = config.rag["max_contextualized_query_len"] @@ -104,7 +100,7 @@ async def generate_query(self, messages: list[dict]) -> str: } response = await self.contextualizer.chat.completions.create( - model=self.config.vlm["model"], + model=self.config.llm["model"], messages=[ {"role": "system", "content": QUERY_CONTEXTUALIZER_PROMPT}, { diff --git a/openrag/components/retriever.py b/openrag/components/retriever.py index 9393fbbfb..1b675e505 100644 --- a/openrag/components/retriever.py +++ b/openrag/components/retriever.py @@ -1,6 +1,5 @@ # Import necessary modules and classes from abc import ABC, abstractmethod -from pathlib import Path from components.prompts import HYDE_PROMPT, MULTI_QUERY_PROMPT from langchain_core.documents.base import Document @@ -9,8 +8,9 @@ from langchain_openai import ChatOpenAI from omegaconf import OmegaConf from utils.dependencies import get_vectordb +from utils.logger import get_logger -CRITERIAS = ["similarity"] +logger = get_logger() class ABCRetriever(ABC): @@ -19,10 +19,9 @@ class ABCRetriever(ABC): @abstractmethod def __init__( self, - criteria: str = "similarity", top_k: int = 6, similarity_threshold: int = 0.95, - **extra_args, + **kwargs, ) -> None: pass @@ -33,26 +32,10 @@ async def retrieve(self, partition: list[str], query: str) -> list[Document]: # Define the Simple Retriever class class BaseRetriever(ABCRetriever): - def __init__( - self, - criteria: str = "similarity", - top_k: int = 6, - similarity_threshold: int = 0.95, - logger=None, - **extra_args, - ) -> None: - """Constructs all the necessary attributes for the Retriever object. - - Args: - criteria (str, optional): Retrieval criteria. Defaults to "similarity". - top_k (int, optional): top_k most similar documents to retrieve. Defaults to 6. - """ + def __init__(self, top_k=6, similarity_threshold=0.95, **kwargs): + super().__init__(top_k, similarity_threshold, **kwargs) self.top_k = top_k self.similarity_threshold = similarity_threshold - if criteria not in CRITERIAS: - ValueError(f"Invalid type. Choose from {CRITERIAS}") - self.criteria = criteria - self.logger = logger async def retrieve( self, @@ -70,64 +53,40 @@ async def retrieve( class SingleRetreiver(BaseRetriever): - def __init__( - self, - criteria: str = "similarity", - top_k: int = 6, - similarity_threshold: int = 0.95, - logger=None, - **extra_args, - ) -> None: - super().__init__(criteria, top_k, similarity_threshold, logger, **extra_args) + pass class MultiQueryRetriever(BaseRetriever): def __init__( self, - criteria: str = "similarity", - top_k: int = 6, - similarity_threshold: int = 0.95, - logger=None, - **extra_args, - ) -> None: - """ - The MultiQueryRetriever class is a subclass of the Retriever class that retrieves relevant documents based on multiple queries. - Given a query, multiple similar are generated with an llm. retrieval is done with each one them and finally a subset is chosen. - - Attributes - ---------- - Args: - criteria (str, optional): Retrieval criteria. Defaults to "similarity". - top_k (int, optional): top_k most similar documents to retrieve. Defaults to 6. - extra_args (dict): contains additionals arguments for this type of retriever. - """ - super().__init__(criteria, top_k, similarity_threshold, logger, **extra_args) - - try: - llm: ChatOpenAI = extra_args.get("llm") - if not isinstance(llm, ChatOpenAI): - raise TypeError(f"`llm` should be of type {ChatOpenAI}") - - k_queries = extra_args.get("k_queries") - if not isinstance(k_queries, int): - raise TypeError(f"`k_queries` should be of type {int}") - self.k_queries = k_queries - - prompt: ChatPromptTemplate = ChatPromptTemplate.from_template( - MULTI_QUERY_PROMPT - ) - self.generate_queries = ( - prompt | llm | StrOutputParser() | (lambda x: x.split("[SEP]")) - ) - - except Exception as e: - raise KeyError(f"An Error has occured: {e}") + top_k=6, + similarity_threshold=0.95, + k_queries: int = 3, + llm: ChatOpenAI = None, + **kwargs, + ): + super().__init__(top_k, similarity_threshold, **kwargs) + self.k_queries = k_queries + self.llm = llm + + if llm is None: + raise ValueError("llm must be provided for MultiQueryRetriever") + + prompt: ChatPromptTemplate = ChatPromptTemplate.from_template( + MULTI_QUERY_PROMPT + ) + self.generate_queries = ( + prompt | llm | StrOutputParser() | (lambda x: x.split("[SEP]")) + ) async def retrieve(self, partition: list[str], query: str) -> list[Document]: db = get_vectordb() - # generate different perspectives of the query + logger.debug("Generating multiple queries", k_queries=self.k_queries) generated_queries = await self.generate_queries.ainvoke( - {"query": query, "k_queries": self.k_queries} + { + "query": query, + "k_queries": self.k_queries, + } ) chunks = await db.async_multi_query_search.remote( queries=generated_queries, @@ -141,37 +100,28 @@ async def retrieve(self, partition: list[str], query: str) -> list[Document]: class HyDeRetriever(BaseRetriever): def __init__( self, - criteria: str = "similarity", - top_k: int = 6, - similarity_threshold: int = 0.95, - logger=None, - **extra_args, - ) -> None: - super().__init__(criteria, top_k, similarity_threshold, logger, **extra_args) - - try: - llm = extra_args.get("llm") - if not isinstance(llm, ChatOpenAI): - raise TypeError(f"`llm` should be of type {ChatOpenAI}") - - prompt: ChatPromptTemplate = ChatPromptTemplate.from_template(HYDE_PROMPT) - - self.generate_hyde = prompt | llm | StrOutputParser() - self.combine = extra_args.get("combine", False) - - except Exception as e: - raise ArithmeticError(f"An error occured: {e}") + top_k=6, + similarity_threshold=0.95, + llm: ChatOpenAI = None, + combine: bool = False, + **kwargs, + ): + super().__init__(top_k, similarity_threshold, **kwargs) + if llm is None: + raise ValueError("llm must be provided for HyDeRetriever") + + self.combine = combine + self.llm = llm + + prompt: ChatPromptTemplate = ChatPromptTemplate.from_template(HYDE_PROMPT) + self.hyde_generator = prompt | llm | StrOutputParser() async def get_hyde(self, query: str): - self.logger.debug("Generating HyDe Document") - hyde_document = await self.generate_hyde.ainvoke({"query": query}) + logger.debug("Generating HyDe Document") + hyde_document = await self.hyde_generator.ainvoke({"query": query}) return hyde_document - async def retrieve( - self, - partition: list[str], - query: str, - ) -> list[Document]: + async def retrieve(self, partition: list[str], query: str) -> list[Document]: db = get_vectordb() hyde = await self.get_hyde(query) queries = [hyde] @@ -194,17 +144,14 @@ class RetrieverFactory: } @classmethod - def create_retriever(cls, config: OmegaConf, logger) -> ABCRetriever: + def create_retriever(cls, config: OmegaConf) -> ABCRetriever: retreiverConfig = OmegaConf.to_container(config.retriever, resolve=True) - retreiverConfig["logger"] = logger - retreiverConfig["prompts_dir"] = Path(config.paths["prompts_dir"]) retriever_type = retreiverConfig.pop("type") retriever_cls = RetrieverFactory.RETRIEVERS.get(retriever_type, None) + if retriever_type is None: raise ValueError(f"Unknown retriever type: {retriever_type}") - if retriever_type in ["hyde", "multiQuery"]: - retreiverConfig["llm"] = ChatOpenAI(**config.vlm) - + retreiverConfig["llm"] = ChatOpenAI(**config.llm) return retriever_cls(**retreiverConfig) diff --git a/openrag/routers/openai.py b/openrag/routers/openai.py index 3e35dfd80..bdeaa9a23 100644 --- a/openrag/routers/openai.py +++ b/openrag/routers/openai.py @@ -26,7 +26,7 @@ config = load_config() router = APIRouter() -ragpipe = RagPipeline(config=config, logger=logger) +ragpipe = RagPipeline(config=config) @router.get( From 297e55796f4255af449899cfe081ff14e6832baa Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Fri, 17 Oct 2025 14:56:38 +0000 Subject: [PATCH 112/126] comment warning logging to silence loguru error --- openrag/app_front.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openrag/app_front.py b/openrag/app_front.py index 7a81c3513..5ecf47f24 100644 --- a/openrag/app_front.py +++ b/openrag/app_front.py @@ -52,9 +52,9 @@ async def on_chat_resume(thread): if AUTH_TOKEN: if not CHAINLIT_AUTH_SECRET: - logger.warning( - "`CHAINLIT_AUTH_SECRET` is not set a default value will be used. Not recommended for production." - ) + # logger.warning( + # "`CHAINLIT_AUTH_SECRET` is not set a default value will be used. Not recommended for production." + # ) os.environ["CHAINLIT_AUTH_SECRET"] = ( "default_secret_for_openrag_ui" # Set default value ) From 5abbee6027f7e0f2e4058b087cd8ef3f94582e46 Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Fri, 17 Oct 2025 15:56:50 +0000 Subject: [PATCH 113/126] set max_model_len to lower values for low memory consumption --- docker-compose.yaml | 4 ++-- quick_start/docker-compose.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index bd474f370..a69ec3d5b 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -43,7 +43,7 @@ x-vllm: &vllm_template --trust-remote-code --task embed --gpu_memory_utilization 0.3 - --max-model-len ${MAX_MODEL_LEN:-16384} + --max-model-len ${MAX_MODEL_LEN:-8194} # --max-num-seqs 1 # gpu_memory_utilization, max-num-seqs et max-model-len can be tuned depending on your GPU memory @@ -140,7 +140,7 @@ services: --model ${EMBEDDER_MODEL_NAME:-jinaai/jina-embeddings-v3} --trust-remote-code --dtype float32 - --max-model-len ${MAX_MODEL_LEN:-16384} + --max-model-len ${MAX_MODEL_LEN:-8194} # --max-num-batched-tokens 32768 # dtype is required for aarch64 (https://github.com/vllm-project/vllm/issues/11327) and improves speed on amd64. # max-num-batched-tokens is required for aarch64 because chunked prefill isn't supported by V1 vllm backend diff --git a/quick_start/docker-compose.yaml b/quick_start/docker-compose.yaml index a2c1d8c1a..0bc5c8245 100644 --- a/quick_start/docker-compose.yaml +++ b/quick_start/docker-compose.yaml @@ -42,7 +42,7 @@ x-vllm: &vllm_template --trust-remote-code --task embed --gpu_memory_utilization 0.3 - --max-model-len ${MAX_MODEL_LEN:-16384} + --max-model-len ${MAX_MODEL_LEN:-8194} # --max-num-seqs 1 # gpu_memory_utilization, max-num-seqs et max-model-len can be tuned depending on your GPU memory @@ -139,7 +139,7 @@ services: --model ${EMBEDDER_MODEL_NAME:-jinaai/jina-embeddings-v3} --trust-remote-code --dtype float32 - --max-model-len ${MAX_MODEL_LEN:-16384} + --max-model-len ${MAX_MODEL_LEN:-8194} # --max-num-batched-tokens 32768 # dtype is required for aarch64 (https://github.com/vllm-project/vllm/issues/11327) and improves speed on amd64. # max-num-batched-tokens is required for aarch64 because chunked prefill isn't supported by V1 vllm backend From 6ab030dd3765b498c1c15bcf02d1c54cfcab9d8a Mon Sep 17 00:00:00 2001 From: Paul Tran-Van Date: Fri, 17 Oct 2025 18:17:47 +0200 Subject: [PATCH 114/126] fix: Do not raise an exception when deleted file is not found This avoids an exception stack trace when a file is not found on a delete request --- openrag/components/indexer/vectordb/vectordb.py | 1 - openrag/routers/indexer.py | 11 ++++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/openrag/components/indexer/vectordb/vectordb.py b/openrag/components/indexer/vectordb/vectordb.py index 6c2e69ed3..f3f0fe391 100644 --- a/openrag/components/indexer/vectordb/vectordb.py +++ b/openrag/components/indexer/vectordb/vectordb.py @@ -507,7 +507,6 @@ async def async_search( async def delete_file(self, file_id: str, partition: str): log = self.logger.bind(file_id=file_id, partition=partition) try: - self._check_file_exists(file_id, partition) res = await self._async_client.delete( collection_name=self.collection_name, filter=f"partition == '{partition}' and file_id == '{file_id}'", diff --git a/openrag/routers/indexer.py b/openrag/routers/indexer.py index 8e8ec2ec7..cf60d276b 100644 --- a/openrag/routers/indexer.py +++ b/openrag/routers/indexer.py @@ -11,7 +11,6 @@ Form, HTTPException, Request, - Response, UploadFile, status, ) @@ -162,10 +161,16 @@ async def delete_file( partition: str, file_id: str, indexer=Depends(get_indexer), + vectordb=Depends(get_vectordb), user=Depends(require_partition_editor), ): + if not await vectordb.file_exists.remote(file_id, partition): + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"'{file_id}' not found in partition '{partition}'", + ) await indexer.delete_file.remote(file_id, partition) - return Response(status_code=status.HTTP_204_NO_CONTENT) + return JSONResponse(status_code=status.HTTP_204_NO_CONTENT) @router.put("/partition/{partition}/file/{file_id}") @@ -185,7 +190,7 @@ async def put_file( if not await vectordb.file_exists.remote(file_id, partition): raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, - detail=f"File '{file_id}' not found in partition '{partition}'.", + detail=f"'{file_id}' not found in partition '{partition}'", ) # Delete the existing file from the vector database From 22fd10017beeecf603f89b75ae6f6f43561487c2 Mon Sep 17 00:00:00 2001 From: EnjoyBacon7 <59032058+EnjoyBacon7@users.noreply.github.com> Date: Mon, 20 Oct 2025 16:40:48 +0200 Subject: [PATCH 115/126] Added macOS quickstart --- docs/assets/compose_ollama_cpu.yaml | 27 +++-- docs/assets/env_ollama_cpu.env | 102 ++---------------- .../docs/getting_started/quickstart.mdx | 29 ----- .../docs/getting_started/quickstart_mac.mdx | 57 ++++++++++ 4 files changed, 84 insertions(+), 131 deletions(-) create mode 100644 docs/content/docs/getting_started/quickstart_mac.mdx diff --git a/docs/assets/compose_ollama_cpu.yaml b/docs/assets/compose_ollama_cpu.yaml index beebe7209..92d0ebead 100644 --- a/docs/assets/compose_ollama_cpu.yaml +++ b/docs/assets/compose_ollama_cpu.yaml @@ -1,10 +1,8 @@ x-openrag: &openrag_template - image: rcordier/openrag:latest + image: linagoraai/openrag:macOS_poc volumes: - - ./.hydra_config:/app/.hydra_config - ./data:/app/data - ./.cache/huggingface:/app/model_weights # Model weights for RAG - - ./openrag:/app/openrag # For dev mode - ./ray_mount/.env:/ray_mount/.env # Shared environment variables - ./ray_mount/logs:/app/logs ports: @@ -16,6 +14,17 @@ x-openrag: &openrag_template - openrag env_file: - .env + environment: + - APP_PORT=8090 + - AUTH_TOKEN=OpenRAG + - RERANKER_ENABLED=false + - MARKER_MAX_PROCESSES=1 + - INDEXERUI_COMPOSE_FILE=true # Does not serve any purpose but needs to be enabled until PR is merged + - INDEXERUI_PORT=8067 # Here as well + - INDEXERUI_URL=http://localhost:8067 # Here as well + - RAY_DEDUP_LOGS=0 + - RAY_ENABLE_UV_RUN_RUNTIME_ENV=0s + - RAY_memory_monitor_refresh_ms=0 shm_size: 10.24gb services: @@ -97,12 +106,10 @@ services: - "minio" indexer-ui: - build: - context: ./extern/indexer-ui - dockerfile: Dockerfile - args: - - VITE_API_BASE_URL=${VITE_API_BASE_URL} - - VITE_INCLUDE_CREDENTIALS=${VITE_INCLUDE_CREDENTIALS} + image: linagoraai/indexer-ui:latest ports: - "8067:3000" - restart: unless-stopped \ No newline at end of file + environment: + - API_BASE_URL=http://localhost:8090 + - INCLUDE_CREDENTIALS=true + restart: unless-stopped diff --git a/docs/assets/env_ollama_cpu.env b/docs/assets/env_ollama_cpu.env index b80d0ede1..9d4413cf8 100644 --- a/docs/assets/env_ollama_cpu.env +++ b/docs/assets/env_ollama_cpu.env @@ -1,96 +1,14 @@ -# LLM -BASE_URL=http://ollama:11434/v1/ -API_KEY=EMPTY -MODEL=qwen3:0.6b -SEMAPHORE=10 +# LLM - For conversation +BASE_URL= +API_KEY= +MODEL= -# VLLM +# VLM - For image interpretation VLM_BASE_URL= VLM_API_KEY= -VLM_MODEL=Qwen2.5-VL-7B-Instruct -VLM_SEMAPHORE=40 +VLM_MODEL= -# LLM JUDGE -JUDGE_BASE_URL= -JUDGE_API_KEY= -JUDGE_MODEL=Qwen2.5-VL-7B-Instruct - -# App -APP_PORT=8090 - -# Vector db VDB Milvus -VDB_HOST=milvus -VDB_PORT=19531 -VDB_CONNECTOR_NAME=milvus - -VLLM_CPU_OMP_THREADS_BIND=4 - -# RETRIEVER -CONTEXTUAL_RETRIEVAL=false -RETRIEVER_TOP_K=40 - -# EMBEDDER -EMBEDDER_MODEL_NAME=jina/jina-embeddings-v2-base-en:latest -EMBEDDER_BASE_URL=http://ollama:11434/v1 -EMBEDDER_API_KEY=EMPTY - -RERANKER_ENABLED=false -RERANKER_MODEL=jinaai/jina-reranker-v2-base-multilingual -RERANKER_TOP_K=5 -# RERANKER_PORT=7996 -RERANKER_BASE_URL= - -# Prompts -PROMPTS_DIR=../prompts/example3 - -# Loaders -PDFLoader=MarkerLoader -MARKER_MAX_PROCESSES=1 - -# Ray -RAY_DEDUP_LOGS=0 -RAY_NUM_GPUS=0.1 -RAY_POOL_SIZE=1 -RAY_MAX_TASKS_PER_WORKER=8 -RAY_DASHBOARD_PORT=8265 -## Marker Worker - - -# Indexer UI -INDEXERUI_PORT=8067 -INDEXERUI_URL=http://localhost:8067 -VITE_API_BASE_URL=http://localhost:8090 - -# API Authentication -# AUTH_TOKEN=super-secret-token -SAVE_UPLOADED_FILES=true - -# SHARED_ENV=/ray_mount/.env -# RAY_ADDRESS=ray://162.19.92.65:10001 - -INDEXER_INSERT_CONCURRENCY=10 -RAY_ENABLE_UV_RUN_RUNTIME_ENV=0 - -ENABLE_RAY_SERVE=false -RAY_memory_monitor_refresh_ms=0 - -# # Chainlit data persistency -# # Persistency services (localstack + AWS (Deployed Locally)) -# CHAINLIT_DATALAYER_COMPOSE=extern/chainlit-datalayer/compose.yaml - -# ## To link to the PostgreSQL instance. -POSTGRES_USER=root -POSTGRES_PASSWORD=root -POSTGRES_DB=postgres -POSTGRES_PORT=5432 - -# DATABASE_URL=postgresql://${POSTGRES_USER:-root}:${POSTGRES_PASSWORD:-root}@postgres:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-postgres} # for chainlit - -# ## S3 configuration. -# BUCKET_NAME=my-bucket -# APP_AWS_ACCESS_KEY=random-key -# APP_AWS_SECRET_KEY=random-key -# APP_AWS_REGION=eu-central-1 - -# LOCALSTACK_PORT=4566 -# DEV_AWS_ENDPOINT=http://localstack:${LOCALSTACK_PORT:-4566} \ No newline at end of file +# EMBEDDER - For text vectorization +EMBEDDER_BASE_URL= +EMBEDDER_MODEL_NAME= +EMBEDDER_API_KEY= \ No newline at end of file diff --git a/docs/content/docs/getting_started/quickstart.mdx b/docs/content/docs/getting_started/quickstart.mdx index 4a2ebee4e..ac22f4e3b 100644 --- a/docs/content/docs/getting_started/quickstart.mdx +++ b/docs/content/docs/getting_started/quickstart.mdx @@ -89,35 +89,6 @@ In case **`Indexer UI` (A Web interface for intuitive document ingestion, indexi # docker compose --profile cpu down ``` - - :::danger[Important] - **`Apple Metal/MPS`** is not currently supported in Docker. Additionally, our implementations of **vLLM** (embeddings) and **Infinity** (reranking) are not optimized for macOS: **`We are working on it`**. - ::: - As an alternative, you can use **Ollama** or **LlamaCpp** to run embeddings locally on macOS using MPS. The embedder is OpenAI-compatible, so you can configure it via the `.env` file. - - - 1. **Disable Docker services for embeddings and reranking** - Comment out the relevant services in `docker-compose.yml`. - - 2. **Disable the reranker** - :::note[Important] - Our reranker interface matches the [Infinity](https://github.com/michaelfeil/infinity) API and is not OpenAI-compatible: Current work is being done for that. - ```bash - // .env - RERANKER_ENABLED=False - ``` - ::: - - 3. **Run an external embedding service** - Deploy an embedding service with **LlamaCpp** or **Ollama** locally. Then, configure your `.env` with the following variables: - - ```bash - // .env - EMBEDDER_MODEL_NAME=... - EMBEDDER_BASE_URL=... - EMBEDDER_API_KEY=... - ``` - diff --git a/docs/content/docs/getting_started/quickstart_mac.mdx b/docs/content/docs/getting_started/quickstart_mac.mdx new file mode 100644 index 000000000..84850a16a --- /dev/null +++ b/docs/content/docs/getting_started/quickstart_mac.mdx @@ -0,0 +1,57 @@ +--- +title: Quickstart on MacOS +description: Get started with a Mac friendly deployment guide +--- + +import { Tabs, TabItem } from '@astrojs/starlight/components'; +import compose_ollama_cpu from '../../../assets/compose_ollama_cpu.yaml?raw'; +import env_ollama_cpu from '../../../assets/env_ollama_cpu.env?raw'; +import { Code } from '@astrojs/starlight/components'; + +:::note +The easiest way to deploy OpenRAG on MacOS is to use Docker. Since Docker for MacOS does not support the MPS backend, perfomance may be limited. See [here](#optimizations) for more details. +::: + +## Docker + +### Prerequisites +- [Docker](https://www.docker.com/get-started) and **Docker Compose** +- Your hardware should meet these specifications: + - A minimum of 24 GB of unified memory (32 GB recommended). 16 GB may work with varying degrees of success. + - An Apple Silicon based Mac + +### Installation + +We provide precompiled Docker images for [OpenRAG](https://hub.docker.com/r/linagoraai/openrag/tags) and its dashboard companion, [Indexer-UI](https://hub.docker.com/r/linagoraai/indexer-ui/tags). + +You will need the following `docker-compose.yaml` and `.env` files to get started: + + + + + + + + + + +### Configuration + +By default, the only necessary configuration change is to set the model settings in the `.env` file. Make sure all three models are set (they can be the same one if it supports vision, language, and embedding) If using ollama, ensure you pull the desired models locally using the ollama CLI (keep in mind that ollama needs to be running to pull models): + +```bash title="Pulling models with ollama" +ollama pull qwen3:0.6b +``` +```env title=".env" +BASE_URL=http://ollama:11434 +API_KEY=EMPTY +MODEL=qwen3:0.6b +``` + +:::caution[Important] +Ollama does not support reranker models as of October 2025. Rerankers must be run on a separate server or disabled (as configured by default in the provided `docker-compose.yaml`). +::: + +### Optimizations + +As stated earlier, Docker for MacOS does not support GPU acceleration. Therefore, to maximize performance, we recommend using a non-dockerized installation of ollama or LlamaCpp, or running models from an external server. For simplicity, we still provide a dockerized setup here. \ No newline at end of file From c1af31ca6959255651df517b18660c52791b0b5c Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Mon, 20 Oct 2025 15:44:20 +0000 Subject: [PATCH 116/126] - Use structured output prompting to ensure consistent LLM summaries and filter out irrelevant docs - Dynamically probe more relevant documents when all current ones are relevant --- .hydra_config/config.yaml | 12 +- openrag/app_front.py | 2 +- openrag/components/map_reduce.py | 249 +++++++++++++++++++------------ openrag/components/pipeline.py | 21 +-- 4 files changed, 170 insertions(+), 114 deletions(-) diff --git a/.hydra_config/config.yaml b/.hydra_config/config.yaml index 75b34ed11..89b8d4286 100644 --- a/.hydra_config/config.yaml +++ b/.hydra_config/config.yaml @@ -53,7 +53,17 @@ reranker: base_url: ${oc.env:RERANKER_BASE_URL, http://reranker:${oc.env:RERANKER_PORT, 7997}} map_reduce: - map_reduce_n_docs: ${oc.decode:${oc.env:MAP_REDUCE_N_DOCS, 10}} # Number of documents to use in map-reduce + # Number of documents to process in the initial mapping phase + initial_batch_size: ${oc.decode:${oc.env:MAP_REDUCE_INITIAL_BATCH_SIZE, 10}} + + # Number of additional documents to probe when all previous chunks are relevant + expansion_batch_size: ${oc.decode:${oc.env:MAP_REDUCE_EXPANSION_BATCH_SIZE, 5}} + + # Maximum total number of documents (chunks) to process across all iterations + max_total_documents: ${oc.decode:${oc.env:MAP_REDUCE_MAX_TOTAL_DOCUMENTS, 20}} + + # Enable debug logging for map & reduce + debug: ${oc.decode:${oc.env:MAP_REDUCE_DEBUG, true}} verbose: verbose: true diff --git a/openrag/app_front.py b/openrag/app_front.py index 5ecf47f24..74219bc8b 100644 --- a/openrag/app_front.py +++ b/openrag/app_front.py @@ -118,7 +118,7 @@ async def chat_profile(current_user: cl.User): markdown_description=description_template.format( name=m.id, partition=partition ), - icon="public/favicon.svg", + icon="/public/favicon.svg", ) ) return chat_profiles diff --git a/openrag/components/map_reduce.py b/openrag/components/map_reduce.py index 24121cfce..fb7eca0c3 100644 --- a/openrag/components/map_reduce.py +++ b/openrag/components/map_reduce.py @@ -1,124 +1,181 @@ +from pathlib import Path + +from config import load_config from langchain_core.documents.base import Document -from openai import AsyncOpenAI +from langchain_openai import ChatOpenAI +from pydantic import BaseModel, Field from tqdm.asyncio import tqdm from utils.logger import get_logger from .utils import get_llm_semaphore logger = get_logger() +config = load_config() -system_prompt_map = """Vous êtes un modèle de langage spécialisé dans l’analyse et la synthèse d’informations. -Ton rôle est d’examiner un texte fourni et d’en extraire les éléments nécessaires pour répondre à une question de l'utilisateur en gardant des éléments de contexte. -Analyse le texte en profondeur, synthétise les informations essentielles qui peuvent aider à répondre à la requête. -Si le texte ne contient aucune donnée pertinente pour répondre à la question, réponds simplement : "Not pertinent" et n'ajoute pas de commentaires. +LOG_DIR = Path(config.paths.log_dir) -Les sections « Références » d’une page qui n’apportent aucune information utile à la question ne doivent pas être considérées comme pertinentes. -""" +system_prompt_map = """You are an AI assistant specialized in extracting and synthesizing relevant information from text. -system_prompt_reduce = """Vous êtes un assistant conversationnel IA spécialisé dans la recherche et la synthèse d'informations. Votre objectif est de fournir des réponses précises, fiables et bien structurées en utilisant exclusivement les documents récupérés (Contexte). -Priorisez la clarté et l'exactitude dans vos réponses. -Voici les règles à suivre : -- Répondez dans la langue de la requête de l'utilisateur. -- Utilisez uniquement les informations contenues dans le Contexte. Ne faites jamais d'inférences, de suppositions ou ne vous basez pas sur des connaissances externes. -- Si le contexte est insuffisant, invitez l'utilisateur à préciser sa requête ou à fournir des mots-clés supplémentaires. -- Soyez concis mais complet, en veillant à ne pas omettre d'informations importantes. +Your task: +1. Analyze the provided text in relation to the user's question +2. Extract only the essential information that directly addresses the query +3. Preserve necessary context (Key words, project names or initiatives, dates, etc.) to maintain accuracy and clarity of the summary for it to be self-understandable + +Guidelines: +- Present information clearly and concisely without unnecessary rephrasing or commentary +- Focus on precision: include what matters, exclude what doesn't. +- If a document does have any relevant content with respect to a query, classify it irrelevant such without providing a `synthesis`. """ -user_prompt_reduce = """ -Requête utilisateur : -{query} -Informations récupérées : -{context} +class SummarizedChunk(BaseModel): + relevancy: bool = Field( + ..., description="Indicates if the chunk is relevant to the query" + ) + summary: str = Field( + "", + description="The summarized content of the chunk. The field should be empty if relevancy is False.", + ) + + +user_prompt = """ +Here is a text: +{content} + +From this document, identify and comprehensively summarize the information useful for answering the following question: +{query} """ class RAGMapReduce: def __init__(self, config): self.config = config - self.client = AsyncOpenAI( - base_url=self.config.llm["base_url"], api_key=self.config.llm["api_key"] + self.slm: ChatOpenAI = ChatOpenAI(**config.llm).with_structured_output( + SummarizedChunk ) - self.model = self.config.llm["model"] - self.map_reduce_n_docs = self.config.map_reduce["map_reduce_n_docs"] + map_reduce_config = self.config.map_reduce + self.initial_batch_size = map_reduce_config["initial_batch_size"] + self.expansion_batch_size = map_reduce_config["expansion_batch_size"] + self.max_total_documents = map_reduce_config["max_total_documents"] - async def infer_llm_map(self, query, chunk: Document): + self.debug = map_reduce_config.get("debug", True) + + assert self.max_total_documents >= self.initial_batch_size, ( + "`max_total_documents` must be greater than or equal to `initial_batch_size`" + ) + + async def infer_chunk_relevancy(self, query, chunk: Document) -> SummarizedChunk: async with get_llm_semaphore(): - user_prompt_map = ( - "Voici un texte :\n" + chunk.page_content + "\n" - "À partir de ce document, identifie et résume de manière complète les informations utiles pour répondre à la question suivante :\n" - + query - ) - response = await self.client.chat.completions.create( - model=self.model, - messages=[ - {"role": "system", "content": system_prompt_map}, - {"role": "user", "content": user_prompt_map}, - ], - stream=False, - max_tokens=512, - temperature=0.3, - ) - resp = response.choices[0].message.content.strip() - relevancy = "Not pertinent" not in resp - return relevancy, resp + try: + params = { + "max_tokens": 512, + "temperature": 0.3, + } + output_chunk: SummarizedChunk = await self.slm.ainvoke( + [ + {"role": "system", "content": system_prompt_map}, + { + "role": "user", + "content": user_prompt.format( + query=query, content=chunk.page_content + ), + }, + ], + **params, + ) + return output_chunk + except Exception as e: + logger.error("Error during chunk relevancy inference", error=str(e)) + return SummarizedChunk(relevancy=False, summary="") + + async def map_batch( + self, + query: str, + chunks: list[Document], + summaries: list[SummarizedChunk], + kth_batch=1, + ): + """Process a batch of chunks""" + logger.debug( + f"Processing {kth_batch}-th batch of chunks", batch_size=len(chunks) + ) + tasks = [self.infer_chunk_relevancy(query, chunk) for chunk in chunks] + outputs: list[SummarizedChunk] = await tqdm.gather( + *tasks, desc="Map & Reduce processing chunks", total=len(chunks) + ) + terminate = all( + [not o.relevancy for o in outputs[-self.expansion_batch_size :]] + ) # if the last 'expansion_batch_size' chunks are all irrelevant, we can terminate + + for o, chunk in zip(outputs, chunks): + if o.relevancy: + summaries.append( + Document(page_content=o.summary, metadata=chunk.metadata) + ) + + if self.debug: + with open(LOG_DIR / "map_reduce.md", "a") as f: + f.write(f"### Query: \n{query}\n") + f.write( + f"### Chunk Content: \n* Relevancy: {o.relevancy} \n\n {chunk.page_content}\n" + ) + f.write(f"### Summary: \n{o.summary}\n") + f.write("\n-------\n\n") + + return outputs, terminate async def map(self, query: str, chunks: list[Document]): - chunks = chunks[: self.map_reduce_n_docs] - logger.debug("Running map reduce", chunk_count=len(chunks), query=query) - tasks = [self.infer_llm_map(query, chunk) for chunk in chunks] - output = await tqdm.gather( - *tasks, desc="Map & Reduce processing chunks", total=len(chunks) + """Perform the map phase of map-reduce on the provided chunks. + Initally processes `initial_batch_size` number of documents to identify relevant ones. If they are all found to be relevant, + it continues to process additional documents in batches of `expansion_batch_size` until a + Args: + query (str): The user's query. + chunks (list[Document]): The list of document chunks (the `RETRIEVER_TOP_K` documents from the retreiver) to process. + + Returns: list[Document]: A list of relevant document summaries. + """ + + summaries: list[Document] = [] + + initial_batch, remaining_chunks = ( + chunks[: self.initial_batch_size], + chunks[self.initial_batch_size :], ) - chunks_summaries = [ - (synthesis, chunk) - for chunk, (relevancy, synthesis) in zip(chunks, output) - if relevancy - ] + _, terminate = await self.map_batch( + query, initial_batch, summaries=summaries, kth_batch=1 + ) + + if ( + terminate + or not remaining_chunks + or len(summaries) >= self.max_total_documents + ): + return summaries + + for jth_batch, i in enumerate( + range(0, len(remaining_chunks), self.expansion_batch_size), start=2 + ): + n = min( + self.expansion_batch_size, self.max_total_documents - len(summaries) + ) + if n <= 0: + break + + logger.debug( + f"Expanding map phase: processing batch {jth_batch} with size {n}", + summaries_count=len(summaries), + ) + + next_batch = remaining_chunks[i : i + n] + _, terminate = await self.map_batch( + query=query, chunks=next_batch, summaries=summaries, kth_batch=jth_batch + ) + + if terminate or len(summaries) >= self.max_total_documents: + break + logger.debug( - "Map reduce completed", - relevant_chunks_count=len(chunks_summaries), - query=query, + "Map reduce completed", relevant_chunks_count=len(summaries), query=query ) - return chunks_summaries - - -# async def infer_llm_reduce(text): -# user_prompt_reduce = "Requête utilisateur :\n" + query -# user_prompt_reduce += "\nInformations récupérées :\n" + text + "\n" -# response = await client.chat.completions.create( -# model=model, -# messages=[ -# {"role": "system", "content": system_prompt_reduce}, -# {"role": "user", "content": user_prompt_reduce}, -# ], -# stream=False, -# max_tokens=1000, -# ) -# return response - - -# async def queue_api_calls(): -# responses = await asyncio.gather(*[infer_llm_map(chunk) for chunk in chunks]) -# results = [] -# for _, response in enumerate(responses): -# r = response.choices[0].message.content.strip() -# if "Not pertinent" not in r: -# results.append(r) -# print(_) -# print("synthèse:") -# print(r) -# print(10 * "----") -# final_response = await infer_llm_reduce("\n".join(results)) -# print(10 * "----") -# print("Résumé final:") -# print(final_response.choices[0].message.content.strip()) -# # print(10 * '----') -# # return final_response - - -# asyncio.run(queue_api_calls()) -# end = time.time() -# print(end - start) -# # print(final_response.choices[0].message.content.strip()) + return summaries diff --git a/openrag/components/pipeline.py b/openrag/components/pipeline.py index f269e2feb..48bf6f242 100644 --- a/openrag/components/pipeline.py +++ b/openrag/components/pipeline.py @@ -33,8 +33,9 @@ def __init__(self, config) -> None: logger.debug("Reranker", enabled=self.reranker_enabled) self.reranker_top_k = int(config.reranker["top_k"]) - # map reduce - self.map_reduce_n_docs = self.config.map_reduce["map_reduce_n_docs"] + # map & reduce + self.retriever_top_k = int(config.retriever["top_k"]) + self.map_reduce_max_docs = self.config.map_reduce["max_total_documents"] if self.reranker_enabled: self.reranker = Reranker(logger, config) @@ -44,7 +45,7 @@ async def retrieve_docs( ) -> list[Document]: docs = await self.retriever.retrieve(partition=partition, query=query) top_k = ( - max(self.map_reduce_n_docs, self.reranker_top_k) + max(self.map_reduce_max_docs, self.reranker_top_k) if use_map_reduce else self.reranker_top_k ) @@ -131,19 +132,7 @@ async def _prepare_for_chat_completion(self, partition: list[str], payload: dict ) if use_map_reduce and docs: - context = "Extracted documents:\n" - summarized_docs = [] - res = await self.map_reduce.map(query=query, chunks=docs) - - for i, (synthesis, doc) in enumerate(res): - context += f"* {i}: {synthesis}" - context += "\n" + "-" * 10 + "\n" - summarized_docs.append( - Document(page_content=synthesis, metadata=doc.metadata) - ) - - # logger.debug("Context after map-reduce", context=context) - docs = summarized_docs + docs = await self.map_reduce.map(query=query, chunks=docs) # 3. Format the retrieved docs context = format_context(docs) From f4150cc66876aee0bdd4013053c0c644bd47521d Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Mon, 20 Oct 2025 15:46:49 +0000 Subject: [PATCH 117/126] Improved sys prompt --- prompts/example1/sys_prompt_tmpl.txt | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/prompts/example1/sys_prompt_tmpl.txt b/prompts/example1/sys_prompt_tmpl.txt index 5bf4d8df5..81d472bba 100644 --- a/prompts/example1/sys_prompt_tmpl.txt +++ b/prompts/example1/sys_prompt_tmpl.txt @@ -1,14 +1,19 @@ -You are an AI assistant designed to provide structured, accurate and reliable answers based exclusively on the provided `Context` (retrieved data). -Prioritize clarity and comprehensiveness in your responses. +You are an AI conversational assistant specialized in **information retrieval and synthesis**. +Your goal is to provide **precise, reliable, and well-structured answers** using **only the retrieved documents** (`Context`). +Prioritize **clarity, accuracy, and completeness** in your responses. -# Rules +## Rules -1. Answer based exclusively on the provided context - * Use only information present in the provided `Context`. Never infer, make assumptions, or use any external knowledge. - * If the context is insufficient, politely invite the user to reformulate their query or provide additional keywords. - * Always answer in the language of the user's query language. +1. Use only the provided Context + * Base your answer **exclusively** on the information contained in the `Context`. + * **Never infer**, assume, or rely on any external knowledge. + * If the context is **insufficient**, **invite the user** to clarify their query or provide additional keywords. -2. Formatting for better readability - * Use headings, bullet points or numbered lists, and tables to structure complex answers. +2. Language Consistency + * Always respond **in the same language** as the user’s query. + +3. Structure and Readability + * Use **headings**, **bullet points**, **numbered lists**, or **tables** to organize information clearly. + * Ensure responses are **concise yet complete**, avoiding omission of key details. Here are the retrieved documents: `{context}` \ No newline at end of file From 0e3e0fbba46791c3d01eeba0b8e82e703a99762c Mon Sep 17 00:00:00 2001 From: htagourti Date: Tue, 21 Oct 2025 12:08:44 +0000 Subject: [PATCH 118/126] fixed user access to /tasks --- openrag/components/indexer/indexer.py | 16 ++++++++++++++++ openrag/routers/queue.py | 18 +++++++++++++----- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/openrag/components/indexer/indexer.py b/openrag/components/indexer/indexer.py index 57ae614c4..b4d79cdb8 100644 --- a/openrag/components/indexer/indexer.py +++ b/openrag/components/indexer/indexer.py @@ -308,6 +308,7 @@ class TaskInfo: class TaskStateManager: def __init__(self): self.tasks: Dict[str, TaskInfo] = {} + self.user_index: Dict[int, set[str]] = {} self.lock = asyncio.Lock() async def _ensure_task(self, task_id: str) -> TaskInfo: @@ -346,6 +347,7 @@ async def set_details( "metadata": metadata, "user_id": user_id, } + self.user_index.setdefault(user_id, set()).add(task_id) @ray.method(concurrency_group="set") async def set_object_ref(self, task_id: str, object_ref: dict): @@ -394,6 +396,20 @@ async def get_all_info(self) -> Dict[str, dict]: for task_id, info in self.tasks.items() } + @ray.method(concurrency_group="queue_info") + async def get_all_user_info(self, user_id: int) -> Dict[str, dict]: + async with self.lock: + task_ids = self.user_index.get(user_id, set()) + return { + tid: { + "state": self.tasks[tid].state, + "error": self.tasks[tid].error, + "details": self.tasks[tid].details, + } + for tid in task_ids + if tid in self.tasks + } + @ray.method(concurrency_group="queue_info") async def get_pool_info(self) -> Dict[str, int]: return { diff --git a/openrag/routers/queue.py b/openrag/routers/queue.py index ba507eaf6..16240f9df 100644 --- a/openrag/routers/queue.py +++ b/openrag/routers/queue.py @@ -5,13 +5,13 @@ from fastapi.responses import JSONResponse from utils.dependencies import get_task_state_manager -from .utils import require_admin +from .utils import current_user, require_admin # load config config = load_config() # Create an APIRouter instance -router = APIRouter(dependencies=[Depends(require_admin)]) +router = APIRouter() def _format_pool_info(worker_info: dict[str, int]) -> dict[str, int]: @@ -26,7 +26,9 @@ def _format_pool_info(worker_info: dict[str, int]) -> dict[str, int]: @router.get("/info") -async def get_queue_info(task_state_manager=Depends(get_task_state_manager)): +async def get_queue_info( + admin=Depends(require_admin), task_state_manager=Depends(get_task_state_manager) +): all_states: dict = await task_state_manager.get_all_states.remote() status_counts = Counter(all_states.values()) @@ -51,14 +53,20 @@ async def list_tasks( request: Request, task_status: str | None = None, task_state_manager=Depends(get_task_state_manager), + user=Depends(current_user), ): """ - ?task_status=active → QUEUED | SERIALIZING | CHUNKING | INSERTING - ?task_status= → exact match (case-insensitive) - (none) → all tasks """ - # fetck task info - all_info: dict[str, dict] = await task_state_manager.get_all_info.remote() + # fetch task info + if user.get("is_admin"): + all_info: dict[str, dict] = await task_state_manager.get_all_info.remote() + else: + all_info: dict[str, dict] = await task_state_manager.get_all_user_info.remote( + user.get("id") + ) if task_status is None: filtered = all_info.items() From 98709d5e7103703e6b0d199f3f449586adca6b6d Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Tue, 21 Oct 2025 15:31:52 +0200 Subject: [PATCH 119/126] Fix CI (#108) Adds `user-id` to `restore.py`. --- openrag/scripts/restore.py | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/openrag/scripts/restore.py b/openrag/scripts/restore.py index 363eb2a85..2d3509adb 100644 --- a/openrag/scripts/restore.py +++ b/openrag/scripts/restore.py @@ -11,16 +11,6 @@ from pymilvus import MilvusClient from utils.logger import get_logger -# It will create a the Milvus collection if it doesn't exist -vdb = MilvusDB.options( - name="Vectordb", namespace="openrag", lifetime="detached" -).remote() - -ray.get( - vdb.__ray_ready__.remote() -) # ensure the actor is fully initialized and ready: collection and all created if nont existing -print("VectorDB (Milvus) actor fully initialized") - def read_rdb_section( fh: IO[str], @@ -29,6 +19,7 @@ def read_rdb_section( added_documents: Dict[str, Set[str]], existing_partitions: Dict[str, Any], logger: Any, + user_id: int, verbose: bool = False, dry_run: bool = False, ) -> None: @@ -42,6 +33,7 @@ def read_rdb_section( added_documents: Dict mapping added partitions to sets of added file IDs. existing_partitions: Dict of already existing partitions to avoid duplicates. logger: Logger for status and error reporting. + user_id: User id to pass to PartitionFileManager verbose: If True, logs additional info. dry_run: If True, no changes are made to the database. """ @@ -81,7 +73,7 @@ def read_rdb_section( if not dry_run: try: - res = pfm.add_file_to_partition(doc["file_id"], part["name"], doc) + res = pfm.add_file_to_partition(doc["file_id"], part["name"], doc, user_id) except Exception as e: logger.exception( f"{type(e)} in add_file_to_partition({doc['file_id']}, {part['name']}, ...)\n" @@ -271,12 +263,34 @@ def load_openrag_config(logger: Any) -> Tuple[Dict[str, Any], Dict[str, Any]]: action="store_true", help="Don't change the target database", ) + parser.add_argument( + "-u", + "--user-id", + default=1, + help="Create partitions with this user-id" + ) parser.add_argument("input", help="input file name") args = parser.parse_args() logger = get_logger() + + try: + # It will create a the Milvus collection if it doesn't exist + vdb_tmp = MilvusDB.options( + name="Vectordb", namespace="openrag", lifetime="detached" + ).remote() + + ray.get( + vdb_tmp.__ray_ready__.remote() + ) # ensure the actor is fully initialized and ready: collection and all created if nont existing + print("VectorDB (Milvus) actor fully initialized") + except Exception as e: + logger.exception(f'Failed while trying to create Milvus collection: {e}') + # TODO: stop execution here + + rdb, vdb = load_openrag_config(logger) if args.verbose: @@ -323,6 +337,7 @@ def load_openrag_config(logger: Any) -> Tuple[Dict[str, Any], Dict[str, Any]]: added_documents, existing_partitions, logger, + args.user_id, args.verbose, args.dry_run, ) From 3de4ac7d83952d2dfab439c0dcd6f6136d7c630f Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Tue, 21 Oct 2025 13:41:12 +0000 Subject: [PATCH 120/126] Improve chunk contextualisation with more previous chunks and better prompt --- openrag/components/indexer/chunker/chunker.py | 4 +-- .../example1/chunk_contextualizer_tmpl.txt | 36 +++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/openrag/components/indexer/chunker/chunker.py b/openrag/components/indexer/chunker/chunker.py index 601e8fbe9..945cb9e21 100644 --- a/openrag/components/indexer/chunker/chunker.py +++ b/openrag/components/indexer/chunker/chunker.py @@ -86,9 +86,9 @@ async def _contextualize_chunks(self, chunks: list[str], source: str) -> list[st try: tasks = [] for i in range(len(chunks)): - prev_chunk = chunks[i - 1] if i > 0 else "" + prev_chunk = "---\n".join(chunks[max(0, i - 2) : i]) if i > 0 else "" curr_chunk = chunks[i] - first_chunks = "\n".join(chunks[:4]) + first_chunks = "---\n".join(chunks[:2]) # first two chunks tasks.append( self._generate_context( diff --git a/prompts/example1/chunk_contextualizer_tmpl.txt b/prompts/example1/chunk_contextualizer_tmpl.txt index 8d2022b3e..c15013530 100644 --- a/prompts/example1/chunk_contextualizer_tmpl.txt +++ b/prompts/example1/chunk_contextualizer_tmpl.txt @@ -1,23 +1,23 @@ -Succinctly write a contextualization text for the following chunk (from a document) by integrating the provided elements. +You are an AI assistant that creates **brief contextual summaries** to make text chunks independently understandable and searchable without reference to their source document. +Your task is to write a short, coherent context for the current chunk by synthesizing: -**Writing Instructions**: -1. Take into account: - - **Document Source**: Information about the origin and nature of the document (CV, videos, commercial proposals, etc.) to be explicitly mentioned to situate the chunk's provenance - - **First chunks of the original document**: Structure/Header of the original document - - **Previous chunk**: Adjacent content to ensure continuity +* **Source**: The document name and type (e.g., CV, video transcript, proposal) that identifies where the chunk originates +* **First Chunks of the Document**: The opening content that establishes the document's main subject or purpose +* **Previous Chunk**: The immediately preceding content—**analyze this carefully** to determine whether the current chunk continues a list, extends an argument, follows a narrative sequence, or shifts to a new topic -2. Constraints: - - Language: Use the language of the current chunk - - Response format: Plain text only (no titles/markdown) - - Length: 1 to 3 sentence(s) according to relevance if necessary +**Example outputs**: + * From a quarterly earnings call transcript: this section continues the list of operational challenges discussed... + * From ACME Corp's Q2 2023 SEC filing discussing quarterly performance following $314M in Q1 revenue: the company achieved 3% quarter-over-quarter growth. -**Context**: -- Document Source: {source} to be taken into account in the contextualization -- First chunks of the original document: -{first_chunks} +**Input** -- Previous chunk: -{prev_chunk} +* Source: {source} +* First Chunks: {first_chunks} +* Previous Chunk: {prev_chunk} +* Current Chunk: {chunk} -**chunk to contextualize**: -{chunk} \ No newline at end of file +**Requirements** +* **Carefully consider the previous chunk** to ensure continuity—identify whether the current chunk is a continuation, conclusion, or new section +* Produce a **concise, standalone context** (1–2 sentences) that synthesizes these elements so the current chunk is fully comprehensible on its own +* Output **plain text only**—no formatting, explanations, or bullet points +* When image descriptions appear in the chunk, focus on contextualizing rather than repeating descriptive details \ No newline at end of file From 3b3fed0f74bbca7c71bdc772f1970db018e6a70e Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Tue, 21 Oct 2025 15:58:37 +0200 Subject: [PATCH 121/126] Use prompts from "example1" --- .github/workflows/smoke_test/.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/smoke_test/.env b/.github/workflows/smoke_test/.env index fa8dac8c0..3f19d843b 100644 --- a/.github/workflows/smoke_test/.env +++ b/.github/workflows/smoke_test/.env @@ -33,7 +33,7 @@ RERANKER_ENABLED=true RERANKER_MODEL=Alibaba-NLP/gte-multilingual-reranker-base # or jinaai/jina-reranker-v2-base-multilingual # Prompts -PROMPTS_DIR=../prompts/example3_en # you can change it to ../prompts/example3 for french prompts +PROMPTS_DIR=../prompts/example1 # Loaders PDFLoader=MarkerLoader From 8b1874b9f0c6c5d69ceeb9cea2b9e37e427e937c Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Wed, 22 Oct 2025 07:06:55 +0000 Subject: [PATCH 122/126] update chunk contextualizer prompt --- .../example1/chunk_contextualizer_tmpl.txt | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/prompts/example1/chunk_contextualizer_tmpl.txt b/prompts/example1/chunk_contextualizer_tmpl.txt index c15013530..f70a9297f 100644 --- a/prompts/example1/chunk_contextualizer_tmpl.txt +++ b/prompts/example1/chunk_contextualizer_tmpl.txt @@ -1,23 +1,28 @@ You are an AI assistant that creates **brief contextual summaries** to make text chunks independently understandable and searchable without reference to their source document. Your task is to write a short, coherent context for the current chunk by synthesizing: -* **Source**: The document name and type (e.g., CV, video transcript, proposal) that identifies where the chunk originates -* **First Chunks of the Document**: The opening content that establishes the document's main subject or purpose -* **Previous Chunk**: The immediately preceding content—**analyze this carefully** to determine whether the current chunk continues a list, extends an argument, follows a narrative sequence, or shifts to a new topic +- **Source**: The document name and type (e.g., CV, video transcript, proposal) that identifies where the chunk originates +- **First Chunks of the Document**: The opening content that establishes the document's main subject or purpose +- **Previous Chunk**: The immediately preceding content—**analyze this carefully** to determine whether the current chunk continues a list, extends an argument, follows a narrative sequence, or shifts to a new topic **Example outputs**: - * From a quarterly earnings call transcript: this section continues the list of operational challenges discussed... - * From ACME Corp's Q2 2023 SEC filing discussing quarterly performance following $314M in Q1 revenue: the company achieved 3% quarter-over-quarter growth. + - From a quarterly earnings call transcript: this section continues the list of operational challenges discussed... + - From ACME Corp's Q2 2023 SEC filing discussing quarterly performance following $314M in Q1 revenue: the company achieved 3% quarter-over-quarter growth. **Input** + - Source: {source} + - First Chunks: + {first_chunks} -* Source: {source} -* First Chunks: {first_chunks} -* Previous Chunk: {prev_chunk} -* Current Chunk: {chunk} + - Previous Chunk: + {prev_chunk} + + - Current Chunk: + {chunk} **Requirements** -* **Carefully consider the previous chunk** to ensure continuity—identify whether the current chunk is a continuation, conclusion, or new section -* Produce a **concise, standalone context** (1–2 sentences) that synthesizes these elements so the current chunk is fully comprehensible on its own -* Output **plain text only**—no formatting, explanations, or bullet points -* When image descriptions appear in the chunk, focus on contextualizing rather than repeating descriptive details \ No newline at end of file + - **Carefully consider the previous chunk** to ensure continuity—identify whether the current chunk is a continuation, conclusion, or new section + - Produce a **concise, standalone context** (1–2 sentences) that synthesizes these elements so the current chunk is fully comprehensible on its own + - Output **plain text only**—no formatting, explanations, or bullet points + - When image descriptions appear in the chunk, focus on contextualizing rather than repeating descriptive details + - If the chunk is in French, your output should be in French. \ No newline at end of file From df0c3f1ce666912af6d352e4a6a3f490ed2f259a Mon Sep 17 00:00:00 2001 From: Ahmath-Gadji Date: Wed, 22 Oct 2025 09:57:46 +0000 Subject: [PATCH 123/126] fix pptx bug --- .../components/indexer/loaders/pptx_loader.py | 87 ++++++++++++------- pyproject.toml | 1 + uv.lock | 15 ++++ 3 files changed, 73 insertions(+), 30 deletions(-) diff --git a/openrag/components/indexer/loaders/pptx_loader.py b/openrag/components/indexer/loaders/pptx_loader.py index 887a94b56..67364aae7 100644 --- a/openrag/components/indexer/loaders/pptx_loader.py +++ b/openrag/components/indexer/loaders/pptx_loader.py @@ -1,15 +1,25 @@ import html import re from io import BytesIO + import pptx +from html_to_markdown import convert from langchain_core.documents.base import Document from PIL import Image from tqdm.asyncio import tqdm +from utils.logger import get_logger from .base import BaseLoader +logger = get_logger() + class PPTXConverter: + """Implementation based on PPTX converter in MarkItDown library. + + https://github.com/microsoft/markitdown/blob/main/packages/markitdown/src/markitdown/converters/_pptx_converter.py + """ + def __init__( self, image_placeholder=r"", page_separator: str = "[PAGE_SEP]" ): @@ -44,9 +54,7 @@ def convert(self, local_path): html_table += "" first_row = False html_table += "" - md_content += ( - "\n" + self._convert(html_table).text_content.strip() + "\n" - ) + md_content += "\n" + convert(html_table).text_content.strip() + "\n" # Charts if shape.has_chart: @@ -73,40 +81,59 @@ def convert(self, local_path): return md_content, images_list def _is_picture(self, shape): - if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.PICTURE: - return True - if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.PLACEHOLDER: - if hasattr(shape, "image"): + try: + if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.PICTURE: return True + if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.PLACEHOLDER: + if hasattr(shape, "image"): + return True + except NotImplementedError: + # https://python-pptx.readthedocs.io/en/latest/_modules/pptx/shapes/autoshape.html + # Not all shape types are implemented in python-pptx + logger.warning("Encountered an unimplemented shape type.") + return False def _is_table(self, shape): - if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.TABLE: - return True + try: + if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.TABLE: + return True + except NotImplementedError: + # # https://python-pptx.readthedocs.io/en/latest/_modules/pptx/shapes/autoshape.html + # Not all shape types are implemented in python-pptx + logger.warning("Encountered an unimplemented shape type.") return False def _convert_chart_to_markdown(self, chart): - md = "\n\n### Chart" - if chart.has_title: - md += f": {chart.chart_title.text_frame.text}" - md += "\n\n" - data = [] - category_names = [c.label for c in chart.plots[0].categories] - series_names = [s.name for s in chart.series] - data.append(["Category"] + series_names) - - for idx, category in enumerate(category_names): - row = [category] - for series in chart.series: - row.append(series.values[idx]) - data.append(row) - - markdown_table = [] - for row in data: - markdown_table.append("| " + " | ".join(map(str, row)) + " |") - header = markdown_table[0] - separator = "|" + "|".join(["---"] * len(data[0])) + "|" - return md + "\n".join([header, separator] + markdown_table[1:]) + try: + md = "\n\n### Chart" + if chart.has_title: + md += f": {chart.chart_title.text_frame.text}" + md += "\n\n" + data = [] + category_names = [c.label for c in chart.plots[0].categories] + series_names = [s.name for s in chart.series] + data.append(["Category"] + series_names) + + for idx, category in enumerate(category_names): + row = [category] + for series in chart.series: + row.append(series.values[idx]) + data.append(row) + + markdown_table = [] + for row in data: + markdown_table.append("| " + " | ".join(map(str, row)) + " |") + header = markdown_table[0] + separator = "|" + "|".join(["---"] * len(data[0])) + "|" + return md + "\n".join([header, separator] + markdown_table[1:]) + except ValueError as e: + # Handle the specific error for unsupported chart types + if "unsupported plot type" in str(e): + return "\n\n[unsupported chart]\n\n" + except Exception: + # Catch any other exceptions that might occur + return "\n\n[unsupported chart]\n\n" class PPTXLoader(BaseLoader): diff --git a/pyproject.toml b/pyproject.toml index 90805c55b..e097ba0cc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,6 +44,7 @@ dependencies = [ "hdbscan>=0.8.40", "pytest-env>=1.1.5", "markitdown[docx]>=0.1.3", + "html-to-markdown>=2.4.0", ] [dependency-groups] diff --git a/uv.lock b/uv.lock index f4b103852..47a64b717 100644 --- a/uv.lock +++ b/uv.lock @@ -990,7 +990,9 @@ dependencies = [ sdist = { url = "https://files.pythonhosted.org/packages/c1/84/6b010387b795f774e1ec695df3c8660c15abd041783647d5e7e4076bfc6b/hdbscan-0.8.40.tar.gz", hash = "sha256:c9e383ff17beee0591075ff65d524bda5b5a35dfb01d218245a7ba30c8d48a17", size = 6904096 } wheels = [ { url = "https://files.pythonhosted.org/packages/33/ff/4739886abb990dc6feb7b02eafb38a7eaf090fffef6336e70a03d693f433/hdbscan-0.8.40-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:353eaa22e42bee69df095744dbb8b29360e516bd9dcb84580dceeeb755f004cc", size = 1497291 }, + { url = "https://files.pythonhosted.org/packages/f0/0f/97a315772abf99b3c230e3d57f3fa426d163ce4d6070241d68a3f0241ea9/hdbscan-0.8.40-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:991e745aa51abfb8abfb0e1525b9309df03a2f67fdd8df96e18f91fe7fe06806", size = 4362227 }, { url = "https://files.pythonhosted.org/packages/c0/cb/6b4254f8a33e075118512e55acf3485c155ea52c6c35d69a985bdc59297c/hdbscan-0.8.40-cp312-cp312-win_amd64.whl", hash = "sha256:1b55a935ed7b329adac52072e1c4028979dfc54312ca08de2deece9c97d6ebb1", size = 726198 }, + { url = "https://files.pythonhosted.org/packages/80/2d/ca4d81a5aa5b8ccde1d41b892a2f480c2df238c58f113eee4df50473a3b0/hdbscan-0.8.40-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:32ea7bc4ce8854b5549d341edc841a29766feb62f8c399520e6e0940a41c5e39", size = 4336968 }, ] [[package]] @@ -1017,6 +1019,17 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/07/c6/80c95b1b2b94682a72cbdbfb85b81ae2daffa4291fbfa1b1464502ede10d/hpack-4.1.0-py3-none-any.whl", hash = "sha256:157ac792668d995c657d93111f46b4535ed114f0c9c8d672271bbec7eae1b496", size = 34357 }, ] +[[package]] +name = "html-to-markdown" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/47/3b/087769ea5ca7d5a48f7fcc06a7bb20825de0aec6caa42ef408b3598ca1c2/html_to_markdown-2.4.0.tar.gz", hash = "sha256:d77cad62eeafc1ae86875963505d7ce307ea6bdb88571d15c0dcef1546f6948a", size = 1906223 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/08/e72ef1a9472003f6725a67bf16f4d28687ede9e71cdbe4aa75474b99eed7/html_to_markdown-2.4.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:edbc4889746024f8f0b812770358119e2adfba5fdf35a8af5da3df4fa0cf5efc", size = 4814069 }, + { url = "https://files.pythonhosted.org/packages/83/b6/8ae4514c4b74678ecc9cbf865aa2dd19436b78061b7dbe38b767e5049b96/html_to_markdown-2.4.0-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1b673ee764693350697b956258f66fac57c48ff5ff48ff4da374e211e1c86472", size = 5334332 }, + { url = "https://files.pythonhosted.org/packages/e5/95/8bcf05476db7fc3359fe55933bbafb4ff3051c6c80ca71e90e5fc8a8c425/html_to_markdown-2.4.0-cp310-abi3-win_amd64.whl", hash = "sha256:33b59ebd528649cfeccf8dcf442b198b29f5b609ea8153f32e1970293c51383d", size = 5082797 }, +] + [[package]] name = "httpcore" version = "1.0.9" @@ -2379,6 +2392,7 @@ dependencies = [ { name = "einops" }, { name = "eml-parser" }, { name = "hdbscan" }, + { name = "html-to-markdown" }, { name = "hydra-core" }, { name = "infinity-client" }, { name = "langchain-community" }, @@ -2427,6 +2441,7 @@ requires-dist = [ { name = "einops", specifier = ">=0.8.1" }, { name = "eml-parser", specifier = ">=2.0.0" }, { name = "hdbscan", specifier = ">=0.8.40" }, + { name = "html-to-markdown", specifier = ">=2.4.0" }, { name = "hydra-core", specifier = ">=1.3.2" }, { name = "infinity-client", specifier = ">=0.0.76" }, { name = "langchain-community", specifier = ">=0.3.18" }, From eb5ea032018b55aadd3ca1e4f7c179fca46ffdae Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Wed, 22 Oct 2025 12:13:51 +0200 Subject: [PATCH 124/126] Wait for OpenRAG to start --- .github/workflows/smoke_test/index_docs.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/smoke_test/index_docs.sh b/.github/workflows/smoke_test/index_docs.sh index f024a1064..379b4a518 100755 --- a/.github/workflows/smoke_test/index_docs.sh +++ b/.github/workflows/smoke_test/index_docs.sh @@ -8,7 +8,18 @@ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ope docker logs openrag-openrag-cpu-1 -sleep 180s +while true; do + STATUS_CODE=$(curl -s -o /dev/null -w "%{http_code}" "${OPENRAG_ADDR}:8080/health_check") + if [ "$STATUS_CODE" -eq 200 ]; then + echo "$(date): API is up and running" + break + else + echo "$(date): Health check failed with status $STATUS_CODE, retrying..." + sleep 10 +fi +done + +sleep 30s python3 utility/data_indexer.py \ -u http://${OPENRAG_ADDR}:8080 \ From 0fbf6f2f5f83decf259958a191e69669edeeb956 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Wed, 22 Oct 2025 12:49:38 +0200 Subject: [PATCH 125/126] Print queue/info and queue/tasks --- .github/workflows/smoke_test/wait_for_tasks_completed.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/smoke_test/wait_for_tasks_completed.sh b/.github/workflows/smoke_test/wait_for_tasks_completed.sh index 43d228fdb..93cf34923 100755 --- a/.github/workflows/smoke_test/wait_for_tasks_completed.sh +++ b/.github/workflows/smoke_test/wait_for_tasks_completed.sh @@ -25,6 +25,9 @@ do break fi + curl -fs "${ADDR}:${PORT}/queue/info" + curl -fs "${ADDR}:${PORT}/queue/tasks" + echo "Waiting: ${tc} tasks completed, ${tf} tasks failed on ${ADDR}:${PORT}" sleep 10s done From 783bdf6e12a06e98665ae5eddcba3fb2df7ef1b8 Mon Sep 17 00:00:00 2001 From: Victor <194116445+dodekapod@users.noreply.github.com> Date: Wed, 22 Oct 2025 13:05:58 +0200 Subject: [PATCH 126/126] - tasks --- .github/workflows/smoke_test/wait_for_tasks_completed.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/smoke_test/wait_for_tasks_completed.sh b/.github/workflows/smoke_test/wait_for_tasks_completed.sh index 93cf34923..d63237cb4 100755 --- a/.github/workflows/smoke_test/wait_for_tasks_completed.sh +++ b/.github/workflows/smoke_test/wait_for_tasks_completed.sh @@ -25,8 +25,7 @@ do break fi - curl -fs "${ADDR}:${PORT}/queue/info" - curl -fs "${ADDR}:${PORT}/queue/tasks" + curl -fs "${ADDR}:${PORT}/queue/info" | jq echo "Waiting: ${tc} tasks completed, ${tf} tasks failed on ${ADDR}:${PORT}" sleep 10s