diff --git a/.gitignore b/.gitignore index cf99758..3445977 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ /target -Justfile \ No newline at end of file +Justfile +/commit.sh +/GO.sh +/DROP_DB.sh diff --git a/Cargo.lock b/Cargo.lock index 37f1db1..4a02de3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -835,12 +835,14 @@ dependencies = [ "jsonwebtoken", "md5", "refinery", + "regex", "serde", "size", "tokio", "tokio-postgres", "tracing", "tracing-subscriber", + "uuid", ] [[package]] @@ -1587,6 +1589,12 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + [[package]] name = "ryu" version = "1.0.20" @@ -2165,6 +2173,17 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +[[package]] +name = "uuid" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" +dependencies = [ + "getrandom 0.3.2", + "js-sys", + "wasm-bindgen", +] + [[package]] name = "valuable" version = "0.1.1" @@ -2216,6 +2235,7 @@ checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] diff --git a/README.md b/README.md index b370cdb..17eb7d4 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,34 @@ Hulykvs is a simple key-value store service implemented in Rust. It uses cockroachdb as the backend and provides a simple http api for storing and retrieving key-value pairs. -## API +## API v2 +Create a key-value pair api + +```POST /api2/{workspace}/{namespace}/{key}``` +Stores request payload as the value for the given key in the given namespace. Existing keys will be overwritten. Returs 204 (NoContent) on sucesss. + + +```GET /api2/{workspace}/{namespace}/{key}``` +Retrieves the value for the given key in the given namespace. Returns 404 if the key does not exist. + + +```DELETE /api2/{workspace}/{namespace}/{key}``` +Deletes the key-value pair for the given key in the given namespace. Returns 404 if the key does not exist, 204 (NoContent) on success, 404 if the key does not exist. + + +```GET /api2/{workspace}/{namespace}?[prefix=]``` +Retrieves all key-value pairs in the given namespace. Optionally, a prefix can be provided to filter the results. The following structure is returned: +```json +{ + "workspace": "workspace", + "namespace": "namespace", + "count": 3, + "keys": ["key1", "key2", "keyN"] +} +``` +## API (old) +workspace = "defaultspace" + Create a key-value pair ```POST /api/{namespace}/{key}``` @@ -20,14 +47,14 @@ Deletes the key-value pair for the given key in the given namespace. Returns 404 Retrieves all key-value pairs in the given namespace. Optionally, a prefix can be provided to filter the results. The following structure is returned: ```json { - "namespace": "namespace", + "namespace": "namespace", "count": 3, "keys": ["key1", "key2", "keyN"] } ``` - + ## Running -Pre-build docker images is available at: hardcoreeng/service_hulykvs:{tag}. +Pre-build docker images is available at: hardcoreeng/service_hulykvs:{tag}. You can use the following command to run the image locally: ```bash diff --git a/commmit.sh b/commmit.sh new file mode 100755 index 0000000..cf5505a --- /dev/null +++ b/commmit.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +clear + +#git checkout -b feature/db_uuid_migrate +git add . +#git commit -m "Add API v2 with workspace" +#git push origin feature/workspace-support \ No newline at end of file diff --git a/hulykvs/hulykvs b/hulykvs/hulykvs new file mode 120000 index 0000000..20a8ba0 --- /dev/null +++ b/hulykvs/hulykvs @@ -0,0 +1 @@ +/home/work/huly.io/hulykvs/target/release/hulykvs \ No newline at end of file diff --git a/hulykvs_server/Cargo.toml b/hulykvs_server/Cargo.toml index dbfd64f..c921cab 100644 --- a/hulykvs_server/Cargo.toml +++ b/hulykvs_server/Cargo.toml @@ -19,7 +19,13 @@ bb8-postgres = "0.9.0" md5 = "0.7.0" jsonwebtoken = "9.3.1" size = { version = "0.5.0", features = ["serde"] } +uuid = { version = "1.7", features = ["v4"] } +regex = "1.10" [[bin]] name = "hulykvs" path = "src/main.rs" + +[build-dependencies] +regex = "1" + diff --git a/hulykvs_server/build.rs b/hulykvs_server/build.rs new file mode 100644 index 0000000..e41d228 --- /dev/null +++ b/hulykvs_server/build.rs @@ -0,0 +1,49 @@ +use std::{env, fs, path::Path}; +use regex::Regex; + +fn main() { + + let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); + let root = Path::new(&manifest_dir); + + // UUID from TOML + + let config_path = root.join("src/config/default.toml"); + let text = fs::read_to_string(&config_path).expect("Cannot read default.toml"); + + let uuid_line = text + .lines() + .find(|line| line.trim_start().starts_with("default_workspace_uuid")) + .expect("default_workspace_uuid not found"); + + let uuid = uuid_line + .split('=') + .nth(1) + .expect("No = in line") + .trim() + .trim_matches('"') + .to_string(); + + let migration_path = root.join("etc/migrations/V2__workspace_uuid.sql"); + + let original_sql = fs::read_to_string(&migration_path).expect("Cannot read migration"); + + // UUID + let re = Regex::new( + r"UUID NOT NULL DEFAULT '([0-9a-fA-F-]{36})'", + ).unwrap(); + + let patched_sql = re.replace_all(&original_sql, |caps: ®ex::Captures| { + if &caps[1] != uuid { + caps[0].replace(&caps[1], &uuid) + } else { + caps[0].to_string() + } + }); + + if patched_sql != original_sql { + fs::write(&migration_path, patched_sql.as_ref()) + .expect("Failed to write patched migration"); + println!("cargo:warning=Patched migration V2 with UUID: {}", uuid); + } +} diff --git a/hulykvs_server/etc/migrations/V2__workspace_uuid.sql b/hulykvs_server/etc/migrations/V2__workspace_uuid.sql new file mode 100644 index 0000000..4ba47f8 --- /dev/null +++ b/hulykvs_server/etc/migrations/V2__workspace_uuid.sql @@ -0,0 +1 @@ +ALTER TABLE kvs ADD COLUMN workspace UUID NOT NULL DEFAULT 'bb793ec1-252e-4419-8998-7f220ababdfa'; diff --git a/hulykvs_server/etc/migrations/V3__workspace_uuid.sql b/hulykvs_server/etc/migrations/V3__workspace_uuid.sql new file mode 100644 index 0000000..8736265 --- /dev/null +++ b/hulykvs_server/etc/migrations/V3__workspace_uuid.sql @@ -0,0 +1 @@ +ALTER TABLE kvs ALTER PRIMARY KEY USING COLUMNS (workspace, namespace, key); diff --git a/hulykvs_server/etc/migrations/V4__workspace_uuid.sql b/hulykvs_server/etc/migrations/V4__workspace_uuid.sql new file mode 100644 index 0000000..ee13560 --- /dev/null +++ b/hulykvs_server/etc/migrations/V4__workspace_uuid.sql @@ -0,0 +1 @@ +ALTER TABLE kvs ALTER COLUMN workspace DROP DEFAULT; diff --git a/hulykvs_server/src/config.rs b/hulykvs_server/src/config.rs index 3d7a9e3..eb525dc 100644 --- a/hulykvs_server/src/config.rs +++ b/hulykvs_server/src/config.rs @@ -29,6 +29,8 @@ pub struct Config { pub db_scheme: String, pub payload_size_limit: size::Size, + + pub default_workspace_uuid: String, } pub static CONFIG: LazyLock = LazyLock::new(|| { diff --git a/hulykvs_server/src/config/default.toml b/hulykvs_server/src/config/default.toml index 7e33050..f5625aa 100644 --- a/hulykvs_server/src/config/default.toml +++ b/hulykvs_server/src/config/default.toml @@ -7,3 +7,6 @@ db_connection = "postgresql://root@huly.local:26257/defaultdb?sslmode=disable" db_scheme = "hulykvs" payload_size_limit = "2mb" + +default_workspace_uuid = "bb793ec1-252e-4419-8998-7f220ababdfa" + diff --git a/hulykvs_server/src/handlers.rs b/hulykvs_server/src/handlers.rs index 340e86c..728769c 100644 --- a/hulykvs_server/src/handlers.rs +++ b/hulykvs_server/src/handlers.rs @@ -39,10 +39,10 @@ pub async fn get( let connection = pool.get().await?; let statement = r#" - select value from kvs where namespace=$1 and key=$2 + select value from kvs where workspace=$1 and namespace=$2 and key=$3 "#; - let result = connection.query(statement, &[&nsstr, &keystr]).await?; + let result = connection.query(statement, &[&"defaultspace", &nsstr, &keystr]).await?; let response = match result.as_slice() { [] => HttpResponse::NotFound().finish(), @@ -76,16 +76,16 @@ pub async fn post( let md5 = md5::compute(&body); let statement = r#" - insert into kvs(namespace, key, md5, value) - values($1, $2, $3, $4) - on conflict(namespace, key) + insert into kvs(workspace, namespace, key, md5, value) + values($1, $2, $3, $4, $5) + on conflict(workspace, workspace, namespace, key) do update set md5=excluded.md5, value=excluded.value "#; connection - .execute(statement, &[&nsstr, &keystr, &&md5[..], &&body[..]]) + .execute(statement, &[&"defaultspace", &nsstr, &keystr, &&md5[..], &&body[..]]) .await?; Ok(HttpResponse::NoContent().finish()) @@ -111,10 +111,10 @@ pub async fn delete( let connection = pool.get().await?; let statement = r#" - delete from kvs where namespace=$1 and key=$2 + delete from kvs where workspace=$1 and namespace=$2 and key=$3 "#; - let response = match connection.execute(statement, &[&nsstr, &keystr]).await? { + let response = match connection.execute(statement, &[&"defaultspace", &nsstr, &keystr]).await? { 1 => HttpResponse::NoContent(), 0 => HttpResponse::NotFound(), _ => panic!("multiple rows deleted, unique constraint is probably violated"), @@ -157,16 +157,16 @@ pub async fn list( let response = if let Some(prefix) = &query.prefix { let pattern = format!("{}%", prefix); let statement = r#" - select key from kvs where namespace=$1 and key like $2 + select key from kvs where workspace=$1 and namespace=$2 and key like $3 "#; - connection.query(statement, &[&nsstr, &pattern]).await? + connection.query(statement, &[&"defaultspace",&nsstr, &pattern]).await? } else { let statement = r#" - select key from kvs where namespace=$1 + select key from kvs where workspace=$1 and namespace=$2 "#; - connection.query(statement, &[&nsstr]).await? + connection.query(statement, &[&"defaultspace",&nsstr]).await? }; let count = response.len(); diff --git a/hulykvs_server/src/handlers_v2.rs b/hulykvs_server/src/handlers_v2.rs new file mode 100644 index 0000000..a647703 --- /dev/null +++ b/hulykvs_server/src/handlers_v2.rs @@ -0,0 +1,205 @@ +// +// Copyright © 2025 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +use actix_web::{ + HttpResponse, error, + web::{self, Data, Json, Query}, +}; +use serde::{Deserialize, Serialize}; +use tracing::{error, trace}; + +use super::Pool; + +type BucketPath = web::Path<(String, String)>; +type ObjectPath = web::Path<(String, String, String)>; + +pub async fn get( + path: ObjectPath, + pool: Data, +) -> Result { + let (workspace, namespace, key) = path.into_inner(); + trace!(workspace, namespace, key, "get request"); + + let wsstr = workspace.as_str(); + let nsstr = namespace.as_str(); + let keystr = key.as_str(); + + async move || -> anyhow::Result { + let connection = pool.get().await?; + + let statement = r#" + select value from kvs where workspace=$1 and namespace=$2 and key=$3 + "#; + + let result = connection.query(statement, &[&wsstr, &nsstr, &keystr]).await?; + + let response = match result.as_slice() { + [] => HttpResponse::NotFound().finish(), + [found] => HttpResponse::Ok().body(found.get::<_, Vec>("value")), + _ => panic!("multiple rows found, unique constraint is probably violated"), + }; + + Ok(response) + }() + .await + .map_err(|error| { + error!(op = "get", workspace, namespace, key, ?error, "internal error"); + error::ErrorInternalServerError("") + }) +} + + + +pub async fn post( + path: ObjectPath, + pool: Data, + body: web::Bytes, +) -> Result { + let (workspace, namespace, key) = path.into_inner(); + trace!(workspace, namespace, key, "post request"); + + let wsstr = workspace.as_str(); + let nsstr = namespace.as_str(); + let keystr = key.as_str(); + + async move || -> anyhow::Result { + let connection = pool.get().await?; + + let md5 = md5::compute(&body); + + let statement = r#" + INSERT INTO kvs(workspace, namespace, key, md5, value) + VALUES($1, $2, $3, $4, $5) + ON CONFLICT (workspace, namespace, key) + DO UPDATE SET + md5 = excluded.md5, + value = excluded.value + "#; + + connection + .execute(statement, &[&wsstr, &nsstr, &keystr, &&md5[..], &&body[..]]) + .await?; + + Ok(HttpResponse::NoContent().finish()) + }() + .await + .map_err(|error| { + error!(op = "upsert", workspace, namespace, key, ?error, "internal error"); + error::ErrorInternalServerError("") + }) +} + + + +pub async fn delete( + path: ObjectPath, + pool: Data, +) -> Result { + let (workspace, namespace, key) = path.into_inner(); + trace!(workspace, namespace, key, "delete request"); + + let wsstr = workspace.as_str(); + let nsstr = namespace.as_str(); + let keystr = key.as_str(); + + async move || -> anyhow::Result { + let connection = pool.get().await?; + + let statement = r#" + DELETE FROM kvs WHERE workspace=$1 AND namespace=$2 AND key=$3 + "#; + + let response = match connection.execute(statement, &[&wsstr, &nsstr, &keystr]).await? { + 1 => HttpResponse::NoContent(), + 0 => HttpResponse::NotFound(), + _ => panic!("multiple rows deleted, unique constraint is probably violated"), + }; + + Ok(response.into()) + }() + .await + .map_err(|error| { + error!(op = "delete", workspace, namespace, key, ?error, "internal error"); + error::ErrorInternalServerError("") + }) +} + + +#[derive(Deserialize)] +pub struct ListInfo { + prefix: Option, +} + +#[derive(Serialize)] +pub struct ListResponse { + workspace: String, + namespace: String, + count: usize, + keys: Vec, +} + +pub async fn list( + path: BucketPath, + pool: Data, + query: Query, +) -> Result, actix_web::error::Error> { + let (workspace, namespace) = path.into_inner(); + trace!(workspace, namespace, prefix = ?query.prefix, "list request"); + + let wsstr = workspace.as_str(); + let nsstr = namespace.as_str(); + + async move || -> anyhow::Result> { + let connection = pool.get().await?; + + let response = if let Some(prefix) = &query.prefix { + let pattern = format!("{}%", prefix); + let statement = r#" + select key from kvs where workspace=$1 and namespace=$2 and key like $3 + "#; + + connection.query(statement, &[&wsstr, &nsstr, &pattern]).await? + } else { + let statement = r#" + select key from kvs where workspace=$1 and namespace=$2 + "#; + + connection.query(statement, &[&wsstr, &nsstr]).await? + }; + + let count = response.len(); + + let keys = response.into_iter().map(|row| row.get(0)).collect(); + +/* + let mut keys = Vec::new(); + for row in response { + keys.push(row.get::<_, String>(0)); + } +*/ + + Ok(Json(ListResponse { + keys, + count, + namespace: nsstr.to_owned(), + workspace: wsstr.to_owned(), + })) + }() + .await + .map_err(|error| { + error!(op = "list", workspace, namespace, ?error, "internal error"); + error::ErrorInternalServerError("") + }) +} diff --git a/hulykvs_server/src/main.rs b/hulykvs_server/src/main.rs index 74424d0..6b71f9b 100644 --- a/hulykvs_server/src/main.rs +++ b/hulykvs_server/src/main.rs @@ -29,6 +29,7 @@ use tracing::info; mod config; mod handlers; +mod handlers_v2; mod token; use config::CONFIG; @@ -147,6 +148,14 @@ async fn main() -> anyhow::Result<()> { .route("/{bucket}/{id}", web::post().to(handlers::post)) .route("/{bucket}/{id}", web::delete().to(handlers::delete)), ) + .service( + web::scope("/api2") + .wrap(middleware::from_fn(interceptor)) + .route("/{workspace}/{bucket}", web::get().to(handlers_v2::list)) + .route("/{workspace}/{bucket}/{id}", web::get().to(handlers_v2::get)) + .route("/{workspace}/{bucket}/{id}", web::post().to(handlers_v2::post)) + .route("/{workspace}/{bucket}/{id}", web::delete().to(handlers_v2::delete)), + ) .route("/status", web::get().to(async || "ok")) }) .bind(socket)? diff --git a/scripts/claims.json b/scripts/claims.json new file mode 100644 index 0000000..59b9b83 --- /dev/null +++ b/scripts/claims.json @@ -0,0 +1,4 @@ +{ + "account": "lleo", + "extra": {} +} \ No newline at end of file diff --git a/scripts/db_view.sh b/scripts/db_view.sh new file mode 100755 index 0000000..f9cae58 --- /dev/null +++ b/scripts/db_view.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +clear + +CN="postgresql://root@huly.local:26257/defaultdb?sslmode=disable" + +#psql "$CN" -c "SELECT * FROM hulykvs.kvs;" +psql "$CN" -c "SELECT workspace,namespace,key,convert_from(value,'UTF8') AS value, encode(md5,'hex') AS md5 FROM hulykvs.kvs ORDER BY namespace, key;" diff --git a/scripts/off/desktop-package/.env b/scripts/off/desktop-package/.env new file mode 100644 index 0000000..ab09a13 --- /dev/null +++ b/scripts/off/desktop-package/.env @@ -0,0 +1,3 @@ +# APPLE_ID=team-member-apple-id +# APPLE_ID_APP_PASS=team-members-app-pass +# TEAM_ID=apple-dev-team-id \ No newline at end of file diff --git a/scripts/off/desktop-package/config/rig.json b/scripts/off/desktop-package/config/rig.json new file mode 100644 index 0000000..b583544 --- /dev/null +++ b/scripts/off/desktop-package/config/rig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json", + "rigPackageName": "@hcengineering/platform-rig", + "rigProfile": "package" +} diff --git a/scripts/off/desktop-package/entitlements.mac.plist b/scripts/off/desktop-package/entitlements.mac.plist new file mode 100644 index 0000000..7eb1b07 --- /dev/null +++ b/scripts/off/desktop-package/entitlements.mac.plist @@ -0,0 +1,14 @@ + + + + + com.apple.security.cs.allow-unsigned-executable-memory + + com.apple.security.cs.allow-jit + + com.apple.security.device.audio-input + + com.apple.security.device.camera + + + diff --git a/scripts/off/desktop-package/package.json b/scripts/off/desktop-package/package.json new file mode 100644 index 0000000..9405473 --- /dev/null +++ b/scripts/off/desktop-package/package.json @@ -0,0 +1,94 @@ +{ + "name": "desktop", + "version": "0.6.435", + "main": "dist/main/electron.js", + "author": "Hardcore Engineering ", + "template": "@hcengineering/default-package", + "scripts": { + "_phase:package": "rushx package", + "package": "rushx bump && rm -rf ./dist && cp -r ../desktop/dist . && cp ../desktop/.env ./dist && echo 'done'", + "dist": "cross-env CSC_IDENTITY_AUTO_DISCOVERY=false NODE_ENV=production VERSION=$(node ../common/scripts/show_tag.js) MODEL_VERSION=$(node ../common/scripts/show_version.js) electron-builder build -p onTag", + "dist-local": "cross-env CSC_IDENTITY_AUTO_DISCOVERY=false NODE_ENV=production VERSION=$(node ../common/scripts/show_tag.js) MODEL_VERSION=$(node ../common/scripts/show_version.js) electron-builder build", + "dist-signed": "cross-env CSC_IDENTITY_AUTO_DISCOVERY=true NODE_ENV=production VERSION=$(node ../common/scripts/show_tag.js) MODEL_VERSION=$(node ../common/scripts/show_version.js) electron-builder build -c.afterSign=scripts/notarize.js -p onTag", + "dist-mac-win": "cross-env CSC_IDENTITY_AUTO_DISCOVERY=false NODE_ENV=production VERSION=$(node ../common/scripts/show_tag.js) MODEL_VERSION=$(node ../common/scripts/show_version.js) electron-builder build --windows --x64", + "format": "echo done", + "bump": "bump-package-version" + }, + "devDependencies": { + "@hcengineering/platform-rig": "^0.6.0", + "@hcengineering/desktop": "^0.6.0", + "@vercel/webpack-asset-relocator-loader": "^1.7.3", + "node-loader": "~2.0.0", + "cross-env": "~7.0.3", + "typescript": "^5.8.3", + "electron": "^36.3.1", + "@types/node": "^22.15.29", + "electron-builder": "^25.1.8", + "@electron/notarize": "^2.3.2" + }, + "dependencies": { + "electron-squirrel-startup": "~1.0.0", + "dotenv": "~16.0.0" + }, + "homepage": "https://huly.io/", + "productName": "Huly Desktop", + "description": "Huly Desktop experience", + "build": { + "productName": "Huly", + "appId": "hc.hcengineering.Huly", + "directories": { + "output": "deploy" + }, + "files": [ + "./dist/**" + ], + "mac": { + "category": "public.app-category.utilities", + "artifactName": "Huly-macos-${version}-${arch}.${ext}", + "target": "default", + "icon": "./src/AppIcon.icns", + "hardenedRuntime": true, + "entitlements": "./entitlements.mac.plist", + "entitlementsInherit": "./entitlements.mac.plist", + "notarize": false, + "publish": { + "provider": "generic", + "url": "https://dist.huly.io", + "channel": "latest" + } + }, + "win": { + "target": [ + "zip", + "nsis" + ], + "artifactName": "Huly-windows-${version}.${ext}", + "verifyUpdateCodeSignature": false, + "icon": "./src/AppIcon.png", + "publish": { + "provider": "generic", + "url": "https://dist.huly.io", + "channel": "latest" + } + }, + "linux": { + "artifactName": "Huly-linux-${version}.${ext}", + "target": [ + "AppImage", + "deb", + "zip" + ], + "category": "Utility", + "publish": { + "provider": "generic", + "url": "https://dist.huly.io", + "channel": "latest" + } + } + }, + "keywords": [ + "electron", + "typescript", + "svelte" + ] +} diff --git a/scripts/off/desktop-package/readme.md b/scripts/off/desktop-package/readme.md new file mode 100644 index 0000000..39f8a7c --- /dev/null +++ b/scripts/off/desktop-package/readme.md @@ -0,0 +1,9 @@ +## Automatomatic updates + +All builds are published to R2 storage bucket avaialble at https://dist.huly.io + +To check the latest auto-updatable distributions see + +* MacOS: https://dist.huly.io/latest-mac.yml +* Linux: https://dist.huly.io/latest-linux.yml +* Windows: https://dist.huly.io/latest.yml diff --git a/scripts/off/desktop-package/scripts/copy-publish-artifacts.sh b/scripts/off/desktop-package/scripts/copy-publish-artifacts.sh new file mode 100755 index 0000000..90f3dd2 --- /dev/null +++ b/scripts/off/desktop-package/scripts/copy-publish-artifacts.sh @@ -0,0 +1,26 @@ +#!/bin/bash +SRC_FOLDER=deploy +TARGET_FOLDER=$1 +CHANNEL=latest + +set -e +if [ -d "$TARGET_FOLDER" ]; then rm -Rf $TARGET_FOLDER; fi +mkdir $TARGET_FOLDER + +cp $SRC_FOLDER/*.blockmap $TARGET_FOLDER +cp $SRC_FOLDER/*.dmg $TARGET_FOLDER +cp $SRC_FOLDER/*.zip $TARGET_FOLDER +cp $SRC_FOLDER/*.AppImage $TARGET_FOLDER +cp $SRC_FOLDER/*.deb $TARGET_FOLDER +cp $SRC_FOLDER/*.exe $TARGET_FOLDER +cp $SRC_FOLDER/$CHANNEL.yml $TARGET_FOLDER +cp $SRC_FOLDER/$CHANNEL-mac.yml $TARGET_FOLDER +cp $SRC_FOLDER/$CHANNEL-linux.yml $TARGET_FOLDER + +# Create version-specific description files +rawVersion=$(node ../common/scripts/show_tag.js) +version=${rawVersion:1:${#rawVersion}-2} + +cp $SRC_FOLDER/$CHANNEL.yml $TARGET_FOLDER/${version}.yml +cp $SRC_FOLDER/$CHANNEL-mac.yml $TARGET_FOLDER/${version}-mac.yml +cp $SRC_FOLDER/$CHANNEL-linux.yml $TARGET_FOLDER/${version}-linux.yml diff --git a/scripts/off/desktop-package/scripts/notarize.js b/scripts/off/desktop-package/scripts/notarize.js new file mode 100644 index 0000000..929fc94 --- /dev/null +++ b/scripts/off/desktop-package/scripts/notarize.js @@ -0,0 +1,41 @@ +require('dotenv').config(); +const { notarize } = require('@electron/notarize'); + +async function retryNotarize(options, retries = 5, delay = 5000) { + for (let i = 0; i < retries; i++) { + try { + console.log(`Attempt ${i + 1} to notarize...`); + await notarize(options); + console.log('Notarization successful'); + return; + } catch (error) { + console.error(`Notarization attempt ${i + 1} failed:`, error); + if (i < retries - 1) { + console.log(`Retrying in ${delay / 1000} seconds...`); + await new Promise(resolve => setTimeout(resolve, delay)); + delay *= 2; // Increase delay for the next retry + } else { + console.log('All notarization attempts failed...'); + // Add any necessary teardown logic here + throw error; + } + } + } +} + +exports.default = async function notarizing(context) { + const { electronPlatformName, appOutDir } = context; + if (electronPlatformName !== 'darwin') { + return; + } + + const appName = context.packager.appInfo.productFilename; + + console.log('Starting custom notarization process...'); + await retryNotarize({ + appPath: `${appOutDir}/${appName}.app`, + appleId: process.env.APPLE_ID, + appleIdPassword: process.env.APPLE_ID_APP_PASS, + teamId: process.env.TEAM_ID + }); +}; diff --git a/scripts/off/desktop-package/src/AppIcon.icns b/scripts/off/desktop-package/src/AppIcon.icns new file mode 100644 index 0000000..18decea Binary files /dev/null and b/scripts/off/desktop-package/src/AppIcon.icns differ diff --git a/scripts/off/desktop-package/src/AppIcon.ico b/scripts/off/desktop-package/src/AppIcon.ico new file mode 100644 index 0000000..e5c1f32 Binary files /dev/null and b/scripts/off/desktop-package/src/AppIcon.ico differ diff --git a/scripts/off/desktop-package/src/AppIcon.png b/scripts/off/desktop-package/src/AppIcon.png new file mode 100644 index 0000000..9515b7b Binary files /dev/null and b/scripts/off/desktop-package/src/AppIcon.png differ diff --git a/scripts/off/desktop/.env b/scripts/off/desktop/.env new file mode 100644 index 0000000..a9d1aef --- /dev/null +++ b/scripts/off/desktop/.env @@ -0,0 +1,2 @@ +FRONT_URL=https://huly.app +CONFIG_URL=config.json diff --git a/scripts/off/desktop/.env-dev b/scripts/off/desktop/.env-dev new file mode 100644 index 0000000..936dd72 --- /dev/null +++ b/scripts/off/desktop/.env-dev @@ -0,0 +1,2 @@ +FRONT_URL=http://huly.local:8087 +CONFIG_URL=config.json diff --git a/scripts/off/desktop/.eslintrc.js b/scripts/off/desktop/.eslintrc.js new file mode 100644 index 0000000..72235dc --- /dev/null +++ b/scripts/off/desktop/.eslintrc.js @@ -0,0 +1,7 @@ +module.exports = { + extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'], + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.json' + } +} diff --git a/scripts/off/desktop/.validate/tsBuildInfoFile.info b/scripts/off/desktop/.validate/tsBuildInfoFile.info new file mode 100644 index 0000000..479cea1 --- /dev/null +++ b/scripts/off/desktop/.validate/tsBuildInfoFile.info @@ -0,0 +1 @@ +{"fileNames":["../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.array.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/__test__/main/selfCheckingNode.test.ts","../../common/temp/node_modules/.pnpm/@jest+expect-utils@29.7.0/node_modules/@jest/expect-utils/build/index.d.ts","../../common/temp/node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/index.d.ts","../../common/temp/node_modules/.pnpm/@sinclair+typebox@0.27.8/node_modules/@sinclair/typebox/typebox.d.ts","../../common/temp/node_modules/.pnpm/@jest+schemas@29.6.3/node_modules/@jest/schemas/build/index.d.ts","../../common/temp/node_modules/.pnpm/pretty-format@29.7.0/node_modules/pretty-format/build/index.d.ts","../../common/temp/node_modules/.pnpm/jest-diff@29.7.0/node_modules/jest-diff/build/index.d.ts","../../common/temp/node_modules/.pnpm/jest-matcher-utils@29.7.0/node_modules/jest-matcher-utils/build/index.d.ts","../../common/temp/node_modules/.pnpm/expect@29.7.0/node_modules/expect/build/index.d.ts","../../common/temp/node_modules/.pnpm/@types+jest@29.5.12/node_modules/@types/jest/index.d.ts","../../common/temp/node_modules/.pnpm/@testing-library+jest-dom@6.6.3/node_modules/@testing-library/jest-dom/types/matchers.d.ts","../../common/temp/node_modules/.pnpm/@testing-library+jest-dom@6.6.3/node_modules/@testing-library/jest-dom/types/jest.d.ts","../../common/temp/node_modules/.pnpm/@testing-library+jest-dom@6.6.3/node_modules/@testing-library/jest-dom/types/index.d.ts","../../packages/platform/types/platform.d.ts","../../packages/platform/types/metadata.d.ts","../../packages/platform/types/status.d.ts","../../packages/platform/types/event.d.ts","../../packages/platform/types/i18n.d.ts","../../packages/platform/types/resource.d.ts","../../packages/platform/types/testUtils.d.ts","../../packages/platform/types/index.d.ts","../../plugins/desktop-downloads/types/types.d.ts","../../plugins/desktop-downloads/types/plugin.d.ts","../../plugins/desktop-downloads/types/utils.d.ts","../../plugins/desktop-downloads/types/index.d.ts","../../common/temp/node_modules/.pnpm/simplytyped@3.3.0_typescript@5.8.3/node_modules/simplytyped/types/predicates.d.ts","../../common/temp/node_modules/.pnpm/simplytyped@3.3.0_typescript@5.8.3/node_modules/simplytyped/types/strings.d.ts","../../common/temp/node_modules/.pnpm/simplytyped@3.3.0_typescript@5.8.3/node_modules/simplytyped/types/conditionals.d.ts","../../common/temp/node_modules/.pnpm/simplytyped@3.3.0_typescript@5.8.3/node_modules/simplytyped/types/functions.d.ts","../../common/temp/node_modules/.pnpm/simplytyped@3.3.0_typescript@5.8.3/node_modules/simplytyped/types/numbers.d.ts","../../common/temp/node_modules/.pnpm/simplytyped@3.3.0_typescript@5.8.3/node_modules/simplytyped/types/objects.d.ts","../../common/temp/node_modules/.pnpm/simplytyped@3.3.0_typescript@5.8.3/node_modules/simplytyped/types/utils.d.ts","../../common/temp/node_modules/.pnpm/simplytyped@3.3.0_typescript@5.8.3/node_modules/simplytyped/types/tuples.d.ts","../../common/temp/node_modules/.pnpm/simplytyped@3.3.0_typescript@5.8.3/node_modules/simplytyped/types.d.ts","../../common/temp/node_modules/.pnpm/simplytyped@3.3.0_typescript@5.8.3/node_modules/simplytyped/impl/objects.d.ts","../../common/temp/node_modules/.pnpm/simplytyped@3.3.0_typescript@5.8.3/node_modules/simplytyped/impl.d.ts","../../common/temp/node_modules/.pnpm/simplytyped@3.3.0_typescript@5.8.3/node_modules/simplytyped/index.d.ts","../../packages/core/types/tx.d.ts","../../packages/core/types/storage.d.ts","../../packages/core/types/hierarchy.d.ts","../../packages/measurements/types/types.d.ts","../../packages/measurements/types/context.d.ts","../../packages/measurements/types/metrics.d.ts","../../packages/measurements/types/index.d.ts","../../packages/core/types/server.d.ts","../../packages/core/types/backup.d.ts","../../packages/core/types/memdb.d.ts","../../packages/core/types/client.d.ts","../../packages/core/types/operations.d.ts","../../packages/core/types/utils.d.ts","../../packages/core/types/classes.d.ts","../../packages/core/types/benchmark.d.ts","../../packages/core/types/status.d.ts","../../packages/core/types/component.d.ts","../../packages/core/types/collaboration.d.ts","../../packages/core/types/objvalue.d.ts","../../packages/core/types/operator.d.ts","../../packages/core/types/query.d.ts","../../packages/core/types/clone.d.ts","../../packages/core/types/common.d.ts","../../packages/core/types/time.d.ts","../../packages/core/types/index.d.ts","../../common/temp/node_modules/.pnpm/@types+estree@1.0.6/node_modules/@types/estree/index.d.ts","../../common/temp/node_modules/.pnpm/magic-string@0.30.7/node_modules/magic-string/dist/magic-string.cjs.d.ts","../../common/temp/node_modules/.pnpm/estree-walker@3.0.3/node_modules/estree-walker/types/walker.d.ts","../../common/temp/node_modules/.pnpm/estree-walker@3.0.3/node_modules/estree-walker/types/sync.d.ts","../../common/temp/node_modules/.pnpm/estree-walker@3.0.3/node_modules/estree-walker/types/async.d.ts","../../common/temp/node_modules/.pnpm/estree-walker@3.0.3/node_modules/estree-walker/types/index.d.ts","../../common/temp/node_modules/.pnpm/svelte@4.2.19/node_modules/svelte/types/index.d.ts","../../packages/ui/src/types.ts","../../plugins/drive/types/types.d.ts","../../plugins/drive/types/plugin.d.ts","../../plugins/drive/types/utils.d.ts","../../plugins/drive/types/analytics.d.ts","../../plugins/drive/types/index.d.ts","../../plugins/templates/types/index.d.ts","../../common/temp/node_modules/.pnpm/svelte@4.2.19/node_modules/svelte/store.d.ts","../../packages/ui/src/plugin.ts","../../packages/analytics/types/index.d.ts","../../packages/platform-rig/profiles/ui/svelte/index.d.ts","../../packages/theme/src/index.ts","../../packages/ui/src/modals.ts","../../packages/ui/src/popups.ts","../../packages/ui/src/location.ts","../../packages/ui/src/components/notifications/NotificationPosition.ts","../../packages/ui/src/components/notifications/NotificationSeverity.ts","../../packages/ui/src/components/notifications/Notification.ts","../../packages/ui/src/components/notifications/actions.ts","../../packages/ui/src/components/notifications/store.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/html-tag.d.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/anchor-tag-builder.d.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/match/abstract-match.d.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/match/email-match.d.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/parser/hashtag-utils.d.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/match/hashtag-match.d.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/parser/mention-utils.d.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/match/mention-match.d.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/match/phone-match.d.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/match/url-match.d.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/match/match.d.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/autolinker.d.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/match/index.d.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/parser/parse-matches.d.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/parser/index.d.ts","../../common/temp/node_modules/.pnpm/autolinker@4.0.0/node_modules/autolinker/dist/commonjs/index.d.ts","../../packages/ui/src/utils.ts","../../packages/ui/src/tooltips.ts","../../packages/ui/src/panelup.ts","../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/typings.d.ts","../../common/temp/node_modules/.pnpm/date-fns-tz@2.0.0_date-fns@2.30.0/node_modules/date-fns-tz/typings.d.ts","../../packages/ui/src/components/calendar/internal/DateUtils.ts","../../packages/ui/src/colors.ts","../../packages/ui/src/focus.ts","../../packages/ui/src/resize.ts","../../packages/ui/src/lazy.ts","../../packages/ui/src/stores.ts","../../packages/ui/src/index.ts","../../plugins/preference/types/index.d.ts","../../plugins/view/types/types.d.ts","../../plugins/view/types/utils.d.ts","../../plugins/view/types/index.d.ts","../../plugins/card/types/analytics.d.ts","../../plugins/card/types/index.d.ts","../../plugins/contact/types/types.d.ts","../../plugins/contact/types/cache.d.ts","../../plugins/contact/types/utils.d.ts","../../plugins/contact/types/analytics.d.ts","../../plugins/contact/types/avatar.d.ts","../../plugins/contact/types/index.d.ts","../../plugins/activity/types/index.d.ts","../../plugins/setting/types/spaceTypeEditor.d.ts","../../plugins/setting/types/utils.d.ts","../../plugins/setting/types/analytics.d.ts","../../plugins/setting/types/index.d.ts","../../plugins/notification/types/types.d.ts","../../plugins/notification/types/utils.d.ts","../../plugins/notification/types/index.d.ts","../../plugins/workbench/types/types.d.ts","../../plugins/workbench/types/plugin.d.ts","../../plugins/workbench/types/analytics.d.ts","../../plugins/workbench/types/utils.d.ts","../../plugins/workbench/types/index.d.ts","../../plugins/calendar/types/utils.d.ts","../../plugins/calendar/types/index.d.ts","../../plugins/love/types/types.d.ts","../../plugins/love/types/plugin.d.ts","../../plugins/love/types/analytics.d.ts","../../plugins/love/types/utils.d.ts","../../plugins/love/types/index.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/compatibility/disposable.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/compatibility/indexable.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/compatibility/iterators.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/compatibility/index.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/globals.typedarray.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/buffer.buffer.d.ts","../../common/temp/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts","../../common/temp/node_modules/.pnpm/buffer@5.6.0/node_modules/buffer/index.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../common/temp/node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/globals.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/assert.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/assert/strict.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/async_hooks.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/buffer.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/child_process.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/cluster.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/console.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/constants.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/crypto.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/dgram.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/diagnostics_channel.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/dns.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/dns/promises.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/domain.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/dom-events.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/events.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/fs.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/fs/promises.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/http.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/http2.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/https.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/inspector.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/module.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/net.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/os.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/path.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/perf_hooks.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/process.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/punycode.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/querystring.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/readline.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/readline/promises.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/repl.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/sea.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/sqlite.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/stream.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/stream/promises.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/stream/consumers.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/stream/web.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/string_decoder.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/test.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/timers.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/timers/promises.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/tls.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/trace_events.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/tty.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/url.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/util.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/v8.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/vm.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/wasi.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/worker_threads.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/zlib.d.ts","../../common/temp/node_modules/.pnpm/@types+node@22.15.29/node_modules/@types/node/index.d.ts","../../common/temp/node_modules/.pnpm/electron@36.3.1/node_modules/electron/electron.d.ts","../src/ui/types.ts","../src/ui/typesUtils.ts","../src/ui/titleBarMenuState.ts","../src/ui/titleBarMenu.ts","../src/__test__/ui/menuBuilder.test.ts","../src/__test__/ui/selfCheckingDom.test.ts","../src/__test__/ui/titleBarMenuState.test.ts","../src/__test__/ui/typesUtils.test.ts","../../common/temp/node_modules/.pnpm/commander@8.3.0/node_modules/commander/typings/index.d.ts","../src/main/args.ts","../src/main/customMenu.ts","../../common/temp/node_modules/.pnpm/electron-log@5.1.7/node_modules/electron-log/src/index.d.ts","../src/main/permissions.ts","../src/main/standardMenu.ts","../../common/temp/node_modules/.pnpm/dotenv@16.0.3/node_modules/dotenv/lib/main.d.ts","../../common/temp/node_modules/.pnpm/electron-context-menu@4.0.4/node_modules/electron-context-menu/index.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/primitive.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/typed-array.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/basic.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/observable-like.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/internal.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/except.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/simplify.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/writable.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/mutable.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/merge.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/merge-exclusive.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/require-at-least-one.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/require-exactly-one.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/require-all-or-none.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/remove-index-signature.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/partial-deep.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/partial-on-undefined-deep.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/readonly-deep.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/literal-union.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/promisable.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/opaque.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/invariant-of.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/set-optional.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/set-required.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/set-non-nullable.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/value-of.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/promise-value.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/async-return-type.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/conditional-keys.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/conditional-except.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/conditional-pick.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/union-to-intersection.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/stringified.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/fixed-length-array.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/multidimensional-array.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/multidimensional-readonly-array.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/iterable-element.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/entry.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/entries.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/set-return-type.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/asyncify.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/numeric.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/jsonify.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/schema.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/literal-to-primitive.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/string-key-of.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/exact.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/readonly-tuple.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/optional-keys-of.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/has-optional-keys.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/required-keys-of.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/has-required-keys.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/spread.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/split.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/camel-case.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/camel-cased-properties.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/camel-cased-properties-deep.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/delimiter-case.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/kebab-case.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/delimiter-cased-properties.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/kebab-cased-properties.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/delimiter-cased-properties-deep.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/kebab-cased-properties-deep.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/pascal-case.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/pascal-cased-properties.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/pascal-cased-properties-deep.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/snake-case.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/snake-cased-properties.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/snake-cased-properties-deep.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/includes.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/screaming-snake-case.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/join.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/trim.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/replace.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/get.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/last-array-element.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/package-json.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/source/tsconfig-json.d.ts","../../common/temp/node_modules/.pnpm/type-fest@2.19.0/node_modules/type-fest/index.d.ts","../../common/temp/node_modules/.pnpm/json-schema-typed@7.0.3/node_modules/json-schema-typed/dist-types/index.d.ts","../../common/temp/node_modules/.pnpm/conf@10.2.0/node_modules/conf/dist/source/types.d.ts","../../common/temp/node_modules/.pnpm/conf@10.2.0/node_modules/conf/dist/source/index.d.ts","../../common/temp/node_modules/.pnpm/electron-store@8.2.0/node_modules/electron-store/index.d.ts","../../common/temp/node_modules/.pnpm/builder-util-runtime@9.2.5/node_modules/builder-util-runtime/out/CancellationToken.d.ts","../../common/temp/node_modules/.pnpm/builder-util-runtime@9.2.5/node_modules/builder-util-runtime/out/ProgressCallbackTransform.d.ts","../../common/temp/node_modules/.pnpm/builder-util-runtime@9.2.5/node_modules/builder-util-runtime/out/httpExecutor.d.ts","../../common/temp/node_modules/.pnpm/builder-util-runtime@9.2.5/node_modules/builder-util-runtime/out/publishOptions.d.ts","../../common/temp/node_modules/.pnpm/builder-util-runtime@9.2.5/node_modules/builder-util-runtime/out/updateInfo.d.ts","../../common/temp/node_modules/.pnpm/builder-util-runtime@9.2.5/node_modules/builder-util-runtime/out/rfc2253Parser.d.ts","../../common/temp/node_modules/.pnpm/builder-util-runtime@9.2.5/node_modules/builder-util-runtime/out/uuid.d.ts","../../common/temp/node_modules/.pnpm/builder-util-runtime@9.2.5/node_modules/builder-util-runtime/out/xml.d.ts","../../common/temp/node_modules/.pnpm/builder-util-runtime@9.2.5/node_modules/builder-util-runtime/out/blockMapApi.d.ts","../../common/temp/node_modules/.pnpm/builder-util-runtime@9.2.5/node_modules/builder-util-runtime/out/error.d.ts","../../common/temp/node_modules/.pnpm/builder-util-runtime@9.2.5/node_modules/builder-util-runtime/out/MemoLazy.d.ts","../../common/temp/node_modules/.pnpm/builder-util-runtime@9.2.5/node_modules/builder-util-runtime/out/index.d.ts","../../common/temp/node_modules/.pnpm/lazy-val@1.0.5/node_modules/lazy-val/out/main.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/classes/semver.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/parse.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/valid.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/clean.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/inc.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/diff.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/major.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/minor.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/patch.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/prerelease.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/compare.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/rcompare.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/compare-loose.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/compare-build.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/sort.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/rsort.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/gt.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/lt.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/eq.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/neq.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/gte.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/lte.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/cmp.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/coerce.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/classes/comparator.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/classes/range.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/functions/satisfies.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/ranges/max-satisfying.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/ranges/min-satisfying.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/ranges/to-comparators.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/ranges/min-version.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/ranges/valid.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/ranges/outside.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/ranges/gtr.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/ranges/ltr.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/ranges/intersects.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/ranges/simplify.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/ranges/subset.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/internals/identifiers.d.ts","../../common/temp/node_modules/.pnpm/@types+semver@7.5.7/node_modules/@types/semver/index.d.ts","../../common/temp/node_modules/.pnpm/electron-updater@6.3.4/node_modules/electron-updater/out/AppAdapter.d.ts","../../common/temp/node_modules/.pnpm/electron-updater@6.3.4/node_modules/electron-updater/out/DownloadedUpdateHelper.d.ts","../../common/temp/node_modules/.pnpm/electron-updater@6.3.4/node_modules/electron-updater/out/electronHttpExecutor.d.ts","../../common/temp/node_modules/.pnpm/electron-updater@6.3.4/node_modules/electron-updater/out/providers/Provider.d.ts","../../common/temp/node_modules/.pnpm/tiny-typed-emitter@2.1.0/node_modules/tiny-typed-emitter/lib/index.d.ts","../../common/temp/node_modules/.pnpm/electron-updater@6.3.4/node_modules/electron-updater/out/AppUpdater.d.ts","../../common/temp/node_modules/.pnpm/electron-updater@6.3.4/node_modules/electron-updater/out/BaseUpdater.d.ts","../../common/temp/node_modules/.pnpm/electron-updater@6.3.4/node_modules/electron-updater/out/AppImageUpdater.d.ts","../../common/temp/node_modules/.pnpm/electron-updater@6.3.4/node_modules/electron-updater/out/DebUpdater.d.ts","../../common/temp/node_modules/.pnpm/electron-updater@6.3.4/node_modules/electron-updater/out/RpmUpdater.d.ts","../../common/temp/node_modules/.pnpm/electron-updater@6.3.4/node_modules/electron-updater/out/MacUpdater.d.ts","../../common/temp/node_modules/.pnpm/electron-updater@6.3.4/node_modules/electron-updater/out/NsisUpdater.d.ts","../../common/temp/node_modules/.pnpm/electron-updater@6.3.4/node_modules/electron-updater/out/main.d.ts","../src/main/updater.ts","../src/main/start.ts","../../packages/account-client/types/types.d.ts","../../packages/account-client/types/client.d.ts","../../packages/account-client/types/utils.d.ts","../../packages/account-client/types/index.d.ts","../../plugins/login/types/index.d.ts","../../common/temp/node_modules/.pnpm/@types+uuid@8.3.4/node_modules/@types/uuid/index.d.ts","../../packages/presentation/src/file.ts","../../packages/presentation/src/pipeline.ts","../../packages/presentation/src/preview.ts","../../packages/presentation/src/components/breadcrumbs/types.ts","../../packages/presentation/src/types.ts","../../packages/presentation/src/plugin.ts","../../packages/presentation/src/attributes.ts","../../packages/query/types/results.d.ts","../../packages/query/types/types.d.ts","../../packages/query/types/index.d.ts","../../common/temp/node_modules/.pnpm/fast-equals@5.2.2/node_modules/fast-equals/index.d.ts","../../packages/presentation/src/utils.ts","../../packages/presentation/src/filetypes.ts","../../packages/presentation/src/drafts.ts","../../packages/collaborator-client/types/client.d.ts","../../packages/collaborator-client/types/utils.d.ts","../../packages/collaborator-client/types/index.d.ts","../../packages/presentation/src/collaborator.ts","../../packages/presentation/src/configuration.ts","../../packages/presentation/src/context.ts","../../packages/presentation/src/components/extensions/manager.ts","../../packages/presentation/src/rules.ts","../../packages/presentation/src/search.ts","../../common/temp/node_modules/.pnpm/@types+png-chunks-extract@1.0.2/node_modules/@types/png-chunks-extract/index.d.ts","../../packages/presentation/src/image.ts","../../packages/presentation/src/sound.ts","../../packages/presentation/src/stats.ts","../../packages/presentation/src/drawing.ts","../../packages/presentation/src/link-preview.ts","../../communication/packages/types/types/core.d.ts","../../communication/packages/types/types/patch.d.ts","../../communication/packages/types/types/message.d.ts","../../communication/packages/types/types/file.d.ts","../../communication/packages/types/types/notification.d.ts","../../communication/packages/types/types/label.d.ts","../../communication/packages/types/types/query.d.ts","../../communication/packages/types/types/index.d.ts","../../communication/packages/sdk-types/types/events/common.d.ts","../../communication/packages/sdk-types/types/events/label.d.ts","../../communication/packages/sdk-types/types/events/message.d.ts","../../communication/packages/sdk-types/types/events/notification.d.ts","../../communication/packages/sdk-types/types/events/card.d.ts","../../communication/packages/sdk-types/types/events/event.d.ts","../../communication/packages/sdk-types/types/client.d.ts","../../communication/packages/sdk-types/types/db.d.ts","../../communication/packages/sdk-types/types/query.d.ts","../../communication/packages/sdk-types/types/serverApi.d.ts","../../communication/packages/sdk-types/types/domain.d.ts","../../communication/packages/sdk-types/types/index.d.ts","../../communication/packages/query/types/result.d.ts","../../communication/packages/query/types/types.d.ts","../../communication/packages/query/types/lq.d.ts","../../communication/packages/query/types/index.d.ts","../../communication/packages/client-query/types/query.d.ts","../../communication/packages/client-query/types/init.d.ts","../../communication/packages/client-query/types/index.d.ts","../../packages/presentation/src/communication.ts","../../packages/presentation/src/index.ts","../../plugins/chunter/types/utils.d.ts","../../plugins/chunter/types/analytics.d.ts","../../plugins/chunter/types/index.d.ts","../../plugins/ai-bot/types/rest.d.ts","../../plugins/ai-bot/types/index.d.ts","../../plugins/attachment/types/analytics.d.ts","../../plugins/attachment/types/index.d.ts","../../plugins/tags/types/analytics.d.ts","../../plugins/tags/types/index.d.ts","../../packages/rank/types/types.d.ts","../../packages/rank/types/utils.d.ts","../../packages/rank/types/index.d.ts","../../plugins/task/types/utils.d.ts","../../plugins/task/types/index.d.ts","../../plugins/bitrix/types/types.d.ts","../../plugins/bitrix/types/client.d.ts","../../plugins/gmail/types/analytics.d.ts","../../plugins/gmail/types/index.d.ts","../../plugins/bitrix/types/utils.d.ts","../../plugins/bitrix/types/sync.d.ts","../../plugins/bitrix/types/index.d.ts","../../plugins/board/types/index.d.ts","../../plugins/client/types/index.d.ts","../../plugins/request/types/index.d.ts","../../plugins/questions/types/doc-types/base.d.ts","../../plugins/questions/types/doc-types/mixin.d.ts","../../plugins/questions/types/doc-types/questions/MultipleChoice.d.ts","../../plugins/questions/types/doc-types/questions/Ordering.d.ts","../../plugins/questions/types/doc-types/questions/SingleChoice.d.ts","../../plugins/questions/types/doc-types/index.d.ts","../../plugins/questions/types/index.d.ts","../../plugins/training/types/types.d.ts","../../plugins/training/types/index.d.ts","../../plugins/controlled-documents/types/types.d.ts","../../plugins/controlled-documents/types/plugin.d.ts","../../plugins/controlled-documents/types/docutils.d.ts","../../plugins/controlled-documents/types/utils.d.ts","../../plugins/controlled-documents/types/index.d.ts","../../plugins/desktop-preferences/types/index.d.ts","../../plugins/diffview/types/types.d.ts","../../plugins/diffview/types/index.d.ts","../../plugins/document/types/types.d.ts","../../plugins/document/types/plugin.d.ts","../../plugins/document/types/analytics.d.ts","../../plugins/document/types/utils.d.ts","../../plugins/document/types/index.d.ts","../../plugins/export/types/plugin.d.ts","../../plugins/export/types/types.d.ts","../../plugins/export/types/index.d.ts","../../plugins/guest/types/utils.d.ts","../../plugins/guest/types/index.d.ts","../../plugins/hr/types/utils.d.ts","../../plugins/hr/types/analytics.d.ts","../../plugins/hr/types/index.d.ts","../../plugins/image-cropper/types/index.d.ts","../../plugins/inventory/types/index.d.ts","../../plugins/lead/types/analytics.d.ts","../../plugins/lead/types/index.d.ts","../../plugins/onboard/types/index.d.ts","../../plugins/presence/types/plugin.d.ts","../../plugins/presence/types/types.d.ts","../../plugins/presence/types/index.d.ts","../../plugins/time/types/analytics.d.ts","../../plugins/time/types/index.d.ts","../../plugins/process/types/types.d.ts","../../plugins/process/types/errors.d.ts","../../plugins/process/types/utils.d.ts","../../plugins/process/types/index.d.ts","../../plugins/products/types/types.d.ts","../../plugins/products/types/plugin.d.ts","../../plugins/products/types/index.d.ts","../../plugins/survey/types/types.d.ts","../../plugins/survey/types/index.d.ts","../../plugins/recruit/types/types.d.ts","../../plugins/recruit/types/analytics.d.ts","../../plugins/recruit/types/index.d.ts","../../packages/rekoni/types/types.d.ts","../../packages/rekoni/types/plugin.d.ts","../../packages/rekoni/types/index.d.ts","../../plugins/support/types/types.d.ts","../../plugins/support/types/utils.d.ts","../../plugins/support/types/index.d.ts","../../plugins/telegram/types/index.d.ts","../../plugins/test-management/types/types.d.ts","../../plugins/test-management/types/plugin.d.ts","../../plugins/test-management/types/analytics.d.ts","../../plugins/test-management/types/index.d.ts","../../plugins/tracker/types/analytics.d.ts","../../plugins/tracker/types/index.d.ts","../../plugins/media/types/plugin.d.ts","../../common/temp/node_modules/.pnpm/typed-emitter@2.1.0/node_modules/typed-emitter/index.d.ts","../../plugins/media/types/utils.d.ts","../../plugins/media/types/types.d.ts","../../plugins/media/types/index.d.ts","../../plugins/uploader/types/types.d.ts","../../plugins/uploader/types/plugin.d.ts","../../plugins/uploader/types/utils.d.ts","../../plugins/uploader/types/index.d.ts","../../plugins/recorder/types/index.d.ts","../../plugins/mail/types/index.d.ts","../../plugins/chat/types/index.d.ts","../../plugins/inbox/types/index.d.ts","../../plugins/achievement/types/index.d.ts","../../plugins/communication/types/types.d.ts","../../plugins/communication/types/index.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/types.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/appendSkinToneIndex.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/constants.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/fetchEmojis.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/fetchFromCDN.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/fetchMessages.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/fetchShortcodes.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/flattenEmojiData.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/fromCodepointToUnicode.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/fromHexcodeToCodepoint.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/fromUnicodeToHexcode.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/generateEmoticonPermutations.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/joinShortcodes.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/joinShortcodesToEmoji.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/stripHexcode.d.ts","../../common/temp/node_modules/.pnpm/emojibase@16.0.0/node_modules/emojibase/lib/index.d.ts","../../plugins/emoji/types/types.d.ts","../../plugins/emoji/types/plugin.d.ts","../../plugins/emoji/types/utils.d.ts","../../plugins/emoji/types/index.d.ts","../../plugins/billing/types/plugin.d.ts","../../plugins/billing/types/index.d.ts","../../plugins/activity-assets/src/index.ts","../../plugins/analytics-collector-assets/src/index.ts","../../plugins/attachment-assets/src/index.ts","../../plugins/bitrix-assets/src/index.ts","../../plugins/board-assets/src/index.ts","../../plugins/calendar-assets/src/index.ts","../../plugins/card-assets/src/index.ts","../../plugins/chunter-assets/src/index.ts","../../plugins/contact-assets/src/index.ts","../../plugins/controlled-documents-assets/src/index.ts","../../plugins/desktop-preferences-assets/src/index.ts","../../plugins/desktop-downloads-assets/src/index.ts","../../plugins/diffview-assets/src/index.ts","../../plugins/document-assets/src/index.ts","../../plugins/drive-assets/src/index.ts","../../plugins/export-assets/src/index.ts","../../plugins/gmail-assets/src/index.ts","../../plugins/guest-assets/src/index.ts","../../plugins/hr-assets/src/index.ts","../../plugins/inventory-assets/src/index.ts","../../plugins/lead-assets/src/index.ts","../../plugins/login-assets/src/index.ts","../../plugins/love-assets/src/index.ts","../../plugins/notification-assets/src/index.ts","../../plugins/preference-assets/src/index.ts","../../plugins/print/types/plugin.d.ts","../../plugins/print/types/utils.d.ts","../../plugins/print/types/index.d.ts","../../plugins/print-assets/src/index.ts","../../plugins/process-assets/src/index.ts","../../plugins/products-assets/src/index.ts","../../plugins/questions-assets/src/index.ts","../../plugins/recruit-assets/src/index.ts","../../plugins/request-assets/src/index.ts","../../plugins/setting-assets/src/index.ts","../../plugins/support-assets/src/index.ts","../../plugins/survey-assets/src/index.ts","../../plugins/tags-assets/src/index.ts","../../plugins/task-assets/src/index.ts","../../plugins/telegram-assets/src/index.ts","../../plugins/templates-assets/src/index.ts","../../plugins/test-management-assets/src/index.ts","../../common/temp/node_modules/.pnpm/orderedmap@2.1.1/node_modules/orderedmap/dist/index.d.ts","../../common/temp/node_modules/.pnpm/prosemirror-model@1.24.1/node_modules/prosemirror-model/dist/index.d.ts","../../common/temp/node_modules/.pnpm/prosemirror-transform@1.10.2/node_modules/prosemirror-transform/dist/index.d.ts","../../common/temp/node_modules/.pnpm/prosemirror-view@1.37.2/node_modules/prosemirror-view/dist/index.d.ts","../../common/temp/node_modules/.pnpm/prosemirror-state@1.4.3/node_modules/prosemirror-state/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+pm@2.11.7/node_modules/@tiptap/pm/state/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+pm@2.11.7/node_modules/@tiptap/pm/model/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+pm@2.11.7/node_modules/@tiptap/pm/view/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/EventEmitter.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+pm@2.11.7/node_modules/@tiptap/pm/transform/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/InputRule.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/PasteRule.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/Node.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/Mark.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/Extension.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/types.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/ExtensionManager.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/NodePos.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/extensions/clipboardTextSerializer.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/blur.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/clearContent.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/clearNodes.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/command.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/createParagraphNear.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/cut.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/deleteCurrentNode.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/deleteNode.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/deleteRange.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/deleteSelection.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/enter.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/exitCode.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/extendMarkRange.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/first.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/focus.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/forEach.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/insertContent.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/insertContentAt.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/join.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/joinItemBackward.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/joinItemForward.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/joinTextblockBackward.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/joinTextblockForward.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/keyboardShortcut.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/lift.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/liftEmptyBlock.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/liftListItem.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/newlineInCode.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/resetAttributes.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/scrollIntoView.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/selectAll.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/selectNodeBackward.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/selectNodeForward.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/selectParentNode.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/selectTextblockEnd.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/selectTextblockStart.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/setContent.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/setMark.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/setMeta.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/setNode.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/setNodeSelection.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/setTextSelection.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/sinkListItem.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/splitBlock.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/splitListItem.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/toggleList.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/toggleMark.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/toggleNode.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/toggleWrap.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/undoInputRule.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/unsetAllMarks.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/unsetMark.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/updateAttributes.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/wrapIn.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/wrapInList.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/commands/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/extensions/commands.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/extensions/drop.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/extensions/editable.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/extensions/focusEvents.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/extensions/keymap.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/extensions/paste.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/extensions/tabindex.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/extensions/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/Editor.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/CommandManager.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/combineTransactionSteps.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/createChainableState.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/createDocument.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/createNodeFromContent.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/defaultBlockAt.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/findChildren.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/findChildrenInRange.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/findParentNode.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/findParentNodeClosestToPos.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/generateHTML.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/generateJSON.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/generateText.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getAttributes.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getAttributesFromExtensions.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getChangedRanges.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getDebugJSON.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getExtensionField.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getHTMLFromFragment.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getMarkAttributes.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getMarkRange.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getMarksBetween.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getMarkType.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getNodeAtPosition.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getNodeAttributes.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getNodeType.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getRenderedAttributes.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getSchema.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getSchemaByResolvedExtensions.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getSchemaTypeByName.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getSchemaTypeNameByName.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getSplittedAttributes.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getText.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getTextBetween.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getTextContentFromNodes.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/getTextSerializersFromSchema.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/injectExtensionAttributesToParseRule.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/isActive.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/isAtEndOfNode.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/isAtStartOfNode.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/isExtensionRulesEnabled.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/isList.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/isMarkActive.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/isNodeActive.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/isNodeEmpty.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/isNodeSelection.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/isTextSelection.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/posToDOMRect.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/resolveFocusPosition.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/rewriteUnknownContent.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/selectionToInsertionEnd.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/splitExtensions.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/helpers/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/inputRules/markInputRule.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/inputRules/nodeInputRule.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/inputRules/textblockTypeInputRule.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/inputRules/textInputRule.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/inputRules/wrappingInputRule.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/inputRules/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/NodeView.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/pasteRules/markPasteRule.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/pasteRules/nodePasteRule.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/pasteRules/textPasteRule.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/pasteRules/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/Tracker.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/callOrReturn.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/createStyleTag.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/deleteProps.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/elementFromString.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/escapeForRegEx.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/findDuplicates.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/fromString.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/isEmptyObject.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/isFunction.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/isiOS.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/isMacOS.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/isNumber.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/isPlainObject.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/isRegExp.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/isString.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/mergeAttributes.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/mergeDeep.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/minMax.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/objectIncludes.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/removeDuplicates.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/utilities/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+core@2.11.7_@tiptap+pm@2.11.7/node_modules/@tiptap/core/dist/index.d.ts","../../plugins/text-editor/types/types.d.ts","../../plugins/text-editor/types/plugin.d.ts","../../plugins/text-editor/types/index.d.ts","../../plugins/text-editor-assets/src/index.ts","../../plugins/time-assets/src/index.ts","../../plugins/tracker-assets/src/index.ts","../../plugins/training-assets/src/index.ts","../../plugins/uploader-assets/src/index.ts","../../plugins/recorder-assets/src/index.ts","../../plugins/view-assets/src/index.ts","../../plugins/workbench-assets/src/index.ts","../../plugins/mail-assets/src/index.ts","../../plugins/chat-assets/src/index.ts","../../plugins/inbox-assets/src/index.ts","../../plugins/achievement-assets/src/index.ts","../../plugins/emoji-assets/src/index.ts","../../plugins/media-assets/src/index.ts","../../plugins/communication-assets/src/index.ts","../../plugins/billing-assets/src/index.ts","../../plugins/analytics-collector/types/types.d.ts","../../plugins/analytics-collector/types/utils.d.ts","../../plugins/analytics-collector/types/index.d.ts","../../plugins/sign/types/plugin.d.ts","../../plugins/sign/types/utils.d.ts","../../plugins/sign/types/index.d.ts","../../plugins/desktop-preferences-resources/src/utils.ts","../../plugins/desktop-preferences-resources/src/index.ts","../../plugins/view-resources/src/plugin.ts","../../plugins/view-resources/src/selection.ts","../../plugins/view-resources/src/viewOptions.ts","../../plugins/view-resources/src/utils.ts","../../plugins/view-resources/src/actionImpl.ts","../../plugins/view-resources/src/blob.ts","../../plugins/view-resources/src/filter.ts","../../plugins/view-resources/src/middleware.ts","../../plugins/view-resources/src/visibilityTester.ts","../../plugins/view-resources/src/actions.ts","../../plugins/view-resources/src/status.ts","../../plugins/view-resources/src/icons.ts","../../plugins/view-resources/src/objectIterator.ts","../../plugins/view-resources/src/index.ts","../../plugins/contact-resources/src/visibilityTester.ts","../../plugins/contact-resources/src/plugin.ts","../../plugins/contact-resources/src/components/person/utils.ts","../../plugins/contact-resources/src/cache.ts","../../plugins/contact-resources/src/utils.ts","../../plugins/contact-resources/src/assignee.ts","../../plugins/contact-resources/src/index.ts","../../plugins/activity-resources/src/activityMessagesUtils.ts","../../plugins/activity-resources/src/references.ts","../../plugins/activity-resources/src/activity.ts","../../plugins/activity-resources/src/plugin.ts","../../plugins/activity-resources/src/utils.ts","../../plugins/activity-resources/src/types.ts","../../plugins/activity-resources/src/index.ts","../../plugins/notification-resources/src/inboxNotificationsClient.ts","../../plugins/notification-resources/src/types.ts","../../plugins/notification-resources/src/utils.ts","../../plugins/notification-resources/src/index.ts","../src/ui/notifications.ts","../../packages/analytics-providers/types/analyticsCollector.d.ts","../../packages/analytics-providers/types/posthog.d.ts","../../packages/analytics-providers/types/sentry.d.ts","../../packages/analytics-providers/types/utils.d.ts","../../packages/analytics-providers/types/types.d.ts","../../packages/analytics-providers/types/configure.d.ts","../../packages/analytics-providers/types/index.d.ts","../../services/github/github/types/index.d.ts","../../services/github/github-assets/src/index.ts","../../plugins/client/src/index.ts","../../plugins/client-resources/types/connection.d.ts","../../plugins/client-resources/types/index.d.ts","../../plugins/login-resources/src/analytics.ts","../../plugins/login-resources/src/plugin.ts","../../plugins/login-resources/src/utils.ts","../../plugins/login-resources/src/index.ts","../../plugins/onboard-resources/src/utils.ts","../../plugins/onboard-resources/src/index.ts","../../plugins/workbench-resources/src/utils.ts","../../plugins/workbench-resources/src/plugin.ts","../../plugins/workbench-resources/src/workbench.ts","../../plugins/workbench-resources/src/sidebar.ts","../../plugins/workbench-resources/src/index.ts","../../plugins/task-resources/src/utils.ts","../../plugins/task-resources/src/index.ts","../../plugins/chunter-resources/src/plugin.ts","../../plugins/chunter-resources/src/components/chat/types.ts","../../plugins/chunter-resources/src/components/chat/utils.ts","../../plugins/ai-bot-resources/src/plugin.ts","../../plugins/ai-bot-resources/src/requests.ts","../../plugins/ai-bot-resources/src/utils.ts","../../plugins/ai-bot-resources/src/index.ts","../../plugins/chunter-resources/src/stores.ts","../../plugins/chunter-resources/src/utils.ts","../../plugins/chunter-resources/src/navigation.ts","../../plugins/chunter-resources/src/index.ts","../../plugins/recruit-resources/src/plugin.ts","../../plugins/survey-resources/src/utils.ts","../../plugins/survey-resources/src/index.ts","../../plugins/recruit-resources/src/utils.ts","../../plugins/recruit-resources/src/actionImpl.ts","../../plugins/recruit-resources/src/index.ts","../../plugins/setting-resources/src/plugin.ts","../../plugins/setting-resources/src/utils.ts","../../plugins/setting-resources/src/store.ts","../../plugins/setting-resources/src/index.ts","../../plugins/lead-resources/src/plugin.ts","../../plugins/lead-resources/src/utils.ts","../../plugins/lead-resources/src/index.ts","../../plugins/telegram-resources/src/plugin.ts","../../plugins/telegram-resources/src/utils.ts","../../plugins/telegram-resources/src/index.ts","../../plugins/attachment-resources/src/types.ts","../../plugins/attachment-resources/src/stores.ts","../../plugins/attachment-resources/src/index.ts","../../plugins/gmail-resources/src/plugin.ts","../../plugins/gmail-resources/src/utils.ts","../../plugins/gmail-resources/src/index.ts","../../plugins/image-cropper-resources/src/index.ts","../../plugins/inventory-resources/src/plugin.ts","../../plugins/inventory-resources/src/index.ts","../../plugins/templates-resources/src/utils.ts","../../plugins/templates-resources/src/index.ts","../../plugins/tags-resources/src/plugin.ts","../../plugins/tags-resources/src/utils.ts","../../plugins/tags-resources/src/index.ts","../../plugins/calendar-resources/src/plugin.ts","../../plugins/calendar-resources/src/utils.ts","../../plugins/calendar-resources/src/types.ts","../../plugins/calendar-resources/src/index.ts","../../plugins/analytics-collector-resources/src/index.ts","../../plugins/tracker-resources/src/plugin.ts","../../plugins/tracker-resources/src/issues.ts","../../plugins/tracker-resources/src/types.ts","../../plugins/tracker-resources/src/utils.ts","../../plugins/tracker-resources/src/component.ts","../../plugins/text-editor-resources/src/components/extension/colors.ts","../../packages/text/types/kit.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-task-item@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-task-item/dist/task-item.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-task-item@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-task-item/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-task-list@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-task-list/dist/task-list.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-task-list@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-task-list/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-list-item@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-list-item/dist/list-item.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-list-item@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-list-item/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-bullet-list@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-bullet-list/dist/bullet-list.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-bullet-list@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-bullet-list/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-ordered-list@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-ordered-list/dist/ordered-list.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-ordered-list@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-ordered-list/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-code-block@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-code-block/dist/code-block.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-code-block@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-code-block/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-code@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-code/dist/code.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-code@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-code/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-table@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-table/dist/table.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-table@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-table/dist/TableView.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-table@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-table/dist/utilities/createColGroup.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-table@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-table/dist/utilities/createTable.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-table@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-table/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-table-row@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-table-row/dist/table-row.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-table-row@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-table-row/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-table-header@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-table-header/dist/table-header.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-table-header@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-table-header/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-table-cell@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-table-cell/dist/table-cell.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-table-cell@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-table-cell/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-text-style@2.11.0_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-text-style/dist/text-style.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-text-style@2.11.0_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-text-style/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-hard-break@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-hard-break/dist/hard-break.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-hard-break@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-hard-break/dist/index.d.ts","../../packages/text/types/nodes/image.d.ts","../../packages/text/types/nodes/reference.d.ts","../../packages/text/types/nodes/emoji.d.ts","../../packages/text/types/nodes/todo.d.ts","../../packages/text/types/nodes/file.d.ts","../../packages/text/types/nodes/codeblock.d.ts","../../packages/text/types/nodes/comment.d.ts","../../packages/text/types/nodes/markdown.d.ts","../../packages/text/types/nodes/embed.d.ts","../../packages/text/types/nodes/utils.d.ts","../../packages/text/types/nodes/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-paragraph@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-paragraph/dist/paragraph.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-paragraph@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-paragraph/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-bold@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-bold/dist/bold.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-bold@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-bold/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-italic@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-italic/dist/italic.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-italic@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-italic/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-strike@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-strike/dist/strike.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-strike@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-strike/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-horizontal-rule@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-horizontal-rule/dist/horizontal-rule.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-horizontal-rule@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-horizontal-rule/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-heading@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-heading/dist/heading.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-heading@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-heading/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-underline@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-underline/dist/underline.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-underline@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-underline/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-blockquote@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-blockquote/dist/blockquote.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-blockquote@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-blockquote/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-link@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-link/dist/link.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-link@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-link/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-text-align@2.11.0_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-text-align/dist/text-align.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-text-align@2.11.0_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-text-align/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-typography@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-typography/dist/typography.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-typography@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-typography/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-dropcursor@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-dropcursor/dist/dropcursor.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-dropcursor@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-dropcursor/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-history@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-history/dist/history.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-history@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-history/dist/index.d.ts","../../packages/text/types/extensions.d.ts","../../packages/text-core/types/markup/model.d.ts","../../packages/text-core/types/markup/dsl.d.ts","../../packages/text-core/types/markup/reference.d.ts","../../packages/text-core/types/markup/traverse.d.ts","../../packages/text-core/types/markup/utils.d.ts","../../packages/text-core/types/index.d.ts","../../packages/text/types/markup/utils.d.ts","../../packages/text/types/marks/code.d.ts","../../packages/text/types/marks/colors.d.ts","../../packages/text/types/marks/noteBase.d.ts","../../packages/text/types/marks/inlineComment.d.ts","../../packages/text/types/kits/common-kit.d.ts","../../packages/text/types/kits/server-kit.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-document@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-document/dist/document.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-document@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-document/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-gapcursor@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-gapcursor/dist/gapcursor.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-gapcursor@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-gapcursor/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-text@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-text/dist/text.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-text@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-text/dist/index.d.ts","../../packages/text/types/tiptapExtensions.d.ts","../../packages/text/types/index.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/enums.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/popperOffsets.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/flip.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/hide.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/offset.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/eventListeners.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/computeStyles.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/arrow.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/preventOverflow.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/applyStyles.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/types.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/index.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/detectOverflow.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/createPopper.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper-lite.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/index.d.ts","../../common/temp/node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/index.d.ts","../../common/temp/node_modules/.pnpm/tippy.js@6.3.7/node_modules/tippy.js/index.d.ts","../../plugins/text-editor-resources/src/components/node-view/context.ts","../../plugins/text-editor-resources/src/components/node-view/svelte-renderer.ts","../../plugins/text-editor-resources/src/components/node-view/svelte-node-view-renderer.ts","../../plugins/text-editor-resources/src/components/node-view/index.ts","../../plugins/text-editor-resources/src/components/extension/toolbar/toolbar.ts","../../plugins/text-editor-resources/src/components/extension/imageExt.ts","../../common/temp/node_modules/.pnpm/lib0@0.2.99/node_modules/lib0/observable.d.ts","../../common/temp/node_modules/.pnpm/lib0@0.2.99/node_modules/lib0/random.d.ts","../../common/temp/node_modules/.pnpm/lib0@0.2.99/node_modules/lib0/encoding.d.ts","../../common/temp/node_modules/.pnpm/lib0@0.2.99/node_modules/lib0/decoding.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/UpdateEncoder.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/UpdateDecoder.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/DeleteSet.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/YEvent.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/Transaction.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/EventHandler.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/Snapshot.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/types/AbstractType.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/ID.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/structs/AbstractStruct.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/structs/GC.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/StructStore.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/UndoManager.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/structs/Item.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/types/YArray.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/types/YText.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/types/YMap.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/types/YXmlText.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/types/YXmlHook.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/types/YXmlEvent.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/types/YXmlFragment.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/types/YXmlElement.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/Doc.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/AbstractConnector.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/encoding.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/isParentOf.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/logging.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/PermanentUserData.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/RelativePosition.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/structs/Skip.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/utils/updates.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/structs/ContentBinary.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/structs/ContentDeleted.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/structs/ContentDoc.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/structs/ContentEmbed.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/structs/ContentFormat.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/structs/ContentJSON.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/structs/ContentAny.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/structs/ContentString.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/structs/ContentType.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/internals.d.ts","../../common/temp/node_modules/.pnpm/yjs@13.6.23/node_modules/yjs/dist/src/index.d.ts","../../plugins/text-editor-resources/src/components/extension/inlineComment.ts","../../plugins/text-editor-resources/src/components/extension/note.ts","../../common/temp/node_modules/.pnpm/prosemirror-tables@1.6.4/node_modules/prosemirror-tables/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+pm@2.11.7/node_modules/@tiptap/pm/tables/dist/index.d.ts","../../plugins/text-editor-resources/src/components/extension/table/types.ts","../../plugins/text-editor-resources/src/components/extension/table/utils.ts","../../plugins/text-editor-resources/src/components/extension/table/table.ts","../../plugins/text-editor-resources/src/components/extension/suggestion.ts","../../plugins/text-editor-resources/src/components/extension/reference.ts","../../plugins/text-editor-resources/src/components/extension/embed/embed.ts","../../plugins/text-editor-resources/src/components/extension/inlineCommands.ts","../../plugins/text-editor-resources/src/components/extensions.ts","../../plugins/text-editor-resources/src/utils.ts","../../packages/text-markdown/types/compare.d.ts","../../common/temp/node_modules/.pnpm/@types+linkify-it@3.0.5/node_modules/@types/linkify-it/index.d.ts","../../common/temp/node_modules/.pnpm/@types+mdurl@1.0.5/node_modules/@types/mdurl/encode.d.ts","../../common/temp/node_modules/.pnpm/@types+mdurl@1.0.5/node_modules/@types/mdurl/decode.d.ts","../../common/temp/node_modules/.pnpm/@types+mdurl@1.0.5/node_modules/@types/mdurl/parse.d.ts","../../common/temp/node_modules/.pnpm/@types+mdurl@1.0.5/node_modules/@types/mdurl/format.d.ts","../../common/temp/node_modules/.pnpm/@types+mdurl@1.0.5/node_modules/@types/mdurl/index.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/lib/common/utils.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/lib/token.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/lib/rules_inline/state_inline.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/lib/helpers/parse_link_label.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/lib/helpers/parse_link_destination.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/lib/helpers/parse_link_title.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/lib/helpers/index.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/lib/ruler.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/lib/rules_block/state_block.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/lib/parser_block.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/lib/rules_core/state_core.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/lib/parser_core.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/lib/parser_inline.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/lib/renderer.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/lib/index.d.ts","../../common/temp/node_modules/.pnpm/@types+markdown-it@13.0.8/node_modules/@types/markdown-it/index.d.ts","../../packages/text-markdown/types/parser.d.ts","../../packages/text-markdown/types/serializer.d.ts","../../packages/text-markdown/types/index.d.ts","../../plugins/text-editor-resources/src/components/extension/shortcuts/smartPaste.ts","../../plugins/text-editor-resources/src/components/extension/todo/todo.ts","../../plugins/text-editor-resources/src/components/editor/actions.ts","../../common/temp/node_modules/.pnpm/lib0@0.2.89/node_modules/lib0/observable.d.ts","../../common/temp/node_modules/.pnpm/y-protocols@1.0.6_yjs@13.6.23/node_modules/y-protocols/awareness.d.ts","../../common/temp/node_modules/.pnpm/y-prosemirror@1.3.6_prosemirror-model@1.24.1_prosemirror-state@1.4.3_prosemirror-view@1.37.2__wzlolegydy5ksjinazu347cj6i/node_modules/y-prosemirror/dist/src/plugins/cursor-plugin.d.ts","../../common/temp/node_modules/.pnpm/lib0@0.2.109/node_modules/lib0/mutex.d.ts","../../common/temp/node_modules/.pnpm/y-prosemirror@1.3.6_prosemirror-model@1.24.1_prosemirror-state@1.4.3_prosemirror-view@1.37.2__wzlolegydy5ksjinazu347cj6i/node_modules/y-prosemirror/dist/src/plugins/sync-plugin.d.ts","../../common/temp/node_modules/.pnpm/y-prosemirror@1.3.6_prosemirror-model@1.24.1_prosemirror-state@1.4.3_prosemirror-view@1.37.2__wzlolegydy5ksjinazu347cj6i/node_modules/y-prosemirror/dist/src/plugins/undo-plugin.d.ts","../../common/temp/node_modules/.pnpm/y-prosemirror@1.3.6_prosemirror-model@1.24.1_prosemirror-state@1.4.3_prosemirror-view@1.37.2__wzlolegydy5ksjinazu347cj6i/node_modules/y-prosemirror/dist/src/plugins/keys.d.ts","../../common/temp/node_modules/.pnpm/y-prosemirror@1.3.6_prosemirror-model@1.24.1_prosemirror-state@1.4.3_prosemirror-view@1.37.2__wzlolegydy5ksjinazu347cj6i/node_modules/y-prosemirror/dist/src/lib.d.ts","../../common/temp/node_modules/.pnpm/y-prosemirror@1.3.6_prosemirror-model@1.24.1_prosemirror-state@1.4.3_prosemirror-view@1.37.2__wzlolegydy5ksjinazu347cj6i/node_modules/y-prosemirror/dist/src/y-prosemirror.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-collaboration@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11_ea2vlgjhcv5efb4kvac2trts2y/node_modules/@tiptap/extension-collaboration/dist/collaboration.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-collaboration@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11_ea2vlgjhcv5efb4kvac2trts2y/node_modules/@tiptap/extension-collaboration/dist/helpers/isChangeOrigin.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-collaboration@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11_ea2vlgjhcv5efb4kvac2trts2y/node_modules/@tiptap/extension-collaboration/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-collaboration-cursor@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__y-prosem_mtvg54lt3xpxidonobjwrysxzm/node_modules/@tiptap/extension-collaboration-cursor/dist/collaboration-cursor.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-collaboration-cursor@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__y-prosem_mtvg54lt3xpxidonobjwrysxzm/node_modules/@tiptap/extension-collaboration-cursor/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-placeholder@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-placeholder/dist/placeholder.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-placeholder@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+pm@2.11.7/node_modules/@tiptap/extension-placeholder/dist/index.d.ts","../../common/temp/node_modules/.pnpm/highlight.js@11.11.1/node_modules/highlight.js/types/index.d.ts","../../common/temp/node_modules/.pnpm/@types+unist@2.0.10/node_modules/@types/unist/index.d.ts","../../common/temp/node_modules/.pnpm/@types+hast@3.0.4/node_modules/@types/hast/index.d.ts","../../common/temp/node_modules/.pnpm/lowlight@3.3.0/node_modules/lowlight/lib/index.d.ts","../../common/temp/node_modules/.pnpm/lowlight@3.3.0/node_modules/lowlight/lib/all.d.ts","../../common/temp/node_modules/.pnpm/lowlight@3.3.0/node_modules/lowlight/lib/common.d.ts","../../common/temp/node_modules/.pnpm/lowlight@3.3.0/node_modules/lowlight/index.d.ts","../../packages/highlight/src/languages/svelte.ts","../../packages/highlight/src/languages/vlang.ts","../../packages/highlight/src/index.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-code-block-lowlight@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+e_aebajgiq4sfoc5ro6puqxlzbhi/node_modules/@tiptap/extension-code-block-lowlight/dist/code-block-lowlight.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-code-block-lowlight@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7__@tiptap+e_aebajgiq4sfoc5ro6puqxlzbhi/node_modules/@tiptap/extension-code-block-lowlight/dist/index.d.ts","../../plugins/text-editor-resources/src/components/extension/hooks/editable.ts","../../plugins/text-editor-resources/src/components/extension/codeSnippets/codeblock.ts","../../common/temp/node_modules/.pnpm/@iconify+types@2.0.0/node_modules/@iconify/types/types.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/customisations/defaults.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/customisations/merge.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/customisations/bool.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/customisations/flip.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/customisations/rotate.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/icon/name.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/icon/defaults.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/icon/merge.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/icon/transformations.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/svg/viewbox.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/icon/square.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/icon-set/tree.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/icon-set/parse.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/icon-set/validate.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/icon-set/validate-basic.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/icon-set/expand.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/icon-set/minify.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/icon-set/get-icons.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/icon-set/get-icon.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/icon-set/convert-info.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/svg/build.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/svg/defs.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/svg/id.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/svg/size.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/svg/encode-svg-for-css.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/svg/trim.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/svg/pretty.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/svg/html.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/svg/url.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/svg/inner-html.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/svg/parse.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/colors/types.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/colors/keywords.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/colors/index.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/css/types.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/css/icon.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/css/icons.d.ts","../../common/temp/node_modules/.pnpm/@antfu+utils@0.7.10/node_modules/@antfu/utils/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/loader/types.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/loader/utils.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/loader/custom.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/loader/modern.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/loader/loader.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/emoji/cleanup.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/emoji/convert.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/emoji/format.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/emoji/test/parse.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/emoji/test/variations.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/emoji/data.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/emoji/test/components.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/emoji/test/name.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/emoji/test/similar.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/emoji/test/tree.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/emoji/test/missing.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/emoji/regex/create.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/emoji/parse.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/emoji/replace/find.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/emoji/replace/replace.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/misc/strings.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/misc/objects.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/misc/title.d.ts","../../common/temp/node_modules/.pnpm/@iconify+utils@2.2.1/node_modules/@iconify/utils/lib/index.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/icons.d.ts","../../common/temp/node_modules/.pnpm/@types+trusted-types@2.0.7/node_modules/@types/trusted-types/lib/index.d.ts","../../common/temp/node_modules/.pnpm/@types+trusted-types@2.0.7/node_modules/@types/trusted-types/index.d.ts","../../common/temp/node_modules/.pnpm/dompurify@3.2.3/node_modules/dompurify/dist/purify.cjs.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/config.type.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-array@3.2.1/node_modules/@types/d3-array/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-selection@3.0.11/node_modules/@types/d3-selection/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-axis@3.0.6/node_modules/@types/d3-axis/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-brush@3.0.6/node_modules/@types/d3-brush/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-chord@3.0.6/node_modules/@types/d3-chord/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-color@3.1.3/node_modules/@types/d3-color/index.d.ts","../../common/temp/node_modules/.pnpm/@types+geojson@7946.0.15/node_modules/@types/geojson/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-contour@3.0.6/node_modules/@types/d3-contour/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-delaunay@6.0.4/node_modules/@types/d3-delaunay/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-dispatch@3.0.6/node_modules/@types/d3-dispatch/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-drag@3.0.7/node_modules/@types/d3-drag/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-dsv@3.0.7/node_modules/@types/d3-dsv/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-ease@3.0.2/node_modules/@types/d3-ease/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-fetch@3.0.7/node_modules/@types/d3-fetch/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-force@3.0.10/node_modules/@types/d3-force/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-format@3.0.4/node_modules/@types/d3-format/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-geo@3.1.0/node_modules/@types/d3-geo/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-hierarchy@3.1.7/node_modules/@types/d3-hierarchy/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-interpolate@3.0.4/node_modules/@types/d3-interpolate/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-path@3.1.0/node_modules/@types/d3-path/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-polygon@3.0.2/node_modules/@types/d3-polygon/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-quadtree@3.0.6/node_modules/@types/d3-quadtree/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-random@3.0.3/node_modules/@types/d3-random/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-time@3.0.4/node_modules/@types/d3-time/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-scale@4.0.8/node_modules/@types/d3-scale/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-scale-chromatic@3.1.0/node_modules/@types/d3-scale-chromatic/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-shape@3.1.6/node_modules/@types/d3-shape/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-time-format@4.0.3/node_modules/@types/d3-time-format/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-timer@3.0.2/node_modules/@types/d3-timer/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-transition@3.0.9/node_modules/@types/d3-transition/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3-zoom@3.0.8/node_modules/@types/d3-zoom/index.d.ts","../../common/temp/node_modules/.pnpm/@types+d3@7.4.3/node_modules/@types/d3/index.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/types.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/utils.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/Diagram.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/diagram-api/types.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/diagram-api/detectType.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/errors.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/clusters.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/types.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/anchor.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/bowTieRect.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/card.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/choice.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/circle.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/crossedCircle.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/curlyBraceLeft.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/curlyBraceRight.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/curlyBraces.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/curvedTrapezoid.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/cylinder.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/dividedRect.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/doubleCircle.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/filledCircle.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/flippedTriangle.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/forkJoin.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/halfRoundedRectangle.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/hexagon.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/hourglass.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/icon.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/iconCircle.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/iconRounded.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/iconSquare.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/imageSquare.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/invertedTrapezoid.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/labelRect.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/leanLeft.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/leanRight.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/lightningBolt.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/linedCylinder.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/multiRect.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/note.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/question.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/rectLeftInvArrow.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/rectWithTitle.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/roundedRect.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/shadedProcess.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/slopedRect.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/squareRect.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/stadium.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/state.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/stateEnd.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/stateStart.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/subroutine.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/taggedRect.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/text.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/tiltedCylinder.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/trapezoid.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/trapezoidalPentagon.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/triangle.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/waveEdgedRectangle.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/waveRectangle.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/windowPane.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/classBox.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes/kanbanItem.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/shapes.d.ts","../../common/temp/node_modules/.pnpm/dagre-d3-es@7.0.11/node_modules/dagre-d3-es/src/graphlib/graph.d.ts","../../common/temp/node_modules/.pnpm/dagre-d3-es@7.0.11/node_modules/dagre-d3-es/src/graphlib/index.d.ts","../../common/temp/node_modules/.pnpm/dagre-d3-es@7.0.11/node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-node.d.ts","../../common/temp/node_modules/.pnpm/dagre-d3-es@7.0.11/node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-circle.d.ts","../../common/temp/node_modules/.pnpm/dagre-d3-es@7.0.11/node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-ellipse.d.ts","../../common/temp/node_modules/.pnpm/dagre-d3-es@7.0.11/node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-polygon.d.ts","../../common/temp/node_modules/.pnpm/dagre-d3-es@7.0.11/node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-rect.d.ts","../../common/temp/node_modules/.pnpm/dagre-d3-es@7.0.11/node_modules/dagre-d3-es/src/dagre-js/intersect/index.d.ts","../../common/temp/node_modules/.pnpm/dagre-d3-es@7.0.11/node_modules/dagre-d3-es/src/dagre-js/render.d.ts","../../common/temp/node_modules/.pnpm/dagre-d3-es@7.0.11/node_modules/dagre-d3-es/src/index.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/rendering-elements/nodes.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/logger.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/internals.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/mermaidAPI.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/rendering-util/render.d.ts","../../common/temp/node_modules/.pnpm/mermaid@11.4.1/node_modules/mermaid/dist/mermaid.d.ts","../../plugins/text-editor-resources/src/components/extension/codeSnippets/mermaid.ts","../../plugins/text-editor-resources/src/components/extension/drawingBoard.ts","../../plugins/text-editor-resources/src/components/extension/embed/providers/drive.ts","../../plugins/text-editor-resources/src/components/extension/embed/providers/youtube.ts","../../plugins/text-editor-resources/src/components/extension/emoji.ts","../../plugins/text-editor-resources/src/components/extension/types.ts","../../plugins/text-editor-resources/src/components/extension/fileExt.ts","../../plugins/text-editor-resources/src/components/extension/hardBreak.ts","../../plugins/text-editor-resources/src/components/extension/hooks/focus.ts","../../plugins/text-editor-resources/src/components/extension/hooks/isEmptyContent.ts","../../plugins/text-editor-resources/src/components/extension/leftMenu.ts","../../plugins/text-editor-resources/src/components/extension/qms/qmsInlineCommentMark.ts","../../plugins/text-editor-resources/src/components/extension/qms/qmsInlineComment.ts","../../plugins/text-editor-resources/src/components/extension/shortcuts/fileUpload.ts","../../plugins/text-editor-resources/src/components/extension/shortcuts/imageUpload.ts","../../plugins/text-editor-resources/src/components/extension/shortcuts/indent.ts","../../plugins/text-editor-resources/src/components/extension/shortcuts/linkKeymap.ts","../../plugins/text-editor-resources/src/components/extension/shortcuts/paragraphKeymap.ts","../../plugins/text-editor-resources/src/components/extension/shortcuts/handleSubmit.ts","../../plugins/text-editor-resources/src/components/extension/table/decorations/actions.ts","../../plugins/text-editor-resources/src/components/extension/table/decorations/icons.ts","../../plugins/text-editor-resources/src/components/extension/table/decorations/cellsHandle.ts","../../plugins/text-editor-resources/src/components/extension/table/decorations/tableDragMarkerDecoration.ts","../../plugins/text-editor-resources/src/components/extension/table/decorations/utils.ts","../../plugins/text-editor-resources/src/components/extension/table/decorations/columnHandlerDecoration.ts","../../plugins/text-editor-resources/src/components/extension/table/decorations/columnInsertDecoration.ts","../../plugins/text-editor-resources/src/components/extension/table/decorations/rowHandlerDecoration.ts","../../plugins/text-editor-resources/src/components/extension/table/decorations/rowInsertDecoration.ts","../../plugins/text-editor-resources/src/components/extension/table/decorations/tableSelectionDecoration.ts","../../plugins/text-editor-resources/src/components/extension/table/tableCell.ts","../../plugins/text-editor-resources/src/components/extension/table/tableRow.ts","../../plugins/text-editor-resources/src/components/extension/table/index.ts","../../common/temp/node_modules/.pnpm/slugify@1.6.6/node_modules/slugify/slugify.d.ts","../../plugins/text-editor-resources/src/components/extension/toc.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-list-keymap@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-list-keymap/dist/list-keymap.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-list-keymap@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-list-keymap/dist/listHelpers/findListItemPos.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-list-keymap@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-list-keymap/dist/listHelpers/getNextListDepth.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-list-keymap@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-list-keymap/dist/listHelpers/handleBackspace.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-list-keymap@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-list-keymap/dist/listHelpers/handleDelete.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-list-keymap@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-list-keymap/dist/listHelpers/hasListBefore.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-list-keymap@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-list-keymap/dist/listHelpers/hasListItemAfter.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-list-keymap@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-list-keymap/dist/listHelpers/hasListItemBefore.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-list-keymap@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-list-keymap/dist/listHelpers/listItemHasSubList.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-list-keymap@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-list-keymap/dist/listHelpers/nextListIsDeeper.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-list-keymap@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-list-keymap/dist/listHelpers/nextListIsHigher.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-list-keymap@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-list-keymap/dist/listHelpers/index.d.ts","../../common/temp/node_modules/.pnpm/@tiptap+extension-list-keymap@2.11.7_@tiptap+core@2.11.7_@tiptap+pm@2.11.7_/node_modules/@tiptap/extension-list-keymap/dist/index.d.ts","../../plugins/text-editor-resources/src/components/extension/shortcuts/listKeymap.ts","../../plugins/text-editor-resources/src/kits/editor-kit.ts","../../plugins/text-editor-resources/src/command/deleteAttachment.ts","../../plugins/text-editor-resources/src/provider/types.ts","../../plugins/text-editor-resources/src/plugin.ts","../../common/temp/node_modules/.pnpm/lib0@0.2.99/node_modules/lib0/mutex.d.ts","../../common/temp/node_modules/.pnpm/@types+ws@8.5.11/node_modules/@types/ws/index.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+provider@2.15.2_bufferutil@4.0.8_utf-8-validate@6.0.4_y-protocols@1.0.6_yjs@13.6.23__yjs@13.6.23/node_modules/@hocuspocus/provider/dist/packages/provider/src/EventEmitter.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+common@2.15.2/node_modules/@hocuspocus/common/dist/packages/common/src/auth.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+common@2.15.2/node_modules/@hocuspocus/common/dist/packages/common/src/CloseEvents.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+common@2.15.2/node_modules/@hocuspocus/common/dist/packages/common/src/awarenessStatesToArray.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+common@2.15.2/node_modules/@hocuspocus/common/dist/packages/common/src/types.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+common@2.15.2/node_modules/@hocuspocus/common/dist/packages/common/src/index.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+provider@2.15.2_bufferutil@4.0.8_utf-8-validate@6.0.4_y-protocols@1.0.6_yjs@13.6.23__yjs@13.6.23/node_modules/@hocuspocus/provider/dist/packages/provider/src/IncomingMessage.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+provider@2.15.2_bufferutil@4.0.8_utf-8-validate@6.0.4_y-protocols@1.0.6_yjs@13.6.23__yjs@13.6.23/node_modules/@hocuspocus/provider/dist/packages/provider/src/OutgoingMessage.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+provider@2.15.2_bufferutil@4.0.8_utf-8-validate@6.0.4_y-protocols@1.0.6_yjs@13.6.23__yjs@13.6.23/node_modules/@hocuspocus/provider/dist/packages/provider/src/OutgoingMessages/AuthenticationMessage.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+provider@2.15.2_bufferutil@4.0.8_utf-8-validate@6.0.4_y-protocols@1.0.6_yjs@13.6.23__yjs@13.6.23/node_modules/@hocuspocus/provider/dist/packages/provider/src/OutgoingMessages/AwarenessMessage.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+provider@2.15.2_bufferutil@4.0.8_utf-8-validate@6.0.4_y-protocols@1.0.6_yjs@13.6.23__yjs@13.6.23/node_modules/@hocuspocus/provider/dist/packages/provider/src/OutgoingMessages/QueryAwarenessMessage.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+provider@2.15.2_bufferutil@4.0.8_utf-8-validate@6.0.4_y-protocols@1.0.6_yjs@13.6.23__yjs@13.6.23/node_modules/@hocuspocus/provider/dist/packages/provider/src/OutgoingMessages/SyncStepOneMessage.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+provider@2.15.2_bufferutil@4.0.8_utf-8-validate@6.0.4_y-protocols@1.0.6_yjs@13.6.23__yjs@13.6.23/node_modules/@hocuspocus/provider/dist/packages/provider/src/OutgoingMessages/SyncStepTwoMessage.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+provider@2.15.2_bufferutil@4.0.8_utf-8-validate@6.0.4_y-protocols@1.0.6_yjs@13.6.23__yjs@13.6.23/node_modules/@hocuspocus/provider/dist/packages/provider/src/OutgoingMessages/UpdateMessage.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+provider@2.15.2_bufferutil@4.0.8_utf-8-validate@6.0.4_y-protocols@1.0.6_yjs@13.6.23__yjs@13.6.23/node_modules/@hocuspocus/provider/dist/packages/provider/src/types.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+provider@2.15.2_bufferutil@4.0.8_utf-8-validate@6.0.4_y-protocols@1.0.6_yjs@13.6.23__yjs@13.6.23/node_modules/@hocuspocus/provider/dist/packages/provider/src/HocuspocusProviderWebsocket.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+provider@2.15.2_bufferutil@4.0.8_utf-8-validate@6.0.4_y-protocols@1.0.6_yjs@13.6.23__yjs@13.6.23/node_modules/@hocuspocus/provider/dist/packages/provider/src/HocuspocusProvider.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+provider@2.15.2_bufferutil@4.0.8_utf-8-validate@6.0.4_y-protocols@1.0.6_yjs@13.6.23__yjs@13.6.23/node_modules/@hocuspocus/provider/dist/packages/provider/src/TiptapCollabProviderWebsocket.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+provider@2.15.2_bufferutil@4.0.8_utf-8-validate@6.0.4_y-protocols@1.0.6_yjs@13.6.23__yjs@13.6.23/node_modules/@hocuspocus/provider/dist/packages/provider/src/TiptapCollabProvider.d.ts","../../common/temp/node_modules/.pnpm/@hocuspocus+provider@2.15.2_bufferutil@4.0.8_utf-8-validate@6.0.4_y-protocols@1.0.6_yjs@13.6.23__yjs@13.6.23/node_modules/@hocuspocus/provider/dist/packages/provider/src/index.d.ts","../../plugins/text-editor-resources/src/provider/hocuspocus.ts","../../common/temp/node_modules/.pnpm/y-indexeddb@9.0.12_yjs@13.6.23/node_modules/y-indexeddb/dist/src/y-indexeddb.d.ts","../../plugins/text-editor-resources/src/provider/indexeddb.ts","../../plugins/text-editor-resources/src/provider/utils.ts","../../plugins/text-editor-resources/src/index.ts","../../plugins/tracker-resources/src/index.ts","../../plugins/board-resources/src/index.ts","../../plugins/hr-resources/src/index.ts","../../plugins/bitrix-resources/src/index.ts","../../plugins/request-resources/src/index.ts","../../plugins/drive-resources/src/navigation.ts","../../plugins/drive-resources/src/utils.ts","../../plugins/drive-resources/src/index.ts","../../plugins/support-resources/src/support.ts","../../plugins/support-resources/src/index.ts","../../plugins/diffview-resources/src/index.ts","../../plugins/document-resources/src/plugin.ts","../../plugins/document-resources/src/utils.ts","../../plugins/document-resources/src/index.ts","../../plugins/time-resources/src/plugin.ts","../../plugins/time-resources/src/types.ts","../../plugins/time-resources/src/utils.ts","../../plugins/time-resources/src/index.ts","../../plugins/questions-resources/src/plugin.ts","../../plugins/questions-resources/src/utils/getQuestionMixin.ts","../../plugins/questions-resources/src/utils/isAssessment.ts","../../plugins/questions-resources/src/utils/assessAnswer.ts","../../plugins/questions-resources/src/utils/assessAnswers.ts","../../plugins/questions-resources/src/utils/calculateAnswersToPass.ts","../../plugins/questions-resources/src/utils/getCurrentEmployeeRef.ts","../../plugins/questions-resources/src/utils/canUpdateQuestion.ts","../../plugins/questions-resources/src/utils/createQuestion.ts","../../plugins/questions-resources/src/utils/findQuestions.ts","../../plugins/questions-resources/src/utils/copyQuestions.ts","../../plugins/questions-resources/src/utils/createAnswer.ts","../../plugins/questions-resources/src/utils/findAnswers.ts","../../plugins/questions-resources/src/utils/findNextQuestion.ts","../../plugins/questions-resources/src/utils/findPreviousQuestion.ts","../../plugins/questions-resources/src/utils/getQuestionClasses.ts","../../common/temp/node_modules/.pnpm/lexorank@1.0.5/node_modules/lexorank/lib/numeralSystems/lexoNumeralSystem.d.ts","../../common/temp/node_modules/.pnpm/lexorank@1.0.5/node_modules/lexorank/lib/numeralSystems/lexoNumeralSystem10.d.ts","../../common/temp/node_modules/.pnpm/lexorank@1.0.5/node_modules/lexorank/lib/numeralSystems/lexoNumeralSystem36.d.ts","../../common/temp/node_modules/.pnpm/lexorank@1.0.5/node_modules/lexorank/lib/numeralSystems/lexoNumeralSystem64.d.ts","../../common/temp/node_modules/.pnpm/lexorank@1.0.5/node_modules/lexorank/lib/numeralSystems/index.d.ts","../../common/temp/node_modules/.pnpm/lexorank@1.0.5/node_modules/lexorank/lib/lexoRank/lexoInteger.d.ts","../../common/temp/node_modules/.pnpm/lexorank@1.0.5/node_modules/lexorank/lib/lexoRank/lexoDecimal.d.ts","../../common/temp/node_modules/.pnpm/lexorank@1.0.5/node_modules/lexorank/lib/lexoRank/lexoRankBucket.d.ts","../../common/temp/node_modules/.pnpm/lexorank@1.0.5/node_modules/lexorank/lib/lexoRank/lexoRank.d.ts","../../common/temp/node_modules/.pnpm/lexorank@1.0.5/node_modules/lexorank/lib/lexoRank/index.d.ts","../../common/temp/node_modules/.pnpm/lexorank@1.0.5/node_modules/lexorank/lib/index.d.ts","../../plugins/questions-resources/src/utils/initQuestion.ts","../../plugins/questions-resources/src/utils/moveItem.ts","../../plugins/questions-resources/src/utils/queryQuestions.ts","../../plugins/questions-resources/src/utils/updateQuestion.ts","../../plugins/questions-resources/src/utils/releaseQuestion.ts","../../plugins/questions-resources/src/utils/updateAnswer.ts","../../plugins/questions-resources/src/utils/index.ts","../../plugins/questions-resources/src/actions/ActionWithAvailability.ts","../../plugins/questions-resources/src/actions/questionDeleteAction.ts","../../plugins/questions-resources/src/actions/questionDuplicateAction.ts","../../plugins/questions-resources/src/actions/questionMoveDownAction.ts","../../plugins/questions-resources/src/actions/questionMoveUpAction.ts","../../plugins/questions-resources/src/functions/MultipleChoiceAssessmentAssess.ts","../../plugins/questions-resources/src/functions/MultipleChoiceQuestionInit.ts","../../plugins/questions-resources/src/functions/MultipleChoiceAssessmentInit.ts","../../plugins/questions-resources/src/functions/OrderingAssessmentAssess.ts","../../plugins/questions-resources/src/functions/OrderingQuestionInit.ts","../../plugins/questions-resources/src/functions/OrderingAssessmentInit.ts","../../plugins/questions-resources/src/functions/SingleChoiceAssessmentAssess.ts","../../plugins/questions-resources/src/functions/SingleChoiceQuestionInit.ts","../../plugins/questions-resources/src/functions/SingleChoiceAssessmentInit.ts","../../plugins/questions-resources/src/index.ts","../../plugins/training-resources/src/utils/getCurrentEmployeeRef.ts","../../plugins/training-resources/src/utils/canCancelTrainingRequest.ts","../../plugins/training-resources/src/plugin.ts","../../plugins/training-resources/src/utils/canChangeTrainingOwner.ts","../../plugins/training-resources/src/utils/canChangeTrainingRequestOwner.ts","../../plugins/training-resources/src/utils/canCreateTraining.ts","../../plugins/training-resources/src/utils/canCreateTrainingAttempt.ts","../../plugins/training-resources/src/utils/canCreateTrainingRequest.ts","../../plugins/training-resources/src/utils/canDeleteTraining.ts","../../plugins/training-resources/src/utils/canReleaseTraining.ts","../../plugins/training-resources/src/utils/canUpdateTrainingAttempt.ts","../../plugins/training-resources/src/utils/canUpdateTrainingOverview.ts","../../plugins/training-resources/src/utils/canUpdateTrainingQuestions.ts","../../plugins/training-resources/src/utils/canUpdateTrainingRequest.ts","../../plugins/training-resources/src/utils/canViewTraining.ts","../../plugins/training-resources/src/utils/canViewTrainingAttempt.ts","../../plugins/training-resources/src/utils/canViewTrainingIncomingRequests.ts","../../plugins/training-resources/src/utils/canViewTrainingMyResults.ts","../../plugins/training-resources/src/utils/canViewTrainingOverview.ts","../../plugins/training-resources/src/utils/canViewTrainingQuestsions.ts","../../plugins/training-resources/src/utils/canViewTrainingRequest.ts","../../plugins/training-resources/src/utils/canViewTrainingSentRequests.ts","../../plugins/training-resources/src/utils/canViewTrainingTraineesResults.ts","../../plugins/training-resources/src/utils/changeTrainingOwner.ts","../../plugins/training-resources/src/utils/changeTrainingRequestOwner.ts","../../plugins/training-resources/src/utils/CompletionMap.ts","../../plugins/training-resources/src/utils/copyTrainingAttachments.ts","../../plugins/training-resources/src/utils/copyTrainingQuestions.ts","../../plugins/training-resources/src/routing/utils/getPanelFragment.ts","../../plugins/training-resources/src/routing/utils/Route.ts","../../plugins/training-resources/src/routing/routes/allTrainingsRoute.ts","../../plugins/training-resources/src/routing/routes/myTrainingsRoute.ts","../../plugins/training-resources/src/routing/utils/TriainingRoutingParts.ts","../../plugins/training-resources/src/routing/routes/trainingRoute.ts","../../plugins/training-resources/src/utils/getNextTrainingSeqNumber.ts","../../plugins/training-resources/src/utils/createTraining.ts","../../plugins/training-resources/src/routing/routes/myResultsRoute.ts","../../plugins/training-resources/src/routing/routes/traineesResultsRoute.ts","../../plugins/training-resources/src/routing/routes/trainingAttemptRoute.ts","../../plugins/training-resources/src/utils/createTrainingAttempt.ts","../../plugins/training-resources/src/routing/routes/incomingRequestsRoute.ts","../../plugins/training-resources/src/routing/routes/sentRequestsRoute.ts","../../plugins/training-resources/src/routing/routes/trainingRequestRoute.ts","../../plugins/training-resources/src/utils/createTrainingRequest.ts","../../plugins/training-resources/src/utils/queryLatestOwnAttempt.ts","../../plugins/training-resources/src/utils/submitTrainingAttempt.ts","../../plugins/training-resources/src/utils/index.ts","../../plugins/training-resources/src/actions/trainingChangeOwnerAction.ts","../../plugins/training-resources/src/actions/trainingDraftAction.ts","../../plugins/training-resources/src/actions/trainingDeleteAction.ts","../../plugins/training-resources/src/actions/trainingDuplicateAction.ts","../../plugins/training-resources/src/actions/trainingReleaseAction.ts","../../plugins/training-resources/src/actions/trainingRequestCancelAction.ts","../../plugins/training-resources/src/actions/trainingRequestChangeOwnerAction.ts","../../plugins/training-resources/src/actions/trainingRequestCreateAction.ts","../../plugins/training-resources/src/functions/trainingAttemptLinkProviderEncode.ts","../../plugins/training-resources/src/functions/trainingAttemptStateAllValues.ts","../../plugins/training-resources/src/functions/trainingAttemptStateSort.ts","../../plugins/training-resources/src/functions/trainingLinkProviderEncode.ts","../../plugins/training-resources/src/functions/trainingRequestLinkProviderEncode.ts","../../plugins/training-resources/src/functions/trainingRequestObjectTitleProvider.ts","../../plugins/training-resources/src/functions/trainingStateAllValues.ts","../../plugins/training-resources/src/functions/trainingStateSort.ts","../../plugins/training-resources/src/routing/resolveLocation.ts","../../plugins/training-resources/src/index.ts","../../plugins/products-resources/src/utils.ts","../../plugins/products-resources/src/index.ts","../../plugins/controlled-documents-resources/src/navigation.ts","../../plugins/controlled-documents-resources/src/plugin.ts","../../common/temp/node_modules/.pnpm/effector@22.8.8/node_modules/effector/index.d.ts","../../plugins/controlled-documents-resources/src/stores/wizards/create-document/wizard.ts","../../plugins/controlled-documents-resources/src/stores/wizards/create-document/actions.ts","../../plugins/controlled-documents-resources/src/stores/wizards/create-document.ts","../../plugins/controlled-documents-resources/src/utils.ts","../../plugins/controlled-documents-resources/src/stores/editors/document/actions.ts","../../plugins/controlled-documents-resources/src/stores/editors/document/documentComments.ts","../../plugins/controlled-documents-resources/src/docutils.ts","../../plugins/controlled-documents-resources/src/stores/editors/document/editor.ts","../../plugins/controlled-documents-resources/src/stores/editors/document/canCreateNewDraft.ts","../../plugins/controlled-documents-resources/src/stores/editors/document/canRestoreDraft.ts","../../plugins/controlled-documents-resources/src/stores/editors/document/canCreateNewSnapshot.ts","../../plugins/controlled-documents-resources/src/stores/editors/document/canSendForApproval.ts","../../plugins/controlled-documents-resources/src/stores/editors/document/canSendForReview.ts","../../plugins/controlled-documents-resources/src/stores/editors/document/comparison.ts","../../plugins/controlled-documents-resources/src/stores/editors/document/query.ts","../../plugins/controlled-documents-resources/src/stores/editors/document.ts","../../plugins/controlled-documents-resources/src/text.ts","../../plugins/controlled-documents-resources/src/index.ts","../../plugins/media-resources/src/stores.ts","../../plugins/media-resources/src/utils.ts","../../plugins/media-resources/src/index.ts","../../plugins/uploader-resources/src/store.ts","../../plugins/uploader-resources/src/plugin.ts","../../plugins/uploader-resources/src/utils.ts","../../plugins/uploader-resources/src/index.ts","../../plugins/recorder-resources/src/stream.ts","../../plugins/recorder-resources/src/utils.ts","../../plugins/recorder-resources/src/recorder.ts","../../common/temp/node_modules/.pnpm/tus-js-client@4.3.1/node_modules/tus-js-client/lib/index.d.ts","../../plugins/recorder-resources/src/uploader.ts","../../plugins/recorder-resources/src/plugin.ts","../../plugins/recorder-resources/src/screen-recorder.ts","../../plugins/recorder-resources/src/types.ts","../../plugins/recorder-resources/src/const.ts","../../plugins/recorder-resources/src/stores.ts","../../plugins/recorder-resources/src/recording.ts","../../plugins/recorder-resources/src/index.ts","../../plugins/presence-resources/src/types.ts","../../plugins/presence-resources/src/store.ts","../../plugins/presence-resources/src/index.ts","../../services/github/github-resources/src/plugin.ts","../../services/github/github-resources/src/index.ts","../../plugins/desktop-downloads-resources/src/store.ts","../../plugins/desktop-downloads-resources/src/utils.ts","../../plugins/desktop-downloads-resources/src/index.ts","../../plugins/guest-resources/src/index.ts","../../common/temp/node_modules/.pnpm/@livekit+mutex@1.1.1/node_modules/@livekit/mutex/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/binary-encoding.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/enum.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/field-list.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto2.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/descriptor_pb.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/scalar.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/service-type.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/feature-set.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/descriptor-set.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/field-wrapper.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/message-type.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/field.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/binary-format.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/message.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/extension.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/type-registry.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/json-format.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/field-list.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/enum.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/util.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/extensions.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/proto-runtime.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto3.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto-double.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto-int64.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto-base64.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto-delimited.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/reify-wkt.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/codegen-info.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/is-message.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/extension-accessor.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/create-descriptor-set.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/create-registry.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/create-registry-from-desc.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/to-plain-message.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/compiler/plugin_pb.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/source_context_pb.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/any_pb.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/type_pb.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/api_pb.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/duration_pb.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/empty_pb.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/field_mask_pb.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/struct_pb.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/timestamp_pb.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/wrappers_pb.d.ts","../../common/temp/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/index.d.ts","../../common/temp/node_modules/.pnpm/@livekit+protocol@1.38.0/node_modules/@livekit/protocol/dist/index.d.mts","../../common/temp/node_modules/.pnpm/loglevel@1.9.2/node_modules/loglevel/index.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/logger.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/ReconnectPolicy.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/DefaultReconnectPolicy.d.ts","../../common/temp/node_modules/.pnpm/webrtc-adapter@9.0.1/node_modules/webrtc-adapter/index.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/types.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/utils/AsyncQueue.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/api/SignalClient.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/processor/types.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/Track.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/options.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/PCTransport.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/PCTransportManager.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/RegionUrlProvider.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/rpc.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/record.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/stats.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/LocalAudioTrack.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/LocalVideoTrack.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/RemoteTrack.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/RemoteAudioTrack.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/RemoteVideoTrack.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/types.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/LocalTrack.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/TrackPublication.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/LocalTrackPublication.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/RemoteTrackPublication.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/RTCEngine.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/utils/browserParser.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/errors.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/StreamWriter.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/participant/ParticipantTrackPermission.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/participant/RemoteParticipant.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/participant/LocalParticipant.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/utils.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/participant/Participant.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/e2ee/errors.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/e2ee/events.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/e2ee/E2eeManager.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/e2ee/KeyProvider.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/e2ee/types.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/options.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/StreamReader.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/Room.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/timers.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/connectionHelper/checks/Checker.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/connectionHelper/ConnectionCheck.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/e2ee/utils.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/e2ee/index.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/events.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/create.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/room/track/facingMode.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/version.d.ts","../../common/temp/node_modules/.pnpm/livekit-client@2.13.3/node_modules/livekit-client/dist/src/index.d.ts","../../common/temp/node_modules/.pnpm/@livekit+krisp-noise-filter@0.3.0_livekit-client@2.13.3/node_modules/@livekit/krisp-noise-filter/dist/options.d.ts","../../common/temp/node_modules/.pnpm/@livekit+krisp-noise-filter@0.3.0_livekit-client@2.13.3/node_modules/@livekit/krisp-noise-filter/dist/NoiseFilterProcessor.d.ts","../../common/temp/node_modules/.pnpm/@livekit+krisp-noise-filter@0.3.0_livekit-client@2.13.3/node_modules/@livekit/krisp-noise-filter/dist/index.d.ts","../../common/temp/node_modules/.pnpm/@mediapipe+tasks-vision@0.10.14/node_modules/@mediapipe/tasks-vision/vision.d.ts","../../common/temp/node_modules/.pnpm/@livekit+track-processors@0.5.6_livekit-client@2.13.3/node_modules/@livekit/track-processors/dist/src/webgl/index.d.ts","../../common/temp/node_modules/.pnpm/@livekit+track-processors@0.5.6_livekit-client@2.13.3/node_modules/@livekit/track-processors/dist/src/transformers/types.d.ts","../../common/temp/node_modules/.pnpm/@livekit+track-processors@0.5.6_livekit-client@2.13.3/node_modules/@livekit/track-processors/dist/src/transformers/VideoTransformer.d.ts","../../common/temp/node_modules/.pnpm/@livekit+track-processors@0.5.6_livekit-client@2.13.3/node_modules/@livekit/track-processors/dist/src/transformers/BackgroundTransformer.d.ts","../../common/temp/node_modules/.pnpm/@livekit+track-processors@0.5.6_livekit-client@2.13.3/node_modules/@livekit/track-processors/dist/src/transformers/index.d.ts","../../common/temp/node_modules/.pnpm/@livekit+track-processors@0.5.6_livekit-client@2.13.3/node_modules/@livekit/track-processors/dist/src/ProcessorWrapper.d.ts","../../common/temp/node_modules/.pnpm/@livekit+track-processors@0.5.6_livekit-client@2.13.3/node_modules/@livekit/track-processors/dist/src/index.d.ts","../../plugins/love-resources/src/broadcast.ts","../../plugins/love-resources/src/plugin.ts","../../plugins/love-resources/src/stores.ts","../../plugins/love-resources/src/utils.ts","../../plugins/love-resources/src/index.ts","../../plugins/print-resources/src/index.ts","../../plugins/export-resources/src/index.ts","../../plugins/test-management-resources/src/navigation.ts","../../plugins/test-management-resources/src/components/test-result/store/testIteratorStore.ts","../../plugins/test-management-resources/src/components/test-run/store/testRunStore.ts","../../plugins/test-management-resources/src/utils.ts","../../plugins/test-management-resources/src/index.ts","../../plugins/card-resources/src/plugin.ts","../../plugins/card-resources/src/types.ts","../../plugins/card-resources/src/utils.ts","../../plugins/card-resources/src/index.ts","../../plugins/chat-resources/src/location.ts","../../plugins/chat-resources/src/index.ts","../../plugins/inbox-resources/src/index.ts","../../plugins/process-resources/src/plugin.ts","../../plugins/process-resources/src/utils.ts","../../plugins/process-resources/src/middleware.ts","../../plugins/process-resources/src/index.ts","../../plugins/achievement-resources/src/index.ts","../../plugins/communication-resources/src/plugin.ts","../../plugins/communication-resources/src/types.ts","../../plugins/communication-resources/src/stores.ts","../../plugins/communication-resources/src/utils.ts","../../plugins/communication-resources/src/actions.ts","../../plugins/communication-resources/src/poll.ts","../../plugins/communication-resources/src/activity.ts","../../plugins/communication-resources/src/index.ts","../../plugins/emoji-resources/src/types.ts","../../plugins/emoji-resources/src/store.ts","../../plugins/emoji-resources/src/utils.ts","../../plugins/emoji-resources/src/index.ts","../../plugins/billing-resources/src/index.ts","../src/ui/platform.ts","../src/ui/screenShare.ts","../src/ui/index.ts","../src/ui/preload.ts","../declarations.d.ts"],"fileIdsList":[[132,143,172,173,218,262],[132,143,172,173,218,262,1700,1711,1713],[132,143,172,173,218,262,1705,1708,1727],[132,143,172,173,218,262,1704,1708,1712],[132,143,172,173,218,262,1704,1708,1715],[132,143,172,173,218,262,1701,1706,1710,1714,1715],[132,143,172,173,218,262,1704,1705,1706,1707],[132,143,172,173,218,262,1712,1713,1714],[132,143,172,173,218,262,1710,1711,1713,1721],[132,143,172,173,218,262,1711],[132,143,172,173,218,262,1701,1705,1710],[132,143,172,173,218,262,1702,1710,1712,1713,1715,1716,1722],[132,143,172,173,218,262,1702,1712,1713,1716,1722,1736,1738],[132,143,172,173,218,262,1702,1703,1704,1712,1713,1716],[132,143,172,173,218,262,1702,1703,1712,1713,1716],[132,143,172,173,218,262,1702,1712,1713,1716,1722],[132,143,172,173,218,262,1702,1712,1713,1716,1722,1736,1737],[132,143,172,173,218,262,1700,1701,1702,1703,1704,1705,1706,1708,1710,1711,1712,1713,1714,1715,1716,1722,1723,1724,1725,1726,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745],[132,143,172,173,218,262,1710,1713],[132,143,172,173,218,262,1705,1710,1713,1715],[132,143,172,173,218,262,1702,1709,1712,1713,1716,1721],[132,143,172,173,218,262,1710,1712,1716],[132,143,172,173,218,262,1701],[132,143,172,173,218,262,1700,1710,1711,1713,1714,1721],[132,143,172,173,218,262,1704,1712],[132,143,172,173,218,262,1702,1711],[132,143,172,173,218,262,1705,1708,1710,1713],[132,143,172,173,218,262,1701,1710,1712,1713,1714,1716,1717,1718,1719,1720],[132,143,172,173,218,262,1708],[132,143,172,173,218,262,1701,1702,1710,1713,1717,1718],[132,143,172,173,218,262,1710,1712,1713],[132,143,172,173,218,262,1721],[132,143,172,173,218,262,1713],[132,143,172,173,218,262,1701,1706,1710,1714],[132,143,172,173,218,262,1138,1139],[132,143,172,173,218,262,1492,1493,1494,1495],[132,143,172,173,218,262,1181,1225,1489,1490,1491,1505,1506],[132,143,172,173,218,262,1490,1491,1505,1507],[132,143,172,173,218,262,1138,1139,1505],[132,143,172,173,218,262,1138,1505],[132,143,172,173,218,262,1138,1498,1505],[132,143,172,173,218,262,1181,1505,1507,1508],[132,143,172,173,218,262,1506],[132,143,172,173,218,262,1505,1506,1507,1508,1509],[132,143,172,173,218,262,1138,1181,1225,1490,1496,1497,1498,1499,1500,1501,1502,1503,1504],[132,143,172,173,218,262,1286],[132,143,172,173,218,262,1254,1289],[132,143,172,173,218,262,1254],[132,143,172,173,218,262,1254,1255],[132,143,172,173,218,262,1311],[132,143,172,173,218,262,1301,1303],[132,143,172,173,218,262,1301,1303,1304,1305,1306,1307],[132,143,172,173,218,262,1301,1303,1304],[132,143,172,173,218,262,1301,1303,1304,1305],[132,143,172,173,218,262,1301,1303,1304,1305,1306],[132,143,172,173,218,262,1254,1261],[132,143,172,173,218,262,1254,1264],[132,143,172,173,218,262,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315],[132,143,172,173,218,262,1254,1255,1292,1293],[132,143,172,173,218,262,1254,1255,1292],[132,143,172,173,218,262,1254,1255,1264],[132,143,172,173,218,262,1254,1255,1264,1275],[67,132,143,172,173,218,262],[132,143,172,173,218,262,1801,1802],[132,143,172,173,218,262,1803],[132,143,172,173,218,262,1746],[132,143,172,173,218,262,1801,1810],[132,143,172,173,218,262,1807,1808,1809,1811],[132,143,172,173,218,262,1805,1807,1808],[132,143,172,173,218,262,1806,1807],[132,143,172,173,218,262,1807,1809],[132,143,172,173,218,262,1127],[132,143,172,173,218,262,1121,1123],[132,143,172,173,218,262,1111,1121,1122,1124,1125,1126],[132,143,172,173,218,262,1121],[132,143,172,173,218,262,1111,1121],[132,143,172,173,218,262,1112,1113,1114,1115,1116,1117,1118,1119,1120],[132,143,172,173,218,262,1112,1116,1117,1120,1121,1124],[132,143,172,173,218,262,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1124,1125],[132,143,172,173,218,262,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120],[75,132,143,172,173,218,262],[73,74,132,143,172,173,218,262],[132,143,172,173,218,262,719,729,797],[132,143,172,173,218,262,719,720,721,722,729,730,731,796],[132,143,172,173,218,262,719,724,725,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,797,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,719,720,721,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,797,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,719,720,724,725,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,797,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,729,797],[132,143,172,173,218,262,721,729,797],[132,143,172,173,218,262,719],[132,143,172,173,218,262,726,727,728,729,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,719,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,728],[132,143,172,173,218,262,728,788],[132,143,172,173,218,262,719,728],[132,143,172,173,218,262,732,789,790,791,792,793,794,795],[132,143,172,173,218,262,719,720,723],[132,143,172,173,218,262,720,729],[132,143,172,173,218,262,720],[132,143,172,173,218,262,715,719,729],[132,143,172,173,218,262,729],[132,143,172,173,218,262,719,720],[132,143,172,173,218,262,723,729],[132,143,172,173,218,262,720,726,727,728,729,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849],[132,143,172,173,218,262,721],[132,143,172,173,218,262,719,720,729],[132,143,172,173,218,262,726,727,728,729],[132,143,172,173,218,262,724,725,726,727,728,729,731,796,797,798,850,856,857,861,862,883],[132,143,172,173,218,262,851,852,853,854,855],[132,143,172,173,218,262,720,724,729],[132,143,172,173,218,262,724],[132,143,172,173,218,262,720,724,729,797],[132,143,172,173,218,262,858,859,860],[132,143,172,173,218,262,720,725,729],[132,143,172,173,218,262,725],[132,143,172,173,218,262,719,720,721,723,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,797,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882],[132,143,172,173,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,1077],[132,143,172,173,218,262,1065],[132,143,172,173,218,262,1029],[132,143,172,173,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1034,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,1250],[132,143,172,173,218,262,1033],[132,143,172,173,218,262,1035],[132,143,172,173,218,262,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,1236],[132,143,172,173,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1181,1222,1232,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,1233,1234],[132,143,172,173,218,262,1103],[132,143,172,173,218,262,1085],[132,143,172,173,218,262,1105],[132,143,172,173,218,262,1050],[132,143,172,173,218,262,1073],[132,143,172,173,218,262,1087],[132,143,172,173,218,262,1071],[132,143,172,173,218,262,1067],[132,143,172,173,218,262,1079],[132,143,172,173,218,262,1027],[132,143,172,173,218,262,1471,1482],[132,143,172,173,218,262,715,719,720],[132,143,172,173,218,262,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481],[132,143,172,173,218,262,1031],[132,143,172,173,218,262,1063],[132,143,172,173,218,262,1238],[132,143,172,173,218,262,720,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,1069],[132,143,172,173,218,262,1046],[132,143,172,173,218,262,1044],[132,143,172,173,218,262,1042],[132,143,172,173,218,262,720,721],[132,143,172,173,218,262,1037,1038,1039,1040],[132,143,172,173,218,262,720,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,1023],[132,143,172,173,218,262,1025],[132,143,172,173,218,262,1081],[132,143,172,173,218,262,1048],[132,143,172,173,218,262,1107],[132,143,172,173,218,262,1083],[132,143,172,173,218,262,1075],[132,143,172,173,218,262,715],[132,143,172,173,218,262,718],[132,143,172,173,218,262,1184],[132,143,172,173,218,262,716],[132,143,172,173,218,262,717],[132,143,172,173,218,262,1323,1351],[132,143,172,173,218,262,1322,1328],[132,143,172,173,218,262,1333],[132,143,172,173,218,262,1328],[132,143,172,173,218,262,1327],[132,143,172,173,218,262,1345],[132,143,172,173,218,262,1341],[132,143,172,173,218,262,1323,1340,1351],[132,143,172,173,218,262,1322,1323,1324,1325,1326,1327,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352],[132,143,172,173,218,262,1241],[69,72,132,143,172,173,218,262],[132,143,172,173,218,262,1216],[132,143,172,173,218,262,1201],[132,143,172,173,218,262,1205,1206,1207],[132,143,172,173,218,262,1204],[132,143,172,173,218,262,1206],[132,143,172,173,218,262,1196,1202,1203,1208,1211,1213,1214,1215],[132,143,172,173,218,262,1203,1209,1210,1216],[132,143,172,173,218,262,1209,1212],[132,143,172,173,218,262,1203,1204,1209,1216],[132,143,172,173,218,262,1203,1216],[132,143,172,173,218,262,1197,1198,1199,1200],[132,143,172,173,218,259,262],[132,143,172,173,218,261,262],[132,143,172,173,262],[132,143,172,173,218,262,267,297],[132,143,172,173,218,262,263,268,274,275,282,294,305],[132,143,172,173,218,262,263,264,274,282],[132,143,172,173,213,214,215,218,262],[132,143,172,173,218,262,265,306],[132,143,172,173,218,262,266,267,275,283],[132,143,172,173,218,262,267,294,302],[132,143,172,173,218,262,268,270,274,282],[132,143,172,173,218,261,262,269],[132,143,172,173,218,262,270,271],[132,143,172,173,218,262,272,274],[132,143,172,173,218,261,262,274],[132,143,172,173,218,262,274,275,276,294,305],[132,143,172,173,218,262,274,275,276,289,294,297],[132,143,172,173,218,257,262],[132,143,172,173,218,257,262,270,274,277,282,294,305],[132,143,172,173,218,262,274,275,277,278,282,294,302,305],[132,143,172,173,218,262,277,279,294,302,305],[132,143,172,173,216,217,218,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311],[132,143,172,173,218,262,274,280],[132,143,172,173,218,262,281,305],[132,143,172,173,218,262,270,274,282,294],[132,143,172,173,218,262,283],[132,143,172,173,218,262,284],[132,143,172,173,218,261,262,285],[132,143,172,173,218,259,260,261,262,263,264,265,266,267,268,269,270,271,272,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311],[132,143,172,173,218,262,287],[132,143,172,173,218,262,288],[132,143,172,173,218,262,274,289,290],[132,143,172,173,218,262,289,291,306,308],[132,143,172,173,218,262,274,294,295,297],[132,143,172,173,218,262,296,297],[132,143,172,173,218,262,294,295],[132,143,172,173,218,262,297],[132,143,172,173,218,262,298],[132,143,172,173,218,259,262,294],[132,143,172,173,218,262,274,300,301],[132,143,172,173,218,262,300,301],[132,143,172,173,218,262,267,282,294,302],[132,143,172,173,218,262,303],[132,143,172,173,218,262,282,304],[132,143,172,173,218,262,277,288,305],[132,143,172,173,218,262,267,306],[132,143,172,173,218,262,294,307],[132,143,172,173,218,262,281,308],[132,143,172,173,218,262,309],[132,143,172,173,218,262,274,276,285,294,297,305,308,310],[132,143,172,173,218,262,294,311],[132,143,172,173,218,262,426,465],[132,143,172,173,218,262,426,450,465],[132,143,172,173,218,262,465],[132,143,172,173,218,262,426],[132,143,172,173,218,262,426,451,465],[132,143,172,173,218,262,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464],[132,143,172,173,218,262,451,465],[132,143,172,173,218,262,1318],[132,143,172,173,218,262,274,277,279,294,302,305,311,312],[132,143,153,155,164,172,173,218,262],[132,143,153,157,159,163,172,173,218,262],[132,143,153,154,164,165,167,172,173,218,262],[132,143,153,154,163,172,173,218,262],[132,143,155,172,173,218,262],[132,143,155,157,172,173,218,262],[132,143,155,156,158,160,161,162,163,172,173,218,262],[132,143,156,158,160,161,162,172,173,218,262],[132,143,155,159,172,173,218,262],[132,143,155,164,172,173,218,262],[132,143,166,172,173,218,262],[132,143,154,157,159,163,164,172,173,218,262],[132,143,172,173,218,262,274],[132,143,172,173,218,262,294,413],[132,143,172,173,218,262,267,277,294,305,413,414],[132,143,172,173,218,262,413,414,415,416,417,418,419,420,421,422,423],[132,143,172,173,218,262,277],[132,143,172,173,218,262,274,312,410],[132,143,172,173,218,262,274,312,409,411],[132,143,172,173,218,262,1423,1424,1425,1426,1427],[132,143,172,173,218,262,1421],[132,143,172,173,218,262,1422,1428,1429],[132,143,172,173,218,262,1319],[132,143,172,173,218,262,312],[132,143,172,173,218,262,313],[132,143,172,173,218,262,277,306],[132,143,172,173,218,262,408,411],[132,143,172,173,218,262,424,471,472],[132,143,172,173,218,262,277,313,424,425,465,466,467,468,469,470,478],[132,143,172,173,218,262,263,424,466,471],[132,143,172,173,218,262,424,466,471,472],[132,143,172,173,218,262,424,478],[132,143,172,173,218,262,424,466,471],[132,143,172,173,218,262,424,466,471,472,478],[132,143,172,173,218,262,277,313,424],[132,143,172,173,218,262,274,305,424,468,469,471,472,473,474,475,476,477],[132,143,172,173,218,262,277,305,424,468,478],[132,143,172,173,218,262,274,275,312],[132,143,172,173,218,262,650],[132,143,172,173,218,262,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664],[126,128,132,143,172,173,218,262],[126,129,130,132,143,172,173,218,262],[126,132,143,172,173,218,262],[65,71,132,143,172,173,218,262],[132,143,172,173,218,262,1240],[69,132,143,172,173,218,262],[66,70,132,143,172,173,218,262],[132,143,172,173,218,262,1554,1559],[132,143,172,173,218,262,1555,1556,1557,1558],[132,143,172,173,218,262,1554,1555],[132,143,172,173,218,262,1554],[132,143,172,173,218,262,1556,1557],[132,143,172,173,218,262,1550,1551,1552,1553],[132,143,172,173,218,262,1550],[132,143,172,173,218,262,1747,1753,1754],[132,143,172,173,218,262,635,1793],[132,143,172,173,218,262,635,1775,1789,1791],[132,143,172,173,218,262,635,1775,1785,1788,1791],[132,143,172,173,218,262,635,1785,1788],[132,143,172,173,218,262,1777],[132,143,172,173,218,262,1783,1784,1788],[132,143,172,173,218,262,1784,1785,1787,1788,1795],[132,143,172,173,218,262,1749,1758,1786,1787],[132,143,172,173,218,262,1699,1747,1749,1750,1751,1753,1756,1757,1758,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1776,1777,1778,1779,1780,1781,1782,1783,1786,1789,1790,1791,1792,1793,1794,1796,1797,1798,1799,1800],[132,143,172,173,218,262,1748],[132,143,172,173,218,262,1750,1758,1770,1788],[132,143,172,173,218,262,1750],[132,143,172,173,218,262,274,1753],[132,143,172,173,218,262,1747,1753,1759],[132,143,172,173,218,262,635,1747,1755,1757,1758,1759,1760,1761,1762,1766,1771,1773,1774,1789],[132,143,172,173,218,262,1747],[132,143,172,173,218,262,635,1747,1752,1753,1757,1762,1767,1772,1773,1774,1775,1780,1781,1783,1789,1790],[132,143,172,173,218,262,1747,1753],[132,143,172,173,218,262,1753],[132,143,172,173,218,262,1747,1753,1757,1758,1762,1771,1773,1775,1778,1779,1780,1783,1789],[132,143,172,173,218,262,635,1747,1749,1753,1757,1767,1772,1773,1774,1782],[132,143,172,173,218,262,1747,1753,1755,1757,1758,1770,1774,1783],[132,143,172,173,218,262,1753,1756,1757,1758,1764,1771],[132,143,172,173,218,262,1699,1753,1756,1757,1758,1763,1770],[132,143,172,173,218,262,1747,1753,1757,1758,1765,1766,1771,1772],[132,143,172,173,218,262,1747,1753,1755,1756,1757,1758,1764,1771],[132,143,172,173,218,262,1753,1757,1758,1764,1767],[132,143,172,173,218,262,1753,1757],[132,143,172,173,218,262,1747,1753,1757,1767,1772],[132,143,172,173,218,262,1753,1757,1764,1767,1770],[132,143,172,173,218,262,635,1747,1749,1753,1755,1756],[132,143,172,173,218,262,635,1747,1749,1753,1757,1765,1766,1767,1768,1769],[132,143,172,173,218,262,1753,1758,1765,1766,1771],[132,143,172,173,218,262,1758,1771],[132,143,172,173,218,262,1756,1757],[132,143,172,173,218,262,1757,1791],[132,143,172,173,218,262,1771],[132,143,172,173,218,262,1765,1766,1768,1769],[132,143,172,173,218,262,1747,1753,1757,1758,1765,1766,1767,1768,1769,1771,1772,1773,1774,1776,1777,1780,1781,1783],[132,143,172,173,218,262,1240,1242,1243,1244,1245],[132,143,172,173,218,262,1240,1242,1246],[132,143,172,173,218,262,1355,1357],[132,143,172,173,218,262,1320],[132,143,172,173,218,262,1321,1357],[132,143,172,173,218,262,408,1321,1353,1356],[132,143,172,173,218,262,1321,1323,1351,1354,1355,1361,1431,1432],[132,143,172,173,218,262,1317,1321,1354,1355,1356,1357,1358,1359,1361,1433,1434,1435],[132,143,172,173,218,262,1321,1354,1356,1357],[132,143,172,173,218,262,1254,1316],[132,143,172,173,218,262,1357,1361,1433],[132,143,172,173,218,262,1361],[132,143,172,173,218,262,1323,1351,1354,1361,1420,1430,1436],[132,143,172,173,218,262,1354,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419],[132,143,172,173,218,262,1323,1351,1354,1361],[132,143,172,173,218,262,1321,1360,1420],[132,143,172,173,218,262,1321],[132,143,172,173,218,262,1321,1323,1351,1353,1354],[68,132,143,172,173,218,262],[132,143,172,173,218,262,714],[132,143,172,173,218,262,715,716,717],[132,143,172,173,218,262,715,716,717,718],[132,143,172,173,218,262,715,716,718],[98,132,143,172,173,218,262],[94,132,143,172,173,218,262],[97,99,132,143,172,173,218,262],[89,90,91,92,93,94,95,96,132,143,172,173,218,262],[90,132,143,172,173,218,262],[91,132,143,172,173,218,262],[89,91,132,143,172,173,218,262],[95,132,143,172,173,218,262],[126,127,131,132,143,172,173,218,262],[132,143,172,173,218,262,1128],[132,143,172,173,218,262,330,331,332,333,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407],[132,143,172,173,218,262,356],[132,143,172,173,218,262,356,369],[132,143,172,173,218,262,334,383],[132,143,172,173,218,262,384],[132,143,172,173,218,262,335,358],[132,143,172,173,218,262,358],[132,143,172,173,218,262,334],[132,143,172,173,218,262,387],[132,143,172,173,218,262,367],[132,143,172,173,218,262,334,375,383],[132,143,172,173,218,262,378],[132,143,172,173,218,262,380],[132,143,172,173,218,262,330],[132,143,172,173,218,262,350],[132,143,172,173,218,262,331,332,371],[132,143,172,173,218,262,391],[132,143,172,173,218,262,389],[132,143,172,173,218,262,335,336],[132,143,172,173,218,262,337],[132,143,172,173,218,262,348],[132,143,172,173,218,262,334,339],[132,143,172,173,218,262,393],[132,143,172,173,218,262,335],[132,143,172,173,218,262,387,396,399],[132,143,172,173,218,262,335,336,380],[132,143,172,173,218,229,233,262,305],[132,143,172,173,218,229,262,294,305],[132,143,172,173,218,224,262],[132,143,172,173,218,226,229,262,302,305],[132,143,172,173,218,262,282,302],[132,143,172,173,218,224,262,312],[132,143,172,173,218,226,229,262,282,305],[132,143,172,173,218,221,222,225,228,262,274,294,305],[132,143,172,173,218,229,236,262],[132,143,172,173,218,221,227,262],[132,143,172,173,218,229,250,251,262],[132,143,172,173,218,225,229,262,297,305,312],[132,143,172,173,218,250,262,312],[132,143,172,173,218,223,224,262,312],[132,143,172,173,218,229,262],[132,143,172,173,218,223,224,225,226,227,228,229,230,231,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,251,252,253,254,255,256,262],[132,143,172,173,218,229,244,262],[132,143,172,173,218,229,236,237,262],[132,143,172,173,218,227,229,237,238,262],[132,143,172,173,218,228,262],[132,143,172,173,218,221,224,229,262],[132,143,172,173,218,229,233,237,238,262],[132,143,172,173,218,233,262],[132,143,172,173,218,227,229,232,262,305],[132,143,172,173,218,221,226,229,236,262],[132,143,172,173,218,262,294],[132,143,172,173,218,224,229,250,262,310,312],[132,143,172,173,218,262,1181,1224],[132,143,172,173,218,262,715,1181,1228],[132,143,172,173,218,262,717,1225],[132,143,172,173,218,262,718,1229],[132,143,172,173,218,262,715,718,1181,1227],[132,143,172,173,218,262,718,1181,1228],[132,143,172,173,218,262,1226,1228,1229,1230,1231],[132,143,172,173,218,262,1180],[132,143,172,173,218,262,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179],[132,143,172,173,218,262,1140,1144,1148],[132,143,172,173,218,262,1140,1141,1144,1151,1153],[132,143,172,173,218,262,1140,1141,1144,1151,1153,1162],[132,143,172,173,218,262,1140,1141,1144,1147,1151,1153],[132,143,172,173,218,262,1140,1144,1149,1151],[132,143,172,173,218,262,1140,1141,1142,1144,1147,1148,1149,1151,1152],[132,143,172,173,218,262,1140,1143,1144,1145,1146,1153,1162],[132,143,172,173,218,262,1141,1143,1144,1147,1153,1162],[132,143,172,173,218,262,1141,1143,1144,1146,1147,1148,1153,1162],[132,143,172,173,218,262,1141,1146,1147,1157,1160],[132,143,172,173,218,262,1143,1144,1157,1160,1161],[132,143,172,173,218,262,1141,1147,1153,1157,1158,1159,1161,1162],[132,143,172,173,218,262,1141,1156],[132,143,172,173,218,262,1141,1155,1161],[132,143,172,173,218,262,1136,1162],[132,143,172,173,218,262,1140,1141,1144,1148,1150,1151,1153],[132,143,172,173,218,262,1136,1137,1143,1144,1147,1151,1153,1154,1155,1156,1160,1161],[132,143,172,173,218,262,1138,1139,1147],[132,143,172,173,218,262,1142,1144,1148,1156,1162],[132,143,172,173,218,262,1138,1139,1147,1148,1162],[132,143,172,173,218,262,1140,1141,1142,1144,1153,1162],[132,143,172,173,218,262,1144,1148,1150,1153],[132,143,172,173,218,262,1140,1142,1143,1147,1148,1149,1151,1153,1162],[132,143,172,173,218,262,1136,1142,1143,1144,1147,1153,1162],[132,143,172,173,218,262,1139,1148],[132,143,172,173,218,262,1138,1148],[132,143,172,173,218,262,1144,1147,1149,1153],[132,143,172,173,218,262,1139,1140,1141,1144,1150,1151,1153,1162],[132,143,172,173,218,262,1147,1153],[132,143,172,173,218,262,1147],[132,143,172,173,218,262,1140,1141,1142,1150,1153,1169],[132,143,172,173,218,262,539,540,541],[132,143,172,173,218,262,523,535,539],[132,143,172,173,218,262,537,538],[132,143,172,173,218,262,523,535,537],[132,143,172,173,218,262,523],[132,143,172,173,218,262,523,535,536],[132,143,172,173,218,262,523,529],[132,143,172,173,218,262,523,524],[132,143,172,173,218,262,525,526,527,528],[132,143,172,173,218,262,529,530,531,532,533,534],[125,132,143,172,173,218,262,523,529],[125,132,143,172,173,186,218,262],[132,143,172,173,218,262,516,518],[132,143,172,173,218,262,516,517,518,519,520,521,522],[132,143,172,173,218,262,516],[125,132,143,172,173,186,218,262,516,517],[132,143,172,173,218,262,516,517,518],[125,132,143,172,173,218,262,516,518,520,521],[132,143,172,173,218,262,314,317],[132,143,172,173,218,262,316],[132,143,172,173,218,262,314,315],[132,143,172,173,218,262,322],[132,143,172,173,218,262,313,314],[132,143,172,173,218,262,313,325],[88,125,132,143,172,173,218,262,284,313,314,323,324,325,326,327,328,329,412,478,479,1854],[132,143,172,173,218,262,325,478],[84,88,125,132,143,144,172,173,180,197,200,205,218,262,314,315,317,485,544,1850,1851],[84,125,132,143,172,173,180,192,200,205,218,262,315,544,583,646,649,911,943],[84,88,125,132,138,139,141,143,144,172,173,180,181,184,186,192,193,197,200,205,207,212,218,262,314,315,485,544,547,549,551,553,558,562,565,566,567,568,575,577,582,583,585,590,593,595,598,599,600,602,603,606,608,612,615,617,620,623,626,627,631,633,638,642,643,644,645,646,647,649,669,671,672,674,675,676,677,678,679,680,681,682,683,685,686,687,689,690,691,692,694,695,696,699,700,701,702,703,704,705,706,707,708,709,710,712,713,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,906,909,911,925,932,939,943,944,951,952,953,956,960,962,967,969,976,980,983,986,990,993,996,999,1002,1003,1005,1007,1010,1014,1015,1515,1516,1517,1518,1519,1520,1523,1525,1526,1529,1533,1582,1647,1649,1670,1673,1677,1689,1692,1694,1697,1698,1817,1818,1819,1824,1828,1830,1831,1835,1836,1844,1848,1849],[132,143,172,173,180,212,218,262,315,325,1801,1817],[132,143,172,173,218,262,314,315,316],[84,88,132,143,172,173,212,218,262,313],[132,143,172,173,218,262,314],[125,132,143,172,173,218,262,481],[132,143,172,173,218,262,481,482,483],[125,132,143,172,173,218,262],[132,143,172,173,218,262,481],[132,142,143,172,173,218,262,906],[132,143,172,173,218,262,945,946,947,948,949],[132,143,172,173,218,262,945,946,947,948,949,950],[132,142,143,172,173,218,262],[132,143,172,173,218,262,906],[132,143,172,173,218,262,501,502],[108,114,132,143,172,173,218,262],[114,132,143,172,173,218,262],[84,102,113,132,143,172,173,218,262],[101,102,103,107,109,110,114,132,143,172,173,218,262],[84,101,114,115,116,132,143,172,173,218,262],[101,114,125,132,143,172,173,218,262],[101,102,103,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,132,143,172,173,218,262],[101,102,103,114,125,132,143,172,173,218,262],[101,102,111,114,125,132,143,172,173,218,262],[102,103,114,125,132,143,172,173,218,262],[101,102,107,113,114,132,143,172,173,218,262],[84,114,132,143,172,173,218,262],[84,100,101,114,132,143,172,173,218,262],[100,102,114,132,143,172,173,218,262],[84,101,102,103,107,108,112,114,132,143,172,173,218,262],[132,143,172,173,218,262,1240,1246,1247,1248],[104,132,143,172,173,218,262],[104,105,106,132,143,172,173,218,262],[132,172,173,218,262],[79,132,143,172,173,218,262],[77,132,143,172,173,218,262],[77,78,79,80,81,82,83,132,143,172,173,218,262],[84,132,143,172,173,218,262],[81,132,143,172,173,218,262],[84,125,132,143,172,173,218,262,492,503],[84,125,132,143,172,173,180,184,218,262,486,487,498,523,535,542],[132,133,143,172,173,218,262],[84,125,132,143,172,173,218,262,491,492,498,544],[84,125,132,143,172,173,218,262,544],[132,143,172,173,184,218,262],[132,143,172,173,180,218,262,492,497],[84,125,132,143,172,173,218,262,486,492],[84,125,132,142,143,172,173,180,218,262,491,492,498],[132,143,172,173,218,262,510],[132,143,172,173,218,262,487,488,489,491,492,493,498,499,500,504,505,506,507,508,509,511,512,513,514,515,543],[84,132,143,172,173,218,262,492],[84,125,132,143,172,173,218,262],[84,125,132,133,143,172,173,218,262,487,488,489,491],[84,125,132,143,172,173,218,262,487,492],[125,132,143,172,173,218,262,492,544],[125,132,143,172,173,218,262,491,492,498],[84,125,132,143,172,173,200,218,262,544],[84,125,132,133,143,172,173,218,262,490],[84,125,132,142,143,172,173,180,184,218,262,488,492,496,497,544],[125,132,143,172,173,218,262,495],[125,132,143,172,173,218,262,494],[132,143,172,173,218,262,554,555],[132,143,172,173,218,262,554],[132,143,172,173,218,262,621,622],[132,143,172,173,218,262,1090,1091,1092,1093,1094],[132,143,172,173,218,262,1090],[125,132,143,172,173,218,262,1090],[132,143,172,173,218,262,1095,1195,1218,1219],[132,143,172,173,218,262,1095,1213,1217],[132,143,172,173,218,262,1095],[132,143,172,173,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1022,1024,1025,1026,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1041,1043,1045,1047,1048,1049,1050,1051,1052,1054,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1084,1086,1087,1088,1098,1099,1105,1110,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,1022,1062,1089,1095,1096,1097,1098,1099,1100,1101,1102,1109],[132,143,172,173,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1022,1023,1025,1027,1029,1031,1033,1034,1035,1036,1037,1042,1044,1046,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1022,1023,1025,1027,1029,1031,1033,1034,1035,1036,1037,1042,1044,1046,1048,1050,1052,1053,1054,1056,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085,1087,1098,1099,1105,1110,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1036,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1049,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,719,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[125,132,143,172,173,218,262,720,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1095,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[125,132,143,172,173,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061],[132,143,172,173,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1024,1025,1026,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,1024,1026,1028,1030,1032,1041,1043,1045,1047,1049,1051,1064,1066,1068,1070,1072,1074,1076,1078,1080,1082,1084,1086,1088,1104,1106,1108],[132,143,172,173,180,218,262],[132,133,143,148,149,172,173,218,262],[125,132,143,148,149,150,172,173,218,262],[132,143,150,151,172,173,218,262],[84,132,133,141,143,144,145,146,147,148,149,150,152,169,170,171,172,173,174,175,176,177,178,179,218,262],[132,143,169,172,173,218,262],[84,125,132,133,142,143,146,172,173,218,262],[132,133,143,146,172,173,218,262],[132,133,143,147,172,173,218,262],[84,132,133,143,172,173,218,262],[84,132,133,142,143,145,172,173,218,262],[132,133,143,169,172,173,218,262],[84,132,133,143,145,172,173,218,262],[84,125,132,133,143,168,172,173,180,218,262],[84,132,143,172,173,218,262,647],[84,132,143,172,173,193,218,262],[125,132,143,172,173,193,218,262,544],[84,125,132,143,172,173,180,184,192,193,218,262,544,925,932],[84,132,143,172,173,218,262,933,934,935,937,938],[84,125,132,143,172,173,192,193,218,262,544],[125,132,143,172,173,180,184,193,218,262,544,669,935,936],[84,125,132,143,172,173,180,181,184,192,218,262],[84,132,143,172,173,218,262,974,975],[84,132,143,172,173,218,262,549],[84,125,132,143,172,173,212,218,262,544,549,973],[132,143,172,173,192,218,262,544,549],[84,132,143,172,173,218,262,548],[125,132,143,172,173,192,212,218,262,547],[84,125,132,143,172,173,218,262,547,904,905],[125,132,143,172,173,218,262,547],[84,132,143,172,173,218,262,551],[84,125,132,143,172,173,193,218,262,544,551,997,998],[125,132,143,172,173,218,262,544,551],[84,125,132,143,172,173,180,181,205,218,262,550],[84,132,143,172,173,218,262,671],[132,143,172,173,218,262,670],[84,132,143,172,173,180,218,262],[84,132,143,172,173,218,262,565],[132,143,172,173,218,262,559],[84,125,132,143,172,173,218,262,559,560,563,564],[125,132,143,172,173,218,262,559,560,563],[125,132,143,172,173,192,218,262,553,558],[125,132,143,172,173,218,262,551,553,562,565],[84,132,143,172,173,218,262,566],[84,125,132,143,172,173,180,181,184,192,218,262,553,558],[84,132,143,172,173,207,218,262],[84,125,132,143,172,173,180,192,207,218,262,544,925,1011,1012,1013],[84,125,132,143,172,173,180,207,218,262,484,485,544,1011],[84,125,132,143,172,173,180,181,192,197,200,206,218,262],[125,132,143,172,173,207,218,262],[84,132,143,172,173,186,218,262],[84,132,143,172,173,218,262,1826,1827],[84,125,132,133,143,172,173,184,186,218,262,544],[125,132,143,172,173,186,218,262,523,887],[84,125,132,142,143,172,173,180,184,186,205,218,262,544,556,925,967,1825,1826],[84,125,132,143,172,173,180,181,184,185,218,262],[84,132,143,172,173,218,262,645],[84,132,143,172,173,218,262,1829],[125,132,143,172,173,180,184,186,205,218,262,544,645,925],[84,125,132,143,172,173,186,218,262],[84,132,143,172,173,218,262,547],[84,125,132,143,172,173,180,200,218,262],[125,132,143,172,173,180,184,192,200,205,218,262,544,547,943,970,971],[84,132,143,172,173,180,193,218,262,544,547,978,979],[84,125,132,143,172,173,180,184,192,193,200,205,218,262,544,547,925,967,970,972,977,978],[84,125,132,133,143,172,173,184,200,218,262,547],[125,132,143,172,173,180,193,218,262,547],[84,125,132,143,172,173,180,192,193,200,212,218,262,544,547,549,925,932,939,943,970,976,977,979],[84,125,132,143,172,173,180,184,192,193,200,205,218,262,545,546],[125,132,143,172,173,218,262,567],[125,132,143,172,173,218,262,954,955],[84,132,143,172,173,218,262,649],[84,125,132,143,172,173,180,186,192,218,262,523,544,549,556,645,649,669,932,976,1110,1839,1840],[125,132,143,172,173,184,186,218,262,523,925],[84,132,143,172,173,218,262,1839,1840,1841,1842,1843],[84,125,132,143,172,173,180,218,262,649],[125,132,143,172,173,186,218,262,523,544,556,649,1837],[125,132,143,172,173,180,186,218,262,523,544,649],[84,125,132,143,172,173,180,192,218,262,523,649,887],[84,125,132,143,172,173,180,184,186,218,262,523,544,669,1110,1220,1837,1838,1839],[84,125,132,143,172,173,186,218,262,648],[84,125,132,143,172,173,180,186,192,218,262,523],[84,132,143,172,173,192,218,262],[84,125,132,143,172,173,192,218,262],[125,132,143,172,173,192,218,262,930],[125,132,143,172,173,180,192,218,262,544,927,930],[84,125,132,143,172,173,180,192,218,262,485,544,925,926,927,930,931],[84,125,132,133,143,172,173,184,192,218,262],[84,125,132,139,143,172,173,180,184,192,200,205,218,262,484,485,544,925,927,928,929],[132,143,172,173,192,218,262],[125,132,143,172,173,180,192,218,262],[125,132,143,172,173,192,218,262],[84,125,132,139,143,172,173,180,184,186,187,189,190,191,218,262],[125,132,143,172,173,180,186,192,218,262],[125,132,143,172,173,180,187,188,192,218,262],[84,132,143,172,173,218,262,582],[84,125,132,143,172,173,180,192,218,262,544,582,1651,1656],[84,125,132,143,172,173,180,192,218,262,544,582,699,1650,1651,1656,1669],[125,132,143,172,173,180,184,218,262,544,582,925,1469],[84,125,132,133,143,172,173,184,218,262,582],[125,132,143,172,173,218,262,547,582,1652,1656,1657,1658,1660,1661,1662,1663,1664,1665,1666,1667],[125,132,143,172,173,180,218,262,551,577,582,1652],[132,143,172,173,218,262,582,1652,1660],[132,143,172,173,218,262,582,1652,1660,1661],[132,143,172,173,218,262,577,582,1652,1658,1660],[132,143,172,173,218,262,582,1652,1657],[125,132,143,172,173,180,218,262,544,551,582,1652,1656,1657],[84,125,132,143,172,173,180,192,218,262,544,547,577,582,1651,1652,1656,1657,1659],[125,132,143,172,173,218,262,544,551,568,577,582,1651,1652,1657,1658,1660],[132,143,172,173,218,262,1653,1654],[132,143,172,173,218,262,1652,1653],[125,132,143,172,173,218,262,582,1652,1654],[125,132,143,172,173,192,218,262,544,568,582,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,887,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486,1515,1660,1668],[84,125,132,143,172,173,180,184,192,218,262,544,547,556,568,582,932,1110,1650,1651,1655],[125,132,143,172,173,192,218,262,578],[132,143,172,173,218,262,578,579,580,581],[84,125,132,133,143,172,173,184,200,218,262,578],[125,132,143,172,173,192,218,262,547,551,553,568,577],[125,132,143,172,173,192,218,262,547,551,553,578],[84,88,132,143,172,173,218,262],[84,132,143,172,173,218,262,1696],[88,132,143,172,173,218,262],[88,132,143,172,173,218,262,1695],[85,86,87,132,143,172,173,218,262],[84,85,132,143,172,173,218,262],[85,132,143,172,173,218,262],[84,132,143,172,173,218,262,583],[84,132,143,172,173,218,262,910],[132,143,172,173,218,262,544,583],[84,125,132,143,172,173,180,181,200,218,262],[84,132,143,172,173,180,218,262,584],[84,132,143,172,173,218,262,590],[84,125,132,143,172,173,180,218,262,544,590,925,1527,1528],[84,125,132,133,143,172,173,218,262,590],[84,125,132,143,172,173,180,205,218,262,544,556,590,925,1469,1527],[132,143,172,173,218,262,586,587,588,589],[84,125,132,133,143,172,173,184,200,218,262,586],[125,132,143,172,173,181,184,218,262],[125,132,143,172,173,218,262,586],[84,132,138,143,172,173,218,262],[84,125,132,138,143,172,173,180,218,262,544,1521,1522],[125,132,138,143,172,173,180,184,218,262,544,925],[84,125,132,138,142,143,172,173,180,218,262,544,642,925,1521],[132,134,135,136,137,143,172,173,218,262],[84,125,132,133,134,143,172,173,218,262],[125,132,134,143,172,173,218,262],[84,132,143,172,173,218,262,669],[84,132,143,172,173,218,262,1847],[125,132,143,172,173,218,262,669],[132,143,172,173,180,218,262,669,1845,1846],[132,143,172,173,218,262,666,667,668],[84,125,132,143,172,173,180,218,262,666],[125,132,143,172,173,218,262,665],[132,143,172,173,218,262,665],[84,132,143,172,173,218,262,593],[132,143,172,173,218,262,591,592],[84,125,132,143,172,173,218,262,544,562,1001],[84,132,143,172,173,218,262,562],[125,132,143,172,173,192,218,262,544,562,932,1000],[84,125,132,143,172,173,180,192,197,200,218,262,561],[84,132,143,172,173,218,262,595],[84,125,132,143,172,173,180,218,262,594],[125,132,143,172,173,180,218,262],[84,132,143,172,173,218,262,598],[84,132,143,172,173,180,218,262,598],[84,125,132,143,172,173,184,192,200,218,262,596,597],[132,143,172,173,218,262,598],[84,132,143,172,173,218,262,646],[84,132,143,172,173,218,262,600],[84,125,132,143,172,173,180,218,262,600,1004],[84,132,143,172,173,218,262,602],[84,132,143,172,173,218,262,992],[84,125,132,133,143,172,173,218,262,602],[125,132,143,172,173,218,262,602,991],[84,125,132,143,172,173,192,218,262,558,601],[84,132,143,172,173,218,262,485,959],[84,132,143,172,173,218,262,485],[84,125,132,142,143,172,173,180,205,218,262,484,485,544,957,958,960],[84,125,132,143,172,173,180,218,262,484],[84,132,143,172,173,212,218,262],[132,143,172,173,180,218,262,1816],[84,125,132,143,172,173,218,262,549,1816],[84,132,133,143,172,173,184,212,218,262,491],[125,132,143,172,173,192,212,218,262,544,638,932,976,1814],[84,125,132,142,143,172,173,180,184,192,205,207,212,218,262,485,544,547,549,638,925,932,967,976,1673,1801,1804,1812,1813,1814,1815],[132,143,172,173,208,209,210,211,218,262],[84,125,132,133,138,143,172,173,184,200,205,208,218,262],[125,132,143,172,173,181,192,207,218,262],[125,132,143,172,173,192,208,218,262],[84,132,143,172,173,218,262,644],[84,132,143,172,173,218,262,638],[84,132,143,172,173,218,262,1671,1672],[132,143,172,173,218,262,638],[84,132,143,172,173,218,262,274,635,638,1671],[132,143,172,173,218,262,634,636,637],[132,143,172,173,218,262,635,636],[84,132,143,172,173,200,218,262],[125,132,143,172,173,193,200,218,262,544,942],[84,132,143,172,173,218,262,940,942],[84,125,132,143,172,173,200,218,262],[84,125,132,142,143,172,173,180,184,193,200,205,218,262,544,547,925,939,940,941],[84,125,132,143,172,173,180,181,184,192,193,197,198,199,218,262],[84,132,143,172,173,218,262,961],[84,132,143,172,173,180,218,262,485,544,960,962],[84,132,143,172,173,181,218,262],[84,132,143,172,173,218,262,1690,1691],[125,132,143,172,173,192,218,262,606,932,1690],[125,132,143,172,173,192,218,262,606],[132,143,172,173,218,262,604,605],[84,132,133,143,172,173,192,218,262],[84,132,143,172,173,218,262,699],[84,125,132,143,172,173,180,218,262,699],[132,143,172,173,218,262,697,698],[84,125,132,133,143,172,173,218,262],[84,132,143,172,173,218,262,612],[84,132,143,172,173,218,262,1833,1834],[125,132,143,172,173,186,218,262,544,612,1833],[84,125,132,143,172,173,180,184,218,262,544,612],[84,125,132,143,172,173,180,184,186,218,262,544,612,1832],[84,125,132,143,172,173,218,262,612],[84,125,132,143,172,173,180,184,186,218,262,608,609,610,611],[125,132,143,172,173,218,262,612],[132,143,172,173,218,262,609],[84,132,143,172,173,218,262,615],[84,125,132,143,172,173,218,262,544,615,1648],[125,132,143,172,173,184,218,262,544,582,615],[132,143,172,173,218,262,613,614],[84,125,132,133,143,172,173,184,218,262,582,613],[125,132,143,172,173,184,218,262,551,582],[84,132,143,172,173,218,262,575],[125,132,143,172,173,184,218,262],[132,143,172,173,218,262,544,575,1567,1568],[125,132,143,172,173,218,262,544,575,1560,1567,1568],[132,143,172,173,218,262,575],[125,132,143,144,172,173,218,262,575,1574],[84,125,132,143,144,172,173,218,262,575,1534],[125,132,143,144,172,173,218,262,575,1577],[125,132,143,144,172,173,218,262,575,1580],[84,132,143,172,173,218,262,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581],[84,125,132,143,172,173,184,218,262,575],[84,132,143,172,173,218,262,575,1535,1536],[125,132,143,172,173,218,262,575,1536,1537],[132,143,172,173,218,262,575,1536],[132,143,172,173,218,262,575,1540],[125,132,143,172,173,218,262,575,1542,1543],[125,132,143,172,173,218,262,575],[125,132,143,172,173,218,262,575,1540],[125,132,143,172,173,218,262,544,575],[125,132,143,172,173,218,262,544,575,1534],[132,143,172,173,218,262,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1561,1562,1563,1564,1565,1566],[84,125,132,143,144,172,173,218,262,544,575,1535,1542,1560],[125,132,143,172,173,218,262,575,1540,1564],[125,132,143,172,173,218,262,575,1541],[132,143,172,173,218,262,569,570,571,572,573],[84,125,132,143,144,172,173,218,262,569],[132,143,172,173,218,262,569],[84,125,132,143,172,173,218,262,574],[84,132,143,172,173,218,262,643],[132,143,172,173,218,262,1685],[84,132,143,172,173,218,262,1684,1688],[84,132,133,143,172,173,218,262,643],[132,143,172,173,218,262,1678,1679],[84,125,132,143,144,172,173,180,184,218,262,642,1684,1685,1687],[84,132,143,172,173,218,262,544,1679,1680,1682,1683,1685,1686],[132,143,172,173,180,218,262,1679,1685,1686],[132,143,172,173,218,262,1684],[132,143,172,173,218,262,1678,1681,1685],[84,132,143,172,173,218,262,1685,1686],[84,132,143,172,173,218,262,642],[84,132,143,172,173,218,262,620],[84,125,132,143,172,173,180,184,192,218,262,544,558,620,925,981,984,985],[84,125,132,133,143,172,173,184,218,262,491,553,620],[84,125,132,143,172,173,180,184,192,205,218,262,544,617,620,925,981,983],[84,125,132,143,172,173,180,218,262,558,618,619],[125,132,143,172,173,192,207,218,262,553,558,617],[84,132,143,172,173,218,262,568],[84,125,132,143,172,173,180,192,218,262,547],[84,132,143,172,173,197,218,262],[84,125,132,142,143,172,173,180,218,262,544,915,987,988,989],[84,125,132,133,143,172,173,197,205,218,262],[84,125,132,139,143,172,173,192,197,218,262,484,485,544,932],[84,125,132,139,143,172,173,180,194,195,196,218,262],[84,125,132,143,172,173,180,218,262],[132,143,172,173,218,262,907,908],[84,132,143,172,173,218,262,626],[84,132,143,172,173,218,262,1524],[84,125,132,143,172,173,180,218,262,544,626],[84,125,132,143,172,173,218,262,624,625],[84,132,143,172,173,218,262,617],[84,132,143,172,173,218,262,982],[125,132,143,172,173,180,184,218,262,544,617,925],[84,125,132,143,172,173,180,184,218,262,616],[84,132,143,172,173,218,262,553],[84,125,132,143,172,173,180,184,218,262,553,1009],[84,132,133,143,172,173,184,218,262,553],[84,125,132,142,143,172,173,180,184,218,262,544,553,925,1008],[84,125,132,143,172,173,180,184,218,262,552],[84,132,143,172,173,218,262,558],[84,125,132,143,172,173,180,184,218,262,544,558,925,968],[84,125,132,143,172,173,184,218,262,558,925],[84,125,132,143,172,173,180,184,192,200,218,262,556,557],[125,132,143,172,173,218,262,556,558],[84,125,132,143,172,173,218,262,544,994,995],[84,132,133,143,172,173,218,262,627],[84,132,139,143,172,173,192,218,262,544,932,994],[84,125,132,139,143,172,173,180,192,197,200,218,262],[84,132,139,143,172,173,218,262],[84,132,143,172,173,180,218,262,887,1006],[84,125,132,139,143,172,173,218,262,544],[84,132,143,172,173,218,262,631],[132,143,172,173,218,262,631,925],[125,132,143,172,173,218,262,631],[84,132,143,172,173,218,262,1820,1823],[125,132,143,172,173,180,184,192,218,262,544,631,925],[125,132,142,143,172,173,180,218,262,631,1820,1821,1822],[132,143,172,173,218,262,628,629,630],[84,125,132,133,143,172,173,184,218,262,628],[125,132,143,172,173,184,192,218,262,551],[84,132,143,172,173,218,262,887],[132,143,172,173,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1110,1222,1233,1236,1438,1448,1449,1486],[84,132,143,172,173,180,218,262,544,669,887],[132,143,172,173,180,218,262,719,720,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1110,1222,1233,1236,1246,1249,1251,1252,1438,1448,1449,1486],[132,143,144,172,173,218,262,719,720,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1110,1181,1222,1233,1236,1246,1251,1252,1436,1438,1448,1449,1486],[132,143,172,173,180,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,887,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,180,218,262,544,719,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1133,1181,1222,1233,1236,1438,1448,1449,1486],[84,132,143,172,173,218,262,544,719,720,723,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,887,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1110,1134,1190,1222,1233,1236,1438,1448,1449,1486],[125,132,138,143,172,173,218,262,544,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1133,1134,1190,1191,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1191,1222,1233,1236,1438,1448,1449,1486],[84,132,143,172,173,218,262,544,669,719,720,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1110,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,180,218,262,544,719,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1110,1222,1233,1236,1438,1442,1448,1449,1486],[132,143,172,173,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1051,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[84,125,132,143,172,173,180,218,262,544,719,720,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,887,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1110,1134,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,719,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1189,1222,1233,1236,1438,1448,1449,1486],[84,125,132,143,172,173,180,218,262,544,547,719,720,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1129,1133,1181,1222,1233,1236,1438,1448,1449,1486],[84,132,143,172,173,180,218,262,719,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,180,218,262,719,720,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1110,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,719,720,721,723,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,887,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,719,720,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[84,125,132,143,172,173,180,184,192,205,218,262,544,719,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1110,1133,1189,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,719,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1442,1448,1449,1486],[84,125,132,143,172,173,218,262,544,719,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1442,1448,1449,1486],[132,143,172,173,180,218,262,719,720,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,719,720,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1483,1486],[132,143,172,173,218,262,719,720,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1110,1220,1222,1233,1236,1438,1448,1449,1486],[125,132,143,172,173,218,262,719,720,721,723,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,719,720,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1185,1186,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,180,218,262,1457],[132,143,172,173,218,262,719,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,887,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1185,1186,1187,1222,1233,1236,1438,1448,1449,1456,1458,1459,1460,1486],[132,143,172,173,218,262,719,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1185,1187,1222,1233,1236,1438,1448,1449,1457,1460,1486],[132,143,172,173,218,262,719,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1187,1222,1233,1236,1438,1448,1449,1457,1486],[132,143,172,173,218,262,719,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1185,1187,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1185,1186,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,1188,1466,1467],[132,143,172,173,180,218,262,719,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,887,1025,1029,1031,1033,1035,1037,1041,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1133,1134,1185,1186,1187,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,719,720,1047,1185,1187,1459,1461,1462,1463,1464,1465],[132,143,172,173,218,262,1043],[132,143,172,173,218,262,720,1185],[132,143,172,173,218,262,719,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1185,1186,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,719,720,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,887,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1469,1486],[125,132,143,172,173,218,262,544,719,720,721,723,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,887,1024,1025,1026,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1133,1194,1222,1233,1236,1438,1448,1449,1486],[125,132,143,172,173,180,218,262,497,719,720,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,887,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1129,1133,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,180,184,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,887,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1133,1189,1192,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,1131,1132],[132,143,172,173,180,218,262,720,721,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1130,1131,1222,1233,1236,1438,1448,1449,1486],[84,132,143,172,173,218,262,491,1021,1133,1135,1182,1183,1188,1190,1191,1194,1221,1222,1223,1441,1445,1446,1448,1449,1451,1470,1485,1486,1487,1514],[84,125,132,143,172,173,218,262,544,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,887,1025,1029,1031,1033,1035,1037,1045,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1110,1134,1135,1182,1183,1190,1191,1192,1221,1222,1233,1235,1236,1237,1239,1252,1253,1437,1438,1439,1440,1441,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1468,1470,1484,1486],[125,132,143,172,173,218,262,1487,1510],[132,143,172,173,218,262,1181,1225,1487,1512],[132,143,172,173,218,262,1225],[84,125,132,143,172,173,218,262,503,544,1181,1487,1488,1511,1513],[132,143,172,173,180,218,262,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,887,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1193,1222,1233,1236,1438,1448,1449,1486],[132,143,172,173,218,262,491,885,886],[84,125,132,143,172,173,218,262,885],[84,125,132,133,143,172,173,218,262,720,726,727,728,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,884,1025,1029,1031,1033,1035,1037,1048,1050,1052,1054,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1087,1098,1099,1105,1222,1233,1236,1438,1448,1449,1486],[84,132,143,172,173,218,262,608],[84,132,143,172,173,218,262,1532],[84,125,132,143,172,173,218,262,553,608],[84,125,132,143,172,173,192,207,218,262,608,1530],[125,132,143,172,173,180,207,218,262,544,608,1531],[84,125,132,143,172,173,180,192,207,218,262,556,607],[84,132,143,172,173,218,262,633],[125,132,143,172,173,184,218,262,633],[84,125,132,142,143,172,173,180,184,197,218,262,544,558,633,925,969,1016,1017,1019,1020,1515],[84,125,132,143,172,173,180,205,218,262,544,633,925,1016],[84,125,132,133,143,172,173,184,218,262,491,558,633],[84,125,132,143,172,173,218,262,633,1016],[84,125,132,142,143,172,173,180,184,192,218,262,544,558,633,925,969,1016,1018],[84,125,132,143,172,173,180,181,184,192,218,262,553,558,608,632],[84,132,143,172,173,218,262,577],[132,143,172,173,180,218,262,577,1582,1629],[132,143,172,173,218,262,544,577,1582,1629],[84,125,132,143,144,172,173,180,218,262,544,577,1582,1585,1629],[84,132,143,144,172,173,180,218,262,544,577,1582,1585,1629],[132,143,172,173,180,218,262,577,1621],[132,143,172,173,218,262,577],[125,132,143,172,173,218,262,577],[132,143,172,173,180,218,262,577,1616],[132,143,172,173,180,218,262,577,1625],[84,125,132,143,144,172,173,218,262,577,1585],[84,132,143,172,173,218,262,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646],[84,125,132,143,172,173,184,218,262,577],[132,143,172,173,180,218,262,577,1612,1616,1621,1625],[125,132,143,172,173,180,218,262,577,1612],[132,143,172,173,180,218,262,577,1612],[125,132,143,172,173,180,218,262,544,577,1585,1611,1612,1615,1619,1620,1629],[125,132,143,172,173,180,218,262,544,577,1585,1611,1612,1615,1623,1624,1629],[125,132,143,172,173,180,218,262,544,577,1585,1611,1612,1613,1614,1615,1629],[125,132,143,172,173,180,184,218,262,544],[125,132,143,172,173,192,218,262,577],[132,143,172,173,218,262,577,1583],[132,143,172,173,218,262,577,932,1583,1585],[132,143,172,173,218,262,932,1585],[132,143,172,173,218,262,577,1597],[132,143,172,173,218,262,544,577,1583,1597],[132,143,172,173,218,262,577,932,1583,1585,1597],[125,132,143,172,173,192,218,262,544,577,1582,1586],[125,132,143,172,173,192,218,262,544,577,1587],[125,132,143,172,173,218,262,551,577],[125,132,143,172,173,218,262,577,1582],[125,132,143,172,173,180,218,262,544,577,1583,1585,1588,1616,1617],[125,132,143,172,173,180,218,262,544,577,1583,1585,1589,1621],[125,132,143,172,173,180,192,218,262,544,577,932,1583,1585,1625],[125,132,143,172,173,218,262,544,1585],[132,143,172,173,218,262,1583,1584,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1617,1618,1622,1626,1627,1628],[125,132,143,172,173,218,262,544,577,1583,1585],[132,143,172,173,218,262,544,577,1582,1583,1593],[84,125,132,133,143,172,173,218,262,576],[125,132,143,172,173,192,218,262,551,575],[84,132,143,172,173,218,262,1676],[84,132,133,143,172,173,218,262,642],[132,143,172,173,218,262,642],[84,125,132,143,144,172,173,180,184,218,262,544,642,1674,1675],[132,143,172,173,218,262,639,640,641],[84,125,132,133,143,172,173,218,262,639],[125,132,143,172,173,218,262,639],[84,125,132,143,172,173,184,218,262],[84,125,132,143,172,173,180,192,218,262,544,912,913,915],[84,125,132,142,143,172,173,180,184,218,262,544,912,913,915],[125,132,143,172,173,218,262,544],[84,125,132,143,172,173,180,184,218,262,544,912],[84,132,143,172,173,180,218,262,913,914,915,916,917,918,919,920,921,922,923,924],[84,125,132,142,143,144,172,173,180,184,200,218,262,544],[84,132,133,143,172,173,184,218,262,488],[84,125,132,142,143,172,173,180,184,192,218,262,544,595,887,912,914],[84,125,132,143,172,173,180,184,218,262,544,912,915],[125,132,143,172,173,218,262,544,915],[84,125,132,133,143,172,173,182,183,218,262],[84,125,132,143,172,173,180,181,218,262],[84,132,143,172,173,205,218,262],[84,125,132,143,172,173,218,262,544,963,965,966],[84,132,133,143,172,173,205,218,262],[84,125,132,142,143,172,173,180,205,218,262,963],[84,125,132,143,172,173,180,184,205,218,262,484,485,544],[84,125,132,143,172,173,180,184,197,200,205,218,262,544,925,963,964],[132,143,172,173,201,202,203,204,218,262],[84,125,132,143,172,173,180,184,201,218,262],[84,132,143,172,173,218,262,952],[84,125,132,143,172,173,218,262,544,633,952,1693],[84,125,132,133,143,172,173,197,218,262,952],[84,125,132,143,172,173,180,181,192,193,218,262,551,558,608,633]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"65ac83d983b4acecba7cc527a4bae1818fee534dccb0eb3f9df8129efa14717d","signature":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","affectsGlobalScope":true},{"version":"cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","impliedFormat":1},{"version":"f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec","impliedFormat":1},{"version":"5ab630d466ac55baa6d32820378098404fc18ba9da6f7bc5df30c5dbb1cffae8","affectsGlobalScope":true,"impliedFormat":1},{"version":"72e9425f1ba1eb7fd8122d08f48848a0d56de1cd4c7b51f26dc2612bd26c7241","impliedFormat":1},{"version":"841784cfa9046a2b3e453d638ea5c3e53680eb8225a45db1c13813f6ea4095e5","affectsGlobalScope":true,"impliedFormat":1},{"version":"646ef1cff0ec3cf8e96adb1848357788f244b217345944c2be2942a62764b771","impliedFormat":1},"60fbe05bd6fa8af1edeeb025894d6d3b3692fff1da1ab4243d9c39c566b24a3c","39e2d250796d7b7d873694cf66bc425e4d22df58862e4abbbff1499830e86bce","88bb0d9653265069f6215edfd75e91bbd3f6480f04d05ca763ec5c94a33df165","4931ad8293869a571ac4de3d0a904291f5ee030872692621645999aac1e263c0","2dc6afb1093b32096e9ffe20c8701af5809cbd24c7903846418e3906e72880d0","e1c2be948254c448bd08cbc33c6e6bb84a626ca1266942ece49f87ca1040c07b","e0ba64700593c308cc4b49f66b779ef318987573a4a8fcc5e8d2257e601872c2","af9aaf4ae9e01a9c130761ad564d63281de7b2fae84e71db64c34556bfdbfcb1","6b3811e111621850278f7a7b581f7bab67891265d14180d449edfe950510895b","6bbed50dcea3904b1bed0c3356a05ca1ee77e895b0a4742bfc37441019926ac3","ea268a2182b5f86a974f1cf3728e6732d366e3d256e799aba9ced8232fdfb73e","8f9931f5aae66bb74688367752d8504cf22d1d56bfbc113934a824a560fc3aa6",{"version":"8936c03f17cab53b130cef17392cbef7b5bdeda4369019f566a9b7d90b9a5585","impliedFormat":1},{"version":"96aa03b95ee7911c6c5a89f7bf09fee2cf8bb0970e7344ae5ed02971da95a237","impliedFormat":1},{"version":"4c1a48242908c4a5d7f44f9aac7db7dcdef46b2dba1d696c2f4b3f402cc1a87a","impliedFormat":1},{"version":"76326d78b7a50b55e8492a354d6a1cccf68e406869ee57c85d19598a3384b94f","impliedFormat":1},{"version":"73488bf698ffef792d0cb2fe783c375a4e1f977e86b0f4296b4f5dd8cde17935","impliedFormat":1},{"version":"a85594aee414ee0ca368e46dcea3ebe44245ee7994cb56dcdc92d495d443550e","impliedFormat":1},{"version":"188e84b021d1111a06e5f9e0f563b594c1d6e932c8c6ed360ce587deac24c06c","impliedFormat":1},{"version":"7d28db53ddddaf9a4175f4a86ba27a05a68c74ee8bcc1add3d6fa7cffbea9ef1","impliedFormat":1},{"version":"f3dcb8cafdb9f0497a3ee633c1ceeabda146cbcc9a9ee6e69fccee2510219175","impliedFormat":1},{"version":"2cbf3a082eaa0edb9993f692fec4d45b07a63793f85780616422530dbaf3cbdf","impliedFormat":1},{"version":"4752276fe5c4024412a80d2029867f805e6131b5c1a711bd6d35475e324755b3","impliedFormat":1},{"version":"bca3741ba0d1a5bb53e5a4f6626dc6cf9b791e5f5ee8534c45614499788c11a4","impliedFormat":1},"abc2938f4b63720a7d1b889ebb3020deccc29edc67964b85aecd8e3e89c85400","e9368ac2722027050aea8b8133eea6a6219105b7cdde37fd8153267e6e52ca9b","50b57571b5d164994931eadff25f3f023ea9058987b3a904ad65ff82eec2b067","0d44d27ad5d2add9146195dac4f9d3376e1a7fa49ca29742cc67d5fa5a94f4c4","f3e17ab010155b08ba9c19b8a3ea8954e2cc340f4d1f379be4746e001cda8b3f","1a742dfb0e5ca4d49f1f2e5846dbb96ba4c9dcf7a3683e02228c46cf4d1f791a","551106c2f8ead04826e39a259cddaa8cdc42667fe7e48a4752f8e069c47cfe09","a8dfd1a81a97541a7ac728d013de58cd415bb4ff11021f1e2c6d9bf0614538ef","71d493c0a88d5be9da60a3ecab7a586d15597caa90ff130b64cbbeb5e331f448","18f2b77362e767caef53ef37b21b752bf638a8c70e440d9b46225c0cdad94b60","869ac7a4ac2776822b03dd87f94027c553c2f2bf861fc87786f91a73736df221","5a04643f96fa1790c3ec054424380625b6f31134a45c078660dd6161afcaa9c2","d168162d48d521fd9df68bdba7651043124a8615eafba3ede46bb7731f7b713d","a92b9baf88be1088d3ce7256ab198056c0f7be6f769c96c3030e5fdd4f85e199","0b99ca5c71b8953a7347c1b0a29be62b9a6d6523614460a1ae485ebe3118f388","b72f0eb9f0dc4c4a43e0533e45fb5a7fd683d91a7aa7c907f111eebaa2050c7f","0d724ef4230b5de395a6f47daabb900a9cd1f7bd0b2734b60da61295d36f7ed2","88b22433fd8836c71bf0179947dfa3e204e96ff65b470d4be609cdb53f2cd230","779424b15fdd75bc9fa8134d6de91e35c058b22ad43caf55fbad7d87893f5e66","40c575bb2c6775c1cfb6fc1ec13de9910819067c305814a3db68bfb773c08cba","7199d2cc0d3fe5e9beada4dbb65a181a30ea1687800307314a0c8b14cb10c3bd","e1944ad6d3cfd19929fe56212637c665ff465fac1e539e00adaedb84372f441c","8d2d0fd272cf0ff4eaad1d0096d435c443a8bf5b891fe7329582da3806f93991","50e0386897d5abe9c330e899212e9ada83f4590ea59695cf45c4015def29128c","69922b8eb6a245abac058d173e7452ab14ff28ba0e650dd48c7a34d0bdebee8a",{"version":"785b9d575b49124ce01b46f5b9402157c7611e6532effa562ac6aebec0074dfc","impliedFormat":1},{"version":"5a89914e7673b2304165dd233b03ac4d68950ad453dce4b487b57c1e8d42a792","impliedFormat":1},{"version":"d8e062c357df76b711f92e07446c99714390a79b9ab008facfb18b457aa436b4","impliedFormat":99},{"version":"94894f6fb4c3d669472c373e07d291a3fe14c19f3f195fb1e6338e7df0a25154","impliedFormat":99},{"version":"e344cc4394fa9b1f42058282fd262657a90f7b121677e99d527dd393cadd4226","impliedFormat":99},{"version":"bf8f7578124e832be0956030b8d6cd38cc81cafb973dc6f7154265a1ca1545e9","impliedFormat":99},{"version":"f3f060b72e0750b840b771e88e4adf7018569498cf247f9ccb1c79e1d933ea70","impliedFormat":99},"8dd86af3df477f1e310ec4589d5568bc6f37396561e1241b93439f795fe0df72","ac5b3a19b97b3f9354edc2a421e184f842a689755a85b4c088d252609b8e33d3","819b93a46a2be3185a836271dd4bf736831560ccaf13b100153ef0ada5d258f5","3caf23f65394e66ada110bd639181fb5e7b5003dbc5a7e19a5f4300f3a894466","0bb82923cbb059becc672aba6d5d8d2e4774a9c4a386af1fe35382c778eab6d9","22ae530c985e65cc00534072f74c982d1fd6a3525a7f778c2d20d617a123bbbb","fa6e5fa7226b19b671eb951efceedf12edf9d12a2a93a8461b811153d8f614bd",{"version":"45b5743335c3ae334f347e1d4ac1cc4ccb2d5874c687600cb828926011528735","impliedFormat":99},"0ce5374f5a57f5bb25a348beb7732e7a618327bd9d941c102e2ad821a8995efb","7334bbd3b4b6f9f9057122137f9a068005151235c0e13ba929be870f70556c24","c196ce39661bb1090e6f03b0c11433bc9a4f63c8e6551d505bb5d7e6eb007b05","914fb99d14bc2b4b979d96da7d549b6403c04c4b54b7fd0cdae2badd394a3835","539ba1bd52b4f5d7e500a8085d995eb3fe5a6b2044e6e42fac08a974409509de","661597cc6a9ed54335b2f2caa1a5b0aaeb35bedd111f9f7c88cf9441cb3c9915",{"version":"4bf31991ea5fda540b2571e0582d602e1b539e7d395ecbd8557b7de47383dbda","affectsGlobalScope":true},"1283113ac4da4d1ec1321a581c515d1b7f7f297761c0e4a0042fe76e39cc9709","3d968b1fcd3ec89f1e9520a58382df72f1ebd88a0be16a932b89527e0cca82d5","d523798f1f12ae48572a8d67120debfc61febc48babafa16dcc80f8e811ab4b5","4376af977c9c3599ccfa886dc43f31e8a0411bda311816991b531e2a3a89d0de","2c214d7a2593de4a065934327aaa5ab6ae1d42dd33b461cf76d9097c249d2b71",{"version":"85c10678e0a756f95720945278a8f09f3f23211ec29a838ce7c95dfb12d2f96d","impliedFormat":1},{"version":"72b0a0d9e9f5ef88ceb1dc71418597b262b59bb43c4173dab46698aaeb134d59","impliedFormat":1},{"version":"15d980d0c34c3d23831a10fc82658849de30820901043cde8021bf7814c58aa9","impliedFormat":1},{"version":"07087c205fc0395b56d50de61fc4320897913696ee98fa02c4b22361b7ddc285","impliedFormat":1},{"version":"927b8e093ccbe6129498c821698504cf5fcc1c4043496a91c9f6ce2d75286ef3","impliedFormat":1},{"version":"833b052715d52909a8d4eba142bf134f3e6e0a1d0e5ac7f313fd3242ed4e8d17","impliedFormat":1},{"version":"3a58cded425810998f00f138c4d207d88445e33c81228a0f65f4a2f9b80f6035","impliedFormat":1},{"version":"39494ba08764769dac24922cc108f3ed37c5b54ae56fb41ab449ba6db6d88b86","impliedFormat":1},{"version":"80725422a3fcd4d8df073ccdfac27c5e92929b1ce2f69042c33e4a3a6d5de732","impliedFormat":1},{"version":"d41f77d908cefa8bf4b38a8ccd0edadeda99cae17cc1aed98077e009d693a6d6","impliedFormat":1},{"version":"a8c9188b73deb4a6b3b0ebecb9e630b9b32e5d7647e60f8aa05451d4c4e509b2","impliedFormat":1},{"version":"ddc8a65cfb94de04bd13c91b773e19a95fd3801c16fc40e0b90301eaafd0dcad","impliedFormat":1},{"version":"1a0c0d64006c1564f668b7e8ef7a2599b4a431a4b219767f6b2558029005a847","impliedFormat":1},{"version":"cfafaa4e04725e3476fde2c5ee3a92ad7b073ba4917c327fad7acb9958b698fc","impliedFormat":1},{"version":"60cf5db8e30d18e9f0d5d51ca3dbb975a326bd4777f0272a4669f080eced17ce","impliedFormat":1},{"version":"ee0f943616823816fe6a990d6bac2600c874925188918967eea79b9c32dc27f5","impliedFormat":1},"ea421bf2aa4b7ea05212294f2936d496457b5381b34c960b26b963ff4c7327b1","d25bebf8b88dac9f72af04ca3e1ee67375747aee71d96cd47b08d9a9eea2fa68","1e25d54cb81048cb77034e05945446120879fe7a5ddec7156f4a2e0ead0a894e",{"version":"d204bd5d20ca52a553f7ba993dc2a422e9d1fce0b8178ce2bfe55fbd027c11ae","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfe2292ae419f860461149cb8b1881d2c34a309d9b2b018585185b1719b755f5","affectsGlobalScope":true,"impliedFormat":1},"d6a26af7989badb7c35c30d60b98f56b5cfef8cfd03f41c9780b7bffa424c9ee","6c1dbd1c309e0e0606d47173c4d8cd4d678d62095bf3f5de7b38124a046a7b6c","22076db7919cda251e3b2315ebd025c122718b37df1a11fb286a1eb9c4fbb2a0","3e78fd10fc6d1c5205d9453be2f11f0e8fefceba8b777dadab6e8ae12c92e064","228724aebf3ebc75d0aa2d13f4dd5f6692e433315b8b6da66f9108f902b0a026","baed332c4e9acc5d7bcb67fc50bf804686aa9947fb3f659f0adf612de26fa1ac","7836e4353dec899c824fcccb6973e7c45fc7c02d53303ee1f2c85806f2c06ca3","283c0869fcedd369dcb6d6791a53e24b976b989dcf8575ac5b8a3c289f5b6c82","23a66a3e58b1fbe8a7d9e9773135f7c1213f5c02d0552813890e8083cae0327a","ffe0d2e5dfbe70ad4481d3b5e374e2a69752e12b56d54cd1c4682b13afede2d0","0adec97f710ef1b835ff9faf6e96fba951529dc923f40c34f8d7b359121a7f9f","60c103b7bd2581384944efa8af78162872f1be068545fcf20864557985cdb687","2b693fb1c93e8b203ca9eede62fc4d8c7e303aa4fcbccd8493a2626b2c540252","6b104c471e1208fb84cb1fd6fe8f98ba917f6f526895d73e9a7a63bb915e65cb","b08885e65dfdd0b02dd68cc66dc5d6c2fe174888be0fd0ad4d08de8da5597c71","aee6392eba67d3e0c01fa7daff6b9d0bc08a38ce93319716a3806cd1934daecf","3c525ecd062ba21304931ccf8646eb141fb33d908336b279801b6df783e0f12b","11fb64534ef17bb8e22b43d8e61f45466279773e88531781743546ba2dfc3be6","ca750bec0665b1a8f0963311e070c5c396d1ace22fc26f34378a54af68e8cbd8","b2277d5ff49689d1ef194616cd0faded159693a91242f253d41bae73f9c470b0","34fca2a8349ded25cb8fa22be388ad94d7e2ee9ace0b4b072ca7944239a1d685","a5bf985ac5c7d9f01e930e99aad6f2cc6bbd471a6825ca589e69411438e4ecb4","a1bb6b3501d53faa99ca9608b80e8ea29e4439b01dd9804ad67ffee67b38e14b","ed258426608c11e74f9c293aa474c06f2dfcfea900ba47b88296a972fdf44dcb","24d3a76093815ea3ac7f3757c4824d451a8053c460ff8c88d9dacf8769bac3b1","8a9c73d289be0ebd6f347ca84119ed046132a6ac6130ba7034c4dcf36aa9b1f7","068c9fe097ac98ba76356890737989b9c39aa3f9ea61966eaddbfe1f0672ab55","eaa83b27334ba0f944453c64fc932b91c943406b82247670d8c439fb40e79822","7547a3f0551017f0fca12f3b6f7b27614b88effdc0b870b849b8147053ed4b07","c4025d373a348af1367214f32c206132647671462302173e08cd4cbad423a0da","98179a84c5246eb2d80dd4d12cd0127b089d4d1d71f05791312240c9b5b3e63e","1bb682009ff5d141845e64f62c98789c4a368311b4480eeeec59ec9ae58d8e56","cb89c7bb10153bb7dd945b20fe1c53b149cb2f837f3f599abeb65824dddc6929","1443527d03962e8d18f2fb4fb4ffe86a2c51da9ea4be77a45b8f5f881ce84238","e296fc902ac5d89027137740a8a6d1131bba9ca0b59c5988e22889938b6e9178","23f10c009a82427f52475c5cd92fd89994cd27fe1256595e684f720bc588288d","4376be1f936bf5586db41d10e31b4234f3af2c2e120d015dadcff303de3b3035","0a27978d1628a6193fc6fdc3e48e1573d052fdf40e540bced78eac1a1a4b65f6","1f59c8d135b353d1483b3c8d74298b7d5ec78b5bf5f5707ba5dd980baa2ee8ef",{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"93d28b4eb12c68fccc1f2fc04a4ef83ea3b2a03b18055d3bf29cab267aa7042e","impliedFormat":1},{"version":"ef18cbf1d8374576e3db03ff33c2c7499845972eb0c4adf87392949709c5e160","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"a4ef5ccfd69b5bc2a2c29896aa07daaff7c5924a12e70cb3d9819145c06897db","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"3fe4022ba1e738034e38ad9afacbf0f1f16b458ed516326f5bf9e4a31e9be1dc","impliedFormat":1},{"version":"a957197054b074bcdf5555d26286e8461680c7c878040d0f4e2d5509a7524944","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f478f6f5902dc144c0d6d7bdc919c5177cac4d17a8ca8653c2daf6d7dc94317f","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a0a1dda070290b92da5a50113b73ecc4dd6bcbffad66e3c86503d483eafbadcf","impliedFormat":1},{"version":"59dcad36c4549175a25998f6a8b33c1df8e18df9c12ebad1dfb25af13fd4b1ce","impliedFormat":1},{"version":"206a70e72af3e24688397b81304358526ce70d020e4c2606c4acfd1fa1e81fb2","impliedFormat":1},{"version":"3f3edb8e44e3b9df3b7ca3219ab539710b6a7f4fe16bd884d441af207e03cd57","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"d71535813e39c23baa113bc4a29a0e187b87d1105ccc8c5a6ebaca38d9a9bff2","impliedFormat":1},{"version":"4a1c5b43d4d408cb0df0a6cc82ca7be314553d37e432fc1fd801bae1a9ab2cb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"636302a00dfd1f9fe6e8e91e4e9350c6518dcc8d51a474e4fc3a9ba07135100b","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"e1ce1d622f1e561f6cdf246372ead3bbc07ce0342024d0e9c7caf3136f712698","impliedFormat":1},{"version":"199c8269497136f3a0f4da1d1d90ab033f899f070e0dd801946f2a241c8abba2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"27e4532aaaa1665d0dd19023321e4dc12a35a741d6b8e1ca3517fcc2544e0efe","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"8c2ad42d5d1a2e8e6112625767f8794d9537f1247907378543106f7ba6c7df90","affectsGlobalScope":true,"impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"12e8ce658dd17662d82fb0509d2057afc5e6ee30369a2e9e0957eff725b1f11d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74736930d108365d7bbe740c7154706ccfb1b2a3855a897963ab3e5c07ecbf19","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"c6ab0dd29bf74b71a54ff2bbce509eb8ae3c4294d57cc54940f443c01cd1baae","affectsGlobalScope":true,"impliedFormat":1},{"version":"3797dd6f4ea3dc15f356f8cdd3128bfa18122213b38a80d6c1f05d8e13cbdad8","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"1fc7cafa84cd0b39cab6980a29e5d7a7c8deb686c83b892ec4450f306496047f","affectsGlobalScope":true,"impliedFormat":1},{"version":"70d1c31890f6d1efa7bb69a2f9a8a4302dca7cc17fdb16bd747bbc184ed392a2","signature":"e2dc128ef810e1859a18b9464140634a9476f01450014bbaf8644dbb6c7b96d5"},{"version":"873bf29e74728f15ec7242d3df6c6746cb472e7eff258fc01405c8a253bacc13","signature":"7aa344c4e0b9991180e80e7bb7f0d8ead8f276696a2d7b76b72c6c6c66a080fa"},{"version":"f514b94a019840726054391fc41b1e9f5bc1e1385a08db9fb5e89d1ebcde3060","signature":"3326dc40b5946253e4a909b0502d2d2979524e730e21f91bbd36547e14bb3ee3"},{"version":"a04e6b6f9183426f21a8964d631b42389fb982a7a698ada2b415b0d918a0c460","signature":"40d2ee5b892afbc7ee88a0302f01c90a11a252d0930d922d4a1ceaf082347e43"},{"version":"78778fb0d0f2293ccfe615c25b0bb073b741ef746a40c3f877a6637340793395","signature":"a46d66851af2c056e805fdd574bf5ec3adb1181c43c5e41f0a1c592e338afe64"},{"version":"a19f00bc122bc63591deb2e310cf9ef1eb55e8654704d985c46f1b9c17911001","signature":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","affectsGlobalScope":true},{"version":"a21af9daf9b67862ed5e15669fa799530f64bb139493f9b2b26f39fb7fb99b3d","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"e1cce5c8f83c2c1eceb6bd8d105050758ea68fe837e75833a1ecbd8aaf2c79f2","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"051ae0b0bda811703875e6f2e466b9344cfe320b39087676327dc0c109f26d32","impliedFormat":1},{"version":"588ac4f82d7660ab18227f02951ac7bc623b5a7ced0a4b46a7c9f48160332abd","signature":"45c7b541109f63f749d6c509de7c150e1bf28b1ee231519c0a0dde3d03e5fc68"},{"version":"14961cbdb403b1c7c3e26eeaf1c5f45fcef9e84da9646ae1e8b84945bca8b10f","signature":"15de3529028f1a7d51930fc219a7bdec3fd832f6e5871b2bb299457bba83055e"},{"version":"de2135dbeb5d50548596a67d6271cb2a392369aca8e006fbb121a5abb47d3bdc","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f225144d422288b35d9c26d1d7a28b7b9344c2fffa8b5bfa40fa51d3d9e359f","signature":"8a7bb98c0b078ae107c4015052d013262a2a80a4ab03edb19078231b3dc22685"},{"version":"aa74248cb4e73cdab3a67dd805fe07467534473c56d1e98b8db6b42dbff74269","signature":"ff6fe9689e8ad98c4865cc4a824d7baf3c49b01ef3bdf111b645a25af6e25355"},{"version":"cfdd927a5eae7a7e623b9745722ef3f2b7a2997fddc5d32b7e3dcaeeb15ff4a3","impliedFormat":1},{"version":"4dc58a4ec7d792ee4439a95bce06af798acbb2a4d1b004aa0d3ce46eec95d6b5","impliedFormat":99},{"version":"cd51ceafea7762ad639afb3ca5b68e1e4ffeaacaa402d7ef2cae17016e29e098","impliedFormat":1},{"version":"1b8357b3fef5be61b5de6d6a4805a534d68fe3e040c11f1944e27d4aec85936a","impliedFormat":1},{"version":"4a15fc59b27b65b9894952048be2afc561865ec37606cd0f5e929ee4a102233b","impliedFormat":1},{"version":"744e7c636288493667d553c8f8ebd666ccbc0e715df445a4a7c4a48812f20544","affectsGlobalScope":true,"impliedFormat":1},{"version":"c05dcfbd5bd0abcefa3ad7d2931424d4d8090bc55bbe4f5c8acb8d2ca5886b2e","impliedFormat":1},{"version":"326da4aebf555d54b995854ff8f3432f63ba067be354fa16c6e1f50daa0667de","impliedFormat":1},{"version":"90748076a143bbeb455f8d5e8ad1cc451424c4856d41410e491268a496165256","impliedFormat":1},{"version":"76e3f3a30c533bf20840d4185ce2d143dc18ca955b64400ac09670a89d388198","impliedFormat":1},{"version":"144dfcee38ebc38aae93a85bc47211c9268d529b099127b74d61242ec5c17f35","impliedFormat":1},{"version":"2cf38989b23031694f04308b6797877534a49818b2f5257f4a5d824e7ea82a5a","impliedFormat":1},{"version":"f981ffdbd651f67db134479a5352dac96648ca195f981284e79dc0a1dbc53fd5","impliedFormat":1},{"version":"e4ace1cf5316aa7720e58c8dd511ba86bab1c981336996fb694fa64b8231d5f0","impliedFormat":1},{"version":"a1c85a61ff2b66291676ab84ae03c1b1ff7139ffde1942173f6aee8dc4ee357b","impliedFormat":1},{"version":"f35a727758da36dd885a70dd13a74d9167691aaff662d50eaaf66ed591957702","impliedFormat":1},{"version":"116205156fb819f2afe33f9c6378ea11b6123fa3090f858211c23f667fff75da","impliedFormat":1},{"version":"8fe68442c15f8952b8816fa4e7e6bd8d5c45542832206bd7bcf3ebdc77d1c3f3","impliedFormat":1},{"version":"3add9402f56a60e9b379593f69729831ac0fc9eae604b6fafde5fa86d2f8a4b9","impliedFormat":1},{"version":"cc28c8b188905e790de427f3cd00b96734c9c662fb849d68ff9d5f0327165c0d","impliedFormat":1},{"version":"da2aa652d2bf03cc042e2ff31e4194f4f18f042b8344dcb2568f761daaf7869f","impliedFormat":1},{"version":"03ed68319c97cd4ce8f1c4ded110d9b40b8a283c3242b9fe934ccfa834e45572","impliedFormat":1},{"version":"de2b56099545de410af72a7e430ead88894e43e4f959de29663d4d0ba464944d","impliedFormat":1},{"version":"eec9e706eef30b4f1c6ff674738d3fca572829b7fa1715f37742863dabb3d2f2","impliedFormat":1},{"version":"cec67731fce8577b0a90aa67ef0522ddb9f1fd681bece50cdcb80a833b4ed06f","impliedFormat":1},{"version":"a14679c24962a81ef24b6f4e95bbc31601551f150d91af2dc0bce51f7961f223","impliedFormat":1},{"version":"3f4d43bb3f61d173a4646c19557e090a06e9a2ec9415313a6d84af388df64923","impliedFormat":1},{"version":"18b86125c67d99150f54225df07349ddd07acde086b55f3eeac1c34c81e424d8","impliedFormat":1},{"version":"d5a5025f04e7a3264ecfa3030ca9a3cb0353450f1915a26d5b84f596240a11cd","impliedFormat":1},{"version":"03f4449c691dd9c51e42efd51155b63c8b89a5f56b5cf3015062e2f818be8959","impliedFormat":1},{"version":"23b213ec3af677b3d33ec17d9526a88d5f226506e1b50e28ce4090fb7e4050a8","impliedFormat":1},{"version":"f0abf96437a6e57b9751a792ba2ebb765729a40d0d573f7f6800b305691b1afb","impliedFormat":1},{"version":"7d30aee3d35e64b4f49c235d17a09e7a7ce2961bebb3996ee1db5aa192f3feba","impliedFormat":1},{"version":"eb1625bab70cfed00931a1e09ecb7834b61a666b0011913b0ec24a8e219023ef","impliedFormat":1},{"version":"1a923815c127b27f7f375c143bb0d9313ccf3c66478d5d2965375eeb7da72a4c","impliedFormat":1},{"version":"4f92df9d64e5413d4b34020ae6b382edda84347daec97099e7c008a9d5c0910b","impliedFormat":1},{"version":"fcc438e50c00c9e865d9c1777627d3fdc1e13a4078c996fb4b04e67e462648c8","impliedFormat":1},{"version":"d0f07efa072420758194c452edb3f04f8eabc01cd4b3884a23e7274d4e2a7b69","impliedFormat":1},{"version":"7086cca41a87b3bf52c6abfc37cda0a0ec86bb7e8e5ef166b07976abec73fa5e","impliedFormat":1},{"version":"4571a6886b4414403eacdd1b4cdbd854453626900ece196a173e15fb2b795155","impliedFormat":1},{"version":"c122227064c2ebf6a5bd2800383181395b56bb71fd6683d5e92add550302e45f","impliedFormat":1},{"version":"60f476f1c4de44a08d6a566c6f1e1b7de6cbe53d9153c9cc2284ca0022e21fba","impliedFormat":1},{"version":"84315d5153613eeb4b34990fb3bc3a1261879a06812ee7ae481141e30876d8dc","impliedFormat":1},{"version":"4f0781ec008bb24dc1923285d25d648ea48fb5a3c36d0786e2ee82eb00eff426","impliedFormat":1},{"version":"8fefaef4be2d484cdfc35a1b514ee7e7bb51680ef998fb9f651f532c0b169e6b","impliedFormat":1},{"version":"8be5c5be3dbf0003a628f99ad870e31bebc2364c28ea3b96231089a94e09f7a6","impliedFormat":1},{"version":"6626bbc69c25a92f6d32e6d2f25038f156b4c2380cbf29a420f7084fb1d2f7d7","impliedFormat":1},{"version":"f351eaa598ba2046e3078e5480a7533be7051e4db9212bb40f4eeb84279aa24d","impliedFormat":1},{"version":"5126032fe6e999f333827ee8e67f7ca1d5f3d6418025878aa5ebf13b499c2024","impliedFormat":1},{"version":"4ce53edb8fb1d2f8b2f6814084b773cdf5846f49bf5a426fbe4029327bda95bf","impliedFormat":1},{"version":"1edc9192dfc277c60b92525cdfa1980e1bfd161ae77286c96777d10db36be73c","impliedFormat":1},{"version":"1573cae51ae8a5b889ec55ecb58e88978fe251fd3962efa5c4fdb69ce00b23ba","impliedFormat":1},{"version":"75a7db3b7ddf0ca49651629bb665e0294fda8d19ba04fddc8a14d32bb35eb248","impliedFormat":1},{"version":"f2d1ac34b05bb6ce326ea1702befb0216363f1d5eccdd1b4b0b2f5a7e953ed8a","impliedFormat":1},{"version":"789665f0cd78bc675a31140d8f133ec6a482d753a514012fe1bb7f86d0a21040","impliedFormat":1},{"version":"bb30fb0534dceb2e41a884c1e4e2bb7a0c668dadd148092bba9ff15aafb94790","impliedFormat":1},{"version":"6ef829366514e4a8f75ce55fa390ebe080810b347e6f4a87bbeecb41e612c079","impliedFormat":1},{"version":"8f313aa8055158f08bd75e3a57161fa473a50884c20142f3318f89f19bfc0373","impliedFormat":1},{"version":"e789eb929b46299187312a01ff71905222f67907e546e491952c384b6f956a63","impliedFormat":1},{"version":"a0147b607f8c88a5433a5313cdc10443c6a45ed430e1b0a335a413dc2b099fd5","impliedFormat":1},{"version":"a86492d82baf906c071536e8de073e601eaa5deed138c2d9c42d471d72395d7e","impliedFormat":1},{"version":"6b1071c06abcbe1c9f60638d570fdbfe944b6768f95d9f28ebc06c7eec9b4087","impliedFormat":1},{"version":"92eb8a98444729aa61be5e6e489602363d763da27d1bcfdf89356c1d360484da","impliedFormat":1},{"version":"1285ddb279c6d0bc5fe46162a893855078ae5b708d804cd93bfc4a23d1e903d9","impliedFormat":1},{"version":"d729b8b400507b9b51ff40d11e012379dbf0acd6e2f66bf596a3bc59444d9bf1","impliedFormat":1},{"version":"fc3ee92b81a6188a545cba5c15dc7c5d38ee0aaca3d8adc29af419d9bdb1fdb9","impliedFormat":1},{"version":"a14371dc39f95c27264f8eb02ce2f80fd84ac693a2750983ac422877f0ae586d","impliedFormat":1},{"version":"755bcc456b4dd032244b51a8b4fe68ee3b2d2e463cf795f3fde970bb3f269fb1","impliedFormat":1},{"version":"c00b402135ef36fb09d59519e34d03445fd6541c09e68b189abb64151f211b12","impliedFormat":1},{"version":"e08e58ac493a27b29ceee80da90bb31ec64341b520907d480df6244cdbec01f8","impliedFormat":1},{"version":"c0fe2b1135ca803efa203408c953e1e12645b8065e1a4c1336ad8bb11ea1101b","impliedFormat":1},{"version":"f3dedc92d06e0fdc43e76c2e1acca21759dd63d2572c9ec78a5188249965d944","impliedFormat":1},{"version":"25b1108faedaf2043a97a76218240b1b537459bbca5ae9e2207c236c40dcfdef","impliedFormat":1},{"version":"a1d1e49ccd2ac07ed8a49a3f98dfd2f7357cf03649b9e348b58b97bb75116f18","impliedFormat":1},{"version":"7ad042f7d744ccfbcf6398216203c7712f01359d6fd4348c8bd8df8164e98096","impliedFormat":1},{"version":"0e0b8353d6d7f7cc3344adbabf3866e64f2f2813b23477254ba51f69e8fdf0eb","impliedFormat":1},{"version":"8e7653c13989dca094412bc4de20d5c449457fc92735546331d5e9cdd79ac16e","impliedFormat":1},{"version":"189dedb255e41c8556d0d61d7f1c18506501896354d0925cbd47060bcddccab1","impliedFormat":1},{"version":"48f0819c2e14214770232f1ab0058125bafdde1d04c4be84339d5533098bf60a","impliedFormat":1},{"version":"2641aff32336e35a5b702aa2d870a0891da29dc1c19ae48602678e2050614041","impliedFormat":1},{"version":"e133066d15e9e860ca96220a548dee28640039a8ac33a9130d0f83c814a78605","impliedFormat":1},{"version":"1be2a504e838c8bdea1952ac190e13ec093066a37e061ddbde6ac4c03e4a369c","impliedFormat":1},{"version":"1fcc61c95dc7d29e20e1b811a095b61f458cc24637635002337afe65071768d1","impliedFormat":1},{"version":"aad617b9fdbe2511653b914d301cd1d652c7a3127909a19be0bf0fe01cc44fba","impliedFormat":1},{"version":"ca2cdcda5df07b5186869f936332b932482b5fb28f6c70645f2cb88020fcf255","impliedFormat":1},{"version":"602fb2b1b0803a1399f3112c222c81a3f25a65bda7fca36f874ee63940d91d59","impliedFormat":1},{"version":"d3a8e527ce721b6204b96c37169711f8dd5ac0a746e6296edb7b35661fa5605f","impliedFormat":1},{"version":"fd0d6eb8c3ec1c01333085b544434574f9427376694c40810876fb20f2e0c4b1","impliedFormat":1},{"version":"203fa0094292d891697c5709e0585618d824e098ca6dc385100acea5dfc16dac","impliedFormat":1},{"version":"642544c27b01b901386859560adeeae79f43f78fbfac0d989709868af521ffa0","impliedFormat":1},{"version":"1824bfefa21291ac93c15a4177149d78071f60b0910cd9a29317a351c020f9ac","impliedFormat":1},{"version":"2bc28dc567fa711cfda53d6174f73105b2fe1841f4cae85e87d80bbe84f934cd","impliedFormat":1},{"version":"2b3a3c3d5e8e562c0ec7f6a5a72ca8432f9190a65112dd5b16d6e846199fac25","impliedFormat":1},{"version":"2bf791ed6e73a7b42a0fb22c517e7d959bec8c400ff926f14f8531a84c6117ab","impliedFormat":1},{"version":"dfe52fc8603a0d70d8383dce54daa540ee735ecbf37d4df65143ed2818160967","impliedFormat":1},{"version":"bda02ede52d7100982f34cced37adce477719c51bd0de235d4ef91b4a369dc2c","impliedFormat":1},{"version":"aed79a7cbbd9303c1567b9c7cd707d79c59549a0c3d66fa1417431af168e9ec1","impliedFormat":1},{"version":"e4bd94e97e08af3a3b8a6b2e85c6b93a690f572c1bffca113681ee7390f53411","impliedFormat":1},{"version":"cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"85f8ebd7f245e8bf29da270e8b53dcdd17528826ffd27176c5fc7e426213ef5a","impliedFormat":1},{"version":"7332d5eee14d5a68ede777b8ad0fb1bfe482d42393821a040f573e1a5ee416f7","impliedFormat":1},{"version":"0097b4ddbc962aff10ea1def790074cc3a64d12bdaf3593a7acb96c22ff0a297","impliedFormat":1},{"version":"ae499cb7bd072127e5cf521b2c185f261d3b6aaa7a1f8f59340da6c222fe6e92","impliedFormat":1},{"version":"3044d010e7e8f9386f7fcb6159df5c268e4a8d92784b69b8d94531e493143900","impliedFormat":1},{"version":"3103df94f61695e93f42896943943f8005a32821ce2ccbc1233a78c27ac82474","impliedFormat":1},{"version":"5fb71ee6a9fb12f7e5368e4540b854aec771381eb1e6371b5f67a0d5f1da490d","impliedFormat":1},{"version":"363d6b7b4b6fb0d43e59e2bf9c246a373d53944af4911eeb476ee9a91c09e353","impliedFormat":1},{"version":"6abd19039b76babedb2d5bc37c7bd8a48c54f28e7ad45112fedac3e928ab6bbc","impliedFormat":1},{"version":"40d827d61f8a79c3c108a6fe61b187328ce902d7b5653a371eee1b037d5fa6da","impliedFormat":1},{"version":"1453e4f6699265b92600f5b2bd752085c369b77811b3eec13e202d0a70e48f7c","impliedFormat":1},{"version":"016053b2884b0afb6206888ee5328a94df98ed86962599a45f4d01661b4654cb","impliedFormat":1},{"version":"ed45f115085ab98af199e7a88d978b6d4ca427d3af420204b28099837ece9197","impliedFormat":1},{"version":"7b51b91ce2419a6ebb42386570330beea76dc144db27740a5aafcbb60b0a03e0","impliedFormat":1},{"version":"3ca418d15f8fd1d1a5b44c9fdb0bbf0ee3c3b4db30df7a9009534eabaa23e612","signature":"dbd1b0da771919daf30a69134ec8e4d2ac051fb24a56ab6a9defb6dde71326ac"},{"version":"a9596ed13f92b5b3a45aa56f845643e87816a739b17e53a853d5b9a4df91bd65","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"8e030b7406bf6e4d8cd39d2010614a040cd4c507580b8f1482fa00ed872d06cf","95cd95abb62b5658c0fa57ba896bc98274b1165e4ef1c8e76bfcad60361c596c","57198ae29911dce0ebd7a24d890e76a0c848816c6a9e968bc33aa987ccb2ea0f","d6df48cfb8996771c4a1c244df2f15c0e1acbbfe25668df25df32351fb2505d1","d6e3714772e26b8fbb50c346479cdbf3d650e79c0adaa269e092f7aa434fb9e2",{"version":"fab58e600970e66547644a44bc9918e3223aa2cbd9e8763cec004b2cfb48827e","impliedFormat":1},"b263d8d4624ebfd0bf274c1f9ace53dd36defc6c96c73b718c51d7f2c0b7467b","b52b45bde3261c69deb24d4e09b874e99b3be393f4b6e332aadaed39e746b6ca","20f4213e803a470070857c2cb29b2fad311f56e854ec745e21921358264fe5b3","51a631e2f41d35d1450c6ac85bc74edc382812e67253fab4ebe020b1e707c839","fa1cee7cabc606dbefd81b640cd2ea99d52c099c5709b91f7cbf8cde7356f85c","d49ffef23f5463b0982e8365ce1a6e94f0c4b0d77e67f5c93dde04a2083c6f6a","a73ce189418ac76b19318b636be40b9085169c80bb62690db5d49a0c217c6a2e","f65903cd143ad27e5a00d722ab8ee2dd26118a10c29b8ffcc2746b6171656da0","16e083966e39827e11e605c4a661df2f385d93cf37c4cd64f4a1bc872872f582","a5b7aee535b17c654da3bff6f5444365347cb3bc69b3a70398e37f1fc013e4e0",{"version":"2db1d7edd81013553f8432ae0e20e5d119293e0537ca592435d6402d311495b6","impliedFormat":99},"9d6842eeb99a508065e95b2636eb5838acb752d18a2a6da4cb1a601e694d7af4","66778e75f7b67ef9a447354416b8ebc09609d07dc65325d68a1ac6b5d169aff2","f56a08a9bf62b250603ac3ae9fc3db830ca86aad0f2a0bf29a715b6daf767356","21531789fc74b1b62ed22f3c874361fb0e02b0e9c3763d89d9f0db5312830ec2","a60bae9d51dfc3b93358fde1f4be8509ed6d2cd13d5140e8aaa5d7f49013d020","f6240a425be74d69619fe633fcc4bcc138869a5f9fd8da51a919c0fe3830596a","9db2126acd0d486443984b5895072f8747ef8cce8b69cf9e9f36e6a0e10c0d68","4ed897bdff2cf4629fe0ae45ac86fa5280e929fdfb46d550429b73fef26bbc47","139fb69ef42a9965e70cd81077287049e586207827bc1d6eb50d5bcecf4d1227","d71eff4a73c8f1e979569a2a2f30655ea99a22b0a8070a939d17e032ead4facd","16fcebc31ac16c5d50615700b25a6637cda41f84b6bf7f71c5f084bfff08b413","be273a9e0ee62422758c0ebf020990a727bb0fa5b4e6cce7d5d52828411e5a53",{"version":"d04dd5392d40f338db0086a34fe6ac945a0ed36eb94d2044d4b7240f7c4989b5","impliedFormat":1},"c1a120838a23dcf570be860e34fa822f39b384ce9bc033d2f426eccca983ca22","e3a3c93ff4ef0bb1c250e1cf798642fa70e5f0a68f0acdf4bd8ec77d313a7ff5","2f5ed101396a5181907452ba8ec02ce36cf015a4e2ba08cfd706959ac281c811","8fcffbe4beaebd8cb0fa06fe685385d91c80db17ee85065326f7c6aea5723fbd","d67e57a6ac7db4cfc7a55a371835555958fb1e4322b4a41cc5c5cbbe3cdec03d","32a8253108435e34b5240e90e632f1cfe800c79824cf2d84442890ff93180249","18044782cfbf23132dfff792f0ed7b62a3db1627b36d5e4642ebd9a3055e0c6d","164717877d39c091de09930229310b28ab6fa120607288d1fcacf9890d094c9e","35735c80b0df369b6850faa384d49cf2dc7890dede840af0a74c152834ddff4d","831ccd4c7376e1028a3cba3ed84b86c47e6b1a05bc65aac608d1a7a2a4a0220e","efb42335d1205f32d6f7d75bd8b40d4dc39db514d7b28aec7ab0893d1c8cd9f1","8844d4ae8fbf41cbf56452036ea5c602bfacf278fe7dbcd5b3cbeab6a1aa80ac","52ad5f6c7d7cfeee6faf898deedeaeb4ec9a48bbd03ff0542435c2a90e24aa13","c7ba785a1bbc47dc6302fc46c10310a06338122f148aedb2dbf00410cf256673","1dba03280fc8333dbe8e307d26be14b1ac03f450b65f3847745a3d8392fe47c6","654abb5b095dd6d4bc16d8e46ebb072b20b4588f3d76d9a4628a69c1c4e53c00","517b4597f9d40d9a9dfdb10da0320fbffd84a8bdab7e7d3a9995486f1299e1a3","f82496477f745d16b0685168e28922a3a0ae272e842744c106230e760b86b176","6d7e2e51000665fde320c5f99f4446c0588d401fbfa9dc398ce26cc70c75c3d5","7c7b0bf77c63de37422f05fe2a7522df75ace9fb2e207cbba5152b98d532d0cf","17cc75039e92328631ee140b4e215c707128b932a82647db510eb70fedaff009","f519b8e66dac179cbed51de72eebd93670496c79b49b42fa84e0ca2df9b08732","87bd17b9ab1eedc409d1fd110826f5ed24a790a211c7a6438fc83f6d7b542da1","459134eb887d072d7b5b642f45a00005543e44faad7c57f0809530a5901feef7","39c53e4d777ea7b847710cf571c1939141fafc496840f6936f5000595d56de79","c582bb3a5dc7b3f749b0a5b5aff623ace98d0990506feea396f92333a337c908","495680b45ae2b8f200e6585498ea07ec413ebdf6b27650e384bbcfaef03dcf05","b28e3385c697b3522f4fbadfb33740ea4045f73de8e513b98f3b1c73f1dfb1c0","afe1c5c939b000addeecb5ef14e241ba0e2c9eb492249e7c2a7c23e125ae011a","00e7ef2f460098be3158e3cf4cd0e69b599dfecd9bc0f5d1674b9eabf5ebbe7c","bfaffab795098402efeeeb28f4234f677dbff837a99fc1a0701eb3375ccb5edf","817613171e84ed4fa2c20436b97071d330ccf19ca4054cedec1e778b28cf6354","2b73b22ee26b818f87bea7f07188c39ace3f803e9c4247efca793e0c0c389fdc","68bcdba3fd528d757d5247d560a97c5ce4289d653336e9706d63a7f6d5e2362a","cb2583ce237cb55d4a63f2a4e1dfb25f8869eb7a9cc5a9a70f67b9bbfbed4d31","a08491dd943ad302cdf46e59f59f57604391120813df60dca4340e8a779e8f25","8cdeccb1d7912eabeff54c363f1fd61ed6505e2864cae6e1f1de516df3ab2301","b8805f29c34b5dd0f75ddd79aff08afdd8a441da16b3332c26b3fbb913d2c9e3","309901a61ad60d0e35316d3eac45f96b1bdd4b9a464d912a3597b68039090362","c7568fe4511c405526b0d092214c42518e4beccd9cf94eb4e01beccfc3e5ceb2","5f06acc9cb1b4adc43dab5e5c01f07024d451dcdf87596a4eabfa5ddc3f9932a","42d473bd25ea436c106b33d8cbf88d1e34b2a36c8e1b993f4607e72ed033e460","160e97223469595dfaf9d81a3cb3f31197f6b3fee5867333c43ab33a6298dcf0","3ba82b2ce50c5b07489df0ea890976412db98d85929fccb85bd9a6b3f15b6803","a66c749b39839672ecb316fcf12c6087d967eae841c8cbae81c75de2828063eb","0687fa33a688314cd2798dcb4d468230948a5f58443392912dadeabd6efa3178","f09338e6746193c60c343032e0778ad27f053539ed843a525e1b1ea9757992d2","74af7c83041df7b11ee89c43f5d17635fab75564c0bfb183fe794053bda73aa0","4b3a7566b9d8dc09fe4b00bb53e166ac195cb9143b24a0a28ce753f58db01609","6239db3239cf09e26a8888482e5919d68f10c0892f62cc77d6a50eb39147dc0d","9d45ff648899fd07dc0d3020f3a7fa47b9fe62407f8826c9221e55b5b88a6179","90509ae2de1ed389ee356ea8cc401407656c950ce956bf89aaf35cff7f825733","44e8845fa6662066f4caed9d622559a88b58dcaf03641c811b1d5850a6fd17a9","2ea71bd49d614c1e6bdbdd1c30f817426966111f471e19c5e9d34ba564c32fa3","82edbecf4d559df6b8627c7c309e5efb34279a4484fdad03f7a033a4dddcb43e","2fd7302656438e655a06ad80a1b42b71599b9fbf9825c00c95f2e239ba2057e3","a4eb3deae35b20a3c5478e35d734b2d2b68eb9a033dffe155d96a3ade879e1df","e94e0466d381c3bf2bc2ea3569bd53ba4a2ec5120f2e0c9c053aafbb213cb8f4","561aa1cce9872c6cdf965799372d4712a42fed8b23ed1f6368f8a1dd3ddb85ca","298cd6b9f2581c759cc9d4d34f3e0abfc331876147499f3a9bd8ab6eb203d544","2ff8d81b9bbf2114ea159ad04c63443f0fbfae75eac68fe676e83b83ae657bfc","ae50f9f6c7d53d7269fba50abc1e5eaa7ae09fcb7825c3efa7e6774ce8db8c5c","13984014ce1ddd9416cad2c14eb22c86c78188c40770e3f511c117942fd76114","8c6658c9dfd5afaf43cb58842ccfd10ca47373bf76b1e77d056ac17500ca040f","bbf7a04cb33150cd1f772cfc97a18d951ccd891d9af1195be3bfa72c52d29e8e","4dc11a195995020396d3b11b9806531434bbcf9acf13855f30130aed12d05402","acf0198dd9eb2fa0aa61aff5e37c6cf835bd1be53bc813ac4ee525d3cef9756d","75be77183a746aa2a4263a371ec0a87c4e96a0f57149810d41f07b276cc17f38","75a720cb05e3bbabb06e4f6ed44893a44551a399a8d3fbe02c71523d0dd88e6d","66a137c381f26f0a856135784daaaae01fe06f2c4d0c34f50a52263113363534","5255f7cd354964d0db4957e845f2c9c2617e0677959b5871aefed5462e3683d2","622e11eb30bb3aa45e4afa25392a4001df0f35b67747d31d3eceeadcfa045611","a0c703fb6481a7c6e3b081aad9b45a86dca628af37c9e26032b50b4d350c8a4a","8281e3d6e2bd300b64dc186bf2230f0abd84bd7c55afeee69445a8073e30676f","c7fede379ae98efe9d5fdba3ab4155c61721685f4a39bbfbcc6adc87c877e38d","808948ad35ae1a9fdcb9b9a217b61712bf6b6a9a34c05d88bba93c3b09af54ab","83a1567286f0b15ca64bafcd848059dec8ac7c1159f826bacda4d6c3d668acb8","25712bbf10ac24fdf23d92ec8a5ca8b557a20b1f1bdec5cf11055b92d9dfc994","75d29b33e4ebdde25efabf2f0693e3d9a7019b9fecfb9f5b0a74a8379a38794a","9d78bd0f0645ba04dc871edd4163a4a7d7a7bc6a82c32bd3b25eb463758201de","7269509e66d13654644a2e4f6558ef2a7b17be9a7826a9ca1fb355dafcc1e801","8f7f0fe1567da0318862546538bd20be181dd78b786ac5ff16f16f4ffe5f85d3","f6998c714bfed8442322afb290d312e7290a5aef4c68c3b27f232acff81bb7ec","2dba44446a79b3ade7d5c4c92ff1787f743220f337df51f1017183e2e5373f1d","025eb823835ced30ac128da819e4ed9d76f6130cfff3b979e52a9f5d632e4bce","7cba3540df7cfb8fd1d8bb311e878aef0f58062a241f57fddeaef3b9a68ffc18","f7f558433c9376974fd8edf64d17a8e7407225d7ff6d6adf917c5eb4015f974f","36d9f87bd6d2e9abbf163dffe018fc626b784462dad966a02504d6a586e55993","a3f318615f22c924e16138e3acfa4648cf57225c6093117b41b6e2777eac2545","785d5d53f5fc7ef07b08bec8a9ce9e545f752a6edd4ca6fa01b3d42ba70b811c","0e3cca9fe5db06453b4e69ca551097dcc7d80d4e15ad4e4fec10f4070b20c084","c8c323f2f50042dd0f7a2a8886ccb398cad3adcb3612caad612bac42259da0c0","84da910a9bd0feabdfae99a60d6f97d83baa4346f9ec37cd2ed45174d601057a","f35970d453e61556397bb83b35b3f55e3bb291a85e2124a01909423fbbaa1659","47e396810de7ae80241149fa83569254c1ff8af60f679a0a13a5e4ea03e7c988","7f2927315aa979d2a19c13a8398d80355e6ebe3ed4dfbc464f2620ea2519fd6a","a2c4c5a666cda995aa57e388a442373d3c906d08083cd2a5f3ffdfc1d8bd49a7","2678ada6e7aeceb1cdabb844a0fa495958de0863c1763d9079bc72c28cb506f8","f02709b8dabd2afb2dd88888dbbc9a7f17e50dba789fe06cb2c48a4a0f38c0ce","c6696481b67efa9b86eede7890df4474f20e41e1aac6ffb967db8bb9d95450fa","9abdee3a7a895aaa60e2c95a926aec07071ece02e616bec380e882a6a7fdb63a","295a955abe6a98b2eecff3bf0fa2c6ea0cdd74da6bcda2002239b71359f324f5","db1c8f905195f1b607eea3d7970ae854bf540c1d10ef1580d27d47f8f840af5a","a127464377409cb89448b2bcd2089525877d8250f02ad609a35251331d69da82","5c1f9f7065f71e08660b4f0e75b3666ed53559d79a0757cf3f09d2673a6432f3","49c42630393bf9a7b31eb330b3659cfe9170e04f81c0433b8ec954e5d3b4567a","8ff4c7c4f6e353cba3848337a8e3d0159ab62237a6681d7048975b80c4e2c508","fc7155252e59e4a9cc09bc720c112a0dfe17c742ee16faec19e0f1eb86a0b5e5","5fcd781e85d4ed37046d4bd04910761591f36bc8fece325c849573b587aeadaf","b6c5b9a612991684819a6bdd80889bff72cb09724f1a46f280868fcfab415106","9f1b23a672182e4cc185c7d24780f39c9515079a7f23f5ccac64773935c59c38","91a47be36792bf1662badf1ca30ff93e2c13ae274801cd58be69ff1451019388","51cebf5b49a4004e8370886e2dd6d2a1b1440bce615fa747619cc0a80456bc7f","46e59010e00b5429c1e5b2b57783233bc9e524417392604e84a4faa6c9264e4c","05551704adbcce451fb2837e3eb9b1daad11fcb64186f8352b36a6c9e9c5913c","e3402cf54b0a1dd872ae251f94b7d6f535941d122034b926406c89460dfb0bb7","ec340466d7381a94b87f3f8c5f513bf4e41cb3f56a63f24829c27d7959ae045e","07426958fb54e6946222980dec90d46f1cde720074b2e13bcca06f0e56645b6f","b0093e827d7f2acf6881de9231d178e3fca0d454596b5d9212be169f6b974c86","c796d4f588384421af2d86bad4bbb0a63653fbbe5b21fba7a0e77bd616c05f8b","3a56c75908153e4f76984af8586ff65a124e3878a44aa33f087e4e913aa6d637","373969cd5247113d1b5b1971bbed097a175e3c4db801968d1616de6241f2c566","e2dc335f44e94882a6c2cb57c634d85c6163a8076e597f042dfe51b735a08d44","aa4b477e1b3c1a7efa9e62c4b766eaee11e2bbf0d68d8a37fb5ef5b317f9ea94",{"version":"6c27d4b5ba01295ef334456d9af4366aca789f228eee70fcb874b903a59b0e5b","impliedFormat":1},"c15059a5078d8704b7b8a7cfd3f78d3ab63b861ba6c591306e48a5bf0e3d1840","43d8f49ce197276926ac60cce65b5aca5419c50f2370e08fc99a0ebcf712e6d2","fa0b0f3ba08d6a12b75d2607cfa4189c39fed9b6782b96347ec34ec75d670484","dafe40d0da6e2b9f1b3d4f53064aa7cb378bec69e203f5e109c14b5a27615610","a01788d6e8bee365156dc6afc0be8eaf2f209eef1680a21f0506c7b9526c2a82","9433f8193e0277c810411b380dc7a08f450024085798e34acfd40dde44bae60f","f4a73f22848156361a26d92845360ce7f7bffb1496559fdce884d5abf3f55c0e","4bd6bc1565576af82e49e47d16c8672b70bf5eeae928dc64aae23a8298eb78fc","c57f4ec162a118eaed47db82d5eb1ab1a49b404235ae2e05ffddc7ce1e2dd55c","3d6eec5449f0c5709ed4b13990279b4b89be4fe0d8b349c4bda50955cd878616","43002bfc8ca83a7e08a404de0d8e3ca908fc42ecc0f482d2b77999e801cc5199","71708b5b1b5382f9d52dec1d933490f9b415d9d0312ea8f08465dcae87e342a8","f25e23b976b4969b7e53462a39ffb44e99cb02d4e4c83b3fd35c66f4998e2701","e8a78017d616e51becb46e7206e7e4b6d36ae58e53545b035b8d7c5acf2e4078",{"version":"1c1afca68851a6e48e25f2bb7ea8500a779abb52b45812fd4dea648011aeca6f","impliedFormat":1},{"version":"7c8d54f2141b800ece5420b23300a18a43d0f511f1272fc59646752ffd608efa","impliedFormat":1},{"version":"8a073e6ee1405177009f69a8e5422e884b58c9e8f488ab08fca0a70a7a39b724","impliedFormat":1},{"version":"1e57ff3484550236487afab9f40f52f433d2b66c3d68ff18c0950e051241ffa5","impliedFormat":1},{"version":"1dbcd2024f71d637fe660ab5f33b0a08cf641f545df10db423f0f43b9695bca7","impliedFormat":1},{"version":"0abe8d05845446f2c49baa377327e7bb6467e0c76441718910b2d0e905a64e59","impliedFormat":1},{"version":"4879f9d53624e4f0f6a7e75da580050e3eb95cc7297ad0325b44fe4334da1767","impliedFormat":1},{"version":"419570959ad061715ac79da4c430f25c49f442ec18b62ce13f84d2844669fd7c","impliedFormat":1},{"version":"0c0a6bdf3c402177bb31b58635580e0b9f6799a9f6107f14610d2c941e19395e","impliedFormat":1},{"version":"c1724e35c20e6dbd2071fe9e436636e36b151ab93fd96e2b74a4322aca877869","impliedFormat":1},{"version":"45674cf3bcb27f0f39b7db2fe3ebba994f12a014bc0360a7a53ccef00578ec2b","impliedFormat":1},{"version":"7f8c7577b1d0cefbc3373beef9b63dc1ce603bfc1647f1977968e8f0f1ab9e7b","impliedFormat":1},{"version":"e1b43848d155c0ee165f204af250c1e0d1943ab7baf6a1f6072a5ea946c47047","impliedFormat":1},{"version":"0a059ca062f511ddb351f153a1da95bdc3e0ddf9fbb8c92fd52e024c555bb135","impliedFormat":1},{"version":"6596950dbb92b674acfa84ffc3a3e84b7815675d10bb6f01bf6552bca2ccc59c","impliedFormat":1},{"version":"da51f4cfe9a68029990ba92b74b268994775554305c4f473e15a63351a7a6df0","impliedFormat":1},"17120023baeb7717bb46067e9a402bafd64e2eb107ffb0d4898acb34e824f3fb","d78a0af5d30274b1d0bafd6c8439f161fb6ad9e7c1f5f5f88c967e8e5b0b938e","08c2c682f2ade32d563909907a2976b9ff9f2773c768b496b73466a71d29fc76","0af39297d25da5af3e90dddf19aac06d308f3a5d25796615cc45c04fe1532ef6","ef0a02d0a1004122228486a0be4a46f54e4a3c2dc303f802637aebd38658c66b","287a41a73918f91c0010e429a586ae4c55b2fbdc1a566bc4429f0ceb194fc9f0","ed21a2c35b2dfe77cf3860d26ba186b790f3e425672d7321a2fa077a5944300a","dc2f3709cb664a764ceeee24dc670174835595324d2a3e0150182f8d7892f1b1","ceaa26b73b174d936671192be58ccc84d77dbf895bd7855017dd691b0184b9a0","f2dcf4a823d61f434bf83537dbffbc0a1b84f1088a477daa48b7bcceb3ce400f","8f5680bb6dec1a132c667f0f6dca008a0e1f371a9f01b393bedda018e659257c","a26ff12792f52a074b02ddc8dda99841a7b2145686939ca2d70152b8b3bfe325","9832af94db9d174a91a01016bd1ed076a1485439dd35b4cb99f35ba7ad6b15bb","06b446ce552eef591844e94db5640995448e4cd0f1052f285da465806ec5ca0e","896957756fff10719ace7c8fe3b043540c650bc0f7624664fa7b1aa18b0fdd39","0ea3543109ede5fecc1504ef9e92e67c9919fc551e631ce45674e02945186720","8af5e8adf648927f99d5dcf444022485c940e6b050b14cb17f458acd170aaacc","d360c766487c2c988ccf79c97de1755a4a52565a1fa03c266cc51c7183ef010f","318a9addf190ef7d01039158c103d1c976abc92f98b3550f7be606468ef68c13","cefd357264ae45f240d0eb995295890e72f8bda177ec8174d367a5e23e5f1935","b9add7f679316e8bddaedec86c2f4408d69c19d3c93252099a6f52130f4ff7b6","ebdbfcb992c932e6ca617f2d9e8ba5f653c700dab66235cf33ac3ca583c94cec","84e611ed998a12c14263889b7a5ac91fc2be616d913899f4d20917b459fd5366","08182b0db4ddbe43efe2036147ccf5b36ddef1f3632cc8b09360b1a8df086c7f","2cdf2678575dd69d2d921775502efd7ada618feaafcc382b2122e157f1e8af7f","22d3933d181e84991002aac3b0bee098c23122e84b2223c791aef03fbb7e893d","1e18524ad724ddfbf56e1720ae580a4f5213957c1618e05043b2e2c351568536","84e611ed998a12c14263889b7a5ac91fc2be616d913899f4d20917b459fd5366","b368f9ccc97a23dec5369c84ec7e1a26362f42b8990ded07eb62d3c8e5786595","5018ef7eee5f7cc1f1c0fa6e566e00fa722450ad16314ad4be81dce394e07293","34771213d6de99e317bebc9d54e9ad8a937f0e85ef9cf2714abb181b534d6322","636816976f09ecd5cf65350b9c8f804996a6863043444e7d1c31b9277b9616c7","1ad29d113729b5f1c65a807927a2e59c49ff9fb806d271e2df6f04682947dc51","84bd49e9d482e81d4ffef543f1d70deeeefb3b30b5ce8bc5520d867835b77c90","77cf011e9bcab651cdaed4a8191948160058dc4918372b2f781b9d288e4379b1","f18364d4c5fe442a2bc238cb6f50e144bd088d410dc70df082f307724cf86407","af6a729165d3352b3b659cf63aa1afde887bd2b0f51596123b9be39f49ba75a4","185276c20a070b6c6be8a127724342836c6274d644762f963d68d465bc31cec0","042cf2637a79381bbbb6e6e0be775ef73c27dc9e0c667abe8fc49df89d6a0a81","89ad17987b5e2a40de0c9bdb6c531bb434cb02222b1077e8345f4d7779c19188","29e2591a4024d9535afbc2b1dfb5f46d7140b090cc565d620fdcd7fe44da4aa1","e68943187aba90868594e79620f66dc303e86d2aeb1351960bf217046ee0cdc7","2a8a20350e983f15fdefa9b79fe4ff1ee162fb258980177dcac443ae03d62af9","f672c80a3b4936e6e709a4b667b4b43e55aca26936c5a7f82eb24cabb16bba33","bc23903f9e4ec308d80e1cc1b39d3d81613ac829f79f5b31acb9548abf488e8f","84e611ed998a12c14263889b7a5ac91fc2be616d913899f4d20917b459fd5366","d84350c2121460481816acbbe75e3a8dd061fdee010119d281237c5e17b90739","cfc6451a4091a17321a689e19d2efdf906debb7af3c0955326a2ea44a7b41177",{"version":"264f935450101e4b000eb351cf75c9d799ca20a278b260a9e5770303b5f2b6a3","impliedFormat":99},{"version":"997a9f469f23a302280c987e2165d0fb3b729d8d11401f32afadbc2ec1a3d6c8","impliedFormat":99},{"version":"570fb3e86599cb179cc91b04fc5034c5b8af33aa7ede111048f2d40aeac2eaa6","impliedFormat":99},{"version":"6c13e210da67cb606e600fc90d5c702bcd62adb2e91f32c4e2673cd84d48855b","affectsGlobalScope":true,"impliedFormat":99},{"version":"e29c3246bccba476f4285c89ea0c026b6bfdf9e3d15b6edf2d50e7ea1a59ecfb","impliedFormat":99},{"version":"e689cc8cd8a102d31c9d3a7b0db0028594202093c4aca25982b425e8ae744556","impliedFormat":99},{"version":"478e59ac0830a0f6360236632d0d589fb0211183aa1ab82292fbca529c0cce35","impliedFormat":99},{"version":"1b4ed9deaba72d4bc8495bf46db690dbf91040da0cb2401db10bad162732c0e2","impliedFormat":99},{"version":"cf60c9e69392dd40b81c02f9674792e8bc5b2aff91d1b468e3d19da8b18358f8","impliedFormat":99},{"version":"3e94295f73335c9122308a858445d2348949842579ac2bacd30728ab46fe75a7","impliedFormat":99},{"version":"8a778c0e0c2f0d9156ca87ab56556b7fd876a185960d829c7e9ed416d5be5fb4","impliedFormat":99},{"version":"b233a945227880b8100b0fec2a8916339fa061ccc23d2d9db4b4646a6cd9655f","impliedFormat":99},{"version":"54821272a9f633d5e8ec23714ece5559ae9a7acc576197fe255974ddbd9b05d6","impliedFormat":99},{"version":"e08685c946d49f555b523e481f4122b398c4444c55b164e5ac67c3ba878db8d1","impliedFormat":99},{"version":"3c99d5232a3c8b54016e5700502078af50fe917eb9cb4b6d9a75a0a3456fcd5d","impliedFormat":99},{"version":"8725caa1e991b232784a17aaf0fb4540eb7e65c192859d96d87a0d97b9d11487","impliedFormat":99},{"version":"7202a89bea0bdab87cc0ae60912b9e631a48f519b6a1f323dba8bc77a02a3481","impliedFormat":99},{"version":"f865343c121abc3516abf5b888d0c1b7596ec772229d8e4d4d796f89e8c9d0c0","impliedFormat":99},{"version":"77114bdbc7388aeeb188c85ebe27e38b1a6e29bc9fea6e09b7011bbb4d71ec41","impliedFormat":99},{"version":"3df489529e6dfe63250b187f1823a9d6006b86a7e9cac6b338944d5fc008db70","impliedFormat":99},{"version":"fe0d316062384b233b16caee26bf8c66f2efdcedcf497be08ad9bcea24bd2d2c","impliedFormat":99},{"version":"2f5846c85bd28a5e8ce93a6e8b67ad0fd6f5a9f7049c74e9c1f6628a0c10062a","impliedFormat":99},{"version":"7dfb517c06ecb1ca89d0b46444eae16ad53d0054e6ec9d82c38e3fbf381ff698","impliedFormat":99},{"version":"35999449fe3af6c7821c63cad3c41b99526113945c778f56c2ae970b4b35c490","impliedFormat":99},{"version":"1fff68ffb3b4a2bf1b6f7f4793f17d6a94c72ca8d67c1d0ac8a872483d23aaf2","impliedFormat":99},{"version":"6dd231d71a5c28f43983de7d91fb34c2c841b0d79c3be2e6bffeb2836d344f00","impliedFormat":99},{"version":"e6a96ceaa78397df35800bafd1069651832422126206e60e1046c3b15b6e5977","impliedFormat":99},{"version":"035dcab32722ff83675483f2608d21cb1ec7b0428b8dca87139f1b524c7fcdb5","impliedFormat":99},{"version":"605892c358273dffa8178aa455edf675c326c4197993f3d1287b120d09cee23f","impliedFormat":99},{"version":"a1caf633e62346bf432d548a0ae03d9288dc803c033412d52f6c4d065ef13c25","impliedFormat":99},{"version":"774f59be62f64cf91d01f9f84c52d9797a86ef7713ff7fc11c8815512be20d12","impliedFormat":99},{"version":"46fc114448951c7b7d9ed1f2cc314e8b9be05b655792ab39262c144c7398be9f","impliedFormat":99},{"version":"9be0a613d408a84fa06b3d748ca37fd83abf7448c534873633b7a1d473c21f76","impliedFormat":99},{"version":"f447ea732d033408efd829cf135cac4f920c4d2065fa926d7f019bff4e119630","impliedFormat":99},{"version":"09f1e21f95a70af0aa40680aaa7aadd7d97eb0ef3b61effd1810557e07e4f66a","impliedFormat":99},{"version":"a43ec5b51f6b4d3c53971d68d4522ef3d5d0b6727e0673a83a0a5d8c1ced6be2","impliedFormat":99},{"version":"c06578ae45a183ba9d35eee917b48ecfdec19bb43860ffc9947a7ab2145c8748","impliedFormat":99},{"version":"2a9b4fd6e99e31552e6c1861352c0f0f2efd6efb6eacf62aa22375b6df1684b1","impliedFormat":99},{"version":"ad9f4320035ac22a5d7f5346a38c9907d06ec35e28ec87e66768e336bc1b4d69","impliedFormat":99},{"version":"05a090d5fb9dc0b48e001b69dc13beaab56883d016e6c6835dbdaf4027d622d4","impliedFormat":99},{"version":"76edff84d1d0ad9cece05db594ebc8d55d6492c9f9cc211776d64b722f1908e0","impliedFormat":99},{"version":"ec7cef68bcd53fae06eecbf331bb3e7fdfbbf34ed0bbb1fb026811a3cd323cb4","impliedFormat":99},{"version":"36ea0d582c82f48990eea829818e7e84e1dd80c9dc26119803b735beac5ee025","impliedFormat":99},{"version":"9c3f927107fb7e1086611de817b1eb2c728da334812ddab9592580070c3d0754","impliedFormat":99},{"version":"eeae71425f0747a79f45381da8dd823d625a28c22c31dca659d62fcc8be159c2","impliedFormat":99},{"version":"d769fae4e2194e67a946d6c51bb8081cf7bd35688f9505951ad2fd293e570701","impliedFormat":99},{"version":"55ce8d5c56f615ae645811e512ddb9438168c0f70e2d536537f7e83cd6b7b4b0","impliedFormat":99},{"version":"fa1369ff60d8c69c1493e4d99f35f43089f0922531205d4040e540bb99c0af4f","impliedFormat":99},{"version":"a3382dd7ef2186ea109a6ee6850ca95db91293693c23f7294045034e7d4e3acf","impliedFormat":99},{"version":"2b1d213281f3aa615ae6c81397247800891be98deca0b8b2123681d736784374","impliedFormat":99},{"version":"c34e7a89ed828af658c88c87db249b579a61e116bea0c472d058e05a19bf5fa9","impliedFormat":99},{"version":"7ae166eb400af5825d3e89eea5783261627959809308d4e383f3c627f9dad3d8","impliedFormat":99},{"version":"69f64614a16f499e755db4951fcbb9cf6e6b722cc072c469b60d2ea9a7d3efe8","impliedFormat":99},{"version":"75df3b2101fc743f2e9443a99d4d53c462953c497497cce204d55fc1efb091e0","impliedFormat":99},{"version":"7dc0f40059b991a1624098161c88b4650644375cc748f4ac142888eb527e9ccd","impliedFormat":99},{"version":"a601809a87528d651b7e1501837d57bb840f47766f06e695949a85f3e58c6315","impliedFormat":99},{"version":"d64f68c9dbd079ad99ec9bae342e1b303da6ce5eac4160eb1ed2ef225a9e9b23","impliedFormat":99},{"version":"99c738354ecc1dba7f6364ed69b4e32f5b0ad6ec39f05e1ee485e1ee40b958eb","impliedFormat":99},{"version":"8cd2c3f1c7c15af539068573c2c77a35cc3a1c6914535275228b8ef934e93ae4","impliedFormat":99},{"version":"efb3ac710c156d408caa25dafd69ea6352257c4cebe80dba0f7554b9e903919c","impliedFormat":99},{"version":"260244548bc1c69fbb26f0a3bb7a65441ae24bcaee4fe0724cf0279596d97fb4","impliedFormat":99},{"version":"ce230ce8f34f70c65809e3ac64dfea499c5fd2f2e73cd2c6e9c7a2c5856215a8","impliedFormat":99},{"version":"0e154a7f40d689bd52af327dee00e988d659258af43ee822e125620bdd3e5519","impliedFormat":99},{"version":"cca506c38ef84e3f70e1a01b709dc98573044530807a74fe090798a8d4dc71ac","impliedFormat":99},{"version":"160dbb165463d553da188b8269b095a4636a48145b733acda60041de8fa0ae88","impliedFormat":99},{"version":"8b1deebfd2c3507964b3078743c1cb8dbef48e565ded3a5743063c5387dec62f","impliedFormat":99},{"version":"6a77c11718845ff230ac61f823221c09ec9a14e5edd4c9eae34eead3fc47e2c7","impliedFormat":99},{"version":"5a633dd8dcf5e35ee141c70e7c0a58df4f481fb44bce225019c75eed483be9be","impliedFormat":99},{"version":"f3fb008d3231c50435508ec6fd8a9e1fdc04dd75d4e56ec3879b08215da02e2c","impliedFormat":99},{"version":"9e4af21f88f57530eea7c963d5223b21de0ddccfd79550636e7618612cc33224","impliedFormat":99},{"version":"b48dd54bd70b7cf7310c671c2b5d21a4c50e882273787eeea62a430c378b041a","impliedFormat":99},{"version":"1302d4a20b1ce874c8c7c0af30051e28b7105dadaec0aebd45545fd365592f30","impliedFormat":99},{"version":"fd939887989692c614ea38129952e34eeca05802a0633cb5c85f3f3b00ce9dff","impliedFormat":99},{"version":"3040f5b3649c95d0df70ce7e7c3cce1d22549dd04ae05e655a40e54e4c6299de","impliedFormat":99},{"version":"de0bd5d5bd17ba2789f4a448964aba57e269a89d0499a521ccb08531d8892f55","impliedFormat":99},{"version":"921d42c7ec8dbefd1457f09466dadedb5855a71fa2637ad67f82ff1ed3ddc0d0","impliedFormat":99},{"version":"b0750451f8aec5c70df9e582ab794fab08dae83ea81bb96bf0b0976e0a2301ee","impliedFormat":99},{"version":"8ba931de83284a779d0524b6f8d6cf3956755fb41c8c8c41cd32caf464d27f05","impliedFormat":99},{"version":"4305804b3ae68aebb7ef164aabd7345c6b91aada8adda10db0227922b2c16502","impliedFormat":99},{"version":"96ae321ebb4b8dcdb57e9f8f92a3f8ddb50bdf534cf58e774281c7a90b502f66","impliedFormat":99},{"version":"934158ee729064a805c8d37713161fef46bf36aa9f0d0949f2cd665ded9e2444","impliedFormat":99},{"version":"6ef5957bb7e973ea49d2b04d739e8561bca5ae125925948491b3cfbd4bf6a553","impliedFormat":99},{"version":"6a32433315d54a605c4be53bf7248dfd784a051e8626aeb01a4e71294dd2747f","impliedFormat":99},{"version":"9476325d3457bfe059adfee87179a5c7d44ecbeec789ede9cfab8dc7b74c48db","impliedFormat":99},{"version":"4f1c9401c286c6fff7bbf2596feef20f76828c99e3ccb81f23d2bd33e72256aa","impliedFormat":99},{"version":"b711cdd39419677f7ca52dd050364d8f8d00ea781bb3252b19c71bdb7ec5423e","impliedFormat":99},{"version":"ee11e2318448babc4d95f7a31f9241823b0dfc4eada26c71ef6899ea06e6f46b","impliedFormat":99},{"version":"27a270826a46278ad5196a6dfc21cd6f9173481ca91443669199379772a32ae8","impliedFormat":99},{"version":"7c52f16314474cef2117a00f8b427dfa62c00e889e6484817dc4cabb9143ac73","impliedFormat":99},{"version":"6c72a60bb273bb1c9a03e64f161136af2eb8aacc23be0c29c8c3ece0ea75a919","impliedFormat":99},{"version":"6fa96d12a720bbad2c4e2c75ddffa8572ef9af4b00750d119a783e32aede3013","impliedFormat":99},{"version":"00128fe475159552deb7d2f8699974a30f25c848cf36448a20f10f1f29249696","impliedFormat":99},{"version":"e7bd1dc063eced5cd08738a5adbba56028b319b0781a8a4971472abf05b0efb4","impliedFormat":99},{"version":"2a92bdf4acbd620f12a8930f0e0ec70f1f0a90e3d9b90a5b0954aac6c1d2a39c","impliedFormat":99},{"version":"c8d08a1e9d91ad3f7d9c3862b30fa32ba4bc3ca8393adafdeeeb915275887b82","impliedFormat":99},{"version":"c0dd6b325d95454319f13802d291f4945556a3df50cf8eed54dbb6d0ade0de2f","impliedFormat":99},{"version":"0627ae8289f0107f1d8425904bb0daa9955481138ca5ba2f8b57707003c428d5","impliedFormat":99},{"version":"4d8c5cc34355bfb08441f6bc18bf31f416afbfa1c71b7b25255d66d349be7e14","impliedFormat":99},{"version":"b365233eaff00901f4709fa605ae164a8e1d304dc6c39b82f49dda3338bea2b0","impliedFormat":99},{"version":"456da89f7f4e0f3dc82afc7918090f550a8af51c72a3cfb9887cf7783d09a266","impliedFormat":99},{"version":"d9a2dcc08e20a9cf3cc56cd6e796611247a0e69aa51254811ec2eed5b63e4ba5","impliedFormat":99},{"version":"44abf5b087f6500ab9280da1e51a2682b985f110134488696ac5f84ae6be566c","impliedFormat":99},{"version":"ced7ef0f2429676d335307ad64116cd2cc727bb0ce29a070bb2992e675a8991e","impliedFormat":99},{"version":"0b73db1447d976759731255d45c5a6feff3d59b7856a1c4da057ab8ccf46dc84","impliedFormat":99},{"version":"3fc6f405e56a678370e4feb7a38afd909f77eb2e26fe153cdaea0fb3c42fbbee","impliedFormat":99},{"version":"2762ed7b9ceb45268b0a8023fd96f02df88f5eb2ad56851cbb3da110fd35fdb5","impliedFormat":99},{"version":"9c20802909ca00f79936c66d8315a5f7f2355d343359a1e51b521ec7a8cfa8bf","impliedFormat":99},{"version":"31ddfdf751c96959c458220cd417454b260ff5e88f66dddc33236343156eb22c","impliedFormat":99},{"version":"ec0339cf070b4dedf708aaed26b8da900a86b3396b30a4777afcd76e69462448","impliedFormat":99},{"version":"067eed0758f3e99f0b1cfe5e3948aa371cbb0f48a26db8c911772e50a9cc9283","impliedFormat":99},{"version":"7dfb9316cfbf2124903d9bc3721d6c19afbf5109dfbc2017ca8ae758f85178ab","impliedFormat":99},{"version":"919a7135fa54057cf42c8cd52165bf938baeb6df316b438bbf4d97f3174ff532","impliedFormat":99},{"version":"4a2957dfe878c8b49acb18299dfba2f72b8bf7a265b793916c0479b3d636b23b","impliedFormat":99},{"version":"fad6a11a73a787168630bf5276f8e8525ab56f897a6a0bf0d3795550201e9df5","impliedFormat":99},{"version":"0cc8d34354ec904617af9f1d569c29b90915634c06d61e7e74b74de26c9379d2","impliedFormat":99},{"version":"529b225f4de49eed08f5a8e5c0b3030699980a8ea130298ff9dfa385a99c2a76","impliedFormat":99},{"version":"77bb50ea87284de10139d000837e5cce037405ac2b699707e3f8766454a8c884","impliedFormat":99},{"version":"95c33ceea3574b974d7a2007fed54992c16b68472b25b426336ef9813e2e96e8","impliedFormat":99},{"version":"1ecb3c690b1bfdc8ea6aaa565415802e5c9012ec616a1d9fb6a2dbd15de7b9dc","impliedFormat":99},{"version":"57fc10e689d39484d5ae38b7fc5632c173d2d9f6f90196fc6a81d6087187ed03","impliedFormat":99},{"version":"f1fb180503fecd5b10428a872f284cc6de52053d4f81f53f7ec2df1c9760d0c0","impliedFormat":99},{"version":"d30d4de63fc781a5b9d8431a4b217cd8ca866d6dc7959c2ce8b7561d57a7213f","impliedFormat":99},{"version":"765896b848b82522a72b7f1837342f613d7c7d46e24752344e790d1f5b02810b","impliedFormat":99},{"version":"ee032efc2dd5c686680f097a676b8031726396a7a2083a4b0b0499b0d32a2aea","impliedFormat":99},{"version":"b76c65680c3160e6b92f5f32bc2e35bca72fedb854195126b26144fd191cd696","impliedFormat":99},{"version":"13e9a215593478bd90e44c1a494caf3c2079c426d5ad8023928261bfc4271c72","impliedFormat":99},{"version":"3e27476a10a715506f9bb196c9c8699a8fe952199233c5af428d801fdda56761","impliedFormat":99},{"version":"dbb9ad48b056876e59a7da5e1552c730b7fa27d59fcd5bf27fd7decc9d823bb8","impliedFormat":99},{"version":"4bd72a99a4273c273201ca6d1e4c77415d10aa24274089b7246d3d0e0084ca06","impliedFormat":99},{"version":"7ae03c4abb0c2d04f81d193895241b40355ae605ec16132c1f339c69552627c1","impliedFormat":99},{"version":"650eddf2807994621e8ca331a29cc5d4a093f5f7ff2f588c3bb7016d3fe4ae6a","impliedFormat":99},{"version":"615834ad3e9e9fe6505d8f657e1de837404a7366e35127fcb20e93e9a0fb1370","impliedFormat":99},{"version":"c3661daba5576b4255a3b157e46884151319d8a270ec37ca8f353c3546b12e9b","impliedFormat":99},{"version":"de4abffb7f7ba4fffbd5986f1fe1d9c73339793e9ac8175176f0d70d4e2c26d2","impliedFormat":99},{"version":"211513b39f80376a8428623bb4d11a8f7ef9cd5aa9adce243200698b84ce4dfb","impliedFormat":99},{"version":"9e8d2591367f2773368f9803f62273eb44ef34dd7dfdaa62ff2f671f30ee1165","impliedFormat":99},{"version":"0f3cef820a473cd90e8c4bdf43be376c7becfda2847174320add08d6a04b5e6e","impliedFormat":99},{"version":"20eed68bc1619806d1a8c501163873b760514b04fcf6a7d185c5595ff5baef65","impliedFormat":99},{"version":"620ef28641765cc6701be0d10d537b61868e6f54c9db153ae64d28187b51dbc0","impliedFormat":99},{"version":"341c8114357c0ec0b17a2a1a99aecbfc6bc0393df49ea6a66193d1e7a691b437","impliedFormat":99},{"version":"b01fe782d4c8efc30ab8f55fae1328898ad88a3b2362ba4daac2059bd30ef903","impliedFormat":99},{"version":"f8e8b33983efa33e28e045b68347341fc77f64821b7aabaac456d17b1781e5f4","impliedFormat":99},{"version":"8d3e416906fb559b9e4ad8b4c4a5f54aeadeb48702e4d0367ffba27483a2e822","impliedFormat":99},{"version":"47db572e8e1c12a37c9ac6bd7e3c88b38e169e3d7fd58cb8fb4a978651e3b121","impliedFormat":99},{"version":"a83a8785713569da150cded8e22c8c14b98b8802eb56167db5734157e23ee804","impliedFormat":99},{"version":"cce1c8b93d1e5ed8dcbaca2c4d346abb34da5c14fa51a1c2e5f93a31c214d8e9","impliedFormat":99},{"version":"213a867daad9eba39f37f264e72e7f2faa0bda9095837de58ab276046d61d97c","impliedFormat":99},{"version":"e1c2ba2ca44e3977d3a79d529940706cef16c9fdd9fd9cad836022643edff84f","impliedFormat":99},{"version":"d63bfe03c3113d5e5b6fcef0bed9cd905e391d523a222caa6d537e767f4e0127","impliedFormat":99},{"version":"4f0a99cb58b887865ae5eed873a34f24032b9a8d390aa27c11982e82f0560b0f","impliedFormat":99},{"version":"831ec85d8b9ce9460069612cb8ac6c1407ce45ccaa610a8ae53fe6398f4c1ffd","impliedFormat":99},{"version":"84a15a4f985193d563288b201cb1297f3b2e69cf24042e3f47ad14894bd38e74","impliedFormat":99},{"version":"ea9357f6a359e393d26d83d46f709bc9932a59da732e2c59ea0a46c7db70a8d2","impliedFormat":99},{"version":"2b26c09c593fea6a92facd6475954d4fba0bcc62fe7862849f0cc6073d2c6916","impliedFormat":99},{"version":"b56425afeb034738f443847132bcdec0653b89091e5ea836707338175e5cf014","impliedFormat":99},{"version":"7b3019addc0fd289ab1d174d00854502642f26bec1ae4dadd10ca04db0803a30","impliedFormat":99},{"version":"77883003a85bcfe75dc97d4bd07bd68f8603853d5aad11614c1c57a1204aaf03","impliedFormat":99},{"version":"a69755456ad2d38956b1e54b824556195497fbbb438052c9da5cce5a763a9148","impliedFormat":99},{"version":"c4ea7a4734875037bb04c39e9d9a34701b37784b2e83549b340c01e1851e9fca","impliedFormat":99},{"version":"bba563452954b858d18cc5de0aa8a343b70d58ec0369788b2ffd4c97aa8a8bd1","impliedFormat":99},{"version":"48dd38c566f454246dd0a335309bce001ab25a46be2b44b1988f580d576ae3b5","impliedFormat":99},{"version":"0362f8eccf01deee1ada6f9d899cf83e935970431d6b204a0a450b8a425f8143","impliedFormat":99},{"version":"942c02023b0411836b6d404fc290583309df4c50c0c3a5771051be8ecd832e8d","impliedFormat":99},{"version":"27d7f5784622ac15e5f56c5d0be9aeefe069ed4855e36cc399c12f31818c40d4","impliedFormat":99},{"version":"0e5e37c5ee7966a03954ddcfc7b11c3faed715ee714a7d7b3f6aaf64173c9ac7","impliedFormat":99},{"version":"adcfd9aaf644eca652b521a4ebac738636c38e28826845dcd2e0dac2130ef539","impliedFormat":99},{"version":"fecc64892b1779fb8ee2f78682f7b4a981a10ed19868108d772bd5807c7fec4f","impliedFormat":99},{"version":"a68eb05fb9bfda476d616b68c2c37776e71cba95406d193b91e71a3369f2bbe7","impliedFormat":99},{"version":"0adf5fa16fe3c677bb0923bde787b4e7e1eb23bcc7b83f89d48d65a6eb563699","impliedFormat":99},{"version":"b5a4d9f20576e513c3e771330bf58547b9cf6f6a4d769186ecef862feba706fd","impliedFormat":99},{"version":"560a6b3a1e8401fe5e947676dabca8bb337fa115dfd292e96a86f3561274a56d","impliedFormat":99},"ad408e1d2c04350ab0bfb1e6af94d293e72c06d4963d1209c94db462945bdf3e","9dc65c32e2d8eb5a1aea55061dc7a79da87acd77020401723f3ee8b96d8671ad","6b755c883d57754f3d60d9969efb08f7dd6b6e517a83fd707359cc87699687fc","feb59c80c4e23619c58f7ad70a6103f0c62dceeb0cc7fa9f28a91ecb5d36261a","77b774684b6d767279a903555825075c1e06bcd74fd0eea9cf73a3a3b5b3b33b","8412c8b48ccbdfbb8365388fe39c526fa446071c6df43641ddaf393ba0bfbca0","06cfee869d976e166b8bb9a5ea675813aa698cbe51dec1a97dc30c62c58f0733","b2650cab5a7ed44bfed90341a9dde670e872f4ef41b4be7ca371498c050ebefe","794aa3a88fdd9a073ad2f65bd66539fcfc4e61e90c9c0ce5389d103c3fa12909","030a93af4e1df5d2583c2e7350ae50076b7644b4c46d01b760539a6d3e2d7d96","d099ce52b1f55d99f54063af932351f7b1ee08fe3b03b1b7d99bd7a5ad04b8bc","ba330299daafc14ceac7529b1f46f6b91c7d5fc364c3af5c83c91203637a09a7","245d03182b90549e766ce1f367c4a5e2a181ffb8c04e188ae671eb742efcf773","27b46b9602ce560cb93c4a6584d756e4e159aac49e82934be68cbf15d3ed42ea","89b9f6563edc98ca42094cb7d97d59c04f20d5762cdbf6a6e6c05aed8a195237","26244505060cff14bf02d22786358224b436409c50a012afb161fe69dfd6e4ed","144cb54f40e0ebf092f2787b85c781a446762210896039a2f515a451ecbe5374","c1136d70aca19bd4ec8ecec23162d3ae3868f480b98ef2d6797ff82b0defd94a","72bd6041d9fcbc94cc8a35773f090e572c8f89d5948dc53c3d56077314ea3d21","91e260f7a43fa07c45e34ed1e3de21fae4f6b7900ff5c7103dafd31b7f676630","c607ccc0a36a11354774c14f593f74675591d7327bcf7423cd6000134a3dcc49","bc772a1ed0c9580986f5c6e4d825e0404ec343652bf9e27bb04a061e6b2a7e7f","eb09e96c4b6c9e2149249387d78589ffb8572ae8151508e6f891055f519f5442","87854cf120ca34dc73304aeae7b22a486539c3bd4b20ed62a362605bf478cfe3","c27474517b68e82773613d8e8cbbe431df7e1e042ea1395abc95c24fc47ebcd9","8a750df9a6001da67fef2c99a2f34acf0a4d237d7b87bffbe43389f053081e1e","4bcefee3b270f2061b2d7b45011d33d97f3503f206003a6c8889368299dab913","576a1c2513e9ab77f46e6267769e78802de01472cba30e47579d9d33756e09c4","cb8eddc558446d82ceb5406aea3b84ad3207a2bbb321e43d126e7b6357efb0d1","e90426f50db6e1c8e19c3e890e32957a7c6c0ff1aba7e502cf09c71c2a066a60","6abe457b90789ea7587cdb11eb360b65b75ccbef90085aa47fc23b12bdbb5a5e","d35ded0ba8c108af7fdf424d8d54e7cf2599b2324c80fa1c6013bb928c32e384","b6d7dec5bac4d96871e8ec8f5083a924c22080c9039cdbb05ecb22e7cc23da9a","0be705edeaf3add436dbb785ca50c17396aced2a6745a88c3e676d73ea6090cd","29a9339cb2cdc537b3161b281d02e04683f9cef651e5d2bc9e3eec7ee6218af2","d6f9ea4c069640a39e7232ef0ce688edcefdb226df479f84bb6f23bbdc8fc4be","46b1edac9e8d854dfbc11b8787140c6f1ce6ccfeaf71a1fc8e10319e53fbb891","8dc812f83df385d1e877dbb5b1eb899dfdd87394ad911a20686eb7040a4a3c4f","f1012bcc566e3975389a5ea432783547873191c778ddc2870ef8dd78dbe9b12b","00379f2f1c1c65b27991f7726134119411525adefb2599e95139e1fe6141f111","b634ff16854de93d7b042b822e57195cb080790b7dfa25203034120e242f88cc","73fdb545cd0b36a420ec2cdc328deb9e99280dd5d9a71a6c145a85a6c36c8416","b64f1dab2dcd8142b75e6943f65c0e1c692ed9b4cc5d8cda5e42701f4a80e131","603457a0021f27166af624df9266fd2c08e0d1c746be00a9d3fa5520349273ad","2ccb75b2ae8a6d29527d3a054948dd5b204b77ebfac0055b64d9c5b1302928d6","caab04a3535cf4fdc862ee4695c2b2d52a8061c8343a951459726fa36d72a005","125ba3dff18c8d939aa198e78a8f7f44d82e946a7914129bed2a9865a6613ea9","6272896f72c329b8a1e054cb89ba0e9a27b84eeb7f0abaa559a50c50c6fec670","70fa01649fc8a57e0c4e8ab4c4d6aa9747a9a84d1a361853668179298954b73a","9dd33e96d127ad5ed6dad7995c0d68ad2ec0e056269b0c1cb0b87eac5138ed1c","dd03604c2c1884b33108151250107c865715ecce83c994de6a3aba53bdb50e65","61d5de4ce409970219fe0df3ed37346ebaf4f260ee91190168d50367b7cc7fda","ba42d1e130fbce31c939f6c471b696acc9e02f261f6ef135bcdb716b04549e08","c61e822405b293c0b5cbcd02f464cce72e4502e8aca7da54d9a0d38d208c864b","b4f82aca67305ef98c0208556a7f39787240afbe6d092bc61ee2d3bad3e4292b","d7c5b7ab527d13439bafa5fb1a30bf8a37ee8dbd4359ffa07ccdca16f1351671","29d82306a1768faf2320c115cf0b539f827fcde8c4b64e72fb226da1ac65b30e","925a5e017d9f608da0bd45795c58c567b1b2a984059fa9aeba40d0ce5fce211a","13e86c35781e55bd1e957c47ce86d45e8757972f1c50022f78eac1bae4de6b35",{"version":"5d525ca631243f4299c1792ea7dfb3327726fd289b34bb7f13f3b084747c28ee","signature":"091e24c7cda1d7ae4d0a495d50fc321ab408b5794ca1c652bf21def170c71af2"},"b743653c9ed5a4bed2d1870dd5772830353413e9d1db555893bd019e97c3170f","7db604d5e1556b2c043d64810458b65c1fe3d682e8031f58e4e63b2f938ee05f","61dfe8b37d94f8c1c04efc3fe2a6bee8f37301c01ac449b5c0e35d9d42d283a4","d5c7432593267323d30f3e70bb99e63a2719f222a12ee74bf7e48f513669d29f","67ee5d5f19a650f249b129f1795850ff7d71cb32f403fcecac9a6cc82bf28c93","2283de22f324ed7de79853458636cf15a0a5debc5530a2196dea511c019e6cce","12491f7e9a1aba685de27700052aca033301622fcc5fdc9e7012c274bdef4586","2b067d150b00eeecc311c65c9f1abcf8874ec3aa8e568585a12dc700ba0c7119","e9cdaa46515cb197364cce71b42450318f817b5a966323a1aece39d23d88df37","6596720b9991df7bff7dbf56e956a7f110886a1cceb028f650773cc8987534b0","460e8d758543b2e39bac5a8671a2302f3ed2138450f9b522629fbc7becbafd8e","2019d67aa160945de090e695465ce80c918aed66c28476555bdffb8c01fda2a3","652e85b04198231058133ada88df08cda4ce00ae24c67436c82c339b152500d7","94f03b7b81727dd33d210bbbab52c07dddc93475c392b1bb43d59e75986e16e8","10bce452f7b45156ac33210ac8f576c90c580fa8973f3b6412c957f226101cce","8e523c6420adfc19499e7a393d8ef7f88fef3cb6d8c3ac901ff2a413ac315fe5","c16a37c3ef051b2d82108a1d200a539d0d2f18c806e05c5dde6fdd4ec6965a4c","d6bf94457663086816d7c9860c2f1ab35b0073a50d83b51f1fa9ad047c94c30b","e7360bd2cee34d1535a4d10e11772700c38736fffb8f8633a50f55c451c249a9","f61c0ee5bfebf481596d8bc673f33b1c914ff520baf710fca98a1700051dc60b","b15e2bcf2b3e59b7e6baee7cc6d8038bd17e7114b4f6619bdc4053ef4b21cbe7","ccdec094f9be7488d630c8af0d655e049167d4bcc378ec5d7f2e72e0ba709ec3","0b7d26da0f2b50e6a48e81c41f5f7e600cded0079215ff3bafcbb9baac733046","5c603ccee9a3500c0957b779d47eddc2358bf39270974df72b91cf4bd0a58fec","9c17b24c34e5649e447366371a422dfcf9f2ef07f816a496feb30580eabd1eab","5497ceb20551297bd5024daff126a1ea0b711009e398c38e0c1a938118de40c4","5d0b0ba2ab0fce83b729093b07cc850a8605d4694f149c80a4bd260127015e25","1e0f066290c9a8ce8a83153bb21fabf1dbe61c43cb5d705ed5f46e7c95abee9a","e5c85418d705bb3ddf2260ad62ed26375d34a1552054d7e5301e3a087b44a63b","cedb7ce23ac88cd1f81e02fb302bf9927eda58499ed125ff4e4dbc556242127c","ad66fbaf5af6d675e38b16d976dccf880a47938cf3fb0d4ec6722e2c0c58bdd3","33fd94c13d2d1ba16b4811ee3ab1588404494ba68ec8a32aedeca1f110eff2d5","475d1f6946c73049f8f4040f9f4eb5ee20993430545e4830145ab7d53ca6a56d","7fc9b69a788303508fe9b3a518e16462c3cf1a1fc805a70784209c2bdfe39c2c","de7c146057785956ff8e25a55be454b96e3c5a43c1b46e83d6be9b9fd4cfcd31","1ea6b87b3c5f87e01641f4dc3577fa2d6cb3b04d02c3157be55f4a5ba865b59b","7cb8cd49d3efd5ff4067e5f163d6625e4a7a6bc1622d7ddd536e83cd8b7ee26b","77718422bf1134b3795ffdeac7516bae56e69cbfa95e8673f03b8de4c20441ba","1de39cd5b9ccdddef74637ef729b53d51ed342387fc72d05c82b7317ae147f75","07f1137442f321c73e6c943c9c187bdff3b1558450e999fae66d86ee9eea72f9","e7b27c621068248ef2a36fea08d803d920852a7f14304b603731bce40ffcbaf2","1eb6cf1e0cc73fc7386a47bcafe2356cd9d4d2fbf0b98553698626059c77381b","16ba823c9718c1cef8acd6479d380a11372351614bfe50f09ea614f35f5320c3","45745cff96869870667fb6f7a95d7bbed6db5b25f8affe11794141422b5a5b8e","718df27c9a1d8394ecc04566ad1375eef3b88cdd94efdca2ac7b02a9fdcd4a13","2fd0152ddbb89be3c1fc3fcc7324bab71d273fd0a28161d744a1f8a34dce639a","c4371db326289ab6c77cf4ddec3a5c786636c62554b6a6898f04968aed063280","8f3b14b0c289eb57239f5c6153deb0b9acfb8fe7704f0fc6867112142b1cf3bc","8ab25f5d0b2c539df170db480f3347730a2ab18599713f0f26cfe3e47fda32a6","339fe7fb17d0622bbfe192864a8d2bccd5ed066f9424900f7e19161ed9380958","b0ae60db722e9cb3c844e745315a79e88201eabff71fc3a20aa01980d90ab9ca","2ea978c62dcfd6f565fa3933cae74cfa9530b8f84b14de46bcd0dab053bfb168","506bb5bcac6cdc5e954f8cf52290b9333c11e16745a05e4b3fb8bccbdedb287c","f9af723f3096d7e71a3c5133b9089186a9d5083535381a472ac1aa5b791f133d","669f88cae264744cf7fd7ce8e25788e05eeb1436cb6de6eaefe8b143fad346dd","d76d296a678df9d46e9c7382760cfc9b5014dd57ac29561d52a77f4a14f18a44","47eb449ce7736c1acaa983fac7e8497c652a78ea863b7239d33908b42c12f955","c34f617cdeebaf449de2e1b8f2091f0800a185c10d220ef6ca5c0777cd499421","f15daf78c39918761597d2db0e65f66eb9e1a1a5ebf2fba28f071176c4f34b8a","a68efac40e66179479009caa02793260da07eb8b82d889e0176193dac6dfa07f","fca53a1bc2b9a1060cde6df76adba54c1b657908fecfb0a71af2102b6a6119fb","6cac209aa36c73a69218d869f72d5d386dd74d7fbe634ed15a13c93739881160","99b5bf17c6ea5c7796e88b8211b27ce6d933b62c30196be6f928c728a6bd3bde","2acbb4be54aec6e5d80a5cc89b3410bc1ce2b0fa54a70d15f2b29788c1af468f","663771396a40a8dcb00d1cb0aa6523fe4fa97b36b4cb7c00e338fea7be18e1fd","d1ad5b430bdc88b3be9b8b6b9b48a14071a9a38236b618706ad872453d319770","703e205e0c547b1bbc1c656d0b6b3af03e39d513d42fe358040170780a5f24f2","d5f309f5d272fbb2271759fcd5abf8ae6c94b860e7ef7d63a7f7f47f7a996083","0a5a7572816bbf3f61183da57e3e77aad849afd15d3d9851b552c2c5b4a8bb81","77a29cc49904981c1cc1e4a53cc24945d6d595d8530d333fa6386b4964d1aaec","5968dbd8949b3c9da311c959148bcfb2e8b8524fa5bd7bdaae7ad953052b3d29","31b62707ae40f3379dc3230a1f9ee604343e885da843c8f95a4457f86e5bdc03","84f5ac31e039235ecfe90597cbb7bf43f37e384296070e546b3e173b5595cb07","9296c8322dbf11c7be254929512820268be57a42949cb87209d405be4664624e","6e7364fb06460ea8b180cec218869edfa115224ab66ac2bb162f1cc4793f3212","a65cf7178a3a9985bf3a0b91352e90dfce06e22bcf5168025198d4029be97c94","18199a5febef4ebdc1cb77fa0db26aacaa9c4fcaca49bbbf1e8255383be925f2","33e4b576d886ab613d81fe2c072a0ab06cfb175eeeb339628b319ff7cb855064",{"version":"8816d9f4313ef51b4cbe4a6b3be164603cd0fc8ea22dd85a61edef12340a4a5a","impliedFormat":99},{"version":"ac60b42b63f76a0d715f6a3c2ed72dced3bc50626c45cb4f5fc501fc7b64aabc","impliedFormat":99},{"version":"7f8100513274d35a3fc22a543d469134aa3c15f0c5601b7e6d28954f6a4a4e35","impliedFormat":99},{"version":"4ba483f583e1583499cba49664f0a5e4bd5f481f0b3d49f7d6a7dfbe985d2c93","impliedFormat":99},{"version":"8a97c63d66e416235d4df341518ced9196997c54064176ec51279fdf076f51ef","impliedFormat":99},{"version":"87375d127c4533d41c652b32dca388eb12a8ce8107c3655a4a791e19fb1ef234","impliedFormat":99},{"version":"ad5a9d47bd9596164e00bc129f9eb8074ef1863812a679f57fa4af4833ad87ad","impliedFormat":99},{"version":"850e32fe7a5e300eb330562410011ffbc8843fbaa02fbe7562ff9bd860903b87","impliedFormat":99},{"version":"d2e7a7267add63c88f835a60072160c119235d9bda2b193a1eed2671acd9b52c","impliedFormat":99},{"version":"81e859cc427588e7ad1884bc42e7c86e13e50bc894758ad290aee53e4c3a4089","impliedFormat":99},{"version":"80aecf89123febc567973281d217209da5f5e1d2d01428d0e5d4597555efbf50","impliedFormat":99},{"version":"ed239ff502ac351b080cbc57f7fbd03ffdd221afa8004d70e471d472214d88c4","impliedFormat":99},{"version":"da57c088e67db8a5e9d84824fa773999a1b9162b54b2475ba9a41e336506fb35","impliedFormat":99},{"version":"654bf243ceac675b96807da90603d771546288b18c49f7deca5eebdcac53fd35","impliedFormat":99},{"version":"777eca614b04743e3900ec4ada7b9cdf683b633241f1aaafcf1b734f6117b66e","impliedFormat":99},{"version":"321dd9d26923aa978e1a50bcc7f4f70052c4962aad225fbd8626dd940b20d1a8","impliedFormat":99},{"version":"9bdbc6ca3f69f40e7ae6b4dbd8669a94ed9489d6485aef1c0cf5d3566c07a6e3","impliedFormat":99},{"version":"c71d2b68b06f475bed80f30d6939c654d72e25eb0f17801be90702676b622b93","impliedFormat":99},{"version":"5980b79a2109d3adc0799cdd493ff4815c29addfb9c1b30498280930de2a3b13","impliedFormat":99},{"version":"da2c4843c3dee4f24ccaaa9f116d42f57cd290134ed238327a1b5f461983679f","impliedFormat":99},{"version":"dafb34c287e807a22b3e64ce21e2f3d5f413f1e30456e6d4b3a26f9c1505156e","impliedFormat":99},{"version":"7c0b65b06fb17f8dfb4f6a477c6b0bdcb5ee16f96cf8abfef4ff2e7afc80339f","impliedFormat":99},{"version":"4c56e902472f6a81f5b8f1f861e529f59c1e4cbfc7f00d06165cd09433a28a08","impliedFormat":99},{"version":"3623d4b0c7c623dca50cce79573f6a01c11d13a8fcb5b30c7a6391fbb4a7aa71","impliedFormat":99},{"version":"7431f5f0053eb9e44fb4d5d5cdf28dc260a7672bca2f9d3848158146db838f7d","impliedFormat":99},{"version":"b8ca0d1c7753de4341ef04e4b70e45f6edc94f5135c70150c730c5eed94fbe59","impliedFormat":99},{"version":"3c2ee3ef559588b93daa9757e6169d1bcb898b0853cc46cb7aa76364286f9ad4","impliedFormat":99},{"version":"7cc93ff349774f09694f3876f4ccaeb6110638b1d523637672c061a72dc9f769","impliedFormat":99},{"version":"df2c9708aec11e8c271acbdfdc5d246db35abcdff5917ab032da29a2cd3f7891","impliedFormat":99},"f4595171fb973fbd5724739d0e7891b896663c78ba3bee18f3045bd804b4dadc","e7635a29c367cbd6d16fe7be3b5bd619b98bf61a35b94ba7f5f92ef724544dae","0afaca3c458d636c90e8862d28c9cb29262e551a684355c8a2f8ece34f56a244","3ae52aac5cc3653b1cad88b3e3556f945fbfe777818064e874fb313e0acdbf47","25be5aef177ababf1cadf273680b379240939e0766197d5f1546492ffede7b36","4407de0aa5c066e54da24e4a0ed200aa070bb9a0d16f0e1e69dfd16a182bbc8b","96f0a60664f2468df34bb055c6b7731ac5f2402ba4f49457b316c80bd5710532","2250c65ac6ea4c1d7d2ccfb39bfe214b7b3962c71b824ea845f91b49c4074fa7","7ca98e50fcec52ce58073e9f32926d2b8e3479a2f12a23297cfbbe962c7d63b4","a6854c01510a7d72c59ad6e069febb84dbb35779f87c5753832d82cdd33b7fac","79e596599035811d1c15346f5fcb48f695a8b656f1525a6a4b9c157c21f2596f",{"version":"618c13508f5fedefa6a3ecf927d9a54f6b09bca43cdefa6f33a3812ad6421a9a","impliedFormat":99},{"version":"4152c3a8b60d36724dcde5353cbd71ed523326b09d3bbb95a92b2794d6e8690c","impliedFormat":99},{"version":"866a4060991136808d3c325420d03e47f69405cb364395c65018affc0948fa9c","impliedFormat":99},{"version":"3d330974280dab5661a9a1bd00699daf81df36ad766c4f37283582894ffb15de","impliedFormat":99},{"version":"24fbf0ebcda9005a4e2cd56e0410b5a280febe922c73fbd0de2b9804b92cbf1e","impliedFormat":99},{"version":"180a81451c9b74fc9d75a1ce4bb73865fefd0f3970289caa30f68a170beaf441","impliedFormat":99},{"version":"bf827e3329d86aeef4300d78f0ac31781c911f4c0e4f0147a6c27f32f7396efa","impliedFormat":99},{"version":"23034618b7909f122631a6c5419098fe5858cb1a1e9ba96255f62b0848d162f0","impliedFormat":99},{"version":"dd96ea29fbdc5a9f580dc1b388e91f971d69973a5997c25f06e5a25d1ff4ea0a","impliedFormat":99},{"version":"294526bc0c9c50518138b446a2a41156c9152fc680741af600718c1578903895","impliedFormat":99},{"version":"bb871e5403f70b415aa8502df7f3086dfd7755395ef591706465ae3af6ff2918","impliedFormat":99},{"version":"8a98f6435239b5f20c98864ea28941d6fb30f1b84c88c05174ee94e9a6a83c50","impliedFormat":99},{"version":"e19e82d9834303b10cc49945c9d1e2f5349004bd7c8c4a1f0ae9b69be682fbc5","impliedFormat":99},{"version":"bea9a1eeca967c79b1faef469bf540f40924447c754435325185c53ee4d4a16b","impliedFormat":99},{"version":"9f10481b11a6e7969c7e561c460d5688f616119386848e07592303e5f4912270","impliedFormat":99},{"version":"16e3c387b5803cd54e89e7d7875d5847648e6019265e00c44e741e16e9e13287","impliedFormat":99},{"version":"50ec636d2620ef974a87bba90177e8648dfc40fda15c355e5cbc88a628e79aa2","impliedFormat":99},{"version":"6b33ece078f109a5d87677995b2b4ceae227d9ab923095ad9f8d2d3b99a7538d","impliedFormat":99},{"version":"ec85504808d3594b6228050202b5d26607651ae41e1d07531cd86a0fcd6c7a9d","impliedFormat":99},{"version":"e0127fc5a1114a4d2c02ace6aa5fee5bdd083e0d757376b10cb5c55efa5c32e7","impliedFormat":99},{"version":"714ba2e2a025ce38caab9c3aee43de2c4283b4263bd6fcdb735fbd1161fa11c5","impliedFormat":99},{"version":"f55b3c57cfc83070533e0557eef7a545bdae56cc8b79cdb9a9624e21229803df","impliedFormat":99},{"version":"ec6a440570e9cc08b8ad9a87a503e4d7bb7e9597b22da4f8dfc5385906ec120a","impliedFormat":99},{"version":"0cfacd0c9299e92fcc4002f6ba0a72605b49da368666af4696b4abe21f608bb0","impliedFormat":99},{"version":"614d5a3113da6375ed51c5ab4ee07c4b66aa71892596733db4e25fafbe7d264c","impliedFormat":99},{"version":"94a3f5e0914e76cdef83f0b1fd94527d681b9e30569fb94d0676581aa9db504d","impliedFormat":99},"33e1eb46a42190650613b909f8df3d7015761e1ebf206d1fdecccd4d15629669","b7c873fa4742b80820f6d59b5bccfd4bdb3335633ad4beb253a9b2bfdb1abefb","dc11f0474b075665b87ca7906a81ee610c805e976df2bfa79c1f0fcdffb6b42f","d92e112b425e80ad79558d4dae8c3cd9922dc984ec8ccc7c3872f38319e45b3c","b2726f8f4904ded3d160e421dd3c4de762380b099dd4c29ce8cca94f917d03ad","988109fe8ba65994fcd3a5534b7a0b24888609410c60cc9dd3d5cb040b8d5ed3","f88f0f48e04ef99385af1d56952d66aa2cd890d89ba68080fcabd3a391282911","79b9d95eae85ae87f4484874ae8f0b70bc63fc68862ad9c9e0615019367d8aba","012f194f89d8a03b44802d4c77e1472b09cf7a9040f1c718485fb87902928b20","ad07cde600cd9c2635a41c5e703b5764663dc2e8a454c8289ea703cd312ba12a","6b3888eb89278e36d204647c227520dd3424badab6c0bb5ebf885c592af22098","5db3124e1c03d4f796f33e64780b29d1f8bb28bfa592abca6850c1c6269182af","78477f81449cf3998c698aace2268fa338729016a3d66eb569de80d0c80382f2","a10e5dad3f58a8fa7d257ab0ad239134a58e2e858431de8206993fbce1a45471",{"version":"acd2246fbe899d09985cbb80af1029f45caf30c8fd4ce55d0850921b89cfde5a","impliedFormat":99},{"version":"49083b59503ffd9a9444e89fe2c2bc52c614ffe280f51a1175c38d293047b335","impliedFormat":99},{"version":"3e941e70180caefcc1357a254f4c5468410f209bcd558d30768c6a18f047861a","impliedFormat":99},{"version":"cfc2795dfac72da5cec09b0dcc4c8952abd3f61f4eb9e55be86a16000c346d47","impliedFormat":99},{"version":"da20401da95c25b260465a4bf7268566e66919a2486e15811311544ff57aa4eb","impliedFormat":99},{"version":"f28f650852888d814f4cd1dbc16c1bdec56ba22f8761f62fb7329f7eaa8169f2","impliedFormat":99},"31a28c3c5f5e1f805c0d3b04204b653911cdc1a65fb351a8ab1862dbe82ad62b","ccfc5c42cd04448bf911d3d0cd38abb0c73e6f847257c4b86baae550f8e187be",{"version":"70a29119482d358ab4f28d28ee2dcd05d6cbf8e678068855d016e10a9256ec12","impliedFormat":1},{"version":"869ac759ae8f304536d609082732cb025a08dcc38237fe619caf3fcdd41dde6f","impliedFormat":1},{"version":"0ea900fe6565f9133e06bce92e3e9a4b5a69234e83d40b7df2e1752b8d2b5002","impliedFormat":1},{"version":"e5408f95ca9ac5997c0fea772d68b1bf390e16c2a8cad62858553409f2b12412","impliedFormat":1},{"version":"3c1332a48695617fc5c8a1aead8f09758c2e73018bd139882283fb5a5b8536a6","impliedFormat":1},{"version":"9260b03453970e98ce9b1ad851275acd9c7d213c26c7d86bae096e8e9db4e62b","impliedFormat":1},{"version":"083838d2f5fea0c28f02ce67087101f43bd6e8697c51fd48029261653095080c","impliedFormat":1},{"version":"969132719f0f5822e669f6da7bd58ea0eb47f7899c1db854f8f06379f753b365","impliedFormat":1},{"version":"94ca5d43ff6f9dc8b1812b0770b761392e6eac1948d99d2da443dc63c32b2ec1","impliedFormat":1},{"version":"2cbc88cf54c50e74ee5642c12217e6fd5415e1b35232d5666d53418bae210b3b","impliedFormat":1},{"version":"ccb226557417c606f8b1bba85d178f4bcea3f8ae67b0e86292709a634a1d389d","impliedFormat":1},{"version":"5ea98f44cc9de1fe05d037afe4813f3dcd3a8c5de43bdd7db24624a364fad8e6","impliedFormat":1},{"version":"5260a62a7d326565c7b42293ed427e4186b9d43d6f160f50e134a18385970d02","impliedFormat":1},{"version":"0b3fc2d2d41ad187962c43cb38117d0aee0d3d515c8a6750aaea467da76b42aa","impliedFormat":1},{"version":"ed219f328224100dad91505388453a8c24a97367d1bc13dcec82c72ab13012b7","impliedFormat":1},{"version":"6847b17c96eb44634daa112849db0c9ade344fe23e6ced190b7eeb862beca9f4","impliedFormat":1},{"version":"d479a5128f27f63b58d57a61e062bd68fa43b684271449a73a4d3e3666a599a7","impliedFormat":1},{"version":"6f308b141358ac799edc3e83e887441852205dc1348310d30b62c69438b93ca0","impliedFormat":1},{"version":"b2e451d7958fb4e559df8470e78cbabd17bcebdf694c3ac05440b00ae685aadb","impliedFormat":1},"188969a52575f6f83cb38489030ab4a2acacdfef5ff9845d5d5eb8646e9e40b7","38f53692361655d31baa343386eecc58f19d19c4cf2d146a46b7be01a158bcf0","ef092c3d0da6b43ca5543ae59d2bfc6e8695d5108fa3554aad60cc4559338eab","fa2d3646ff8eba431bab714f44696be7d3f8da3285ba2fd9215ef8c910ac71a6","4f53696e147fead8a303262a106b4e8aa81b6f532ad1f1855578343e9ff0d092","1c9cb31f9eb10746c3e5fe127e62a2e3f5e402c65cb6aee4041ee490e95bd110",{"version":"029a786b9edd1cfdabab3c8eb5d7f10782996e47436b75f07a202e03e41cc8c1","impliedFormat":99},{"version":"0f3ab64d7d7c82028025a8b1a9a0af7900f5746f4abd861882ec57d93dad394e","impliedFormat":99},{"version":"980e589df7fa1e5c5faa5e98bd716e16f4cd544d50f8fa1837f67e80bcb29e69","impliedFormat":99},{"version":"443278cb0834bee339cbdee9eb8303b5bfcdfd02d9b32ac1a237b6c7df437eaf","impliedFormat":99},{"version":"213cc2bbed6c63f88c837b322be41aa398d8b2e5f9cbace643070bece31c624f","impliedFormat":99},{"version":"f3745a58f2bd7ed2c210e882e95b67d0707f97b9ed7b2431f68e5cccec0e20ba","impliedFormat":99},{"version":"2435893282189602e1c3c5ae3f08a0129508c4ab3db3895c436525bd238ef2b6","impliedFormat":99},{"version":"9ff7cb447d63e95594b2732f048834e458d0332014b39117123a6d8dda83e246","impliedFormat":99},{"version":"eb7375e005b02971567356809faeeecf14becb300aa9ca483fcd6c9f8aa80d8c","impliedFormat":99},{"version":"e7c738913fab4ba4b00fcf1d1eb1ddf8989b64355da34250407340f4894a2384","impliedFormat":99},{"version":"c871756fb890365824f416826bb7bb363b06c4aa48f1a99263c4fb75ab690b2d","impliedFormat":99},{"version":"c393916098a0b9efbb4ff8ca4ec3eea4af49b9bfe29dfa95ee114e31027281b0","impliedFormat":99},{"version":"431eef47c55a88198c1cc62ea7c9c7537c3219c3fd652c554d3d5bb7a63658a1","impliedFormat":99},{"version":"5af472ea6bfd88682ec2b0861190274781bc3663cd9def4e6ea19449c4027822","impliedFormat":99},{"version":"16b311651dbd580d429938c993c41e1c610ef0b1e83c38229f3ad4d81a35cd39","impliedFormat":99},{"version":"cf2d902695f41deaf5a8f2438fd2ff0c2d56c3a3c0b9ea238881810952ee688f","impliedFormat":99},{"version":"c39c1eb3c9ee9f208c595683a383ffee7b424848b6d662e79c08b4e6e74c79d6","impliedFormat":99},{"version":"064733c01462ae496e7b62ffce6a3cb21facb351c0375b151ed66da38de60d69","impliedFormat":99},{"version":"7740c53681ca94000f5cda0c7e6ed6e59ac8157ed36ffdf4da33ec3b5dcc7252","impliedFormat":99},{"version":"a8f20ac0e03797b0d295255ea127050369890396af453a68646b2e18f0e5dd8a","impliedFormat":99},{"version":"4f1d88b42e347f1868a0bd8db7563bc54017c5112a6edb01d5617c342995fdc7","impliedFormat":99},{"version":"f1add31820a8e538ced1fa56092ad68adb998e0e48cecbf4e69b0638391fe5c5","impliedFormat":99},{"version":"a11c0481bbb4d82204954b2d83865b29878713af71d71e72bfb28e5c2138bcaa","impliedFormat":99},{"version":"641d8f8dfc4bfe0dde269a852b6e5711a64dc19faa7c4780f06f3614fc94280a","impliedFormat":99},{"version":"46430bab437cb8c642d528c3d620d483f6b8fa573db004cdcb174ed092170cb9","impliedFormat":99},{"version":"75c4e0aa4e6dd5efaeb4471455cd730c1c21baacdc60bb6d13ae87fd40a55625","impliedFormat":99},{"version":"3d7e49aaf4991f94fe1971cbb39959281274c488d209eac04b9a719bbcb13184","impliedFormat":99},{"version":"8249670da9c5c37d7cdd03576170536f4c3c9cdcfe8cf21df0bbb07a45e5f748","impliedFormat":99},{"version":"d9b96d27372967e8f53b3f7b7cb6e875b8d128080abc4fa204a13f0d3f2b6506","impliedFormat":99},{"version":"d41b65a0fb48a14a7b52eaa45d9b65988af076e63704cba1dd1f72e961e0e2f5","impliedFormat":99},{"version":"92b40a9393f937e4bd7eed4b0161ad03296607bfdf26b0bb323cde18c51e0687","impliedFormat":99},{"version":"fdcbabde604d3123e01b2dc359fe3a0d64e6c1563b8c6a27ec0d626f528f7670","impliedFormat":99},{"version":"2ad0442c75921db414cc44cbb07b3225796096ad660da7aa26a36ec54ac370f9","impliedFormat":99},{"version":"59217222f06b2b24784160c8e2eaf0de94906912505101576a1dd744fd90cdcf","impliedFormat":99},{"version":"c60e185eaab239d465baec8e4a8c2f76fdff641431cb57d12c4e233d61be5474","impliedFormat":99},{"version":"d8b6dc94bc2761afdcff7a1e29359a383472bd8af2ce03485a2792026f15f458","impliedFormat":99},{"version":"1955442a305cd1622782ce89c898be431c66c39c36a253abb0543052f4917613","impliedFormat":99},{"version":"2251d1a89b3d8aac866bc79839c28681886d289d117404276ecf1d4fd5f5c19c","impliedFormat":99},{"version":"2a55511100028e4af650f52bdd7826fb187b9eee380b7ce9249a69f0713503fa","impliedFormat":99},{"version":"8bdf3edd4e55c0167be8af39a89763628fba6d8670777f720957f080c2ce9a50","impliedFormat":99},{"version":"992442834491efb053df22fb8148f8fd1303c198c97f5b50ebf1dd0f63ae5e8b","impliedFormat":99},{"version":"092274870bfdbb373ea502c23b8205d30e622fd10a7e5370d752a6d8de761110","impliedFormat":99},{"version":"e86a45fac2071035f07ade063ad32754edd13f45f3f3b143387ec01b8eb8aec9","impliedFormat":99},{"version":"9d6fcf45c88c41f81ac9a39df453089cad491812291c260f19d85df9fd6ad130","impliedFormat":99},{"version":"819ff6185962272453fe11af8d9f3da27f5d3761b21e196272db43ff54e4caa4","impliedFormat":99},{"version":"eabd2ac406cae917ac8e00029972e27b29329e153c4146b3779f4863bd980298","impliedFormat":99},"051ff373400756fe85a762f6a0ae8a32b426d25aff6fc923081397c807be8221","04430408b9685cdf9c82c0507e1e52529a933f6eb4756805a571c1310d23a534",{"version":"b6dabe48241fd2ac37e959aa13b77e7e34ca2f0008764a795e647bc2b05c39fd","impliedFormat":99},{"version":"cedbe9237d7fd9bf04a39837057c73f8645cf3ad70ff81666175cdc5862b6e2d","impliedFormat":99},"34221de1d4a1b0a13cc6c471380b6d9dc8bbc72d9c2414384b8527a1c7473fe5","2189f8ec8427b7fc30fb1a1f3680c42c992df4130444ccc2e7e10d85140a3f03","80a5a2d31a4f59a3c24dff8fa65638e10b127f10d523da6d76e8b3c22d35d48c","0971fb89ec22b9991799dd6acff5efe76009a1e0f7fa017988c1df9d1b4c5739","dfb6d88c7f93f7d11f7598e3f497155a6b91f7fe52a298246ac8a30f19f28b33","c6e1736e99dee6f73d587491d556a1594a2c98fc31753a94948ad5baeeff3c41","bb14fd7973a702a42ce858c56e8f12ff178557012804a65038ef36662c914afa","65f5a2e29d90c1e8c97b9e358cb6de428964437eac8ef1bc89f0c719d8c2a2e6","e1365c6c98dee20870d2b4b4a0f2d0f679af7e00b1a5e2f9aff794838943063e","38130c8597121955307dcb5af5b631fec3f98714fb92b2c0439f532fa5da373d",{"version":"d58289beaadf0380170b0063569e1a01c60ee6b8f2dc3cccfff4fd965154d555","impliedFormat":1},{"version":"f313731860257325f13351575f381fef333d4dfe30daf5a2e72f894208feea08","impliedFormat":1},{"version":"951b37f7d86f6012f09e6b35f1de57c69d75f16908cb0adaa56b93675ea0b853","impliedFormat":1},{"version":"a45efe8e9134ef64a5e3825944bc16fffaf130b82943844523d7a7f7c1fd91b2","impliedFormat":1},{"version":"969aa6509a994f4f3b09b99d5d29484d8d52a2522e133ef9b4e54af9a3e9feaf","impliedFormat":1},{"version":"f1ceb4cbff7fc122b13f8a43e4d60e279a174c93420b2d2f76a6c8ce87934d7f","impliedFormat":1},{"version":"dcafd874e49d42fc215dcb4ef1e06511363c1f31979951081f3cd1908a05a636","impliedFormat":1},{"version":"b2be45e9e0238c849783783dc27bf79f3b1a65332424a65cc1118f207b4792c9","impliedFormat":1},{"version":"6002c44a8e8edbe4c79ce856c7bac3f8e69a2a45dc5bd6b229ca4ab323b924b3","impliedFormat":1},{"version":"b4d505a77e0829de5e5e23eaefb3d7989e0dbdfdb02ea69159df9f40017fb958","impliedFormat":1},{"version":"b8396e9024d554b611cbe31a024b176ba7116063d19354b5a02dccd8f0118989","impliedFormat":1},{"version":"f2242adef346a64818a1af914146f6f6046f16505e8a228c3bdb70185d4fdf4c","impliedFormat":1},{"version":"2f7508d8eeadcfde20b41ec13726c9ad26f04bbf830434e289c6010d5be28455","impliedFormat":1},{"version":"8b155c4757d197969553de3762c8d23d5866710301de41e1b66b97c9ed867003","impliedFormat":1},{"version":"9798f0d3693043da9dda9146b5e8622cd4476270e7aed8f3cb346b9b40a52103","impliedFormat":1},{"version":"fc7e8927b6fa6c81d68783afb314d01592c559e86bd36df334c37f40d0136acd","impliedFormat":1},{"version":"73f72caffdd55f189b5bf4e6b5ca273b4e26269d9aac859b9d30a5f799c095ad","impliedFormat":1},{"version":"d998e3e185cdf59dfc84043c41a42c02daaf3b7b21bee2db2d1f620a8e134f4c","impliedFormat":1},{"version":"06aa8858883e08f5136eb182d2f285ea615aeb464007f83c7a31ee1f8d9932b1","impliedFormat":1},{"version":"62d429aba0bbe459a04965d10c7637b74b319149f17874920a5ffb9fe3ba14d8","impliedFormat":1},{"version":"6b5acb2819b71f30dc2ba5929d3918e0a658ffec00095880b3de7e934122a75b","impliedFormat":1},{"version":"2b603cae1c11f97a113adac3f8ba8d60ee842c740c8139d41ab9d6ce202449a5","impliedFormat":1},"188d281890e3ad960703264476b09e636c09ab4e1d643a6e76906c328063b4ef","945d5b71ca2279f4ae4db3cb71ce0e2b118b2fe8390f12fc2bada7cfb92c6da6","4ce240e1683f94d8fba0d90a1dbc254ab13b1b3ac947a685abdc41b024fc98d2","18e1cf8cdf3f0da58ec0dd7730d2bec1a0b39666580ab6b0f4d74fa3cf295496","7d194cea8f901a4bc6a018e2ffa6a741399b0b577938bee1c2cccf321ee89d28","806a7d79694efb43da6f712ebcba3760f97902ae87e03813d8310f766f32084c",{"version":"029a786b9edd1cfdabab3c8eb5d7f10782996e47436b75f07a202e03e41cc8c1","impliedFormat":99},{"version":"fe27faad99a5cadbc311b6249c496142979d89593f36044999b4f74aa19af129","impliedFormat":99},{"version":"14df8f3b1fd5b5cdc11bea5eadee07b107719aefd705a97c699465a31488f11a","impliedFormat":99},{"version":"af2b10bef3a184fa0d328174c16d7cf57cca0c3b2a90f5fc747f3fd1da778242","impliedFormat":99},{"version":"54da059a66903d893b19aba580f6867f1fecb0eb21bfd4247772efe1aa098a3a","impliedFormat":99},{"version":"cb7d65d835ddbbb3ebd28af23f1cbe63cbf0d59d3db2bcdcf837e5cb35fd4e37","impliedFormat":99},{"version":"6d114aaee9658ebb6fd05f921d75f7014e208ac61f32aecd1b0f233a6b022901","impliedFormat":99},{"version":"aebc9aea7d7c9be6dea7442ba0c28c3092937d6e0f8cab421a2452796e795d1a","impliedFormat":99},{"version":"456adef97f2428e2efbe0d4a9c18335320aef02f9f58e47b63bc6d12b92ca1d8","impliedFormat":99},{"version":"d9170c17ff8a4b71d9b5c7ce7a72db8f6176815b5cdd859ac24ebe2f383f43b5","impliedFormat":99},{"version":"12b8bfe840418e02e6435d814835449968c0b7d2748d07422ff3ef7d1735acaa","impliedFormat":99},{"version":"67b4387a7748482993366724df4d41b017aca3f546b3144343132d8bc94e58cf","impliedFormat":99},{"version":"501946dc194072eed45626e8277d7b3eabf3418235d45687c11476d358947dfb","impliedFormat":99},{"version":"a192012cb07166ba2e6a4aceb2016c8c916d85201a7cdf765f21307dd315cf66","impliedFormat":99},{"version":"4c1f82aa595ccf1ce285b2219b5c472cee8f4c9d21b2fe53d9be65654d12a893","impliedFormat":99},{"version":"9a851864e5702fa1f59d49855bbe667d77e61b0e1138675acd9933f57f9be311","impliedFormat":99},{"version":"6bd987ccf12886137d96b81e48f65a7a6fa940085753c4e212c91f51555f13e5","impliedFormat":1},{"version":"6d09838b65c3c780513878793fc394ae29b8595d9e4729246d14ce69abc71140","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"18eabf10649320878e8725e19ae58f81f44bbbe657099cad5b409850ba3dded9","impliedFormat":99},{"version":"00396c9acf2fbca72816a96ed121c623cdbfe3d55c6f965ea885317c03817336","impliedFormat":99},{"version":"00396c9acf2fbca72816a96ed121c623cdbfe3d55c6f965ea885317c03817336","impliedFormat":99},{"version":"6272df11367d44128113bdf90e9f497ccd315b6c640c271355bdc0a02a01c3ef","impliedFormat":99},"e92d2a06023c6a72af43203de766bb21b3dba9c79c05ed1aba7edc8b5a41e4d6","d13e561a3ad5d24553e6ab572ccde605ae93aa8b0ebc50974cc6f66306acaafa","6ec8f170c35850aec0046610d374df25f0a2cc045fd1812bc0bae2ce485d3971",{"version":"3bb4609fd9f83b6e656c215fd345a7e70620861400536d8d5fe7b585d22dfec2","impliedFormat":99},{"version":"004c8297d856b7a70c15853a6a06cf5fe84c07cc1e1a9654ed01eaee38b0d292","impliedFormat":99},"25eede0e2c5ef013ce5fba1ea251039122fe5085e233eb5b6d6dd8c9001f3675","9c6a1706a268e595422bb4caaa0b48bfa622bbd53adf9d09baef345f501ef461",{"version":"12baec7a4e2c3acddd09ab665e0ae262395044396e41ecde616fefdd33dc75ff","impliedFormat":99},{"version":"100985057cdd198e32b471b9c92a39080e5e50720b2cb290d04ddf40fbe71c84","impliedFormat":99},{"version":"333d9b9067c0213cd7b275d1d78bab0577ba31ef7a63306ab65a74e83a546a65","impliedFormat":99},{"version":"85566a0b81339b43e063f5cd8cc49a9b9bc177bc5ad3ffd5e4874700040ec11e","impliedFormat":99},{"version":"c2688779f6804c3bc6dfa33d05a810464c684a74f92aee6b0f0d4bcd7dbeed6d","impliedFormat":99},{"version":"16331f489efb6af7d06037074020644d9175f70a7a6466d926f63e74af5a77d8","impliedFormat":99},{"version":"2b2b8b64b39f152439ecb9f04b3d6c1d88d35c75bf14a4eb98f1cc791f092366","impliedFormat":99},{"version":"395548b309c8fe9ffadd8b1055898fffa29bd28ea1f8079f33e48a65601589e2","impliedFormat":99},{"version":"e38871affeac7cf4dd4cc3a55714ff38d55f137c30788d30e454a6e3058f36bc","impliedFormat":99},{"version":"783a0f8fb88d659272c1ac541719e32235881815705b44fb63b6af579885ea75","impliedFormat":99},{"version":"6a60957e322c4c060ddf3073130cbcbcbc5e639e21cd2279df43184bfa8cb9a3","impliedFormat":99},{"version":"5b353617eeb8a37c7a9497ebaeacc027bd7487eec10ffbebca41dcdc2634af70","impliedFormat":99},{"version":"cedbd20d98f3fd7c1fa00742292ab5b13c3fec266ae41b90c47b716ef06cd983","impliedFormat":99},{"version":"9713bcf79cd728919262a2a543484a5f9bd24a15cfec1cee096d9d17a9f5524d","impliedFormat":99},{"version":"35fb129972553f809a7045f3cb952c2598299548018a23238304c020cb16945f","impliedFormat":99},{"version":"855b0379a6b6e96eda055cff16da442b4a7a4548101848b9ae48bce22879569e","impliedFormat":99},{"version":"ea2ac8d236dddbce748dbaffcaa1bfcadae6fbcae1fd0a67e17d5e35d5e38dfc","impliedFormat":99},{"version":"a7750935d6a1cbd259861b5acf1c912f9d3b10efd8602f61fc858f04f261595d","impliedFormat":99},{"version":"e0aa3276d014f3c798dd3101af8c8545b56d79665a7a982b4cf6fe28551a3b56","impliedFormat":99},{"version":"ea744987345eb5ae036495b0185e95eeb7d2d999b0ef80265f79434e83863e9e","impliedFormat":99},{"version":"c3bc54ba21655aaf1db5bb97c42f56bbfe5a3a3c40e3884ef3ba2cdaa9f34c1f","impliedFormat":99},{"version":"705917c38d2e92347b5e57c1c6007da46f1005874ef2257cc8dfff59cba4710f","impliedFormat":99},{"version":"40925b4938b527a6267b1fe56a2e97cc52ea9d73eec90ea8e05df773a182101e","impliedFormat":99},{"version":"2930156137f4885c3ad168804c557edfc9bb88ae0e1df487f4adcdc771286ad7","impliedFormat":99},{"version":"b63e990c632eeee9375c2c43bbd5cdcb23418b79edcb57afa53edf4dd597b33c","impliedFormat":99},{"version":"721dcf072e75b71b5ab7a0bbbd6578f908c36a0bfaefa1454d3e43938bde67a5","impliedFormat":99},{"version":"5704f5ee2642dd0b810bb07ce6e4e51319ed4d6db78747ff54675e72c3fede06","impliedFormat":99},{"version":"da2be38a98356fdd540580a68338df2d2450ec071b1cb5bdbfe8e52075ddde9e","impliedFormat":99},{"version":"3af0bb87094d80e20b0d451626eef1e2da701891c41998ac0a6a6c91cff86f74","impliedFormat":99},{"version":"30a211e9de0dd587f8c690f9ed9378c15c79bcbe762dd85a61c548e5058c3fd6","impliedFormat":99},{"version":"a7cda498cd929d2f958ce49abbaef1abf999ec40884a04cd28ff34317d844e54","impliedFormat":99},{"version":"e48b510f40f29a89d9dbe19a9fca96d7f02b721aec6754fd5c242f9893d06508","impliedFormat":99},{"version":"30d88e2e7c4ca1cdfeb37cf05a2d7a351c68b14ac472e6238401ecb7b75686ea","impliedFormat":99},{"version":"03b34718c02b6225c2f7d7c374cb701ab04461a5cfa66d150531c9f31e39da49","impliedFormat":99},{"version":"7dfe7da785eafad3e3d0cc66545e97f1acf934ebe5b2ec8f4a34341a9ca76ed4","impliedFormat":99},{"version":"8c7829855345152b7b3c196e82147153115d5b568ff97be0e40d161e8d9d2f51","impliedFormat":99},{"version":"f30a36ff98b099ea8c635146dfdd1d810bc14ec303acb653ca938445047b0e41","impliedFormat":99},{"version":"07fa63aca536ca8d8d8c6a56eabcf77f746609921fe23d780a69e2c0a2a65701","impliedFormat":99},{"version":"b9ba8aa67fb572718564ab01bac8683f5f444cfab277fe1cfa9de7a38a78faf9","impliedFormat":99},{"version":"5eac3facc9f59e960c00f41502b34a908776cfba6d7e1a5a4ead5030682b7434","impliedFormat":99},{"version":"d44f8de16b9c6ef4ebd88d4162bc24942bee9975f88162a8962bb572e62dc5df","impliedFormat":99},{"version":"0251c18e8c863bf5ef510043644299aceab6debf3d87aab8c8cfded5aef7d6af","impliedFormat":99},{"version":"292f7dc6b4be74f148f5e5b57b9e8a7f515d7d4f6183d3f9162e127e50959ba9","impliedFormat":99},{"version":"c1608d867d6ddda5c0f4736cf4959e2b2c6bcda660c4c72f7feb36b3998df2bb","impliedFormat":99},{"version":"02d77b0d27ecb78e28d3a376c6cdce05fabcf58f2fd01c102f031d8e375191da","impliedFormat":99},{"version":"daef84b3b89e60054fab1abaafe38eda673f88abdedc3920015d61f1cc5358b8","impliedFormat":99},{"version":"f3318054dc392b6661785263095ed8f1555f0d8f3ce534c8c2de8895b4ec7bd3","impliedFormat":99},{"version":"6c3aa7e0c4eb4d8d7fc24df037980369e70a28f9237cae77511b4cfc6a1b74d0","impliedFormat":99},{"version":"ecc7e0840690cc4b9a2587a4f550b292c35d36150c6c108803bbdfc3bead5b91","impliedFormat":99},{"version":"e11a23b343084cdec24d718fc64369dc8b6dece71314b41d4b5938f2a568834d","impliedFormat":99},{"version":"ce678766176812e8eda3f4925304d4159d806f50fa8a93a72da56e95dae8bbc8","impliedFormat":99},{"version":"bb21d35a36dc1db80a2cf29383bb7304919708cde205bbe246ec47176336e255","impliedFormat":99},{"version":"df657f732e32af7c7550da93e66dfdfa142fc1282b4a392ec78fc9aefbd6fdd0","impliedFormat":99},{"version":"b20ef0766a8a578e5c542aafaa8c53b7e2b0e32a5522f9cf18bc021a81d54dd7","impliedFormat":99},{"version":"9ea0cd8a367cab9b1c632740d1bd998f8c4dbbbda4505f47bebd38a46afbaaa6","impliedFormat":99},{"version":"97980bb49a7e4b15df6f988f914070c831a39426cd9a29a6f7a9af82f397b28c","impliedFormat":99},{"version":"3ddf05b5259b9a0e2b1da1559585655202670e1f78396b4d4efccea0195a41b4","impliedFormat":99},{"version":"1e99c59aadb1af6d090976ade8280ea37208e8f064f79e9a18231fe5b7232890","impliedFormat":99},{"version":"c7ee77eec320d6312899cd8c16484c82b98385e175c57ff00d49cc5a2c291e0d","impliedFormat":99},{"version":"b38d9a4927465a8a5d1ae84e00d323bedfc7f5e77f4bc360078c6f283b964acb","impliedFormat":99},{"version":"27d6b338ff280dc86ff167217c29d7e71b52bd25a3c3b8eb1f5a56c887571d00","impliedFormat":99},{"version":"da60046c4cc6b018869ea8fc71a7b7bf5591d9f5d90ee52c4a614ecc69ff3433","impliedFormat":99},{"version":"8bee1fe0b3dd1b324f08189d81e55f9952007ce2304df07a15568b821b7e524f","impliedFormat":99},{"version":"a3dd2d53781729214a67f4b91d9a65d5310c1bbdcd0595789a5152a493cded91","impliedFormat":99},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true,"impliedFormat":1},{"version":"b98fc10e15fd8d40a21933b72e51ed41697fd9326df18861f55fe41128904b8d","impliedFormat":1},{"version":"7c1fb00059ee904daa62fc29911a0ac0eb2f98274fe23fbe8382b763b33f56ff","impliedFormat":99},{"version":"e0c868a08451c879984ccf4d4e3c1240b3be15af8988d230214977a3a3dad4ce","impliedFormat":1},{"version":"469532350a366536390c6eb3bde6839ec5c81fe1227a6b7b6a70202954d70c40","impliedFormat":1},{"version":"17c9f569be89b4c3c17dc17a9fb7909b6bab34f73da5a9a02d160f502624e2e8","impliedFormat":1},{"version":"003df7b9a77eaeb7a524b795caeeb0576e624e78dea5e362b053cb96ae89132a","impliedFormat":1},{"version":"7ba17571f91993b87c12b5e4ecafe66b1a1e2467ac26fcb5b8cee900f6cf8ff4","impliedFormat":1},{"version":"6fc1a4f64372593767a9b7b774e9b3b92bf04e8785c3f9ea98973aa9f4bbe490","impliedFormat":1},{"version":"67aa3af611da1697ac66e65e2efa0a5cb602914257cdbf1abe66e47c17bb835e","impliedFormat":1},{"version":"8b219399c6a743b7c526d4267800bd7c84cf8e27f51884c86ad032d662218a9d","impliedFormat":1},{"version":"bad6d83a581dbd97677b96ee3270a5e7d91b692d220b87aab53d63649e47b9ad","impliedFormat":1},{"version":"7f15c8d21ca2c062f4760ff3408e1e0ec235bad2ca4e2842d1da7fc76bb0b12f","impliedFormat":1},{"version":"54e79224429e911b5d6aeb3cf9097ec9fd0f140d5a1461bbdece3066b17c232c","impliedFormat":1},{"version":"e1b666b145865bc8d0d843134b21cf589c13beba05d333c7568e7c30309d933a","impliedFormat":1},{"version":"ff09b6fbdcf74d8af4e131b8866925c5e18d225540b9b19ce9485ca93e574d84","impliedFormat":1},{"version":"c836b5d8d84d990419548574fc037c923284df05803b098fe5ddaa49f88b898a","impliedFormat":1},{"version":"3a2b8ed9d6b687ab3e1eac3350c40b1624632f9e837afe8a4b5da295acf491cb","impliedFormat":1},{"version":"189266dd5f90a981910c70d7dfa05e2bca901a4f8a2680d7030c3abbfb5b1e23","impliedFormat":1},{"version":"5ec8dcf94c99d8f1ed7bb042cdfa4ef6a9810ca2f61d959be33bcaf3f309debe","impliedFormat":1},{"version":"a80e02af710bdac31f2d8308890ac4de4b6a221aafcbce808123bfc2903c5dc2","impliedFormat":1},{"version":"d5895252efa27a50f134a9b580aa61f7def5ab73d0a8071f9b5bf9a317c01c2d","impliedFormat":1},{"version":"f94362be0203351e67499c41bd1f3c91f4dabf6872e5c880f269d5ad7ffda603","impliedFormat":1},{"version":"0f345151cece7be8d10df068b58983ea8bcbfead1b216f0734037a6c63d8af87","impliedFormat":1},{"version":"37fd7bde9c88aa142756d15aeba872498f45ad149e0d1e56f3bccc1af405c520","impliedFormat":1},{"version":"2a920fd01157f819cf0213edfb801c3fb970549228c316ce0a4b1885020bad35","impliedFormat":1},{"version":"56208c500dcb5f42be7e18e8cb578f257a1a89b94b3280c506818fed06391805","impliedFormat":1},{"version":"1ba55e9efbea1dcf7a6563969ff406de1a9a865cbbdaea2714f090fff163e2b5","impliedFormat":1},{"version":"a67774ceb500c681e1129b50a631fa210872bd4438fae55e5e8698bac7036b19","impliedFormat":1},{"version":"75bc851da666e3e8ddfe0056f56ae55e4bd52e42590e35cbe55d89752a991006","affectsGlobalScope":true,"impliedFormat":1},{"version":"dd8936160e41420264a9d5fade0ff95cc92cab56032a84c74a46b4c38e43121e","impliedFormat":1},{"version":"1f366bde16e0513fa7b64f87f86689c4d36efd85afce7eb24753e9c99b91c319","impliedFormat":1},{"version":"421c3f008f6ef4a5db2194d58a7b960ef6f33e94b033415649cd557be09ef619","impliedFormat":1},{"version":"57568ff84b8ba1a4f8c817141644b49252cc39ec7b899e4bfba0ec0557c910a0","impliedFormat":1},{"version":"e6f10f9a770dedf552ca0946eef3a3386b9bfb41509233a30fc8ca47c49db71c","impliedFormat":1},{"version":"e597cb9b81ca9ec3bee227edb944e132c1b64a9bdb3ec73faa893518af67b829","impliedFormat":99},{"version":"c72f65344e6ed01a5923d67d8123b06867b650869a24c2c38bc9f900a0eeff61","impliedFormat":99},{"version":"5aa8b50a334af93ff1bb3da686178871a7e27e03791d07fd6107980076ddb90e","impliedFormat":99},{"version":"ccb5f2cdd46a60b0aa3b43aeeac9f0d499640f589806f2486f35ff8a9565784b","impliedFormat":99},{"version":"25c1448dafc60e4ee55022d86c9deb322b669b93743a01f415c7f3974e5eb265","impliedFormat":99},{"version":"43ac78f8e0c5defecc2e501f77d1e61d078c79975af401702c16b9828ab12ca8","impliedFormat":99},{"version":"d0b62afe70d289fb9cd9b67de7bcbbae6ed41d6c78d64994154d8045255324fb","impliedFormat":99},{"version":"747401794dd42d3c65f13793c59deea823fb3cba11f2994f0a90c36a64f1da29","impliedFormat":99},{"version":"dcab5635cd67fbabb85fff25d7cebbe7f5ab4aaecba0d076376a467a628a892d","impliedFormat":99},{"version":"c8698ce13a61d68036ac8eb97141c168b619d80f3c1a5c6c435fe5b7700a7ece","impliedFormat":99},{"version":"7b90746131607190763112f9edb5f3319b6b2a695c2fa7a8d0227d9486e934c7","impliedFormat":99},{"version":"269b06e0b7605316080b5e34602dee2f228400076950bd58c56ffad1300a1ff1","impliedFormat":99},{"version":"cc89688d19046618e7f88ea7c25ff04560d939902bf49e60bd38fb4662e38b5b","impliedFormat":99},{"version":"73e7fad963b6273a64a9db125286890871f8cf11c8e8a0c6ace94f2fa476c260","impliedFormat":99},{"version":"8496476b1f719d9f197069fe18932133870a73e3aacf7e234c460e886e33a04d","impliedFormat":99},{"version":"3cb5ccb27576538fb71adba1fa647da73fae5d80c6cf6a76e1a229a0a8580ede","impliedFormat":99},{"version":"e66490a581bea6aeaa5779a10f3b59e2d021a46c1920713ae063baaba89e9a57","impliedFormat":99},{"version":"aea830b89cbed15feb1a4f82e944a18e4de8cecc8e1fbfaf480946265714e94e","impliedFormat":99},{"version":"1600536cd61f84efed3bb5e803df52c3fc13b3e1727d3230738476bcb179f176","impliedFormat":99},{"version":"b350b567766483689603b5df1b91ccaab40bb0b1089835265c21e1c290370e7e","impliedFormat":99},{"version":"d5a3e982d9d5610f7711be40d0c5da0f06bbb6bd50c154012ac1e6ce534561da","impliedFormat":99},{"version":"ddbe1301fdf5670f0319b7fb1d2567dc08da0343cb16bf95dc63108922c781dc","impliedFormat":99},{"version":"ff5321e692b2310e1eb714e2bc787d30c45f7b47b96665549953ccfd5b0b6d55","impliedFormat":99},{"version":"8a0e4db16deae4e4d8c91ee6e5027b85899b6431ace9f2d5cec7d590170d83cd","impliedFormat":99},{"version":"c6d6182d16bf45a4875bf8e64a755eb3997faeb1dfc7ef6c5ead3096f4922cb6","impliedFormat":99},{"version":"d5585e9bae6909f69918ea370d6003887ea379663001afccca14c0f1f9e3243f","impliedFormat":99},{"version":"2103118e29cf7d25535bde1bae30667a27891aae1e6898df5f42fd84775ae852","impliedFormat":99},{"version":"58c28d9cb640cac0b9a3e46449e134b137ec132c315f8cb8041a1132202c6ff1","impliedFormat":99},{"version":"d7efb2609ff11f5b746238d42a621afcfb489a9f26ac31da9dff1ab3c55fc8f3","impliedFormat":99},{"version":"556b4615c5bf4e83a73cbf5b8670cb9b8fd46ee2439e2da75e869f29e79c4145","impliedFormat":99},{"version":"51fc38fbb3e2793ec77ef8ffa886530b1fed9118df02943679f1c4a7479f565d","impliedFormat":99},{"version":"03a4f9132fe1ffa58f1889e3a2f8ae047dcb6d0a1a52aa2454de84edc705e918","impliedFormat":99},{"version":"437dd98ff7257140b495b4ff5911da0363a26f2d59df1042d6849ecb42c1ee84","impliedFormat":99},{"version":"8345eadc4cceddc707e9e386c4ad19df40ed6a1e47f07e3f44d8ecf4fe06d37f","impliedFormat":99},{"version":"2df69f11080a8916d3d570f75ddf5c51e701fc408fd1f07629c2f9a20f37f1ea","impliedFormat":99},{"version":"2c19fb4e886b618b989d1f28d4ee4bee16296f0521d800b93fd20e7c013344fe","impliedFormat":99},{"version":"61085fe7d6889b5fc65c30c49506a240f5fbb1d51024f4b79eef12254e374e76","impliedFormat":99},{"version":"aad42bbf26fe21915c6a0f90ef5c8f1e9972771a22f0ea0e0f3658e696d01717","impliedFormat":99},{"version":"7a504df16e0b4b65f4c1f20f584df45bc75301e8e35c8a800bcdec83fc59e340","impliedFormat":99},{"version":"37077b8bf4928dcc3effd21898b9b54fa7b4b55ff40d2e0df844c11aed58197b","impliedFormat":99},{"version":"a508144cd34322c6ad98f75b909ba18fa764db86c32e7098f6a786a5dcca7e03","impliedFormat":99},{"version":"021bf96e46520559d2d9cc3d6d12fb03ca82598e910876fdb7ee2f708add4ce9","impliedFormat":99},{"version":"44cbc604b6e5c96d23704a6b3228bd7ca970b8b982f7b240b1c6d975b2753e4c","impliedFormat":99},{"version":"7bfb0450c4de8f1d62b11e05bbfdc3b25ccb9d0c39ae730233b6c93d1d47aea2","impliedFormat":99},{"version":"51696f7c8c3794dcf5f0250f43eda013d588f0db74b102def76d3055e039afff","impliedFormat":99},{"version":"fc67adfb454cf82752ab00e969d14a95fa762f55c34e25327dc77174b0d5f742","impliedFormat":99},{"version":"39d8d14a745c2a567b8c25d24bb06d76dbffc5409ab1f348fde5bc1290abd690","impliedFormat":99},{"version":"6d9aeea6853ed156d226f2411d82cb1951c8bb81c7a882eeb92083f974f15197","impliedFormat":99},{"version":"1fed41ee4ba0fb55df2fbf9c26ec1b560179ea6227709742ec83f415cebef33e","impliedFormat":99},{"version":"d5982015553b9672974a08f12fc21dcee67d812eeb626fcaf19930bc25c2a709","impliedFormat":99},{"version":"6ad9d297c0feca586c7b55e52dbd5015f0e92001a80105059b092a1d3ecfc105","impliedFormat":99},{"version":"13fa4f4ee721c2740a26fe7058501c9ba10c34398cdf47ad73431b3951eea4e2","impliedFormat":99},{"version":"3a9b807bd0e0b0cd0e4b6028bec2301838a8d172bcc7f18f2205b9974c5d1ecc","impliedFormat":99},{"version":"8c5b994a640ef2a5f6c551d1b53b00fbbd893a1743cbae010e922ac32e207737","impliedFormat":99},{"version":"688424fbbef17ee891e1066c3fb04d61d0d0f68be31a70123415f824b633720a","impliedFormat":99},{"version":"25eafa9f24b7d938a895ab15ed5d295bc000187d4a6aa5bfd310f32ba2d4eea5","impliedFormat":99},{"version":"d9df062c57b3795e2cae045c72a881fb24c4137cea283557669d3e393aa10031","impliedFormat":99},{"version":"72f4b1dc4c34418935d4d87a90486b86d5450286139e4c25eeee8b905d2886b2","impliedFormat":99},{"version":"92efd5d38691eece63952e89297adcc9cb4c9b8878d635c76d5473c20489fd4d","impliedFormat":99},{"version":"a4b4d0ac8882e2d857f76f75ca33694d315715cdc19d275ac37e9ef2a8d8693b","impliedFormat":99},{"version":"e185a44b6e46dc9621704f471ed0a39b56ce5b5027dbc81949b67cbcb59da7d0","impliedFormat":99},{"version":"5102e449a65c1f816d6ac1199b683f9ddf21b107f4eec5ce8316e957350d1b8d","impliedFormat":99},{"version":"73397fcaa8afa955ae1ac27c8ff5473418195ecacc90b275abbac0b8099b7e91","impliedFormat":99},{"version":"3a8b3e4e8ee1784e46e8151b4b0717b8a22e045b20257ad4491815f7cdb3ab22","impliedFormat":99},{"version":"28b5d252374af23b8db3d80154078d76ab4af7635d6f20ec892cf86651bb5f52","impliedFormat":99},{"version":"1a4fae85bd066e1f57250ecd3be398f45c0ee35fd639d1a91f2b816ad37cf4db","impliedFormat":99},{"version":"bbb1777739ab724de0a750ff73d8c02da1d6e93930b518ad396bedd7ee68d517","impliedFormat":99},{"version":"3828353b7c352649166506cefb1bc4de2d98591796e4b7afda4650eadefb3c2b","impliedFormat":99},{"version":"c6fb620f7d3160662e9bae07262b192fd257259220c46b090c84b7e7f02e2da3","impliedFormat":99},{"version":"2a7bd12de58b9b8cb10dabf6c1eb933b4d4efe1d1b57dcc541f43061d0e0f70b","impliedFormat":99},{"version":"0e8e5b2568b6b1bebacc2b4a10d84badf973554f069ded173c88c59d74ce7524","impliedFormat":99},{"version":"f3159181773938d1ecd732e44ce25abe7e5c08dd1d90770e2fd9f8b92fab6c22","impliedFormat":99},{"version":"a574154c958cdaaee26294e338024932d9cc403bae2d85ff1de76363aad04bbe","impliedFormat":99},{"version":"5fa60c104a981a5430b937b09b5b9a06ceb392f6bb724d4a2f527c60f6f768b8","impliedFormat":99},{"version":"006dabdcdcc1f1fa70b71da50791f380603dd2fe2ef3da9dec4f70c8c7a72fd9","impliedFormat":99},{"version":"8fa1dc3b4a2f43c688f6f4cf1721e1d26d641ef322c14adac867ecfa41aa2109","impliedFormat":99},{"version":"e351fc610efbbdbe1d92a7df4b75e0bc4b7678ee3585f416df1e0cc8894d2b20","impliedFormat":99},{"version":"18e1844c5f567d9b0d50967cf5cd7831e8da09752d24ac2cd4088490c0596895","impliedFormat":99},{"version":"404818f4f7cfc01054eeb0a3568da67a02b67b9ed375e745fdc20c2c22ad9f9b","impliedFormat":99},{"version":"8deefc198bce87fad14c4a220dacf3c827e46ff342c4936dd14bca6d1e7d4796","impliedFormat":99},{"version":"4bfda3f27409a4e6b695eb8f46b2e375c1a8ecf565ba88e5c99be20db63e6f9d","impliedFormat":99},{"version":"ad4b3aa66c7d3c3e7a5fb2126ca0aedafcded91b2d175fca89f50fcb6d3a1258","impliedFormat":99},{"version":"23e028cc298226d1f8e87d57950673b3a19b91f23538ee9287d52e77540af8cf","impliedFormat":99},"01123537c068c71315f1c36068b1f758690eb5a975fc841148f507f95d7e3ca3","b48ea1ee06eee98972f956eb8899d61ddf6725994152560f05d5c0692ead9b6d","565e2fa4451fb97135b876a6d891cafb30e53dfd618638f3a99d5c9bf0cbb703","35440ab0f2a245d5d75d7825a00ff62f271c54fc7b6cb13e764cfd57b80c4758","edf92b2369258983d148baa6b71dc8f1b60c2efbfa45e1ab8f9812984c538d77","7dece8383e62aef1c0116cf51c0eb8ffa61994244b3ff35a0f15557a2ba0a0b3","8fda0c6d895e8ea19cffba4442077fe2bf4036807fe4cdaa0bf19722eea02d19","e284290cd7b674476b5a2f09c663f8f187bcc615e113ebe0c1d1e95976b7c8b4","779b6d0e479da31386d7f7a80887cd37c0ac1b2c97174d3113a761b8ecea8423","4745c9d56793e7a3a804f0f59202e76a4147b8aa49c4e8ce802a56ac2492b7ad","ce36ed41e73847de1ec67f2bb34b22c00c68c5e1861c731d9775a84c9f998e40","8fc9c4dfa40f33542ad81bb26dced6e6c3894b74b2d17e1dd755a91f77ca6d1e","4c3f5cd4ad1f130adfcb39ad10f75d7fd0ee353f6bdc6c9d72f74ce18d2a62c5","67d557a3ca11d3e848dc7557b8d2740fdd59059705ce27619a42150f3be5b85a","55ada6e993b36b910223d9fbc077f823a16c040bb336095479fd3e03a98ecd71","9906b8cfdf76c78476269cba2a1e04a7179d9d7e589c49441d95bf6d086cc4b0","b035be19dc497302c697fc8be749591ff445e0370835900c962307f3f0dcbb1d","220bc4aa389ece72128e62bbec56daa4386fc3a9af4da12ef56f70b308744ddb","fbe75d13a2fc78994444993785eac37020aa1ded024cc829bbd2db1265cef70b","d7c2baa809933655a9e53b6a16da6a66d32333786c4a68aa87d7f770e7aedd25","186d88fbc07c3006f32cf926a8579abca59e9bba23ff92cdee41f6bbd3d99b3b","7b72eddb7cb8c6d3b50f92a852f85fe41c4c403a4035104e27deae919521b602","961a252df991a8ead53bf443981879272d5925f3c4750ccf216384ae9d772d25","98004f42cfb1caa915c7d5a2aeac3d1c84645d4ec46aaf3daf6d429a8a7300a1","677f19eff3acf71b1e9ee942c165141b04c96fa0b9bf0e937bbea4bc19b61e99","807ffcc84a41cd738b6de4a0ecefff94a1db7e0c75d980f117bf6f63aa3ec421","afe37885cb97e190ba3de79466be3ab000f6f02c1e730ec4326b20bd4a4a4a96","e7cb1d173672e37ff1c799ae7aae8026bfb9c3ff63cf9567998921ce83d412e2","c588e693518ab34c9b53bbdbf43ab5acb8d0349397663eefc7db84c39f50c21a","01e2712fc9bf24af78ef50e640318d2f735f6acf74388ed8f7f4bc5261f2d5e5","771284788ad0f3cc2b3b6f447671aeb36b0643954444b6b31bc5b350b694e79a","0f2da1831e6446cb8d36fc837e992c9f20c50ce0ea4275acca2940e07d93d736",{"version":"2d526d2a2d6dfd1980fb6eaf7aa668c24d339e27b41cac2a72efc75abe301b35","impliedFormat":1},"cc878e0d6e039c9c7e0e2ca17f004d55ea9de3e29693fc563772d7e6f25c4a43",{"version":"5f898c8f21d8f2247478d518823a08107722f9a282511cd8a2624580ead95604","impliedFormat":99},{"version":"8ca1f0fc18530c6c3a8e9813927a67cb457284d100e12f05ebd7eeab0c23fd27","impliedFormat":99},{"version":"cbbe51e5399b029a6b2f8fab75d62fc2c21229671e10659145d4d3aa63606712","impliedFormat":99},{"version":"5041057cfef548ffa2754b695e0d55c3b34ccdb58f357f8e24e69a8c0611d5d0","impliedFormat":99},{"version":"8dc34ee59f3a8e38d4a9c73067d98470ff37fa0cc8e07094935b78becfcbd5ea","impliedFormat":99},{"version":"0e743cb57e34013de912e531a6b3bf95c8132c4bc1702d8b9a407378008cde88","impliedFormat":99},{"version":"6f4e3dfde91023fcebef41b12b4b531d35fd802fd41f485f30632462546fe6fc","impliedFormat":99},{"version":"31bea9a557ccab4c8d27e0eba25936085a3ad4388d4f717618ba75bd4ffae721","impliedFormat":99},{"version":"3a5de68711a9aea7b3677ea506c2194bfd04f98bd922be05db321c9d36906e8c","impliedFormat":99},{"version":"6d423972587c4ad056e28bc8c5ebfd55bb4e05dc7b3206449d59d5bd017f0a02","impliedFormat":99},{"version":"84246f03f99682ef29a907ee4486f4f419e90d0cf8c214ce1711315edaafdaa2","impliedFormat":99},{"version":"c8bbeac4186fb0f0b75aba815745c8ad08ac3830405917e24d089a1828fded5c","impliedFormat":99},{"version":"9bcb8de42dfc978f44e5838d6830247f40806648ab0eab8ffd341506042819d2","impliedFormat":99},"94f73be43cd68c54523393a351284a0b704c2be7b8c17353b5b8d2c4b541c520","f59b5f660631c26d3c4eea8c3a00c814a9b7b0ebf5f761afd1257175b2406723","a51695d6f8e30f41ff0b374bc6fa412306f3503a0807e0dbecac69d818c450c1","3453b56bfe8be4fe2be0e4372d9d9157a02ce8940a91edd6f59ed77b8c083240","462b7142af5e00c173a4b24b241d0ea2e5146168eb5c45375ab47da6bbc3e890",{"version":"af2b10bef3a184fa0d328174c16d7cf57cca0c3b2a90f5fc747f3fd1da778242","impliedFormat":99},{"version":"a9bf72dc672eed91bf61d8086559e11d84c8faa3bd42d11859feee3ff33fc8af","impliedFormat":1},{"version":"93feac90a9d20ac01f778c5dbb6d1f2787a774e72f13686e60cb4129d16da164","impliedFormat":99},{"version":"574e4264a1314664b745e5077e2b9fd6ae0bbceb861ca8b01375f8aece493a29","impliedFormat":99},{"version":"54cbe0e52d7e2099779253af62687bfdd0c576f44f13f52972ceace044871eaa","impliedFormat":99},{"version":"c67ad59b92ef22b1b4f1be9ab79060f80417000bf527c2bb7e78129a35772f8c","impliedFormat":99},{"version":"cbb0b05c1cebffce9dd9dadc6c604452e028da2da25b8e7ceec4416f42806664","impliedFormat":99},{"version":"c6368ef765717e0f62082fca8e656aee7ab7292adbfcf9aa17ed43a3b2d9173f","impliedFormat":99},{"version":"a9f3f546fb16f0a31c521acaf72c1eaaf0f3c20ccda12ec6fdb6148ea66d3127","impliedFormat":99},{"version":"c13c8ec2f1baa9fc80783b08c042972798fae397bd4e2df0cf6fcf7c5a124fdd","impliedFormat":99},{"version":"271f60e81906e2543a29f7b6407e9b747dfee1dfe11c447e925b8d4ebd35d08c","impliedFormat":99},{"version":"948b9f67b1316a4dee3a22da7ea50f6f3221661d1097de6f1313c4279e4fc32b","impliedFormat":99},{"version":"a6c491b10e597679d963ad3c22c026542a88714d51a50cb25f33fc9ee89b975a","impliedFormat":99},{"version":"bec3a57df1e8bfbe7b86a053066c0651f2b02c2597cb3901132ed586b7f72351","impliedFormat":99},{"version":"03d5b2b8aeb1725c79dc4f5d7e269559397039c93102d0680f433b9639a5f3b5","impliedFormat":99},{"version":"77d406aa60f304f87c3cc32bd5f45b72b0d1513bab690a10d55350b5ae35ee72","impliedFormat":99},{"version":"5c078b91794a0701032bdec64aa569c9b1d6d235412e52b01ae9e19c716ca0b6","impliedFormat":99},{"version":"668432ef846d3d632e91cd8a6da5292c4542ec5afc979feb7f40d4cb0cb4b5eb","impliedFormat":99},{"version":"b7adaa2f52a33409ac987372a664fea70aa182f8aaf0299844bf3b0d4a617311","impliedFormat":99},{"version":"9e3e5f4b3ecc8d17997a5dec92fe381d27005d2c30cdae3843a232d2fd48d6ed","impliedFormat":99},{"version":"405e637e123062c82e2b00126f6294e3512f47bb47b5aac4d18a0456abc37dfb","impliedFormat":99},{"version":"3d775b03b19d88258d9200792c0ec63b79cf6a5f1bbb345656693b26d7bcc0bb","impliedFormat":99},"a3910da562a6af392282850c06fa725c43edaf7683b356720de7ccc4fc2c76bc",{"version":"b94d9042d8399d1b8083dc604244ab7c2df2e3ae5eccab028fa1602bf4cba4a3","impliedFormat":99},"2e00cd5e11e1eb4fa46c006002bc93448680f9ce52004d347a9f0dd4d6d5e7e9","b071da08190965b524fa92f22ed3fceb2998262814ab021195ecfbfc5ca469f4","49be360a2f9d764da05d433400aad918ed5051b3e6b3d298dd94f9acd16c70c7","d6e9ac75a822e95a97bb92cce48553aacc12a7f1cb9eb815763f8f76c843d5f6","6861254fa794db1995ddcf24e7b86584ae0faae7c5b112050d695e9bc4ac2322","4ca3135d9392f179356b5e6b7832878f1d86a9d1f2f89dd7388c198af9e824bf","22a5da28e476995da1bb577b21c36439d310c1d3e103e8c1c6cab83d305a4fe3","747cb5cf6132ffec9f414674aa9a7e50a553a17f43c6e19694c6c481e84c7b4d","81f41831ae357a5308f06a129fcf5b18b35cf2950e7d034d9be457b5138e91a3","853cdfe7fd2ada9d8ce6da49209951ad86fc879db4c6ec9fc3a59759c963c047","60be92eb2e6b5c96a18aad057acf18200e0f55511399ffca17e085c9a0ed7fff","44c30b8ae31a47fc89f8ced94e999d0bccf85e438210457992600f865f27ef79","c0136832d1cc616cdd4a3d00702d639b51ac5e5d770e07c92e36afe5f00513c4","14c733d3cbac2203f730c8dc1eca40354206fd493f832b5766a92e2a4e172cb1","7712dd0152a560f5afa2f12bd8aa400152380f9984af89e615c4096a83641858","4ad55c33ee1dac3f6ba82e8f28a1dc8753c58ccafa2be496f8e1840a5a66b5bc","5df1bd0955bf25cbe982fed62054873103b8add50d265b5eeeed998a62c34740","6b8134e8b2f12c8aa11cacfb6e695c0f6bc371093599dd7a4e1152d9f05d6ffb","972f6814d9f16c008022762f9d147cc64e80470427de615fe44dc379645e744d","0f93bc81910ac6c355955edfb4acc79755817e5dca5c4eeab76ab471c6166b2b","7da299eefa09dd9c087e6723575c62a61a0cb88cd68ec20245b14703a77320e3","b07c00a0124fc3057a26ec19d0722621657221e3e1d6f68b05726e2a45740436","7206f93077c3a488222b3225b502f50425c1252470a4faff3af1f448410ab886","f1c915d29e24763a3f9b22371ca937a6b260f4c51b5799257613ccdc294b9780","7c76472f8946fb900c0430175027e95909b631afae7a9f1453f95eaacc09aca4","5efa42f20191f568e672ddadee60749e98da884871064d7ccf9c5a8cea685233","452bc31ec1061abb87092f4841b012247ce9f543907caa8d35051855680e4850","7217422b50c507a82c1a0c1bc034d14a613ad6ec1497b2db87eddf226ff027fc","3398282d52666b4e40e0b7b6382ce86e2ab176e5379f30f42f2e3b48441620cc","2e49ec11e22aaa5046d99ba1e40957a76e289dde1ab2f4688b0e30dcdb593247","7ab7412d64098643a2008c65693435ed0b52f0c537e940561d9182f5b1e4040b","490b66f49311b3e19db5149dabb899fd2240a79a8842fd0bc9b900d8ecf8cde0","f8c134dc8f1c62088600f20cca0c3475ff6d3eea7374da10cdf14fc809eaac90","5dea605c15f4f6e934ed2858982b8c04a31fc6b1f82f7308b009933cf54b919c","ea9702ce7b6c069d4c3236e923106433f99696f1312b5b786c064b0f6a334100","5b2c75f718820c85bcdbf4b984e23dac1790b39d48ba1fd9bc804cadf93f22ad","80814c6c4faf700b13e0c6fd9e3599bed6a2ba5766c8ab2c65786497ee9a2f8f",{"version":"37975f5825df0016ff1db45a9a6a5d30856aeb7fee0279fc3f760d706011d3d1","impliedFormat":1},{"version":"9c9e7f386af01fd63f9713bd6556afeefc5b15ca167b36a12a4ae8d3f407a062","impliedFormat":1},{"version":"df6060e8905090f4c0604d143f6068ffb7b762b55a9642b97c69489e0ee364a7","impliedFormat":1},{"version":"680f918503d4847021d37ac7531d6740e0bbcc64f901b518ac14dd77c95028f1","impliedFormat":1},{"version":"6b633956c64484855b54534ead5954f58153ded304a701126524fb2ccf1ba4f5","impliedFormat":1},{"version":"b03c6d6c81ff13c38d0a19c0146ed22596065f1ec94b24f094c890646ac0b12a","impliedFormat":1},{"version":"3a7ab4ff35edbec15b516e6faaf5dee65be6638389bcfea0bf30bcb45b95ebfa","impliedFormat":1},{"version":"a82aa8112605ba7484481b4ff6ea3a8568bfab5755559999ea590dfa4940380d","impliedFormat":1},{"version":"58113b6a396976568756dfb54abfaa94d57a7d7ccf9c5d3e9422f81d61065d5d","impliedFormat":1},{"version":"2120f02d0f95e0f2840670f15b69ccf7e13de5d3f4a217422ae22e80931608ac","impliedFormat":1},{"version":"2c03b2a16ff7ae1635c783b6e8a74fcdea0d174e187dcfd306400b0e5cdf8c7e","impliedFormat":1},"af6d13ff67a55033ee8d45d882f70f087aa61c768b75b9c252a3a2cb84af6fcd","2af56a45a9bf945e65d530ee3529c80868dde6339e7f112fe169b33a0147d0e2","16b7fe979fc345cebfbb581876b926d57e0c700fba52c5b9e38715953a660a83","6f93c1260028e5ca4b114b5e6b58b31e06b51d90e86c17b698103b05078812a6","75d5079c2e0927261e6cdc51fb7cc744b7654df008854bded0d67ad799c4ccba","7cce10ee92b2745bf66f0fb894b05047e0caa635dcac03e310eb2536fd224ab9","10ca4f705d535df663ddda033aab72889056cd73dcad79300a672f5f5d542a04","a645dd76b0edcd7db9458d13e3cf31b20c88479736c5f30f37b26a328434b88a","868c001dbfc8976d5ea369f00ac3aff56977a81a1b03e1c75f21728ce5a2ea4f","41ab0bcbba48efd675f87e6c3d601f0bc4e4ef7a662987ccf3d6fd9745c258f8","693c4a498ea1f17cb7e93d225f2fce73e1797593b65b2d156a5f22bf93caf59e","e7813d40e0d88c593508467dea6648b18f1647a0307162e8623345cfccb18d42","6c642052df19968c09c4980d31cdb0aeacbec4234e2e7e0285206df9abf3329f","d319f170c781123e0ca7d81f4dc634f031d4a3af404d25708bebee9ecbc848bf","5a5aaf86e47d93feefd8addb0db0ad0aaf25139b0bc5e5c72f8e9b3cebad00e1","c32520ebea1f51837f83c52a35ff7ecd9842f0287b12115cedf75b143d50c28a","1ed36f0694fab4ae9555a5785666dc14c3cf0dcb0d03aee6d453a9d943ff67b1","17810025bbf46ae50bd738ad7a2f3a06c419d80271de0b3c39f815c4b48c1863","7abc6479ddce13c2fada0600fd8a5941251da8e550539ef2b0d3d91904f8055b","4dded289f3f62d65c1b8c516864419151278fba71f44e1bf1c8c01f8c988999d","5856ad7f7ea37c8f4a4d32dbcc0225708ce26877d067fbf66dcec5ad063d01e4","f56d423fd03a99db6c9d9d5c15f984e557f09b9d3bca391ef2f4168c481e5ad5","7217422b50c507a82c1a0c1bc034d14a613ad6ec1497b2db87eddf226ff027fc","138da8edbc8b3f4ad11d5303ccdac6d05ad6c8aba26233d1a4c95750e374db30","9d7122db287ce03d3ba74ed436b361238d3ff024132cd41e61c4d2387b91109d","151686d5ccf3399858653eb9c3b925d464209bb5be24c3860bcccd1b6952cc8d","450a8d5300eded3e2b6bf3e61e6278960cee9337e7f5921b4b2e04123c564e7e","d2c5a57b8bcd4418655d56e7e8e3a86bb6a121f011e7c4c1a23c67dae879414a","9c8ef8682996b6c5ea1a837b663105eb6bfcf90474fa1bbb1fd63be14554c0cf","669b1166d523632d714f7173b07bd65d7407fa15c3bc8250274b6b3ba7d6edad","4482ff4480a7ac9f50f95ae2ee27297e3730fdc0b1b1c31d162f2cc020c1b0a2","e9d66e019681d680fc978450b51b175f3de878a8a6a147edc61de8e88b143acb","5c806c5f5857ad7b717163091e36b8d6d059b8f1dae078cc238645b04a2efd8e","d97d1cebbc20bb00028ef6f078d745cd0ce3a3217eac79e12479215d1ccba234","5b0d563a525222ea6cbbb417024a14d7be611a86f532631eb9285d521ee7e6df","10da2a9fd9207237c6414182c712dd894d5de21cb62d7fc7c99591c13a1173cc","74d2317b0e60b1c12041f30948f21c48bea123a77831a4b628fd4aff1627be64","19b7b65da30e502f546150444f3c9c633ba8f44c98e6e7a6fdcd93bfc1b3c585","1e2c5c0002e6b9fddd001a536d7f568b38495a98f20dda7f27f661f208c62f2c","1b8637e0a92987e40043f5d08796c0a406fefeccd7f4f7ac0d140942484f358c","80f74a37bdabd465e3e09cdc96454cae8fff5a1e32bf75f6418876aa70b60a7e","fa966fa2215bb5e763a0e07386ddc7727f63c4619d0da5604624d48a0319d1b0","ccc2d850ca4ca1cb5b7526f9320d6e944f27d36c9f9e8d1ba6075d37b44f8bd2","d2fff7c32c55aa4b52fd51ff86217f84f564928f7d6f1ab4f6c5728d92932248","b422b351984350090ed7d8da7bab5940b94cdc6185c64de1123eb106b3951770","a7bc229bdfea2dca3cfbea70c6f7b303eaad6b117d0869c0ec574a79f51a1d9a","771385cd293a57f22de3314f8f206701e3aa5aabf8c61828e35bdab88f399959","bb53db95cdbe6a9caec8ae9d5e8dbd262b85d8890ff19302be0e8d4bd3a4dbd1","a74559c53b7ca93ee8da81afbf889bbe376ad2c077e14410094929fc62a264a0","6be7c297517f5608e41920bc2779ab7b5e3c402b2abcec831f0a4db4b925ed72","e7eacd27ce17b8d3ac61db3f6e3de06cfb654a7a6141724b3c03ecbc35faaa87","3109cd375d7d7d161de4381cf0c72052dd3e7dc35ada7a19a0cb56556c745539","a2c7f7251f3af7c0c4e16d5f5478b48c39caebbe7b15752da42394455172055e","c0265e4d705959a41b77ae4622ca7847d0201e069a91f01a77441f7701890a1f","ab40ab917baca2e4166f8b82981d5d00101574fcc6e7e9f34430698ab84fa425","0f133fe476b5bc41e742b3b5cffafbf39558f0c93afaeba535d3e853f0e9f306","e27d916122a3a7bb98b9db3f2f4e57356fe50382d34c2cc8ca1ef8138b996f12","e378cc934ba29fb5570131430ab8a163c9ef9ec8b1ecf5b51771c1b9ad8f2b6b","726327e8ae378e939ffb5bdc240e00092a085443ab128ec9a639cd51dc30d196","6a73cd53f4bc9a2be1b7145e026ad9f56367bc6f6cf613548c22c919a2de3655","0e46fd495ae21c109271160e7c6762b39bcf7773604ccdf304e66b38236628ac","6b0530bd2ba146dc39e3fac5cbcef2b072327e4b506fdb63e35e9517fc90cce1","96c906c31c15a3de0a4a4a6f10212668ba2c412bf695744c05dda133d29d38fb","cbb0ecbd916c55990250dafc1c54cf4e398f129b82c567d7c933d43188128377","cc9abb4e785146e301d3f528731fab49fd7bfadb32f4ddcba39a93dcc23b9caf","cc84f078c97c59bd3fc4b6e9ad25e9dc59d777380bf599adb069d0398f20f62e","38877ac6ce087edd3800e9e60ebb66a7a2772be5398139bef88e128b938bc118","4ac3d29bc0a8401474d06f08ebb15cebc67cf65c9d822922f4790b6140d90e2c","40f221e63380472523f9d763d410f6c6a8c4b020fa35ab103b0068d6057f14a3","3415095144208faa5bd11c1c5428cbd22a7dfbeaa1473f34f0113c8e365e0a11","e58371dadadde43a060b05b4a59fd3cadcacc76ec789fd34ef8b806530e463b3","cb4a0575ec6826ba5ca5938a730583a3094374f969338caf3f0d1cbd403ff5a6","6891fd6f46955b62f643cd318fff6924d375f894a42f4d5d5a098c114d6ed02f","23b7fe014cde8ca2ad0fe3b64af0b42b1ca1f9d516eff0fc28ab430ac89cb74c","49c7d00a451e7593540bb1c57f6e31bbc11b9eb702e2ab7f6819b82845968d99","54f93a3938eca5461b9a12e0e8a417047f9cf2d212623505e97554e6b48813ea","4839a06b1d589569617e9cef76e1b2acd4ad3f7c09891bba6ef5505892b2dbb9","e7168afe103199adf933db04e00b78eb30db5a218bd9955cd8134fd8e26bfcd6","dcadd8375d6e98f0e00639ce734fe30232a6d4b2488679c3990de37d80c085cf","edc53d49ca81a7b878065780d126813b0e7b122856c32cf956ba29838d91319c","dc324d7c85dd0b5a95e5329f4a60231f19de3d151f63f1d1949b15e7f66d677f","0203a56a3cc430cb840982830308fe388f0db4340cd1accf7c2da9f91f4428d6","662a43a9a6f6748317246a1818a2adb36b7365765225fb720236b9881cb2d2ef","4b8e2b0e5ed25560960524034da7f117ad689e596fe417a40d10c87160eb7d8d","9a1f0691b53dd70aae09f73e837412aca102a79809d3f605eeea4b7dcc8ddf68","9c303e4e88ffa01cae7c66c1f32a7a3773ecd4789ddaf76829c7cb1ec7ceacdf","d01b3e3ff524b0377556812f7ec041422450a39dbec0f6a046412e3f9bab3fe2","187acc807163e565826335b6964a6b5c001adfc34f903dfb0cc84555b73981b4","ea64381b9b883d774debe418e4e95be48cd520c2d658d8554eb97c6d6d1024aa","9481026beffcdfca6538a1152dbf8f80f7f8ae622fa0f7b00e6033121a4c6719","1afcf4512bfad37a5f95ae2d9746db6690584173d1731d6ec09fb4713be9824a",{"version":"d555c4763022ce65bfcce64ca0f7fc0ed5ded36a44caacd077ef1c9d5be53176","impliedFormat":1},"92f1b0dfadbd4e19012e4b110d1b9b38b811d9b46e144f40d38829245bcf0995","9463b19130cc72769ca1db5a35be04b2c39e4a63f79cfb5f341d0b294092ded4","3b89f551709b172955b8d6a1964726b9a994d0deb4e43304ed018a20f836176b","bae439dfeb9b57df7937a62ad0804a00cdb0b5d2e17f637f7258118c781e8ea1","5e61b7939206c521bd9eede73637f67bc24fe015604be6f80250fbfacb180c57","288eb4f1e47860a8804e5da0fe6a2ce9f626586a47216ccd9347ba5e2216946a","222325a4f7b286cc0e00391e0341470703a052196524b32323593bbe4645d647","3e6fd93123d8528340acb41efb34ace8d47ab0791b93bcafe107d8361f60a991","f8278d3a64e4dca109521668540420ad73274b4383b1014f3d9e996b1a2a60f4","dc7379a28d315c045a57385b033bb4b79bcd1a30f13cddf7afbd998a29a47741","aad4fb06f9f8f5642add80d043535266f1f437fd45eebb9ef4dd8024fe5fa8e0","7dfb294d815275513883cac82c7ee9ec72e977c4dde21e39c293750b4f90f5b2","0cb284cfae39fdd7a8dfae9a716b45b4558b4d1df4423aaf5753d47e301f7c8c","e8409269569b110c579cf836185d143de3d1ae0d2995a7806c470c9121866e75","9831d72c804022e1c8be86f001e0f6959324ddc0e21ce072ce35207975eac897","e874582db32fb8f7dab5bdbbfde813576b210e159180e13ddac2326a9d8da42d","5d13aad224d80d15c27d12c8bbe36bf2074e077b7475a0f7ef16e5615fbf9c8b","9b8caae1e2066bcf933790a413fb0fe2153c125eb7b0110e7eb7a8d72959bd3e","c055c373a9ef9e8748e378bc61e7ec6ee1a919be392c964c814a290374861db3","848d22b713679660ea83bc672a0c3d9c6d9b0557ac4b14a8d0c14cfdef780f6c","da0e2b4f05f48eee0a5e049ade930cc43b5db51837502616d7a08203c56beee5","35ee7094844a6d7d6b6ee47a14ead09dcdd89d392e315b2170c77c4a2425a862","5b65e3521721cf9e4dcfc64e18f0c85f0907d56089064cfe21f4363268fb8131","954d01535a6972a71b548ddfe03e4054b309d475e5f0cf0d0c81c97a966ab052","467a550b343e5c794098a6dfa270903a79a7e145e43c5f7a7f53ad2aedcb9cc7","195ac2abc66d9157405a5cf5feeab720153aa073e3c91875fa275b0bf412dffe","ad59f76755a0263e94011168722a4007e1233696e7c5c2596a168b70a3c871d4","27515e85abf73e2b1f1dde04ba58648829d55d8ccbee05a46984e0272fcf2939",{"version":"31b72e5bc90a8e4318618570784ce733fc8f284a044222faabb600ae5ccbe10a","impliedFormat":1},"0b6eeba6f9c42368c9f0622fa36617caefc243c34ad8851fe93578cf675da15b","50779782997c23a2faee3a0b04e0d6951f2673502a2a244700dc2f5eab94eb36","4b328405b4d27c9a489df21c9e14bf913c858bf96f6eb263aecbf9695dcd26a3","cd945831123055d18bb65c263084e3a4f694f76626ad3e7188211f227e4884ef","17333a68340ede4d2e8efc7d321611d027b49676e09d6c7e28719200adb82f81","a90c2fc6b315096e658aaa339cb8831e24c60b7b2ad900141d60885701c504ea","d5442e0e03f92d0b380d1105cdf72c14383bc24f6264e4364124b481f9875ce9","51771fb376c72373eaabbebd822b5372358012a073097d526ff6a00889a67b4e","383863c4777657e747acb817541a0ba59adfc6317a948d7854114a8f592a81fd","7f957e867e2bf331fdab464094a00cb0a83bebdd36521e874f9421c540c25cec","903d2fff56387ff8c46cb57768b2730d0034c6cdaf6b7858dd4891de1d569868","e2fd475531054c551696f534c4120400c932dbd051b50dd8655a026e7c5875e6","9c97af78abb3caaaca3c645bdfb10c35fe86416b876d3a1521cea3949c4f2a01","fdaa4fe2fcff45a43bef949ff1639e0e5c8b48055185993f96f3ddd0e5b18b00","51cf772f66c1ef4be9e7d6ca3545772e1f6112d0620462fccbe666fadfc45595","515630c9cb2a4ec5f63d40173efa7f8a64e3213f54c397327f71d9a6f6c2736d","934421ac2ff4d3d20af848a432055870c73383469569a9a61f77801f5124a0d0",{"version":"6525bf43eb7f48aba2553d987338f99e0fe53f832b543e5813b51641c076cba3","impliedFormat":1},{"version":"d35d462c95a35e34cc56d4d1dbf6f41999283dc642013a6eba9c293da48922fc","impliedFormat":1},{"version":"961ae7c3710ad5925a8041716e5816ac1e301088c3815b710f20d3ae09695430","impliedFormat":1},{"version":"90d6939e56a48b142c601779694d77983fd71520694844f6928781c4718886fb","impliedFormat":1},{"version":"2d737ff39762a1fcfabd3b0f97c4b7d891d8f9bb8c45982e6e87549a90982481","impliedFormat":1},{"version":"465dfadcd4b4362963bc40a8f94ace0d1ecda68e869eeddc20be6bf57e0110fb","impliedFormat":1},{"version":"808fd1efdfa85e4eab8012c7a087a2ebb8b0c6a536d2518ff6cead7a3192eaf1","impliedFormat":1},{"version":"fb3304ed260dec0eaad2f713317b6bbc218c0d21cb67c78580bb3897c15575c6","impliedFormat":1},{"version":"b3850321b5b187ef1dd451bbd7b83c6e6831cce74a4a8bee95b9ff31b2d5172f","impliedFormat":1},{"version":"eb257064d5dacdcfe73a4cef3325562fd3a7927fcaadcede2b5dddb5b92da417","impliedFormat":1},{"version":"6ea9588a03dd2768754a9360166daae3b1bf5120e65f3baef43c5cd3dcb4fbb8","impliedFormat":1},{"version":"d67615efb0127284da59f73194545cf9410d2b48da3129a3b326abdead17c6f6","impliedFormat":1},{"version":"5af50732b404045bcc0bcb63cb7883ece1b4e6852b64517945e914432363bc2c","impliedFormat":1},{"version":"58070c94ea0e5108c0539458badde653762717cfeecdf5d25512e2f8171416fb","impliedFormat":1},{"version":"4d2f45800ddb1cb1de1ab34196c010fbdd2e2bef101c4e4b97091dc5040c2ca9","impliedFormat":1},{"version":"70fe05199ca2af2c83c0a914ec18e92ffb271c2e4a2f8ee3c04f6e031b14acbc","impliedFormat":1},{"version":"6a4692a562d2905f78f4bba3799e9a5c1f17a15d3f1a3f9d0b95fc5a93ed0886","impliedFormat":1},{"version":"92a33be4e45b94a0f4572071c4768189817546e2880ab38befcb844cdf102534","impliedFormat":1},{"version":"5fe7963c7ca10d11035871bebc893f20c5be4c63e30fbdac989da71ca5eebdbf","impliedFormat":1},{"version":"dd4ded215da5342d94173e6643650023ea248c0d9c0bbe0318caebe7274438c5","impliedFormat":1},{"version":"2ffb2971267f8df92b64cc3916630e376de936171df46a29612088f60293cd41","impliedFormat":1},{"version":"5c228e9ec4226c3f61ed137a59a15bdfd0574c4bfddbdc013c62d6e0b27b0b6a","impliedFormat":1},{"version":"9a84ba25d436d82f0830f9f88c0e698857c131f6305e80594a9861c65a10ae30","impliedFormat":1},{"version":"7d6568f33fe202d6e75ed60ddeac15bca8ce1e01077385e4cb3dd9dd0130da28","impliedFormat":1},{"version":"82d3cdd488466e697681b914420994c88fd8595bc6888c46c421af7919405c71","impliedFormat":1},{"version":"aa61e6cb5e048437ab87d09e316ac45770840de626f5736c98a192c7d60c907a","impliedFormat":1},{"version":"071a8cff6dad210ba0bf897f1388eeeaa805a526b9ec7cc7c8dddc635163d806","impliedFormat":1},{"version":"e29f94fc3483a23f83a1acb0d931ff693e97b1109554552aa521402beb0bf48e","impliedFormat":1},{"version":"147e333507832d5d99734b020def22f33f995d5fc86d747b4f5356d0188e63fd","impliedFormat":1},{"version":"8c4a8552716e1e0fdc136f0854f3f06f5fb8782b70adeb1a90aff8fe215629b8","impliedFormat":1},{"version":"899200619538b0f98db2b5bc852350aad059f2070aa814deedead6c02c9d8d46","impliedFormat":1},{"version":"64531510183ce687dc1484b1872abce3b9c6e01eceb2b6470e0a9c57fd2712d0","impliedFormat":1},{"version":"db9086eccd3256f810ac13f48e370f8b5137a63208f8040422a94744f781e73c","impliedFormat":1},{"version":"cebd0ffc617a714a5b393684d3d67486c23113268ff72169dbd67a1ade72cef8","impliedFormat":1},{"version":"e712cad833246cdf450f5554ee1510f584a95a5e281efd52e29bed2deb1cc4c9","impliedFormat":1},{"version":"d7c8351dfa3a584c6fdc09544ef019194cb2ea7d9e85fb11230a3e42c4dc983a","impliedFormat":1},{"version":"33f99657300799c354171117d7f70da1f325f2083371074d92c6e07903110f87","impliedFormat":1},{"version":"fa6b27a596fa69645ea962f3d865eedb7a6e431fb1abe7648722fb33d30307e3","impliedFormat":1},{"version":"5174f5ef2b78013a23512cbc7836bf85781a5cad54c927f1ddbac41f28855b39","impliedFormat":1},{"version":"60da60a86767337d4f2184af60c1d8a5a3d78d2468323ae688478a4aac33d6e8","impliedFormat":1},{"version":"9d5758e932374ed7965ac329d30700098a4c752efdb1ce8170d74b3354475a7c","impliedFormat":1},{"version":"9a2205771a9ac694ee379c7da11c2ecbf92df025bf3ca0a7c67d5a466169da3b","impliedFormat":1},{"version":"ee7cf7d3f43ab03590c2af84c8c0f6685a950d28a1ba86a5ec594fc21fd892d1","impliedFormat":1},{"version":"eb9b4a340fdfa222f0bb5ca5cc57cfbdd2a8aece5b4c25543309a90906a7493a","impliedFormat":1},{"version":"2ef5231141ed12543768d0c0c5765ffd12d1a28fc231ec4c40caf11aa19908df","impliedFormat":1},{"version":"921572e442e836b604dfb2042ae0b4a268c9713c694a1807b3ad2f6acdf93737","impliedFormat":1},{"version":"b45c6a853aa17d19445f501aef85f135d7287b6e349a2297f1554e95d079d9d0","impliedFormat":1},{"version":"629b8d970c312fe6a7c8ea39455e881ae08339e6648afa7e13e3ddf7c32710e3","impliedFormat":1},{"version":"e8152e08cee6529e848623c244b45b0b0f2bc0d5707bcdb7e88ebe4f2a06f3e9","impliedFormat":99},{"version":"4aa7fdc017a0a097c71ada2ca187e1475c987b4f933960c0792eb143997e4709","impliedFormat":1},{"version":"ce07e995b15e416794949505fc6fca05059d1f3bcfa497a304f7dc3c7e31cc9d","impliedFormat":1},{"version":"1c4e85e8a5f81fc47bbb29ca7764316dc95a410897dac17f57e0c34a11e18eeb","impliedFormat":1},{"version":"319684d50c64072ca55ffad83b9068839e4ab3fca4011368e4109994bb84cbf4","impliedFormat":1},{"version":"75212d574ee7fa362738f8329b8369da5c08904270cfcd31a0d1ade380c1c8ac","impliedFormat":1},{"version":"324f68b8f98ff13c6619c646124613cbbb09bea82b123462e487fb72a207abb7","impliedFormat":1},{"version":"4993c2a55790dc998ae47ef8449f26f8804cb96f94af2241143da8a6340234a2","impliedFormat":1},{"version":"912c5192cc436cf5831c70af786b94ff4f9736d35b0342d74093fc6fa96d50d1","impliedFormat":1},{"version":"e456518186b9f4f4be5cff8280645d49687ba50d97dacd409795a3f4d0796bc3","impliedFormat":1},{"version":"7c5f8c769b0182486c4e221d8df60c9c2332237dc7d8208ffb339cbf228c6646","impliedFormat":1},{"version":"57fab8e55c63034d1b8fae0c9f4671014ce5a562d87be442435626b5c9da0a83","impliedFormat":1},{"version":"9ea81cbee2201ba9f7470cc2bb65e5b3f6c06a6eab580cfafe74240511ded061","impliedFormat":1},{"version":"2dbd7097d050bd98abdf201f086c386867b244e663762f93f77e9d318cff9516","impliedFormat":1},{"version":"a9034eaf5ee3abbbee9414c2929c905aaa27fc92dae46b5007af733bcaa513d5","impliedFormat":1},{"version":"9963d9a96ffc4e2cbd5c5bed13cb917f431584d72233aa637d81e429abc697d7","impliedFormat":1},{"version":"31adf2e1caf1735e521c472278ad97dd54253fe15589d936b3c1593240f7ae97","impliedFormat":1},{"version":"8001cbed058614a9e81547c48e13496c2930f4b74253d498b84d76e1fab34456","impliedFormat":1},{"version":"e6bd18939fb7ec42dc5671c7286ebf7e278fec50a9d9743138cac4694099d455","impliedFormat":1},{"version":"ebedc83215b49a7a4e5488d26740bf87b7833198691cefb59c073550ee35e5c8","impliedFormat":1},{"version":"66c141ea13f8c67f93e2a9a644f78e39f02937a7fcc76ba2c54f03ee7c53f414","impliedFormat":1},{"version":"7fb0770d69225336e4e4e5353b82b5be3827dd6fd36d877d099a23796749cf68","impliedFormat":1},{"version":"a2abb94d77c6f07a7f79d28c0f0d6456183f9ba3fc26cbdfa36c917dacb1ec86","impliedFormat":1},{"version":"0271945836200226228c914dacb775f42af6d7a3c388a10ecb23b551f0c84c23","impliedFormat":1},{"version":"b71b33918318a35d46f472c7820ae45651dded3a872c75d16a16e62262bc17d0","impliedFormat":1},{"version":"1ed1fbd3050439f6cffaf79cac0136497ae0f7ce6639a729765d95a292266630","impliedFormat":1},{"version":"eb7da3439ef5b028c25c1520ef57b7138e73ebef3b25b94e38a7f470e5b772ab","impliedFormat":1},{"version":"9195ea6b4f212473257098a776438ddb6829a801ed3bca9baa3a83f19dad75cc","impliedFormat":1},{"version":"5a64a2e2e2e1e088b3b5c988cb4b812e79be3a3ef187c38ae6697a98f07011c3","impliedFormat":1},{"version":"63a6af807bd3cdb8bcfbf8b0af79c875eae00cd84f78b1a91c0d36c3f5a5617a","impliedFormat":1},{"version":"812f667a62dcc6bbbeef46d19b409e0224479e4f94fc2bb5ba396728b13fa50d","impliedFormat":1},{"version":"5a6aa832b9ed9d508301fe55072935e60e7b1468424ee848d1efe49c00b2a0a8","impliedFormat":1},{"version":"8f076226905d50477e51141aeedac0ab02a4c44aaf200934e839af2649bf4580","impliedFormat":1},{"version":"2e6b4070e6f84e67ca55b85b44c82727f0e4fb7ab72cfddbf87014dac90cb12f","impliedFormat":1},{"version":"caeb5a8f582e38c017957de55002b1aa3f2eeb49efef8da1b04148db14fda0a6","impliedFormat":1},{"version":"ba6eb105c427c984ad50eceed0cfbe2406ff7fdd22e72d5f95b6585cce8b3930","impliedFormat":1},{"version":"2cd6e92943b8f380cfe6adeae727c4af4023fdcce99d17dbb83d2945ef858248","impliedFormat":1},{"version":"8e5e95dc952c62e6b2a0ab8f656bb8e0b983fa19c7241079e58ab456eac0e545","impliedFormat":1},{"version":"73985b90a8a55ac02e2feb6c8251ba003d8ae316d14432650f0b26d5d526c6c8","impliedFormat":1},{"version":"0933fcc9213f582c3f55453ec36eb159bf2456cd298e79f3d9150e203be1e584","impliedFormat":1},{"version":"d7d310d3f75dc5b2ed63b06cf06ddc7bd2fd7d456482218da3bac8ad3b88ad0e","impliedFormat":1},{"version":"6d105e2587c5971fbcaca9335abf193334cd30eb85bd8fea3099fa3a5db41eb9","impliedFormat":1},{"version":"79d713c38ae588c239b5cc432c8e032d7a5fe225cf3621c7150375634531e035","impliedFormat":1},{"version":"3c98f18e72e31e14c3d30b20e63a76138a1059edaa35c14392158c89ccf62a4e","impliedFormat":1},{"version":"7a966d520e3c8d182844db56488e9f90b450061a886d87c62becaa87efa8e3d7","impliedFormat":1},{"version":"c2572c5fdd0e3eabf93858f7bba78d36c564016ba9acc18825615f863c971c2c","impliedFormat":1},{"version":"a00e63f566d16bb94064dffd6ea54339d4a43f2fc34048c23b591014f6462243","impliedFormat":1},{"version":"24d0febc7d4f26c5c8087c36be2a14745492e92de11e5785e8c68a9227c819cd","impliedFormat":1},{"version":"1950deeeba37702d1abe98be84006da90fb80116d44bff088474e81ae59ff30e","impliedFormat":1},{"version":"6c145d2302e70fed9b25e154c6305107558b43602952bec4152a118a60cfeb41","impliedFormat":1},{"version":"94f30e6019530cd177351bbd4f8ce10750f435327e10f1d2e44b77acc141b726","impliedFormat":1},{"version":"951c13d1730f57fd44104c53bbfa2d0300535286a2752a9a02ff75ad5abe9780","impliedFormat":1},{"version":"b16a987d436a39afc59bac719dff62ccf6330ba98487b3a6c46e19ad71614959","impliedFormat":1},{"version":"6e5611818b158984977954a3b9ef505a8d80d31a865b17e454c586f632d9d211","impliedFormat":1},{"version":"57884b7eea0483497d51dc84211d5b03433a1be60c9b52cb51e0fb70addc13ee","impliedFormat":1},{"version":"b75e36acb4f3b65f21d25064699a1cb52f4a459926aebfa492468f47d7d46259","impliedFormat":99},{"version":"d5249a694e79a78a2dff00c4a924c3bf6e06ef9daba47d51a8257db5401793d4","impliedFormat":99},{"version":"4f33107b70c28da4076455e2d47b15c2060eee92dfedd5292580932c456c2f28","impliedFormat":99},{"version":"fc8a3cf4a55f7d1ae3f2efdda84bbeaeea605a92e535ac52b99deed6366917d5","impliedFormat":99},{"version":"cef975f6499601211cf284de110132b36b32ed6963a77189ad318a045461f2ea","impliedFormat":1},{"version":"a79ae6d18600e3d00ea8de5e0e6ba8453923376bb8d04fe609d564d75e9e9e9f","impliedFormat":1},{"version":"e2245a682b00e7cea9a9540c466e41573cb1ea562ea4022df40e4bc81f2943c0","impliedFormat":1},{"version":"69dc9a7232f66a1df74fef1cbbcdb6f24b4a3fef89072f31073ff2c7df2d26f2","impliedFormat":1},{"version":"7d35b0ec621a9ad48c707f54a6e812da10c06e3da2d05903d18a48dcda9d9103","impliedFormat":1},{"version":"3f58d7c5ab5612f858b418cf06b4223462394bfd48c4225fbe60ef209834eb46","impliedFormat":1},{"version":"5cef717ae8bc93e69028472e2a0e3accf74d40834c635287a412de8276cad073","impliedFormat":1},"fdc0e2845866cc1ab944627590e8c988b02fd2a8907ffa5044a29c3b2ee67139","a79b9aafa0e87cf3f97c4eb3fb7343f28594170dd514cd7d29bb0b74ec2d1168","738751b82e3af339fdbfc3aaff5065e09db58afb1928d4ce99c6bcffc19f233f","ad0ce45fec8d6f5d8b1e70204dd0677548c2ec1ac15c5fc7b5c43fb5be4016ea","2b4b519d1e016c5ef35706da330439a37bc204ad608f36b3b9ec23270300b557","69e60f4c724fc806514c77e0db9e4e762d8aef843dbc75561d721958df2b9372","aa0277d33ab475060768d1cc7cad964574eb600d048243be3559b9e2af9ba2e8","bca7ce235d2b387b8a43f555209843605b4d560e800e110513169ed602dd803c","4ada109e139432a1e19b8fd7bcfa72a8794d4477c91cfec731fea08d62125857","034f361f652b6d1923dcb77c16eea435170d142ca76331f8c19c6488ddac808e","38fb1702d447acfc4d3ad6fc317a0b153cf8bc6d104dfb46492dba616c32745f","0e69f0e0416a3962fd906a36893e22e3964a6aaf32f9c39e25e54a6fa7bfe43d","0c20fc330be3cdd1833bd83c383d220dc64a14aecc42752b38b85ada6a2ab391","eba142bb1337c5fc6141a8474464fb37f09417fd85da69ab97ac60a726bc66ea","68561d422379fb5e6afa3281382de0a2ad7e2d017d9ba8abb0ddf697f98aa288","3f4f81431e0bf58dbd644b1de73668770cb8aeb438c752bbd7c57cba753d6afe","6a36c2fca00eae7f280aa110f1e162edc9d720f8e6acb34b78d90edc943952f0","4a1151ea9b05534637d5a8e7935d4e73c47e2d4e44edfd9e3ca06932c35205cb","6f00b2e369b77c3b12dac54292dcd8143a660389d34eccefa5f987f71e133670","db875c9e62c88de22232e2d573ae66198ba6b11a62aa00833e3df7263dee2df9","9dcac05e7bdce8e3679f3d61c4336a4b03d41a4b6d5e1ed91364690118cb24dc","5b74a946f9b851ec99fed6b570dc13d9de59e5a56ab5c47d2e254d25e7ee2546","eed9ae5c3ab9f4f4f98758b480c32d945fa1101ad2922c7702960990bb6d8102","8e8db08e2f19a3426de89571cf44ea27c8d49b47a4bf1ad668d5fe5f5ffc103b","714d7d7dcbeb654274aef12f070b460104eceba30f867ea107e9a532d5492eab","95ae759a5ecdacbabc44355ecb592c03920cf8bc2c9f5ad3d1932036d24624a2","59cbca4b0edbf3cca80543bbe4cc5dc4250c2b3041ed0ed643b5c14f9cb76c9f","5887bddeff10dcea2eef4a2569796768495126922938f4dee766308c5b1eb7a2","6c03570afd8a4ba198e82214ec102524bd9b2984133a20f0f770882bb0a11a2f","719269cb6ed0f70e85c25b21421a186f1b15de6702049a8922680aefcea52e1a","53805a0760266fdfe5f4de3dea1e593b2cb1c4bbbc51917e599e73e19c1669b9","faa9327348ba89b6c8998d9f81ff875b264751193243d5ddc5b6c60212fc5234","bddf1cc0275aee7201796be6df300c496eb242a46bbd39e75be0912fef3cb0bd","30de46c09ff1c85a142b07543c2f858d8a525479c84728efa6d7ffd5482d0a40","70609bc637c0d3d46e8e11e0482e6353b699855565e9fb483c620ed82c911816","4e16f80a79aefbec9532e49434f3126bb6f3d5009f1aaa9e1acac77101c8c410","624b313ddbc5065e10b114f61f654e1786c4be524d118583a8a82f4b0e71951a",{"version":"5e8b6c9ddfdee936275cb97365c18a8a3e891f15d2e431710052f46637df50c8","signature":"ce8c08467edd5cdfa7f188cc6504e2191d430459dabc38d9e0274adac0b2de9b"},{"version":"4961339a5b9802222876467f1b9f72401971b1b182df0ed539f8af350e4db2ce","signature":"ae449b28d44d6dfb5ad51d5cb45b41b53e449bdac8713a2c7d62f6d074b0ba6b"},{"version":"fabf75d0b30e2c747167a77c1dfa28626162414121689572e4e9b3fdb102a488","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"fa2304c4ca1bb6dc128259266e45d07743737fa9dc72576df51cb6cf4d967897","signature":"702f3991361fd9ae2829fee3aba7cfae33b39193f6de9200c769101cdf4c80af"},"9981b3c49f04e1a8863de178aac6499b8e3f66c498499a88ea73d7dcf823dbdf"],"root":[64,[314,321],323,324,326,327,479,480,944,[1850,1854]],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"declaration":true,"emitDeclarationOnly":true,"module":99,"noImplicitAny":true,"outDir":"../dist","skipLibCheck":true,"sourceMap":true,"strictNullChecks":true,"target":8,"tsBuildInfoFile":"./tsBuildInfoFile.info"},"referencedMap":[[1292,1],[1700,1],[1712,2],[1728,3],[1731,4],[1733,5],[1732,6],[1708,7],[1701,1],[1730,8],[1714,9],[1702,10],[1711,11],[1737,12],[1739,13],[1735,14],[1704,15],[1740,16],[1741,16],[1742,16],[1736,16],[1743,16],[1744,16],[1738,17],[1745,16],[1746,18],[1729,19],[1716,20],[1710,21],[1713,22],[1718,23],[1720,24],[1707,25],[1717,26],[1709,27],[1721,28],[1727,29],[1719,30],[1725,1],[1726,31],[1723,1],[1724,1],[1703,32],[1722,32],[1705,1],[1706,19],[1734,33],[1715,34],[1493,1],[1492,35],[1494,1],[1496,36],[1495,1],[1491,1],[1507,37],[1506,38],[1497,39],[1498,40],[1499,41],[1500,41],[1501,41],[1502,41],[1503,41],[1504,41],[1509,42],[1508,43],[1510,44],[1505,45],[1254,1],[1288,46],[1287,46],[1286,1],[1290,47],[1291,47],[1289,1],[1257,1],[1255,48],[1258,49],[1256,49],[1259,1],[1298,1],[1299,1],[1303,1],[1300,1],[1310,48],[1309,1],[1311,1],[1312,50],[1304,51],[1308,52],[1305,53],[1301,1],[1306,54],[1307,55],[1302,1],[1274,48],[1270,48],[1273,48],[1272,48],[1271,48],[1267,48],[1266,48],[1269,48],[1268,48],[1261,48],[1262,56],[1260,1],[1265,57],[1263,48],[1316,58],[1295,59],[1297,59],[1296,59],[1293,60],[1294,59],[1314,1],[1313,1],[1315,1],[1275,61],[1276,1],[1279,1],[1282,1],[1277,1],[1284,1],[1285,62],[1281,1],[1278,1],[1280,1],[1283,1],[1264,1],[65,1],[68,63],[1803,64],[1804,65],[1802,1],[1699,1],[1747,66],[1811,67],[1812,68],[1809,69],[1808,70],[1810,71],[1807,1],[1806,1],[1805,1],[1128,72],[1124,73],[1111,1],[1127,74],[1120,75],[1118,76],[1117,76],[1116,75],[1113,76],[1114,75],[1122,77],[1115,76],[1112,75],[1119,76],[1125,78],[1126,79],[1121,80],[1123,76],[67,1],[76,81],[75,82],[74,1],[798,83],[797,84],[722,1],[728,85],[730,86],[724,83],[727,87],[726,87],[731,88],[857,89],[725,83],[862,90],[733,91],[734,92],[735,93],[736,94],[737,95],[738,96],[739,97],[740,98],[741,99],[742,100],[743,101],[744,102],[745,103],[746,104],[747,105],[748,106],[788,107],[749,108],[750,109],[751,110],[752,111],[753,112],[754,113],[755,114],[756,115],[757,116],[758,117],[759,118],[760,119],[761,120],[762,121],[763,122],[764,123],[765,124],[766,125],[767,126],[768,127],[769,128],[770,129],[771,130],[772,131],[773,132],[774,133],[775,134],[776,135],[777,136],[778,137],[779,138],[780,139],[781,140],[782,141],[783,142],[784,143],[785,144],[786,145],[787,146],[732,147],[789,148],[790,147],[791,147],[792,149],[796,150],[793,147],[794,147],[795,147],[799,151],[800,90],[801,152],[802,152],[803,153],[804,152],[805,152],[806,154],[807,152],[808,155],[809,155],[810,155],[811,156],[812,155],[813,157],[814,152],[815,155],[816,153],[817,156],[818,152],[820,153],[819,152],[821,156],[822,156],[823,153],[824,152],[825,88],[826,158],[827,153],[828,153],[829,155],[830,152],[831,152],[832,153],[833,152],[850,159],[834,152],[835,90],[836,90],[837,90],[838,155],[839,155],[840,156],[841,156],[842,153],[843,90],[844,90],[845,160],[846,161],[847,152],[848,90],[849,162],[884,163],[856,164],[851,165],[852,165],[854,166],[853,165],[855,167],[861,168],[858,169],[859,169],[860,170],[729,171],[863,155],[864,1],[865,1],[866,1],[867,1],[868,1],[869,1],[883,172],[870,1],[871,1],[873,1],[874,1],[875,1],[876,1],[877,1],[872,1],[878,1],[879,1],[880,1],[881,1],[882,1],[1077,173],[1078,174],[1065,173],[1066,175],[1029,173],[1030,176],[1250,177],[1251,178],[1033,173],[1034,179],[1035,173],[1036,180],[1236,181],[1237,182],[1233,183],[1234,90],[1235,184],[1103,173],[1104,185],[1085,173],[1086,186],[1105,173],[1106,187],[1050,173],[1051,188],[1073,173],[1074,189],[1087,173],[1088,190],[1071,173],[1072,191],[1068,192],[1067,173],[1080,193],[1079,173],[1028,194],[1027,173],[1483,195],[1471,173],[1472,196],[1473,90],[1474,173],[1475,173],[1476,90],[1477,90],[1478,90],[1482,197],[1479,156],[1480,90],[1481,90],[1032,198],[1031,173],[1064,199],[1063,173],[1239,200],[1238,201],[1070,202],[1069,173],[1047,203],[1046,173],[1045,204],[1044,173],[1043,205],[1042,173],[1038,206],[1041,207],[1037,208],[1039,153],[1040,153],[1024,209],[1023,201],[1026,210],[1025,173],[1082,211],[1081,173],[1049,212],[1048,173],[1108,213],[1107,173],[1084,214],[1083,173],[1076,215],[1075,173],[720,216],[719,217],[1185,218],[723,219],[721,220],[1322,1],[1324,221],[1325,221],[1326,1],[1327,1],[1329,222],[1330,1],[1331,1],[1332,221],[1333,1],[1334,1],[1335,223],[1336,1],[1337,1],[1338,224],[1339,1],[1340,225],[1341,1],[1342,1],[1343,1],[1344,1],[1347,1],[1346,226],[1323,1],[1348,227],[1349,1],[1345,1],[1350,1],[1351,221],[1352,228],[1353,229],[126,1],[219,1],[1328,1],[1242,230],[73,231],[1196,1],[1217,232],[1202,233],[1208,234],[1206,1],[1205,235],[1207,236],[1216,237],[1211,238],[1213,239],[1214,240],[1215,241],[1209,1],[1210,241],[1212,241],[1204,241],[1203,1],[1198,1],[1197,1],[1200,233],[1201,242],[1199,233],[259,243],[260,243],[261,244],[218,245],[262,246],[263,247],[264,248],[213,1],[216,249],[214,1],[215,1],[265,250],[266,251],[267,252],[268,253],[269,254],[270,255],[271,255],[273,1],[272,256],[274,257],[275,258],[276,259],[258,260],[217,1],[277,261],[278,262],[279,263],[312,264],[280,265],[281,266],[282,267],[283,268],[284,269],[285,270],[286,271],[287,272],[288,273],[289,274],[290,274],[291,275],[292,1],[293,1],[294,276],[296,277],[295,278],[297,279],[298,280],[299,281],[300,282],[301,283],[302,284],[303,285],[304,286],[305,287],[306,288],[307,289],[308,290],[309,291],[310,292],[311,293],[510,1],[450,294],[451,295],[426,296],[429,296],[448,294],[449,294],[439,294],[438,297],[436,294],[431,294],[444,294],[442,294],[446,294],[430,294],[443,294],[447,294],[432,294],[433,294],[445,294],[427,294],[434,294],[435,294],[437,294],[441,294],[452,298],[440,294],[428,294],[465,299],[464,1],[459,298],[461,300],[460,298],[453,298],[454,298],[456,298],[458,298],[462,300],[463,300],[455,300],[457,300],[1319,301],[1318,1],[1241,1],[486,1],[1490,302],[154,303],[164,304],[153,1],[168,305],[155,306],[156,307],[158,308],[165,309],[163,310],[160,311],[161,307],[162,312],[157,1],[167,313],[159,1],[166,314],[220,1],[413,315],[423,1],[414,316],[421,1],[422,1],[415,317],[424,318],[416,319],[418,1],[417,1],[419,1],[420,1],[66,1],[322,1],[411,320],[410,321],[1428,322],[1424,1],[1425,1],[1423,1],[1426,1],[1427,1],[1429,1],[1421,1],[1422,323],[1430,324],[173,1],[172,1],[1320,325],[328,326],[1652,1],[329,327],[325,328],[412,329],[466,1],[473,330],[471,331],[472,332],[474,333],[467,334],[476,335],[477,336],[475,333],[468,337],[478,338],[469,339],[313,340],[651,341],[652,341],[653,341],[654,341],[655,341],[656,341],[657,341],[658,341],[659,341],[660,341],[661,341],[665,342],[662,341],[663,341],[664,341],[650,1],[130,343],[131,344],[129,343],[128,345],[72,346],[497,1],[1240,347],[70,348],[71,349],[409,1],[425,1],[1560,350],[1559,351],[1556,352],[1555,353],[1558,354],[1557,1],[1554,355],[1550,1],[1551,356],[1552,356],[1553,356],[1227,1],[1224,1],[1139,1],[1138,1],[1489,1],[1136,1],[1137,1],[1755,357],[1794,358],[1793,359],[1786,360],[1787,361],[1784,362],[1785,363],[1796,364],[1788,365],[1795,1],[1801,366],[1749,367],[1789,368],[1751,369],[1759,370],[1760,371],[1775,372],[1750,1],[1761,373],[1791,374],[1790,375],[1778,376],[1777,373],[1797,1],[1781,377],[1783,378],[1779,373],[1780,379],[1762,373],[1764,1],[1792,1],[1765,380],[1771,381],[1773,382],[1766,383],[1768,384],[1767,385],[1774,386],[1769,387],[1757,388],[1772,389],[1798,390],[1799,391],[1758,392],[1756,393],[1763,394],[1770,395],[1753,373],[1782,396],[1754,1],[1776,1],[1800,1],[1748,1],[1246,397],[1244,347],[1245,347],[1243,398],[127,1],[1356,399],[1321,400],[1358,401],[1357,402],[1359,1],[1433,403],[1432,1],[1436,404],[1434,405],[1317,406],[1435,407],[1360,408],[1431,409],[1420,410],[1362,411],[1363,411],[1364,411],[1365,411],[1366,411],[1418,411],[1367,411],[1368,411],[1369,411],[1370,411],[1371,411],[1372,411],[1373,411],[1374,411],[1375,411],[1376,411],[1377,411],[1378,411],[1379,411],[1380,411],[1381,411],[1382,411],[1383,411],[1384,411],[1385,411],[1386,411],[1419,411],[1387,411],[1388,411],[1389,411],[1390,411],[1391,411],[1392,411],[1393,411],[1394,411],[1395,411],[1396,411],[1397,411],[1398,411],[1399,411],[1400,411],[1401,411],[1402,411],[1403,411],[1404,411],[1405,411],[1406,411],[1407,411],[1408,411],[1409,411],[1410,411],[1411,411],[1412,411],[1413,411],[1414,411],[1415,411],[1416,411],[1417,411],[1361,412],[1354,413],[1355,414],[714,1],[69,415],[715,416],[718,417],[1184,418],[716,216],[717,419],[99,420],[98,421],[100,422],[97,423],[91,424],[92,1],[93,425],[94,425],[89,425],[90,426],[96,427],[95,421],[1469,1],[140,1],[132,428],[470,1],[1129,429],[1681,1],[408,430],[357,431],[370,432],[332,1],[384,433],[386,434],[385,434],[359,435],[358,1],[360,436],[387,437],[391,438],[389,438],[368,439],[367,1],[376,437],[335,437],[363,1],[404,440],[379,441],[381,442],[399,437],[334,443],[351,444],[366,1],[401,1],[372,445],[388,438],[392,446],[390,447],[405,1],[374,1],[348,443],[340,1],[339,448],[364,437],[365,437],[338,449],[371,1],[333,1],[350,1],[378,1],[406,450],[345,437],[346,451],[393,434],[395,452],[394,452],[330,1],[349,1],[356,1],[347,437],[377,1],[344,1],[403,1],[343,1],[341,453],[342,1],[380,1],[373,1],[400,454],[354,448],[352,448],[353,448],[369,1],[336,1],[396,438],[398,446],[397,447],[383,1],[382,455],[375,1],[362,1],[402,1],[407,1],[331,1],[361,1],[355,1],[337,448],[635,1],[62,1],[63,1],[11,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[22,1],[23,1],[4,1],[24,1],[28,1],[25,1],[26,1],[27,1],[29,1],[30,1],[31,1],[5,1],[32,1],[33,1],[34,1],[35,1],[6,1],[39,1],[36,1],[37,1],[38,1],[40,1],[7,1],[41,1],[46,1],[47,1],[42,1],[43,1],[44,1],[45,1],[8,1],[51,1],[48,1],[49,1],[50,1],[52,1],[9,1],[53,1],[54,1],[55,1],[57,1],[56,1],[58,1],[59,1],[10,1],[60,1],[1,1],[61,1],[236,456],[246,457],[235,456],[256,458],[227,459],[226,460],[255,326],[249,461],[254,462],[229,463],[243,464],[228,465],[252,466],[224,467],[223,326],[253,468],[225,469],[230,470],[231,1],[234,470],[221,1],[257,471],[247,472],[238,473],[239,474],[241,475],[237,476],[240,477],[250,326],[232,478],[233,479],[242,480],[222,481],[245,472],[244,470],[248,1],[251,482],[1752,1],[1512,483],[1231,484],[1226,485],[1230,486],[1228,487],[1229,488],[1232,489],[1225,483],[1181,490],[1180,491],[1149,492],[1177,493],[1171,493],[1172,493],[1173,494],[1174,493],[1175,493],[1176,493],[1178,493],[1179,495],[1150,496],[1153,497],[1169,496],[1147,498],[1154,499],[1156,499],[1155,500],[1161,501],[1159,502],[1160,503],[1158,504],[1157,505],[1163,506],[1142,507],[1162,508],[1145,1],[1148,509],[1167,510],[1168,511],[1146,512],[1151,513],[1144,514],[1152,515],[1141,516],[1140,517],[1143,518],[1164,519],[1165,520],[1166,521],[1170,522],[542,523],[541,524],[540,524],[539,525],[538,526],[536,527],[537,528],[530,529],[531,527],[534,1],[528,530],[524,1],[529,531],[525,530],[526,530],[527,530],[535,532],[532,527],[533,533],[516,534],[519,535],[523,536],[521,537],[518,538],[520,539],[517,535],[522,540],[1854,1],[64,1],[318,541],[319,1],[320,542],[321,543],[323,544],[324,545],[326,546],[327,545],[480,547],[479,548],[1852,549],[944,550],[1850,551],[1853,545],[1851,552],[317,553],[316,1],[314,554],[315,555],[482,556],[484,557],[481,558],[483,559],[945,560],[950,561],[951,562],[946,563],[947,563],[949,564],[948,1],[142,1],[501,558],[503,565],[502,558],[109,566],[115,567],[114,568],[111,569],[122,1],[118,567],[123,1],[117,570],[103,571],[125,572],[110,573],[119,567],[112,574],[120,567],[121,575],[108,576],[116,577],[102,578],[124,567],[101,579],[113,580],[1249,581],[1247,1],[1248,1],[105,582],[107,583],[106,582],[104,1],[143,584],[80,585],[81,586],[84,587],[78,586],[77,588],[82,586],[79,586],[83,589],[493,558],[504,590],[543,591],[490,592],[507,593],[505,594],[506,595],[500,596],[514,1],[487,597],[499,598],[511,599],[544,600],[515,601],[488,602],[492,603],[489,604],[508,605],[509,606],[512,607],[513,558],[491,608],[498,609],[496,610],[494,558],[495,611],[556,612],[554,558],[555,613],[623,614],[622,588],[621,1],[1095,615],[1091,616],[1090,1],[1092,617],[1093,616],[1094,617],[1195,1],[1220,618],[1218,619],[1219,620],[1089,621],[1110,622],[1022,173],[1101,623],[1102,624],[1097,625],[1098,626],[1100,627],[1099,173],[1096,628],[1057,177],[1058,173],[1060,173],[1054,629],[1056,173],[1052,629],[1062,630],[1059,173],[1053,629],[1055,631],[1061,173],[1109,632],[144,563],[175,1],[174,633],[150,634],[148,1],[149,1],[151,635],[152,636],[176,1],[180,637],[178,638],[147,639],[145,640],[171,641],[141,642],[146,643],[177,644],[179,1],[170,645],[133,602],[169,646],[899,647],[1836,588],[647,588],[672,648],[935,649],[933,650],[939,651],[936,648],[934,652],[938,588],[937,653],[193,654],[976,655],[973,656],[974,657],[975,658],[549,659],[548,660],[673,1],[1015,588],[906,661],[904,662],[905,1],[674,663],[999,664],[998,665],[997,1],[550,1],[551,666],[903,667],[1849,588],[671,668],[670,669],[675,670],[1519,588],[560,671],[565,672],[564,673],[559,674],[563,675],[676,676],[1517,588],[566,677],[677,678],[1014,679],[1011,678],[1013,558],[1012,680],[207,681],[206,682],[678,683],[1828,684],[1825,685],[1826,686],[1827,687],[185,1],[186,688],[897,689],[1830,690],[1829,691],[645,692],[679,693],[971,694],[972,695],[980,696],[979,697],[970,698],[977,699],[978,700],[546,1],[547,701],[545,662],[955,702],[956,703],[954,602],[567,602],[902,704],[1841,705],[1843,706],[1844,707],[1837,708],[1842,709],[1839,710],[1838,711],[1840,712],[649,713],[648,714],[680,715],[931,716],[929,717],[928,718],[932,719],[927,720],[930,721],[926,722],[190,1],[191,723],[188,724],[192,725],[187,726],[189,727],[681,728],[1659,729],[1670,730],[1650,731],[1651,732],[1668,733],[1657,734],[1661,735],[1663,735],[1662,736],[1664,737],[1665,735],[1666,738],[1658,739],[1660,740],[1667,741],[1655,742],[1654,743],[1653,744],[1669,745],[1656,746],[580,747],[582,748],[579,749],[578,750],[581,751],[683,752],[1697,753],[1695,754],[1696,755],[88,756],[86,757],[85,1],[87,758],[682,759],[911,760],[910,761],[583,762],[684,1],[1526,588],[585,763],[584,1],[685,764],[1529,765],[1527,766],[1528,767],[588,1],[590,768],[587,769],[586,770],[589,771],[686,772],[1523,773],[1521,774],[1522,775],[137,1],[138,776],[135,777],[134,558],[136,778],[900,779],[1848,780],[1846,781],[1845,779],[1847,782],[669,783],[667,784],[666,785],[668,786],[687,787],[1819,588],[593,788],[591,642],[592,1],[688,1],[1002,789],[1000,790],[1001,791],[561,1],[562,792],[689,793],[1698,669],[595,794],[594,795],[690,796],[1518,797],[597,1],[598,798],[596,799],[1003,588],[599,669],[898,800],[1831,588],[646,588],[691,801],[1005,802],[1004,801],[600,602],[692,803],[993,804],[991,805],[992,806],[601,1],[602,807],[693,1],[957,1],[960,808],[958,809],[959,810],[485,811],[694,812],[1813,813],[1817,814],[1814,815],[1815,816],[1816,817],[210,1],[212,818],[209,819],[208,820],[211,821],[896,822],[644,692],[901,823],[1673,824],[1671,825],[1672,826],[638,827],[634,669],[637,828],[636,1],[695,829],[940,830],[943,831],[941,832],[942,833],[200,834],[198,1],[199,558],[962,835],[961,836],[603,669],[696,837],[181,602],[1692,838],[1691,839],[1690,840],[606,841],[604,842],[605,1],[700,843],[1818,844],[699,845],[697,846],[698,1],[701,847],[1835,848],[1834,849],[1832,850],[1833,851],[610,852],[612,853],[609,854],[611,855],[702,856],[1649,857],[1648,858],[615,859],[614,860],[613,861],[703,862],[1568,863],[1569,864],[1570,865],[1571,864],[1572,864],[1573,866],[1575,867],[1574,868],[1576,866],[1578,869],[1577,868],[1579,866],[1581,870],[1580,868],[1582,871],[1534,872],[1537,873],[1538,874],[1539,875],[1541,876],[1544,877],[1545,878],[1542,879],[1546,880],[1547,881],[1548,881],[1543,880],[1540,724],[1549,881],[1535,881],[1567,882],[1561,883],[1536,881],[1562,1],[1563,880],[1565,884],[1566,878],[1564,885],[569,724],[574,886],[570,887],[571,888],[572,888],[573,888],[575,889],[893,890],[1686,891],[1689,892],[1683,893],[1680,894],[1688,895],[1684,896],[1687,897],[1678,1],[1685,898],[1682,899],[1679,900],[643,901],[704,902],[985,795],[986,903],[981,904],[984,905],[619,1],[620,906],[618,907],[705,908],[1520,588],[568,909],[706,910],[990,911],[987,912],[989,633],[988,913],[196,1],[197,914],[194,915],[195,602],[909,916],[907,588],[908,1],[707,917],[1525,918],[1524,919],[626,920],[624,602],[625,558],[708,921],[983,922],[982,923],[617,924],[616,558],[709,925],[1010,926],[1008,927],[1009,928],[552,1],[553,929],[710,930],[969,931],[968,932],[558,933],[557,934],[711,1],[996,935],[994,936],[995,937],[627,938],[712,939],[1007,940],[1006,941],[139,846],[713,942],[1821,943],[1822,944],[1824,945],[1820,946],[1823,947],[630,1],[631,948],[629,949],[628,950],[888,951],[1486,952],[1223,953],[1253,954],[1437,955],[1021,956],[1438,957],[1191,958],[1439,959],[1440,960],[1441,961],[1443,962],[1444,963],[1252,627],[1445,173],[1446,173],[1135,964],[1192,965],[1182,966],[1447,967],[1183,968],[1449,969],[1448,970],[1190,971],[1450,972],[1455,173],[1451,973],[1452,970],[1453,974],[1484,975],[1454,173],[1221,976],[1189,977],[1456,978],[1458,979],[1461,980],[1462,981],[1457,1],[1463,980],[1464,981],[1459,982],[1465,983],[1460,984],[1468,985],[1188,986],[1466,987],[1467,988],[1186,989],[1187,990],[1470,991],[1222,992],[1134,993],[1442,558],[1193,994],[1130,1],[1133,995],[1132,996],[1131,669],[1515,997],[1485,998],[1488,951],[1511,999],[1513,1000],[1487,1001],[1514,1002],[1194,1003],[887,1004],[886,1005],[885,1006],[889,1007],[1533,1008],[1530,1009],[1531,1010],[1532,1011],[607,1],[608,1012],[890,1013],[1020,1014],[1516,1015],[1017,1016],[1016,1017],[1018,1018],[1019,1019],[632,1],[633,1020],[891,1021],[1630,1022],[1632,1023],[1631,1024],[1633,1025],[1634,1023],[1635,1023],[1636,1022],[1637,1022],[1638,1026],[1639,1027],[1640,1028],[1641,1029],[1642,1030],[1643,1031],[1644,1027],[1645,1028],[1647,1032],[1585,1033],[1646,1034],[1613,1035],[1623,1036],[1619,1035],[1614,1035],[1624,1035],[1620,1035],[1621,1037],[1625,1038],[1616,1039],[1612,633],[1615,1],[1611,1040],[1608,1041],[1584,1042],[1586,1043],[1587,1043],[1588,1044],[1589,1042],[1590,1043],[1591,1042],[1592,1042],[1593,1042],[1594,1042],[1595,1042],[1596,1042],[1597,1043],[1598,1043],[1599,1045],[1600,1045],[1601,1046],[1602,1047],[1603,1043],[1604,1047],[1605,1047],[1606,1048],[1607,1049],[1609,1050],[1610,1051],[1618,1052],[1622,1053],[1626,1054],[1583,724],[1617,1055],[1629,1056],[1627,1057],[1628,1058],[577,1059],[576,1060],[892,901],[1677,1061],[1675,1062],[1674,1063],[1676,1064],[642,1065],[640,1066],[639,602],[641,1067],[894,1068],[916,1069],[921,1070],[917,1071],[918,1072],[923,863],[925,1073],[919,1074],[924,1071],[912,1075],[913,795],[922,1071],[915,1076],[914,1077],[920,1078],[184,1079],[182,1080],[183,558],[895,1081],[967,1082],[964,1083],[966,1084],[963,1085],[965,1086],[203,1],[205,1087],[202,1088],[201,762],[204,1],[953,1089],[1694,1090],[1693,1091],[952,1092]],"version":"5.8.3"} \ No newline at end of file diff --git a/scripts/off/desktop/.validate/validate-err.log b/scripts/off/desktop/.validate/validate-err.log new file mode 100644 index 0000000..e69de29 diff --git a/scripts/off/desktop/.validate/validate.log b/scripts/off/desktop/.validate/validate.log new file mode 100644 index 0000000..e69de29 diff --git a/scripts/off/desktop/config/rig.json b/scripts/off/desktop/config/rig.json new file mode 100644 index 0000000..b583544 --- /dev/null +++ b/scripts/off/desktop/config/rig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json", + "rigPackageName": "@hcengineering/platform-rig", + "rigProfile": "package" +} diff --git a/scripts/off/desktop/contextBridge.svg b/scripts/off/desktop/contextBridge.svg new file mode 100644 index 0000000..fba626b --- /dev/null +++ b/scripts/off/desktop/contextBridge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scripts/off/desktop/declarations.d.ts b/scripts/off/desktop/declarations.d.ts new file mode 100644 index 0000000..e0d241b --- /dev/null +++ b/scripts/off/desktop/declarations.d.ts @@ -0,0 +1 @@ +declare module "electron-windows-badge" \ No newline at end of file diff --git a/scripts/off/desktop/jest.config.js b/scripts/off/desktop/jest.config.js new file mode 100644 index 0000000..a447f7d --- /dev/null +++ b/scripts/off/desktop/jest.config.js @@ -0,0 +1,18 @@ +module.exports = { + projects: [ + { + displayName: 'node', + testEnvironment: 'node', + preset: 'ts-jest', + testMatch: ['/src/__test__/main/**/*.test.ts'] + }, + { + displayName: 'jsdom', + testEnvironment: 'jsdom', + preset: 'ts-jest', + testMatch: ['/src/__test__/ui/**/*.test.ts'] + } + ], + roots: ["./src", "./tests"], + coverageReporters: ["text-summary", "html"], +} diff --git a/scripts/off/desktop/package.json b/scripts/off/desktop/package.json new file mode 100644 index 0000000..ce2725d --- /dev/null +++ b/scripts/off/desktop/package.json @@ -0,0 +1,282 @@ +{ + "name": "@hcengineering/desktop", + "version": "0.6.465", + "main": "dist/main/electron.js", + "template": "@hcengineering/webpack-package", + "scripts": { + "build": "compile", + "build:watch": "tsc", + "_phase:package": "rushx package", + "_phase:validate": "compile validate", + "_phase:test": "jest --passWithNoTests --silent --forceExit --detectOpenHandles", + "package": "rushx bump && cross-env MODEL_VERSION=$(node ../common/scripts/show_version.js) VERSION=$(node ../common/scripts/show_tag.js) NODE_ENV=production NODE_OPTIONS='--max-old-space-size=4094' webpack --stats-error-details && echo 'done'", + "webpack": "cross-env MODEL_VERSION=$(node ../common/scripts/show_version.js) VERSION=$(node ../common/scripts/show_tag.js) NODE_ENV=development webpack --stats-error-details --progress -w", + "devp": "cross-env MODEL_VERSION=$(node ../common/scripts/show_version.js) VERSION=$(node ../common/scripts/show_tag.js) NODE_ENV=production CLIENT_TYPE=dev webpack --progress -w", + "dev": "cross-env MODEL_VERSION=$(node ../common/scripts/show_version.js) VERSION=$(node ../common/scripts/show_tag.js) NODE_ENV=development webpack --progress -w", + "start": "cross-env MODEL_VERSION=$(node ../common/scripts/show_version.js) VERSION=$(node ../common/scripts/show_tag.js) NODE_ENV=production electron --no-sandbox .", + "start-dev": "cross-env MODEL_VERSION=$(node ../common/scripts/show_version.js) VERSION=$(node ../common/scripts/show_tag.js) NODE_ENV=development electron --no-sandbox .", + "test": "jest --passWithNoTests --silent --forceExit --verbose --detectOpenHandles", + "test:debug": "node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand --no-cache", + "format": "format", + "bump": "bump-package-version" + }, + "devDependencies": { + "@hcengineering/platform-rig": "^0.6.0", + "@vercel/webpack-asset-relocator-loader": "^1.7.3", + "node-loader": "~2.0.0", + "cross-env": "~7.0.3", + "webpack-cli": "^5.1.4", + "webpack": "^5.97.1", + "mini-css-extract-plugin": "^2.2.0", + "dotenv-webpack": "^8.0.1", + "ts-loader": "^9.2.5", + "svelte-loader": "^3.2.0", + "css-loader": "^5.2.1", + "webpack-dev-server": "^4.11.1", + "style-loader": "^3.3.1", + "file-loader": "^6.2.0", + "sass-loader": "^13.2.0", + "webpack-bundle-analyzer": "^4.10.2", + "svgo-loader": "^3.0.0", + "autoprefixer": "^10.4.14", + "postcss": "^8.4.20", + "postcss-loader": "^7.0.2", + "postcss-load-config": "^4.0.1", + "compression-webpack-plugin": "^10.0.0", + "html-webpack-plugin": "^5.5.0", + "fork-ts-checker-webpack-plugin": "^9.0.2", + "update-browserslist-db": "^1.1.3", + "browserslist": "^4.25.0", + "typescript": "^5.8.3", + "ts-node": "^10.8.0", + "ts-node-dev": "^2.0.0", + "electron": "^36.3.1", + "@types/node": "^22.15.29", + "copy-webpack-plugin": "^11.0.0", + "@typescript-eslint/eslint-plugin": "^6.11.0", + "@typescript-eslint/parser": "^6.11.0", + "eslint-config-standard-with-typescript": "^40.0.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-n": "^15.4.0", + "eslint-plugin-promise": "^6.1.1", + "eslint": "^8.54.0", + "prettier": "^3.1.0", + "esbuild": "^0.24.2", + "esbuild-loader": "^4.0.3", + "svelte-preprocess": "^5.1.3", + "@types/ws": "^8.5.11", + "jest": "^29.7.0", + "ts-jest": "^29.1.1", + "@types/jest": "^29.5.5", + "@testing-library/jest-dom": "^6.6.3" + }, + "dependencies": { + "@hcengineering/platform": "^0.6.11", + "@hcengineering/ui": "^0.6.15", + "@hcengineering/theme": "^0.6.5", + "@hcengineering/login": "^0.6.12", + "@hcengineering/login-assets": "^0.6.0", + "@hcengineering/login-resources": "^0.6.2", + "@hcengineering/onboard": "^0.6.0", + "@hcengineering/onboard-assets": "^0.6.0", + "@hcengineering/onboard-resources": "^0.6.0", + "@hcengineering/client": "^0.6.18", + "@hcengineering/workbench": "^0.6.16", + "@hcengineering/workbench-resources": "^0.6.1", + "@hcengineering/view": "^0.6.13", + "@hcengineering/view-assets": "^0.6.11", + "@hcengineering/view-resources": "^0.6.0", + "@hcengineering/contact": "^0.6.24", + "@hcengineering/contact-resources": "^0.6.0", + "@hcengineering/task": "^0.6.20", + "@hcengineering/task-assets": "^0.6.19", + "@hcengineering/task-resources": "^0.6.0", + "@hcengineering/chunter": "^0.6.20", + "@hcengineering/chunter-assets": "^0.6.18", + "@hcengineering/chunter-resources": "^0.6.0", + "@hcengineering/recruit": "^0.6.29", + "@hcengineering/recruit-assets": "^0.6.23", + "@hcengineering/recruit-resources": "^0.6.0", + "@hcengineering/setting": "^0.6.17", + "@hcengineering/setting-assets": "^0.6.15", + "@hcengineering/setting-resources": "^0.6.0", + "@hcengineering/client-resources": "^0.6.27", + "@hcengineering/contact-assets": "^0.6.13", + "@hcengineering/activity": "^0.6.0", + "@hcengineering/activity-assets": "^0.6.3", + "@hcengineering/activity-resources": "^0.6.1", + "@hcengineering/telegram": "^0.6.21", + "@hcengineering/telegram-assets": "^0.6.0", + "@hcengineering/telegram-resources": "^0.6.0", + "@hcengineering/workbench-assets": "^0.6.14", + "@hcengineering/attachment": "^0.6.14", + "@hcengineering/attachment-assets": "^0.6.11", + "@hcengineering/attachment-resources": "^0.6.0", + "@hcengineering/lead": "^0.6.0", + "@hcengineering/lead-assets": "^0.6.0", + "@hcengineering/lead-resources": "^0.6.0", + "@hcengineering/gmail": "^0.6.22", + "@hcengineering/gmail-assets": "^0.6.0", + "@hcengineering/gmail-resources": "^0.6.0", + "@hcengineering/image-cropper": "^0.6.0", + "@hcengineering/image-cropper-resources": "^0.6.0", + "@hcengineering/inventory": "^0.6.11", + "@hcengineering/inventory-assets": "^0.6.11", + "@hcengineering/inventory-resources": "^0.6.0", + "@hcengineering/templates": "^0.6.11", + "@hcengineering/templates-assets": "^0.6.11", + "@hcengineering/templates-resources": "^0.6.0", + "@hcengineering/notification": "^0.6.23", + "@hcengineering/notification-assets": "^0.6.17", + "@hcengineering/notification-resources": "^0.6.0", + "@hcengineering/preference": "^0.6.13", + "@hcengineering/preference-assets": "^0.6.0", + "@hcengineering/core": "^0.6.32", + "@hcengineering/rekoni": "^0.6.0", + "@hcengineering/tags-assets": "^0.6.0", + "@hcengineering/tags": "^0.6.16", + "@hcengineering/tags-resources": "^0.6.0", + "@hcengineering/calendar": "^0.6.24", + "@hcengineering/calendar-assets": "^0.6.22", + "@hcengineering/calendar-resources": "^0.6.0", + "@hcengineering/presentation": "^0.6.3", + "@hcengineering/tracker": "^0.6.24", + "@hcengineering/tracker-assets": "^0.6.0", + "@hcengineering/tracker-resources": "^0.6.0", + "@hcengineering/text-editor": "^0.6.0", + "@hcengineering/text-editor-assets": "^0.6.0", + "@hcengineering/text-editor-resources": "^0.6.0", + "@hcengineering/board": "^0.6.19", + "@hcengineering/board-assets": "^0.6.19", + "@hcengineering/board-resources": "^0.6.0", + "@hcengineering/hr": "^0.6.19", + "@hcengineering/hr-assets": "^0.6.19", + "@hcengineering/hr-resources": "^0.6.0", + "@hcengineering/bitrix": "^0.6.52", + "@hcengineering/bitrix-assets": "^0.6.0", + "@hcengineering/bitrix-resources": "^0.6.0", + "@hcengineering/request": "^0.6.14", + "@hcengineering/request-assets": "^0.6.0", + "@hcengineering/request-resources": "^0.6.0", + "@hcengineering/drive": "^0.6.0", + "@hcengineering/drive-assets": "^0.6.0", + "@hcengineering/drive-resources": "^0.6.0", + "@hcengineering/support": "^0.6.5", + "@hcengineering/support-assets": "^0.6.5", + "@hcengineering/support-resources": "^0.6.0", + "@hcengineering/diffview": "^0.6.0", + "@hcengineering/diffview-assets": "^0.6.0", + "@hcengineering/diffview-resources": "^0.6.0", + "@hcengineering/time": "^0.6.0", + "@hcengineering/time-assets": "^0.6.0", + "@hcengineering/time-resources": "^0.6.0", + "@hcengineering/github": "^0.6.0", + "@hcengineering/github-assets": "^0.6.0", + "@hcengineering/github-resources": "^0.6.0", + "@hcengineering/desktop-preferences": "^0.6.0", + "@hcengineering/desktop-preferences-assets": "^0.6.0", + "@hcengineering/desktop-preferences-resources": "^0.6.0", + "@hcengineering/desktop-downloads": "^0.6.0", + "@hcengineering/desktop-downloads-assets": "^0.6.0", + "@hcengineering/desktop-downloads-resources": "^0.6.0", + "@hcengineering/document": "^0.6.0", + "@hcengineering/document-assets": "^0.6.0", + "@hcengineering/document-resources": "^0.6.0", + "@hcengineering/love": "^0.6.0", + "@hcengineering/love-assets": "^0.6.0", + "@hcengineering/love-resources": "^0.6.0", + "@hcengineering/sign": "^0.6.0", + "@hcengineering/print": "^0.6.0", + "@hcengineering/print-assets": "^0.6.0", + "@hcengineering/print-resources": "^0.6.0", + "@hcengineering/guest": "^0.6.4", + "@hcengineering/guest-assets": "^0.6.0", + "@hcengineering/guest-resources": "^0.6.0", + "@hcengineering/presence": "^0.6.0", + "@hcengineering/presence-resources": "^0.6.0", + "@hcengineering/media": "^0.6.0", + "@hcengineering/media-assets": "^0.6.0", + "@hcengineering/media-resources": "^0.6.0", + "@hcengineering/recorder": "^0.6.0", + "@hcengineering/recorder-assets": "^0.6.0", + "@hcengineering/recorder-resources": "^0.6.0", + "@hcengineering/uploader": "^0.6.0", + "@hcengineering/uploader-assets": "^0.6.0", + "@hcengineering/uploader-resources": "^0.6.0", + "@hcengineering/controlled-documents": "^0.1.0", + "@hcengineering/controlled-documents-assets": "^0.1.0", + "@hcengineering/controlled-documents-resources": "^0.1.0", + "@hcengineering/questions": "^0.1.0", + "@hcengineering/questions-assets": "^0.1.0", + "@hcengineering/questions-resources": "^0.1.0", + "@hcengineering/training": "^0.1.0", + "@hcengineering/training-assets": "^0.1.0", + "@hcengineering/training-resources": "^0.1.0", + "@hcengineering/server-training": "^0.1.0", + "@hcengineering/server-training-resources": "^0.1.0", + "@hcengineering/products": "^0.1.0", + "@hcengineering/products-assets": "^0.1.0", + "@hcengineering/products-resources": "^0.1.0", + "@hcengineering/process": "^0.6.0", + "@hcengineering/process-assets": "^0.6.0", + "@hcengineering/process-resources": "^0.6.0", + "@hcengineering/analytics-providers": "^0.6.0", + "@hcengineering/analytics-collector": "^0.6.0", + "@hcengineering/analytics-collector-assets": "^0.6.0", + "@hcengineering/analytics-collector-resources": "^0.6.0", + "@hcengineering/ai-bot": "^0.6.0", + "@hcengineering/ai-bot-resources": "^0.6.0", + "@hcengineering/test-management": "^0.6.0", + "@hcengineering/test-management-assets": "^0.6.0", + "@hcengineering/test-management-resources": "^0.6.0", + "@hcengineering/survey": "^0.6.0", + "@hcengineering/survey-assets": "^0.6.0", + "@hcengineering/survey-resources": "^0.6.0", + "@hcengineering/card": "^0.6.0", + "@hcengineering/card-assets": "^0.6.0", + "@hcengineering/card-resources": "^0.6.0", + "@hcengineering/export": "^0.6.0", + "@hcengineering/export-assets": "^0.6.0", + "@hcengineering/export-resources": "^0.6.0", + "@hcengineering/mail": "^0.6.0", + "@hcengineering/mail-assets": "^0.6.0", + "@hcengineering/chat": "^0.6.0", + "@hcengineering/chat-assets": "^0.6.0", + "@hcengineering/chat-resources": "^0.6.0", + "@hcengineering/inbox": "^0.6.0", + "@hcengineering/inbox-assets": "^0.6.0", + "@hcengineering/inbox-resources": "^0.6.0", + "@hcengineering/achievement": "^0.6.0", + "@hcengineering/achievement-assets": "^0.6.0", + "@hcengineering/achievement-resources": "^0.6.0", + "@hcengineering/communication": "^0.6.0", + "@hcengineering/communication-assets": "^0.6.0", + "@hcengineering/communication-resources": "^0.6.0", + "@hcengineering/emoji": "^0.6.0", + "@hcengineering/emoji-assets": "^0.6.0", + "@hcengineering/emoji-resources": "^0.6.0", + "@hcengineering/billing": "^0.6.0", + "@hcengineering/billing-assets": "^0.6.0", + "@hcengineering/billing-resources": "^0.6.0", + "electron-squirrel-startup": "~1.0.0", + "dotenv": "~16.0.0", + "electron-context-menu": "^4.0.4", + "electron-windows-badge": "^1.1.0", + "svelte": "^4.2.19", + "commander": "^8.1.0", + "electron-store": "^8.2.0", + "electron-log": "^5.1.7", + "electron-updater": "^6.3.4", + "livekit-client": "^2.13.3", + "@hcengineering/server-backup": "^0.6.0", + "@hcengineering/communication-types": "^0.1.0", + "ws": "^8.18.2" + }, + "productName": "Huly Desktop", + "description": "Huly Desktop experience", + "keywords": [ + "electron", + "typescript", + "svelte" + ] +} diff --git a/scripts/off/desktop/postcss.config.js b/scripts/off/desktop/postcss.config.js new file mode 100644 index 0000000..88752c6 --- /dev/null +++ b/scripts/off/desktop/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: [ + require('autoprefixer') + ] +} diff --git a/scripts/off/desktop/public/AppIcon.png b/scripts/off/desktop/public/AppIcon.png new file mode 100644 index 0000000..9515b7b Binary files /dev/null and b/scripts/off/desktop/public/AppIcon.png differ diff --git a/scripts/off/desktop/readme.md b/scripts/off/desktop/readme.md new file mode 100644 index 0000000..796850e --- /dev/null +++ b/scripts/off/desktop/readme.md @@ -0,0 +1,12 @@ +## electron-builder + +The `package.json` has a `build` section for running +[electron-builder](https://www.electron.build/). I didn't add it +to this project's dependency list because many people prefer to install +it globally. If you do not wish to use electon-builder, simply +disregard or remove the `build` section from `package.json`. + +Note that this project's build configuration overrides the default +output directory to be `deploy` instead of `dist`, since `dist` is +already being used for the transpilation target. The `dist` directory +is the **source** for electron-builder. diff --git a/scripts/off/desktop/src/__test__/main/selfCheckingNode.test.ts b/scripts/off/desktop/src/__test__/main/selfCheckingNode.test.ts new file mode 100644 index 0000000..b21a301 --- /dev/null +++ b/scripts/off/desktop/src/__test__/main/selfCheckingNode.test.ts @@ -0,0 +1,22 @@ +// +// Copyright © 2025 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +describe('node environment self checking', () => { + test('check Jest\'s node environment', () => { + const isNodeAvailable = typeof process !== 'undefined'; + expect(isNodeAvailable).toBe(true); + }) + +}) diff --git a/scripts/off/desktop/src/__test__/ui/menuBuilder.test.ts b/scripts/off/desktop/src/__test__/ui/menuBuilder.test.ts new file mode 100644 index 0000000..165c7e5 --- /dev/null +++ b/scripts/off/desktop/src/__test__/ui/menuBuilder.test.ts @@ -0,0 +1,365 @@ +// +// Copyright © 2025 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import '@testing-library/jest-dom'; + +import { MenuBuilder } from '../../ui/titleBarMenu'; +import { MenuBarAction } from '../../ui/types'; + +describe('MenuBuilder', () => { + let systemUnderTest: MenuBuilder; + + beforeEach(() => { + systemUnderTest = new MenuBuilder(); + document.body.innerHTML = ''; + }); + + function verifyTopLevelMenu(menuBar: HTMLElement, topLevelMenu: number, expectedMenuName: string, expectedAccelerator: string) { + const menuButton = menuBar.children[topLevelMenu].children[0] as HTMLElement; + expect(menuButton.dataset.menu).toBe(expectedMenuName); + expect(menuButton.dataset.accelerator).toBe(expectedAccelerator); + } + + describe('addTopLevelMenu', () => { + test('add a top-level menu', () => { + systemUnderTest.addTopLevelMenu('File', 'f'); + + const builtMenu = systemUnderTest.build(); + + expect(builtMenu.children).toHaveLength(1); + verifyTopLevelMenu(builtMenu, 0, 'file', 'f'); + }); + + test('method chaining', () => { + const result = systemUnderTest + .addTopLevelMenu('File', 'f') + .addTopLevelMenu('Edit', 'e'); + + expect(result).toBe(systemUnderTest); + }); + + test('add multiple top-level menus', () => { + systemUnderTest + .addTopLevelMenu('File', 'f') + .addTopLevelMenu('Edit', 'e') + .addTopLevelMenu('View', 'v'); + + const builtMenu = systemUnderTest.build(); + + expect(builtMenu.children).toHaveLength(3); + verifyTopLevelMenu(builtMenu, 0, 'file', 'f'); + verifyTopLevelMenu(builtMenu, 1, 'edit', 'e'); + verifyTopLevelMenu(builtMenu, 2, 'view', 'v'); + }); + }); + + describe('addMenuItem', () => { + beforeEach(() => { + systemUnderTest.addTopLevelMenu('File', 'f'); + }); + + test('add a menu item to existing top-level menu', () => { + systemUnderTest.addMenuItem(0, 'New', 'redo', 'Ctrl+N'); + + const builtMenu = systemUnderTest.build(); + + const dropdown = builtMenu.children[0].children[1]; + expect(dropdown.children).toHaveLength(1); + + const menuItem = dropdown.children[0] as HTMLElement; + expect(menuItem.dataset.action).toBe('redo'); + }); + + test('add menu item with custom accelerator character', () => { + systemUnderTest.addMenuItem(0, 'Save As', 'select-all', 'Ctrl+Shift+S', 'a'); + + const builtMenu = systemUnderTest.build(); + + const dropdown = builtMenu.children[0].children[1]; + const menuItem = dropdown.children[0] as HTMLElement; + expect(menuItem.dataset.accelerator).toBe('a'); + }); + + test('default accelerator', () => { + systemUnderTest.addMenuItem(0, 'Open', 'undo', 'Ctrl+O'); + + const builtMenu = systemUnderTest.build(); + + const dropdown = builtMenu.children[0].children[1]; + const menuItem = dropdown.children[0] as HTMLElement; + expect(menuItem.dataset.accelerator).toBe('o'); + }); + + test.each([[999], [-1],])("invalid top-level menu index", (input: number) => { + systemUnderTest.addMenuItem(input, 'Invalid', 'invalid' as MenuBarAction, 'Ctrl+I'); + + const builtMenu = systemUnderTest.build(); + + const dropdown = builtMenu.children[0].children[1]; + expect(dropdown.children).toHaveLength(0); + }); + + test('add multiple menu items to the same top-level menu', () => { + systemUnderTest + .addMenuItem(0, 'New', 'paste', 'Ctrl+N') + .addMenuItem(0, 'Open', 'cut', 'Ctrl+O') + .addMenuItem(0, 'Save', 'copy', 'Ctrl+S'); + + const builtMenu = systemUnderTest.build(); + + const dropdown = builtMenu.children[0].children[1]; + expect(dropdown.children).toHaveLength(3); + }); + }); + + describe('addSeparator', () => { + beforeEach(() => { + systemUnderTest.addTopLevelMenu('File', 'f'); + }); + + test('add a separator', () => { + systemUnderTest.addSeparator(0); + + const builtMenu = systemUnderTest.build(); + + const dropdown = builtMenu.children[0].children[1]; + expect(dropdown.children).toHaveLength(1); + expect(dropdown.children[0]).toHaveClass('desktop-app-dropdown-separator'); + }); + + test.each([[999], [-1],])("invalid top-level menu index", (input: number) => { + systemUnderTest.addSeparator(999); + + const builtMenu = systemUnderTest.build(); + + const dropdown = builtMenu.children[0].children[1]; + expect(dropdown.children).toHaveLength(0); + }); + }); + + describe('build', () => { + test('build empty menu bar', () => { + const builtMenu = systemUnderTest.build(); + + expect(builtMenu).toHaveClass('desktop-app-menu-bar'); + expect(builtMenu.children).toHaveLength(0); + }); + + test('menu bar with complex structure of a single top-level menu', () => { + const topLevelMenu = 0; + systemUnderTest + .addTopLevelMenu('File', 'f') + .addMenuItem(topLevelMenu, 'New', 'paste', 'Ctrl+N') + .addSeparator(topLevelMenu) + .addMenuItem(topLevelMenu, 'Exit', 'exit', 'Alt+F4'); + + const builtMenu = systemUnderTest.build(); + + expect(builtMenu).toHaveClass('desktop-app-menu-bar'); + expect(builtMenu.children).toHaveLength(1); + + const topLevelMenuItem = builtMenu.children[0]; + expect(topLevelMenuItem).toHaveClass('desktop-app-menu-item'); + expect(topLevelMenuItem.children).toHaveLength(2); + + const topButton = topLevelMenuItem.children[0]; + expect(topButton).toHaveClass('desktop-app-top-menu-button'); + + const dropdown = topLevelMenuItem.children[1]; + expect(dropdown).toHaveClass('desktop-app-dropdown-menu'); + expect(dropdown.id).toBe('file-menu'); + expect(dropdown.children).toHaveLength(3); // New, separator, Exit + }); + + test('accelerator at the beginning of label', () => { + systemUnderTest.addTopLevelMenu('File', 'f'); + + const builtMenu = systemUnderTest.build(); + + const topButton = builtMenu.children[0].children[0]; + expect(topButton.textContent).toBe('File'); + + const acceleratorSpan = topButton.querySelector('.desktop-app-accelerator'); + expect(acceleratorSpan).toBeTruthy(); + expect(acceleratorSpan?.textContent).toBe('F'); + }); + + test('accelerator in the middle of label', () => { + systemUnderTest.addTopLevelMenu('Edit', 'i'); // 'i' is in the middle of 'Edit' + + const builtMenu = systemUnderTest.build(); + + const topButton = builtMenu.children[0].children[0]; + expect(topButton.textContent).toBe('Edit'); + + const acceleratorSpan = topButton.querySelector('.desktop-app-accelerator'); + expect(acceleratorSpan).toBeTruthy(); + expect(acceleratorSpan?.textContent).toBe('i'); + }); + + test('accelerator not found in label', () => { + systemUnderTest.addTopLevelMenu('File', 'z'); // 'z' is not in 'File' + + const builtMenu = systemUnderTest.build(); + + const topButton = builtMenu.children[0].children[0]; + expect(topButton.textContent).toBe('File'); + expect(topButton.querySelector('.desktop-app-accelerator')).toBeNull(); + }); + + test('dropdown items with shortcuts', () => { + systemUnderTest + .addTopLevelMenu('File', 'f') + .addMenuItem(0, 'New', 'paste', 'Ctrl+N'); + + const builtMenu = systemUnderTest.build(); + + const dropdownItem = builtMenu.children[0].children[1].children[0] as HTMLElement; + expect(dropdownItem).toHaveClass('desktop-app-dropdown-item'); + expect(dropdownItem.dataset.action).toBe('paste'); + + const shortcutSpan = dropdownItem.querySelector('.desktop-app-shortcut'); + expect(shortcutSpan).toBeTruthy(); + expect(shortcutSpan?.textContent).toBe('Ctrl+N'); + }); + + test('without shortcuts when empty', () => { + systemUnderTest + .addTopLevelMenu('File', 'f') + .addMenuItem(0, 'New', 'paste', ''); + + const builtMenu = systemUnderTest.build(); + + const dropdownItem = builtMenu.children[0].children[1].children[0]; + const shortcutSpan = dropdownItem.querySelector('.desktop-app-shortcut'); + expect(shortcutSpan).toBeNull(); + }); + + test('accelerator characters in dropdown items', () => { + systemUnderTest + .addTopLevelMenu('File', 'f') + .addMenuItem(0, 'New', 'paste', 'Ctrl+N') + .addMenuItem(0, 'Open', 'cut', 'Ctrl+O', 'p'); + + const builtMenu = systemUnderTest.build(); + + const dropdown = builtMenu.children[0].children[1]; + const newItem = dropdown.children[0] as HTMLElement; + const openItem = dropdown.children[1] as HTMLElement; + + expect(newItem.dataset.accelerator).toBe('n'); + expect(openItem.dataset.accelerator).toBe('p'); + + const newAccelerator = newItem.querySelector('.desktop-app-accelerator'); + const openAccelerator = openItem.querySelector('.desktop-app-accelerator'); + + expect(newAccelerator?.textContent).toBe('N'); + expect(openAccelerator?.textContent).toBe('p'); + }); + + test('complex menu structure', () => { + systemUnderTest + .addTopLevelMenu('File', 'f') + .addMenuItem(0, 'New', 'paste', 'Ctrl+N') + .addMenuItem(0, 'Open', 'cut', 'Ctrl+O') + .addSeparator(0) + .addMenuItem(0, 'Save', 'cut', 'Ctrl+S') + .addMenuItem(0, 'Save As', 'cut', 'Ctrl+Shift+S') + .addSeparator(0) + .addMenuItem(0, 'Exit', 'cut', 'Alt+F4') + .addTopLevelMenu('Edit', 'e') + .addMenuItem(1, 'Undo', 'cut', 'Ctrl+Z') + .addMenuItem(1, 'Redo', 'cut', 'Ctrl+Y'); + + const builtMenu = systemUnderTest.build(); + + // Should have 2 top-level menus + expect(builtMenu.children).toHaveLength(2); + + // File menu should have 7 items (5 menu items + 2 separators) + const fileDropdown = builtMenu.children[0].children[1]; + expect(fileDropdown.children).toHaveLength(7); + + // Edit menu should have 2 items + const editDropdown = builtMenu.children[1].children[1]; + expect(editDropdown.children).toHaveLength(2); + }); + }); + + describe('edge cases', () => { + test('empty labels', () => { + systemUnderTest + .addTopLevelMenu('', 'f') + .addMenuItem(0, '', 'cut', 'shortcut'); + + const builtMenu = systemUnderTest.build(); + + expect(builtMenu.children).toHaveLength(1); + + const dropdown = builtMenu.children[0].children[1]; + expect(dropdown).toHaveClass('desktop-app-dropdown-menu'); + + expect(dropdown.children).toHaveLength(1); + }); + + test('special characters in labels', () => { + systemUnderTest + .addTopLevelMenu('File & Edit', 'f') + .addMenuItem(0, 'Save & Exit', 'cut', 'Ctrl+S'); + + const builtMenu = systemUnderTest.build(); + + expect(builtMenu.children).toHaveLength(1); + + const topButton = builtMenu.children[0].children[0]; + expect(topButton.textContent).toBe('File & Edit'); + }); + + test('case-insensitive accelerator matching', () => { + systemUnderTest + .addTopLevelMenu('File', 'F') // uppercase F + .addMenuItem(0, 'New', 'paste', 'Ctrl+N', 'N'); // uppercase N + + const builtMenu = systemUnderTest.build(); + + const dropdownItem = builtMenu.children[0].children[1].children[0] as HTMLElement; + expect(dropdownItem.dataset.accelerator).toBe('n'); + + const topButton = builtMenu.children[0].children[0] as HTMLElement; + expect(topButton.dataset.accelerator).toBe('f'); + + // Check that the actual character from the label is preserved + const topAccelerator = topButton.querySelector('.desktop-app-accelerator'); + const itemAccelerator = dropdownItem.querySelector('.desktop-app-accelerator'); + + expect(topAccelerator?.textContent).toBe('F'); + expect(itemAccelerator?.textContent).toBe('N'); + }); + + test('unicode characters', () => { + systemUnderTest + .addTopLevelMenu('Файл', 'ф') + .addMenuItem(0, 'Новый', 'undo', 'Ctrl+N'); + + const builtMenu = systemUnderTest.build(); + + const topButton = builtMenu.children[0].children[0]; + expect(topButton.textContent).toBe('Файл'); + + const acceleratorSpan = topButton.querySelector('.desktop-app-accelerator'); + expect(acceleratorSpan?.textContent).toBe('Ф'); + }); + }); +}); \ No newline at end of file diff --git a/scripts/off/desktop/src/__test__/ui/selfCheckingDom.test.ts b/scripts/off/desktop/src/__test__/ui/selfCheckingDom.test.ts new file mode 100644 index 0000000..be1eadd --- /dev/null +++ b/scripts/off/desktop/src/__test__/ui/selfCheckingDom.test.ts @@ -0,0 +1,24 @@ +// +// Copyright © 2025 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +describe('jsdom environment self checking', () => { + test('check Jest\'s jsdom environment', () => { + const isDOMAvailable = typeof document !== 'undefined'; + expect(isDOMAvailable).toBe(true); + + const isWindowAvailable = typeof window !== 'undefined'; + expect(isWindowAvailable).toBe(true); + }) +}) diff --git a/scripts/off/desktop/src/__test__/ui/titleBarMenuState.test.ts b/scripts/off/desktop/src/__test__/ui/titleBarMenuState.test.ts new file mode 100644 index 0000000..de40646 --- /dev/null +++ b/scripts/off/desktop/src/__test__/ui/titleBarMenuState.test.ts @@ -0,0 +1,301 @@ +// +// Copyright © 2025 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import { TitleBarMenuState } from '../../ui/titleBarMenuState' + +describe('TitleBarMenuState', () => { + let systemUnderTest: TitleBarMenuState + let mockTopLevelMenuCount: jest.Mock + let mockMenuItemsCount: jest.Mock + + const TopLevelMenuCount = 3 + const MenuItemCount = 5 + + beforeEach(() => { + mockTopLevelMenuCount = jest.fn().mockReturnValue(TopLevelMenuCount) + mockMenuItemsCount = jest.fn().mockReturnValue(MenuItemCount) + systemUnderTest = new TitleBarMenuState(mockTopLevelMenuCount, mockMenuItemsCount) + }) + + describe('construction', () => { + test('initializes with default values', () => { + expect(systemUnderTest.isAltModeActive).toBe(false) + expect(systemUnderTest.isTopLevelMenuExpanded).toBe(false) + expect(systemUnderTest.FocusedTopLevelMenuIndex).toBeNull() + expect(systemUnderTest.FocusedChildMenuIndex).toBeNull() + }) + }) + + describe('focusChildMenu', () => { + test.each([[0],[1]])('when top level menu %i is expanded', (topLevelMenu: number) => { + systemUnderTest.expandTopLevelMenu(topLevelMenu) + systemUnderTest.focusChildMenu() + + expect(systemUnderTest.FocusedChildMenuIndex).toBe(0) + }) + + test('when alt mode and top level menu is not expanded', () => { + systemUnderTest.enterAltMode(1) + systemUnderTest.focusChildMenu() + + expect(systemUnderTest.FocusedChildMenuIndex).toBeNull() + }) + + test('when no top level menu is focused', () => { + systemUnderTest.focusChildMenu() + + expect(systemUnderTest.FocusedChildMenuIndex).toBeNull() + + expect(systemUnderTest.isTopLevelMenuExpanded).toBe(false) + expect(systemUnderTest.FocusedTopLevelMenuIndex).toBeNull() + expect(systemUnderTest.isAltModeActive).toBe(false) + }) + }) + + describe('expandTopLevelMenu', () => { + test('normal expansion', () => { + const targetMenuIndex = 1 + systemUnderTest.expandTopLevelMenu(targetMenuIndex) + + expect(systemUnderTest.FocusedTopLevelMenuIndex).toBe(targetMenuIndex) + expect(systemUnderTest.isTopLevelMenuExpanded).toBe(true) + expect(systemUnderTest.FocusedChildMenuIndex).toBeNull() + + expect(systemUnderTest.isAltModeActive).toBe(false) + }) + + test.each([[-1],[TopLevelMenuCount],[TopLevelMenuCount+1]])('invalid index %i', (invalidIndex: number) => { + systemUnderTest.expandTopLevelMenu(invalidIndex) + + expect(systemUnderTest.FocusedTopLevelMenuIndex).toBeNull() + expect(systemUnderTest.isTopLevelMenuExpanded).toBe(false) + expect(systemUnderTest.FocusedChildMenuIndex).toBeNull() + }) + }) + + describe('enterAltMode', () => { + test('normal enter', () => { + systemUnderTest.enterAltMode(2) + + expect(systemUnderTest.isAltModeActive).toBe(true) + expect(systemUnderTest.FocusedTopLevelMenuIndex).toBe(2) + }) + + test.each([[-1],[TopLevelMenuCount],[TopLevelMenuCount+1]])('invalid index %i', (invalidIndex: number) => { + systemUnderTest.enterAltMode(invalidIndex) + + expect(systemUnderTest.isAltModeActive).toBe(true) + expect(systemUnderTest.FocusedTopLevelMenuIndex).toBeNull() + }) + }) + + describe('closeAll', () => { + test('resets all state to initial values', () => { + systemUnderTest.enterAltMode(1) + systemUnderTest.expandTopLevelMenu(1) + systemUnderTest.focusChildMenu() + + systemUnderTest.closeAll() + + expect(systemUnderTest.isAltModeActive).toBe(false) + expect(systemUnderTest.isTopLevelMenuExpanded).toBe(false) + expect(systemUnderTest.FocusedTopLevelMenuIndex).toBeNull() + expect(systemUnderTest.FocusedChildMenuIndex).toBeNull() + }) + }) + + describe('defocus', () => { + test('when top level menu expanded', () => { + systemUnderTest.expandTopLevelMenu(1) + systemUnderTest.focusChildMenu() + + systemUnderTest.defocus() + + expect(systemUnderTest.isTopLevelMenuExpanded).toBe(false) + expect(systemUnderTest.FocusedChildMenuIndex).toBeNull() + expect(systemUnderTest.FocusedTopLevelMenuIndex).toBe(1) + + expect(systemUnderTest.isAltModeActive).toBe(false) + }) + + test('when top level menu is not expanded', () => { + systemUnderTest.enterAltMode(1) + + systemUnderTest.defocus() + + expect(systemUnderTest.isAltModeActive).toBe(false) + expect(systemUnderTest.isTopLevelMenuExpanded).toBe(false) + expect(systemUnderTest.FocusedTopLevelMenuIndex).toBeNull() + expect(systemUnderTest.FocusedChildMenuIndex).toBeNull() + + expect(systemUnderTest.isAltModeActive).toBe(false) + }) + }) + + describe('moveFocusHorizontal', () => { + const DefaultTopLevelFocus = 1 + beforeEach(() => { + systemUnderTest.enterAltMode(DefaultTopLevelFocus) + }) + + test.each([ + [+1, DefaultTopLevelFocus + 1], + [-1, DefaultTopLevelFocus - 1], + ])('with increment %i, and top menu collapsed', (incremet: number, expectedTopLevelFocus: number) => { + const focusedChildBefore = systemUnderTest.FocusedChildMenuIndex + systemUnderTest.moveFocusHorizontal(incremet) + + expect(systemUnderTest.FocusedTopLevelMenuIndex).toBe(expectedTopLevelFocus) + expect(systemUnderTest.FocusedChildMenuIndex).toBe(focusedChildBefore) + + expect(systemUnderTest.isAltModeActive).toBe(true) + }) + + test.each([ + [+1, DefaultTopLevelFocus + 1], + [-1, DefaultTopLevelFocus - 1], + ])('with increment %i, and top menu expanded', (incremet: number, expectedTopLevelFocus: number) => { + systemUnderTest.expandTopLevelMenu(DefaultTopLevelFocus) + systemUnderTest.focusChildMenu() + systemUnderTest.moveFocusVertical(1) + + systemUnderTest.moveFocusHorizontal(incremet) + + expect(systemUnderTest.FocusedTopLevelMenuIndex).toBe(expectedTopLevelFocus) + expect(systemUnderTest.FocusedChildMenuIndex).toBe(0) + + expect(systemUnderTest.isAltModeActive).toBe(true) + }) + + test('positive wrap around', () => { + systemUnderTest.enterAltMode(TopLevelMenuCount-1) + systemUnderTest.moveFocusHorizontal(1) + + expect(systemUnderTest.FocusedTopLevelMenuIndex).toBe(0) + + expect(systemUnderTest.isAltModeActive).toBe(true) + }) + + test('negative wrap around', () => { + systemUnderTest.enterAltMode(0) + systemUnderTest.moveFocusHorizontal(-1) + + expect(systemUnderTest.FocusedTopLevelMenuIndex).toBe(TopLevelMenuCount-1) + + expect(systemUnderTest.isAltModeActive).toBe(true) + }) + + test.each([[-2],[2],[0]])('invalid increment %i', (invalidIncrement: number) => { + const originalIndex = systemUnderTest.FocusedTopLevelMenuIndex + + systemUnderTest.moveFocusHorizontal(invalidIncrement) + + expect(systemUnderTest.FocusedTopLevelMenuIndex).toBe(originalIndex) + expect(systemUnderTest.isAltModeActive).toBe(true) + }) + + test('handles null focused index', () => { + systemUnderTest.closeAll() + systemUnderTest.moveFocusHorizontal(1) + + expect(systemUnderTest.FocusedTopLevelMenuIndex).toBeNull() + expect(systemUnderTest.isAltModeActive).toBe(false) + }) + }) + + describe('moveFocusVertical', () => { + beforeEach(() => { + systemUnderTest.enterAltMode(1) + }) + + test('when top level menu is not expanded', () => { + systemUnderTest.moveFocusVertical(1) + + expect(systemUnderTest.isTopLevelMenuExpanded).toBe(true) + expect(systemUnderTest.FocusedChildMenuIndex).toBe(0) + + expect(systemUnderTest.isAltModeActive).toBe(true) + }) + + test('negative wrap around', () => { + systemUnderTest.expandTopLevelMenu(1) + systemUnderTest.focusChildMenu() + + systemUnderTest.moveFocusVertical(-1) + + expect(systemUnderTest.FocusedChildMenuIndex).toBe(MenuItemCount-1) + expect(systemUnderTest.isAltModeActive).toBe(true) + }) + + test('positive wrap around', () => { + systemUnderTest.expandTopLevelMenu(1) + systemUnderTest.focusChildMenu() + for (let i = 0; i < MenuItemCount; i++) { + systemUnderTest.moveFocusVertical(1) + } + + expect(systemUnderTest.FocusedChildMenuIndex).toBe(0) + + expect(systemUnderTest.isAltModeActive).toBe(true) + }) + + test('invalid increment', () => { + systemUnderTest.expandTopLevelMenu(1) + systemUnderTest.focusChildMenu() + const originalIndex = systemUnderTest.FocusedChildMenuIndex + + systemUnderTest.moveFocusVertical(2) + + expect(systemUnderTest.FocusedChildMenuIndex).toBe(originalIndex) + + expect(systemUnderTest.isAltModeActive).toBe(true) + }) + + test('when no top level menu is focused', () => { + systemUnderTest.closeAll() + + systemUnderTest.moveFocusVertical(1) + + expect(systemUnderTest.isTopLevelMenuExpanded).toBe(false) + expect(systemUnderTest.FocusedChildMenuIndex).toBeNull() + + expect(systemUnderTest.isAltModeActive).toBe(false) + }) + }) + + describe('edge cases', () => { + test('zero menu count', () => { + mockTopLevelMenuCount.mockReturnValue(0) + const emptyMenuState = new TitleBarMenuState(mockTopLevelMenuCount, mockMenuItemsCount) + + emptyMenuState.enterAltMode(0) + + expect(emptyMenuState.isAltModeActive).toBe(true) + + expect(emptyMenuState.isTopLevelMenuExpanded).toBe(false) + expect(emptyMenuState.FocusedChildMenuIndex).toBeNull + expect(emptyMenuState.FocusedTopLevelMenuIndex).toBeNull + }) + + test('zero menu items count', () => { + mockMenuItemsCount.mockReturnValue(0) + systemUnderTest.enterAltMode(1) + + systemUnderTest.moveFocusVertical(1) + + expect(systemUnderTest.FocusedChildMenuIndex).toBeNull() + }) + }) +}) \ No newline at end of file diff --git a/scripts/off/desktop/src/__test__/ui/typesUtils.test.ts b/scripts/off/desktop/src/__test__/ui/typesUtils.test.ts new file mode 100644 index 0000000..12dcb9f --- /dev/null +++ b/scripts/off/desktop/src/__test__/ui/typesUtils.test.ts @@ -0,0 +1,29 @@ +// +// Copyright © 2025 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import { isMenuBarAction } from '../../ui/typesUtils' +import { MenuBarActions } from '../../ui/types' + +describe('isMenuBarAction', () => { + test('yes', () => { + for (const action of MenuBarActions) { + expect(isMenuBarAction(action)).toBe(true) + } + }) + + test('no', () => { + expect(isMenuBarAction('some random string')).toBe(false) + }) +}) diff --git a/scripts/off/desktop/src/main/args.ts b/scripts/off/desktop/src/main/args.ts new file mode 100644 index 0000000..b118841 --- /dev/null +++ b/scripts/off/desktop/src/main/args.ts @@ -0,0 +1,33 @@ +// +// Copyright © 2024 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import { OptionValues, program } from 'commander' + +program + .name('Huly') + .allowUnknownOption() + .option('-s, --server ', 'Remote server URL (front). E.g. https://huly.app') + +let opts: OptionValues | null = null + +export function getOptions (): OptionValues { + if (opts === null) { + program.parse(process.argv.slice(1), { from: 'user' }) + + opts = program.opts() + } + + return opts +} diff --git a/scripts/off/desktop/src/main/customMenu.ts b/scripts/off/desktop/src/main/customMenu.ts new file mode 100644 index 0000000..3e0339c --- /dev/null +++ b/scripts/off/desktop/src/main/customMenu.ts @@ -0,0 +1,92 @@ +// +// Copyright © 2025 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import { app, BrowserWindow } from 'electron' +import { MenuBarAction, StandardMenuCommandLogout, StandardMenuCommandSelectWorkspace, StandardMenuCommandOpenSettings } from '../ui/types' + +export function dipatchMenuBarAction(mainWindow: BrowserWindow | undefined, action: MenuBarAction) { + if (mainWindow == null) { + return + } + + function performZoom(increment: number): void { + if (mainWindow == null) { + return + } + const currentZoom = mainWindow.webContents.getZoomFactor(); + mainWindow.webContents.setZoomFactor(currentZoom + increment); + } + + const zoomStep = 0.1; + + switch (action) { + case 'settings': + mainWindow.webContents.send(StandardMenuCommandOpenSettings) + break; + case 'select-workspace': + mainWindow.webContents.send(StandardMenuCommandSelectWorkspace) + break; + case 'logout': + mainWindow.webContents.send(StandardMenuCommandLogout) + break; + case 'exit': + app.quit(); + break; + case 'undo': + mainWindow.webContents.undo(); + break; + case 'redo': + mainWindow.webContents.redo(); + break; + case 'cut': + mainWindow.webContents.cut(); + break; + case 'copy': + mainWindow.webContents.copy(); + break; + case 'paste': + mainWindow.webContents.paste(); + break; + case 'delete': + mainWindow.webContents.delete(); + break; + case 'select-all': + mainWindow.webContents.selectAll(); + break; + case 'reload': + mainWindow?.reload(); + break; + case 'force-reload': + mainWindow.webContents.reloadIgnoringCache(); + break; + case 'toggle-devtools': + mainWindow.webContents.toggleDevTools(); + break; + case 'zoom-in': + performZoom(+zoomStep); + break; + case 'zoom-out': + performZoom(-zoomStep); + break; + case 'restore-size': + mainWindow.webContents.setZoomFactor(1.0); + break; + case 'toggle-fullscreen': + mainWindow.setFullScreen(!mainWindow.isFullScreen()); + break; + default: + console.log('unknown menu action:', action); + } +} \ No newline at end of file diff --git a/scripts/off/desktop/src/main/permissions.ts b/scripts/off/desktop/src/main/permissions.ts new file mode 100644 index 0000000..afc2207 --- /dev/null +++ b/scripts/off/desktop/src/main/permissions.ts @@ -0,0 +1,90 @@ +// +// Copyright © 2024 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import { Session, systemPreferences } from 'electron' +import log from 'electron-log' + +export function addPermissionHandlers (session: Session): void { + session.setPermissionRequestHandler((webContents, permission, result, details) => { + log.info('permissions requested: ', permission, details) + + if (process.platform !== 'darwin') { + result(true) + return + } + + if (permission === 'display-capture') { + const granted = systemPreferences.getMediaAccessStatus('screen') === 'granted' + result(granted) + return + } + + if (permission !== 'media') { + result(true) + return + } + + const audioGranted = (details as any).mediaTypes?.includes('audio') === true ? askForMediaAccess('microphone') : Promise.resolve(true) + const videoGranted = (details as any).mediaTypes?.includes('video') === true ? askForMediaAccess('camera') : Promise.resolve(true) + + Promise.all([audioGranted, videoGranted]).then( + (res) => { result(res.every(r => r)) }, + () => { result(false) } + ) + }) + + session.setPermissionCheckHandler((webContents, permission, requestingOrigin, details) => { + if (process.platform !== 'darwin') { + return true + } + + if (permission !== 'media') { + return true + } + + if (details.mediaType === 'audio') { + return systemPreferences.getMediaAccessStatus('microphone') === 'granted' + } + + if (details.mediaType === 'video') { + return systemPreferences.getMediaAccessStatus('camera') === 'granted' + } + + return false + }) +} + +async function askForMediaAccess (type: 'microphone' | 'camera'): Promise { + try { + if (process.platform !== 'darwin') { + return true + } + + const status = systemPreferences.getMediaAccessStatus(type) + log.info(`Current ${type} access status:`, status) + + if (status === 'not-determined') { + const success = await systemPreferences.askForMediaAccess(type) + log.info(`Result of ${type} access:`, success ? 'granted' : 'denied') + return success + } + + return status === 'granted' + } catch (error) { + log.error(`Could not get ${type} permission:`, error.message) + } + + return false +} diff --git a/scripts/off/desktop/src/main/standardMenu.ts b/scripts/off/desktop/src/main/standardMenu.ts new file mode 100644 index 0000000..0fa8274 --- /dev/null +++ b/scripts/off/desktop/src/main/standardMenu.ts @@ -0,0 +1,52 @@ +// +// Copyright © 2024 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import { Menu, MenuItemConstructorOptions } from 'electron' +import { StandardMenuCommand, StandardMenuCommandOpenSettings, StandardMenuCommandSelectWorkspace, StandardMenuCommandLogout, } from '../ui/types' + +const isMac = process.platform === 'darwin' +const isLinux = process.platform === 'linux' + +export const addMenus = (sendCommand: (cmd: StandardMenuCommand, ...args: any[]) => void): void => { + const template: MenuItemConstructorOptions[] = [ + { + label: 'File', + submenu: [ + { + label: 'Settings', + accelerator: isLinux ? 'Ctrl+,' : 'Meta+,', + click: () => { sendCommand(StandardMenuCommandOpenSettings) } + }, + { + label: 'Select workspace', + click: () => { sendCommand(StandardMenuCommandSelectWorkspace) } + }, + { + label: 'Logout', + click: () => { sendCommand(StandardMenuCommandLogout) } + }, + { role: isMac ? 'close' : 'quit' } + ] + }, + { role: 'editMenu' }, + { role: 'viewMenu' }, + { role: 'windowMenu' } + ] + if (isMac) { + template.unshift({ role: 'appMenu' }) + } + const menu = Menu.buildFromTemplate(template) + Menu.setApplicationMenu(menu) +} diff --git a/scripts/off/desktop/src/main/start.ts b/scripts/off/desktop/src/main/start.ts new file mode 100644 index 0000000..c3cf1e0 --- /dev/null +++ b/scripts/off/desktop/src/main/start.ts @@ -0,0 +1,522 @@ +// +// Copyright © 2024 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import { config as dotenvConfig } from 'dotenv' +import { BrowserWindow, CookiesSetDetails, Notification, app, desktopCapturer, dialog, ipcMain, nativeImage, session, shell, systemPreferences, nativeTheme } from 'electron' +import contextMenu from 'electron-context-menu' +import log from 'electron-log' +import Store from 'electron-store' +import { ProgressInfo, UpdateInfo } from 'electron-updater' +import WinBadge from 'electron-windows-badge' +import * as path from 'path' + +import { Config, MenuBarAction, NotificationParams, StandardMenuCommandLogout, StandardMenuCommandSelectWorkspace, StandardMenuCommandOpenSettings } from '../ui/types' +import { getOptions } from './args' +import { addMenus } from './standardMenu' +import { dipatchMenuBarAction } from './customMenu' +import { addPermissionHandlers } from './permissions' +import autoUpdater from './updater' +import { generateId } from '@hcengineering/core' +import { DownloadItem } from '@hcengineering/desktop-downloads' + +let mainWindow: BrowserWindow | undefined +let winBadge: any + +const isMac = process.platform === 'darwin' +const isWindows = process.platform === 'win32' +const isDev = process.env.NODE_ENV === 'development' + +const sessionPartition = !isDev ? 'persist:huly' : 'persist:huly_dev' +const iconKey = path.join(app.getAppPath(), 'dist', 'ui', 'public', 'AppIcon.png') +const preloadScriptPath = path.join(app.getAppPath(), 'dist', 'main', 'preload.js') + +const defaultWidth = 1440 +const defaultHeight = 960 + +const envPath = path.join(app.getAppPath(), isDev ? '.env-dev' : '.env') +console.log('do loading env from', envPath) +dotenvConfig({ + path: envPath +}) +const options = getOptions() + +const containerPageFileName = isWindows ? 'index.windows.html' : 'index.html' +const containerPagePath = path.join('dist', 'ui', containerPageFileName) + +// Note: using electron-store here as local storage is not available in the main process +// before the window is created +const settings = new Store() +const oldFront = readServerUrl() + +if (options.server !== undefined) { + ;(settings as any).set('server', options.server) +} + +const FRONT_URL = readServerUrl() +const serverChanged = oldFront !== FRONT_URL + +function readServerUrl (): string { + if (isDev) { + return process.env.FRONT_URL ?? 'http://huly.local:8087' + } + + return ((settings as any).get('server', process.env.FRONT_URL) as string) ?? 'https://huly.app' +} + +// Handle creating/removing shortcuts on Windows when installing/uninstalling. +if (require('electron-squirrel-startup') === true) { + app.quit() +} + +console.log('Running Huly', process.env.MODEL_VERSION, process.env.VERSION, isMac, isDev, process.env.NODE_ENV) + +// Fix screen-sharing thumbnails being missing sometimes +// See https://github.com/electron/electron/issues/44504 +const disabledFeatures = [ + 'ThumbnailCapturerMac:capture_mode/sc_screenshot_manager', + 'ScreenCaptureKitPickerScreen', + 'ScreenCaptureKitStreamPickerSonoma' +] + +app.commandLine.appendSwitch('disable-features', disabledFeatures.join(',')) + +function setupWindowTitleBar(windowOptions: Electron.BrowserWindowConstructorOptions): void { + if (isWindows) { + // on Windows we use frameless window with custom hand-made title bar + windowOptions.frame = false + } else { + windowOptions.titleBarStyle = isMac ? 'hidden' : 'default' + } +} + +function hookOpenWindow (window: BrowserWindow): void { + window.webContents.setWindowOpenHandler(({ url }) => { + console.log('opening window', url) + + /* + We need to detect if url is "our" or external. We should + open external urls in system browser + + When we open local URLs it would be as file:///workbench/my-spc/tracker/TSK-2 + As we load only our index.html there is no security problem to pass such URLs + to open arg as well + */ + if (url.indexOf(FRONT_URL) !== 0 && url.indexOf('file://') !== 0) { + void shell.openExternal(url) + } else { + void (async (): Promise => { + const bounds = mainWindow?.getBounds() + const windowOptions: Electron.BrowserWindowConstructorOptions = { + width: bounds?.width ?? defaultWidth, + height: bounds?.height ?? defaultHeight, + x: (bounds?.x ?? 0) + 25, + y: (bounds?.y ?? 0) + 25, + trafficLightPosition: { x: 10, y: 10 }, + icon: nativeImage.createFromPath(iconKey), + webPreferences: { + devTools: true, + sandbox: false, + partition: sessionPartition, + nodeIntegration: true, + preload: preloadScriptPath, + additionalArguments: [ + `--open=${encodeURI( + new URL(url).pathname + .split('/') + .filter((it) => it.length > 0) + .join('/') + )}` + ] + } + } + setupWindowTitleBar(windowOptions) + const childWindow = new BrowserWindow(windowOptions) + await childWindow.loadFile(containerPagePath) + hookOpenWindow(childWindow) + })() + } + return { action: 'deny' } + }) +} + +function setupCookieHandler (config: Config): void { + const normalizedAccountsUrl = config.ACCOUNTS_URL.endsWith('/') ? config.ACCOUNTS_URL : config.ACCOUNTS_URL + '/' + const urls = [ + normalizedAccountsUrl, + normalizedAccountsUrl + '*' + ] + + session.defaultSession.webRequest.onHeadersReceived({ urls }, handleSetCookie) + session.fromPartition(sessionPartition).webRequest.onHeadersReceived({ urls }, handleSetCookie) +} + +function handleSetCookie (details: Electron.OnHeadersReceivedListenerDetails, callback: (headersReceivedResponse: Electron.HeadersReceivedResponse) => void): void { + if (details.responseHeaders !== undefined) { + for (const header in details.responseHeaders) { + if (header.toLowerCase() === 'set-cookie') { + const cookies = details.responseHeaders[header] + details.responseHeaders[header] = cookies.map((cookie) => { + if (!cookie.includes('SameSite=')) { + if (details.url.startsWith('https://') && !cookie.includes('; Secure')) { + cookie += '; Secure' + } + cookie += '; SameSite=None' + } + return cookie + }) + } + } + } + + // eslint-disable-next-line n/no-callback-literal + callback({ responseHeaders: { ...details.responseHeaders } }) +} + +function handleAuthRedirects (window: BrowserWindow): void { + window.webContents.on('will-redirect', (event) => { + if (event?.url.startsWith(`${FRONT_URL}/login/auth`)) { + console.log('Auth happened, redirecting to local index') + const urlObj = new URL(decodeURIComponent(event.url)) + event.preventDefault() + + void (async (): Promise => { + await window.loadFile(containerPagePath) + window.webContents.send('handle-auth', urlObj.searchParams.get('token')) + })() + } + }) +} + +function handleWillDownload (window: BrowserWindow): void { + window.webContents.session.on('will-download', (event, item) => { + const key = generateId() + + const notifyDownloadUpdated = (): void => { + const download: DownloadItem = { + key, + state: item.isPaused() ? 'paused' : item.getState(), + fileName: item.getFilename(), + receivedBytes: item.getReceivedBytes(), + totalBytes: item.getTotalBytes(), + url: item.getURL(), + savePath: item.getSavePath() + } + window.webContents.send('handle-download-item', download) + } + + notifyDownloadUpdated() + + item.on('updated', notifyDownloadUpdated) + item.on('done', notifyDownloadUpdated) + }) +} + +const createWindow = async (): Promise => { + // Restore window position if available + const restoredBounds: any = settings.get('windowBounds') + const windowOptions: Electron.BrowserWindowConstructorOptions = { + width: restoredBounds?.width ?? defaultWidth, + height: restoredBounds?.height ?? defaultHeight, + x: restoredBounds?.x ?? undefined, + y: restoredBounds?.y ?? undefined, + trafficLightPosition: { x: 10, y: 10 }, + roundedCorners: true, + icon: nativeImage.createFromPath(iconKey), + webPreferences: { + devTools: true, + sandbox: false, + nodeIntegration: true, + // backgroundThrottling: false, + partition: sessionPartition, + preload: preloadScriptPath + } + } + setupWindowTitleBar(windowOptions) + mainWindow = new BrowserWindow(windowOptions) + app.dock?.setIcon(nativeImage.createFromPath(iconKey)) + // await mainWindow.webContents.openDevTools() + if (isDev) { + mainWindow.webContents.openDevTools() + } + await mainWindow.loadFile(containerPagePath) + addPermissionHandlers(mainWindow.webContents.session) + handleAuthRedirects(mainWindow) + handleWillDownload(mainWindow) + + // In this example, only windows with the `about:blank` url will be created. + // All other urls will be blocked. + hookOpenWindow(mainWindow) + + // Save window position on close + mainWindow.on('close', () => { + const bounds = mainWindow?.getBounds() + if (bounds !== undefined) { + settings.set('windowBounds', bounds) + } + }) + + function sendWindowMaximizedMessage(maximized: boolean): void { + mainWindow?.webContents.send('window-state-changed', maximized ? 'maximized' : 'unmaximized') + } + + mainWindow.on('maximize', () => { + sendWindowMaximizedMessage(true) + }); + + mainWindow.on('unmaximize', () => { + sendWindowMaximizedMessage(false) + }); + + mainWindow.on('enter-full-screen', () => { + sendWindowMaximizedMessage(true) + }); + + mainWindow.on('leave-full-screen', () => { + if (mainWindow) { + sendWindowMaximizedMessage(mainWindow.isMaximized()) + } + }); + + if (isMac) { + mainWindow.on('close', (event) => { + // Prevent the default behavior (which would quit the app) + event.preventDefault() + // Hide the window + mainWindow?.hide() + }) + } else if (isWindows) { + winBadge = new WinBadge(mainWindow, { + font: '14px arial' + }) + } +} + +if (false == isWindows) { + addMenus((cmd: string, ...args: any[]) => { + mainWindow?.webContents.send(cmd, ...args) + }) +} + +contextMenu({ + showSaveImageAs: false, + showInspectElement: false, + showSelectAll: false +}) + +ipcMain.on('set-badge', (event, badge: number) => { + app.dock?.setBadge(badge > 0 ? `${badge}` : '') + app.badgeCount = badge + + if (isWindows && winBadge !== undefined) { + winBadge.update(badge) + } +}) + +ipcMain.on('dock-bounce', (event) => { + app.dock?.bounce('informational') +}) + +ipcMain.on('send-notification', (event, notificationParams: NotificationParams) => { + if (Notification.isSupported()) { + const notification = new Notification(notificationParams) + + notification.on('click', () => { + mainWindow?.show() + mainWindow?.webContents.send('handle-notification-navigation', notificationParams.application) + }) + + notification.show() + } +}) + +ipcMain.on('set-title', (event, title) => { + const webContents = event.sender + const window = BrowserWindow.fromWebContents(webContents) + window?.setTitle(title) +}) + +ipcMain.on('set-combined-config', (event, config: Config) => { + log.info('Config set: ', config) + + setupCookieHandler(config) + + const updatesUrl = process.env.DESKTOP_UPDATES_URL ?? config.DESKTOP_UPDATES_URL ?? 'https://dist.huly.io' + const updatesChannel = process.env.DESKTOP_UPDATES_CHANNEL ?? config.DESKTOP_UPDATES_CHANNEL ?? 'huly' + + autoUpdater.setFeedURL({ + provider: 'generic', + url: updatesUrl, + channel: updatesChannel + }) + void autoUpdater.checkForUpdatesAndNotify() +}) + +ipcMain.handle('get-main-config', (event, path) => { + const cfg = { + CONFIG_URL: process.env.CONFIG_URL ?? '', + FRONT_URL, + INITIAL_URL: process.env.INITIAL_URL ?? '', + MODEL_VERSION: process.env.MODEL_VERSION ?? '', + VERSION: process.env.VERSION ?? '' + } + return cfg +}) +ipcMain.handle('get-host', (event, path) => { + return new URL(FRONT_URL).host +}) + +ipcMain.on('set-front-cookie', function (event, host: string, name: string, value: string) { + const webContents = event.sender + const win = BrowserWindow.fromWebContents(webContents) + const cv: CookiesSetDetails = { + url: host, + name, + value, + path: '/', + secure: true, + sameSite: 'no_restriction', + httpOnly: true, + domain: process.env.FRONT_DOMAIN + } + void win?.webContents?.session.cookies.set(cv) +}) + +ipcMain.handle('window-minimize', () => { + mainWindow?.minimize(); +}); + +ipcMain.handle('window-maximize', () => { + if (mainWindow) { + if (mainWindow.isMaximized()) { + mainWindow.unmaximize(); + } else { + mainWindow.maximize(); + } + } +}); + +ipcMain.handle('window-close', () => { + mainWindow?.close(); +}); + +ipcMain.handle('get-is-os-using-dark-theme', () => { + return nativeTheme.shouldUseDarkColors; +}); + +ipcMain.handle('menu-action', async (_event: any, action: MenuBarAction) => { + dipatchMenuBarAction(mainWindow, action) +}); + +const gotTheLock = app.requestSingleInstanceLock() + +if (!gotTheLock) { + app.quit() +} + +ipcMain.handle('get-screen-access', () => systemPreferences.getMediaAccessStatus('screen') === 'granted') +ipcMain.handle('get-screen-sources', () => { + return desktopCapturer.getSources({ types: ['window', 'screen'], fetchWindowIcons: true, thumbnailSize: { width: 225, height: 135 } }).then(async sources => { + return sources.map(source => { + return { + ...source, + appIconURL: source.appIcon?.toDataURL(), + thumbnailURL: source.thumbnail.toDataURL() + } + }) + }) +}) + +async function onReady (): Promise { + await createWindow() + + if (serverChanged) { + mainWindow?.webContents.send('logout') + } +} + +app.on('ready', () => { + void onReady() +}) + +app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + app.quit() + } +}) + +if (isMac) { + app.on('activate', () => { + if (mainWindow != null && (mainWindow.isMinimized() || !mainWindow.isVisible())) { + mainWindow.show() + } + }) +} +app.on('before-quit', () => { + if (mainWindow !== undefined && !mainWindow.isDestroyed()) { + const bounds = mainWindow.getBounds() + settings.set('windowBounds', bounds) + } + // Note: in case the app is exited by auto-updater all windows will be destroyed at this point + if (mainWindow === undefined || mainWindow.isDestroyed()) return + + if (isMac) { + mainWindow?.removeAllListeners('close') + mainWindow?.close() + } +}) + +// Note: it is reset when the app is relaunched after update +let isUpdating = false + +autoUpdater.on('update-available', (info: UpdateInfo) => { + if (isUpdating) return + + void dialog + .showMessageBox({ + type: 'info', + buttons: ['Update & Restart', 'Quit'], + defaultId: 0, + message: `A new version ${info.version} is available and it is required to continue. It will be downloaded and installed automatically.` + }) + .then(({ response }) => { + log.info(`Update dialog exit code: ${response}`) // eslint-disable-line no-console + + if (response !== 0) { + app.quit() + } + isUpdating = true + setDownloadProgress(0) + }) +}) + +autoUpdater.on('download-progress', (progressObj: ProgressInfo) => { + setDownloadProgress(progressObj.percent) +}) + +function setDownloadProgress (percent: number): void { + if (mainWindow === undefined) { + return + } + mainWindow.setProgressBar(percent / 100) + mainWindow.webContents.send('handle-update-download-progress', percent) +} + +autoUpdater.on('update-downloaded', (info) => { + // We have listeners that prevents the app from being exited on mac + app.removeAllListeners('window-all-closed') + mainWindow?.removeAllListeners('close') + + autoUpdater.quitAndInstall() +}) diff --git a/scripts/off/desktop/src/main/updater.ts b/scripts/off/desktop/src/main/updater.ts new file mode 100644 index 0000000..64ff665 --- /dev/null +++ b/scripts/off/desktop/src/main/updater.ts @@ -0,0 +1,42 @@ +// +// Copyright © 2024 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import log from 'electron-log' +import { autoUpdater } from 'electron-updater' + +autoUpdater.logger = log + +autoUpdater.on('update-available', (info) => { + log.info('Update available. ', info) +}) +autoUpdater.on('update-not-available', (info) => { + log.info('Update not available.') +}) +autoUpdater.on('error', (err: any) => { + log.info('Error in auto-updater. ' + err) +}) +autoUpdater.on('download-progress', (progressObj) => { + let msg = 'Download speed: ' + progressObj.bytesPerSecond + + msg = msg + ' - Downloaded ' + progressObj.percent + '%' + msg = msg + ' (' + progressObj.transferred + '/' + progressObj.total + ')' + log.info(msg) +}) + +autoUpdater.on('update-downloaded', (info) => { + log.info('Update downloaded') +}) + +export default autoUpdater diff --git a/scripts/off/desktop/src/ui/index.ejs b/scripts/off/desktop/src/ui/index.ejs new file mode 100644 index 0000000..2ab6900 --- /dev/null +++ b/scripts/off/desktop/src/ui/index.ejs @@ -0,0 +1,239 @@ + + + + + + + + + <% if (typeof isWindows !== 'undefined' && isWindows) { %> + + <% } %> + + + + + + <% if (typeof isWindows !== 'undefined' && isWindows) { %> +
+
+
+
+ +
Huly
+ +
+ + + +
+
+
+ <% } %> + + + + \ No newline at end of file diff --git a/scripts/off/desktop/src/ui/index.ts b/scripts/off/desktop/src/ui/index.ts new file mode 100644 index 0000000..a922119 --- /dev/null +++ b/scripts/off/desktop/src/ui/index.ts @@ -0,0 +1,172 @@ +import { loginId } from '@hcengineering/login' +import { getEmbeddedLabel, getMetadata } from '@hcengineering/platform' +import presentation, { MessageBox, setDownloadProgress } from '@hcengineering/presentation' +import settings, { settingId } from '@hcengineering/setting' +import { + closePanel, + closePopup, + createApp, + getCurrentResolvedLocation, + navigate, + parseLocation, + pushRootBarProgressComponent, + removeRootBarComponent, + showPopup +} from '@hcengineering/ui' +import { handleDownloadItem } from '@hcengineering/desktop-downloads' +import { notificationId } from '@hcengineering/notification' +import { workbenchId, logOut } from '@hcengineering/workbench' + +import { isOwnerOrMaintainer } from '@hcengineering/core' +import { configurePlatform } from './platform' +import { setupTitleBarMenu } from './titleBarMenu' +import { defineScreenShare, defineGetDisplayMedia } from './screenShare' +import { StandardMenuCommandLogout, StandardMenuCommandSelectWorkspace, StandardMenuCommandOpenSettings } from './types' +import { ipcMainExposed } from './typesUtils' +import { themeStore } from '@hcengineering/theme' + +defineScreenShare() +defineGetDisplayMedia() + +window.addEventListener('DOMContentLoaded', () => { + + const ipcMain = ipcMainExposed() + + if ((window as any).windowsPlatform === true) { + const titleBarRoot = document.getElementById('desktop-app-titlebar-root') + if (titleBarRoot) { + const menuBar = setupTitleBarMenu(ipcMain, titleBarRoot) + + themeStore.subscribe((themeOptions) => { + if (themeOptions != null) { + const isDarkTheme = themeOptions.dark + menuBar.setTheme(isDarkTheme ? 'dark' : 'light') + } + }) + + void ipcMain.isOsUsingDarkTheme().then((isDarkTheme) => { + menuBar.setTheme(isDarkTheme ? 'dark' : 'light') + }).catch(() => { + menuBar.setTheme('light'); // fallback + }) + } + } + + void configurePlatform().then((parameters) => { + const windowTitle = document.getElementById('application-title-bar-caption') + if (windowTitle) { + windowTitle.textContent = parameters.getBranding().getTitle() + } + + createApp(document.body) + }) + + ipcMain.on(StandardMenuCommandOpenSettings, () => { + closePopup() + closePanel() + const loc = getCurrentResolvedLocation() + loc.fragment = undefined + loc.query = undefined + loc.path[2] = settingId + loc.path.length = 3 + navigate(loc) + }) + + ipcMain.on(StandardMenuCommandSelectWorkspace, () => { + closePopup() + closePanel() + const loc = getCurrentResolvedLocation() + loc.fragment = undefined + loc.query = undefined + loc.path[0] = loginId + loc.path[1] = 'selectWorkspace' + loc.path.length = 2 + navigate(loc) + }) + + ipcMain.on(StandardMenuCommandLogout, () => { + void logOut().then(() => { + navigate({ path: [loginId] }) + }) + }) + + ipcMain.handleDeepLink((urlString) => { + const urlObject = new URL(urlString) + navigate(parseLocation(urlObject)) + }) + + ipcMain.handleNotificationNavigation((application) => { + // For now navigate only to Inbox + const frontUrl = getMetadata(presentation.metadata.FrontUrl) ?? window.location.origin + const location = getCurrentResolvedLocation() + const urlString = `${frontUrl}/${workbenchId}/${location.path[1]}/${application ?? notificationId}` + const urlObject = new URL(urlString) + navigate(parseLocation(urlObject)) + }) + + ipcMain.handleUpdateDownloadProgress((progress) => { + setDownloadProgress(progress) + }) + + ipcMain.handleAuth((token) => { + const authLoc = { + path: ['login', 'auth'], + query: { token } + } + + navigate(authLoc) + }) + + ipcMain.handleDownloadItem((item) => { + void handleDownloadItem(item) + }) + + ipcMain.on('start-backup', () => { + // We need to obtain current token and endpoint and trigger backup + const token = getMetadata(presentation.metadata.Token) + const endpoint = getMetadata(presentation.metadata.Endpoint) + const workspaceUuid = getMetadata(presentation.metadata.WorkspaceUuid) + // const workspaceDataId = getMetadata(presentation.metadata.WorkspaceDataId) + // const workspaceUrl = getMetadata(presentation.metadata.WorkspaceUrl) + // const wsIds = { + // uuid: workspaceUuid, + // dataId: workspaceDataId, + // url: workspaceUrl + // } + if (isOwnerOrMaintainer()) { + if (token != null && endpoint != null && workspaceUuid != null) { + // ipcMain.startBackup(token, endpoint, wsIds) + closePopup() + closePanel() + const loc = getCurrentResolvedLocation() + loc.fragment = undefined + loc.query = undefined + loc.path[2] = settingId + loc.path[3] = 'setting' + loc.path[4] = 'backup' + loc.path.length = 5 + navigate(loc) + } + } else { + showPopup(MessageBox, { + label: settings.string.OwnerOrMaintainerRequired + }) + } + }) + + ipcMain.on('backup', (evt: any, ...args: any) => { + pushRootBarProgressComponent('backup', + getEmbeddedLabel('Backup'), + () => { return args[0] }, + () => { + ipcMain.cancelBackup() + }, + undefined, + undefined, + 50 + ) + }) + ipcMain.on('backup-cancel', () => { + removeRootBarComponent('backup') + }) +}) diff --git a/scripts/off/desktop/src/ui/notifications.ts b/scripts/off/desktop/src/ui/notifications.ts new file mode 100644 index 0000000..2d4a988 --- /dev/null +++ b/scripts/off/desktop/src/ui/notifications.ts @@ -0,0 +1,258 @@ +import { formatName, getPersonByPersonId } from '@hcengineering/contact' +import { Ref, SortingOrder, TxOperations } from '@hcengineering/core' +import notification, { + notificationId, + ActivityInboxNotification, + CommonInboxNotification, + DocNotifyContext, + InboxNotification +} from '@hcengineering/notification' +import { addEventListener, getMetadata, IntlString, translate } from '@hcengineering/platform' +import { createNotificationsQuery, getClient } from '@hcengineering/presentation' +import { location } from '@hcengineering/ui' +import workbench, { workbenchId } from '@hcengineering/workbench' +import desktopPreferences, { defaultNotificationPreference } from '@hcengineering/desktop-preferences' +import { activePreferences } from '@hcengineering/desktop-preferences-resources' +import { getDisplayInboxData, InboxNotificationsClientImpl } from '@hcengineering/notification-resources' +import { inboxId } from '@hcengineering/inbox' +import communication from '@hcengineering/communication' +import { ipcMainExposed } from './typesUtils' + +let client: TxOperations + +async function hydrateNotificationAsYouCan (lastNotification: InboxNotification): Promise<{ title: string, body: string } | undefined> { + // Let's try to do our best and figure out from who we have an notification + + if (client === undefined) { + return undefined + } + + if (lastNotification === undefined) { + return undefined + } + + let intlTitle: IntlString | undefined + let titleParams + + if (lastNotification._class === notification.class.CommonInboxNotification) { + intlTitle = (lastNotification as CommonInboxNotification).message + titleParams = (lastNotification as CommonInboxNotification).props + } else if (lastNotification._class === notification.class.ActivityInboxNotification) { + intlTitle = (lastNotification as ActivityInboxNotification).title + titleParams = (lastNotification as ActivityInboxNotification).intlParams + } + + if (intlTitle !== undefined && lastNotification.body !== undefined) { + const intlParams = lastNotification.intlParams ?? {} + + if (lastNotification.intlParamsNotLocalized !== undefined) { + for (const param in lastNotification.intlParamsNotLocalized) { + const value = lastNotification.intlParamsNotLocalized[param] + intlParams[param] = await translate(value, {}) + } + } + const title = await translate(intlTitle, titleParams ?? {}) + const body = await translate(lastNotification.body, lastNotification.intlParams ?? {}) + + // Do not show notification if there is no translate + if (title === intlTitle as string || body === lastNotification.body as string) { + return undefined + } + + return { title, body } + } + + const title = await translate(desktopPreferences.string.HaveGotANotification, {}) + + // Do not show notification if there is no translate + if (title === lastNotification.title as string) { + return undefined + } + + const noPersonData = { + title, + body: '' + } + + const person = await getPersonByPersonId(client, lastNotification.modifiedBy) + if (person == null) { + return noPersonData + } + + return { + title, + body: formatName(person.name) + } +} + +function getLasUnViewedNotification ( + notifications: InboxNotification[], + notificationHistory: Map +): InboxNotification | undefined { + let lastNotification + let lastTime = 0 + + for (const n of notifications) { + if (notificationHistory.has(n._id as string)) { + continue + } + + const createdOn = n.createdOn ?? n.modifiedOn + + notificationHistory.set(n._id as string, createdOn) + + if (createdOn > lastTime) { + lastTime = createdOn + lastNotification = n + } + } + + return lastNotification +} + +/** + * @public + */ +export function configureNotifications (): void { + let preferences = defaultNotificationPreference + let prevUnViewdNotificationsCount = 0 + + // For now we want to track all notifications which happends after the launch + // because we generate them on a client + let initTimestamp = 0 + const notificationHistory = new Map() + let newUnreadNotifications = 0 + + addEventListener(workbench.event.NotifyConnection, async () => { + client = getClient() + const electronAPI = ipcMainExposed() + + const inboxClient = InboxNotificationsClientImpl.getClient() + const notificationsQuery = createNotificationsQuery(true) + const notificationsCountQuery = createNotificationsQuery(true) + + const isCommunicationEnabled = getMetadata(communication.metadata.Enabled) ?? false + + if (isCommunicationEnabled) { + notificationsCountQuery.query({ read: false, limit: 1, strict: true, total: true }, res => { + newUnreadNotifications = res.getTotal() + + if (preferences.showUnreadCounter) { + electronAPI.setBadge(prevUnViewdNotificationsCount + newUnreadNotifications) + } + + if (preferences.bounceAppIcon) { + electronAPI.dockBounce() + } + }) + } + + function startNotificationQuery (): void { + if (!isCommunicationEnabled) return + notificationsQuery.query({ + read: false, + limit: 1, + strict: true, + order: SortingOrder.Descending, + created: { + greaterOrEqual: new Date() + } + }, (res) => { + if (!preferences.showNotifications) return + const notification = res.getResult()[0] + if (notification !== undefined && !notificationHistory.has(notification.id)) { + notificationHistory.set(notification.id, notification.created.getTime()) + electronAPI.sendNotification({ + silent: !preferences.playSound, + application: inboxId, + title: notification.content.title, + body: `${notification.content.senderName}: ${notification.content.shortText}` + }) + } + }) + } + + if (preferences.showNotifications) { + startNotificationQuery() + } + + async function handleNotifications (notificationsByContext: Map, InboxNotification[]>): Promise { + const inboxData = await getDisplayInboxData(notificationsByContext) + + if (notificationHistory.size === 0) { + for (const [, notifications] of inboxData) { + for (const n of notifications) { + notificationHistory.set(n._id as string, n.createdOn ?? n.modifiedOn) + } + } + } + + const unViewedNotifications: InboxNotification[] = Array.from(inboxData.values()).flat().filter(({ isViewed }) => !isViewed) + // const notificationsAfterLaunch = notifications.filter((p) => p.txes.some((p) => p.modifiedOn > initTimestamp)) + // We need to get the most recent notifications + + if (prevUnViewdNotificationsCount !== unViewedNotifications.length) { + if (preferences.showUnreadCounter) { + electronAPI.setBadge(unViewedNotifications.length + newUnreadNotifications) + } + if (preferences.bounceAppIcon) { + electronAPI.dockBounce() + } + prevUnViewdNotificationsCount = unViewedNotifications.length + } + + const notification = getLasUnViewedNotification(unViewedNotifications, notificationHistory) + + if (preferences.showNotifications && initTimestamp > 0 && notification !== undefined) { + // const notification = notificationsAfterLaunch[notificationsAfterLaunch.length - 1] + const notificationData = await hydrateNotificationAsYouCan(notification) + if (notificationData !== undefined) { + if (notificationData.body === '') { + notificationData.body = await translate(desktopPreferences.string.TotalNotificationsCount, { + count: prevUnViewdNotificationsCount + }) + } + + electronAPI.sendNotification({ + silent: !preferences.playSound, + application: notificationId, + ...notificationData + }) + } + } + + if (initTimestamp === 0) { + initTimestamp = Date.now() + } + } + + inboxClient.inboxNotificationsByContext.subscribe(data => { + void handleNotifications(data) + }) + + activePreferences.subscribe((newPreferences) => { + if (preferences.showUnreadCounter && !newPreferences.showUnreadCounter) { + electronAPI.setBadge(0) + } + if (!preferences.showUnreadCounter && newPreferences.showUnreadCounter) { + electronAPI.setBadge(prevUnViewdNotificationsCount + newUnreadNotifications) + } + + if (newPreferences.showNotifications && !preferences.showNotifications) { + startNotificationQuery() + } + preferences = newPreferences + }) + }) + + addEventListener(workbench.event.NotifyTitle, async (event, title: string) => { + ipcMainExposed().setTitle(title) + }) + + location.subscribe((location) => { + if (!(location.path[0] === workbenchId || location.path[0] === workbench.component.WorkbenchApp)) { + // We need to clear badge + ipcMainExposed().setBadge(0) + } + }) +} diff --git a/scripts/off/desktop/src/ui/platform.ts b/scripts/off/desktop/src/ui/platform.ts new file mode 100644 index 0000000..f49f15f --- /dev/null +++ b/scripts/off/desktop/src/ui/platform.ts @@ -0,0 +1,481 @@ +// +// Copyright © 2023 Hardcore Engineering Inc. +// + +import { + Plugin, + addEventListener, + addLocation, + addStringsLoader, + getMetadata, + platformId, + setMetadata +} from '@hcengineering/platform' + +import { activityId } from '@hcengineering/activity' +import aiBot, { aiBotId } from '@hcengineering/ai-bot' +import { attachmentId } from '@hcengineering/attachment' +import { bitrixId } from '@hcengineering/bitrix' +import { boardId } from '@hcengineering/board' +import calendar, { calendarId } from '@hcengineering/calendar' +import { cardId } from '@hcengineering/card' +import { chunterId } from '@hcengineering/chunter' +import client, { clientId } from '@hcengineering/client' +import contactPlugin, { contactId } from '@hcengineering/contact' +import { documentsId } from '@hcengineering/controlled-documents' +import { desktopPreferencesId } from '@hcengineering/desktop-preferences' +import { desktopDownloadsId } from '@hcengineering/desktop-downloads' +import { diffviewId } from '@hcengineering/diffview' +import { documentId } from '@hcengineering/document' +import { driveId } from '@hcengineering/drive' +import exportPlugin, { exportId } from '@hcengineering/export' +import gmail, { gmailId } from '@hcengineering/gmail' +import guest, { guestId } from '@hcengineering/guest' +import { hrId } from '@hcengineering/hr' +import { imageCropperId } from '@hcengineering/image-cropper' +import { inventoryId } from '@hcengineering/inventory' +import { leadId } from '@hcengineering/lead' +import login, { loginId } from '@hcengineering/login' +import notification, { notificationId } from '@hcengineering/notification' +import onboard, { onboardId } from '@hcengineering/onboard' +import presence, { presenceId } from '@hcengineering/presence' +import { processId } from '@hcengineering/process' +import { productsId } from '@hcengineering/products' +import { questionsId } from '@hcengineering/questions' +import { recruitId } from '@hcengineering/recruit' +import rekoni from '@hcengineering/rekoni' +import { requestId } from '@hcengineering/request' +import setting, { settingId } from '@hcengineering/setting' +import { supportId } from '@hcengineering/support' +import { surveyId } from '@hcengineering/survey' +import { tagsId } from '@hcengineering/tags' +import { taskId } from '@hcengineering/task' +import telegram, { telegramId } from '@hcengineering/telegram' +import { templatesId } from '@hcengineering/templates' +import { testManagementId } from '@hcengineering/test-management' +import { timeId } from '@hcengineering/time' +import tracker, { trackerId } from '@hcengineering/tracker' +import { trainingId } from '@hcengineering/training' +import uiPlugin, { getCurrentLocation, locationStorageKeyId, navigate, setLocationStorageKey } from '@hcengineering/ui' +import { mediaId } from '@hcengineering/media' +import { uploaderId } from '@hcengineering/uploader' +import recorder, { recorderId } from '@hcengineering/recorder' +import { viewId } from '@hcengineering/view' +import workbench, { workbenchId } from '@hcengineering/workbench' +import { mailId } from '@hcengineering/mail' +import { chatId } from '@hcengineering/chat' +import { inboxId } from '@hcengineering/inbox' +import { achievementId } from '@hcengineering/achievement' +import communication, { communicationId } from '@hcengineering/communication' +import { emojiId } from '@hcengineering/emoji' +import billingPlugin, { billingId } from '@hcengineering/billing' + +import '@hcengineering/activity-assets' +import '@hcengineering/analytics-collector-assets' +import '@hcengineering/attachment-assets' +import '@hcengineering/bitrix-assets' +import '@hcengineering/board-assets' +import '@hcengineering/calendar-assets' +import '@hcengineering/card-assets' +import '@hcengineering/chunter-assets' +import '@hcengineering/contact-assets' +import '@hcengineering/controlled-documents-assets' +import '@hcengineering/desktop-preferences-assets' +import '@hcengineering/desktop-downloads-assets' +import '@hcengineering/diffview-assets' +import '@hcengineering/document-assets' +import '@hcengineering/drive-assets' +import '@hcengineering/export-assets' +import '@hcengineering/gmail-assets' +import '@hcengineering/guest-assets' +import '@hcengineering/hr-assets' +import '@hcengineering/inventory-assets' +import '@hcengineering/lead-assets' +import '@hcengineering/login-assets' +import '@hcengineering/love-assets' +import '@hcengineering/notification-assets' +import '@hcengineering/preference-assets' +import '@hcengineering/print-assets' +import '@hcengineering/process-assets' +import '@hcengineering/products-assets' +import '@hcengineering/questions-assets' +import '@hcengineering/recruit-assets' +import '@hcengineering/request-assets' +import '@hcengineering/setting-assets' +import '@hcengineering/support-assets' +import '@hcengineering/survey-assets' +import '@hcengineering/tags-assets' +import '@hcengineering/task-assets' +import '@hcengineering/telegram-assets' +import '@hcengineering/templates-assets' +import '@hcengineering/test-management-assets' +import '@hcengineering/text-editor-assets' +import '@hcengineering/time-assets' +import '@hcengineering/tracker-assets' +import '@hcengineering/training-assets' +import '@hcengineering/uploader-assets' +import '@hcengineering/recorder-assets' +import '@hcengineering/view-assets' +import '@hcengineering/workbench-assets' +import '@hcengineering/mail-assets' +import '@hcengineering/chat-assets' +import '@hcengineering/inbox-assets' +import '@hcengineering/achievement-assets' +import '@hcengineering/emoji-assets' +import '@hcengineering/media-assets' +import '@hcengineering/communication-assets' +import '@hcengineering/billing-assets' + +import analyticsCollector, { analyticsCollectorId } from '@hcengineering/analytics-collector' +import { coreId } from '@hcengineering/core' +import love, { loveId } from '@hcengineering/love' +import presentation, { parsePreviewConfig, parseUploadConfig, presentationId } from '@hcengineering/presentation' +import print, { printId } from '@hcengineering/print' +import sign from '@hcengineering/sign' +import textEditor, { textEditorId } from '@hcengineering/text-editor' + +import { initThemeStore, setDefaultLanguage } from '@hcengineering/theme' +import { configureNotifications } from './notifications' +import { configureAnalyticsProviders } from '@hcengineering/analytics-providers' +import { Branding, Config, } from './types' +import { ipcMainExposed } from './typesUtils' + +import github, { githubId } from '@hcengineering/github' +import '@hcengineering/github-assets' +import { preferenceId } from '@hcengineering/preference' +import { uiId } from '@hcengineering/ui/src/plugin' + +function configureI18n (): void { + // Add localization + addStringsLoader(platformId, async (lang: string) => await import( + /* webpackInclude: /\.json$/ */ + /* webpackMode: "lazy" */ + /* webpackChunkName: "lang-[request]" */ + `@hcengineering/platform/lang/${lang}.json` + )) + addStringsLoader(coreId, async (lang: string) => await import( + /* webpackInclude: /\.json$/ */ + /* webpackMode: "lazy" */ + /* webpackChunkName: "lang-[request]" */ + `@hcengineering/core/lang/${lang}.json` + )) + addStringsLoader( + presentationId, + async (lang: string) => await import(`@hcengineering/presentation/lang/${lang}.json`) + ) + addStringsLoader(textEditorId, async (lang: string) => await import(`@hcengineering/text-editor-assets/lang/${lang}.json`)) + addStringsLoader(uiId, async (lang: string) => await import(`@hcengineering/ui/lang/${lang}.json`)) + addStringsLoader(mediaId, async (lang: string) => await import(`@hcengineering/media-assets/lang/${lang}.json`)) + addStringsLoader(uploaderId, async (lang: string) => await import(`@hcengineering/uploader-assets/lang/${lang}.json`)) + addStringsLoader(recorderId, async (lang: string) => await import(`@hcengineering/recorder-assets/lang/${lang}.json`)) + addStringsLoader(activityId, async (lang: string) => await import(`@hcengineering/activity-assets/lang/${lang}.json`)) + addStringsLoader( + attachmentId, + async (lang: string) => await import(`@hcengineering/attachment-assets/lang/${lang}.json`) + ) + addStringsLoader(bitrixId, async (lang: string) => await import(`@hcengineering/bitrix-assets/lang/${lang}.json`)) + addStringsLoader(boardId, async (lang: string) => await import(`@hcengineering/board-assets/lang/${lang}.json`)) + addStringsLoader(calendarId, async (lang: string) => await import(`@hcengineering/calendar-assets/lang/${lang}.json`)) + addStringsLoader(chunterId, async (lang: string) => await import(`@hcengineering/chunter-assets/lang/${lang}.json`)) + addStringsLoader(contactId, async (lang: string) => await import(`@hcengineering/contact-assets/lang/${lang}.json`)) + addStringsLoader(driveId, async (lang: string) => await import(`@hcengineering/drive-assets/lang/${lang}.json`)) + addStringsLoader(gmailId, async (lang: string) => await import(`@hcengineering/gmail-assets/lang/${lang}.json`)) + addStringsLoader(hrId, async (lang: string) => await import(`@hcengineering/hr-assets/lang/${lang}.json`)) + addStringsLoader( + inventoryId, + async (lang: string) => await import(`@hcengineering/inventory-assets/lang/${lang}.json`) + ) + addStringsLoader(leadId, async (lang: string) => await import(`@hcengineering/lead-assets/lang/${lang}.json`)) + addStringsLoader(loginId, async (lang: string) => await import(`@hcengineering/login-assets/lang/${lang}.json`)) + addStringsLoader( + notificationId, + async (lang: string) => await import(`@hcengineering/notification-assets/lang/${lang}.json`) + ) + addStringsLoader(onboardId, async (lang: string) => await import(`@hcengineering/onboard-assets/lang/${lang}.json`)) + addStringsLoader( + preferenceId, + async (lang: string) => await import(`@hcengineering/preference-assets/lang/${lang}.json`) + ) + addStringsLoader(recruitId, async (lang: string) => await import(`@hcengineering/recruit-assets/lang/${lang}.json`)) + addStringsLoader(requestId, async (lang: string) => await import(`@hcengineering/request-assets/lang/${lang}.json`)) + addStringsLoader(settingId, async (lang: string) => await import(`@hcengineering/setting-assets/lang/${lang}.json`)) + addStringsLoader(supportId, async (lang: string) => await import(`@hcengineering/support-assets/lang/${lang}.json`)) + addStringsLoader(tagsId, async (lang: string) => await import(`@hcengineering/tags-assets/lang/${lang}.json`)) + addStringsLoader(taskId, async (lang: string) => await import(`@hcengineering/task-assets/lang/${lang}.json`)) + addStringsLoader(telegramId, async (lang: string) => await import(`@hcengineering/telegram-assets/lang/${lang}.json`)) + addStringsLoader( + templatesId, + async (lang: string) => await import(`@hcengineering/templates-assets/lang/${lang}.json`) + ) + addStringsLoader(trackerId, async (lang: string) => await import(`@hcengineering/tracker-assets/lang/${lang}.json`)) + addStringsLoader(viewId, async (lang: string) => await import(`@hcengineering/view-assets/lang/${lang}.json`)) + addStringsLoader( + workbenchId, + async (lang: string) => await import(`@hcengineering/workbench-assets/lang/${lang}.json`) + ) + + addStringsLoader( + desktopPreferencesId, + async (lang: string) => await import(`@hcengineering/desktop-preferences-assets/lang/${lang}.json`) + ) + addStringsLoader( + desktopDownloadsId, + async (lang: string) => await import(`@hcengineering/desktop-downloads-assets/lang/${lang}.json`) + ) + addStringsLoader(diffviewId, async (lang: string) => await import(`@hcengineering/diffview-assets/lang/${lang}.json`)) + addStringsLoader(documentId, async (lang: string) => await import(`@hcengineering/document-assets/lang/${lang}.json`)) + addStringsLoader(timeId, async (lang: string) => await import(`@hcengineering/time-assets/lang/${lang}.json`)) + addStringsLoader(githubId, async (lang: string) => await import(`@hcengineering/github-assets/lang/${lang}.json`)) + addStringsLoader(documentsId, async (lang: string) => await import(`@hcengineering/controlled-documents-assets/lang/${lang}.json`)) + addStringsLoader(productsId, async (lang: string) => await import(`@hcengineering/products-assets/lang/${lang}.json`)) + addStringsLoader(questionsId, async (lang: string) => await import(`@hcengineering/questions-assets/lang/${lang}.json`)) + addStringsLoader(trainingId, async (lang: string) => await import(`@hcengineering/training-assets/lang/${lang}.json`)) + addStringsLoader(guestId, async (lang: string) => await import(`@hcengineering/guest-assets/lang/${lang}.json`)) + addStringsLoader(loveId, async (lang: string) => await import(`@hcengineering/love-assets/lang/${lang}.json`)) + addStringsLoader(printId, async (lang: string) => await import(`@hcengineering/print-assets/lang/${lang}.json`)) + addStringsLoader(exportId, async (lang: string) => await import(`@hcengineering/export-assets/lang/${lang}.json`)) + addStringsLoader(analyticsCollectorId, async (lang: string) => await import(`@hcengineering/analytics-collector-assets/lang/${lang}.json`)) + addStringsLoader(testManagementId, async (lang: string) => await import(`@hcengineering/test-management-assets/lang/${lang}.json`)) + addStringsLoader(surveyId, async (lang: string) => await import(`@hcengineering/survey-assets/lang/${lang}.json`)) + addStringsLoader(cardId, async (lang: string) => await import(`@hcengineering/card-assets/lang/${lang}.json`)) + addStringsLoader(mailId, async (lang: string) => await import(`@hcengineering/mail-assets/lang/${lang}.json`)) + addStringsLoader(chatId, async (lang: string) => await import(`@hcengineering/chat-assets/lang/${lang}.json`)) + addStringsLoader(inboxId, async (lang: string) => await import(`@hcengineering/inbox-assets/lang/${lang}.json`)) + addStringsLoader(processId, async (lang: string) => await import(`@hcengineering/process-assets/lang/${lang}.json`)) + addStringsLoader(achievementId, async (lang: string) => await import(`@hcengineering/achievement-assets/lang/${lang}.json`)) + addStringsLoader(communicationId, async (lang: string) => await import(`@hcengineering/communication-assets/lang/${lang}.json`)) + addStringsLoader(emojiId, async (lang: string) => await import(`@hcengineering/emoji-assets/lang/${lang}.json`)) + addStringsLoader(billingId, async (lang: string) => await import(`@hcengineering/billing-assets/lang/${lang}.json`)) +} + +export class PlatformBranding { + constructor(private title: string) { + } + public getTitle(): string { + return this.title; + } +} + +export class PlatformParameters { + constructor(private branding: PlatformBranding) { + } + public getBranding(): PlatformBranding { + return this.branding; + } +} + +export async function configurePlatform (): Promise { + configureI18n() + + const ipcMain = ipcMainExposed() + const config: Config = await ipcMain.config() + const myBranding: Branding = await ipcMain.branding() + // await (await fetch(devConfig? '/config-dev.json' : '/config.json')).json() + console.log('loading configuration', config) + console.log('loaded branding', myBranding) + + const title = myBranding.title ?? 'Huly Desktop' + ipcMain.setTitle(title) + + configureAnalyticsProviders(config) + + setMetadata(login.metadata.AccountsUrl, config.ACCOUNTS_URL) + setMetadata(login.metadata.DisableSignUp, config.DISABLE_SIGNUP === 'true') + setMetadata(login.metadata.HideLocalLogin, config.HIDE_LOCAL_LOGIN === 'true') + setMetadata(presentation.metadata.UploadURL, config.UPLOAD_URL) + setMetadata(presentation.metadata.FilesURL, config.FILES_URL) + setMetadata(presentation.metadata.CollaboratorUrl, config.COLLABORATOR_URL) + setMetadata(presentation.metadata.PreviewConfig, parsePreviewConfig(config.PREVIEW_CONFIG)) + setMetadata(presentation.metadata.UploadConfig, parseUploadConfig(config.UPLOAD_CONFIG, config.UPLOAD_URL)) + setMetadata(presentation.metadata.FrontUrl, config.FRONT_URL) + setMetadata(presentation.metadata.LinkPreviewUrl, config.LINK_PREVIEW_URL ?? '') + setMetadata(presentation.metadata.MailUrl, config.MAIL_URL) + setMetadata(recorder.metadata.StreamUrl, config.STREAM_URL ?? '') + setMetadata(presentation.metadata.StatsUrl, config.STATS_URL) + + setMetadata(textEditor.metadata.Collaborator, config.COLLABORATOR ?? '') + + setMetadata(github.metadata.GithubApplication, config.GITHUB_APP ?? '') + setMetadata(github.metadata.GithubClientID, config.GITHUB_CLIENTID ?? '') + setMetadata(github.metadata.GithubURL, config.GITHUB_URL ?? '') + + setMetadata(communication.metadata.Enabled, config.COMMUNICATION_API_ENABLED === 'true') + + if (config.MODEL_VERSION != null) { + console.log('Minimal Model version requirement', config.MODEL_VERSION) + setMetadata(presentation.metadata.ModelVersion, config.MODEL_VERSION) + } + if (config.VERSION != null) { + console.log('Minimal version requirement', config.VERSION) + setMetadata(presentation.metadata.FrontVersion, config.VERSION) + } + setMetadata(telegram.metadata.TelegramURL, config.TELEGRAM_URL ?? 'http://localhost:8086') + setMetadata(telegram.metadata.BotUrl, config.TELEGRAM_BOT_URL ?? 'http://huly.local:4020') + setMetadata(gmail.metadata.GmailURL, config.GMAIL_URL ?? 'http://localhost:8087') + setMetadata(calendar.metadata.CalendarServiceURL, config.CALENDAR_URL ?? 'http://localhost:8095') + setMetadata(calendar.metadata.PublicScheduleURL, config.PUBLIC_SCHEDULE_URL) + setMetadata(calendar.metadata.CalDavServerURL, config.CALDAV_SERVER_URL) + setMetadata(notification.metadata.PushPublicKey, config.PUSH_PUBLIC_KEY) + + setMetadata(rekoni.metadata.RekoniUrl, config.REKONI_URL) + setMetadata(contactPlugin.metadata.LastNameFirst, myBranding.lastNameFirst === 'true') + setMetadata(love.metadata.ServiceEnpdoint, config.LOVE_ENDPOINT) + setMetadata(love.metadata.WebSocketURL, config.LIVEKIT_WS) + setMetadata(print.metadata.PrintURL, config.PRINT_URL) + setMetadata(sign.metadata.SignURL, config.SIGN_URL) + setMetadata(uiPlugin.metadata.DefaultApplication, login.component.LoginApp) + setMetadata(analyticsCollector.metadata.EndpointURL, config.ANALYTICS_COLLECTOR_URL) + setMetadata(aiBot.metadata.EndpointURL, config.AI_URL) + setMetadata(presence.metadata.PresenceUrl, config.PRESENCE_URL ?? '') + setMetadata(exportPlugin.metadata.ExportUrl, config.EXPORT_URL ?? '') + + setMetadata(billingPlugin.metadata.BillingURL, config.BILLING_URL ?? '') + + const languages = myBranding.languages !== undefined && myBranding.languages !== '' ? myBranding.languages.split(',').map((l) => l.trim()) : ['en', 'ru', 'es', 'pt', 'zh', 'fr', 'cs', 'it', 'de', 'ja'] + + setMetadata(uiPlugin.metadata.Languages, languages) + + setMetadata( + uiPlugin.metadata.Routes, + new Map([ + [workbenchId, workbench.component.WorkbenchApp], + [loginId, login.component.LoginApp], + [onboardId, onboard.component.OnboardApp], + [calendarId, calendar.component.ConnectApp], + [guestId, guest.component.GuestApp] + ]) + ) + + addLocation(coreId, async () => ({ default: async () => ({}) })) + addLocation(presentationId, async () => ({ default: async () => ({}) })) + + addLocation(clientId, async () => await import('@hcengineering/client-resources')) + addLocation(loginId, async () => await import('@hcengineering/login-resources')) + addLocation(onboardId, async () => await import('@hcengineering/onboard-resources')) + addLocation(workbenchId, async () => await import('@hcengineering/workbench-resources')) + addLocation(viewId, async () => await import('@hcengineering/view-resources')) + addLocation(taskId, async () => await import('@hcengineering/task-resources')) + addLocation(contactId, async () => await import('@hcengineering/contact-resources')) + addLocation(chunterId, async () => await import('@hcengineering/chunter-resources')) + addLocation(recruitId, async () => await import('@hcengineering/recruit-resources')) + addLocation(activityId, async () => await import('@hcengineering/activity-resources')) + addLocation(settingId, async () => await import('@hcengineering/setting-resources')) + addLocation(leadId, async () => await import('@hcengineering/lead-resources')) + addLocation(telegramId, async () => await import('@hcengineering/telegram-resources')) + addLocation(attachmentId, async () => await import('@hcengineering/attachment-resources')) + addLocation(gmailId, async () => await import('@hcengineering/gmail-resources')) + addLocation(imageCropperId, async () => await import('@hcengineering/image-cropper-resources')) + addLocation(inventoryId, async () => await import('@hcengineering/inventory-resources')) + addLocation(templatesId, async () => await import('@hcengineering/templates-resources')) + addLocation(notificationId, async () => await import('@hcengineering/notification-resources')) + addLocation(tagsId, async () => await import('@hcengineering/tags-resources')) + addLocation(calendarId, async () => await import('@hcengineering/calendar-resources')) + addLocation(analyticsCollectorId, async () => await import('@hcengineering/analytics-collector-resources')) + addLocation(aiBotId, async () => await import('@hcengineering/ai-bot-resources')) + + addLocation(trackerId, async () => await import('@hcengineering/tracker-resources')) + addLocation(boardId, async () => await import('@hcengineering/board-resources')) + addLocation(hrId, async () => await import('@hcengineering/hr-resources')) + addLocation(bitrixId, async () => await import('@hcengineering/bitrix-resources')) + addLocation(requestId, async () => await import('@hcengineering/request-resources')) + addLocation(driveId, async () => await import('@hcengineering/drive-resources')) + addLocation(supportId, async () => await import('@hcengineering/support-resources')) + addLocation(diffviewId, async () => await import('@hcengineering/diffview-resources')) + addLocation(documentId, async () => await import('@hcengineering/document-resources')) + addLocation(timeId, async () => await import('@hcengineering/time-resources')) + addLocation(questionsId, async () => await import('@hcengineering/questions-resources')) + addLocation(trainingId, async () => await import('@hcengineering/training-resources')) + addLocation(productsId, async () => await import('@hcengineering/products-resources')) + addLocation(documentsId, async () => await import('@hcengineering/controlled-documents-resources')) + addLocation(mediaId, async () => await import('@hcengineering/media-resources')) + addLocation(uploaderId, async () => await import('@hcengineering/uploader-resources')) + addLocation(recorderId, async () => await import('@hcengineering/recorder-resources')) + addLocation(presenceId, async () => await import('@hcengineering/presence-resources')) + addLocation(githubId, async () => await import(/* webpackChunkName: "github" */ '@hcengineering/github-resources')) + addLocation( + desktopPreferencesId, + async () => await import(/* webpackChunkName: "desktop-preferences" */ '@hcengineering/desktop-preferences-resources') + ) + addLocation( + desktopDownloadsId, + async () => await import(/* webpackChunkName: "desktop-downloads" */ '@hcengineering/desktop-downloads-resources') + ) + addLocation(guestId, () => import(/* webpackChunkName: "guest" */ '@hcengineering/guest-resources')) + addLocation(loveId, () => import(/* webpackChunkName: "love" */ '@hcengineering/love-resources')) + addLocation(printId, () => import(/* webpackChunkName: "print" */ '@hcengineering/print-resources')) + addLocation(exportId, () => import(/* webpackChunkName: "export" */ '@hcengineering/export-resources')) + addLocation(textEditorId, () => import(/* webpackChunkName: "text-editor" */ '@hcengineering/text-editor-resources')) + addLocation(testManagementId, () => import(/* webpackChunkName: "test-management" */ '@hcengineering/test-management-resources')) + addLocation(surveyId, () => import(/* webpackChunkName: "survey" */ '@hcengineering/survey-resources')) + addLocation(cardId, () => import(/* webpackChunkName: "card" */ '@hcengineering/card-resources')) + addLocation(chatId, () => import(/* webpackChunkName: "chat" */ '@hcengineering/chat-resources')) + addLocation(inboxId, () => import(/* webpackChunkName: "inbox" */ '@hcengineering/inbox-resources')) + addLocation(processId, () => import(/* webpackChunkName: "process" */ '@hcengineering/process-resources')) + addLocation(achievementId, () => import(/* webpackChunkName: "achievement" */ '@hcengineering/achievement-resources')) + addLocation(communicationId, () => import(/* webpackChunkName: "communication" */ '@hcengineering/communication-resources')) + addLocation(emojiId, () => import(/* webpackChunkName: "achievement" */ '@hcengineering/emoji-resources')) + addLocation(billingId, () => import(/* webpackChunkName: "achievement" */ '@hcengineering/billing-resources')) + + setMetadata(client.metadata.FilterModel, 'ui') + setMetadata(client.metadata.ExtraPlugins, ['preference' as Plugin]) + + // Use binary response transfer for faster performance and small transfer sizes. + setMetadata(client.metadata.UseBinaryProtocol, true) + // Disable for now, since it causes performance issues on linux/docker/kubernetes boxes for now. + setMetadata(client.metadata.UseProtocolCompression, true) + + setMetadata(uiPlugin.metadata.PlatformTitle, title) + setMetadata(workbench.metadata.PlatformTitle, title) + setDefaultLanguage(myBranding.defaultLanguage ?? 'en') + setMetadata(workbench.metadata.DefaultApplication, myBranding.defaultApplication ?? 'tracker') + setMetadata(workbench.metadata.DefaultSpace, myBranding.defaultSpace ?? tracker.project.DefaultProject) + setMetadata(workbench.metadata.DefaultSpecial, myBranding.defaultSpecial ?? 'issues') + + try { + const parsed = JSON.parse(config.EXCLUDED_APPLICATIONS_FOR_ANONYMOUS ?? '') + setMetadata(workbench.metadata.ExcludedApplicationsForAnonymous, Array.isArray(parsed) ? parsed : []) + } catch (err) { + setMetadata(workbench.metadata.ExcludedApplicationsForAnonymous, []) + } + + initThemeStore() + + addEventListener(workbench.event.NotifyConnection, async () => { + await ipcMain.setFrontCookie( + config.FRONT_URL, + presentation.metadata.Token.replaceAll(':', '-'), + getMetadata(presentation.metadata.Token) ?? '' + ) + }) + + configureNotifications() + + setMetadata(setting.metadata.BackupUrl, config.BACKUP_URL ?? '') + + if (config.INITIAL_URL !== '') { + setLocationStorageKey('uberflow_child') + } + + const last = localStorage.getItem(locationStorageKeyId) + + if (config.INITIAL_URL !== '') { + console.log('NAVIGATE', config.INITIAL_URL, getCurrentLocation()) + // NavigationExpandedDefault=false fills buggy: + // — Navigator closes in unpredictable way + // — Many sections of the have have no default central content so without + // navigator is looks like something is broken + // Should consifer if we want to fix this + // setMetadata(workbench.metadata.NavigationExpandedDefault, false) + navigate({ + path: config.INITIAL_URL.split('/') + }) + } else if (last !== null) { + navigate(JSON.parse(last)) + } else { + navigate({ path: [] }) + } + + console.log('Initial location is: ', getCurrentLocation()) + + return new PlatformParameters(new PlatformBranding(title)) +} diff --git a/scripts/off/desktop/src/ui/preload.ts b/scripts/off/desktop/src/ui/preload.ts new file mode 100644 index 0000000..a1a4828 --- /dev/null +++ b/scripts/off/desktop/src/ui/preload.ts @@ -0,0 +1,180 @@ +// preload.js + +import { contextBridge, ipcRenderer } from 'electron' +import { BrandingMap, Config, IPCMainExposed, MenuBarAction, NotificationParams } from './types' + +/** + * @public + */ +export function concatLink (host: string, path: string): string { + if (!host.endsWith('/') && !path.startsWith('/')) { + return `${host}/${path}` + } else if (host.endsWith('/') && path.startsWith('/')) { + const newPath = path.slice(1) + return `${host}${newPath}` + } else { + return `${host}${path}` + } +} + +async function loadServerConfig (url: string): Promise { + let retries = 5 + let res: Response | undefined + + do { + try { + res = await fetch(url, { + keepalive: true + }) + break + } catch (e) { + retries-- + if (retries === 0) { + throw new Error(`Failed to load server config: ${e}`) + } + await new Promise((resolve) => setTimeout(resolve, 1000 * (5 - retries))) + } + } while (retries > 0) + + if (res === undefined) { + // In theory should never get here + throw new Error('Failed to load server config') + } + + return await res.json() +} + +const openArg = (process.argv.find((it) => it.startsWith('--open=')) ?? '').split('--open=')[1] +console.log('Open passed', openArg) +let configPromise: Promise | undefined + +const expose: IPCMainExposed = { + setBadge: (badge: number) => { + ipcRenderer.send('set-badge', badge) + }, + setTitle: (title: string) => { + ipcRenderer.send('set-title', title) + }, + dockBounce: () => { + ipcRenderer.send('dock-bounce') + }, + sendNotification: (notificationParams: NotificationParams) => { + ipcRenderer.send('send-notification', notificationParams) + }, + + minimizeWindow: () => { + ipcRenderer.invoke('window-minimize') + }, + + maximizeWindow: () => { + ipcRenderer.invoke('window-maximize') + }, + + closeWindow: () => { + ipcRenderer.invoke('window-close') + }, + + onWindowStateChange: (callback) => { + ipcRenderer.on('window-state-changed', callback) + }, + + isOsUsingDarkTheme: async () => { + return await ipcRenderer.invoke('get-is-os-using-dark-theme') + }, + + executeMenuBarAction: (action: MenuBarAction) => { + ipcRenderer.invoke('menu-action', action) + }, + + config: async () => { + if (configPromise === undefined) { + configPromise = new Promise((resolve, reject) => { + ipcRenderer.invoke('get-main-config').then( + async (mainConfig) => { + const serverConfig = await loadServerConfig(concatLink(mainConfig.FRONT_URL, mainConfig.CONFIG_URL)) + const combinedConfig = { + ...serverConfig, + ...mainConfig, + INITIAL_URL: openArg ?? '', + UPLOAD_URL: (serverConfig.UPLOAD_URL as string).includes('://') + ? serverConfig.UPLOAD_URL + : concatLink(mainConfig.FRONT_URL, serverConfig.UPLOAD_URL), + MODEL_VERSION: mainConfig.MODEL_VERSION, + VERSION: mainConfig.VERSION + } + + ipcRenderer.send('set-combined-config', combinedConfig) + + resolve(combinedConfig) + }, + (err) => { + reject(err) + } + ) + }) + } + + return await configPromise + }, + branding: async () => { + const cfg = await expose.config() + const branding: BrandingMap = await ( + await fetch(cfg.BRANDING_URL ?? concatLink(cfg.FRONT_URL, 'branding.json'), { keepalive: true }) + ).json() + const host = await ipcRenderer.invoke('get-host') + return branding[host] ?? {} + }, + on: (event: string, op: (...args: any[]) => void) => { + ipcRenderer.on(event, (channel: any, args: any[]) => { + console.log('on handle', args) + op(channel, args) + }) + }, + + handleDeepLink: (callback) => { + ipcRenderer.on('handle-deep-link', (event, value) => { + try { + if (typeof value === 'string' && value !== '') { + callback(value) + } + } catch (e) { + // Just do nothing. Nothing is ok if there is something with URL + } + }) + ipcRenderer.send('on-deep-link-handler') + }, + + handleNotificationNavigation: (callback) => { + ipcRenderer.on('handle-notification-navigation', (event, application) => { + callback(application) + }) + }, + + handleUpdateDownloadProgress: (callback) => { + ipcRenderer.on('handle-update-download-progress', (event, value) => { + callback(value) + }) + }, + + handleAuth: (callback) => { + ipcRenderer.on('handle-auth', (event, value) => { + callback(value) + }) + }, + + handleDownloadItem: (callback) => { + ipcRenderer.on('handle-download-item', (event, value) => { + callback(value) + }) + }, + + async setFrontCookie (host: string, name: string, value: string): Promise { + ipcRenderer.send('set-front-cookie', host, name, value) + }, + + getScreenAccess: () => ipcRenderer.invoke('get-screen-access'), + getScreenSources: () => ipcRenderer.invoke('get-screen-sources'), + cancelBackup: () => { ipcRenderer.send('cancel-backup') }, + startBackup: (token, endpoint, wsIds) => { ipcRenderer.send('start-backup', token, endpoint, wsIds) } +} +contextBridge.exposeInMainWorld('electron', expose) diff --git a/scripts/off/desktop/src/ui/screenShare.ts b/scripts/off/desktop/src/ui/screenShare.ts new file mode 100644 index 0000000..10554b6 --- /dev/null +++ b/scripts/off/desktop/src/ui/screenShare.ts @@ -0,0 +1,183 @@ +import log from 'electron-log' +import love from '@hcengineering/love' +import { setCustomCreateScreenTracks } from '@hcengineering/love-resources' +import { showPopup } from '@hcengineering/ui' +import { Track, LocalTrack, LocalAudioTrack, LocalVideoTrack, ParticipantEvent, TrackInvalidError, ScreenShareCaptureOptions, DeviceUnsupportedError, ScreenSharePresets } from 'livekit-client' +import { ipcMainExposed } from './typesUtils' + +export function defineGetDisplayMedia (): void { + if (navigator?.mediaDevices === undefined) { + console.warn('mediaDevices API not available') + return + } + + if (navigator.mediaDevices.getDisplayMedia === undefined) { + throw new DeviceUnsupportedError('getDisplayMedia not supported') + } + + navigator.mediaDevices.getDisplayMedia = async (opts?: DisplayMediaStreamOptions): Promise => { + if (opts === undefined) { + throw new Error('opts must be provided') + } + + const ipcMain = ipcMainExposed() + const sources = await ipcMain.getScreenSources() + + const hasAccess = await ipcMain.getScreenAccess() + if (!hasAccess) { + log.error('No screen access granted') + throw new Error('No screen access granted') + } + + return await new Promise((resolve, reject) => { + let wasSelected = false + + showPopup( + love.component.SelectScreenSourcePopup, + { + sources + }, + 'top', + () => { + if (!wasSelected) { + reject(new Error('No source selected')) + } + }, + (val) => { + if (val != null) { + wasSelected = true + opts.video = { + mandatory: { + ...(typeof opts.video === 'boolean' ? {} : opts.video), + chromeMediaSource: 'desktop', + chromeMediaSourceId: val + } + } as any + void window.navigator.mediaDevices.getUserMedia(opts).then((stream) => { + resolve(stream) + }) + } + } + ) + }) + } +} + +export function defineScreenShare (): void { + setCustomCreateScreenTracks(async function electronCreateScreenTracks (options?: ScreenShareCaptureOptions) { + const ipcMain = ipcMainExposed() + const sources = await ipcMain.getScreenSources() + + const hasAccess = await ipcMain.getScreenAccess() + if (!hasAccess) { + log.error('No screen access granted') + throw new Error('No screen access granted') + } + + if (navigator.mediaDevices.getDisplayMedia === undefined) { + throw new DeviceUnsupportedError('getDisplayMedia not supported') + } + + return await new Promise>((resolve, reject) => { + let wasSelected = false + + showPopup( + love.component.SelectScreenSourcePopup, + { + sources + }, + 'top', + () => { + if (!wasSelected) { + reject(new Error('No source selected')) + } + }, + (val) => { + if (val != null) { + wasSelected = true + if (options === undefined) { + options = {} + } + + if (options.resolution === undefined) { + options.resolution = ScreenSharePresets.h1080fps30.resolution + } + + const constraints = screenCaptureToDisplayMediaStreamOptions(options) + + if (constraints.video === undefined) { + log.error('Wrong video options specified') + throw new Error('Wrong video options specified') + } + + constraints.video = { + mandatory: { + ...(typeof constraints.video === 'boolean' ? {} : constraints.video), + chromeMediaSource: 'desktop', + chromeMediaSourceId: val + } + } as any + + void window.navigator.mediaDevices.getUserMedia(constraints).then((stream) => { + const tracks = stream.getVideoTracks() + if (tracks.length === 0) { + log.error('No video track found') + throw new TrackInvalidError('No video track found') + } + const screenVideo = new LocalVideoTrack(tracks[0], undefined, false, { + loggerName: this.roomOptions.loggerName, + loggerContextCb: () => this.logContext + }) + screenVideo.source = Track.Source.ScreenShare + if (options?.contentHint !== undefined) { + screenVideo.mediaStreamTrack.contentHint = options.contentHint + } + + const localTracks: Array = [screenVideo] + if (stream.getAudioTracks().length > 0) { + this.emit(ParticipantEvent.AudioStreamAcquired) + const screenAudio = new LocalAudioTrack( + stream.getAudioTracks()[0], + undefined, + false, + this.audioContext, + { loggerName: this.roomOptions.loggerName, loggerContextCb: () => this.logContext } + ) + screenAudio.source = Track.Source.ScreenShareAudio + localTracks.push(screenAudio) + } + resolve(localTracks) + }) + } + } + ) + }) + }) +} + +function screenCaptureToDisplayMediaStreamOptions ( + options: ScreenShareCaptureOptions +): DisplayMediaStreamOptions { + let videoConstraints: MediaTrackConstraints | boolean = options.video ?? true + // treat 0 as uncapped + if (options.resolution !== undefined && options.resolution.width > 0 && options.resolution.height > 0) { + videoConstraints = typeof videoConstraints === 'boolean' ? {} : videoConstraints + videoConstraints = { + ...videoConstraints, + width: { ideal: options.resolution.width }, + height: { ideal: options.resolution.height }, + frameRate: options.resolution.frameRate + } + } + + return { + audio: options.audio ?? false, + video: videoConstraints, + // @ts-expect-error support for experimental display media features + controller: options.controller, + selfBrowserSurface: options.selfBrowserSurface, + surfaceSwitching: options.surfaceSwitching, + systemAudio: options.systemAudio, + preferCurrentTab: options.preferCurrentTab + } +} diff --git a/scripts/off/desktop/src/ui/titleBarMenu.ts b/scripts/off/desktop/src/ui/titleBarMenu.ts new file mode 100644 index 0000000..a08ce92 --- /dev/null +++ b/scripts/off/desktop/src/ui/titleBarMenu.ts @@ -0,0 +1,548 @@ +// +// Copyright © 2025 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import { IPCMainExposed, MenuBarAction } from './types' +import { isMenuBarAction } from './typesUtils' +import { TitleBarMenuState } from './titleBarMenuState' + +export function setupTitleBarMenu(ipcMain: IPCMainExposed, root: HTMLElement): MenuBar { + const themeManager = new ThemeManager('light') + const menuManager = new MenuBarManager(ipcMain, root) + + const menuBar = menuManager.getView(); + + const menuContainer = root.querySelector('.desktop-app-menu-container') + if (menuContainer) { + const existingMenuBar = menuContainer.querySelector('.desktop-app-menu-bar') + if (existingMenuBar) { + existingMenuBar.remove() + } + menuContainer.appendChild(menuBar) + } + + menuManager.attachEventListeners(ipcMain) + + ipcMain.onWindowStateChange((_event, state) => { + const maximizeButton = root.querySelector('#maximize-button') + if (maximizeButton) { + if (state === 'maximized') { + maximizeButton.textContent = '❐' + } else { + maximizeButton.textContent = '□' + } + } + }) + + return new MenuBar(themeManager) +} + +type TitleBarTheme = 'dark' | 'light'; + +export class MenuBar { + constructor(private readonly theme: ThemeManager) { + } + + public setTheme(theme: TitleBarTheme): void { + this.theme.setTheme(theme) + } +} + +export function buildHulyApplicationMenu(): HTMLElement { + const menuBuilder = new MenuBuilder() + + const MenuFileIndex = 0 + menuBuilder.addTopLevelMenu('File', 'f') + .addMenuItem(MenuFileIndex, 'Settings', 'settings', undefined, 's') + .addMenuItem(MenuFileIndex, 'Select Workspace', 'select-workspace', undefined, 'w') + .addMenuItem(MenuFileIndex, 'Logout', 'logout', undefined, 'l') + .addSeparator(MenuFileIndex) + .addMenuItem(MenuFileIndex, 'Exit', 'exit', 'Alt+F4', 'x') + + const MenuEditIndex = 1 + menuBuilder.addTopLevelMenu('Edit', 'e') + .addMenuItem(MenuEditIndex, 'Undo', 'undo', 'Ctrl+Z', 'u') + .addMenuItem(MenuEditIndex, 'Redo', 'redo', 'Ctrl+Y', 'r') + .addSeparator(MenuEditIndex) + .addMenuItem(MenuEditIndex, 'Cut', 'cut', 'Ctrl+X', 't') + .addMenuItem(MenuEditIndex, 'Copy', 'copy', 'Ctrl+C', 'c') + .addMenuItem(MenuEditIndex, 'Paste', 'paste', 'Ctrl+V', 'p') + .addMenuItem(MenuEditIndex, 'Delete', 'delete', 'Delete', 'd') + .addSeparator(MenuEditIndex) + .addMenuItem(MenuEditIndex, 'Select All', 'select-all', 'Ctrl+A', 'a') + + const MenuViewIndex = 2 + menuBuilder.addTopLevelMenu('View', 'v') + .addMenuItem(MenuViewIndex, 'Reload', 'reload', 'Ctrl+R', 'r') + .addMenuItem(MenuViewIndex, 'Force Reload', 'force-reload', 'Ctrl+Shift+R', 'o') + .addMenuItem(MenuViewIndex, 'Toggle Developer Tools', 'toggle-devtools', 'Ctrl+Shift+I', 'd') + .addSeparator(MenuViewIndex) + .addMenuItem(MenuViewIndex, 'Zoom In', 'zoom-in', 'Ctrl+\'+\'', 'i') + .addMenuItem(MenuViewIndex, 'Zoom Out', 'zoom-out', 'Ctrl+\'-\'', 'u') + .addMenuItem(MenuViewIndex, 'Actual Size', 'restore-size', 'Ctrl+0', 'a') + .addSeparator(MenuViewIndex) + .addMenuItem(MenuViewIndex, 'Toggle Fullscreen', 'toggle-fullscreen', 'F11', 'l') + + return menuBuilder.build() +} + +class ThemeManager { + private readonly domThemeKey = 'data-theme' + + constructor(theme: TitleBarTheme) { + this.setTheme(theme) + } + + public setTheme(theme: TitleBarTheme): void { + document.body.setAttribute(this.domThemeKey, theme) + } +} + +interface MenuItem { + type: 'item' | 'separator' + label?: string + action?: MenuBarAction + shortcut?: string + acceleratorChar?: string +} + +interface TopLevelMenu { + label: string + accelerator: string + subMenus: MenuItem[] +} + +export class MenuBuilder { + private menus: TopLevelMenu[] = [] + + public addTopLevelMenu(label: string, accelerator: string): this { + const menu: TopLevelMenu = { + label, + accelerator: accelerator.toLowerCase(), + subMenus: [] + } + this.menus.push(menu) + return this + } + + public addMenuItem( + topLevelMenuIndex: number, + label: string, + action: MenuBarAction, + shortcut?: string, + acceleratorChar: string | null = null + ): this { + if (topLevelMenuIndex >= 0 && topLevelMenuIndex < this.menus.length) { + const item: MenuItem = { + type: 'item', + label, + action, + shortcut, + acceleratorChar: (acceleratorChar || label.charAt(0)).toLowerCase(), + } + this.menus[topLevelMenuIndex].subMenus.push(item) + } + return this + } + + public addSeparator(topLevelMenuIndex: number): this { + if (topLevelMenuIndex >= 0 && topLevelMenuIndex < this.menus.length) { + this.menus[topLevelMenuIndex].subMenus.push({ type: 'separator' }) + } + return this + } + + public build(): HTMLElement { + const menuBar = document.createElement('ul') + menuBar.className = 'desktop-app-menu-bar' + + this.menus.forEach((topLevelMenu) => { + const topLevelMenuView = document.createElement('li') + topLevelMenuView.className = 'desktop-app-menu-item' + + const menuButton = document.createElement('button') + menuButton.className = 'desktop-app-top-menu-button' + menuButton.dataset.menu = topLevelMenu.label.toLowerCase() + menuButton.dataset.accelerator = topLevelMenu.accelerator + + const acceleratorSpan = document.createElement('span') + acceleratorSpan.className = 'desktop-app-accelerator' + acceleratorSpan.dataset.menu = topLevelMenu.label.toLowerCase() + + const labelText = topLevelMenu.label + const acceleratorIndex = labelText.toLowerCase().indexOf(topLevelMenu.accelerator) + + if (acceleratorIndex === 0) { + acceleratorSpan.textContent = topLevelMenu.accelerator.toUpperCase() + menuButton.appendChild(acceleratorSpan) + menuButton.appendChild(document.createTextNode(labelText.substring(1))) + } else if (acceleratorIndex > 0) { + acceleratorSpan.textContent = topLevelMenu.accelerator.toLowerCase() + menuButton.appendChild(document.createTextNode(labelText.substring(0, acceleratorIndex))) + menuButton.appendChild(acceleratorSpan) + menuButton.appendChild(document.createTextNode(labelText.substring(acceleratorIndex + 1))) + } else { + menuButton.textContent = labelText + } + + const dropdown = document.createElement('div') + dropdown.className = 'desktop-app-dropdown-menu' + dropdown.id = `${topLevelMenu.label.toLowerCase()}-menu` + + topLevelMenu.subMenus.forEach(item => { + if (item.type === 'separator') { + const separator = document.createElement('div') + separator.className = 'desktop-app-dropdown-separator' + dropdown.appendChild(separator) + } else if (item.type === 'item' && item.label != null) { + const menuItemButton = document.createElement('button') + menuItemButton.className = 'desktop-app-dropdown-item' + menuItemButton.dataset.accelerator = item.acceleratorChar + menuItemButton.dataset.action = item.action + + const labelSpan = document.createElement('span') + + const itemAcceleratorSpan = document.createElement('span') + itemAcceleratorSpan.className = 'desktop-app-accelerator' + + if (item.acceleratorChar) { + const labelParts = this.splitLabelByAccelerator(item.label, item.acceleratorChar) + + const actualChar = item.label.charAt( + item.label.toLowerCase().indexOf(item.acceleratorChar.toLowerCase()) + ) + itemAcceleratorSpan.textContent = actualChar + + if (labelParts.before) { + labelSpan.appendChild(document.createTextNode(labelParts.before)) + } + labelSpan.appendChild(itemAcceleratorSpan) + if (labelParts.after) { + labelSpan.appendChild(document.createTextNode(labelParts.after)) + } + } + + menuItemButton.appendChild(labelSpan) + + if (item.shortcut) { + const shortcutSpan = document.createElement('span') + shortcutSpan.className = 'desktop-app-shortcut' + shortcutSpan.textContent = item.shortcut + menuItemButton.appendChild(shortcutSpan) + } + + dropdown.appendChild(menuItemButton) + } + }) + + topLevelMenuView.appendChild(menuButton) + topLevelMenuView.appendChild(dropdown) + menuBar.appendChild(topLevelMenuView) + }) + + return menuBar + } + + private splitLabelByAccelerator(label: string, acceleratorChar: string): { before: string; after: string } { + const index = label.toLowerCase().indexOf(acceleratorChar.toLowerCase()) + if (index === -1) { + return { before: label, after: '' } + } + return { + before: label.substring(0, index), + after: label.substring(index + 1) + } + } +} + +class MenuBarManager { + private readonly state: TitleBarMenuState + private readonly view: HTMLElement + + private altPressed: boolean = false + private controlKeysActivated: boolean = false + + private readonly TopMenuStyle = '.desktop-app-top-menu-button' + private readonly DropdownMenuStyle = '.desktop-app-dropdown-menu' + private readonly DropdownItemStyle = '.desktop-app-dropdown-item' + private readonly MenuItemStyle = '.desktop-app-menu-item' + + private readonly StateStyleAltMode = 'desktop-app-alt-mode' + private readonly StateStyleKeyboardSelected = 'desktop-app-keyboard-selected' + private readonly StateStyleAltModeActive = 'desktop-app-alt-active' + + constructor(ipcMain: IPCMainExposed, private readonly root: HTMLElement) { + this.state = new TitleBarMenuState( + () => this.topLevelMenus().length, + (topLevelMenuIndex: number) => { + const children = this.childrenOfTopLevelMenu(topLevelMenuIndex) + return children.length + } + ) + + this.view = buildHulyApplicationMenu() + } + + public getView(): HTMLElement { + return this.view + } + + private topLevelMenus() { + return this.root.querySelectorAll(this.TopMenuStyle) + } + + private onButtonClick(id: string, callback: () => void): void { + const button = this.root.querySelector(`#${id}`) + if (button) { + button.addEventListener('click', callback) + } + } + + public attachEventListeners(ipcMain: IPCMainExposed): void { + this.onButtonClick('minimize-button', () => { + ipcMain.minimizeWindow() + }) + + this.onButtonClick('maximize-button', () => { + ipcMain.maximizeWindow() + }) + + this.onButtonClick('close-button', () => { + ipcMain.closeWindow() + }) + + document.addEventListener('keydown', (e) => this.handleKeyDown(ipcMain, e)) + document.addEventListener('keyup', (e) => this.handleKeyUp(e)) + + this.topLevelMenus().forEach((button, index) => { + button.addEventListener('click', (e) => this.handleTopLevelMenuButtonClick(e, index)) + }) + + document.addEventListener('click', (e) => this.handleDocumentClick(e)) + + document.querySelectorAll(this.DropdownItemStyle + '[data-action]').forEach(item => { + item.addEventListener('click', async () => this.handleMenuButtonClick(ipcMain, item)) + }) + } + + private renderState() { + if (this.state.isAltModeActive) { + this.root.classList.add(this.StateStyleAltModeActive) + } else { + this.root.classList.remove(this.StateStyleAltModeActive) + } + + this.root.querySelectorAll(this.DropdownMenuStyle).forEach(menu => { + menu.style.display = 'none' + }) + + const topLevelMenus = this.topLevelMenus() + + topLevelMenus.forEach((button, index) => { + button.classList.remove(this.StateStyleAltMode) + + if (index === this.state.FocusedTopLevelMenuIndex) { + button.classList.add(this.StateStyleAltMode) + button.focus() + + if (this.state.isTopLevelMenuExpanded && button.dataset.menu) { + const menuType = button.dataset.menu + const dropdown = this.root.querySelector(`#${menuType}-menu`) as HTMLElement | null + if (dropdown) { + dropdown.style.display = 'block' + } + } + } else { + button.blur() + } + }) + + if (this.state.FocusedTopLevelMenuIndex != null && this.state.isTopLevelMenuExpanded) { + const candidates = this.childrenOfTopLevelMenu(this.state.FocusedTopLevelMenuIndex) + candidates.forEach((menu, index) => { + if (index === this.state.FocusedChildMenuIndex) { + menu.classList.add(this.StateStyleKeyboardSelected) + } else { + menu.classList.remove(this.StateStyleKeyboardSelected) + } + }) + } + } + + private childrenOfTopLevelMenu(index: number): NodeListOf { + const topLevelMenus = this.topLevelMenus() + const menuButton = topLevelMenus[index] + const menuType = menuButton.dataset.menu + const dropdown = this.root.querySelector(`#${menuType}-menu`) as HTMLElement | null + if (dropdown) { + return dropdown.querySelectorAll(this.DropdownItemStyle) + } + return document.createDocumentFragment().querySelectorAll('*') + } + + private async executeMenuAction(ipcMain: IPCMainExposed, action: MenuBarAction): Promise { + try { + await ipcMain.executeMenuBarAction(action); + } catch (error) { + console.error('error executing action:', error) + } + } + + private handleKeyDown(ipcMain: IPCMainExposed, e: KeyboardEvent): void { + if (e.altKey) { + this.altPressed = true + } + + if (e.shiftKey || e.ctrlKey || e.metaKey) { + if (this.altPressed) { + this.controlKeysActivated = true + return + } + } + + if (e.altKey) { + if (this.state.isAltModeActive) { + if (this.state.FocusedTopLevelMenuIndex != null) { + this.state.closeAll() + this.renderState() + return + } + } else { + this.state.enterAltMode(null) + this.renderState() + } + } + + switch (e.key) { + case 'ArrowLeft': + this.state.moveFocusHorizontal(-1) + this.renderState() + break + + case 'ArrowRight': + this.state.moveFocusHorizontal(+1) + this.renderState() + break + + case 'ArrowDown': + this.state.moveFocusVertical(+1) + this.renderState() + break + + case 'ArrowUp': + this.state.moveFocusVertical(-1) + this.renderState() + break + } + + switch (e.key) { + case 'Escape': + this.state.defocus() + this.renderState() + break + + case 'Enter': + case ' ': + if (this.state.FocusedTopLevelMenuIndex != null){ + if (this.state.isTopLevelMenuExpanded) { + if (this.state.FocusedChildMenuIndex != null) { + const children = this.childrenOfTopLevelMenu(this.state.FocusedTopLevelMenuIndex) + const focused = children[this.state.FocusedChildMenuIndex] + this.state.closeAll() + this.renderState() + if (focused.dataset.action && isMenuBarAction(focused.dataset.action)) { + this.executeMenuAction(ipcMain, focused.dataset.action) + } + this.renderState() + } + } + } + break + + default: + const key = e.key.toLowerCase() + if (false == this.state.isAltModeActive) { + return + } + + if (this.state.isTopLevelMenuExpanded && this.state.FocusedTopLevelMenuIndex != null) { + const children = this.childrenOfTopLevelMenu(this.state.FocusedTopLevelMenuIndex) + for (let i = 0; i < children.length; i++) { + if (children[i].dataset.accelerator === key) { + const action = children[i].dataset.action + if (action) { + if (isMenuBarAction(action)) { + this.executeMenuAction(ipcMain, action) + } + this.state.closeAll() + this.renderState() + return + } + } + } + } + + const menuButtons = this.root.querySelectorAll(this.TopMenuStyle + '[data-accelerator]') + for (let i = 0; i < menuButtons.length; i++) { + if (menuButtons[i].dataset.accelerator === key) { + this.state.expandTopLevelMenu(i) + this.state.focusChildMenu() + this.renderState() + return + } + } + break + } + } + + private handleKeyUp(e: KeyboardEvent): void { + if (e.key === 'Alt') { + if (this.controlKeysActivated) { + this.state.exitAltMode() + this.renderState() + } else { + if (this.state.FocusedTopLevelMenuIndex == null) { + this.state.enterAltMode(0) + this.renderState() + } + } + this.controlKeysActivated = false + this.altPressed = false + } + } + + private async handleMenuButtonClick(ipcMain: IPCMainExposed, item: HTMLButtonElement): Promise { + const action = item.dataset.action + if (action) { + if (isMenuBarAction(action)) { + await this.executeMenuAction(ipcMain, action) + } + this.state.closeAll() + this.renderState() + } + } + + private handleTopLevelMenuButtonClick(_e: Event, index: number): void { + this.state.expandTopLevelMenu(index) + this.renderState() + } + + private handleDocumentClick(e: Event): void { + const target = e.target as HTMLElement + if (!target.closest(this.MenuItemStyle)) { + this.state.closeAll() + this.renderState() + } + } +} diff --git a/scripts/off/desktop/src/ui/titleBarMenuState.ts b/scripts/off/desktop/src/ui/titleBarMenuState.ts new file mode 100644 index 0000000..ada16d9 --- /dev/null +++ b/scripts/off/desktop/src/ui/titleBarMenuState.ts @@ -0,0 +1,126 @@ +// +// Copyright © 2025 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +export class TitleBarMenuState { + private altModeActive: boolean = false + private topLevelMenuExpanded: boolean = false + private focusedTopLevelMenuIndex: number | null = null + private focusedChildMenuIndex: number | null = null + + private readonly topLevelMenuCount: () => number; + private readonly menuItemsCount: (topLevelMenuIndex: number) => number; + + public constructor( + topLevelMenuCount: () => number, + menuItemsCount: (topLevelMenuIndex: number) => number + ) { + this.topLevelMenuCount = topLevelMenuCount + this.menuItemsCount = menuItemsCount + } + + public focusChildMenu() { + if (null != this.focusedTopLevelMenuIndex && this.topLevelMenuExpanded) { + this.focusedChildMenuIndex = 0 + } + } + + public expandTopLevelMenu(topLevelMenuIndex: number): void { + if (0 > topLevelMenuIndex || topLevelMenuIndex >= this.topLevelMenuCount()) { + return + } + + if (this.focusedTopLevelMenuIndex === topLevelMenuIndex && this.topLevelMenuExpanded) { + this.closeAll() + } else { + this.focusedTopLevelMenuIndex = topLevelMenuIndex + this.topLevelMenuExpanded = true + } + } + + public exitAltMode(): void { + this.altModeActive = false + } + + public enterAltMode(topLevelMenuIndex: number | null): void { + this.altModeActive = true + + if (null == topLevelMenuIndex || 0 > topLevelMenuIndex || topLevelMenuIndex >= this.topLevelMenuCount()) { + return + } + + this.focusedTopLevelMenuIndex = topLevelMenuIndex + } + + public closeAll(): void { + this.altModeActive = false + this.topLevelMenuExpanded = false + this.focusedTopLevelMenuIndex = null + this.focusedChildMenuIndex = null + } + + public defocus(): void { + if (this.topLevelMenuExpanded) { + this.topLevelMenuExpanded = false + this.focusedChildMenuIndex = null + } else { + this.closeAll(); + } + } + + public moveFocusHorizontal(increment: number): void { + if (Math.abs(increment) != 1 || null == this.focusedTopLevelMenuIndex) { + return; + } + + const topLevelMenuCount = this.topLevelMenuCount() + this.focusedTopLevelMenuIndex = (this.focusedTopLevelMenuIndex + topLevelMenuCount + increment) % topLevelMenuCount + + if (this.topLevelMenuExpanded) { + this.focusedChildMenuIndex = 0 + } + } + + public moveFocusVertical(increment: number): void { + if (Math.abs(increment) != 1 || null == this.focusedTopLevelMenuIndex) { + return; + } + + const menuItemsCount = this.menuItemsCount(this.focusedTopLevelMenuIndex) + + this.topLevelMenuExpanded = true + + if (menuItemsCount === 0) { + return; + } + + this.focusedChildMenuIndex = ((this.focusedChildMenuIndex ?? -1) + menuItemsCount + increment) % menuItemsCount + } + + public get isAltModeActive(): boolean { + return this.altModeActive + } + + public get isTopLevelMenuExpanded(): boolean { + return this.topLevelMenuExpanded + } + + public get FocusedTopLevelMenuIndex(): number | null { + return this.focusedTopLevelMenuIndex + } + + public get FocusedChildMenuIndex(): number | null { + return this.focusedChildMenuIndex + } +} \ No newline at end of file diff --git a/scripts/off/desktop/src/ui/types.ts b/scripts/off/desktop/src/ui/types.ts new file mode 100644 index 0000000..db1bf25 --- /dev/null +++ b/scripts/off/desktop/src/ui/types.ts @@ -0,0 +1,119 @@ +import { DownloadItem } from '@hcengineering/desktop-downloads' +import { ScreenSource } from '@hcengineering/love' +import { Plugin } from '@hcengineering/platform' +import { IpcRendererEvent } from 'electron' + +export interface Config { + ACCOUNTS_URL: string + AI_URL?: string + ANALYTICS_COLLECTOR_URL?: string + POSTHOG_API_KEY?: string + POSTHOG_HOST?: string + SENTRY_DSN?: string + BRANDING_URL?: string + CALENDAR_URL: string + COLLABORATOR?: string + COLLABORATOR_URL: string + CONFIG_URL: string + DESKTOP_UPDATES_CHANNEL?: string + DESKTOP_UPDATES_URL?: string + DISABLE_SIGNUP?: string + HIDE_LOCAL_LOGIN?: string + FILES_URL: string + FRONT_URL: string + GITHUB_APP: string + GITHUB_CLIENTID: string + GITHUB_URL: string + GMAIL_URL: string + INITIAL_URL: string + LINK_PREVIEW_URL?: string + LIVEKIT_WS?: string + LOVE_ENDPOINT?: string + MODEL_VERSION: string + PRESENCE_URL?: string + PREVIEW_CONFIG?: string + PRINT_URL?: string + PUSH_PUBLIC_KEY: string + REKONI_URL: string + SIGN_URL?: string + STATS_URL?: string + TELEGRAM_BOT_URL?: string + TELEGRAM_URL: string + UPLOAD_CONFIG: string + UPLOAD_URL: string + VERSION: string + STREAM_URL?: string + BACKUP_URL?: string + PUBLIC_SCHEDULE_URL?: string + CALDAV_SERVER_URL?: string + EXPORT_URL?: string + MAIL_URL?: string + COMMUNICATION_API_ENABLED?: string + BILLING_URL?: string + PASSWORD_STRICTNESS?: 'very_strict' | 'strict' | 'normal' | 'none' + EXCLUDED_APPLICATIONS_FOR_ANONYMOUS?: string +} + +export interface Branding { + title?: string + links?: { + rel: string + href: string + type?: string + sizes?: string + }[] + languages?: string + lastNameFirst?: string + defaultLanguage?: string + defaultApplication?: string + defaultSpace?: string + defaultSpecial?: string + initWorkspace?: string +} + +export type BrandingMap = Record + +export const StandardMenuCommandOpenSettings = 'open-settings' as const +export const StandardMenuCommandSelectWorkspace = 'select-workspace' as const +export const StandardMenuCommandLogout = 'logout' as const +export type StandardMenuCommand = typeof StandardMenuCommandOpenSettings | typeof StandardMenuCommandSelectWorkspace | typeof StandardMenuCommandLogout + +export interface NotificationParams { + title: string + body: string + silent: boolean + application: Plugin +} + +export const MenuBarActions = ['settings', 'select-workspace', 'logout', 'exit', 'undo', 'redo', 'cut', 'copy', 'paste', 'delete', 'select-all', 'reload', 'force-reload', 'toggle-devtools' + , 'zoom-in', 'zoom-out', 'restore-size', 'toggle-fullscreen'] as const; + +export type MenuBarAction = typeof MenuBarActions[number]; + +export interface IPCMainExposed { + setBadge: (badge: number) => void + setTitle: (title: string) => void + config: () => Promise + branding: () => Promise + on: (event: string, op: (channel: any, args: any[]) => void) => void + handleDeepLink: (callback: (url: string) => void) => void + handleNotificationNavigation: (callback: (application: Plugin) => void) => void + handleUpdateDownloadProgress: (callback: (progress: number) => void) => void + setFrontCookie: (host: string, name: string, value: string) => Promise + dockBounce: () => void + sendNotification: (notififationParams: NotificationParams) => void + getScreenAccess: () => Promise + getScreenSources: () => Promise + handleAuth: (callback: (token: string) => void) => void + handleDownloadItem: (callback: (item: DownloadItem) => void) => void + + cancelBackup: () => void + startBackup: (token: string, endpoint: string, workspace: string) => void + + minimizeWindow: () => void + maximizeWindow: () => void + closeWindow: () => void + onWindowStateChange: (callback: (event: IpcRendererEvent, newState: string) => void) => void + isOsUsingDarkTheme: () => Promise + executeMenuBarAction: (action: MenuBarAction) => void +} diff --git a/scripts/off/desktop/src/ui/typesUtils.ts b/scripts/off/desktop/src/ui/typesUtils.ts new file mode 100644 index 0000000..ee7f569 --- /dev/null +++ b/scripts/off/desktop/src/ui/typesUtils.ts @@ -0,0 +1,24 @@ +// +// Copyright © 2025 Hardcore Engineering Inc. +// +// Licensed under the Eclipse Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. You may +// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import { IPCMainExposed, MenuBarAction, MenuBarActions } from './types' + +export function ipcMainExposed(): IPCMainExposed { + return (window as any).electron as IPCMainExposed +} + +export function isMenuBarAction(value: string): value is MenuBarAction { + return MenuBarActions.includes(value as MenuBarAction); +} diff --git a/scripts/off/desktop/tests/fixtures/deep-link.html b/scripts/off/desktop/tests/fixtures/deep-link.html new file mode 100644 index 0000000..c5a0f77 --- /dev/null +++ b/scripts/off/desktop/tests/fixtures/deep-link.html @@ -0,0 +1,58 @@ + + + +
+

Open static url in app

+ + Open in the app + +
+
+

Open any url in app

+ + + + +
+ + \ No newline at end of file diff --git a/scripts/off/desktop/tsconfig.json b/scripts/off/desktop/tsconfig.json new file mode 100644 index 0000000..d0b3486 --- /dev/null +++ b/scripts/off/desktop/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "outDir": "dist", + "noImplicitAny": true, + "module": "esnext", + "target": "es2021", + "allowJs": true, + "declaration": true, + "strictNullChecks": true, + "sourceMap": true, + "skipLibCheck": true, + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "lib": ["es2023", "dom", "ES2021.String", "ESNext.Array"] + }, + "include": ["src/**/*", "declarations.d.ts"], + "exclude": ["node_modules", "lib", "dist", "types", "bundle"] +} diff --git a/scripts/off/desktop/webpack.config.js b/scripts/off/desktop/webpack.config.js new file mode 100644 index 0000000..3242747 --- /dev/null +++ b/scripts/off/desktop/webpack.config.js @@ -0,0 +1,356 @@ +// +// Copyright © 2023 Hardcore Engineering Inc. +// + +const Dotenv = require('dotenv-webpack') +const path = require('path') +const CompressionPlugin = require('compression-webpack-plugin') +const DefinePlugin = require('webpack').DefinePlugin +const HtmlWebpackPlugin = require('html-webpack-plugin') +const CopyPlugin = require('copy-webpack-plugin') + +const mode = process.env.NODE_ENV || 'development' +const prod = mode === 'production' +const dev = (process.env.CLIENT_TYPE ?? '') === 'dev' || mode === 'development' +const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin') +console.log('mode', mode) +const { EsbuildPlugin } = require('esbuild-loader') + +const doValidate = !prod || (process.env.DO_VALIDATE === 'true') + +/** + * @type {Configuration} + */ +module.exports = [ + { + mode: dev ? 'development' : mode, + entry: { + serviceWorker: '@hcengineering/notification/src/serviceWorker.ts' + }, + module: { + rules: [ + { + test: /\.ts$/, + exclude: /(node_modules|\.webpack)/, + use: { + loader: 'esbuild-loader', + options: { + target: 'es2021', + keepNames: true, + minify: prod, + sourcemap: true + } + } + } + ] + }, + output: { + path: path.join(__dirname, 'dist'), + filename: '[name].js', + chunkFilename: '[name].js', + publicPath: '/', + pathinfo: false + }, + resolve: { + extensions: ['.ts', '.js'], + conditionNames: ['svelte', 'browser', 'import'] + } + }, + { + mode: dev ? 'development' : mode, + entry: { + electron: './src/main/start.ts', + preload: './src/ui/preload.ts' + }, + target: 'electron-main', + plugins: [ + new Dotenv({ path: prod ? '.env' : '.env-dev' }), + new DefinePlugin({ + 'process.env.MODEL_VERSION': JSON.stringify(process.env.MODEL_VERSION), + 'process.env.VERSION': JSON.stringify(process.env.VERSION) + }) + ], + module: { + rules: [ + // Add support for native node modules + { + // We're specifying native_modules in the test because the asset relocator loader generates a + // "fake" .node file which is really a cjs file. + test: /native_modules[/\\].+\.node$/, + use: 'node-loader' + }, + { + test: /[/\\]node_modules[/\\].+\.(m?js|node)$/, + parser: { amd: false }, + use: { + loader: '@vercel/webpack-asset-relocator-loader', + options: { + outputAssetBase: 'native_modules' + } + } + }, + { + test: /\.ts$/, + exclude: /(node_modules|\.webpack)/, + use: { + loader: 'esbuild-loader', + options: { + target: 'es2021', + keepNames: true, + minify: prod, + sourcemap: true + } + } + } + ] + }, + output: { + globalObject: 'this', + path: path.join(__dirname, '/dist/main/'), + publicPath: '', + clean: true + }, + resolve: { + extensions: ['.ts', '.js'], + conditionNames: ['svelte', 'browser', 'import'], + alias: { + ws: path.resolve('node_modules', 'ws/index.js') + } + } + }, + + // ------ UI Part -------------------------- + { + entry: { + bundle: ['@hcengineering/theme/styles/global.scss', ...['./src/ui/index.ts']] + }, + ignoreWarnings: [ + { + message: /a11y-/ + }, + /warning from compiler/, + (warning) => true + ], + resolve: { + symlinks: true, + alias: { + svelte: path.resolve('node_modules', 'svelte/src/runtime'), + '@hcengineering/platform-rig/profiles/ui/svelte': path.resolve('node_modules', 'svelte/src/runtime') + }, + fallback: { + crypto: false, + path: false, + fs: false + }, + extensions: ['.mjs', '.js', '.svelte', '.ts'], + conditionNames: ['svelte', 'browser', 'import'] + }, + output: { + path: path.join(__dirname, '/dist/ui/'), + filename: 'bundle.js', + chunkFilename: '[name].js', + publicPath: './', + chunkFormat: false, + clean: true + }, + optimization: prod + ? { + minimize: true, + minimizer: [ + new EsbuildPlugin({ target: 'es2021' }) + ] + } + : { + minimize: false, + mangleExports: false, + usedExports: false + }, + module: { + rules: [ + { + test: /\.ts?$/, + loader: 'esbuild-loader', + options: { + target: 'es2021', + keepNames: true, + minify: prod, + sourcemap: true + }, + exclude: /node_modules/ + }, + { + test: /\.svelte$/, + use: { + loader: 'svelte-loader', + options: { + compilerOptions: { + dev: !prod + }, + emitCss: true, + hotReload: !prod, + preprocess: require('svelte-preprocess')({ + postcss: true, + sourceMap: true + }), + hotOptions: { + // Prevent preserving local component state + preserveLocalState: true, + + // If this string appears anywhere in your component's code, then local + // state won't be preserved, even when noPreserveState is false + noPreserveStateKey: '@!hmr', + + // Prevent doing a full reload on next HMR update after fatal error + noReload: true, + + // Try to recover after runtime errors in component init + optimistic: false, + + // --- Advanced --- + + // Prevent adding an HMR accept handler to components with + // accessors option to true, or to components with named exports + // (from