diff options
166 files changed, 12816 insertions, 2428 deletions
@@ -1,3 +1,4 @@  startup --windows_enable_symlinks
  build --enable_runfiles
 -build --features=compiler_param_file
\ No newline at end of file +build --features=compiler_param_file
 +test --define docker_repo=_ --define docker_tag=_
\ No newline at end of file diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 5539cce..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,47 +0,0 @@ -version: 2.1 - -commands: -  setup-bazel: -    description: | -      Setup the Bazel build system used for building Android projects -    steps: -      - run: -          name: Add Bazel Apt repository -          command: | -            sudo apt install curl gnupg -            curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg -            sudo mv bazel.gpg /etc/apt/trusted.gpg.d/ -            echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list -      - run: -          name: Install Bazel from Apt -          command: sudo apt update && sudo apt install bazel - -jobs: -  build: -    machine: -      image: 'ubuntu-2004:202010-01' -    steps: -      - checkout -      - setup-bazel -      - restore_cache: -          keys: -            - bazel-cache-{{ .Branch }} -      - run: -          name: "Build" -          command: "bazel build //:packages" -      - save_cache: -          paths: -            - ~/.cache/bazel -          key: bazel-cache-{{ .Branch }} -      - run: -          name: "Move artifacts" -          command: | -            mkdir ~/project/artifacts -            mv ~/project/bazel-bin/packages* ~/project/artifacts -      - store_artifacts: -          path: ~/project/artifacts - -workflows: -  build-workflow: -    jobs: -      - build diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 2c6a8bd..63585dc 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -2,7 +2,7 @@ FROM mcr.microsoft.com/vscode/devcontainers/base:0-focal  ARG NONROOT_USER=vscode  # Install required programs for the container -RUN apt update -y && apt install apt-transport-https curl sudo gnupg python build-essential ca-certificates lsb-release -y && \ +RUN apt update -y && apt install libssl-dev pkg-config apt-transport-https curl sudo gnupg python build-essential ca-certificates lsb-release -y && \      # Add bazel repository gpg keys      curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/bazel.gpg && \      # Add docker repository gpg keys diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 03c3e4c..a962bc7 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -36,5 +36,5 @@      // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.      "remoteUser": "vscode",      "overrideCommand": false, -    "runArgs": ["--init"], +    "runArgs": ["--init", "--network=host"]  }
\ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..94f480d --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf
\ No newline at end of file diff --git a/.github/workflows/bazel-build.yml b/.github/workflows/bazel-build.yml index 2baaea1..d6aa113 100644 --- a/.github/workflows/bazel-build.yml +++ b/.github/workflows/bazel-build.yml @@ -55,6 +55,7 @@ jobs:            key: bazel-${{ matrix.os }}
        - name: Execute Bazel tests
          shell: bash
 +        if: matrix.os == 'ubuntu-latest'
          run: |
            bazel test //:tests
        # Runs a set of commands using the runners shell
 @@ -68,9 +69,8 @@ jobs:          with:
            name: all-${{ matrix.os }}
            path: |
 -            bazel-bin*/package_*
 -            bazel-bin*/package_zip.zip
 -            bazel-bin*/package_tar.tar.gz
 +            bazel-bin*/packages_zip.zip
 +            bazel-bin*/packages_tar.tar.gz
        - name: Publish docker images
          shell: bash
 @@ -2,4 +2,6 @@ bazel-*  .vscode
  ratelimiter/target
  target/
 -**/local*
\ No newline at end of file +**/local*
 +.ijwb
 +.idea
\ No newline at end of file @@ -1,69 +1,70 @@  load("@bazel_gazelle//:def.bzl", "gazelle") -load("@rules_pkg//:pkg.bzl", "pkg_zip", "pkg_tar") +load("@rules_pkg//:pkg.bzl", "pkg_tar", "pkg_zip")  load("@io_bazel_rules_docker//container:container.bzl", "container_bundle")  load("@io_bazel_rules_docker//contrib:push-all.bzl", "container_push")  # gazelle:prefix github.com/discordnova/nova  gazelle(name = "gazelle") +exports_files(["go.mod"]) +  filegroup(      name = "binaries",      srcs = [ +        "//cache", +        "//gateway",          "//novactl", +        "//rest",          "//webhook", -        "//gateway", -        "//ratelimiter", -        "//cache" -    ] +    ],  )  container_bundle( -  name = "container_images", - -  images = { -    "$(docker_repo)/discordnova/nova/novactl:$(docker_tag)": "//novactl:image", -    "$(docker_repo)/discordnova/nova/gateway:$(docker_tag)": "//gateway:image", -    "$(docker_repo)/discordnova/nova/ratelimiter:$(docker_tag)": "//ratelimiter:image", -    "$(docker_repo)/discordnova/nova/webhook:$(docker_tag)": "//webhook:image", -    "$(docker_repo)/discordnova/nova/cache:$(docker_tag)": "//cache:image", -  } +    name = "container_images", +    images = { +        "ghcr.io/discordnova/nova/novactl:$(docker_tag)": "//novactl:image", +        "ghcr.io/discordnova/nova/gateway:$(docker_tag)": "//gateway:image", +        "ghcr.io/discordnova/nova/rest:$(docker_tag)": "//rest:image", +        "ghcr.io/discordnova/nova/webhook:$(docker_tag)": "//webhook:image", +        "ghcr.io/discordnova/nova/cache:$(docker_tag)": "//cache:image", +    },  )  container_push( -  name = "container_publish", -  bundle = ":container_images", -  format = "OCI" +    name = "container_publish", +    bundle = ":container_images", +    format = "OCI",  )  test_suite(      name = "tests",      tests = [ +        "//gateway:tests",          "//novactl:tests", +        "//rest:tests",          "//webhook:tests", -        "//gateway:tests", -        "//ratelimiter:tests"      ],  )  pkg_tar(      name = "packages_tar", -    extension = "tar.gz",      srcs = [ -        ":binaries" +        ":binaries",      ], +    extension = "tar.gz",  )  pkg_zip(      name = "packages_zip",      srcs = [ -        ":binaries" +        ":binaries",      ],  )  filegroup(      name = "packages",      srcs = [ -        ":packages_zip",          ":packages_tar", +        ":packages_zip",      ], -)
\ No newline at end of file +) @@ -3,6 +3,12 @@  version = 3  [[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]]  name = "aho-corasick"  version = "0.7.18"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -12,10 +18,10 @@ dependencies = [  ]  [[package]] -name = "anyhow" -version = "1.0.43" +name = "arc-swap" +version = "1.4.0"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28ae2b3dec75a406790005a200b1bd89785afc02517a00ca99ecfe093ee9e6cf" +checksum = "e6df5aef5c5830360ce5218cecb8f018af3438af5686ae945094affc86fdec63"  [[package]]  name = "arrayvec" @@ -35,27 +41,6 @@ dependencies = [  ]  [[package]] -name = "async-stream" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "171374e7e3b2504e0e5236e3b59260560f9fe94bfe9ac39ba5e4e929c5590625" -dependencies = [ - "async-stream-impl", - "futures-core", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "648ed8c8d2ce5409ccd57453d9d1b214b342a0d69376a6feda1fd6cae3299308" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]]  name = "async-task"  version = "4.0.3"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -208,7 +193,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "a909e4d93292cd8e9c42e189f61681eff9d67b6541f96b8a1a737f23737bd001"  dependencies = [   "bytes", + "futures-core",   "memchr", + "pin-project-lite", + "tokio", + "tokio-util",  ]  [[package]] @@ -221,7 +210,9 @@ dependencies = [   "nats",   "pretty_env_logger",   "prometheus", + "redis",   "serde 1.0.130", + "testcontainers",   "tokio",  ] @@ -276,6 +267,21 @@ dependencies = [  ]  [[package]] +name = "crc16" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "338089f42c427b86394a5ee60ff321da23a5c89c9d89514c829687b26359fcff" + +[[package]] +name = "crc32fast" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +dependencies = [ + "cfg-if", +] + +[[package]]  name = "crossbeam-channel"  version = "0.5.1"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -296,6 +302,16 @@ dependencies = [  ]  [[package]] +name = "crypto-mac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]]  name = "curve25519-dalek"  version = "3.2.0"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -351,12 +367,6 @@ dependencies = [  ]  [[package]] -name = "either" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" - -[[package]]  name = "enumflags2"  version = "0.7.1"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -406,10 +416,16 @@ dependencies = [  ]  [[package]] -name = "fixedbitset" -version = "0.2.0" +name = "flate2" +version = "1.0.22"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" +checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" +dependencies = [ + "cfg-if", + "crc32fast", + "libc", + "miniz_oxide", +]  [[package]]  name = "fnv" @@ -418,6 +434,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"  [[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]]  name = "form_urlencoded"  version = "1.0.1"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -544,7 +575,6 @@ dependencies = [   "enumflags2",   "futures",   "futures-util", - "log",   "num",   "num-derive",   "num-traits 0.2.14", @@ -614,15 +644,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"  [[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]]  name = "hermit-abi"  version = "0.1.19"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -638,6 +659,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"  [[package]] +name = "hmac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" +dependencies = [ + "crypto-mac", + "digest", +] + +[[package]]  name = "http"  version = "0.2.4"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -705,15 +736,16 @@ dependencies = [  ]  [[package]] -name = "hyper-timeout" -version = "0.4.1" +name = "hyper-tls" +version = "0.5.0"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"  dependencies = [ + "bytes",   "hyper", - "pin-project-lite", + "native-tls",   "tokio", - "tokio-io-timeout", + "tokio-native-tls",  ]  [[package]] @@ -747,15 +779,6 @@ dependencies = [  ]  [[package]] -name = "itertools" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf" -dependencies = [ - "either", -] - -[[package]]  name = "itoa"  version = "0.4.8"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -850,6 +873,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"  [[package]] +name = "miniz_oxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +dependencies = [ + "adler", + "autocfg", +] + +[[package]]  name = "mio"  version = "0.7.13"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -872,10 +905,22 @@ dependencies = [  ]  [[package]] -name = "multimap" -version = "0.8.3" +name = "native-tls" +version = "0.2.8"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +checksum = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +]  [[package]]  name = "nats" @@ -1077,12 +1122,39 @@ source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"  [[package]] +name = "openssl" +version = "0.10.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9facdb76fec0b73c406f125d44d86fdad818d66fef0531eec9233ca425ff4a" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-sys", +] + +[[package]]  name = "openssl-probe"  version = "0.1.4"  source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a"  [[package]] +name = "openssl-sys" +version = "0.9.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69df2d8dfc6ce3aaf44b40dec6f487d5a886516cf6879c49e98e0710f310a058" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]]  name = "parking"  version = "2.0.0"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1120,16 +1192,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"  [[package]] -name = "petgraph" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]]  name = "pin-project"  version = "1.0.8"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1205,6 +1267,20 @@ dependencies = [  ]  [[package]] +name = "procfs" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab8809e0c18450a2db0f236d2a44ec0b4c1412d0eb936233579f0990faa5d5cd" +dependencies = [ + "bitflags", + "byteorder", + "flate2", + "hex", + "lazy_static", + "libc", +] + +[[package]]  name = "prometheus"  version = "0.12.0"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1213,64 +1289,15 @@ dependencies = [   "cfg-if",   "fnv",   "lazy_static", + "libc",   "memchr",   "parking_lot", + "procfs",   "protobuf",   "thiserror",  ]  [[package]] -name = "prost" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de5e2533f59d08fcf364fd374ebda0692a70bd6d7e66ef97f306f45c6c5d8020" -dependencies = [ - "bytes", - "prost-derive", -] - -[[package]] -name = "prost-build" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355f634b43cdd80724ee7848f95770e7e70eefa6dcf14fea676216573b8fd603" -dependencies = [ - "bytes", - "heck", - "itertools", - "log", - "multimap", - "petgraph", - "prost", - "prost-types", - "tempfile", - "which", -] - -[[package]] -name = "prost-derive" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "600d2f334aa05acb02a755e217ef1ab6dea4d51b58b7846588b747edec04efba" -dependencies = [ - "anyhow", - "itertools", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "prost-types" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "603bbd6394701d13f3f25aada59c7de9d35a6a5887cfc156181234a44002771b" -dependencies = [ - "bytes", - "prost", -] - -[[package]]  name = "protobuf"  version = "2.25.1"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1378,12 +1405,21 @@ version = "0.21.2"  source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "202c5bf92cad3d57605c366e644a7fbf305a83f19754fc66678c6265dcc9b8b4"  dependencies = [ + "arc-swap",   "async-trait", + "bytes",   "combine", + "crc16",   "dtoa", + "futures", + "futures-util",   "itoa",   "percent-encoding", + "pin-project-lite", + "rand 0.8.4",   "sha1", + "tokio", + "tokio-util",   "url",  ] @@ -1423,13 +1459,17 @@ dependencies = [  ]  [[package]] -name = "rest-ratelimiter" +name = "rest"  version = "0.1.0"  dependencies = [ - "prost", + "common", + "futures-util", + "hyper", + "hyper-tls", + "lazy_static", + "serde 1.0.130",   "tokio", - "tonic", - "tonic-build", + "xxhash-rust",  ]  [[package]] @@ -1757,6 +1797,21 @@ dependencies = [  ]  [[package]] +name = "testcontainers" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5e3ed6e3598dbf32cba8cb356b881c085e0adea57597f387723430dd94b4084" +dependencies = [ + "hex", + "hmac", + "log", + "rand 0.8.4", + "serde 1.0.130", + "serde_json", + "sha2", +] + +[[package]]  name = "thiserror"  version = "1.0.29"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1823,16 +1878,6 @@ dependencies = [  ]  [[package]] -name = "tokio-io-timeout" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90c49f106be240de154571dd31fbe48acb10ba6c6dd6f6517ad603abffa42de9" -dependencies = [ - "pin-project-lite", - "tokio", -] - -[[package]]  name = "tokio-macros"  version = "1.3.0"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1844,25 +1889,24 @@ dependencies = [  ]  [[package]] -name = "tokio-rustls" -version = "0.22.0" +name = "tokio-native-tls" +version = "0.3.0"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" +checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b"  dependencies = [ - "rustls", + "native-tls",   "tokio", - "webpki",  ]  [[package]] -name = "tokio-stream" -version = "0.1.7" +name = "tokio-rustls" +version = "0.22.0"  source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b2f3f698253f03119ac0102beaa64f67a67e08074d03a22d18784104543727f" +checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6"  dependencies = [ - "futures-core", - "pin-project-lite", + "rustls",   "tokio", + "webpki",  ]  [[package]] @@ -1906,75 +1950,6 @@ dependencies = [  ]  [[package]] -name = "tonic" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "796c5e1cd49905e65dd8e700d4cb1dffcbfdb4fc9d017de08c1a537afd83627c" -dependencies = [ - "async-stream", - "async-trait", - "base64", - "bytes", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-timeout", - "percent-encoding", - "pin-project", - "prost", - "prost-derive", - "tokio", - "tokio-stream", - "tokio-util", - "tower", - "tower-layer", - "tower-service", - "tracing", - "tracing-futures", -] - -[[package]] -name = "tonic-build" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b52d07035516c2b74337d2ac7746075e7dcae7643816c1b12c5ff8a7484c08" -dependencies = [ - "proc-macro2", - "prost-build", - "quote", - "syn", -] - -[[package]] -name = "tower" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60422bc7fefa2f3ec70359b8ff1caff59d785877eb70595904605bcc412470f" -dependencies = [ - "futures-core", - "futures-util", - "indexmap", - "pin-project", - "rand 0.8.4", - "slab", - "tokio", - "tokio-stream", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-layer" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "343bc9466d3fe6b0f960ef45960509f84480bf4fd96f92901afe7ff3df9d3a62" - -[[package]]  name = "tower-service"  version = "0.3.1"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1987,24 +1962,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d"  dependencies = [   "cfg-if", - "log",   "pin-project-lite", - "tracing-attributes",   "tracing-core",  ]  [[package]] -name = "tracing-attributes" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]]  name = "tracing-core"  version = "0.1.19"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2014,16 +1976,6 @@ dependencies = [  ]  [[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] - -[[package]]  name = "try-lock"  version = "0.2.3"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2073,12 +2025,6 @@ dependencies = [  ]  [[package]] -name = "unicode-segmentation" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" - -[[package]]  name = "unicode-xid"  version = "0.2.2"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2109,6 +2055,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"  [[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]]  name = "version_check"  version = "0.9.3"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2222,12 +2174,11 @@ name = "webhook"  version = "0.1.0"  dependencies = [   "common", - "config",   "hex",   "hyper", + "lazy_static", + "libc",   "libsodium-sys", - "log", - "nats",   "serde 1.0.130",   "serde_json",   "tokio", @@ -2253,17 +2204,6 @@ dependencies = [  ]  [[package]] -name = "which" -version = "4.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea187a8ef279bc014ec368c27a920da2024d2a711109bfbe3440585d5cf27ad9" -dependencies = [ - "either", - "lazy_static", - "libc", -] - -[[package]]  name = "winapi"  version = "0.3.9"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2295,6 +2235,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"  checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"  [[package]] +name = "xxhash-rust" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575e15bedf6e57b5c2d763ffc6c3c760143466cbd09d762d539680ab5992ded" + +[[package]]  name = "yaml-rust"  version = "0.4.5"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2,10 +2,10 @@  members = [
      "webhook",
 -    "ratelimiter",
      "gateway",
      "cache",
 -    "common/rust"
 +    "common/rust",
 +    "rest"
  ]
  [package]
 @@ -50,4 +50,8 @@ buildrs_additional_environment_variables = { PATH = "/usr/sbin:/usr/bin:/sbin:/b  compile_data_attr = "glob([\"*/**\"])"
  additional_build_file = "bazel/patch/BUILD_script_patch"
  gen_buildrs = false
 -additional_deps = [":libsodium_sys_build_script"]
\ No newline at end of file +additional_deps = [":libsodium_sys_build_script"]
 +
 +
 +[package.metadata.raze.crates.value-bag.'*']
 +gen_buildrs = false
\ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index fe6eb84..0000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ -                                 Apache License
 -                           Version 2.0, January 2004
 -                        http://www.apache.org/licenses/
 -
 -   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
 -
 -   1. Definitions.
 -
 -      "License" shall mean the terms and conditions for use, reproduction,
 -      and distribution as defined by Sections 1 through 9 of this document.
 -
 -      "Licensor" shall mean the copyright owner or entity authorized by
 -      the copyright owner that is granting the License.
 -
 -      "Legal Entity" shall mean the union of the acting entity and all
 -      other entities that control, are controlled by, or are under common
 -      control with that entity. For the purposes of this definition,
 -      "control" means (i) the power, direct or indirect, to cause the
 -      direction or management of such entity, whether by contract or
 -      otherwise, or (ii) ownership of fifty percent (50%) or more of the
 -      outstanding shares, or (iii) beneficial ownership of such entity.
 -
 -      "You" (or "Your") shall mean an individual or Legal Entity
 -      exercising permissions granted by this License.
 -
 -      "Source" form shall mean the preferred form for making modifications,
 -      including but not limited to software source code, documentation
 -      source, and configuration files.
 -
 -      "Object" form shall mean any form resulting from mechanical
 -      transformation or translation of a Source form, including but
 -      not limited to compiled object code, generated documentation,
 -      and conversions to other media types.
 -
 -      "Work" shall mean the work of authorship, whether in Source or
 -      Object form, made available under the License, as indicated by a
 -      copyright notice that is included in or attached to the work
 -      (an example is provided in the Appendix below).
 -
 -      "Derivative Works" shall mean any work, whether in Source or Object
 -      form, that is based on (or derived from) the Work and for which the
 -      editorial revisions, annotations, elaborations, or other modifications
 -      represent, as a whole, an original work of authorship. For the purposes
 -      of this License, Derivative Works shall not include works that remain
 -      separable from, or merely link (or bind by name) to the interfaces of,
 -      the Work and Derivative Works thereof.
 -
 -      "Contribution" shall mean any work of authorship, including
 -      the original version of the Work and any modifications or additions
 -      to that Work or Derivative Works thereof, that is intentionally
 -      submitted to Licensor for inclusion in the Work by the copyright owner
 -      or by an individual or Legal Entity authorized to submit on behalf of
 -      the copyright owner. For the purposes of this definition, "submitted"
 -      means any form of electronic, verbal, or written communication sent
 -      to the Licensor or its representatives, including but not limited to
 -      communication on electronic mailing lists, source code control systems,
 -      and issue tracking systems that are managed by, or on behalf of, the
 -      Licensor for the purpose of discussing and improving the Work, but
 -      excluding communication that is conspicuously marked or otherwise
 -      designated in writing by the copyright owner as "Not a Contribution."
 -
 -      "Contributor" shall mean Licensor and any individual or Legal Entity
 -      on behalf of whom a Contribution has been received by Licensor and
 -      subsequently incorporated within the Work.
 -
 -   2. Grant of Copyright License. Subject to the terms and conditions of
 -      this License, each Contributor hereby grants to You a perpetual,
 -      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 -      copyright license to reproduce, prepare Derivative Works of,
 -      publicly display, publicly perform, sublicense, and distribute the
 -      Work and such Derivative Works in Source or Object form.
 -
 -   3. Grant of Patent License. Subject to the terms and conditions of
 -      this License, each Contributor hereby grants to You a perpetual,
 -      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 -      (except as stated in this section) patent license to make, have made,
 -      use, offer to sell, sell, import, and otherwise transfer the Work,
 -      where such license applies only to those patent claims licensable
 -      by such Contributor that are necessarily infringed by their
 -      Contribution(s) alone or by combination of their Contribution(s)
 -      with the Work to which such Contribution(s) was submitted. If You
 -      institute patent litigation against any entity (including a
 -      cross-claim or counterclaim in a lawsuit) alleging that the Work
 -      or a Contribution incorporated within the Work constitutes direct
 -      or contributory patent infringement, then any patent licenses
 -      granted to You under this License for that Work shall terminate
 -      as of the date such litigation is filed.
 -
 -   4. Redistribution. You may reproduce and distribute copies of the
 -      Work or Derivative Works thereof in any medium, with or without
 -      modifications, and in Source or Object form, provided that You
 -      meet the following conditions:
 -
 -      (a) You must give any other recipients of the Work or
 -          Derivative Works a copy of this License; and
 -
 -      (b) You must cause any modified files to carry prominent notices
 -          stating that You changed the files; and
 -
 -      (c) You must retain, in the Source form of any Derivative Works
 -          that You distribute, all copyright, patent, trademark, and
 -          attribution notices from the Source form of the Work,
 -          excluding those notices that do not pertain to any part of
 -          the Derivative Works; and
 -
 -      (d) If the Work includes a "NOTICE" text file as part of its
 -          distribution, then any Derivative Works that You distribute must
 -          include a readable copy of the attribution notices contained
 -          within such NOTICE file, excluding those notices that do not
 -          pertain to any part of the Derivative Works, in at least one
 -          of the following places: within a NOTICE text file distributed
 -          as part of the Derivative Works; within the Source form or
 -          documentation, if provided along with the Derivative Works; or,
 -          within a display generated by the Derivative Works, if and
 -          wherever such third-party notices normally appear. The contents
 -          of the NOTICE file are for informational purposes only and
 -          do not modify the License. You may add Your own attribution
 -          notices within Derivative Works that You distribute, alongside
 -          or as an addendum to the NOTICE text from the Work, provided
 -          that such additional attribution notices cannot be construed
 -          as modifying the License.
 -
 -      You may add Your own copyright statement to Your modifications and
 -      may provide additional or different license terms and conditions
 -      for use, reproduction, or distribution of Your modifications, or
 -      for any such Derivative Works as a whole, provided Your use,
 -      reproduction, and distribution of the Work otherwise complies with
 -      the conditions stated in this License.
 -
 -   5. Submission of Contributions. Unless You explicitly state otherwise,
 -      any Contribution intentionally submitted for inclusion in the Work
 -      by You to the Licensor shall be under the terms and conditions of
 -      this License, without any additional terms or conditions.
 -      Notwithstanding the above, nothing herein shall supersede or modify
 -      the terms of any separate license agreement you may have executed
 -      with Licensor regarding such Contributions.
 -
 -   6. Trademarks. This License does not grant permission to use the trade
 -      names, trademarks, service marks, or product names of the Licensor,
 -      except as required for reasonable and customary use in describing the
 -      origin of the Work and reproducing the content of the NOTICE file.
 -
 -   7. Disclaimer of Warranty. Unless required by applicable law or
 -      agreed to in writing, Licensor provides the Work (and each
 -      Contributor provides its Contributions) on an "AS IS" BASIS,
 -      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 -      implied, including, without limitation, any warranties or conditions
 -      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
 -      PARTICULAR PURPOSE. You are solely responsible for determining the
 -      appropriateness of using or redistributing the Work and assume any
 -      risks associated with Your exercise of permissions under this License.
 -
 -   8. Limitation of Liability. In no event and under no legal theory,
 -      whether in tort (including negligence), contract, or otherwise,
 -      unless required by applicable law (such as deliberate and grossly
 -      negligent acts) or agreed to in writing, shall any Contributor be
 -      liable to You for damages, including any direct, indirect, special,
 -      incidental, or consequential damages of any character arising as a
 -      result of this License or out of the use or inability to use the
 -      Work (including but not limited to damages for loss of goodwill,
 -      work stoppage, computer failure or malfunction, or any and all
 -      other commercial damages or losses), even if such Contributor
 -      has been advised of the possibility of such damages.
 -
 -   9. Accepting Warranty or Additional Liability. While redistributing
 -      the Work or Derivative Works thereof, You may choose to offer,
 -      and charge a fee for, acceptance of support, warranty, indemnity,
 -      or other liability obligations and/or rights consistent with this
 -      License. However, in accepting such obligations, You may act only
 -      on Your own behalf and on Your sole responsibility, not on behalf
 -      of any other Contributor, and only if You agree to indemnify,
 -      defend, and hold each Contributor harmless for any liability
 -      incurred by, or claims asserted against, such Contributor by reason
 -      of your accepting any such warranty or additional liability.
 -
 -   END OF TERMS AND CONDITIONS
 -
 -   APPENDIX: How to apply the Apache License to your work.
 -
 -      To apply the Apache License to your work, attach the following
 -      boilerplate notice, with the fields enclosed by brackets "[]"
 -      replaced with your own identifying information. (Don't include
 -      the brackets!)  The text should be enclosed in the appropriate
 -      comment syntax for the file format. We also recommend that a
 -      file or class name and description of purpose be included on the
 -      same "printed page" as the copyright notice for easier
 -      identification within third-party archives.
 -
 -   Copyright 2021 The Nova authors
 -
 -   Licensed under the Apache License, Version 2.0 (the "License");
 -   you may not use this file except in compliance with the License.
 -   You may obtain a copy of the License at
 -
 -       http://www.apache.org/licenses/LICENSE-2.0
 -
 -   Unless required by applicable law or agreed to in writing, software
 -   distributed under the License is distributed on an "AS IS" BASIS,
 -   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 -   See the License for the specific language governing permissions and
 -   limitations under the License.
 diff --git a/LICENSE.md b/LICENSE.md new file mode 120000 index 0000000..9a9d50f --- /dev/null +++ b/LICENSE.md @@ -0,0 +1 @@ +docs/docs/LICENSE.md
\ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d938a86 --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ +.PHONY: gazelle +gazelle: +	bazel run //:gazelle -- update-repos -build_file_name BUILD.bazel -from_file=go.mod -to_macro=deps.bzl%go_dependencies diff --git a/README.md b/README.md index bfb3208..8bb46f0 100644..120000 --- a/README.md +++ b/README.md @@ -1,36 +1 @@ -# Nova
 -[](https://app.fossa.com/projects/git%2Bgithub.com%2Fdiscordnova%2Fnova?ref=badge_shield) - -
 -Nova is an open source Discord framework for creating high-performance app.
 -
 -Nova is built upon [Go](https://github.com/golang/go) and [Rust](https://github.com/rust-lang/rust) and uses [Bazel](https://github.com/bazelbuild/bazel) as a build system to maintain an effective, safe and production-ready solution.
 -
 -With Nova you can be sure to build reliable and efficient Discord bots.
 -
 -### Disclaimer
 -
 -Nova requires a good infrastructure to operate and may consume lot of resources. It's not made for small Discord Bots but for those who are present on many servers and want to ensure excellent performance.
 -
 ----
 -
 -## Features
 -
 -- **Scalability**
 -- **High-Performance**
 -- **Reliability**
 -
 -## Quick Start
 -
 -> SOON
 -
 -## Contributing
 -
 -If you wish to contribute to Nova, go to [CONTRIBUTING]().
 -
 -## License
 -
 -Nova is distributed under the Apache 2.0 license, see [LICENSE](LICENSE) for more information.
 - - -[](https://app.fossa.com/projects/git%2Bgithub.com%2Fdiscordnova%2Fnova?ref=badge_large)
\ No newline at end of file +docs/docs/intro.md
\ No newline at end of file diff --git a/TODO.md b/TODO.md deleted file mode 100644 index 6d56cdf..0000000 --- a/TODO.md +++ /dev/null @@ -1,14 +0,0 @@ -# Todo
 -
 -## GitHub
 -
 -- PR and Issue template
 -- Contributing GUIDE
 -
 -### Readme
 -
 -- Features
 -- Explaination of each components
 -- How to use (dev, prod)
 -- Contributing
 -- Sponsor?
\ No newline at end of file @@ -1,16 +1,13 @@  workspace(name = "nova") - -#@unused  load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -  http_archive(      name = "com_google_protobuf", -    sha256 = "d0f5f605d0d656007ce6c8b5a82df3037e1d8fe8b121ed42e536f569dec16113", -    strip_prefix = "protobuf-3.14.0", +    sha256 = "14e8042b5da37652c92ef6a2759e7d2979d295f60afd7767825e3de68c856c54", +    strip_prefix = "protobuf-3.18.0",      urls = [ -        "https://mirror.bazel.build/github.com/protocolbuffers/protobuf/archive/v3.14.0.tar.gz", -        "https://github.com/protocolbuffers/protobuf/archive/v3.14.0.tar.gz", +        "https://mirror.bazel.build/github.com/protocolbuffers/protobuf/archive/v3.18.0.tar.gz", +        "https://github.com/protocolbuffers/protobuf/archive/v3.18.0.tar.gz",      ],  ) @@ -60,7 +57,15 @@ http_archive(      ],  ) +load("//bazel:go.bzl", "load_golang_toolchains") + +load_golang_toolchains() +  load("//bazel:utils.bzl", "get_toolchain_utils_protocolbuffers", "get_toolchain_utils_rules_pkg") +load("//:deps.bzl", "go_dependencies") + +# gazelle:repository_macro deps.bzl%go_dependencies +go_dependencies()  get_toolchain_utils_protocolbuffers() @@ -70,10 +75,6 @@ load("//bazel:rust.bzl", "load_rust_toolchains")  load_rust_toolchains() -load("//bazel:go.bzl", "load_golang_toolchains") - -load_golang_toolchains() -  load("//bazel:docker.bzl", "load_docker")  load_docker() diff --git a/bazel/BUILD b/bazel/BUILD index dac72c2..f5516f9 100644 --- a/bazel/BUILD +++ b/bazel/BUILD @@ -1,2 +1,3 @@  load("//bazel:docker.bzl", "images") -images()
\ No newline at end of file + +images() diff --git a/bazel/go.bzl b/bazel/go.bzl index 62c9843..739d495 100644 --- a/bazel/go.bzl +++ b/bazel/go.bzl @@ -1,7 +1,7 @@  """  Utilities used by the workspace to load the golang toolchain  """ -load("//bazel:deps.bzl", "go_dependencies") +  load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")  load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository") @@ -12,16 +12,19 @@ def load_golang_toolchains():      go_register_toolchains(version = "1.16.5")      go_rules_dependencies() - -    # Used to generate the go dependencies & build files -    go_dependencies()      gazelle_dependencies() -    # Fixes a bug with the protobuf generation      go_repository(          name = "org_golang_google_grpc",          build_file_proto_mode = "disable",          importpath = "google.golang.org/grpc", -        sum = "h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg=", -        version = "v1.26.0", +        sum = "h1:f+PlOh7QV4iIJkPrx5NQ7qaNGFQ3OTse67yaDHfju4E=", +        version = "v1.41.0",      ) + +    go_repository( +        name = "org_golang_x_crypto", +        importpath = "golang.org/x/crypto", +        sum = "h1:gsTQYXdTw2Gq7RBsWvlQ91b+aEQ6bXFUngBGuR8sPpI=", +        version = "v0.0.0-20210616213533-5ff15b29337e", +    )
\ No newline at end of file diff --git a/docs/components/auto-scaler.md b/bazel/lib/BUILD index e69de29..e69de29 100644 --- a/docs/components/auto-scaler.md +++ b/bazel/lib/BUILD diff --git a/bazel/lib/expand_template.bzl b/bazel/lib/expand_template.bzl new file mode 100644 index 0000000..742565a --- /dev/null +++ b/bazel/lib/expand_template.bzl @@ -0,0 +1,45 @@ +"""Rule for simple expansion of template files. This performs a simple +search over the template file for the keys in substitutions, +and replaces them with the corresponding values. + +Typical usage: +  load("//tools/build_rules:expand_template.bzl", "expand_template") +  expand_template( +      name = "ExpandMyTemplate", +      template = "my.template", +      out = "my.txt", +      substitutions = { +        "$VAR1": "foo", +        "$VAR2": "bar", +      } +  ) + +Args: +  name: The name of the rule. +  template: The template file to expand +  out: The destination of the expanded file +  substitutions: A dictionary mapping strings to their substitutions +  is_executable: A boolean indicating whether the output file should be executable +""" + +def expand_template_impl(ctx): +    ctx.actions.expand_template( +        template = ctx.file.template, +        output = ctx.outputs.out, +        substitutions = { +            k: ctx.expand_location(v, ctx.attr.data) +            for k, v in ctx.attr.substitutions.items() +        }, +        is_executable = ctx.attr.is_executable, +    ) + +expand_template = rule( +    implementation = expand_template_impl, +    attrs = { +        "template": attr.label(mandatory = True, allow_single_file = True), +        "substitutions": attr.string_dict(mandatory = True), +        "out": attr.output(mandatory = True), +        "is_executable": attr.bool(default = False, mandatory = False), +        "data": attr.label_list(allow_files = True), +    }, +)
\ No newline at end of file diff --git a/bazel/patch/BUILD b/bazel/patch/BUILD index 8bef599..a46a995 100644 --- a/bazel/patch/BUILD +++ b/bazel/patch/BUILD @@ -1 +1 @@ -exports_files(["libsodium_sys_build_script_script_.rs"])
\ No newline at end of file +exports_files(["libsodium_sys_build_script_script_.rs"]) diff --git a/cache/BUILD b/cache/BUILD index 3b11f74..bfe042b 100644 --- a/cache/BUILD +++ b/cache/BUILD @@ -7,18 +7,18 @@ test_suite(name = "tests")  rust_binary(      name = "cache",      srcs = glob(["src/**"]), -    deps = all_crate_deps() + ["//common/rust:common"],      visibility = ["//visibility:public"], +    deps = all_crate_deps() + ["//common/rust:common"],  )  rust_test(      name = "cache_test", -    crate = ":webhook" +    crate = ":cache",  )  rust_image(      name = "image", +    base = "//bazel:base",      binary = ":cache",      visibility = ["//visibility:public"], -    base = "//bazel:base",  ) diff --git a/cargo/crates.bzl b/cargo/crates.bzl index 6bfcdb6..b0def28 100644 --- a/cargo/crates.bzl +++ b/cargo/crates.bzl @@ -12,12 +12,11 @@ load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")  # buildifier: di  # EXPERIMENTAL -- MAY CHANGE AT ANY TIME: A mapping of package names to a set of normal dependencies for the Rust targets of that package.  _DEPENDENCIES = {      "webhook": { -        "config": "@raze__config__0_11_0//:config",          "hex": "@raze__hex__0_4_3//:hex",          "hyper": "@raze__hyper__0_14_12//:hyper", +        "lazy_static": "@raze__lazy_static__1_4_0//:lazy_static", +        "libc": "@raze__libc__0_2_101//:libc",          "libsodium-sys": "@raze__libsodium_sys__0_2_7//:libsodium_sys", -        "log": "@raze__log__0_4_14//:log", -        "nats": "@raze__nats__0_15_2//:nats",          "serde": "@raze__serde__1_0_130//:serde",          "serde_json": "@raze__serde_json__1_0_67//:serde_json",          "tokio": "@raze__tokio__1_11_0//:tokio", @@ -29,19 +28,15 @@ _DEPENDENCIES = {          "nats": "@raze__nats__0_15_2//:nats",          "pretty_env_logger": "@raze__pretty_env_logger__0_4_0//:pretty_env_logger",          "prometheus": "@raze__prometheus__0_12_0//:prometheus", +        "redis": "@raze__redis__0_21_2//:redis",          "serde": "@raze__serde__1_0_130//:serde", +        "testcontainers": "@raze__testcontainers__0_12_0//:testcontainers",          "tokio": "@raze__tokio__1_11_0//:tokio",      }, -    "ratelimiter": { -        "prost": "@raze__prost__0_8_0//:prost", -        "tokio": "@raze__tokio__1_11_0//:tokio", -        "tonic": "@raze__tonic__0_5_2//:tonic", -    },      "gateway": {          "enumflags2": "@raze__enumflags2__0_7_1//:enumflags2",          "futures": "@raze__futures__0_3_17//:futures",          "futures-util": "@raze__futures_util__0_3_17//:futures_util", -        "log": "@raze__log__0_4_14//:log",          "num": "@raze__num__0_4_0//:num",          "num-traits": "@raze__num_traits__0_2_14//:num_traits",          "serde": "@raze__serde__1_0_130//:serde", @@ -57,6 +52,15 @@ _DEPENDENCIES = {          "serde": "@raze__serde__1_0_130//:serde",          "serde_json": "@raze__serde_json__1_0_67//:serde_json",      }, +    "rest": { +        "futures-util": "@raze__futures_util__0_3_17//:futures_util", +        "hyper": "@raze__hyper__0_14_12//:hyper", +        "hyper-tls": "@raze__hyper_tls__0_5_0//:hyper_tls", +        "lazy_static": "@raze__lazy_static__1_4_0//:lazy_static", +        "serde": "@raze__serde__1_0_130//:serde", +        "tokio": "@raze__tokio__1_11_0//:tokio", +        "xxhash-rust": "@raze__xxhash_rust__0_8_2//:xxhash_rust", +    },      "": {          "libc": "@raze__libc__0_2_101//:libc",      }, @@ -68,14 +72,14 @@ _PROC_MACRO_DEPENDENCIES = {      },      "common/rust": {      }, -    "ratelimiter": { -    },      "gateway": {          "num-derive": "@raze__num_derive__0_3_3//:num_derive",          "serde_repr": "@raze__serde_repr__0_1_7//:serde_repr",      },      "cache": {      }, +    "rest": { +    },      "": {      },  } @@ -86,13 +90,12 @@ _DEV_DEPENDENCIES = {      },      "common/rust": {      }, -    "ratelimiter": { -        "tonic-build": "@raze__tonic_build__0_5_2//:tonic_build", -    },      "gateway": {      },      "cache": {      }, +    "rest": { +    },      "": {      },  } @@ -103,12 +106,12 @@ _DEV_PROC_MACRO_DEPENDENCIES = {      },      "common/rust": {      }, -    "ratelimiter": { -    },      "gateway": {      },      "cache": {      }, +    "rest": { +    },      "": {      },  } @@ -250,6 +253,16 @@ def raze_fetch_remote_crates():      """This function defines a collection of repos and should be called in a WORKSPACE file"""      maybe(          http_archive, +        name = "raze__adler__1_0_2", +        url = "https://crates.io/api/v1/crates/adler/1.0.2/download", +        type = "tar.gz", +        sha256 = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe", +        strip_prefix = "adler-1.0.2", +        build_file = Label("//cargo/remote:BUILD.adler-1.0.2.bazel"), +    ) + +    maybe( +        http_archive,          name = "raze__aho_corasick__0_7_18",          url = "https://crates.io/api/v1/crates/aho-corasick/0.7.18/download",          type = "tar.gz", @@ -260,12 +273,12 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__anyhow__1_0_43", -        url = "https://crates.io/api/v1/crates/anyhow/1.0.43/download", +        name = "raze__arc_swap__1_4_0", +        url = "https://crates.io/api/v1/crates/arc-swap/1.4.0/download",          type = "tar.gz", -        sha256 = "28ae2b3dec75a406790005a200b1bd89785afc02517a00ca99ecfe093ee9e6cf", -        strip_prefix = "anyhow-1.0.43", -        build_file = Label("//cargo/remote:BUILD.anyhow-1.0.43.bazel"), +        sha256 = "e6df5aef5c5830360ce5218cecb8f018af3438af5686ae945094affc86fdec63", +        strip_prefix = "arc-swap-1.4.0", +        build_file = Label("//cargo/remote:BUILD.arc-swap-1.4.0.bazel"),      )      maybe( @@ -290,26 +303,6 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__async_stream__0_3_2", -        url = "https://crates.io/api/v1/crates/async-stream/0.3.2/download", -        type = "tar.gz", -        sha256 = "171374e7e3b2504e0e5236e3b59260560f9fe94bfe9ac39ba5e4e929c5590625", -        strip_prefix = "async-stream-0.3.2", -        build_file = Label("//cargo/remote:BUILD.async-stream-0.3.2.bazel"), -    ) - -    maybe( -        http_archive, -        name = "raze__async_stream_impl__0_3_2", -        url = "https://crates.io/api/v1/crates/async-stream-impl/0.3.2/download", -        type = "tar.gz", -        sha256 = "648ed8c8d2ce5409ccd57453d9d1b214b342a0d69376a6feda1fd6cae3299308", -        strip_prefix = "async-stream-impl-0.3.2", -        build_file = Label("//cargo/remote:BUILD.async-stream-impl-0.3.2.bazel"), -    ) - -    maybe( -        http_archive,          name = "raze__async_task__4_0_3",          url = "https://crates.io/api/v1/crates/async-task/4.0.3/download",          type = "tar.gz", @@ -540,6 +533,26 @@ def raze_fetch_remote_crates():      maybe(          http_archive, +        name = "raze__crc16__0_4_0", +        url = "https://crates.io/api/v1/crates/crc16/0.4.0/download", +        type = "tar.gz", +        sha256 = "338089f42c427b86394a5ee60ff321da23a5c89c9d89514c829687b26359fcff", +        strip_prefix = "crc16-0.4.0", +        build_file = Label("//cargo/remote:BUILD.crc16-0.4.0.bazel"), +    ) + +    maybe( +        http_archive, +        name = "raze__crc32fast__1_2_1", +        url = "https://crates.io/api/v1/crates/crc32fast/1.2.1/download", +        type = "tar.gz", +        sha256 = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a", +        strip_prefix = "crc32fast-1.2.1", +        build_file = Label("//cargo/remote:BUILD.crc32fast-1.2.1.bazel"), +    ) + +    maybe( +        http_archive,          name = "raze__crossbeam_channel__0_5_1",          url = "https://crates.io/api/v1/crates/crossbeam-channel/0.5.1/download",          type = "tar.gz", @@ -560,6 +573,16 @@ def raze_fetch_remote_crates():      maybe(          http_archive, +        name = "raze__crypto_mac__0_10_1", +        url = "https://crates.io/api/v1/crates/crypto-mac/0.10.1/download", +        type = "tar.gz", +        sha256 = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a", +        strip_prefix = "crypto-mac-0.10.1", +        build_file = Label("//cargo/remote:BUILD.crypto-mac-0.10.1.bazel"), +    ) + +    maybe( +        http_archive,          name = "raze__curve25519_dalek__3_2_0",          url = "https://crates.io/api/v1/crates/curve25519-dalek/3.2.0/download",          type = "tar.gz", @@ -620,16 +643,6 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__either__1_6_1", -        url = "https://crates.io/api/v1/crates/either/1.6.1/download", -        type = "tar.gz", -        sha256 = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457", -        strip_prefix = "either-1.6.1", -        build_file = Label("//cargo/remote:BUILD.either-1.6.1.bazel"), -    ) - -    maybe( -        http_archive,          name = "raze__enumflags2__0_7_1",          url = "https://crates.io/api/v1/crates/enumflags2/0.7.1/download",          type = "tar.gz", @@ -680,12 +693,12 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__fixedbitset__0_2_0", -        url = "https://crates.io/api/v1/crates/fixedbitset/0.2.0/download", +        name = "raze__flate2__1_0_22", +        url = "https://crates.io/api/v1/crates/flate2/1.0.22/download",          type = "tar.gz", -        sha256 = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d", -        strip_prefix = "fixedbitset-0.2.0", -        build_file = Label("//cargo/remote:BUILD.fixedbitset-0.2.0.bazel"), +        sha256 = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f", +        strip_prefix = "flate2-1.0.22", +        build_file = Label("//cargo/remote:BUILD.flate2-1.0.22.bazel"),      )      maybe( @@ -700,6 +713,26 @@ def raze_fetch_remote_crates():      maybe(          http_archive, +        name = "raze__foreign_types__0_3_2", +        url = "https://crates.io/api/v1/crates/foreign-types/0.3.2/download", +        type = "tar.gz", +        sha256 = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1", +        strip_prefix = "foreign-types-0.3.2", +        build_file = Label("//cargo/remote:BUILD.foreign-types-0.3.2.bazel"), +    ) + +    maybe( +        http_archive, +        name = "raze__foreign_types_shared__0_1_1", +        url = "https://crates.io/api/v1/crates/foreign-types-shared/0.1.1/download", +        type = "tar.gz", +        sha256 = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b", +        strip_prefix = "foreign-types-shared-0.1.1", +        build_file = Label("//cargo/remote:BUILD.foreign-types-shared-0.1.1.bazel"), +    ) + +    maybe( +        http_archive,          name = "raze__form_urlencoded__1_0_1",          url = "https://crates.io/api/v1/crates/form_urlencoded/1.0.1/download",          type = "tar.gz", @@ -860,16 +893,6 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__heck__0_3_3", -        url = "https://crates.io/api/v1/crates/heck/0.3.3/download", -        type = "tar.gz", -        sha256 = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c", -        strip_prefix = "heck-0.3.3", -        build_file = Label("//cargo/remote:BUILD.heck-0.3.3.bazel"), -    ) - -    maybe( -        http_archive,          name = "raze__hermit_abi__0_1_19",          url = "https://crates.io/api/v1/crates/hermit-abi/0.1.19/download",          type = "tar.gz", @@ -890,6 +913,16 @@ def raze_fetch_remote_crates():      maybe(          http_archive, +        name = "raze__hmac__0_10_1", +        url = "https://crates.io/api/v1/crates/hmac/0.10.1/download", +        type = "tar.gz", +        sha256 = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15", +        strip_prefix = "hmac-0.10.1", +        build_file = Label("//cargo/remote:BUILD.hmac-0.10.1.bazel"), +    ) + +    maybe( +        http_archive,          name = "raze__http__0_2_4",          url = "https://crates.io/api/v1/crates/http/0.2.4/download",          type = "tar.gz", @@ -950,12 +983,12 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__hyper_timeout__0_4_1", -        url = "https://crates.io/api/v1/crates/hyper-timeout/0.4.1/download", +        name = "raze__hyper_tls__0_5_0", +        url = "https://crates.io/api/v1/crates/hyper-tls/0.5.0/download",          type = "tar.gz", -        sha256 = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1", -        strip_prefix = "hyper-timeout-0.4.1", -        build_file = Label("//cargo/remote:BUILD.hyper-timeout-0.4.1.bazel"), +        sha256 = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905", +        strip_prefix = "hyper-tls-0.5.0", +        build_file = Label("//cargo/remote:BUILD.hyper-tls-0.5.0.bazel"),      )      maybe( @@ -990,16 +1023,6 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__itertools__0_10_1", -        url = "https://crates.io/api/v1/crates/itertools/0.10.1/download", -        type = "tar.gz", -        sha256 = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf", -        strip_prefix = "itertools-0.10.1", -        build_file = Label("//cargo/remote:BUILD.itertools-0.10.1.bazel"), -    ) - -    maybe( -        http_archive,          name = "raze__itoa__0_4_8",          url = "https://crates.io/api/v1/crates/itoa/0.4.8/download",          type = "tar.gz", @@ -1120,6 +1143,16 @@ def raze_fetch_remote_crates():      maybe(          http_archive, +        name = "raze__miniz_oxide__0_4_4", +        url = "https://crates.io/api/v1/crates/miniz_oxide/0.4.4/download", +        type = "tar.gz", +        sha256 = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b", +        strip_prefix = "miniz_oxide-0.4.4", +        build_file = Label("//cargo/remote:BUILD.miniz_oxide-0.4.4.bazel"), +    ) + +    maybe( +        http_archive,          name = "raze__mio__0_7_13",          url = "https://crates.io/api/v1/crates/mio/0.7.13/download",          type = "tar.gz", @@ -1140,12 +1173,12 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__multimap__0_8_3", -        url = "https://crates.io/api/v1/crates/multimap/0.8.3/download", +        name = "raze__native_tls__0_2_8", +        url = "https://crates.io/api/v1/crates/native-tls/0.2.8/download",          type = "tar.gz", -        sha256 = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a", -        strip_prefix = "multimap-0.8.3", -        build_file = Label("//cargo/remote:BUILD.multimap-0.8.3.bazel"), +        sha256 = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d", +        strip_prefix = "native-tls-0.2.8", +        build_file = Label("//cargo/remote:BUILD.native-tls-0.2.8.bazel"),      )      maybe( @@ -1320,6 +1353,16 @@ def raze_fetch_remote_crates():      maybe(          http_archive, +        name = "raze__openssl__0_10_36", +        url = "https://crates.io/api/v1/crates/openssl/0.10.36/download", +        type = "tar.gz", +        sha256 = "8d9facdb76fec0b73c406f125d44d86fdad818d66fef0531eec9233ca425ff4a", +        strip_prefix = "openssl-0.10.36", +        build_file = Label("//cargo/remote:BUILD.openssl-0.10.36.bazel"), +    ) + +    maybe( +        http_archive,          name = "raze__openssl_probe__0_1_4",          url = "https://crates.io/api/v1/crates/openssl-probe/0.1.4/download",          type = "tar.gz", @@ -1330,6 +1373,16 @@ def raze_fetch_remote_crates():      maybe(          http_archive, +        name = "raze__openssl_sys__0_9_67", +        url = "https://crates.io/api/v1/crates/openssl-sys/0.9.67/download", +        type = "tar.gz", +        sha256 = "69df2d8dfc6ce3aaf44b40dec6f487d5a886516cf6879c49e98e0710f310a058", +        strip_prefix = "openssl-sys-0.9.67", +        build_file = Label("//cargo/remote:BUILD.openssl-sys-0.9.67.bazel"), +    ) + +    maybe( +        http_archive,          name = "raze__parking__2_0_0",          url = "https://crates.io/api/v1/crates/parking/2.0.0/download",          type = "tar.gz", @@ -1370,16 +1423,6 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__petgraph__0_5_1", -        url = "https://crates.io/api/v1/crates/petgraph/0.5.1/download", -        type = "tar.gz", -        sha256 = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7", -        strip_prefix = "petgraph-0.5.1", -        build_file = Label("//cargo/remote:BUILD.petgraph-0.5.1.bazel"), -    ) - -    maybe( -        http_archive,          name = "raze__pin_project__1_0_8",          url = "https://crates.io/api/v1/crates/pin-project/1.0.8/download",          type = "tar.gz", @@ -1480,52 +1523,22 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__prometheus__0_12_0", -        url = "https://crates.io/api/v1/crates/prometheus/0.12.0/download", +        name = "raze__procfs__0_9_1", +        url = "https://crates.io/api/v1/crates/procfs/0.9.1/download",          type = "tar.gz", -        sha256 = "5986aa8d62380092d2f50f8b1cdba9cb9b6731ffd4b25b51fd126b6c3e05b99c", -        strip_prefix = "prometheus-0.12.0", -        build_file = Label("//cargo/remote:BUILD.prometheus-0.12.0.bazel"), +        sha256 = "ab8809e0c18450a2db0f236d2a44ec0b4c1412d0eb936233579f0990faa5d5cd", +        strip_prefix = "procfs-0.9.1", +        build_file = Label("//cargo/remote:BUILD.procfs-0.9.1.bazel"),      )      maybe(          http_archive, -        name = "raze__prost__0_8_0", -        url = "https://crates.io/api/v1/crates/prost/0.8.0/download", -        type = "tar.gz", -        sha256 = "de5e2533f59d08fcf364fd374ebda0692a70bd6d7e66ef97f306f45c6c5d8020", -        strip_prefix = "prost-0.8.0", -        build_file = Label("//cargo/remote:BUILD.prost-0.8.0.bazel"), -    ) - -    maybe( -        http_archive, -        name = "raze__prost_build__0_8_0", -        url = "https://crates.io/api/v1/crates/prost-build/0.8.0/download", -        type = "tar.gz", -        sha256 = "355f634b43cdd80724ee7848f95770e7e70eefa6dcf14fea676216573b8fd603", -        strip_prefix = "prost-build-0.8.0", -        build_file = Label("//cargo/remote:BUILD.prost-build-0.8.0.bazel"), -    ) - -    maybe( -        http_archive, -        name = "raze__prost_derive__0_8_0", -        url = "https://crates.io/api/v1/crates/prost-derive/0.8.0/download", -        type = "tar.gz", -        sha256 = "600d2f334aa05acb02a755e217ef1ab6dea4d51b58b7846588b747edec04efba", -        strip_prefix = "prost-derive-0.8.0", -        build_file = Label("//cargo/remote:BUILD.prost-derive-0.8.0.bazel"), -    ) - -    maybe( -        http_archive, -        name = "raze__prost_types__0_8_0", -        url = "https://crates.io/api/v1/crates/prost-types/0.8.0/download", +        name = "raze__prometheus__0_12_0", +        url = "https://crates.io/api/v1/crates/prometheus/0.12.0/download",          type = "tar.gz", -        sha256 = "603bbd6394701d13f3f25aada59c7de9d35a6a5887cfc156181234a44002771b", -        strip_prefix = "prost-types-0.8.0", -        build_file = Label("//cargo/remote:BUILD.prost-types-0.8.0.bazel"), +        sha256 = "5986aa8d62380092d2f50f8b1cdba9cb9b6731ffd4b25b51fd126b6c3e05b99c", +        strip_prefix = "prometheus-0.12.0", +        build_file = Label("//cargo/remote:BUILD.prometheus-0.12.0.bazel"),      )      maybe( @@ -2030,6 +2043,16 @@ def raze_fetch_remote_crates():      maybe(          http_archive, +        name = "raze__testcontainers__0_12_0", +        url = "https://crates.io/api/v1/crates/testcontainers/0.12.0/download", +        type = "tar.gz", +        sha256 = "d5e3ed6e3598dbf32cba8cb356b881c085e0adea57597f387723430dd94b4084", +        strip_prefix = "testcontainers-0.12.0", +        build_file = Label("//cargo/remote:BUILD.testcontainers-0.12.0.bazel"), +    ) + +    maybe( +        http_archive,          name = "raze__thiserror__1_0_29",          url = "https://crates.io/api/v1/crates/thiserror/1.0.29/download",          type = "tar.gz", @@ -2090,16 +2113,6 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__tokio_io_timeout__1_1_1", -        url = "https://crates.io/api/v1/crates/tokio-io-timeout/1.1.1/download", -        type = "tar.gz", -        sha256 = "90c49f106be240de154571dd31fbe48acb10ba6c6dd6f6517ad603abffa42de9", -        strip_prefix = "tokio-io-timeout-1.1.1", -        build_file = Label("//cargo/remote:BUILD.tokio-io-timeout-1.1.1.bazel"), -    ) - -    maybe( -        http_archive,          name = "raze__tokio_macros__1_3_0",          url = "https://crates.io/api/v1/crates/tokio-macros/1.3.0/download",          type = "tar.gz", @@ -2110,22 +2123,22 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__tokio_rustls__0_22_0", -        url = "https://crates.io/api/v1/crates/tokio-rustls/0.22.0/download", +        name = "raze__tokio_native_tls__0_3_0", +        url = "https://crates.io/api/v1/crates/tokio-native-tls/0.3.0/download",          type = "tar.gz", -        sha256 = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6", -        strip_prefix = "tokio-rustls-0.22.0", -        build_file = Label("//cargo/remote:BUILD.tokio-rustls-0.22.0.bazel"), +        sha256 = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b", +        strip_prefix = "tokio-native-tls-0.3.0", +        build_file = Label("//cargo/remote:BUILD.tokio-native-tls-0.3.0.bazel"),      )      maybe(          http_archive, -        name = "raze__tokio_stream__0_1_7", -        url = "https://crates.io/api/v1/crates/tokio-stream/0.1.7/download", +        name = "raze__tokio_rustls__0_22_0", +        url = "https://crates.io/api/v1/crates/tokio-rustls/0.22.0/download",          type = "tar.gz", -        sha256 = "7b2f3f698253f03119ac0102beaa64f67a67e08074d03a22d18784104543727f", -        strip_prefix = "tokio-stream-0.1.7", -        build_file = Label("//cargo/remote:BUILD.tokio-stream-0.1.7.bazel"), +        sha256 = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6", +        strip_prefix = "tokio-rustls-0.22.0", +        build_file = Label("//cargo/remote:BUILD.tokio-rustls-0.22.0.bazel"),      )      maybe( @@ -2160,46 +2173,6 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__tonic__0_5_2", -        url = "https://crates.io/api/v1/crates/tonic/0.5.2/download", -        type = "tar.gz", -        sha256 = "796c5e1cd49905e65dd8e700d4cb1dffcbfdb4fc9d017de08c1a537afd83627c", -        strip_prefix = "tonic-0.5.2", -        build_file = Label("//cargo/remote:BUILD.tonic-0.5.2.bazel"), -    ) - -    maybe( -        http_archive, -        name = "raze__tonic_build__0_5_2", -        url = "https://crates.io/api/v1/crates/tonic-build/0.5.2/download", -        type = "tar.gz", -        sha256 = "12b52d07035516c2b74337d2ac7746075e7dcae7643816c1b12c5ff8a7484c08", -        strip_prefix = "tonic-build-0.5.2", -        build_file = Label("//cargo/remote:BUILD.tonic-build-0.5.2.bazel"), -    ) - -    maybe( -        http_archive, -        name = "raze__tower__0_4_8", -        url = "https://crates.io/api/v1/crates/tower/0.4.8/download", -        type = "tar.gz", -        sha256 = "f60422bc7fefa2f3ec70359b8ff1caff59d785877eb70595904605bcc412470f", -        strip_prefix = "tower-0.4.8", -        build_file = Label("//cargo/remote:BUILD.tower-0.4.8.bazel"), -    ) - -    maybe( -        http_archive, -        name = "raze__tower_layer__0_3_1", -        url = "https://crates.io/api/v1/crates/tower-layer/0.3.1/download", -        type = "tar.gz", -        sha256 = "343bc9466d3fe6b0f960ef45960509f84480bf4fd96f92901afe7ff3df9d3a62", -        strip_prefix = "tower-layer-0.3.1", -        build_file = Label("//cargo/remote:BUILD.tower-layer-0.3.1.bazel"), -    ) - -    maybe( -        http_archive,          name = "raze__tower_service__0_3_1",          url = "https://crates.io/api/v1/crates/tower-service/0.3.1/download",          type = "tar.gz", @@ -2220,16 +2193,6 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__tracing_attributes__0_1_15", -        url = "https://crates.io/api/v1/crates/tracing-attributes/0.1.15/download", -        type = "tar.gz", -        sha256 = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2", -        strip_prefix = "tracing-attributes-0.1.15", -        build_file = Label("//cargo/remote:BUILD.tracing-attributes-0.1.15.bazel"), -    ) - -    maybe( -        http_archive,          name = "raze__tracing_core__0_1_19",          url = "https://crates.io/api/v1/crates/tracing-core/0.1.19/download",          type = "tar.gz", @@ -2240,16 +2203,6 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__tracing_futures__0_2_5", -        url = "https://crates.io/api/v1/crates/tracing-futures/0.2.5/download", -        type = "tar.gz", -        sha256 = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2", -        strip_prefix = "tracing-futures-0.2.5", -        build_file = Label("//cargo/remote:BUILD.tracing-futures-0.2.5.bazel"), -    ) - -    maybe( -        http_archive,          name = "raze__try_lock__0_2_3",          url = "https://crates.io/api/v1/crates/try-lock/0.2.3/download",          type = "tar.gz", @@ -2300,16 +2253,6 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__unicode_segmentation__1_8_0", -        url = "https://crates.io/api/v1/crates/unicode-segmentation/1.8.0/download", -        type = "tar.gz", -        sha256 = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b", -        strip_prefix = "unicode-segmentation-1.8.0", -        build_file = Label("//cargo/remote:BUILD.unicode-segmentation-1.8.0.bazel"), -    ) - -    maybe( -        http_archive,          name = "raze__unicode_xid__0_2_2",          url = "https://crates.io/api/v1/crates/unicode-xid/0.2.2/download",          type = "tar.gz", @@ -2350,6 +2293,16 @@ def raze_fetch_remote_crates():      maybe(          http_archive, +        name = "raze__vcpkg__0_2_15", +        url = "https://crates.io/api/v1/crates/vcpkg/0.2.15/download", +        type = "tar.gz", +        sha256 = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426", +        strip_prefix = "vcpkg-0.2.15", +        build_file = Label("//cargo/remote:BUILD.vcpkg-0.2.15.bazel"), +    ) + +    maybe( +        http_archive,          name = "raze__version_check__0_9_3",          url = "https://crates.io/api/v1/crates/version_check/0.9.3/download",          type = "tar.gz", @@ -2490,16 +2443,6 @@ def raze_fetch_remote_crates():      maybe(          http_archive, -        name = "raze__which__4_2_2", -        url = "https://crates.io/api/v1/crates/which/4.2.2/download", -        type = "tar.gz", -        sha256 = "ea187a8ef279bc014ec368c27a920da2024d2a711109bfbe3440585d5cf27ad9", -        strip_prefix = "which-4.2.2", -        build_file = Label("//cargo/remote:BUILD.which-4.2.2.bazel"), -    ) - -    maybe( -        http_archive,          name = "raze__winapi__0_3_9",          url = "https://crates.io/api/v1/crates/winapi/0.3.9/download",          type = "tar.gz", @@ -2540,6 +2483,16 @@ def raze_fetch_remote_crates():      maybe(          http_archive, +        name = "raze__xxhash_rust__0_8_2", +        url = "https://crates.io/api/v1/crates/xxhash-rust/0.8.2/download", +        type = "tar.gz", +        sha256 = "e575e15bedf6e57b5c2d763ffc6c3c760143466cbd09d762d539680ab5992ded", +        strip_prefix = "xxhash-rust-0.8.2", +        build_file = Label("//cargo/remote:BUILD.xxhash-rust-0.8.2.bazel"), +    ) + +    maybe( +        http_archive,          name = "raze__yaml_rust__0_4_5",          url = "https://crates.io/api/v1/crates/yaml-rust/0.4.5/download",          type = "tar.gz", diff --git a/cargo/remote/BUILD.tower-layer-0.3.1.bazel b/cargo/remote/BUILD.adler-1.0.2.bazel index f1204c6..1fda177 100644 --- a/cargo/remote/BUILD.tower-layer-0.3.1.bazel +++ b/cargo/remote/BUILD.adler-1.0.2.bazel @@ -25,20 +25,22 @@ package(default_visibility = [  ])  licenses([ -    "notice",  # MIT from expression "MIT" +    "notice",  # MIT from expression "0BSD OR (MIT OR Apache-2.0)"  ])  # Generated Targets +# Unsupported target "bench" with type "bench" omitted +  rust_library( -    name = "tower_layer", +    name = "adler",      srcs = glob(["**/*.rs"]),      crate_features = [      ],      crate_root = "src/lib.rs",      crate_type = "lib",      data = [], -    edition = "2018", +    edition = "2015",      rustc_flags = [          "--cap-lints=allow",      ], @@ -46,7 +48,7 @@ rust_library(          "cargo-raze",          "manual",      ], -    version = "0.3.1", +    version = "1.0.2",      # buildifier: leave-alone      deps = [      ], diff --git a/cargo/remote/BUILD.unicode-segmentation-1.8.0.bazel b/cargo/remote/BUILD.arc-swap-1.4.0.bazel index dec202b..ddb399c 100644 --- a/cargo/remote/BUILD.unicode-segmentation-1.8.0.bazel +++ b/cargo/remote/BUILD.arc-swap-1.4.0.bazel @@ -25,19 +25,19 @@ package(default_visibility = [  ])  licenses([ -    "notice",  # MIT from expression "MIT OR Apache-2.0" +    "notice",  # Apache-2.0 from expression "Apache-2.0 OR MIT"  ])  # Generated Targets -# Unsupported target "graphemes" with type "bench" omitted +# Unsupported target "background" with type "bench" omitted -# Unsupported target "unicode_words" with type "bench" omitted +# Unsupported target "int-access" with type "bench" omitted -# Unsupported target "word_bounds" with type "bench" omitted +# Unsupported target "track" with type "bench" omitted  rust_library( -    name = "unicode_segmentation", +    name = "arc_swap",      srcs = glob(["**/*.rs"]),      crate_features = [      ], @@ -52,8 +52,12 @@ rust_library(          "cargo-raze",          "manual",      ], -    version = "1.8.0", +    version = "1.4.0",      # buildifier: leave-alone      deps = [      ],  ) + +# Unsupported target "random" with type "test" omitted + +# Unsupported target "stress" with type "test" omitted diff --git a/cargo/remote/BUILD.async-stream-impl-0.3.2.bazel b/cargo/remote/BUILD.async-stream-impl-0.3.2.bazel deleted file mode 100644 index 1db7cf6..0000000 --- a/cargo/remote/BUILD.async-stream-impl-0.3.2.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( -    "@rules_rust//rust:rust.bzl", -    "rust_binary", -    "rust_library", -    "rust_test", -) - -package(default_visibility = [ -    # Public for visibility by "@raze__crate__version//" targets. -    # -    # Prefer access through "//cargo", which limits external -    # visibility to explicit Cargo.toml dependencies. -    "//visibility:public", -]) - -licenses([ -    "notice",  # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( -    name = "async_stream_impl", -    srcs = glob(["**/*.rs"]), -    crate_features = [ -    ], -    crate_root = "src/lib.rs", -    crate_type = "proc-macro", -    data = [], -    edition = "2018", -    rustc_flags = [ -        "--cap-lints=allow", -    ], -    tags = [ -        "cargo-raze", -        "manual", -    ], -    version = "0.3.2", -    # buildifier: leave-alone -    deps = [ -        "@raze__proc_macro2__1_0_29//:proc_macro2", -        "@raze__quote__1_0_9//:quote", -        "@raze__syn__1_0_76//:syn", -    ], -) diff --git a/cargo/remote/BUILD.combine-4.6.1.bazel b/cargo/remote/BUILD.combine-4.6.1.bazel index 6a52e24..afefc7c 100644 --- a/cargo/remote/BUILD.combine-4.6.1.bazel +++ b/cargo/remote/BUILD.combine-4.6.1.bazel @@ -49,10 +49,19 @@ licenses([  rust_library(      name = "combine",      srcs = glob(["**/*.rs"]), +    aliases = { +        "@raze__futures_core__0_3_17//:futures_core": "futures_core_03", +        "@raze__tokio__1_11_0//:tokio": "tokio_dep", +    },      crate_features = [          "alloc",          "bytes", +        "futures-core-03", +        "pin-project-lite",          "std", +        "tokio", +        "tokio-dep", +        "tokio-util",      ],      crate_root = "src/lib.rs",      crate_type = "lib", @@ -69,7 +78,11 @@ rust_library(      # buildifier: leave-alone      deps = [          "@raze__bytes__1_1_0//:bytes", +        "@raze__futures_core__0_3_17//:futures_core",          "@raze__memchr__2_4_1//:memchr", +        "@raze__pin_project_lite__0_2_7//:pin_project_lite", +        "@raze__tokio__1_11_0//:tokio", +        "@raze__tokio_util__0_6_8//:tokio_util",      ],  ) diff --git a/cargo/remote/BUILD.async-stream-0.3.2.bazel b/cargo/remote/BUILD.crc16-0.4.0.bazel index bfffc1a..b32cc8b 100644 --- a/cargo/remote/BUILD.async-stream-0.3.2.bazel +++ b/cargo/remote/BUILD.crc16-0.4.0.bazel @@ -29,21 +29,45 @@ licenses([  ])  # Generated Targets +# buildifier: disable=out-of-order-load +# buildifier: disable=load-on-top +load( +    "@rules_rust//cargo:cargo_build_script.bzl", +    "cargo_build_script", +) -# Unsupported target "tcp_accept" with type "example" omitted +cargo_build_script( +    name = "crc16_build_script", +    srcs = glob(["**/*.rs"]), +    build_script_env = { +    }, +    crate_features = [ +    ], +    crate_root = "build.rs", +    data = glob(["**"]), +    edition = "2015", +    rustc_flags = [ +        "--cap-lints=allow", +    ], +    tags = [ +        "cargo-raze", +        "manual", +    ], +    version = "0.4.0", +    visibility = ["//visibility:private"], +    deps = [ +    ], +)  rust_library( -    name = "async_stream", +    name = "crc16",      srcs = glob(["**/*.rs"]),      crate_features = [      ],      crate_root = "src/lib.rs",      crate_type = "lib",      data = [], -    edition = "2018", -    proc_macro_deps = [ -        "@raze__async_stream_impl__0_3_2//:async_stream_impl", -    ], +    edition = "2015",      rustc_flags = [          "--cap-lints=allow",      ], @@ -51,15 +75,9 @@ rust_library(          "cargo-raze",          "manual",      ], -    version = "0.3.2", +    version = "0.4.0",      # buildifier: leave-alone      deps = [ -        "@raze__futures_core__0_3_17//:futures_core", +        ":crc16_build_script",      ],  ) - -# Unsupported target "for_await" with type "test" omitted - -# Unsupported target "stream" with type "test" omitted - -# Unsupported target "try_stream" with type "test" omitted diff --git a/cargo/remote/BUILD.anyhow-1.0.43.bazel b/cargo/remote/BUILD.crc32fast-1.2.1.bazel index 65e94d6..e89a779 100644 --- a/cargo/remote/BUILD.anyhow-1.0.43.bazel +++ b/cargo/remote/BUILD.crc32fast-1.2.1.bazel @@ -37,7 +37,7 @@ load(  )  cargo_build_script( -    name = "anyhow_build_script", +    name = "crc32fast_build_script",      srcs = glob(["**/*.rs"]),      build_script_env = {      }, @@ -47,7 +47,7 @@ cargo_build_script(      ],      crate_root = "build.rs",      data = glob(["**"]), -    edition = "2018", +    edition = "2015",      rustc_flags = [          "--cap-lints=allow",      ], @@ -55,14 +55,16 @@ cargo_build_script(          "cargo-raze",          "manual",      ], -    version = "1.0.43", +    version = "1.2.1",      visibility = ["//visibility:private"],      deps = [      ],  ) +# Unsupported target "bench" with type "bench" omitted +  rust_library( -    name = "anyhow", +    name = "crc32fast",      srcs = glob(["**/*.rs"]),      crate_features = [          "default", @@ -71,7 +73,7 @@ rust_library(      crate_root = "src/lib.rs",      crate_type = "lib",      data = [], -    edition = "2018", +    edition = "2015",      rustc_flags = [          "--cap-lints=allow",      ], @@ -79,35 +81,10 @@ rust_library(          "cargo-raze",          "manual",      ], -    version = "1.0.43", +    version = "1.2.1",      # buildifier: leave-alone      deps = [ -        ":anyhow_build_script", +        ":crc32fast_build_script", +        "@raze__cfg_if__1_0_0//:cfg_if",      ],  ) - -# Unsupported target "compiletest" with type "test" omitted - -# Unsupported target "test_autotrait" with type "test" omitted - -# Unsupported target "test_backtrace" with type "test" omitted - -# Unsupported target "test_boxed" with type "test" omitted - -# Unsupported target "test_chain" with type "test" omitted - -# Unsupported target "test_context" with type "test" omitted - -# Unsupported target "test_convert" with type "test" omitted - -# Unsupported target "test_downcast" with type "test" omitted - -# Unsupported target "test_ffi" with type "test" omitted - -# Unsupported target "test_fmt" with type "test" omitted - -# Unsupported target "test_macros" with type "test" omitted - -# Unsupported target "test_repr" with type "test" omitted - -# Unsupported target "test_source" with type "test" omitted diff --git a/cargo/remote/BUILD.heck-0.3.3.bazel b/cargo/remote/BUILD.crypto-mac-0.10.1.bazel index 45ff7e4..5d4c629 100644 --- a/cargo/remote/BUILD.heck-0.3.3.bazel +++ b/cargo/remote/BUILD.crypto-mac-0.10.1.bazel @@ -31,7 +31,7 @@ licenses([  # Generated Targets  rust_library( -    name = "heck", +    name = "crypto_mac",      srcs = glob(["**/*.rs"]),      crate_features = [      ], @@ -46,9 +46,10 @@ rust_library(          "cargo-raze",          "manual",      ], -    version = "0.3.3", +    version = "0.10.1",      # buildifier: leave-alone      deps = [ -        "@raze__unicode_segmentation__1_8_0//:unicode_segmentation", +        "@raze__generic_array__0_14_4//:generic_array", +        "@raze__subtle__2_4_1//:subtle",      ],  ) diff --git a/cargo/remote/BUILD.flate2-1.0.22.bazel b/cargo/remote/BUILD.flate2-1.0.22.bazel new file mode 100644 index 0000000..27caa81 --- /dev/null +++ b/cargo/remote/BUILD.flate2-1.0.22.bazel @@ -0,0 +1,127 @@ +""" +@generated +cargo-raze crate build file. + +DO NOT EDIT! Replaced on runs of cargo-raze +""" + +# buildifier: disable=load +load("@bazel_skylib//lib:selects.bzl", "selects") + +# buildifier: disable=load +load( +    "@rules_rust//rust:rust.bzl", +    "rust_binary", +    "rust_library", +    "rust_test", +) + +package(default_visibility = [ +    # Public for visibility by "@raze__crate__version//" targets. +    # +    # Prefer access through "//cargo", which limits external +    # visibility to explicit Cargo.toml dependencies. +    "//visibility:public", +]) + +licenses([ +    "notice",  # MIT from expression "MIT OR Apache-2.0" +]) + +# Generated Targets + +# Unsupported target "compress_file" with type "example" omitted + +# Unsupported target "deflatedecoder-bufread" with type "example" omitted + +# Unsupported target "deflatedecoder-read" with type "example" omitted + +# Unsupported target "deflatedecoder-write" with type "example" omitted + +# Unsupported target "deflateencoder-bufread" with type "example" omitted + +# Unsupported target "deflateencoder-read" with type "example" omitted + +# Unsupported target "deflateencoder-write" with type "example" omitted + +# Unsupported target "gzbuilder" with type "example" omitted + +# Unsupported target "gzdecoder-bufread" with type "example" omitted + +# Unsupported target "gzdecoder-read" with type "example" omitted + +# Unsupported target "gzdecoder-write" with type "example" omitted + +# Unsupported target "gzencoder-bufread" with type "example" omitted + +# Unsupported target "gzencoder-read" with type "example" omitted + +# Unsupported target "gzencoder-write" with type "example" omitted + +# Unsupported target "gzmultidecoder-bufread" with type "example" omitted + +# Unsupported target "gzmultidecoder-read" with type "example" omitted + +# Unsupported target "zlibdecoder-bufread" with type "example" omitted + +# Unsupported target "zlibdecoder-read" with type "example" omitted + +# Unsupported target "zlibdecoder-write" with type "example" omitted + +# Unsupported target "zlibencoder-bufread" with type "example" omitted + +# Unsupported target "zlibencoder-read" with type "example" omitted + +# Unsupported target "zlibencoder-write" with type "example" omitted + +rust_library( +    name = "flate2", +    srcs = glob(["**/*.rs"]), +    aliases = { +    }, +    crate_features = [ +        "default", +        "miniz_oxide", +        "rust_backend", +    ], +    crate_root = "src/lib.rs", +    crate_type = "lib", +    data = [], +    compile_data = glob(["*/**"]), +    edition = "2018", +    rustc_flags = [ +        "--cap-lints=allow", +    ], +    tags = [ +        "cargo-raze", +        "manual", +    ], +    version = "1.0.22", +    # buildifier: leave-alone +    deps = [ +        "@raze__cfg_if__1_0_0//:cfg_if", +        "@raze__crc32fast__1_2_1//:crc32fast", +        "@raze__libc__0_2_101//:libc", +        "@raze__miniz_oxide__0_4_4//:miniz_oxide", +    ] + selects.with_or({ +        # cfg(all(target_arch = "wasm32", not(target_os = "emscripten"))) +        ( +            "@rules_rust//rust/platform:wasm32-unknown-unknown", +            "@rules_rust//rust/platform:wasm32-wasi", +        ): [ +        ], +        "//conditions:default": [], +    }), +) + +# Unsupported target "async-reader" with type "test" omitted + +# Unsupported target "early-flush" with type "test" omitted + +# Unsupported target "empty-read" with type "test" omitted + +# Unsupported target "gunzip" with type "test" omitted + +# Unsupported target "tokio" with type "test" omitted + +# Unsupported target "zero-write" with type "test" omitted diff --git a/cargo/remote/BUILD.fixedbitset-0.2.0.bazel b/cargo/remote/BUILD.foreign-types-0.3.2.bazel index 260256f..6ef7960 100644 --- a/cargo/remote/BUILD.fixedbitset-0.2.0.bazel +++ b/cargo/remote/BUILD.foreign-types-0.3.2.bazel @@ -30,10 +30,8 @@ licenses([  # Generated Targets -# Unsupported target "benches" with type "bench" omitted -  rust_library( -    name = "fixedbitset", +    name = "foreign_types",      srcs = glob(["**/*.rs"]),      crate_features = [      ], @@ -48,8 +46,9 @@ rust_library(          "cargo-raze",          "manual",      ], -    version = "0.2.0", +    version = "0.3.2",      # buildifier: leave-alone      deps = [ +        "@raze__foreign_types_shared__0_1_1//:foreign_types_shared",      ],  ) diff --git a/cargo/remote/BUILD.either-1.6.1.bazel b/cargo/remote/BUILD.foreign-types-shared-0.1.1.bazel index 29a576b..c003ce7 100644 --- a/cargo/remote/BUILD.either-1.6.1.bazel +++ b/cargo/remote/BUILD.foreign-types-shared-0.1.1.bazel @@ -31,11 +31,9 @@ licenses([  # Generated Targets  rust_library( -    name = "either", +    name = "foreign_types_shared",      srcs = glob(["**/*.rs"]),      crate_features = [ -        "default", -        "use_std",      ],      crate_root = "src/lib.rs",      crate_type = "lib", @@ -48,7 +46,7 @@ rust_library(          "cargo-raze",          "manual",      ], -    version = "1.6.1", +    version = "0.1.1",      # buildifier: leave-alone      deps = [      ], diff --git a/cargo/remote/BUILD.tokio-io-timeout-1.1.1.bazel b/cargo/remote/BUILD.hmac-0.10.1.bazel index 33a8951..e129998 100644 --- a/cargo/remote/BUILD.tokio-io-timeout-1.1.1.bazel +++ b/cargo/remote/BUILD.hmac-0.10.1.bazel @@ -31,7 +31,7 @@ licenses([  # Generated Targets  rust_library( -    name = "tokio_io_timeout", +    name = "hmac",      srcs = glob(["**/*.rs"]),      crate_features = [      ], @@ -46,10 +46,12 @@ rust_library(          "cargo-raze",          "manual",      ], -    version = "1.1.1", +    version = "0.10.1",      # buildifier: leave-alone      deps = [ -        "@raze__pin_project_lite__0_2_7//:pin_project_lite", -        "@raze__tokio__1_11_0//:tokio", +        "@raze__crypto_mac__0_10_1//:crypto_mac", +        "@raze__digest__0_9_0//:digest",      ],  ) + +# Unsupported target "lib" with type "test" omitted diff --git a/cargo/remote/BUILD.hyper-timeout-0.4.1.bazel b/cargo/remote/BUILD.hyper-tls-0.5.0.bazel index 9fc071f..5cfb670 100644 --- a/cargo/remote/BUILD.hyper-timeout-0.4.1.bazel +++ b/cargo/remote/BUILD.hyper-tls-0.5.0.bazel @@ -33,7 +33,7 @@ licenses([  # Unsupported target "client" with type "example" omitted  rust_library( -    name = "hyper_timeout", +    name = "hyper_tls",      srcs = glob(["**/*.rs"]),      crate_features = [      ], @@ -48,12 +48,13 @@ rust_library(          "cargo-raze",          "manual",      ], -    version = "0.4.1", +    version = "0.5.0",      # buildifier: leave-alone      deps = [ +        "@raze__bytes__1_1_0//:bytes",          "@raze__hyper__0_14_12//:hyper", -        "@raze__pin_project_lite__0_2_7//:pin_project_lite", +        "@raze__native_tls__0_2_8//:native_tls",          "@raze__tokio__1_11_0//:tokio", -        "@raze__tokio_io_timeout__1_1_1//:tokio_io_timeout", +        "@raze__tokio_native_tls__0_3_0//:tokio_native_tls",      ],  ) diff --git a/cargo/remote/BUILD.itertools-0.10.1.bazel b/cargo/remote/BUILD.itertools-0.10.1.bazel deleted file mode 100644 index 4b5e5db..0000000 --- a/cargo/remote/BUILD.itertools-0.10.1.bazel +++ /dev/null @@ -1,99 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( -    "@rules_rust//rust:rust.bzl", -    "rust_binary", -    "rust_library", -    "rust_test", -) - -package(default_visibility = [ -    # Public for visibility by "@raze__crate__version//" targets. -    # -    # Prefer access through "//cargo", which limits external -    # visibility to explicit Cargo.toml dependencies. -    "//visibility:public", -]) - -licenses([ -    "notice",  # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "bench1" with type "bench" omitted - -# Unsupported target "combinations" with type "bench" omitted - -# Unsupported target "combinations_with_replacement" with type "bench" omitted - -# Unsupported target "fold_specialization" with type "bench" omitted - -# Unsupported target "powerset" with type "bench" omitted - -# Unsupported target "tree_fold1" with type "bench" omitted - -# Unsupported target "tuple_combinations" with type "bench" omitted - -# Unsupported target "tuples" with type "bench" omitted - -# Unsupported target "iris" with type "example" omitted - -rust_library( -    name = "itertools", -    srcs = glob(["**/*.rs"]), -    crate_features = [ -        "default", -        "use_alloc", -        "use_std", -    ], -    crate_root = "src/lib.rs", -    crate_type = "lib", -    data = [], -    edition = "2018", -    rustc_flags = [ -        "--cap-lints=allow", -    ], -    tags = [ -        "cargo-raze", -        "manual", -    ], -    version = "0.10.1", -    # buildifier: leave-alone -    deps = [ -        "@raze__either__1_6_1//:either", -    ], -) - -# Unsupported target "adaptors_no_collect" with type "test" omitted - -# Unsupported target "flatten_ok" with type "test" omitted - -# Unsupported target "fold_specialization" with type "test" omitted - -# Unsupported target "macros_hygiene" with type "test" omitted - -# Unsupported target "merge_join" with type "test" omitted - -# Unsupported target "peeking_take_while" with type "test" omitted - -# Unsupported target "quick" with type "test" omitted - -# Unsupported target "specializations" with type "test" omitted - -# Unsupported target "test_core" with type "test" omitted - -# Unsupported target "test_std" with type "test" omitted - -# Unsupported target "tuples" with type "test" omitted - -# Unsupported target "zip" with type "test" omitted diff --git a/cargo/remote/BUILD.prost-0.8.0.bazel b/cargo/remote/BUILD.miniz_oxide-0.4.4.bazel index 6d99ea1..ca46c39 100644 --- a/cargo/remote/BUILD.prost-0.8.0.bazel +++ b/cargo/remote/BUILD.miniz_oxide-0.4.4.bazel @@ -25,28 +25,50 @@ package(default_visibility = [  ])  licenses([ -    "notice",  # Apache-2.0 from expression "Apache-2.0" +    "notice",  # MIT from expression "MIT OR (Zlib OR Apache-2.0)"  ])  # Generated Targets +# buildifier: disable=out-of-order-load +# buildifier: disable=load-on-top +load( +    "@rules_rust//cargo:cargo_build_script.bzl", +    "cargo_build_script", +) -# Unsupported target "varint" with type "bench" omitted +cargo_build_script( +    name = "miniz_oxide_build_script", +    srcs = glob(["**/*.rs"]), +    build_script_env = { +    }, +    crate_features = [ +    ], +    crate_root = "build.rs", +    data = glob(["**"]), +    edition = "2018", +    rustc_flags = [ +        "--cap-lints=allow", +    ], +    tags = [ +        "cargo-raze", +        "manual", +    ], +    version = "0.4.4", +    visibility = ["//visibility:private"], +    deps = [ +        "@raze__autocfg__1_0_1//:autocfg", +    ], +)  rust_library( -    name = "prost", +    name = "miniz_oxide",      srcs = glob(["**/*.rs"]),      crate_features = [ -        "default", -        "prost-derive", -        "std",      ],      crate_root = "src/lib.rs",      crate_type = "lib",      data = [],      edition = "2018", -    proc_macro_deps = [ -        "@raze__prost_derive__0_8_0//:prost_derive", -    ],      rustc_flags = [          "--cap-lints=allow",      ], @@ -54,9 +76,10 @@ rust_library(          "cargo-raze",          "manual",      ], -    version = "0.8.0", +    version = "0.4.4",      # buildifier: leave-alone      deps = [ -        "@raze__bytes__1_1_0//:bytes", +        ":miniz_oxide_build_script", +        "@raze__adler__1_0_2//:adler",      ],  ) diff --git a/cargo/remote/BUILD.native-tls-0.2.8.bazel b/cargo/remote/BUILD.native-tls-0.2.8.bazel new file mode 100644 index 0000000..cf4a6a5 --- /dev/null +++ b/cargo/remote/BUILD.native-tls-0.2.8.bazel @@ -0,0 +1,177 @@ +""" +@generated +cargo-raze crate build file. + +DO NOT EDIT! Replaced on runs of cargo-raze +""" + +# buildifier: disable=load +load("@bazel_skylib//lib:selects.bzl", "selects") + +# buildifier: disable=load +load( +    "@rules_rust//rust:rust.bzl", +    "rust_binary", +    "rust_library", +    "rust_test", +) + +package(default_visibility = [ +    # Public for visibility by "@raze__crate__version//" targets. +    # +    # Prefer access through "//cargo", which limits external +    # visibility to explicit Cargo.toml dependencies. +    "//visibility:public", +]) + +licenses([ +    "notice",  # MIT from expression "MIT OR Apache-2.0" +]) + +# Generated Targets +# buildifier: disable=out-of-order-load +# buildifier: disable=load-on-top +load( +    "@rules_rust//cargo:cargo_build_script.bzl", +    "cargo_build_script", +) + +cargo_build_script( +    name = "native_tls_build_script", +    srcs = glob(["**/*.rs"]), +    build_script_env = { +    }, +    crate_features = [ +    ], +    crate_root = "build.rs", +    data = glob(["**"]), +    edition = "2015", +    rustc_flags = [ +        "--cap-lints=allow", +    ], +    tags = [ +        "cargo-raze", +        "manual", +    ], +    version = "0.2.8", +    visibility = ["//visibility:private"], +    deps = [ +    ] + selects.with_or({ +        # cfg(any(target_os = "macos", target_os = "ios")) +        ( +            "@rules_rust//rust/platform:aarch64-apple-darwin", +            "@rules_rust//rust/platform:aarch64-apple-ios", +            "@rules_rust//rust/platform:i686-apple-darwin", +            "@rules_rust//rust/platform:x86_64-apple-darwin", +            "@rules_rust//rust/platform:x86_64-apple-ios", +        ): [ +            "@raze__security_framework_sys__2_4_2//:security_framework_sys", +        ], +        "//conditions:default": [], +    }) + selects.with_or({ +        # cfg(not(any(target_os = "windows", target_os = "macos", target_os = "ios"))) +        ( +            "@rules_rust//rust/platform:aarch64-linux-android", +            "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", +            "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", +            "@rules_rust//rust/platform:i686-linux-android", +            "@rules_rust//rust/platform:i686-unknown-freebsd", +            "@rules_rust//rust/platform:i686-unknown-linux-gnu", +            "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", +            "@rules_rust//rust/platform:s390x-unknown-linux-gnu", +            "@rules_rust//rust/platform:wasm32-unknown-unknown", +            "@rules_rust//rust/platform:wasm32-wasi", +            "@rules_rust//rust/platform:x86_64-linux-android", +            "@rules_rust//rust/platform:x86_64-unknown-freebsd", +            "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", +        ): [ +            "@raze__openssl_sys__0_9_67//:openssl_sys", +        ], +        "//conditions:default": [], +    }) + selects.with_or({ +        # cfg(target_os = "windows") +        ( +            "@rules_rust//rust/platform:i686-pc-windows-msvc", +            "@rules_rust//rust/platform:x86_64-pc-windows-msvc", +        ): [ +        ], +        "//conditions:default": [], +    }), +) + +# Unsupported target "google-connect" with type "example" omitted + +# Unsupported target "simple-server" with type "example" omitted + +rust_library( +    name = "native_tls", +    srcs = glob(["**/*.rs"]), +    aliases = { +    }, +    crate_features = [ +    ], +    crate_root = "src/lib.rs", +    crate_type = "lib", +    data = [], +    edition = "2015", +    rustc_flags = [ +        "--cap-lints=allow", +    ], +    tags = [ +        "cargo-raze", +        "manual", +    ], +    version = "0.2.8", +    # buildifier: leave-alone +    deps = [ +        ":native_tls_build_script", +    ] + selects.with_or({ +        # cfg(any(target_os = "macos", target_os = "ios")) +        ( +            "@rules_rust//rust/platform:aarch64-apple-darwin", +            "@rules_rust//rust/platform:aarch64-apple-ios", +            "@rules_rust//rust/platform:i686-apple-darwin", +            "@rules_rust//rust/platform:x86_64-apple-darwin", +            "@rules_rust//rust/platform:x86_64-apple-ios", +        ): [ +            "@raze__lazy_static__1_4_0//:lazy_static", +            "@raze__libc__0_2_101//:libc", +            "@raze__security_framework__2_4_2//:security_framework", +            "@raze__security_framework_sys__2_4_2//:security_framework_sys", +            "@raze__tempfile__3_2_0//:tempfile", +        ], +        "//conditions:default": [], +    }) + selects.with_or({ +        # cfg(not(any(target_os = "windows", target_os = "macos", target_os = "ios"))) +        ( +            "@rules_rust//rust/platform:aarch64-linux-android", +            "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", +            "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", +            "@rules_rust//rust/platform:i686-linux-android", +            "@rules_rust//rust/platform:i686-unknown-freebsd", +            "@rules_rust//rust/platform:i686-unknown-linux-gnu", +            "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", +            "@rules_rust//rust/platform:s390x-unknown-linux-gnu", +            "@rules_rust//rust/platform:wasm32-unknown-unknown", +            "@rules_rust//rust/platform:wasm32-wasi", +            "@rules_rust//rust/platform:x86_64-linux-android", +            "@rules_rust//rust/platform:x86_64-unknown-freebsd", +            "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", +        ): [ +            "@raze__log__0_4_14//:log", +            "@raze__openssl__0_10_36//:openssl", +            "@raze__openssl_probe__0_1_4//:openssl_probe", +            "@raze__openssl_sys__0_9_67//:openssl_sys", +        ], +        "//conditions:default": [], +    }) + selects.with_or({ +        # cfg(target_os = "windows") +        ( +            "@rules_rust//rust/platform:i686-pc-windows-msvc", +            "@rules_rust//rust/platform:x86_64-pc-windows-msvc", +        ): [ +            "@raze__schannel__0_1_19//:schannel", +        ], +        "//conditions:default": [], +    }), +) diff --git a/cargo/remote/BUILD.prost-build-0.8.0.bazel b/cargo/remote/BUILD.openssl-0.10.36.bazel index 998d95e..e70a454 100644 --- a/cargo/remote/BUILD.prost-build-0.8.0.bazel +++ b/cargo/remote/BUILD.openssl-0.10.36.bazel @@ -37,7 +37,7 @@ load(  )  cargo_build_script( -    name = "prost_build_build_script", +    name = "openssl_build_script",      srcs = glob(["**/*.rs"]),      build_script_env = {      }, @@ -53,16 +53,21 @@ cargo_build_script(          "cargo-raze",          "manual",      ], -    version = "0.8.0", +    version = "0.10.36",      visibility = ["//visibility:private"],      deps = [ -        "@raze__which__4_2_2//:which", +        "@raze__openssl_sys__0_9_67//:openssl_sys",      ],  ) +# Unsupported target "mk_certs" with type "example" omitted +  rust_library( -    name = "prost_build", +    name = "openssl",      srcs = glob(["**/*.rs"]), +    aliases = { +        "@raze__openssl_sys__0_9_67//:openssl_sys": "ffi", +    },      crate_features = [      ],      crate_root = "src/lib.rs", @@ -76,18 +81,15 @@ rust_library(          "cargo-raze",          "manual",      ], -    version = "0.8.0", +    version = "0.10.36",      # buildifier: leave-alone      deps = [ -        ":prost_build_build_script", -        "@raze__bytes__1_1_0//:bytes", -        "@raze__heck__0_3_3//:heck", -        "@raze__itertools__0_10_1//:itertools", -        "@raze__log__0_4_14//:log", -        "@raze__multimap__0_8_3//:multimap", -        "@raze__petgraph__0_5_1//:petgraph", -        "@raze__prost__0_8_0//:prost", -        "@raze__prost_types__0_8_0//:prost_types", -        "@raze__tempfile__3_2_0//:tempfile", +        ":openssl_build_script", +        "@raze__bitflags__1_3_2//:bitflags", +        "@raze__cfg_if__1_0_0//:cfg_if", +        "@raze__foreign_types__0_3_2//:foreign_types", +        "@raze__libc__0_2_101//:libc", +        "@raze__once_cell__1_8_0//:once_cell", +        "@raze__openssl_sys__0_9_67//:openssl_sys",      ],  ) diff --git a/cargo/remote/BUILD.which-4.2.2.bazel b/cargo/remote/BUILD.openssl-sys-0.9.67.bazel index ad77755..a97fdb8 100644 --- a/cargo/remote/BUILD.which-4.2.2.bazel +++ b/cargo/remote/BUILD.openssl-sys-0.9.67.bazel @@ -29,9 +29,51 @@ licenses([  ])  # Generated Targets +# buildifier: disable=out-of-order-load +# buildifier: disable=load-on-top +load( +    "@rules_rust//cargo:cargo_build_script.bzl", +    "cargo_build_script", +) + +cargo_build_script( +    name = "openssl_sys_build_script", +    srcs = glob(["**/*.rs"]), +    build_script_env = { +    }, +    crate_features = [ +    ], +    crate_root = "build/main.rs", +    data = glob(["**"]), +    edition = "2015", +    links = "openssl", +    rustc_flags = [ +        "--cap-lints=allow", +    ], +    tags = [ +        "cargo-raze", +        "manual", +    ], +    version = "0.9.67", +    visibility = ["//visibility:private"], +    deps = [ +        "@raze__autocfg__1_0_1//:autocfg", +        "@raze__cc__1_0_70//:cc", +        "@raze__pkg_config__0_3_19//:pkg_config", +    ] + selects.with_or({ +        # cfg(target_env = "msvc") +        ( +            "@rules_rust//rust/platform:i686-pc-windows-msvc", +            "@rules_rust//rust/platform:x86_64-pc-windows-msvc", +        ): [ +            "@raze__vcpkg__0_2_15//:vcpkg", +        ], +        "//conditions:default": [], +    }), +)  rust_library( -    name = "which", +    name = "openssl_sys",      srcs = glob(["**/*.rs"]),      aliases = {      }, @@ -40,7 +82,7 @@ rust_library(      crate_root = "src/lib.rs",      crate_type = "lib",      data = [], -    edition = "2018", +    edition = "2015",      rustc_flags = [          "--cap-lints=allow",      ], @@ -48,21 +90,18 @@ rust_library(          "cargo-raze",          "manual",      ], -    version = "4.2.2", +    version = "0.9.67",      # buildifier: leave-alone      deps = [ -        "@raze__either__1_6_1//:either", +        ":openssl_sys_build_script",          "@raze__libc__0_2_101//:libc",      ] + selects.with_or({ -        # cfg(windows) +        # cfg(target_env = "msvc")          (              "@rules_rust//rust/platform:i686-pc-windows-msvc",              "@rules_rust//rust/platform:x86_64-pc-windows-msvc",          ): [ -            "@raze__lazy_static__1_4_0//:lazy_static",          ],          "//conditions:default": [],      }),  ) - -# Unsupported target "basic" with type "test" omitted diff --git a/cargo/remote/BUILD.petgraph-0.5.1.bazel b/cargo/remote/BUILD.procfs-0.9.1.bazel index 0be98f7..5819e10 100644 --- a/cargo/remote/BUILD.petgraph-0.5.1.bazel +++ b/cargo/remote/BUILD.procfs-0.9.1.bazel @@ -30,20 +30,30 @@ licenses([  # Generated Targets -# Unsupported target "dijkstra" with type "bench" omitted +# Unsupported target "diskstat" with type "example" omitted -# Unsupported target "iso" with type "bench" omitted +# Unsupported target "dump" with type "example" omitted -# Unsupported target "matrix_graph" with type "bench" omitted +# Unsupported target "interface_stats" with type "example" omitted -# Unsupported target "ograph" with type "bench" omitted +# Unsupported target "lslocks" with type "example" omitted -# Unsupported target "stable_graph" with type "bench" omitted +# Unsupported target "lsmod" with type "example" omitted -# Unsupported target "unionfind" with type "bench" omitted +# Unsupported target "mountinfo" with type "example" omitted + +# Unsupported target "netstat" with type "example" omitted + +# Unsupported target "pressure" with type "example" omitted + +# Unsupported target "process_hierarchy" with type "example" omitted + +# Unsupported target "ps" with type "example" omitted + +# Unsupported target "self_memory" with type "example" omitted  rust_library( -    name = "petgraph", +    name = "procfs",      srcs = glob(["**/*.rs"]),      crate_features = [      ], @@ -58,22 +68,14 @@ rust_library(          "cargo-raze",          "manual",      ], -    version = "0.5.1", +    version = "0.9.1",      # buildifier: leave-alone      deps = [ -        "@raze__fixedbitset__0_2_0//:fixedbitset", -        "@raze__indexmap__1_7_0//:indexmap", +        "@raze__bitflags__1_3_2//:bitflags", +        "@raze__byteorder__1_4_3//:byteorder", +        "@raze__flate2__1_0_22//:flate2", +        "@raze__hex__0_4_3//:hex", +        "@raze__lazy_static__1_4_0//:lazy_static", +        "@raze__libc__0_2_101//:libc",      ],  ) - -# Unsupported target "graph" with type "test" omitted - -# Unsupported target "graphmap" with type "test" omitted - -# Unsupported target "iso" with type "test" omitted - -# Unsupported target "quickcheck" with type "test" omitted - -# Unsupported target "stable_graph" with type "test" omitted - -# Unsupported target "unionfind" with type "test" omitted diff --git a/cargo/remote/BUILD.prometheus-0.12.0.bazel b/cargo/remote/BUILD.prometheus-0.12.0.bazel index d448c8a..a9b0de3 100644 --- a/cargo/remote/BUILD.prometheus-0.12.0.bazel +++ b/cargo/remote/BUILD.prometheus-0.12.0.bazel @@ -43,6 +43,9 @@ cargo_build_script(      },      crate_features = [          "default", +        "libc", +        "process", +        "procfs",          "protobuf",      ],      crate_root = "build.rs", @@ -106,6 +109,9 @@ rust_library(      },      crate_features = [          "default", +        "libc", +        "process", +        "procfs",          "protobuf",      ],      crate_root = "src/lib.rs", @@ -126,6 +132,7 @@ rust_library(          "@raze__cfg_if__1_0_0//:cfg_if",          "@raze__fnv__1_0_7//:fnv",          "@raze__lazy_static__1_4_0//:lazy_static", +        "@raze__libc__0_2_101//:libc",          "@raze__memchr__2_4_1//:memchr",          "@raze__parking_lot__0_11_2//:parking_lot",          "@raze__protobuf__2_25_1//:protobuf", @@ -140,6 +147,7 @@ rust_library(              "@rules_rust//rust/platform:s390x-unknown-linux-gnu",              "@rules_rust//rust/platform:x86_64-unknown-linux-gnu",          ): [ +            "@raze__procfs__0_9_1//:procfs",          ],          "//conditions:default": [],      }), diff --git a/cargo/remote/BUILD.prost-derive-0.8.0.bazel b/cargo/remote/BUILD.prost-derive-0.8.0.bazel deleted file mode 100644 index e573303..0000000 --- a/cargo/remote/BUILD.prost-derive-0.8.0.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( -    "@rules_rust//rust:rust.bzl", -    "rust_binary", -    "rust_library", -    "rust_test", -) - -package(default_visibility = [ -    # Public for visibility by "@raze__crate__version//" targets. -    # -    # Prefer access through "//cargo", which limits external -    # visibility to explicit Cargo.toml dependencies. -    "//visibility:public", -]) - -licenses([ -    "notice",  # Apache-2.0 from expression "Apache-2.0" -]) - -# Generated Targets - -rust_library( -    name = "prost_derive", -    srcs = glob(["**/*.rs"]), -    crate_features = [ -    ], -    crate_root = "src/lib.rs", -    crate_type = "proc-macro", -    data = [], -    edition = "2018", -    rustc_flags = [ -        "--cap-lints=allow", -    ], -    tags = [ -        "cargo-raze", -        "manual", -    ], -    version = "0.8.0", -    # buildifier: leave-alone -    deps = [ -        "@raze__anyhow__1_0_43//:anyhow", -        "@raze__itertools__0_10_1//:itertools", -        "@raze__proc_macro2__1_0_29//:proc_macro2", -        "@raze__quote__1_0_9//:quote", -        "@raze__syn__1_0_76//:syn", -    ], -) diff --git a/cargo/remote/BUILD.rand-0.8.4.bazel b/cargo/remote/BUILD.rand-0.8.4.bazel index 4124443..4d0f4d6 100644 --- a/cargo/remote/BUILD.rand-0.8.4.bazel +++ b/cargo/remote/BUILD.rand-0.8.4.bazel @@ -42,7 +42,6 @@ rust_library(          "libc",          "rand_chacha",          "rand_hc", -        "small_rng",          "std",          "std_rng",      ], diff --git a/cargo/remote/BUILD.redis-0.21.2.bazel b/cargo/remote/BUILD.redis-0.21.2.bazel index 6305a27..adf435c 100644 --- a/cargo/remote/BUILD.redis-0.21.2.bazel +++ b/cargo/remote/BUILD.redis-0.21.2.bazel @@ -55,11 +55,24 @@ rust_library(      srcs = glob(["**/*.rs"]),      crate_features = [          "acl", +        "aio", +        "arc-swap", +        "bytes", +        "cluster", +        "connection-manager", +        "crc16",          "default", +        "futures", +        "futures-util",          "geospatial", +        "pin-project-lite", +        "rand",          "script",          "sha1",          "streams", +        "tokio", +        "tokio-comp", +        "tokio-util",      ],      crate_root = "src/lib.rs",      crate_type = "lib", @@ -78,11 +91,20 @@ rust_library(      version = "0.21.2",      # buildifier: leave-alone      deps = [ +        "@raze__arc_swap__1_4_0//:arc_swap", +        "@raze__bytes__1_1_0//:bytes",          "@raze__combine__4_6_1//:combine", +        "@raze__crc16__0_4_0//:crc16",          "@raze__dtoa__0_4_8//:dtoa", +        "@raze__futures__0_3_17//:futures", +        "@raze__futures_util__0_3_17//:futures_util",          "@raze__itoa__0_4_8//:itoa",          "@raze__percent_encoding__2_1_0//:percent_encoding", +        "@raze__pin_project_lite__0_2_7//:pin_project_lite", +        "@raze__rand__0_8_4//:rand",          "@raze__sha1__0_6_0//:sha1", +        "@raze__tokio__1_11_0//:tokio", +        "@raze__tokio_util__0_6_8//:tokio_util",          "@raze__url__2_2_2//:url",      ],  ) diff --git a/cargo/remote/BUILD.security-framework-sys-2.4.2.bazel b/cargo/remote/BUILD.security-framework-sys-2.4.2.bazel index 329b304..6d2a230 100644 --- a/cargo/remote/BUILD.security-framework-sys-2.4.2.bazel +++ b/cargo/remote/BUILD.security-framework-sys-2.4.2.bazel @@ -35,6 +35,7 @@ rust_library(      srcs = glob(["**/*.rs"]),      crate_features = [          "OSX_10_9", +        "default",      ],      crate_root = "src/lib.rs",      crate_type = "lib", diff --git a/cargo/remote/BUILD.sha2-0.9.6.bazel b/cargo/remote/BUILD.sha2-0.9.6.bazel index 9ebd0ed..dff9109 100644 --- a/cargo/remote/BUILD.sha2-0.9.6.bazel +++ b/cargo/remote/BUILD.sha2-0.9.6.bazel @@ -44,6 +44,8 @@ rust_library(      aliases = {      },      crate_features = [ +        "default", +        "std",      ],      crate_root = "src/lib.rs",      crate_type = "lib", diff --git a/cargo/remote/BUILD.testcontainers-0.12.0.bazel b/cargo/remote/BUILD.testcontainers-0.12.0.bazel new file mode 100644 index 0000000..e35b1e5 --- /dev/null +++ b/cargo/remote/BUILD.testcontainers-0.12.0.bazel @@ -0,0 +1,64 @@ +""" +@generated +cargo-raze crate build file. + +DO NOT EDIT! Replaced on runs of cargo-raze +""" + +# buildifier: disable=load +load("@bazel_skylib//lib:selects.bzl", "selects") + +# buildifier: disable=load +load( +    "@rules_rust//rust:rust.bzl", +    "rust_binary", +    "rust_library", +    "rust_test", +) + +package(default_visibility = [ +    # Public for visibility by "@raze__crate__version//" targets. +    # +    # Prefer access through "//cargo", which limits external +    # visibility to explicit Cargo.toml dependencies. +    "//visibility:public", +]) + +licenses([ +    "notice",  # MIT from expression "MIT OR Apache-2.0" +]) + +# Generated Targets + +rust_library( +    name = "testcontainers", +    srcs = glob(["**/*.rs"]), +    crate_features = [ +    ], +    crate_root = "src/lib.rs", +    crate_type = "lib", +    data = [], +    edition = "2018", +    rustc_flags = [ +        "--cap-lints=allow", +    ], +    tags = [ +        "cargo-raze", +        "manual", +    ], +    version = "0.12.0", +    # buildifier: leave-alone +    deps = [ +        "@raze__hex__0_4_3//:hex", +        "@raze__hmac__0_10_1//:hmac", +        "@raze__log__0_4_14//:log", +        "@raze__rand__0_8_4//:rand", +        "@raze__serde__1_0_130//:serde", +        "@raze__serde_json__1_0_67//:serde_json", +        "@raze__sha2__0_9_6//:sha2", +    ], +) + +# Unsupported target "cli_client" with type "test" omitted + +# Unsupported target "images" with type "test" omitted diff --git a/cargo/remote/BUILD.tokio-native-tls-0.3.0.bazel b/cargo/remote/BUILD.tokio-native-tls-0.3.0.bazel new file mode 100644 index 0000000..9f83be1 --- /dev/null +++ b/cargo/remote/BUILD.tokio-native-tls-0.3.0.bazel @@ -0,0 +1,105 @@ +""" +@generated +cargo-raze crate build file. + +DO NOT EDIT! Replaced on runs of cargo-raze +""" + +# buildifier: disable=load +load("@bazel_skylib//lib:selects.bzl", "selects") + +# buildifier: disable=load +load( +    "@rules_rust//rust:rust.bzl", +    "rust_binary", +    "rust_library", +    "rust_test", +) + +package(default_visibility = [ +    # Public for visibility by "@raze__crate__version//" targets. +    # +    # Prefer access through "//cargo", which limits external +    # visibility to explicit Cargo.toml dependencies. +    "//visibility:public", +]) + +licenses([ +    "notice",  # MIT from expression "MIT" +]) + +# Generated Targets + +# Unsupported target "download-rust-lang" with type "example" omitted + +# Unsupported target "echo" with type "example" omitted + +rust_library( +    name = "tokio_native_tls", +    srcs = glob(["**/*.rs"]), +    aliases = { +    }, +    crate_features = [ +    ], +    crate_root = "src/lib.rs", +    crate_type = "lib", +    data = [], +    edition = "2018", +    rustc_flags = [ +        "--cap-lints=allow", +    ], +    tags = [ +        "cargo-raze", +        "manual", +    ], +    version = "0.3.0", +    # buildifier: leave-alone +    deps = [ +        "@raze__native_tls__0_2_8//:native_tls", +        "@raze__tokio__1_11_0//:tokio", +    ] + selects.with_or({ +        # cfg(all(not(target_os = "macos"), not(windows), not(target_os = "ios"))) +        ( +            "@rules_rust//rust/platform:aarch64-linux-android", +            "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", +            "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", +            "@rules_rust//rust/platform:i686-linux-android", +            "@rules_rust//rust/platform:i686-unknown-freebsd", +            "@rules_rust//rust/platform:i686-unknown-linux-gnu", +            "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", +            "@rules_rust//rust/platform:s390x-unknown-linux-gnu", +            "@rules_rust//rust/platform:wasm32-unknown-unknown", +            "@rules_rust//rust/platform:wasm32-wasi", +            "@rules_rust//rust/platform:x86_64-linux-android", +            "@rules_rust//rust/platform:x86_64-unknown-freebsd", +            "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", +        ): [ +        ], +        "//conditions:default": [], +    }) + selects.with_or({ +        # cfg(any(target_os = "macos", target_os = "ios")) +        ( +            "@rules_rust//rust/platform:aarch64-apple-darwin", +            "@rules_rust//rust/platform:aarch64-apple-ios", +            "@rules_rust//rust/platform:i686-apple-darwin", +            "@rules_rust//rust/platform:x86_64-apple-darwin", +            "@rules_rust//rust/platform:x86_64-apple-ios", +        ): [ +        ], +        "//conditions:default": [], +    }) + selects.with_or({ +        # cfg(windows) +        ( +            "@rules_rust//rust/platform:i686-pc-windows-msvc", +            "@rules_rust//rust/platform:x86_64-pc-windows-msvc", +        ): [ +        ], +        "//conditions:default": [], +    }), +) + +# Unsupported target "bad" with type "test" omitted + +# Unsupported target "google" with type "test" omitted + +# Unsupported target "smoke" with type "test" omitted diff --git a/cargo/remote/BUILD.tokio-stream-0.1.7.bazel b/cargo/remote/BUILD.tokio-stream-0.1.7.bazel deleted file mode 100644 index 5b08034..0000000 --- a/cargo/remote/BUILD.tokio-stream-0.1.7.bazel +++ /dev/null @@ -1,84 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( -    "@rules_rust//rust:rust.bzl", -    "rust_binary", -    "rust_library", -    "rust_test", -) - -package(default_visibility = [ -    # Public for visibility by "@raze__crate__version//" targets. -    # -    # Prefer access through "//cargo", which limits external -    # visibility to explicit Cargo.toml dependencies. -    "//visibility:public", -]) - -licenses([ -    "notice",  # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( -    name = "tokio_stream", -    srcs = glob(["**/*.rs"]), -    crate_features = [ -        "default", -        "time", -    ], -    crate_root = "src/lib.rs", -    crate_type = "lib", -    data = [], -    edition = "2018", -    rustc_flags = [ -        "--cap-lints=allow", -    ], -    tags = [ -        "cargo-raze", -        "manual", -    ], -    version = "0.1.7", -    # buildifier: leave-alone -    deps = [ -        "@raze__futures_core__0_3_17//:futures_core", -        "@raze__pin_project_lite__0_2_7//:pin_project_lite", -        "@raze__tokio__1_11_0//:tokio", -    ], -) - -# Unsupported target "async_send_sync" with type "test" omitted - -# Unsupported target "stream_chain" with type "test" omitted - -# Unsupported target "stream_collect" with type "test" omitted - -# Unsupported target "stream_empty" with type "test" omitted - -# Unsupported target "stream_fuse" with type "test" omitted - -# Unsupported target "stream_iter" with type "test" omitted - -# Unsupported target "stream_merge" with type "test" omitted - -# Unsupported target "stream_once" with type "test" omitted - -# Unsupported target "stream_pending" with type "test" omitted - -# Unsupported target "stream_stream_map" with type "test" omitted - -# Unsupported target "stream_timeout" with type "test" omitted - -# Unsupported target "time_throttle" with type "test" omitted - -# Unsupported target "watch" with type "test" omitted diff --git a/cargo/remote/BUILD.tokio-util-0.6.8.bazel b/cargo/remote/BUILD.tokio-util-0.6.8.bazel index 63a17e8..7f8ee44 100644 --- a/cargo/remote/BUILD.tokio-util-0.6.8.bazel +++ b/cargo/remote/BUILD.tokio-util-0.6.8.bazel @@ -36,6 +36,7 @@ rust_library(      crate_features = [          "codec",          "default", +        "io",      ],      crate_root = "src/lib.rs",      crate_type = "lib", diff --git a/cargo/remote/BUILD.tonic-0.5.2.bazel b/cargo/remote/BUILD.tonic-0.5.2.bazel deleted file mode 100644 index 9d3e41f..0000000 --- a/cargo/remote/BUILD.tonic-0.5.2.bazel +++ /dev/null @@ -1,96 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( -    "@rules_rust//rust:rust.bzl", -    "rust_binary", -    "rust_library", -    "rust_test", -) - -package(default_visibility = [ -    # Public for visibility by "@raze__crate__version//" targets. -    # -    # Prefer access through "//cargo", which limits external -    # visibility to explicit Cargo.toml dependencies. -    "//visibility:public", -]) - -licenses([ -    "notice",  # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "decode" with type "bench" omitted - -rust_library( -    name = "tonic", -    srcs = glob(["**/*.rs"]), -    aliases = { -        "@raze__prost__0_8_0//:prost": "prost1", -    }, -    crate_features = [ -        "async-trait", -        "codegen", -        "default", -        "h2", -        "hyper", -        "hyper-timeout", -        "prost", -        "prost-derive", -        "prost1", -        "tokio", -        "tower", -        "tracing-futures", -        "transport", -    ], -    crate_root = "src/lib.rs", -    crate_type = "lib", -    data = [], -    edition = "2018", -    proc_macro_deps = [ -        "@raze__async_trait__0_1_51//:async_trait", -        "@raze__prost_derive__0_8_0//:prost_derive", -    ], -    rustc_flags = [ -        "--cap-lints=allow", -    ], -    tags = [ -        "cargo-raze", -        "manual", -    ], -    version = "0.5.2", -    # buildifier: leave-alone -    deps = [ -        "@raze__async_stream__0_3_2//:async_stream", -        "@raze__base64__0_13_0//:base64", -        "@raze__bytes__1_1_0//:bytes", -        "@raze__futures_core__0_3_17//:futures_core", -        "@raze__futures_util__0_3_17//:futures_util", -        "@raze__h2__0_3_4//:h2", -        "@raze__http__0_2_4//:http", -        "@raze__http_body__0_4_3//:http_body", -        "@raze__hyper__0_14_12//:hyper", -        "@raze__hyper_timeout__0_4_1//:hyper_timeout", -        "@raze__percent_encoding__2_1_0//:percent_encoding", -        "@raze__pin_project__1_0_8//:pin_project", -        "@raze__prost__0_8_0//:prost", -        "@raze__tokio__1_11_0//:tokio", -        "@raze__tokio_stream__0_1_7//:tokio_stream", -        "@raze__tokio_util__0_6_8//:tokio_util", -        "@raze__tower__0_4_8//:tower", -        "@raze__tower_layer__0_3_1//:tower_layer", -        "@raze__tower_service__0_3_1//:tower_service", -        "@raze__tracing__0_1_26//:tracing", -        "@raze__tracing_futures__0_2_5//:tracing_futures", -    ], -) diff --git a/cargo/remote/BUILD.tonic-build-0.5.2.bazel b/cargo/remote/BUILD.tonic-build-0.5.2.bazel deleted file mode 100644 index d2e17b0..0000000 --- a/cargo/remote/BUILD.tonic-build-0.5.2.bazel +++ /dev/null @@ -1,60 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( -    "@rules_rust//rust:rust.bzl", -    "rust_binary", -    "rust_library", -    "rust_test", -) - -package(default_visibility = [ -    # Public for visibility by "@raze__crate__version//" targets. -    # -    # Prefer access through "//cargo", which limits external -    # visibility to explicit Cargo.toml dependencies. -    "//visibility:public", -]) - -licenses([ -    "notice",  # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( -    name = "tonic_build", -    srcs = glob(["**/*.rs"]), -    crate_features = [ -        "prost", -        "prost-build", -        "transport", -    ], -    crate_root = "src/lib.rs", -    crate_type = "lib", -    data = [], -    edition = "2018", -    rustc_flags = [ -        "--cap-lints=allow", -    ], -    tags = [ -        "cargo-raze", -        "manual", -    ], -    version = "0.5.2", -    # buildifier: leave-alone -    deps = [ -        "@raze__proc_macro2__1_0_29//:proc_macro2", -        "@raze__prost_build__0_8_0//:prost_build", -        "@raze__quote__1_0_9//:quote", -        "@raze__syn__1_0_76//:syn", -    ], -) diff --git a/cargo/remote/BUILD.tower-0.4.8.bazel b/cargo/remote/BUILD.tower-0.4.8.bazel deleted file mode 100644 index 2fa5af3..0000000 --- a/cargo/remote/BUILD.tower-0.4.8.bazel +++ /dev/null @@ -1,110 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( -    "@rules_rust//rust:rust.bzl", -    "rust_binary", -    "rust_library", -    "rust_test", -) - -package(default_visibility = [ -    # Public for visibility by "@raze__crate__version//" targets. -    # -    # Prefer access through "//cargo", which limits external -    # visibility to explicit Cargo.toml dependencies. -    "//visibility:public", -]) - -licenses([ -    "notice",  # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "tower-balance" with type "example" omitted - -rust_library( -    name = "tower", -    srcs = glob(["**/*.rs"]), -    crate_features = [ -        "balance", -        "buffer", -        "default", -        "discover", -        "futures-util", -        "indexmap", -        "limit", -        "load", -        "log", -        "make", -        "rand", -        "ready-cache", -        "slab", -        "timeout", -        "tokio", -        "tokio-stream", -        "tokio-util", -        "tracing", -        "util", -    ], -    crate_root = "src/lib.rs", -    crate_type = "lib", -    data = [], -    edition = "2018", -    rustc_flags = [ -        "--cap-lints=allow", -    ], -    tags = [ -        "cargo-raze", -        "manual", -    ], -    version = "0.4.8", -    # buildifier: leave-alone -    deps = [ -        "@raze__futures_core__0_3_17//:futures_core", -        "@raze__futures_util__0_3_17//:futures_util", -        "@raze__indexmap__1_7_0//:indexmap", -        "@raze__pin_project__1_0_8//:pin_project", -        "@raze__rand__0_8_4//:rand", -        "@raze__slab__0_4_4//:slab", -        "@raze__tokio__1_11_0//:tokio", -        "@raze__tokio_stream__0_1_7//:tokio_stream", -        "@raze__tokio_util__0_6_8//:tokio_util", -        "@raze__tower_layer__0_3_1//:tower_layer", -        "@raze__tower_service__0_3_1//:tower_service", -        "@raze__tracing__0_1_26//:tracing", -    ], -) - -# Unsupported target "balance" with type "test" omitted - -# Unsupported target "buffer" with type "test" omitted - -# Unsupported target "builder" with type "test" omitted - -# Unsupported target "hedge" with type "test" omitted - -# Unsupported target "limit" with type "test" omitted - -# Unsupported target "load_shed" with type "test" omitted - -# Unsupported target "ready_cache" with type "test" omitted - -# Unsupported target "retry" with type "test" omitted - -# Unsupported target "spawn_ready" with type "test" omitted - -# Unsupported target "steer" with type "test" omitted - -# Unsupported target "support" with type "test" omitted - -# Unsupported target "util" with type "test" omitted diff --git a/cargo/remote/BUILD.tracing-0.1.26.bazel b/cargo/remote/BUILD.tracing-0.1.26.bazel index c66b5dc..b9b15f3 100644 --- a/cargo/remote/BUILD.tracing-0.1.26.bazel +++ b/cargo/remote/BUILD.tracing-0.1.26.bazel @@ -40,19 +40,12 @@ rust_library(      aliases = {      },      crate_features = [ -        "attributes", -        "default", -        "log",          "std", -        "tracing-attributes",      ],      crate_root = "src/lib.rs",      crate_type = "lib",      data = [],      edition = "2018", -    proc_macro_deps = [ -        "@raze__tracing_attributes__0_1_15//:tracing_attributes", -    ],      rustc_flags = [          "--cap-lints=allow",      ], @@ -64,7 +57,6 @@ rust_library(      # buildifier: leave-alone      deps = [          "@raze__cfg_if__1_0_0//:cfg_if", -        "@raze__log__0_4_14//:log",          "@raze__pin_project_lite__0_2_7//:pin_project_lite",          "@raze__tracing_core__0_1_19//:tracing_core",      ] + selects.with_or({ diff --git a/cargo/remote/BUILD.tracing-attributes-0.1.15.bazel b/cargo/remote/BUILD.tracing-attributes-0.1.15.bazel deleted file mode 100644 index d0d79ee..0000000 --- a/cargo/remote/BUILD.tracing-attributes-0.1.15.bazel +++ /dev/null @@ -1,74 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( -    "@rules_rust//rust:rust.bzl", -    "rust_binary", -    "rust_library", -    "rust_test", -) - -package(default_visibility = [ -    # Public for visibility by "@raze__crate__version//" targets. -    # -    # Prefer access through "//cargo", which limits external -    # visibility to explicit Cargo.toml dependencies. -    "//visibility:public", -]) - -licenses([ -    "notice",  # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( -    name = "tracing_attributes", -    srcs = glob(["**/*.rs"]), -    crate_features = [ -    ], -    crate_root = "src/lib.rs", -    crate_type = "proc-macro", -    data = [], -    edition = "2018", -    rustc_flags = [ -        "--cap-lints=allow", -    ], -    tags = [ -        "cargo-raze", -        "manual", -    ], -    version = "0.1.15", -    # buildifier: leave-alone -    deps = [ -        "@raze__proc_macro2__1_0_29//:proc_macro2", -        "@raze__quote__1_0_9//:quote", -        "@raze__syn__1_0_76//:syn", -    ], -) - -# Unsupported target "async_fn" with type "test" omitted - -# Unsupported target "destructuring" with type "test" omitted - -# Unsupported target "err" with type "test" omitted - -# Unsupported target "fields" with type "test" omitted - -# Unsupported target "instrument" with type "test" omitted - -# Unsupported target "levels" with type "test" omitted - -# Unsupported target "names" with type "test" omitted - -# Unsupported target "support" with type "test" omitted - -# Unsupported target "targets" with type "test" omitted diff --git a/cargo/remote/BUILD.tracing-futures-0.2.5.bazel b/cargo/remote/BUILD.tracing-futures-0.2.5.bazel deleted file mode 100644 index 066b633..0000000 --- a/cargo/remote/BUILD.tracing-futures-0.2.5.bazel +++ /dev/null @@ -1,63 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( -    "@rules_rust//rust:rust.bzl", -    "rust_binary", -    "rust_library", -    "rust_test", -) - -package(default_visibility = [ -    # Public for visibility by "@raze__crate__version//" targets. -    # -    # Prefer access through "//cargo", which limits external -    # visibility to explicit Cargo.toml dependencies. -    "//visibility:public", -]) - -licenses([ -    "notice",  # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( -    name = "tracing_futures", -    srcs = glob(["**/*.rs"]), -    crate_features = [ -        "default", -        "pin-project", -        "std", -        "std-future", -    ], -    crate_root = "src/lib.rs", -    crate_type = "lib", -    data = [], -    edition = "2018", -    rustc_flags = [ -        "--cap-lints=allow", -    ], -    tags = [ -        "cargo-raze", -        "manual", -    ], -    version = "0.2.5", -    # buildifier: leave-alone -    deps = [ -        "@raze__pin_project__1_0_8//:pin_project", -        "@raze__tracing__0_1_26//:tracing", -    ], -) - -# Unsupported target "std_future" with type "test" omitted - -# Unsupported target "support" with type "test" omitted diff --git a/cargo/remote/BUILD.multimap-0.8.3.bazel b/cargo/remote/BUILD.vcpkg-0.2.15.bazel index b720afa..fd21e4d 100644 --- a/cargo/remote/BUILD.multimap-0.8.3.bazel +++ b/cargo/remote/BUILD.vcpkg-0.2.15.bazel @@ -31,7 +31,7 @@ licenses([  # Generated Targets  rust_library( -    name = "multimap", +    name = "vcpkg",      srcs = glob(["**/*.rs"]),      crate_features = [      ], @@ -46,7 +46,7 @@ rust_library(          "cargo-raze",          "manual",      ], -    version = "0.8.3", +    version = "0.2.15",      # buildifier: leave-alone      deps = [      ], diff --git a/cargo/remote/BUILD.prost-types-0.8.0.bazel b/cargo/remote/BUILD.xxhash-rust-0.8.2.bazel index 97de85a..c76cb22 100644 --- a/cargo/remote/BUILD.prost-types-0.8.0.bazel +++ b/cargo/remote/BUILD.xxhash-rust-0.8.2.bazel @@ -25,15 +25,18 @@ package(default_visibility = [  ])  licenses([ -    "notice",  # Apache-2.0 from expression "Apache-2.0" +    "notice",  # BSL-1.0 from expression "BSL-1.0"  ])  # Generated Targets +# Unsupported target "compare_c" with type "bench" omitted +  rust_library( -    name = "prost_types", +    name = "xxhash_rust",      srcs = glob(["**/*.rs"]),      crate_features = [ +        "xxh32",      ],      crate_root = "src/lib.rs",      crate_type = "lib", @@ -46,10 +49,10 @@ rust_library(          "cargo-raze",          "manual",      ], -    version = "0.8.0", +    version = "0.8.2",      # buildifier: leave-alone      deps = [ -        "@raze__bytes__1_1_0//:bytes", -        "@raze__prost__0_8_0//:prost",      ],  ) + +# Unsupported target "assert_correctness" with type "test" omitted diff --git a/common/BUILD.bazel b/common/BUILD.bazel index d424afe..868f591 100644 --- a/common/BUILD.bazel +++ b/common/BUILD.bazel @@ -1,10 +1,21 @@  load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("//bazel/lib:expand_template.bzl", "expand_template") + +expand_template( +    name = "version_template", +    out = "version.go", +    substitutions = { +        "$VERSION": "0.0.10", +    }, +    template = "version.go.in", +)  go_library(      name = "common",      srcs = [          "logger.go",          "prometheus.go", +        "version.go",      ],      importpath = "github.com/discordnova/nova/common",      visibility = ["//visibility:public"], diff --git a/common/cargo/BUILD.bazel b/common/cargo/BUILD.bazel deleted file mode 100644 index 35f9c72..0000000 --- a/common/cargo/BUILD.bazel +++ /dev/null @@ -1,49 +0,0 @@ -""" -@generated -cargo-raze generated Bazel file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -package(default_visibility = ["//visibility:public"]) - -licenses([ -    "notice",  # See individual crates for specific licenses -]) - -# Aliased targets -alias( -    name = "config", -    actual = "@raze__config__0_11_0//:config", -    tags = [ -        "cargo-raze", -        "manual", -    ], -) - -alias( -    name = "log", -    actual = "@raze__log__0_4_14//:log", -    tags = [ -        "cargo-raze", -        "manual", -    ], -) - -alias( -    name = "pretty_env_logger", -    actual = "@raze__pretty_env_logger__0_4_0//:pretty_env_logger", -    tags = [ -        "cargo-raze", -        "manual", -    ], -) - -alias( -    name = "serde", -    actual = "@raze__serde__1_0_130//:serde", -    tags = [ -        "cargo-raze", -        "manual", -    ], -) diff --git a/common/management/BUILD.bazel b/common/management/BUILD.bazel new file mode 100644 index 0000000..fd2bdeb --- /dev/null +++ b/common/management/BUILD.bazel @@ -0,0 +1,24 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("@rules_proto//proto:defs.bzl", "proto_library") +load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") + +proto_library( +    name = "nova_management_v1alpha_proto", +    srcs = ["nova.management.v1alpha.proto"], +    visibility = ["//visibility:public"], +) + +go_proto_library( +    name = "nova_management_v1alpha_go_proto", +    compilers = ["@io_bazel_rules_go//proto:go_grpc"], +    importpath = "github.com/discordnova/nova/common/management", +    proto = ":nova_management_v1alpha_proto", +    visibility = ["//visibility:public"], +) + +go_library( +    name = "management", +    embed = [":nova_management_v1alpha_go_proto"], +    importpath = "github.com/discordnova/nova/common/management", +    visibility = ["//visibility:public"], +) diff --git a/common/management/nova.management.v1alpha.proto b/common/management/nova.management.v1alpha.proto new file mode 100644 index 0000000..d0d6baf --- /dev/null +++ b/common/management/nova.management.v1alpha.proto @@ -0,0 +1,58 @@ +syntax = "proto3"; +package nova.management.v1alpha; + +message Empty {} + +// Represents the status of a shard +enum ShardStatus { +    DISCONNECTED = 0; +    RUNNING = 1; +    RECONNECTING = 2; +} + +// represents the state of a nova shard +message ShardStatusResponse { +    // Status of the shard in the cluster +     ShardStatus status = 1; +    // Index of the discord shard +     int64 identifier = 2; +    // If the cluster have a node assigned +    string cluster = 3; +    // the websocket latency of the shard +    int64 latency = 4; +} + +message ShardStatusRequest { +    // the id of the shard +     int64 identifier = 1; +} + +// represents the status of a cluster +// (an instance of the gateway which holds multiple shards) +message ClusterStatusResponse { +    // the unique id of the cluster +     string id = 1; +    // the node the cluster is running on +     string node = 2; +    // the average latency of the cluster +    int64 average_latency = 3; +    // list of all the shards on the cluster +    repeated ShardStatusResponse shards = 4; +} + +message ClusterStatusRequest { +     string id = 1;     +} + +// Represents the status of all the nova clusters & shards +message GlobalClusterStatusResponse { +    int64 size = 1; +    repeated ClusterStatusResponse shards = 2; +} + +// used by the cli to interact with the nova manager +service ManagementService { +    rpc GetGlobalClusterStatus (Empty) returns (GlobalClusterStatusResponse); +    rpc GetClusterStatus (ClusterStatusRequest) returns (ClusterStatusResponse); +    rpc GetShardStatus (ShardStatusRequest) returns (ShardStatusResponse); +}
\ No newline at end of file diff --git a/common/management/rpc/BUILD.bazel b/common/management/rpc/BUILD.bazel new file mode 100644 index 0000000..ed06686 --- /dev/null +++ b/common/management/rpc/BUILD.bazel @@ -0,0 +1,25 @@ +load("@rules_proto//proto:defs.bzl", "proto_library") +load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") + +proto_library( +    name = "v1alpha_proto", +    srcs = ["nova.management.rpc.v1alpha.proto"], +    visibility = ["//visibility:public"], +    deps = ["//common/management:nova_management_v1alpha_proto"], +) + +go_proto_library( +    name = "v1alpha_go_proto", +    importpath = "github.com/discordnova/nova/common/management/rpc", +    proto = ":v1alpha_proto", +    visibility = ["//visibility:public"], +    deps = ["//common/management"], +) + +go_library( +    name = "rpc", +    embed = [":v1alpha_go_proto"], +    importpath = "github.com/discordnova/nova/common/management/rpc", +    visibility = ["//visibility:public"], +) diff --git a/common/management/rpc/nova.management.rpc.v1alpha.proto b/common/management/rpc/nova.management.rpc.v1alpha.proto new file mode 100644 index 0000000..1ec0168 --- /dev/null +++ b/common/management/rpc/nova.management.rpc.v1alpha.proto @@ -0,0 +1,5 @@ +syntax = "proto3"; + +import "common/management/nova.management.v1alpha.proto"; +package nova.management.rpc.v1alpha; + diff --git a/common/rust/Cargo.toml b/common/rust/Cargo.toml index ec81c4b..d54eea9 100644 --- a/common/rust/Cargo.toml +++ b/common/rust/Cargo.toml @@ -10,5 +10,10 @@ serde = { version = "1.0.8", features = ["derive"] }  config = "0.11"  hyper = { version = "0.14", features = ["full"] }  tokio = { version = "1", features = ["full"] } -prometheus = "0.12.0" -nats = "0.15.2"
\ No newline at end of file +prometheus = { version = "0.12.0", features = ["process"] } +nats = "0.15.2" +testcontainers = "0.12.0" + +[dependencies.redis] +version = "*" +features = ["cluster", "connection-manager", "tokio-comp"] diff --git a/common/rust/cargo/BUILD.bazel b/common/rust/cargo/BUILD.bazel index f92a2e9..e0e6aa6 100644 --- a/common/rust/cargo/BUILD.bazel +++ b/common/rust/cargo/BUILD.bazel @@ -67,6 +67,15 @@ alias(  )  alias( +    name = "redis", +    actual = "@raze__redis__0_21_2//:redis", +    tags = [ +        "cargo-raze", +        "manual", +    ], +) + +alias(      name = "serde",      actual = "@raze__serde__1_0_130//:serde",      tags = [ @@ -76,6 +85,15 @@ alias(  )  alias( +    name = "testcontainers", +    actual = "@raze__testcontainers__0_12_0//:testcontainers", +    tags = [ +        "cargo-raze", +        "manual", +    ], +) + +alias(      name = "tokio",      actual = "@raze__tokio__1_11_0//:tokio",      tags = [ diff --git a/common/rust/src/config.rs b/common/rust/src/config.rs index c158a21..e4dbade 100644 --- a/common/rust/src/config.rs +++ b/common/rust/src/config.rs @@ -1,10 +1,12 @@  use std::env; -  use config::{Config, ConfigError, Environment, File};  use log::info; -use serde::{Deserialize}; - +use serde::Deserialize; +/// Settings<T> is the base structure for all the nova's component config +/// you can specify a type T and the name of the component. the "config" +/// field will be equals to the key named after the given component name +/// and will be of type T  #[derive(Debug, Deserialize, Clone)]  #[serde(bound(deserialize = "T: Deserialize<'de> + std::default::Default + Clone"))]  pub struct Settings<T> { @@ -12,10 +14,19 @@ pub struct Settings<T> {      pub config: T,      pub monitoring: crate::monitoring::MonitoringConfiguration,      pub nats: crate::nats::NatsConfiguration, +    pub redis: crate::redis::RedisConfiguration,  } -impl<T> Settings<T> where T: Deserialize<'static> + std::default::Default + Clone { +///  +impl<T> Settings<T> +where +    T: Deserialize<'static> + std::default::Default + Clone, +{ +    /// Initializes a new configuration like the other components of nova +    /// And starts the prometheus metrics server if needed.      pub fn new(service_name: &str) -> Result<Settings<T>, ConfigError> { +        pretty_env_logger::init(); +          let mut default = Config::default();          // this file my be shared with all the components          default.merge(File::with_name("config/default"))?; @@ -25,16 +36,20 @@ impl<T> Settings<T> where T: Deserialize<'static> + std::default::Default + Clon          default.merge(File::with_name(&format!("config/{}", mode)).required(false))?;          default.merge(File::with_name("config/local").required(false))?; +        let env = Environment::with_prefix("NOVA").separator("__");          // we can configure each component using environment variables -        default.merge(Environment::with_prefix("NOVA").separator("_"))?; +        default.merge(env)?;          let mut config: Settings<T> = default.clone().try_into().unwrap();          //  try to load the config          config.config = default.get::<T>(&service_name).unwrap(); -        pretty_env_logger::init();          // start the monitoring system if needed          crate::monitoring::start_monitoring(&config.monitoring);          Ok(config)      }  } + +pub fn test_init() { +    pretty_env_logger::init(); +} diff --git a/common/rust/src/error.rs b/common/rust/src/error.rs index b602940..1a24657 100644 --- a/common/rust/src/error.rs +++ b/common/rust/src/error.rs @@ -7,6 +7,12 @@ pub struct NovaError {  impl fmt::Display for NovaError {      fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { -        write!(f, "An error occured wihind the nova system: {}", self.message) // user-facing output +        write!(f, "An error occurred within the nova system: {}", self.message) // user-facing output      }  } + +impl From<&str> for NovaError { +    fn from(message: &str) -> Self { +        NovaError { message: message.to_string() } +    } +}
\ No newline at end of file diff --git a/common/rust/src/lib.rs b/common/rust/src/lib.rs index 943d7cc..f4e27fc 100644 --- a/common/rust/src/lib.rs +++ b/common/rust/src/lib.rs @@ -1,7 +1,16 @@ -/// This crate contains shared code in all the rust projects -/// It contains utilities such as monitoring, logging and more. +/// This crate is all the utilities shared by the nova rust projects +/// It includes loging, config and protocols.  pub mod config;  pub mod monitoring;  pub mod nats;  pub mod payloads; -pub mod error;
\ No newline at end of file +pub mod error; +pub mod redis; + +pub use log as log; +pub use serde as serde; +pub use ::config as config_crate; +pub use prometheus as prometheus; +pub use ::nats as nats_crate; +pub use testcontainers as testcontainers; +pub use ::redis as redis_crate;
\ No newline at end of file diff --git a/common/rust/src/monitoring.rs b/common/rust/src/monitoring.rs index ded1d95..4bff043 100644 --- a/common/rust/src/monitoring.rs +++ b/common/rust/src/monitoring.rs @@ -1,19 +1,19 @@  use hyper::{ -    Response, Body, Request, Server, -    header::{CONTENT_TYPE}, +    header::CONTENT_TYPE,      service::{make_service_fn, service_fn}, +    Body, Request, Response, Server,  }; -use std::net::ToSocketAddrs; +use log::{error, info};  use prometheus::{Encoder, TextEncoder}; -use log::{info,error};  use serde::Deserialize; +use std::net::ToSocketAddrs;  #[derive(Clone, Debug, Deserialize)]  /// Options for the monitoring service  pub struct MonitoringConfiguration { -    enabled: bool, -    address: Option<String>, -    port: Option<i32>, +    pub enabled: bool, +    pub address: Option<String>, +    pub port: Option<i32>,  }  /// Handler for the hyper http server @@ -37,17 +37,18 @@ pub fn start_monitoring(configuration: &MonitoringConfiguration) {      let config = configuration.clone();      tokio::task::spawn(async move {          if config.enabled { -            let address = format!("{}:{}", -                config.address.expect("a listening address must be specified for the metrics server"), -                config.port.expect("a listening port must be specified for the metrics server") +            let address = format!( +                "{}:{}", +                config +                    .address +                    .expect("a listening address must be specified for the metrics server"), +                config +                    .port +                    .expect("a listening port must be specified for the metrics server")              );              info!("Starting monitoring server on {}", address); -             -            let listen_address = address -                .to_socket_addrs() -                .unwrap() -                .next() -                .unwrap(); + +            let listen_address = address.to_socket_addrs().unwrap().next().unwrap();              let server = Server::bind(&listen_address).serve(make_service_fn(|_| async {                  Ok::<_, hyper::Error>(service_fn(serve_metrics))              })); @@ -57,4 +58,4 @@ pub fn start_monitoring(configuration: &MonitoringConfiguration) {              }          }      }); -}
\ No newline at end of file +} diff --git a/common/rust/src/nats.rs b/common/rust/src/nats.rs index 59b480c..c61aa4c 100644 --- a/common/rust/src/nats.rs +++ b/common/rust/src/nats.rs @@ -1,34 +1,34 @@ -use nats::{Options, Connection}; +use nats::{Connection, Options};  use serde::Deserialize;  #[derive(Clone, Debug, Deserialize)] -struct NatsConfigurationClientCert { -    cert: String, -    key: String +pub struct NatsConfigurationClientCert { +    pub cert: String, +    pub key: String,  }  #[derive(Clone, Debug, Deserialize)] -struct NatsConfigurationTls { -    mtu: Option<usize>, +pub struct NatsConfigurationTls { +    pub mtu: Option<usize>,  }  #[derive(Clone, Debug, Deserialize)]  pub struct NatsConfiguration { -    client_cert: Option<NatsConfigurationClientCert>, -    root_cert: Option<Vec<String>>, -    jetstream_api_prefix: Option<String>, -    max_reconnects: Option<usize>, -    reconnect_buffer_size: Option<usize>, -    tls: Option<NatsConfigurationTls>, -    client_name: Option<String>, -    tls_required: Option<bool>, -    host: String, +    pub client_cert: Option<NatsConfigurationClientCert>, +    pub root_cert: Option<Vec<String>>, +    pub jetstream_api_prefix: Option<String>, +    pub max_reconnects: Option<usize>, +    pub reconnect_buffer_size: Option<usize>, +    pub tls: Option<NatsConfigurationTls>, +    pub client_name: Option<String>, +    pub tls_required: Option<bool>, +    pub host: String,  } -///  +// Allows the configuration to directly create a nats connection  impl Into<Connection> for NatsConfiguration {      fn into(self) -> Connection {          let mut options = Options::new(); -         +          if let Some(client_cert) = self.client_cert {              options = options.client_cert(client_cert.cert, client_cert.key);          } @@ -49,7 +49,6 @@ impl Into<Connection> for NatsConfiguration {          options = options.tls_required(self.tls_required.unwrap_or(false));          options = options.with_name(&self.client_name.unwrap_or("Nova".to_string())); -          if let Some(tls) = self.tls {              let mut config = nats::rustls::ClientConfig::new();              config.set_mtu(&tls.mtu); diff --git a/common/rust/src/payloads.rs b/common/rust/src/payloads.rs index 6eb35c8..c97ac1d 100644 --- a/common/rust/src/payloads.rs +++ b/common/rust/src/payloads.rs @@ -1,15 +1,24 @@  use serde::{Deserialize, Serialize}; +use std::fmt::Debug; -/// Payload send to the nova cache queues -#[derive(Serialize, Deserialize, Debug, Clone)] -#[serde(bound(deserialize = "T: Deserialize<'de> + std::default::Default + Clone"))] +/// Data structure sent to the cache component +/// by the gateway & webhook. +#[derive(Serialize, Deserialize, Debug)] +#[serde(bound(deserialize = "T: Deserialize<'de> + Debug"))]  pub struct CachePayload<T> { + +    #[serde(rename = "tr")]      pub tracing: Tracing, -    pub data: T + +    #[serde(rename = "d")] +    pub data: T, + +    #[serde(rename = "o")] +    pub operation: String,  } -#[derive(Serialize, Deserialize, Debug, Clone)] +#[derive(Serialize, Deserialize, Debug)]  pub struct Tracing {      pub node_id: String,      pub span: Option<String> -}
\ No newline at end of file +} diff --git a/common/rust/src/redis.rs b/common/rust/src/redis.rs new file mode 100644 index 0000000..a196f8d --- /dev/null +++ b/common/rust/src/redis.rs @@ -0,0 +1,15 @@ +use redis::Client; +use serde::Deserialize; + + +#[derive(Clone, Debug, Deserialize)] +pub struct RedisConfiguration { +    pub url: String, +} + +// Allows the configuration to directly create a nats connection +impl Into<Client> for RedisConfiguration { +    fn into(self) -> Client { +        redis::Client::open(self.url).unwrap() +    } +} diff --git a/common/version.go.in b/common/version.go.in new file mode 100644 index 0000000..c182605 --- /dev/null +++ b/common/version.go.in @@ -0,0 +1,8 @@ +package common + +// This is a file that will be replaced +// by the `version_template` target in bazel + +const ( +	VERSION = "$VERSION" +) diff --git a/config/default.json b/config/default.json new file mode 100644 index 0000000..51a8729 --- /dev/null +++ b/config/default.json @@ -0,0 +1,32 @@ +{ +    "monitoring": { +        "enabled": true, +        "address": "0.0.0.0", +        "port": 5001 +    }, +    "nats": { +        "host": "localhost" +    }, +    "redis": { +        "url": "redis://localhost" +    }, +    "rest": { +        "server": { +            "port": 8000, +            "address": "0.0.0.0" +        }, +        "discord": { +            "token": "<your token>" +        } +    }, +    "webhook": { +        "server": { +            "port": 8080, +            "address": "0.0.0.0" +        }, +        "discord": { +            "public_key": "", +            "client_id": 123 +        } +    } +}
\ No newline at end of file diff --git a/bazel/deps.bzl b/deps.bzl index cc5dbd0..d7c3b41 100644 --- a/bazel/deps.bzl +++ b/deps.bzl @@ -38,6 +38,12 @@ def go_dependencies():          version = "v0.0.0-20161002113705-648efa622239",      )      go_repository( +        name = "com_github_antihax_optional", +        importpath = "github.com/antihax/optional", +        sum = "h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg=", +        version = "v1.0.0", +    ) +    go_repository(          name = "com_github_apache_thrift",          importpath = "github.com/apache/thrift",          sum = "h1:5hryIiq9gtn+MiLVn0wP37kb/uTeRZgN08WoCsAhIhI=", @@ -104,6 +110,20 @@ def go_dependencies():          version = "v0.1.0",      )      go_repository( +        name = "com_github_boltdb_bolt", +        importpath = "github.com/boltdb/bolt", +        sum = "h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4=", +        version = "v1.3.1", +    ) + +    go_repository( +        name = "com_github_buraksezer_consistent", +        importpath = "github.com/buraksezer/consistent", +        sum = "h1:Zfs6bX62wbP3QlbPGKUhqDw7SmNkOzY5bHZIYXYpR5g=", +        version = "v0.9.0", +    ) + +    go_repository(          name = "com_github_burntsushi_toml",          importpath = "github.com/BurntSushi/toml",          sum = "h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=", @@ -128,12 +148,32 @@ def go_dependencies():          version = "v0.2.1",      )      go_repository( +        name = "com_github_cespare_xxhash", +        importpath = "github.com/cespare/xxhash", +        sum = "h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=", +        version = "v1.1.0", +    ) + +    go_repository(          name = "com_github_cespare_xxhash_v2",          importpath = "github.com/cespare/xxhash/v2",          sum = "h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=",          version = "v2.1.1",      )      go_repository( +        name = "com_github_circonus_labs_circonus_gometrics", +        importpath = "github.com/circonus-labs/circonus-gometrics", +        sum = "h1:C29Ae4G5GtYyYMm1aztcyj/J5ckgJm2zwdDajFbx1NY=", +        version = "v2.3.1+incompatible", +    ) +    go_repository( +        name = "com_github_circonus_labs_circonusllhist", +        importpath = "github.com/circonus-labs/circonusllhist", +        sum = "h1:TJH+oke8D16535+jHExHj4nQvzlZrj7ug5D7I/orNUA=", +        version = "v0.1.3", +    ) + +    go_repository(          name = "com_github_clbanning_x2j",          importpath = "github.com/clbanning/x2j",          sum = "h1:EdRZT3IeKQmfCSrgo8SZ8V3MEnskuJP0wCYNpe+aiXo=", @@ -146,6 +186,19 @@ def go_dependencies():          version = "v0.3.4",      )      go_repository( +        name = "com_github_cncf_udpa_go", +        importpath = "github.com/cncf/udpa/go", +        sum = "h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M=", +        version = "v0.0.0-20201120205902-5459f2c99403", +    ) +    go_repository( +        name = "com_github_cncf_xds_go", +        importpath = "github.com/cncf/xds/go", +        sum = "h1:CevA8fI91PAnP8vpnXuB8ZYAZ5wqY86nAbxfgK8tWO4=", +        version = "v0.0.0-20210805033703-aa0b78936158", +    ) + +    go_repository(          name = "com_github_cockroachdb_datadriven",          importpath = "github.com/cockroachdb/datadriven",          sum = "h1:OaNxuTZr7kxeODyLWsRMC+OD03aFUH+mW6r2d+MWa5Y=", @@ -194,6 +247,13 @@ def go_dependencies():          version = "v1.1.9",      )      go_repository( +        name = "com_github_datadog_datadog_go", +        importpath = "github.com/DataDog/datadog-go", +        sum = "h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4=", +        version = "v3.2.0+incompatible", +    ) + +    go_repository(          name = "com_github_davecgh_go_spew",          importpath = "github.com/davecgh/go-spew",          sum = "h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=", @@ -206,6 +266,13 @@ def go_dependencies():          version = "v3.2.0+incompatible",      )      go_repository( +        name = "com_github_dgryski_go_rendezvous", +        importpath = "github.com/dgryski/go-rendezvous", +        sum = "h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=", +        version = "v0.0.0-20200823014737-9f7001d12a5f", +    ) + +    go_repository(          name = "com_github_dustin_go_humanize",          importpath = "github.com/dustin/go-humanize",          sum = "h1:qk/FSDDxo05wdJH28W+p5yivv7LuLYLRXPPD8KQCtZs=", @@ -244,8 +311,8 @@ def go_dependencies():      go_repository(          name = "com_github_envoyproxy_go_control_plane",          importpath = "github.com/envoyproxy/go-control-plane", -        sum = "h1:4cmBvAEBNJaGARUEs3/suWRyfyBfhf7I60WBZq+bv2w=", -        version = "v0.9.1-0.20191026205805-5f8ba28d4473", +        sum = "h1:fP+fF0up6oPY49OrjPrhIJ8yQfdIM85NXMLkMg1EXVs=", +        version = "v0.9.10-0.20210907150352-cf90f659a021",      )      go_repository(          name = "com_github_envoyproxy_protoc_gen_validate", @@ -326,12 +393,43 @@ def go_dependencies():          version = "v0.10.0",      )      go_repository( +        name = "com_github_go_kit_log", +        importpath = "github.com/go-kit/log", +        sum = "h1:DGJh0Sm43HbOeYDNnVZFl8BvcYVvjD5bqYJvp0REbwQ=", +        version = "v0.1.0", +    ) +    go_repository(          name = "com_github_go_logfmt_logfmt",          importpath = "github.com/go-logfmt/logfmt",          sum = "h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4=",          version = "v0.5.0",      )      go_repository( +        name = "com_github_go_redis_redis", +        importpath = "github.com/go-redis/redis", +        sum = "h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg=", +        version = "v6.15.9+incompatible", +    ) +    go_repository( +        name = "com_github_go_redis_redis_v7", +        importpath = "github.com/go-redis/redis/v7", +        sum = "h1:7obg6wUoj05T0EpY0o8B59S9w5yeMWql7sw2kwNW1x4=", +        version = "v7.4.0", +    ) +    go_repository( +        name = "com_github_go_redis_redis_v8", +        importpath = "github.com/go-redis/redis/v8", +        sum = "h1:O7R8kajfkEg2BgSn+blItMi0j3T83ps5hwv86HtlSN4=", +        version = "v8.1.1", +    ) +    go_repository( +        name = "com_github_go_redsync_redsync_v4", +        importpath = "github.com/go-redsync/redsync/v4", +        sum = "h1:Z0AaOpoLvzfZwLK+3uCDHcTxOXck2juzumu1EPJwCUI=", +        version = "v4.4.1", +    ) + +    go_repository(          name = "com_github_go_sql_driver_mysql",          importpath = "github.com/go-sql-driver/mysql",          sum = "h1:7LxgVwFb2hIQtMm87NdgAVfXjnt4OePseqT1tKx+opk=", @@ -392,6 +490,13 @@ def go_dependencies():          version = "v0.0.0-20180518054509-2e65f85255db",      )      go_repository( +        name = "com_github_gomodule_redigo", +        importpath = "github.com/gomodule/redigo", +        sum = "h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k=", +        version = "v1.8.2", +    ) + +    go_repository(          name = "com_github_google_btree",          importpath = "github.com/google/btree",          sum = "h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo=", @@ -418,8 +523,8 @@ def go_dependencies():      go_repository(          name = "com_github_google_uuid",          importpath = "github.com/google/uuid", -        sum = "h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA=", -        version = "v1.0.0", +        sum = "h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=", +        version = "v1.1.2",      )      go_repository(          name = "com_github_gopherjs_gopherjs", @@ -460,8 +565,8 @@ def go_dependencies():      go_repository(          name = "com_github_grpc_ecosystem_grpc_gateway",          importpath = "github.com/grpc-ecosystem/grpc-gateway", -        sum = "h1:UImYN5qQ8tuGpGE16ZmjvcTtTw24zw1QAp/SlnNrZhI=", -        version = "v1.9.5", +        sum = "h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=", +        version = "v1.16.0",      )      go_repository(          name = "com_github_hashicorp_consul_api", @@ -488,6 +593,13 @@ def go_dependencies():          version = "v0.5.1",      )      go_repository( +        name = "com_github_hashicorp_go_hclog", +        importpath = "github.com/hashicorp/go-hclog", +        sum = "h1:K4ev2ib4LdQETX5cSZBG0DVLk1jwGqSPXBjdah3veNs=", +        version = "v0.16.2", +    ) + +    go_repository(          name = "com_github_hashicorp_go_immutable_radix",          importpath = "github.com/hashicorp/go-immutable-radix",          sum = "h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0=", @@ -512,6 +624,13 @@ def go_dependencies():          version = "v0.0.1",      )      go_repository( +        name = "com_github_hashicorp_go_retryablehttp", +        importpath = "github.com/hashicorp/go-retryablehttp", +        sum = "h1:QlWt0KvWT0lq8MFppF9tsJGF+ynG7ztc2KIPhzRGk7s=", +        version = "v0.5.3", +    ) + +    go_repository(          name = "com_github_hashicorp_go_rootcerts",          importpath = "github.com/hashicorp/go-rootcerts",          sum = "h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI=", @@ -566,6 +685,19 @@ def go_dependencies():          version = "v0.1.3",      )      go_repository( +        name = "com_github_hashicorp_raft", +        importpath = "github.com/hashicorp/raft", +        sum = "h1:zDT8ke8y2aP4wf9zPTB2uSIeavJ3Hx/ceY4jxI2JxuY=", +        version = "v1.3.1", +    ) +    go_repository( +        name = "com_github_hashicorp_raft_boltdb", +        importpath = "github.com/hashicorp/raft-boltdb", +        sum = "h1:EfDtu7qY4bD9hNY9sIryn1L/Ycvo+/WPEFT2Crwdclg=", +        version = "v0.0.0-20210422161416-485fa74b0b01", +    ) + +    go_repository(          name = "com_github_hashicorp_serf",          importpath = "github.com/hashicorp/serf",          sum = "h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0=", @@ -614,6 +746,13 @@ def go_dependencies():          version = "v1.5.0",      )      go_repository( +        name = "com_github_jille_raft_grpc_transport", +        importpath = "github.com/Jille/raft-grpc-transport", +        sum = "h1:W/YSPz8IsirEyomjKmDog5Xk71o9+l4KhyMEX2TsgSs=", +        version = "v1.2.0", +    ) + +    go_repository(          name = "com_github_jmespath_go_jmespath",          importpath = "github.com/jmespath/go-jmespath",          sum = "h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=", @@ -704,6 +843,19 @@ def go_dependencies():          version = "v0.2.0",      )      go_repository( +        name = "com_github_labstack_echo", +        importpath = "github.com/labstack/echo", +        sum = "h1:pGRcYk231ExFAyoAjAfD85kQzRJCRI8bbnE7CX5OEgg=", +        version = "v3.3.10+incompatible", +    ) +    go_repository( +        name = "com_github_labstack_gommon", +        importpath = "github.com/labstack/gommon", +        sum = "h1:JEeO0bvc78PKdyHxloTKiF8BD5iGrH8T6MSeGvSgob0=", +        version = "v0.3.0", +    ) + +    go_repository(          name = "com_github_lightstep_lightstep_tracer_common_golang_gogo",          importpath = "github.com/lightstep/lightstep-tracer-common/golang/gogo",          sum = "h1:143Bb8f8DuGWck/xpNUOckBVYfFbBTnLevfRZ1aVVqo=", @@ -722,6 +874,19 @@ def go_dependencies():          version = "v0.0.13",      )      go_repository( +        name = "com_github_matoous_go_nanoid", +        importpath = "github.com/matoous/go-nanoid", +        sum = "h1:VRorl6uCngneC4oUQqOYtO3S0H5QKFtKuKycFG3euek=", +        version = "v1.5.0", +    ) +    go_repository( +        name = "com_github_matoous_go_nanoid_v2", +        importpath = "github.com/matoous/go-nanoid/v2", +        sum = "h1:d19kur2QuLeHmJBkvYkFdhFBzLoo1XVm2GgTpL+9Tj0=", +        version = "v2.0.0", +    ) + +    go_repository(          name = "com_github_matryer_is",          importpath = "github.com/matryer/is",          sum = "h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A=", @@ -854,6 +1019,13 @@ def go_dependencies():          version = "v0.0.0-20200227124842-a10e7caefd8e",      )      go_repository( +        name = "com_github_nxadm_tail", +        importpath = "github.com/nxadm/tail", +        sum = "h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=", +        version = "v1.4.4", +    ) + +    go_repository(          name = "com_github_oklog_oklog",          importpath = "github.com/oklog/oklog",          sum = "h1:wVfs8F+in6nTBMkA7CbRw+zZMIB7nNM825cM1wuzoTk=", @@ -872,6 +1044,13 @@ def go_dependencies():          version = "v0.0.0-20170122224234-a0225b3f23b5",      )      go_repository( +        name = "com_github_oneofone_xxhash", +        importpath = "github.com/OneOfOne/xxhash", +        sum = "h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=", +        version = "v1.2.2", +    ) + +    go_repository(          name = "com_github_onsi_ginkgo",          importpath = "github.com/onsi/ginkgo",          sum = "h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs=", @@ -1012,8 +1191,8 @@ def go_dependencies():      go_repository(          name = "com_github_rogpeppe_fastuuid",          importpath = "github.com/rogpeppe/fastuuid", -        sum = "h1:gu+uRPtBe88sKxUCEXRoeCvVG90TJmwhiqRpvdhQFng=", -        version = "v0.0.0-20150106093220-6724a57986af", +        sum = "h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s=", +        version = "v1.2.0",      )      go_repository(          name = "com_github_rogpeppe_go_internal", @@ -1112,6 +1291,13 @@ def go_dependencies():          version = "v0.4.1",      )      go_repository( +        name = "com_github_spaolacci_murmur3", +        importpath = "github.com/spaolacci/murmur3", +        sum = "h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=", +        version = "v0.0.0-20180118202830-f09979ecbc72", +    ) + +    go_repository(          name = "com_github_spf13_cobra",          importpath = "github.com/spf13/cobra",          sum = "h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8=", @@ -1148,12 +1334,26 @@ def go_dependencies():          version = "v1.7.0",      )      go_repository( +        name = "com_github_stvp_tempredis", +        importpath = "github.com/stvp/tempredis", +        sum = "h1:QVqDTf3h2WHt08YuiTGPZLls0Wq99X9bWd0Q5ZSBesM=", +        version = "v0.0.0-20181119212430-b82af8480203", +    ) + +    go_repository(          name = "com_github_tmc_grpc_websocket_proxy",          importpath = "github.com/tmc/grpc-websocket-proxy",          sum = "h1:ndzgwNDnKIqyCvHTXaCqh9KlOWKvBry6nuXMJmonVsE=",          version = "v0.0.0-20170815181823-89b8d40f7ca8",      )      go_repository( +        name = "com_github_tv42_httpunix", +        importpath = "github.com/tv42/httpunix", +        sum = "h1:G3dpKMzFDjgEh2q1Z7zUUtKa8ViPtH+ocF0bE0g00O8=", +        version = "v0.0.0-20150427012821-b75d8614f926", +    ) + +    go_repository(          name = "com_github_twinproduction_go_color",          importpath = "github.com/TwinProduction/go-color",          sum = "h1:8n59tqmLmt8jyRsY44RPy2ixPDDw0FcVoAhlYeyz3Jw=", @@ -1166,6 +1366,19 @@ def go_dependencies():          version = "v1.22.1",      )      go_repository( +        name = "com_github_valyala_bytebufferpool", +        importpath = "github.com/valyala/bytebufferpool", +        sum = "h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=", +        version = "v1.0.0", +    ) +    go_repository( +        name = "com_github_valyala_fasttemplate", +        importpath = "github.com/valyala/fasttemplate", +        sum = "h1:tY9CJiPnMXf1ERmG2EyK7gNUd+c6RKGD0IfU8WdUSz8=", +        version = "v1.0.1", +    ) + +    go_repository(          name = "com_github_vividcortex_gohistogram",          importpath = "github.com/VividCortex/gohistogram",          sum = "h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE=", @@ -1280,6 +1493,24 @@ def go_dependencies():          version = "v0.0.0-20191023171146-3cf2f69b5738",      )      go_repository( +        name = "io_etcd_go_etcd_api_v3", +        importpath = "go.etcd.io/etcd/api/v3", +        sum = "h1:GsV3S+OfZEOCNXdtNkBSR7kgLobAa/SO6tCxRa0GAYw=", +        version = "v3.5.0", +    ) +    go_repository( +        name = "io_etcd_go_etcd_client_pkg_v3", +        importpath = "go.etcd.io/etcd/client/pkg/v3", +        sum = "h1:2aQv6F436YnN7I4VbI8PPYrBhu+SmrTaADcf8Mi/6PU=", +        version = "v3.5.0", +    ) +    go_repository( +        name = "io_etcd_go_etcd_client_v3", +        importpath = "go.etcd.io/etcd/client/v3", +        sum = "h1:62Eh0XOro+rDwkrypAGDfgmNh5Joq+z+W9HZdlXMzek=", +        version = "v3.5.0", +    ) +    go_repository(          name = "io_k8s_sigs_yaml",          importpath = "sigs.k8s.io/yaml",          sum = "h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs=", @@ -1292,6 +1523,19 @@ def go_dependencies():          version = "v0.22.2",      )      go_repository( +        name = "io_opentelemetry_go_otel", +        importpath = "go.opentelemetry.io/otel", +        sum = "h1:IN2tzQa9Gc4ZVKnTaMbPVcHjvzOdg5n9QfnmlqiET7E=", +        version = "v0.11.0", +    ) +    go_repository( +        name = "io_opentelemetry_go_proto_otlp", +        importpath = "go.opentelemetry.io/proto/otlp", +        sum = "h1:rwOQPCuKAKmwGKq2aVNnYIibI6wnV7EvzgfTCzcdGg8=", +        version = "v0.7.0", +    ) + +    go_repository(          name = "org_golang_google_api",          importpath = "google.golang.org/api",          sum = "h1:oJra/lMfmtm13/rgY/8i3MzjFWYXvQIAKjQ3HqofMk8=", @@ -1306,20 +1550,21 @@ def go_dependencies():      go_repository(          name = "org_golang_google_genproto",          importpath = "google.golang.org/genproto", -        sum = "h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE=", -        version = "v0.0.0-20190819201941-24fa4b261c55", +        sum = "h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=", +        version = "v0.0.0-20200526211855-cb27e3aa2013",      )      go_repository(          name = "org_golang_google_grpc",          importpath = "google.golang.org/grpc", -        sum = "h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg=", -        version = "v1.26.0", +        sum = "h1:f+PlOh7QV4iIJkPrx5NQ7qaNGFQ3OTse67yaDHfju4E=", +        version = "v1.41.0",      ) +      go_repository(          name = "org_golang_google_protobuf",          importpath = "google.golang.org/protobuf", -        sum = "h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=", -        version = "v1.27.1", +        sum = "h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk=", +        version = "v1.26.0",      )      go_repository(          name = "org_golang_x_crypto", @@ -1354,8 +1599,8 @@ def go_dependencies():      go_repository(          name = "org_golang_x_oauth2",          importpath = "golang.org/x/oauth2", -        sum = "h1:Wo7BWFiOk0QRFMLYMqJGFMd9CgUAcGx7V+qEg/h5IBI=", -        version = "v0.0.0-20190226205417-e64efc72b421", +        sum = "h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw=", +        version = "v0.0.0-20200107190931-bf48bf16ab8d",      )      go_repository(          name = "org_golang_x_sync", @@ -1366,8 +1611,8 @@ def go_dependencies():      go_repository(          name = "org_golang_x_sys",          importpath = "golang.org/x/sys", -        sum = "h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE=", -        version = "v0.0.0-20210510120138-977fb7262007", +        sum = "h1:RX8C8PRZc2hTIod4ds8ij+/4RQX3AqhYj3uOHmyaz4E=", +        version = "v0.0.0-20210502180810-71e4cd670f79",      )      go_repository(          name = "org_golang_x_term", @@ -1393,6 +1638,7 @@ def go_dependencies():          sum = "h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=",          version = "v0.1.0",      ) +      go_repository(          name = "org_golang_x_xerrors",          importpath = "golang.org/x/xerrors", diff --git a/docker-compose.yaml b/docker-compose.yaml index 790c5b0..3e8f924 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -2,9 +2,12 @@ version: "3.3"  services:    nats:        image: 'nats' -      expose: -        - "4222"        ports:          - "8222:8222"          - "4222:4222" -      hostname: nats-server
\ No newline at end of file +      hostname: nats-server +  redis: +      image: 'redis' +      ports: +        - "6379:6379" +      hostname: redis diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..b2d6de3 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index fcc815a..0000000 --- a/docs/README.md +++ /dev/null @@ -1 +0,0 @@ -# Nova documentation
\ No newline at end of file diff --git a/docs/babel.config.js b/docs/babel.config.js new file mode 100644 index 0000000..e00595d --- /dev/null +++ b/docs/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { +  presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; diff --git a/docs/common.md b/docs/common.md deleted file mode 100644 index 3dce3ac..0000000 --- a/docs/common.md +++ /dev/null @@ -1,6 +0,0 @@ -# Common packages - -Nova exposes common packages for all the different projects in the mono-repo.  -Since Nova uses two different languages, it has two different common libraries, -one built in rust in [the common/rust](../common/rust) directory and one in Go -in [the common/](../common) directory.
\ No newline at end of file diff --git a/docs/components/ratelimiter.md b/docs/components/ratelimiter.md deleted file mode 100644 index e69de29..0000000 --- a/docs/components/ratelimiter.md +++ /dev/null diff --git a/docs/components/webhook.md b/docs/components/webhook.md deleted file mode 100644 index 76361ef..0000000 --- a/docs/components/webhook.md +++ /dev/null @@ -1,8 +0,0 @@ -# Webhook - -> TD;TR The webhook component is an implementation of the discord interaction webhooks; You can either use the Gateway or the Webhooks. The webhooks __require__ an external https endpoint to work. - -The webhook source code is located in the [webhook](../../webhook) folder and is implemented in Rust. It's a simple http web server which implements the webhook signature verification and deserialization. Like the gateway, the messages are redirected using the [relaying system](../common#relaying_trait). - -The signature verification is done using libsodium via the libsodium-sys trait. -Subsequently, it uses code marked as "unsafe" in rust. It's built into the binary statically. Any route can be used to receive webhook messages.
\ No newline at end of file diff --git a/docs/docs/LICENSE.md b/docs/docs/LICENSE.md new file mode 100644 index 0000000..825dd1a --- /dev/null +++ b/docs/docs/LICENSE.md @@ -0,0 +1,201 @@ +                                 Apache License +                           Version 2.0, January 2004 +                        http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +   "License" shall mean the terms and conditions for use, reproduction, +   and distribution as defined by Sections 1 through 9 of this document. + +   "Licensor" shall mean the copyright owner or entity authorized by +   the copyright owner that is granting the License. + +   "Legal Entity" shall mean the union of the acting entity and all +   other entities that control, are controlled by, or are under common +   control with that entity. For the purposes of this definition, +   "control" means (i) the power, direct or indirect, to cause the +   direction or management of such entity, whether by contract or +   otherwise, or (ii) ownership of fifty percent (50%) or more of the +   outstanding shares, or (iii) beneficial ownership of such entity. + +   "You" (or "Your") shall mean an individual or Legal Entity +   exercising permissions granted by this License. + +   "Source" form shall mean the preferred form for making modifications, +   including but not limited to software source code, documentation +   source, and configuration files. + +   "Object" form shall mean any form resulting from mechanical +   transformation or translation of a Source form, including but +   not limited to compiled object code, generated documentation, +   and conversions to other media types. + +   "Work" shall mean the work of authorship, whether in Source or +   Object form, made available under the License, as indicated by a +   copyright notice that is included in or attached to the work +   (an example is provided in the Appendix below). + +   "Derivative Works" shall mean any work, whether in Source or Object +   form, that is based on (or derived from) the Work and for which the +   editorial revisions, annotations, elaborations, or other modifications +   represent, as a whole, an original work of authorship. For the purposes +   of this License, Derivative Works shall not include works that remain +   separable from, or merely link (or bind by name) to the interfaces of, +   the Work and Derivative Works thereof. + +   "Contribution" shall mean any work of authorship, including +   the original version of the Work and any modifications or additions +   to that Work or Derivative Works thereof, that is intentionally +   submitted to Licensor for inclusion in the Work by the copyright owner +   or by an individual or Legal Entity authorized to submit on behalf of +   the copyright owner. For the purposes of this definition, "submitted" +   means any form of electronic, verbal, or written communication sent +   to the Licensor or its representatives, including but not limited to +   communication on electronic mailing lists, source code control systems, +   and issue tracking systems that are managed by, or on behalf of, the +   Licensor for the purpose of discussing and improving the Work, but +   excluding communication that is conspicuously marked or otherwise +   designated in writing by the copyright owner as "Not a Contribution." + +   "Contributor" shall mean Licensor and any individual or Legal Entity +   on behalf of whom a Contribution has been received by Licensor and +   subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of +   this License, each Contributor hereby grants to You a perpetual, +   worldwide, non-exclusive, no-charge, royalty-free, irrevocable +   copyright license to reproduce, prepare Derivative Works of, +   publicly display, publicly perform, sublicense, and distribute the +   Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of +   this License, each Contributor hereby grants to You a perpetual, +   worldwide, non-exclusive, no-charge, royalty-free, irrevocable +   (except as stated in this section) patent license to make, have made, +   use, offer to sell, sell, import, and otherwise transfer the Work, +   where such license applies only to those patent claims licensable +   by such Contributor that are necessarily infringed by their +   Contribution(s) alone or by combination of their Contribution(s) +   with the Work to which such Contribution(s) was submitted. If You +   institute patent litigation against any entity (including a +   cross-claim or counterclaim in a lawsuit) alleging that the Work +   or a Contribution incorporated within the Work constitutes direct +   or contributory patent infringement, then any patent licenses +   granted to You under this License for that Work shall terminate +   as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the +   Work or Derivative Works thereof in any medium, with or without +   modifications, and in Source or Object form, provided that You +   meet the following conditions: + +   (a) You must give any other recipients of the Work or +   Derivative Works a copy of this License; and + +   (b) You must cause any modified files to carry prominent notices +   stating that You changed the files; and + +   (c) You must retain, in the Source form of any Derivative Works +   that You distribute, all copyright, patent, trademark, and +   attribution notices from the Source form of the Work, +   excluding those notices that do not pertain to any part of +   the Derivative Works; and + +   (d) If the Work includes a "NOTICE" text file as part of its +   distribution, then any Derivative Works that You distribute must +   include a readable copy of the attribution notices contained +   within such NOTICE file, excluding those notices that do not +   pertain to any part of the Derivative Works, in at least one +   of the following places: within a NOTICE text file distributed +   as part of the Derivative Works; within the Source form or +   documentation, if provided along with the Derivative Works; or, +   within a display generated by the Derivative Works, if and +   wherever such third-party notices normally appear. The contents +   of the NOTICE file are for informational purposes only and +   do not modify the License. You may add Your own attribution +   notices within Derivative Works that You distribute, alongside +   or as an addendum to the NOTICE text from the Work, provided +   that such additional attribution notices cannot be construed +   as modifying the License. + +   You may add Your own copyright statement to Your modifications and +   may provide additional or different license terms and conditions +   for use, reproduction, or distribution of Your modifications, or +   for any such Derivative Works as a whole, provided Your use, +   reproduction, and distribution of the Work otherwise complies with +   the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, +   any Contribution intentionally submitted for inclusion in the Work +   by You to the Licensor shall be under the terms and conditions of +   this License, without any additional terms or conditions. +   Notwithstanding the above, nothing herein shall supersede or modify +   the terms of any separate license agreement you may have executed +   with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade +   names, trademarks, service marks, or product names of the Licensor, +   except as required for reasonable and customary use in describing the +   origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or +   agreed to in writing, Licensor provides the Work (and each +   Contributor provides its Contributions) on an "AS IS" BASIS, +   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +   implied, including, without limitation, any warranties or conditions +   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +   PARTICULAR PURPOSE. You are solely responsible for determining the +   appropriateness of using or redistributing the Work and assume any +   risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, +   whether in tort (including negligence), contract, or otherwise, +   unless required by applicable law (such as deliberate and grossly +   negligent acts) or agreed to in writing, shall any Contributor be +   liable to You for damages, including any direct, indirect, special, +   incidental, or consequential damages of any character arising as a +   result of this License or out of the use or inability to use the +   Work (including but not limited to damages for loss of goodwill, +   work stoppage, computer failure or malfunction, or any and all +   other commercial damages or losses), even if such Contributor +   has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing +   the Work or Derivative Works thereof, You may choose to offer, +   and charge a fee for, acceptance of support, warranty, indemnity, +   or other liability obligations and/or rights consistent with this +   License. However, in accepting such obligations, You may act only +   on Your own behalf and on Your sole responsibility, not on behalf +   of any other Contributor, and only if You agree to indemnify, +   defend, and hold each Contributor harmless for any liability +   incurred by, or claims asserted against, such Contributor by reason +   of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +      To apply the Apache License to your work, attach the following +      boilerplate notice, with the fields enclosed by brackets "[]" +      replaced with your own identifying information. (Don't include +      the brackets!)  The text should be enclosed in the appropriate +      comment syntax for the file format. We also recommend that a +      file or class name and description of purpose be included on the +      same "printed page" as the copyright notice for easier +      identification within third-party archives. + +Copyright 2021 Nova + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +       http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/docs/docs/deployment/_category_.json b/docs/docs/deployment/_category_.json new file mode 100644 index 0000000..27fb1fc --- /dev/null +++ b/docs/docs/deployment/_category_.json @@ -0,0 +1,4 @@ +{ +  "label": "Deployment", +  "position": 3 +}
\ No newline at end of file diff --git a/docs/docs/deployment/production.md b/docs/docs/deployment/production.md new file mode 100644 index 0000000..38ca6b8 --- /dev/null +++ b/docs/docs/deployment/production.md @@ -0,0 +1 @@ +# Production guide
\ No newline at end of file diff --git a/docs/docs/internals/_category_.json b/docs/docs/internals/_category_.json new file mode 100644 index 0000000..ed12ab8 --- /dev/null +++ b/docs/docs/internals/_category_.json @@ -0,0 +1,4 @@ +{ +  "label": "Internals", +  "position": 99999 +}
\ No newline at end of file diff --git a/docs/docs/internals/components/_category_.json b/docs/docs/internals/components/_category_.json new file mode 100644 index 0000000..a50cc69 --- /dev/null +++ b/docs/docs/internals/components/_category_.json @@ -0,0 +1,4 @@ +{ +  "label": "Components", +  "position": 4 +}
\ No newline at end of file diff --git a/docs/docs/internals/components/gateway.md b/docs/docs/internals/components/gateway.md new file mode 100644 index 0000000..9aab5c2 --- /dev/null +++ b/docs/docs/internals/components/gateway.md @@ -0,0 +1,34 @@ +--- +title: Gateway +position: 1 +--- + +The gateway if the component responsible for the real-time events +using the Discord Gateway API (websocket), the component is written +in rust using [`tokio-tungstenite`](https://github.com/snapview/tokio-tungstenite) and his job is to simply maintain +a gateway connection (heartbeat, reconnect, etc...) and send events +directly to the cache using nats. + +The project is located in the `gateway` folder at the root +of the GitHub repo and is published using a statically linked +library (except libc) and docker images. + +## Structure + +Internally, the gateway is divided in multiple rust modules + +### Connection (src/connection) + +This module implements a [`futures_core::stream::Stream` trait](https://docs.rs/futures-core/0.3.17/futures_core/stream/trait.Stream.html) +and [`futures::sink::Sink` trait](https://docs.rs/futures/0.3.17/futures/sink/trait.Sink.html) that streams deserialized discord +packets to the stream. It does not implement any reconnect mechanism and returns +an error when the connection encounters a deserialization error or i/o error. +If the connection is closed, the stream simply closes. + +You can send any `BaseMessage` struct through the connection and receive +any `BaseMessage` struct. + + +### Payloads (src/payload) + +This module implements the deserialization of discord packets diff --git a/docs/docs/internals/index.md b/docs/docs/internals/index.md new file mode 100644 index 0000000..c9c25d4 --- /dev/null +++ b/docs/docs/internals/index.md @@ -0,0 +1,51 @@ +--- +sidebar_position: 1 +--- + +# Nova Internals + +## Definitions + +### Cache + +A cache is an instance of the `cache` program, it managed everything that is related to data-management +of the discord events, webhooks and more. + +### Gateway +*todo* +### Webhook +*todo* +###  + +## Communication + +``` +    ┌───────────────┐              ┌───────────────────┐ +    │    Gateway    │   event(s)   │                   │                   ┌───────────────────────┐ +┌──►│   (gateway)   ├─────────────►│                   ├──────────────────►│                       │ +│   └───────────────┘ (nats queue) │   Cache instance  │  (redis channel)  │     Caching server    │ +│                                  │      (cache)      │                   │        (redis)        │ +│   ┌───────────────┐   event(s)   │                   │◄──────────────────┤                       │ +│   │    Webhook    ├─────────────►│                   │                   └───────────────────────┘ +│   │   (webhook)   │ (nats queue) └─────────────────┬─┘ +│   └───────────────┘                  ▲             │ +│                       cache requests │             │   event(s) +│                          (grpc)      │             │ (nats queue) +│                                      │             ▼ +│                                  ┌───┴───────────────┐ +└──────────────────────────────────┤   User programs   │ +         gateway commands          │   (client libs)   │ +              (grpc)               └───────────────────┘ +``` + +> We try to use protocol buffers everywhere even inside the event broker (nats), +> this ensures we have the same date representation across all the programs written +> in different languages + +> The only dependency of the nova architecture is a reliable nats & redis cluster for now + +#### Protocols + +All the protocols a detailed in the [protocols folder](protocols/index) + +#### 
\ No newline at end of file diff --git a/docs/docs/internals/protocols/index.md b/docs/docs/internals/protocols/index.md new file mode 100644 index 0000000..4de3a69 --- /dev/null +++ b/docs/docs/internals/protocols/index.md @@ -0,0 +1,7 @@ +# Protocols + +This section of the internal documentation describes the protocols used by nova +to communicate between all the components. + + +* 
\ No newline at end of file diff --git a/docs/docs/intro.md b/docs/docs/intro.md new file mode 100644 index 0000000..d0bab01 --- /dev/null +++ b/docs/docs/intro.md @@ -0,0 +1,33 @@ +# Introduction + +## What is nova ? + +Nova is a complete framework for building reliable and stable discord bots +using a services based system to operate all the components needed to operate +a discord such as the discord gateway, new discord webhooks for receiving interactions. +Using a traditional infrastructure (sharder / process), we can quickly reach bottlenecks +when we scale to multiple thousands of shards. Nova is a way to avoid these problems by +building a scale-first discord framework that creates an environment that allow  +better testing, reliability and operations easier. + +### Advantages + +With the help of Nova, you can achieve a number of things, such as + +* Scaling of workers independent of the number of shards +* zero-login updates +* Automatic shards scaling +* Shared cache for the whole bot (without broadcastEval and other unsafe methods) +* Stateless workers, easier to test +* Distributed rest rate-limiting +* Easier fine-tuned monitoring using cloud-native technologies +* Languages agnostic apis + +### How did we solve this ? + +Nova separates the gateway into multiple smaller components corresponding to each +discord apis + + + +[](https://app.fossa.com/projects/git%2Bgithub.com%2Fdiscordnova%2Fnova?ref=badge_large)
\ No newline at end of file diff --git a/docs/docs/quickstart.md b/docs/docs/quickstart.md new file mode 100644 index 0000000..216552e --- /dev/null +++ b/docs/docs/quickstart.md @@ -0,0 +1,21 @@ +--- +sidebar_position: 2 +--- + +# 5 Minutes quickstart + +This page shows you how to start a new nova project +under five minutes using a typescript project, +hold tight this is going to be fast. + +## Requirements + +* A discord bot application available +* [Docker](https://docker.io/) (or alternatives) available to you. +* A domain name / [ngrok.io](https://ngrok.com/) domain (for webhooks only) + +> If you are deploying nova to production, consider following the +> production guide instead. + +## Setting up a nova instance + diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js new file mode 100644 index 0000000..7bdcc0b --- /dev/null +++ b/docs/docusaurus.config.js @@ -0,0 +1,95 @@ +const lightCodeTheme = require('prism-react-renderer/themes/github'); +const darkCodeTheme = require('prism-react-renderer/themes/dracula'); + +// With JSDoc @type annotations, IDEs can provide config autocompletion +/** @type {import('@docusaurus/types').DocusaurusConfig} */ +(module.exports = { +  title: 'Nova', +  tagline: 'A simple and powerful discord framework', +  url: 'https://discordnova.github.io', +  baseUrl: '/', +  onBrokenLinks: 'throw', +  onBrokenMarkdownLinks: 'warn', +  favicon: 'img/favicon.ico', +  organizationName: 'discordnova', // Usually your GitHub org/user name. +  projectName: 'nova', // Usually your repo name. + +  presets: [ +    [ +      '@docusaurus/preset-classic', +      /** @type {import('@docusaurus/preset-classic').Options} */ +      ({ +        docs: { +          sidebarPath: require.resolve('./sidebars.js'), +          // Please change this to your repo. +          editUrl: 'https://github.com/discordnova/nova/edit/main/docs/docs/', +        }, +        theme: { +          customCss: require.resolve('./src/css/custom.css'), +        }, +      }), +    ], +  ], + +  themeConfig: +    /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ +    ({ +      navbar: { +        title: 'Nova', +        items: [ +          { +            type: 'doc', +            docId: 'intro', +            position: 'left', +            label: 'Documentation', +          }, +          { +            href: 'https://github.com/discordnova/nova', +            label: 'GitHub', +            position: 'right', +          }, +        ], +      }, +      footer: { +        style: 'dark', +        links: [ +          { +            title: 'Docs', +            items: [ +              { +                label: '5 Minutes quickstart', +                to: '/docs/quickstart', +              }, +              { +                label: 'Internals', +                to: '/docs/internals/index' +              } +            ], +          }, +          { +            title: 'Community', +            items: [ +              { +                label: 'Discord', +                href: 'https://discordapp.com/invite/docusaurus', +              } +            ], +          }, +          { +            title: 'More', +            items: [ +              { +                label: 'GitHub', +                href: 'https://github.com/discordnova/nova', +              }, +            ], +          }, +        ], +        copyright: `Copyright © ${new Date().getFullYear()} My Project, Inc. Built with Docusaurus.`, +      }, +      prism: { +        theme: lightCodeTheme, +        darkTheme: darkCodeTheme, +      }, +    }), +}); diff --git a/docs/exemples/config.yaml b/docs/exemples/config.yaml deleted file mode 100644 index e69de29..0000000 --- a/docs/exemples/config.yaml +++ /dev/null diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 0000000..5468793 --- /dev/null +++ b/docs/package.json @@ -0,0 +1,49 @@ +{ +  "name": "@discordnova/docs", +  "version": "0.0.0", +  "private": true, +  "scripts": { +    "docusaurus": "docusaurus", +    "start": "docusaurus start", +    "build": "docusaurus build", +    "swizzle": "docusaurus swizzle", +    "deploy": "docusaurus deploy", +    "clear": "docusaurus clear", +    "serve": "docusaurus serve", +    "write-translations": "docusaurus write-translations", +    "write-heading-ids": "docusaurus write-heading-ids", +    "typecheck": "tsc" +  }, +  "dependencies": { +    "@docusaurus/core": "2.0.0-beta.6", +    "@docusaurus/preset-classic": "2.0.0-beta.6", +    "@mdx-js/react": "^1.6.21", +    "@svgr/webpack": "^5.5.0", +    "clsx": "^1.1.1", +    "file-loader": "^6.2.0", +    "prism-react-renderer": "^1.2.1", +    "react": "^17.0.1", +    "react-dom": "^17.0.1", +    "url-loader": "^4.1.1" +  }, +  "devDependencies": { +    "@docusaurus/module-type-aliases": "2.0.0-beta.6", +    "@tsconfig/docusaurus": "^1.0.4", +    "@types/react": "^17.0.14", +    "@types/react-helmet": "^6.1.2", +    "@types/react-router-dom": "^5.1.8", +    "typescript": "^4.3.5" +  }, +  "browserslist": { +    "production": [ +      ">0.5%", +      "not dead", +      "not op_mini all" +    ], +    "development": [ +      "last 1 chrome version", +      "last 1 firefox version", +      "last 1 safari version" +    ] +  } +}
\ No newline at end of file diff --git a/docs/sidebars.js b/docs/sidebars.js new file mode 100644 index 0000000..13dd827 --- /dev/null +++ b/docs/sidebars.js @@ -0,0 +1,26 @@ +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + */ + +module.exports = { +  // By default, Docusaurus generates a sidebar from the docs folder structure +  documentation: [{type: 'autogenerated', dirName: '.'}], + +  // But you can create a sidebar manually +  /* +  tutorialSidebar: [ +    { +      type: 'category', +      label: 'Tutorial', +      items: ['hello'], +    }, +  ], +   */ +}; diff --git a/docs/src/components/HomepageFeatures.module.css b/docs/src/components/HomepageFeatures.module.css new file mode 100644 index 0000000..b248eb2 --- /dev/null +++ b/docs/src/components/HomepageFeatures.module.css @@ -0,0 +1,11 @@ +.features { +  display: flex; +  align-items: center; +  padding: 2rem 0; +  width: 100%; +} + +.featureSvg { +  height: 200px; +  width: 200px; +} diff --git a/docs/src/components/HomepageFeatures.tsx b/docs/src/components/HomepageFeatures.tsx new file mode 100644 index 0000000..3897078 --- /dev/null +++ b/docs/src/components/HomepageFeatures.tsx @@ -0,0 +1,76 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +import React from 'react'; +import clsx from 'clsx'; +import styles from './HomepageFeatures.module.css'; + +type FeatureItem = { +  title: string; +  image: string; +  description: JSX.Element; +}; + +const FeatureList: FeatureItem[] = [ +  { +    title: 'Easy to Use', +    image: '/img/undraw_docusaurus_mountain.svg', +    description: ( +      <> +        Docusaurus was designed from the ground up to be easily installed and +        used to get your website up and running quickly. +      </> +    ), +  }, +  { +    title: 'Focus on What Matters', +    image: '/img/undraw_docusaurus_tree.svg', +    description: ( +      <> +        Docusaurus lets you focus on your docs, and we'll do the chores. Go +        ahead and move your docs into the <code>docs</code> directory. +      </> +    ), +  }, +  { +    title: 'Powered by React', +    image: '/img/undraw_docusaurus_react.svg', +    description: ( +      <> +        Extend or customize your website layout by reusing React. Docusaurus can +        be extended while reusing the same header and footer. +      </> +    ), +  }, +]; + +function Feature({title, image, description}: FeatureItem) { +  return ( +    <div className={clsx('col col--4')}> +      <div className="text--center"> +        <img className={styles.featureSvg} alt={title} src={image} /> +      </div> +      <div className="text--center padding-horiz--md"> +        <h3>{title}</h3> +        <p>{description}</p> +      </div> +    </div> +  ); +} + +export default function HomepageFeatures(): JSX.Element { +  return ( +    <section className={styles.features}> +      <div className="container"> +        <div className="row"> +          {FeatureList.map((props, idx) => ( +            <Feature key={idx} {...props} /> +          ))} +        </div> +      </div> +    </section> +  ); +} diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css new file mode 100644 index 0000000..3f618b3 --- /dev/null +++ b/docs/src/css/custom.css @@ -0,0 +1,29 @@ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ + +:root { +  --ifm-color-primary: #FAB770; +  --ifm-color-primary-dark: rgb(33, 175, 144); +  --ifm-color-primary-darker: rgb(31, 165, 136); +  --ifm-color-primary-darkest: rgb(26, 136, 112); +  --ifm-color-primary-light: rgb(70, 203, 174); +  --ifm-color-primary-lighter: rgb(102, 212, 189); +  --ifm-color-primary-lightest: rgb(146, 224, 208); +  --ifm-code-font-size: 95%; +} + +.docusaurus-highlight-code-line { +  background-color: rgba(0, 0, 0, 0.1); +  display: block; +  margin: 0 calc(-1 * var(--ifm-pre-padding)); +  padding: 0 var(--ifm-pre-padding); +} + +html[data-theme='dark'] .docusaurus-highlight-code-line { +  background-color: rgba(0, 0, 0, 0.3); +} diff --git a/docs/src/pages/index.module.css b/docs/src/pages/index.module.css new file mode 100644 index 0000000..e6f1476 --- /dev/null +++ b/docs/src/pages/index.module.css @@ -0,0 +1,28 @@ +/** + * CSS files with the .module.css suffix will be treated as CSS modules + * and scoped locally. + */ + +.heroBanner { +  padding: 4rem 0; +  text-align: center; +  position: relative; +  overflow: hidden; +} + +@media screen and (max-width: 966px) { +  .heroBanner { +    padding: 2rem; +  } +} + +.buttons { +  display: flex; +  align-items: center; +  justify-content: center; +  flex-wrap: wrap; +} + +.button { +  margin: 3px; +}
\ No newline at end of file diff --git a/docs/src/pages/index.tsx b/docs/src/pages/index.tsx new file mode 100644 index 0000000..da7f6ea --- /dev/null +++ b/docs/src/pages/index.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import clsx from 'clsx'; +import Layout from '@theme/Layout'; +import Link from '@docusaurus/Link'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import styles from './index.module.css'; +import HomepageFeatures from '../components/HomepageFeatures'; + +function HomepageHeader() { +  const {siteConfig} = useDocusaurusContext(); +  return ( +    <header className={clsx('hero hero--primary', styles.heroBanner)}> +      <div className="container"> +        <h1 className="hero__title">{siteConfig.title}</h1> +        <p className="hero__subtitle">{siteConfig.tagline}</p> +        <div className={styles.buttons}> +          <Link +            className={clsx("button button--secondary button--lg", styles.button)} +            to="/docs/quickstart"> +            Docusaurus Tutorial - 5min ⏱️ +          </Link> +            <Link +                className={clsx("button button--secondary button--lg", styles.button)} +                to="/docs/intro"> +                User Guide +            </Link> +        </div> +      </div> +    </header> +  ); +} + +export default function Home(): JSX.Element { +  const { siteConfig } = useDocusaurusContext(); +  return ( +    <Layout +      title={siteConfig.tagline} +      description={siteConfig.tagline}> +      <HomepageHeader /> +      <main> +        <HomepageFeatures /> +      </main> +    </Layout> +  ); +} diff --git a/docs/components/cache.md b/docs/static/.nojekyll index e69de29..e69de29 100644 --- a/docs/components/cache.md +++ b/docs/static/.nojekyll diff --git a/docs/structure.md b/docs/structure.md deleted file mode 100644 index 1f82ae3..0000000 --- a/docs/structure.md +++ /dev/null @@ -1,15 +0,0 @@ -# Workspace/System structure - -## System structure - -In the nova repository, two different types of projects exist,  - -* The management projects primarly in Go \ -    They manage the other components of the nova infrastructure. -* The data-path projects \ -    They handle all the data transfer / management. - -### Gateway - -> The gateway interfaces with the discord gateway to retrive events in real time -It's implemented in rust and is in the gateway folder.
\ No newline at end of file diff --git a/docs/tsconfig.json b/docs/tsconfig.json new file mode 100644 index 0000000..6f47569 --- /dev/null +++ b/docs/tsconfig.json @@ -0,0 +1,7 @@ +{ +  // This file is not used in compilation. It is here just for a nice editor experience. +  "extends": "@tsconfig/docusaurus/tsconfig.json", +  "compilerOptions": { +    "baseUrl": "." +  } +} diff --git a/docs/yarn.lock b/docs/yarn.lock new file mode 100644 index 0000000..cdb1d82 --- /dev/null +++ b/docs/yarn.lock @@ -0,0 +1,8882 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@algolia/autocomplete-core@1.2.2": +  version "1.2.2" +  resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.2.2.tgz#c121e70c78fd0175c989a219918124ad7758e48b" +  integrity sha512-JOQaURze45qVa8OOFDh+ozj2a/ObSRsVyz6Zd0aiBeej+RSTqrr1hDVpGNbbXYLW26G5ujuc9QIdH+rBHn95nw== +  dependencies: +    "@algolia/autocomplete-shared" "1.2.2" + +"@algolia/autocomplete-preset-algolia@1.2.2": +  version "1.2.2" +  resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.2.2.tgz#da734ef9e42a5f64cdad2dfc81c4e9fbf805d976" +  integrity sha512-AZkh+bAMaJDzMZTelFOXJTJqkp5VPGH8W3n0B+Ggce7DdozlMRsDLguKTCQAkZ0dJ1EbBPyFL5ztL/JImB137Q== +  dependencies: +    "@algolia/autocomplete-shared" "1.2.2" + +"@algolia/autocomplete-shared@1.2.2": +  version "1.2.2" +  resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.2.2.tgz#ff25dc308f2a296b2b9b325f1e3b57498eea3e0c" +  integrity sha512-mLTl7d2C1xVVazHt/bqh9EE/u2lbp5YOxLDdcjILXmUqOs5HH1D4SuySblXaQG1uf28FhTqMGp35qE5wJQnqAw== + +"@algolia/cache-browser-local-storage@4.10.5": +  version "4.10.5" +  resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.10.5.tgz#961cf07cf59955de17af13bd74f7806bd2119553" +  integrity sha512-cfX2rEKOtuuljcGI5DMDHClwZHdDqd2nT2Ohsc8aHtBiz6bUxKVyIqxr2gaC6tU8AgPtrTVBzcxCA+UavXpKww== +  dependencies: +    "@algolia/cache-common" "4.10.5" + +"@algolia/cache-common@4.10.5": +  version "4.10.5" +  resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.10.5.tgz#9510419e9dfb6d8814582c6b20615196f213a9d6" +  integrity sha512-1mClwdmTHll+OnHkG+yeRoFM17kSxDs4qXkjf6rNZhoZGXDvfYLy3YcZ1FX4Kyz0DJv8aroq5RYGBDsWkHj6Tw== + +"@algolia/cache-in-memory@4.10.5": +  version "4.10.5" +  resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.10.5.tgz#de9331cb86734bf7f7624063cdaa639e43509be1" +  integrity sha512-+ciQnfIGi5wjMk02XhEY8fmy2pzy+oY1nIIfu8LBOglaSipCRAtjk6WhHc7/KIbXPiYzIwuDbM2K1+YOwSGjwA== +  dependencies: +    "@algolia/cache-common" "4.10.5" + +"@algolia/client-account@4.10.5": +  version "4.10.5" +  resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.10.5.tgz#82f7c330fc5f0625b5b559afe9c6b1aa6722b6cf" +  integrity sha512-I9UkSS2glXm7RBZYZIALjBMmXSQbw/fI/djPcBHxiwXIheNIlqIFl2SNPkvihpPF979BSkzjqdJNRPhE1vku3Q== +  dependencies: +    "@algolia/client-common" "4.10.5" +    "@algolia/client-search" "4.10.5" +    "@algolia/transporter" "4.10.5" + +"@algolia/client-analytics@4.10.5": +  version "4.10.5" +  resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.10.5.tgz#269e47c9de7e53e9e05e4a2d3c380607c3d2631f" +  integrity sha512-h2owwJSkovPxzc+xIsjY1pMl0gj+jdVwP9rcnGjlaTY2fqHbSLrR9yvGyyr6305LvTppxsQnfAbRdE/5Z3eFxw== +  dependencies: +    "@algolia/client-common" "4.10.5" +    "@algolia/client-search" "4.10.5" +    "@algolia/requester-common" "4.10.5" +    "@algolia/transporter" "4.10.5" + +"@algolia/client-common@4.10.5": +  version "4.10.5" +  resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.10.5.tgz#a7d0833796a9a2da68be16be76b6dc3962bf2f18" +  integrity sha512-21FAvIai5qm8DVmZHm2Gp4LssQ/a0nWwMchAx+1hIRj1TX7OcdW6oZDPyZ8asQdvTtK7rStQrRnD8a95SCUnzA== +  dependencies: +    "@algolia/requester-common" "4.10.5" +    "@algolia/transporter" "4.10.5" + +"@algolia/client-personalization@4.10.5": +  version "4.10.5" +  resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.10.5.tgz#78a8fb8161bdbeaa66b400b3283640ef689e155b" +  integrity sha512-nH+IyFKBi8tCyzGOanJTbXC5t4dspSovX3+ABfmwKWUYllYzmiQNFUadpb3qo+MLA3jFx5IwBesjneN6dD5o3w== +  dependencies: +    "@algolia/client-common" "4.10.5" +    "@algolia/requester-common" "4.10.5" +    "@algolia/transporter" "4.10.5" + +"@algolia/client-search@4.10.5": +  version "4.10.5" +  resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.10.5.tgz#47907232a3e4ecf2aa4459b8de17242afd88147c" +  integrity sha512-1eQFMz9uodrc5OM+9HeT+hHcfR1E1AsgFWXwyJ9Q3xejA2c1c4eObGgOgC9ZoshuHHdptaTN1m3rexqAxXRDBg== +  dependencies: +    "@algolia/client-common" "4.10.5" +    "@algolia/requester-common" "4.10.5" +    "@algolia/transporter" "4.10.5" + +"@algolia/logger-common@4.10.5": +  version "4.10.5" +  resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.10.5.tgz#cf807107e755ad4a72c5afc787e968ff1196f1cc" +  integrity sha512-gRJo9zt1UYP4k3woEmZm4iuEBIQd/FrArIsjzsL/b+ihNoOqIxZKTSuGFU4UUZOEhvmxDReiA4gzvQXG+TMTmA== + +"@algolia/logger-console@4.10.5": +  version "4.10.5" +  resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.10.5.tgz#f961a7a7c6718c3f3842fb9b522d47b03b9df8ad" +  integrity sha512-4WfIbn4253EDU12u9UiYvz+QTvAXDv39mKNg9xSoMCjKE5szcQxfcSczw2byc6pYhahOJ9PmxPBfs1doqsdTKQ== +  dependencies: +    "@algolia/logger-common" "4.10.5" + +"@algolia/requester-browser-xhr@4.10.5": +  version "4.10.5" +  resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.10.5.tgz#7063e3bc6d9c72bc535e1794352eddf47459dfe6" +  integrity sha512-53/MURQEqtK+bGdfq4ITSPwTh5hnADU99qzvpAINGQveUFNSFGERipJxHjTJjIrjFz3vxj5kKwjtxDnU6ygO9g== +  dependencies: +    "@algolia/requester-common" "4.10.5" + +"@algolia/requester-common@4.10.5": +  version "4.10.5" +  resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.10.5.tgz#52abfbf10b743d26afd3ce20f62771bc393ff4f0" +  integrity sha512-UkVa1Oyuj6NPiAEt5ZvrbVopEv1m/mKqjs40KLB+dvfZnNcj+9Fry4Oxnt15HMy/HLORXsx4UwcthAvBuOXE9Q== + +"@algolia/requester-node-http@4.10.5": +  version "4.10.5" +  resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.10.5.tgz#db7e9ece1fda1b71a28c8e623666aaa096320b5c" +  integrity sha512-aNEKVKXL4fiiC+bS7yJwAHdxln81ieBwY3tsMCtM4zF9f5KwCzY2OtN4WKEZa5AAADVcghSAUdyjs4AcGUlO5w== +  dependencies: +    "@algolia/requester-common" "4.10.5" + +"@algolia/transporter@4.10.5": +  version "4.10.5" +  resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.10.5.tgz#9354989f12af3e2ce7d3109a94f519d467a960e0" +  integrity sha512-F8DLkmIlvCoMwSCZA3FKHtmdjH3o5clbt0pi2ktFStVNpC6ZDmY307HcK619bKP5xW6h8sVJhcvrLB775D2cyA== +  dependencies: +    "@algolia/cache-common" "4.10.5" +    "@algolia/logger-common" "4.10.5" +    "@algolia/requester-common" "4.10.5" + +"@babel/code-frame@7.10.4": +  version "7.10.4" +  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" +  integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== +  dependencies: +    "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.5.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" +  integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== +  dependencies: +    "@babel/highlight" "^7.14.5" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0": +  version "7.15.0" +  resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" +  integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== + +"@babel/core@7.12.9": +  version "7.12.9" +  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" +  integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ== +  dependencies: +    "@babel/code-frame" "^7.10.4" +    "@babel/generator" "^7.12.5" +    "@babel/helper-module-transforms" "^7.12.1" +    "@babel/helpers" "^7.12.5" +    "@babel/parser" "^7.12.7" +    "@babel/template" "^7.12.7" +    "@babel/traverse" "^7.12.9" +    "@babel/types" "^7.12.7" +    convert-source-map "^1.7.0" +    debug "^4.1.0" +    gensync "^1.0.0-beta.1" +    json5 "^2.1.2" +    lodash "^4.17.19" +    resolve "^1.3.2" +    semver "^5.4.1" +    source-map "^0.5.0" + +"@babel/core@^7.12.16", "@babel/core@^7.12.3": +  version "7.15.5" +  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" +  integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg== +  dependencies: +    "@babel/code-frame" "^7.14.5" +    "@babel/generator" "^7.15.4" +    "@babel/helper-compilation-targets" "^7.15.4" +    "@babel/helper-module-transforms" "^7.15.4" +    "@babel/helpers" "^7.15.4" +    "@babel/parser" "^7.15.5" +    "@babel/template" "^7.15.4" +    "@babel/traverse" "^7.15.4" +    "@babel/types" "^7.15.4" +    convert-source-map "^1.7.0" +    debug "^4.1.0" +    gensync "^1.0.0-beta.2" +    json5 "^2.1.2" +    semver "^6.3.0" +    source-map "^0.5.0" + +"@babel/generator@^7.12.15", "@babel/generator@^7.12.5", "@babel/generator@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0" +  integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw== +  dependencies: +    "@babel/types" "^7.15.4" +    jsesc "^2.5.1" +    source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835" +  integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA== +  dependencies: +    "@babel/types" "^7.15.4" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz#21ad815f609b84ee0e3058676c33cf6d1670525f" +  integrity sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q== +  dependencies: +    "@babel/helper-explode-assignable-expression" "^7.15.4" +    "@babel/types" "^7.15.4" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" +  integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ== +  dependencies: +    "@babel/compat-data" "^7.15.0" +    "@babel/helper-validator-option" "^7.14.5" +    browserslist "^4.16.6" +    semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e" +  integrity sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw== +  dependencies: +    "@babel/helper-annotate-as-pure" "^7.15.4" +    "@babel/helper-function-name" "^7.15.4" +    "@babel/helper-member-expression-to-functions" "^7.15.4" +    "@babel/helper-optimise-call-expression" "^7.15.4" +    "@babel/helper-replace-supers" "^7.15.4" +    "@babel/helper-split-export-declaration" "^7.15.4" + +"@babel/helper-create-regexp-features-plugin@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" +  integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== +  dependencies: +    "@babel/helper-annotate-as-pure" "^7.14.5" +    regexpu-core "^4.7.1" + +"@babel/helper-define-polyfill-provider@^0.2.2": +  version "0.2.3" +  resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" +  integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== +  dependencies: +    "@babel/helper-compilation-targets" "^7.13.0" +    "@babel/helper-module-imports" "^7.12.13" +    "@babel/helper-plugin-utils" "^7.13.0" +    "@babel/traverse" "^7.13.0" +    debug "^4.1.1" +    lodash.debounce "^4.0.8" +    resolve "^1.14.2" +    semver "^6.1.2" + +"@babel/helper-explode-assignable-expression@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz#f9aec9d219f271eaf92b9f561598ca6b2682600c" +  integrity sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g== +  dependencies: +    "@babel/types" "^7.15.4" + +"@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" +  integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== +  dependencies: +    "@babel/helper-get-function-arity" "^7.15.4" +    "@babel/template" "^7.15.4" +    "@babel/types" "^7.15.4" + +"@babel/helper-get-function-arity@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" +  integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA== +  dependencies: +    "@babel/types" "^7.15.4" + +"@babel/helper-hoist-variables@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" +  integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA== +  dependencies: +    "@babel/types" "^7.15.4" + +"@babel/helper-member-expression-to-functions@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" +  integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA== +  dependencies: +    "@babel/types" "^7.15.4" + +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" +  integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== +  dependencies: +    "@babel/types" "^7.15.4" + +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4": +  version "7.15.7" +  resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz#7da80c8cbc1f02655d83f8b79d25866afe50d226" +  integrity sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw== +  dependencies: +    "@babel/helper-module-imports" "^7.15.4" +    "@babel/helper-replace-supers" "^7.15.4" +    "@babel/helper-simple-access" "^7.15.4" +    "@babel/helper-split-export-declaration" "^7.15.4" +    "@babel/helper-validator-identifier" "^7.15.7" +    "@babel/template" "^7.15.4" +    "@babel/traverse" "^7.15.4" +    "@babel/types" "^7.15.6" + +"@babel/helper-optimise-call-expression@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" +  integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw== +  dependencies: +    "@babel/types" "^7.15.4" + +"@babel/helper-plugin-utils@7.10.4": +  version "7.10.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" +  integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" +  integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== + +"@babel/helper-remap-async-to-generator@^7.14.5", "@babel/helper-remap-async-to-generator@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz#2637c0731e4c90fbf58ac58b50b2b5a192fc970f" +  integrity sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ== +  dependencies: +    "@babel/helper-annotate-as-pure" "^7.15.4" +    "@babel/helper-wrap-function" "^7.15.4" +    "@babel/types" "^7.15.4" + +"@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" +  integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== +  dependencies: +    "@babel/helper-member-expression-to-functions" "^7.15.4" +    "@babel/helper-optimise-call-expression" "^7.15.4" +    "@babel/traverse" "^7.15.4" +    "@babel/types" "^7.15.4" + +"@babel/helper-simple-access@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" +  integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg== +  dependencies: +    "@babel/types" "^7.15.4" + +"@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb" +  integrity sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A== +  dependencies: +    "@babel/types" "^7.15.4" + +"@babel/helper-split-export-declaration@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" +  integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== +  dependencies: +    "@babel/types" "^7.15.4" + +"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": +  version "7.15.7" +  resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" +  integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== + +"@babel/helper-validator-option@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" +  integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== + +"@babel/helper-wrap-function@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz#6f754b2446cfaf3d612523e6ab8d79c27c3a3de7" +  integrity sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw== +  dependencies: +    "@babel/helper-function-name" "^7.15.4" +    "@babel/template" "^7.15.4" +    "@babel/traverse" "^7.15.4" +    "@babel/types" "^7.15.4" + +"@babel/helpers@^7.12.5", "@babel/helpers@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" +  integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ== +  dependencies: +    "@babel/template" "^7.15.4" +    "@babel/traverse" "^7.15.4" +    "@babel/types" "^7.15.4" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" +  integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== +  dependencies: +    "@babel/helper-validator-identifier" "^7.14.5" +    chalk "^2.0.0" +    js-tokens "^4.0.0" + +"@babel/parser@^7.12.16", "@babel/parser@^7.12.7", "@babel/parser@^7.15.4", "@babel/parser@^7.15.5": +  version "7.15.7" +  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae" +  integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g== + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e" +  integrity sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" +    "@babel/plugin-proposal-optional-chaining" "^7.14.5" + +"@babel/plugin-proposal-async-generator-functions@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.4.tgz#f82aabe96c135d2ceaa917feb9f5fca31635277e" +  integrity sha512-2zt2g5vTXpMC3OmK6uyjvdXptbhBXfA77XGrd3gh93zwG8lZYBLOBImiGBEG0RANu3JqKEACCz5CGk73OJROBw== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/helper-remap-async-to-generator" "^7.15.4" +    "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" +  integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== +  dependencies: +    "@babel/helper-create-class-features-plugin" "^7.14.5" +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-proposal-class-static-block@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz#3e7ca6128453c089e8b477a99f970c63fc1cb8d7" +  integrity sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA== +  dependencies: +    "@babel/helper-create-class-features-plugin" "^7.15.4" +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" +  integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76" +  integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" +  integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" +  integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" +  integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" +  integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@7.12.1": +  version "7.12.1" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" +  integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== +  dependencies: +    "@babel/helper-plugin-utils" "^7.10.4" +    "@babel/plugin-syntax-object-rest-spread" "^7.8.0" +    "@babel/plugin-transform-parameters" "^7.12.1" + +"@babel/plugin-proposal-object-rest-spread@^7.15.6": +  version "7.15.6" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz#ef68050c8703d07b25af402cb96cf7f34a68ed11" +  integrity sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg== +  dependencies: +    "@babel/compat-data" "^7.15.0" +    "@babel/helper-compilation-targets" "^7.15.4" +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/plugin-syntax-object-rest-spread" "^7.8.3" +    "@babel/plugin-transform-parameters" "^7.15.4" + +"@babel/plugin-proposal-optional-catch-binding@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" +  integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" +  integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" +    "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" +  integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== +  dependencies: +    "@babel/helper-create-class-features-plugin" "^7.14.5" +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-proposal-private-property-in-object@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz#55c5e3b4d0261fd44fe637e3f624cfb0f484e3e5" +  integrity sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA== +  dependencies: +    "@babel/helper-annotate-as-pure" "^7.15.4" +    "@babel/helper-create-class-features-plugin" "^7.15.4" +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" +  integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== +  dependencies: +    "@babel/helper-create-regexp-features-plugin" "^7.14.5" +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-async-generators@^7.8.4": +  version "7.8.4" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" +  integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== +  dependencies: +    "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": +  version "7.12.13" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" +  integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== +  dependencies: +    "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" +  integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": +  version "7.8.3" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" +  integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== +  dependencies: +    "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": +  version "7.8.3" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" +  integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== +  dependencies: +    "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-json-strings@^7.8.3": +  version "7.8.3" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" +  integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== +  dependencies: +    "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@7.12.1": +  version "7.12.1" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" +  integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== +  dependencies: +    "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-jsx@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" +  integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": +  version "7.10.4" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" +  integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== +  dependencies: +    "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": +  version "7.8.3" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" +  integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== +  dependencies: +    "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": +  version "7.10.4" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" +  integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== +  dependencies: +    "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": +  version "7.8.3" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" +  integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== +  dependencies: +    "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": +  version "7.8.3" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" +  integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== +  dependencies: +    "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": +  version "7.8.3" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" +  integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== +  dependencies: +    "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" +  integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" +  integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716" +  integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-arrow-functions@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" +  integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-async-to-generator@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" +  integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== +  dependencies: +    "@babel/helper-module-imports" "^7.14.5" +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/helper-remap-async-to-generator" "^7.14.5" + +"@babel/plugin-transform-block-scoped-functions@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" +  integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-block-scoping@^7.15.3": +  version "7.15.3" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" +  integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-classes@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz#50aee17aaf7f332ae44e3bce4c2e10534d5d3bf1" +  integrity sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg== +  dependencies: +    "@babel/helper-annotate-as-pure" "^7.15.4" +    "@babel/helper-function-name" "^7.15.4" +    "@babel/helper-optimise-call-expression" "^7.15.4" +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/helper-replace-supers" "^7.15.4" +    "@babel/helper-split-export-declaration" "^7.15.4" +    globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" +  integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-destructuring@^7.14.7": +  version "7.14.7" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" +  integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" +  integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== +  dependencies: +    "@babel/helper-create-regexp-features-plugin" "^7.14.5" +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-duplicate-keys@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" +  integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-exponentiation-operator@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" +  integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== +  dependencies: +    "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-for-of@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2" +  integrity sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-function-name@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" +  integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== +  dependencies: +    "@babel/helper-function-name" "^7.14.5" +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-literals@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" +  integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-member-expression-literals@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" +  integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-modules-amd@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" +  integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== +  dependencies: +    "@babel/helper-module-transforms" "^7.14.5" +    "@babel/helper-plugin-utils" "^7.14.5" +    babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1" +  integrity sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA== +  dependencies: +    "@babel/helper-module-transforms" "^7.15.4" +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/helper-simple-access" "^7.15.4" +    babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz#b42890c7349a78c827719f1d2d0cd38c7d268132" +  integrity sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw== +  dependencies: +    "@babel/helper-hoist-variables" "^7.15.4" +    "@babel/helper-module-transforms" "^7.15.4" +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/helper-validator-identifier" "^7.14.9" +    babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" +  integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== +  dependencies: +    "@babel/helper-module-transforms" "^7.14.5" +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.14.9": +  version "7.14.9" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2" +  integrity sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA== +  dependencies: +    "@babel/helper-create-regexp-features-plugin" "^7.14.5" + +"@babel/plugin-transform-new-target@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" +  integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-object-super@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" +  integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/helper-replace-supers" "^7.14.5" + +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz#5f2285cc3160bf48c8502432716b48504d29ed62" +  integrity sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" +  integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-react-constant-elements@^7.12.1": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.14.5.tgz#41790d856f7c5cec82d2bcf5d0e5064d682522ed" +  integrity sha512-NBqLEx1GxllIOXJInJAQbrnwwYJsV3WaMHIcOwD8rhYS0AabTWn7kHdHgPgu5RmHLU0q4DMxhAMu8ue/KampgQ== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-react-display-name@^7.14.5": +  version "7.15.1" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz#6aaac6099f1fcf6589d35ae6be1b6e10c8c602b9" +  integrity sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-react-jsx-development@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz#1a6c73e2f7ed2c42eebc3d2ad60b0c7494fcb9af" +  integrity sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ== +  dependencies: +    "@babel/plugin-transform-react-jsx" "^7.14.5" + +"@babel/plugin-transform-react-jsx@^7.14.5": +  version "7.14.9" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz#3314b2163033abac5200a869c4de242cd50a914c" +  integrity sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw== +  dependencies: +    "@babel/helper-annotate-as-pure" "^7.14.5" +    "@babel/helper-module-imports" "^7.14.5" +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/plugin-syntax-jsx" "^7.14.5" +    "@babel/types" "^7.14.9" + +"@babel/plugin-transform-react-pure-annotations@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz#18de612b84021e3a9802cbc212c9d9f46d0d11fc" +  integrity sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g== +  dependencies: +    "@babel/helper-annotate-as-pure" "^7.14.5" +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-regenerator@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" +  integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== +  dependencies: +    regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" +  integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-runtime@^7.12.15": +  version "7.15.0" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.0.tgz#d3aa650d11678ca76ce294071fda53d7804183b3" +  integrity sha512-sfHYkLGjhzWTq6xsuQ01oEsUYjkHRux9fW1iUA68dC7Qd8BS1Unq4aZ8itmQp95zUzIcyR2EbNMTzAicFj+guw== +  dependencies: +    "@babel/helper-module-imports" "^7.14.5" +    "@babel/helper-plugin-utils" "^7.14.5" +    babel-plugin-polyfill-corejs2 "^0.2.2" +    babel-plugin-polyfill-corejs3 "^0.2.2" +    babel-plugin-polyfill-regenerator "^0.2.2" +    semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" +  integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-spread@^7.14.6": +  version "7.14.6" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144" +  integrity sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + +"@babel/plugin-transform-sticky-regex@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" +  integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-template-literals@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" +  integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-typeof-symbol@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" +  integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-typescript@^7.15.0": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.4.tgz#db7a062dcf8be5fc096bc0eeb40a13fbfa1fa251" +  integrity sha512-sM1/FEjwYjXvMwu1PJStH11kJ154zd/lpY56NQJ5qH2D0mabMv1CAy/kdvS9RP4Xgfj9fBBA3JiSLdDHgXdzOA== +  dependencies: +    "@babel/helper-create-class-features-plugin" "^7.15.4" +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/plugin-syntax-typescript" "^7.14.5" + +"@babel/plugin-transform-unicode-escapes@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" +  integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-unicode-regex@^7.14.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" +  integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== +  dependencies: +    "@babel/helper-create-regexp-features-plugin" "^7.14.5" +    "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.12.16": +  version "7.15.6" +  resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.6.tgz#0f3898db9d63d320f21b17380d8462779de57659" +  integrity sha512-L+6jcGn7EWu7zqaO2uoTDjjMBW+88FXzV8KvrBl2z6MtRNxlsmUNRlZPaNNPUTgqhyC5DHNFk/2Jmra+ublZWw== +  dependencies: +    "@babel/compat-data" "^7.15.0" +    "@babel/helper-compilation-targets" "^7.15.4" +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/helper-validator-option" "^7.14.5" +    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.15.4" +    "@babel/plugin-proposal-async-generator-functions" "^7.15.4" +    "@babel/plugin-proposal-class-properties" "^7.14.5" +    "@babel/plugin-proposal-class-static-block" "^7.15.4" +    "@babel/plugin-proposal-dynamic-import" "^7.14.5" +    "@babel/plugin-proposal-export-namespace-from" "^7.14.5" +    "@babel/plugin-proposal-json-strings" "^7.14.5" +    "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" +    "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" +    "@babel/plugin-proposal-numeric-separator" "^7.14.5" +    "@babel/plugin-proposal-object-rest-spread" "^7.15.6" +    "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" +    "@babel/plugin-proposal-optional-chaining" "^7.14.5" +    "@babel/plugin-proposal-private-methods" "^7.14.5" +    "@babel/plugin-proposal-private-property-in-object" "^7.15.4" +    "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" +    "@babel/plugin-syntax-async-generators" "^7.8.4" +    "@babel/plugin-syntax-class-properties" "^7.12.13" +    "@babel/plugin-syntax-class-static-block" "^7.14.5" +    "@babel/plugin-syntax-dynamic-import" "^7.8.3" +    "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +    "@babel/plugin-syntax-json-strings" "^7.8.3" +    "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" +    "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" +    "@babel/plugin-syntax-numeric-separator" "^7.10.4" +    "@babel/plugin-syntax-object-rest-spread" "^7.8.3" +    "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" +    "@babel/plugin-syntax-optional-chaining" "^7.8.3" +    "@babel/plugin-syntax-private-property-in-object" "^7.14.5" +    "@babel/plugin-syntax-top-level-await" "^7.14.5" +    "@babel/plugin-transform-arrow-functions" "^7.14.5" +    "@babel/plugin-transform-async-to-generator" "^7.14.5" +    "@babel/plugin-transform-block-scoped-functions" "^7.14.5" +    "@babel/plugin-transform-block-scoping" "^7.15.3" +    "@babel/plugin-transform-classes" "^7.15.4" +    "@babel/plugin-transform-computed-properties" "^7.14.5" +    "@babel/plugin-transform-destructuring" "^7.14.7" +    "@babel/plugin-transform-dotall-regex" "^7.14.5" +    "@babel/plugin-transform-duplicate-keys" "^7.14.5" +    "@babel/plugin-transform-exponentiation-operator" "^7.14.5" +    "@babel/plugin-transform-for-of" "^7.15.4" +    "@babel/plugin-transform-function-name" "^7.14.5" +    "@babel/plugin-transform-literals" "^7.14.5" +    "@babel/plugin-transform-member-expression-literals" "^7.14.5" +    "@babel/plugin-transform-modules-amd" "^7.14.5" +    "@babel/plugin-transform-modules-commonjs" "^7.15.4" +    "@babel/plugin-transform-modules-systemjs" "^7.15.4" +    "@babel/plugin-transform-modules-umd" "^7.14.5" +    "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9" +    "@babel/plugin-transform-new-target" "^7.14.5" +    "@babel/plugin-transform-object-super" "^7.14.5" +    "@babel/plugin-transform-parameters" "^7.15.4" +    "@babel/plugin-transform-property-literals" "^7.14.5" +    "@babel/plugin-transform-regenerator" "^7.14.5" +    "@babel/plugin-transform-reserved-words" "^7.14.5" +    "@babel/plugin-transform-shorthand-properties" "^7.14.5" +    "@babel/plugin-transform-spread" "^7.14.6" +    "@babel/plugin-transform-sticky-regex" "^7.14.5" +    "@babel/plugin-transform-template-literals" "^7.14.5" +    "@babel/plugin-transform-typeof-symbol" "^7.14.5" +    "@babel/plugin-transform-unicode-escapes" "^7.14.5" +    "@babel/plugin-transform-unicode-regex" "^7.14.5" +    "@babel/preset-modules" "^0.1.4" +    "@babel/types" "^7.15.6" +    babel-plugin-polyfill-corejs2 "^0.2.2" +    babel-plugin-polyfill-corejs3 "^0.2.2" +    babel-plugin-polyfill-regenerator "^0.2.2" +    core-js-compat "^3.16.0" +    semver "^6.3.0" + +"@babel/preset-modules@^0.1.4": +  version "0.1.4" +  resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" +  integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== +  dependencies: +    "@babel/helper-plugin-utils" "^7.0.0" +    "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" +    "@babel/plugin-transform-dotall-regex" "^7.4.4" +    "@babel/types" "^7.4.4" +    esutils "^2.0.2" + +"@babel/preset-react@^7.12.13", "@babel/preset-react@^7.12.5": +  version "7.14.5" +  resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.14.5.tgz#0fbb769513f899c2c56f3a882fa79673c2d4ab3c" +  integrity sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/helper-validator-option" "^7.14.5" +    "@babel/plugin-transform-react-display-name" "^7.14.5" +    "@babel/plugin-transform-react-jsx" "^7.14.5" +    "@babel/plugin-transform-react-jsx-development" "^7.14.5" +    "@babel/plugin-transform-react-pure-annotations" "^7.14.5" + +"@babel/preset-typescript@^7.12.16": +  version "7.15.0" +  resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.15.0.tgz#e8fca638a1a0f64f14e1119f7fe4500277840945" +  integrity sha512-lt0Y/8V3y06Wq/8H/u0WakrqciZ7Fz7mwPDHWUJAXlABL5hiUG42BNlRXiELNjeWjO5rWmnNKlx+yzJvxezHow== +  dependencies: +    "@babel/helper-plugin-utils" "^7.14.5" +    "@babel/helper-validator-option" "^7.14.5" +    "@babel/plugin-transform-typescript" "^7.15.0" + +"@babel/runtime-corejs3@^7.12.13": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz#403139af262b9a6e8f9ba04a6fdcebf8de692bf1" +  integrity sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg== +  dependencies: +    core-js-pure "^3.16.0" +    regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" +  integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== +  dependencies: +    regenerator-runtime "^0.13.4" + +"@babel/template@^7.12.7", "@babel/template@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" +  integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== +  dependencies: +    "@babel/code-frame" "^7.14.5" +    "@babel/parser" "^7.15.4" +    "@babel/types" "^7.15.4" + +"@babel/traverse@^7.12.13", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4": +  version "7.15.4" +  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" +  integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== +  dependencies: +    "@babel/code-frame" "^7.14.5" +    "@babel/generator" "^7.15.4" +    "@babel/helper-function-name" "^7.15.4" +    "@babel/helper-hoist-variables" "^7.15.4" +    "@babel/helper-split-export-declaration" "^7.15.4" +    "@babel/parser" "^7.15.4" +    "@babel/types" "^7.15.4" +    debug "^4.1.0" +    globals "^11.1.0" + +"@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.14.9", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.4.4": +  version "7.15.6" +  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" +  integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig== +  dependencies: +    "@babel/helper-validator-identifier" "^7.14.9" +    to-fast-properties "^2.0.0" + +"@docsearch/css@3.0.0-alpha.40": +  version "3.0.0-alpha.40" +  resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0-alpha.40.tgz#c37bd7b03f4c30a6ea7a19b87fe71880d2e8b22a" +  integrity sha512-PrOTPgJMl+Iji1zOH0+J0PEDMriJ1teGxbgll7o4h8JrvJW6sJGqQw7/bLW7enWiFaxbJMK76w1yyPNLFHV7Qg== + +"@docsearch/react@^3.0.0-alpha.39": +  version "3.0.0-alpha.40" +  resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0-alpha.40.tgz#d912b4bb7281cb0faf65590c9cf022aa2a13d823" +  integrity sha512-aKxnu7sgpP1R7jtgOV/pZdJEHXx6Ts+jnS9U/ejSUS2BMUpwQI5SA3oLs1BA5TA9kIViJ5E+rrjh0VsbcsJ6sQ== +  dependencies: +    "@algolia/autocomplete-core" "1.2.2" +    "@algolia/autocomplete-preset-algolia" "1.2.2" +    "@docsearch/css" "3.0.0-alpha.40" +    algoliasearch "^4.0.0" + +"@docusaurus/core@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.6.tgz#9847ae211a04f1d2b057f8e5ba650e76b9c2df83" +  integrity sha512-XMeI+lJKeJBGYBNOfO/Tc+5FMf21E5p1xZjfe75cgYcfZdERZ+W7aemXquwReno8xxHb4Rnfmi9dxkbOLDjqDA== +  dependencies: +    "@babel/core" "^7.12.16" +    "@babel/generator" "^7.12.15" +    "@babel/plugin-syntax-dynamic-import" "^7.8.3" +    "@babel/plugin-transform-runtime" "^7.12.15" +    "@babel/preset-env" "^7.12.16" +    "@babel/preset-react" "^7.12.13" +    "@babel/preset-typescript" "^7.12.16" +    "@babel/runtime" "^7.12.5" +    "@babel/runtime-corejs3" "^7.12.13" +    "@babel/traverse" "^7.12.13" +    "@docusaurus/cssnano-preset" "2.0.0-beta.6" +    "@docusaurus/react-loadable" "5.5.0" +    "@docusaurus/types" "2.0.0-beta.6" +    "@docusaurus/utils" "2.0.0-beta.6" +    "@docusaurus/utils-common" "2.0.0-beta.6" +    "@docusaurus/utils-validation" "2.0.0-beta.6" +    "@slorber/static-site-generator-webpack-plugin" "^4.0.0" +    "@svgr/webpack" "^5.5.0" +    autoprefixer "^10.2.5" +    babel-loader "^8.2.2" +    babel-plugin-dynamic-import-node "2.3.0" +    boxen "^5.0.1" +    chalk "^4.1.1" +    chokidar "^3.5.1" +    clean-css "^5.1.5" +    commander "^5.1.0" +    copy-webpack-plugin "^9.0.0" +    core-js "^3.9.1" +    css-loader "^5.1.1" +    css-minimizer-webpack-plugin "^3.0.1" +    cssnano "^5.0.4" +    del "^6.0.0" +    detect-port "^1.3.0" +    escape-html "^1.0.3" +    eta "^1.12.1" +    express "^4.17.1" +    file-loader "^6.2.0" +    fs-extra "^10.0.0" +    github-slugger "^1.3.0" +    globby "^11.0.2" +    html-minifier-terser "^5.1.1" +    html-tags "^3.1.0" +    html-webpack-plugin "^5.3.2" +    import-fresh "^3.3.0" +    is-root "^2.1.0" +    leven "^3.1.0" +    lodash "^4.17.20" +    mini-css-extract-plugin "^1.6.0" +    module-alias "^2.2.2" +    nprogress "^0.2.0" +    postcss "^8.2.15" +    postcss-loader "^5.3.0" +    prompts "^2.4.1" +    react-dev-utils "^11.0.1" +    react-error-overlay "^6.0.9" +    react-helmet "^6.1.0" +    react-loadable "^5.5.0" +    react-loadable-ssr-addon-v5-slorber "^1.0.1" +    react-router "^5.2.0" +    react-router-config "^5.1.1" +    react-router-dom "^5.2.0" +    remark-admonitions "^1.2.1" +    resolve-pathname "^3.0.0" +    rtl-detect "^1.0.3" +    semver "^7.3.4" +    serve-handler "^6.1.3" +    shelljs "^0.8.4" +    std-env "^2.2.1" +    strip-ansi "^6.0.0" +    terser-webpack-plugin "^5.1.3" +    tslib "^2.2.0" +    update-notifier "^5.1.0" +    url-loader "^4.1.1" +    wait-on "^5.3.0" +    webpack "^5.40.0" +    webpack-bundle-analyzer "^4.4.2" +    webpack-dev-server "^3.11.2" +    webpack-merge "^5.8.0" +    webpackbar "^5.0.0-3" + +"@docusaurus/cssnano-preset@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.6.tgz#0c277854f0262dca7bcb3daf99866e8a49e29118" +  integrity sha512-RCizp2NAbADopkX5nUz1xrAbU6hGZzziQk9RdSDGJLzMgVCN6RDotq9odS8VgzNa9x2Lx3WN527UxeEbzc2GVQ== +  dependencies: +    cssnano-preset-advanced "^5.1.1" +    postcss "^8.2.15" +    postcss-sort-media-queries "^3.10.11" + +"@docusaurus/mdx-loader@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.6.tgz#a5aeee5be0d04bb273752c893366cc6cffeb2b32" +  integrity sha512-yO6N+OESR77WZ/pXz7muOJGLletYYksx7s7wrwrr0x+A8tzdSwiHZ9op0NyjjpW5AnItU/WQQfcjv37qv4K6HA== +  dependencies: +    "@babel/parser" "^7.12.16" +    "@babel/traverse" "^7.12.13" +    "@docusaurus/core" "2.0.0-beta.6" +    "@docusaurus/utils" "2.0.0-beta.6" +    "@mdx-js/mdx" "^1.6.21" +    "@mdx-js/react" "^1.6.21" +    chalk "^4.1.1" +    escape-html "^1.0.3" +    file-loader "^6.2.0" +    fs-extra "^10.0.0" +    github-slugger "^1.3.0" +    gray-matter "^4.0.3" +    mdast-util-to-string "^2.0.0" +    remark-emoji "^2.1.0" +    stringify-object "^3.3.0" +    unist-util-visit "^2.0.2" +    url-loader "^4.1.1" +    webpack "^5.40.0" + +"@docusaurus/module-type-aliases@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.6.tgz#6d7388d65e1cf31e097f4e5924ec46cd6e7eff1c" +  integrity sha512-TrJ0u4F3mZ7uQNga22why3SsoNwlHp6vltDLlWI80jZmZpnk9BJglpcR8MPOTSEjyUgMxJ6B3q0PA/rWzupWZA== + +"@docusaurus/plugin-content-blog@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.6.tgz#54ae1c96a8e95dbc58484157c259e8aaf47a3fcb" +  integrity sha512-ohfMt7+rPiFQImc4Clpvc9m/1yWUQAjpG3e/coJywlJYbDXvi1pmH0VKkDUMBSe/35Wtz9457DYgNFG81lhV7Q== +  dependencies: +    "@docusaurus/core" "2.0.0-beta.6" +    "@docusaurus/mdx-loader" "2.0.0-beta.6" +    "@docusaurus/types" "2.0.0-beta.6" +    "@docusaurus/utils" "2.0.0-beta.6" +    "@docusaurus/utils-validation" "2.0.0-beta.6" +    chalk "^4.1.1" +    escape-string-regexp "^4.0.0" +    feed "^4.2.2" +    fs-extra "^10.0.0" +    globby "^11.0.2" +    js-yaml "^4.0.0" +    loader-utils "^2.0.0" +    lodash "^4.17.20" +    reading-time "^1.3.0" +    remark-admonitions "^1.2.1" +    tslib "^2.2.0" +    webpack "^5.40.0" + +"@docusaurus/plugin-content-docs@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.6.tgz#38fd58e42fe39e2a0cc738df077917a6fcd4e7ee" +  integrity sha512-cM5WWogWmX+qKPKv332eDWGRVVT5OjskbmFKe2QimwoaON3Cv6XY8Fo2xdYopqGIU0r0z8dVtRmoGS0ji7zB7w== +  dependencies: +    "@docusaurus/core" "2.0.0-beta.6" +    "@docusaurus/mdx-loader" "2.0.0-beta.6" +    "@docusaurus/types" "2.0.0-beta.6" +    "@docusaurus/utils" "2.0.0-beta.6" +    "@docusaurus/utils-validation" "2.0.0-beta.6" +    chalk "^4.1.1" +    combine-promises "^1.1.0" +    escape-string-regexp "^4.0.0" +    execa "^5.0.0" +    fs-extra "^10.0.0" +    globby "^11.0.2" +    import-fresh "^3.2.2" +    js-yaml "^4.0.0" +    loader-utils "^1.2.3" +    lodash "^4.17.20" +    remark-admonitions "^1.2.1" +    shelljs "^0.8.4" +    tslib "^2.2.0" +    utility-types "^3.10.0" +    webpack "^5.40.0" + +"@docusaurus/plugin-content-pages@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.6.tgz#254e6ee60a8a2b4d85c4fa8408388d585eea0507" +  integrity sha512-N6wARzOA8gTFeBXZSKbAN5s1Ej6R/pVg+J946E8GCYefXTFikTNRQ8+OPhax4MRzgzoOvhTQbLbRCSoAzSmjig== +  dependencies: +    "@docusaurus/core" "2.0.0-beta.6" +    "@docusaurus/mdx-loader" "2.0.0-beta.6" +    "@docusaurus/types" "2.0.0-beta.6" +    "@docusaurus/utils" "2.0.0-beta.6" +    "@docusaurus/utils-validation" "2.0.0-beta.6" +    globby "^11.0.2" +    lodash "^4.17.20" +    remark-admonitions "^1.2.1" +    tslib "^2.1.0" +    webpack "^5.40.0" + +"@docusaurus/plugin-debug@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.6.tgz#dc5ebc3c5c1c144b924ab3282fedbfc44cc78be0" +  integrity sha512-TJXDBR2Gr/mhBrcj+/4+rTShSm/Qg56Jfezbm/2fFvuPgVlUwy6oj08s2/kYSTmkfG7G+c4iX1GBHjtyo1KxZA== +  dependencies: +    "@docusaurus/core" "2.0.0-beta.6" +    "@docusaurus/types" "2.0.0-beta.6" +    "@docusaurus/utils" "2.0.0-beta.6" +    fs-extra "^9.1.0" +    react-json-view "^1.21.3" +    tslib "^2.1.0" + +"@docusaurus/plugin-google-analytics@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.6.tgz#fcb8608c09920131e4dd56b5b343f23cd07a7eee" +  integrity sha512-AHbMNPN3gkWXYFnmHL9MBcRODByAgzHZoH/5v3xwbSV2FOZo6kx4Hp94I6oFM0o5mp+i6X7slDncgGTWSGxCMg== +  dependencies: +    "@docusaurus/core" "2.0.0-beta.6" + +"@docusaurus/plugin-google-gtag@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.6.tgz#ccde43934d5a193711d118058092d4251965079d" +  integrity sha512-uJyQ30sXbVRS3TGtVJFA0s1ozrluuREu6NK2Z3TLtKpeT2NTe5iaqXN0Xp749hr3bjbgpEe6gMixVh//jg503w== +  dependencies: +    "@docusaurus/core" "2.0.0-beta.6" + +"@docusaurus/plugin-sitemap@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.6.tgz#5dd74bc8a5845c0e7eac7bfce05a18f57e0b3ed2" +  integrity sha512-jpTaODqyCgg+20RtMw8gSvCKQOvH18FpKhIu6FG+z4zgHP33qaJouVM7/1ZKPrfNt4z7xDOyBNUzzdmpssHA8A== +  dependencies: +    "@docusaurus/core" "2.0.0-beta.6" +    "@docusaurus/types" "2.0.0-beta.6" +    "@docusaurus/utils" "2.0.0-beta.6" +    "@docusaurus/utils-common" "2.0.0-beta.6" +    "@docusaurus/utils-validation" "2.0.0-beta.6" +    fs-extra "^10.0.0" +    sitemap "^7.0.0" +    tslib "^2.2.0" + +"@docusaurus/preset-classic@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.6.tgz#528c98939589ae5edfc2a7e01e9f87561e5d5c01" +  integrity sha512-riqQRcNssNH7oto8nAjYIO79/ZucidexHTDlgD+trP56ploHLJp4kIlxb44IGOmx3es8/z4egWtM+acY/39N2Q== +  dependencies: +    "@docusaurus/core" "2.0.0-beta.6" +    "@docusaurus/plugin-content-blog" "2.0.0-beta.6" +    "@docusaurus/plugin-content-docs" "2.0.0-beta.6" +    "@docusaurus/plugin-content-pages" "2.0.0-beta.6" +    "@docusaurus/plugin-debug" "2.0.0-beta.6" +    "@docusaurus/plugin-google-analytics" "2.0.0-beta.6" +    "@docusaurus/plugin-google-gtag" "2.0.0-beta.6" +    "@docusaurus/plugin-sitemap" "2.0.0-beta.6" +    "@docusaurus/theme-classic" "2.0.0-beta.6" +    "@docusaurus/theme-search-algolia" "2.0.0-beta.6" + +"@docusaurus/react-loadable@5.5.0": +  version "5.5.0" +  resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.0.tgz#6d6f0c8fd9a434b62a1ab1f8645ee7bde5a9ec21" +  integrity sha512-Ld/kwUE6yATIOTLq3JCsWiTa/drisajwKqBQ2Rw6IcT+sFsKfYek8F2jSH8f68AT73xX97UehduZeCSlnuCBIg== +  dependencies: +    prop-types "^15.6.2" + +"@docusaurus/theme-classic@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.6.tgz#4ae476e90cf875bb13eba5daedbd71d0cfdd8194" +  integrity sha512-fMb6gAKUdaojInZabimIJE+yPWs8dQfmZII7v/LHmgxafh/FylmrBkKhyJfa2ix4QRibo9E01LGX44/aKzemxw== +  dependencies: +    "@docusaurus/core" "2.0.0-beta.6" +    "@docusaurus/plugin-content-blog" "2.0.0-beta.6" +    "@docusaurus/plugin-content-docs" "2.0.0-beta.6" +    "@docusaurus/plugin-content-pages" "2.0.0-beta.6" +    "@docusaurus/theme-common" "2.0.0-beta.6" +    "@docusaurus/types" "2.0.0-beta.6" +    "@docusaurus/utils" "2.0.0-beta.6" +    "@docusaurus/utils-common" "2.0.0-beta.6" +    "@docusaurus/utils-validation" "2.0.0-beta.6" +    "@mdx-js/mdx" "^1.6.21" +    "@mdx-js/react" "^1.6.21" +    chalk "^4.1.1" +    clsx "^1.1.1" +    copy-text-to-clipboard "^3.0.1" +    fs-extra "^10.0.0" +    globby "^11.0.2" +    infima "0.2.0-alpha.33" +    lodash "^4.17.20" +    parse-numeric-range "^1.2.0" +    postcss "^8.2.15" +    prism-react-renderer "^1.2.1" +    prismjs "^1.23.0" +    prop-types "^15.7.2" +    react-router-dom "^5.2.0" +    rtlcss "^3.1.2" + +"@docusaurus/theme-common@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.6.tgz#17cbf38400d752e264cdbebbc57a92f2bdfc7052" +  integrity sha512-53nFWMjpFdyHEvBfQQQoDm9rNKgGangy7vSp1B/F3+uRyYAItE7O4l8MdOALXFALlddiiPYvCtI1qGx2dnzndA== +  dependencies: +    "@docusaurus/core" "2.0.0-beta.6" +    "@docusaurus/plugin-content-blog" "2.0.0-beta.6" +    "@docusaurus/plugin-content-docs" "2.0.0-beta.6" +    "@docusaurus/plugin-content-pages" "2.0.0-beta.6" +    "@docusaurus/types" "2.0.0-beta.6" +    clsx "^1.1.1" +    fs-extra "^10.0.0" +    tslib "^2.1.0" + +"@docusaurus/theme-search-algolia@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.6.tgz#c92214a075a23fe9fb87cfbc6f037ca07e83f628" +  integrity sha512-GaaYdf6EEKL3jwmt9LRyiMtNvobOhw4vGuYJKbJcgba/M75kOJSbZPRrhALBAe6o4gOYbV44afzFC/jUUp7dsA== +  dependencies: +    "@docsearch/react" "^3.0.0-alpha.39" +    "@docusaurus/core" "2.0.0-beta.6" +    "@docusaurus/theme-common" "2.0.0-beta.6" +    "@docusaurus/utils" "2.0.0-beta.6" +    "@docusaurus/utils-validation" "2.0.0-beta.6" +    algoliasearch "^4.8.4" +    algoliasearch-helper "^3.3.4" +    clsx "^1.1.1" +    eta "^1.12.1" +    lodash "^4.17.20" + +"@docusaurus/types@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.6.tgz#f92a61cc42e5921d325114ebc7b30c5e8c368683" +  integrity sha512-TrwxyI93XTZEhOmdEI8FPKDbGV61zE9PzXCdE1alwz1NOV+YXwcv+9sRTZEVLqBpr+TIja+IeeS6mxnyen/Ptg== +  dependencies: +    commander "^5.1.0" +    joi "^17.4.0" +    querystring "0.2.0" +    webpack "^5.40.0" +    webpack-merge "^5.8.0" + +"@docusaurus/utils-common@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.6.tgz#afd26a9f67b16479058ead66a310738c21293ae5" +  integrity sha512-MKm6bJxvsYWRl072jLR60z+71tTWSxoERh2eTmCYlegFnu3Tby3HOC8I3jDcC6VpVuoDGsBGNoQbOgy2LqQbXQ== +  dependencies: +    "@docusaurus/types" "2.0.0-beta.6" +    tslib "^2.2.0" + +"@docusaurus/utils-validation@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.6.tgz#7b98216de844138e9606a128c09182185ed84621" +  integrity sha512-v0nk9bpawUd2JFDFyiHDmZuMG+/O1UvxtxvcRbvrxrul+rlzD7Q9CGxMgW3Grp2OCKQ4yFXRidBIccwqON5AVw== +  dependencies: +    "@docusaurus/utils" "2.0.0-beta.6" +    chalk "^4.1.1" +    joi "^17.4.0" +    tslib "^2.1.0" + +"@docusaurus/utils@2.0.0-beta.6": +  version "2.0.0-beta.6" +  resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.6.tgz#1438df9f28b632fe7a4f50663340b463cff07cab" +  integrity sha512-S72/o7VDaTvrXJy+NpfuctghGGoMW30m94PMkrL3I6V+o5eE2Uzax7dbM++moclmHvi0/Khv+TXmRIQs6ZvwgQ== +  dependencies: +    "@docusaurus/types" "2.0.0-beta.6" +    "@types/github-slugger" "^1.3.0" +    chalk "^4.1.1" +    escape-string-regexp "^4.0.0" +    fs-extra "^10.0.0" +    globby "^11.0.4" +    gray-matter "^4.0.3" +    lodash "^4.17.20" +    micromatch "^4.0.4" +    resolve-pathname "^3.0.0" +    tslib "^2.2.0" + +"@hapi/hoek@^9.0.0": +  version "9.2.1" +  resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" +  integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== + +"@hapi/topo@^5.0.0": +  version "5.1.0" +  resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" +  integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== +  dependencies: +    "@hapi/hoek" "^9.0.0" + +"@mdx-js/mdx@^1.6.21": +  version "1.6.22" +  resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" +  integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA== +  dependencies: +    "@babel/core" "7.12.9" +    "@babel/plugin-syntax-jsx" "7.12.1" +    "@babel/plugin-syntax-object-rest-spread" "7.8.3" +    "@mdx-js/util" "1.6.22" +    babel-plugin-apply-mdx-type-prop "1.6.22" +    babel-plugin-extract-import-names "1.6.22" +    camelcase-css "2.0.1" +    detab "2.0.4" +    hast-util-raw "6.0.1" +    lodash.uniq "4.5.0" +    mdast-util-to-hast "10.0.1" +    remark-footnotes "2.0.0" +    remark-mdx "1.6.22" +    remark-parse "8.0.3" +    remark-squeeze-paragraphs "4.0.0" +    style-to-object "0.3.0" +    unified "9.2.0" +    unist-builder "2.0.3" +    unist-util-visit "2.0.3" + +"@mdx-js/react@^1.6.21": +  version "1.6.22" +  resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573" +  integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg== + +"@mdx-js/util@1.6.22": +  version "1.6.22" +  resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" +  integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== + +"@nodelib/fs.scandir@2.1.5": +  version "2.1.5" +  resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" +  integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== +  dependencies: +    "@nodelib/fs.stat" "2.0.5" +    run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +  version "2.0.5" +  resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" +  integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": +  version "1.2.8" +  resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" +  integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== +  dependencies: +    "@nodelib/fs.scandir" "2.1.5" +    fastq "^1.6.0" + +"@polka/url@^1.0.0-next.20": +  version "1.0.0-next.21" +  resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" +  integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== + +"@sideway/address@^4.1.0": +  version "4.1.2" +  resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.2.tgz#811b84333a335739d3969cfc434736268170cad1" +  integrity sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA== +  dependencies: +    "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.0": +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" +  integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== + +"@sideway/pinpoint@^2.0.0": +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" +  integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sindresorhus/is@^0.14.0": +  version "0.14.0" +  resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" +  integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@slorber/static-site-generator-webpack-plugin@^4.0.0": +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.1.tgz#0c8852146441aaa683693deaa5aee2f991d94841" +  integrity sha512-PSv4RIVO1Y3kvHxjvqeVisk3E9XFoO04uwYBDWe217MFqKspplYswTuKLiJu0aLORQWzuQjfVsSlLPojwfYsLw== +  dependencies: +    bluebird "^3.7.1" +    cheerio "^0.22.0" +    eval "^0.1.4" +    url "^0.11.0" +    webpack-sources "^1.4.3" + +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": +  version "5.4.0" +  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" +  integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== + +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": +  version "5.4.0" +  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" +  integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" +  integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" +  integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== + +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": +  version "5.4.0" +  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" +  integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== + +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": +  version "5.4.0" +  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" +  integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== + +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": +  version "5.4.0" +  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" +  integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== + +"@svgr/babel-plugin-transform-svg-component@^5.5.0": +  version "5.5.0" +  resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" +  integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== + +"@svgr/babel-preset@^5.5.0": +  version "5.5.0" +  resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" +  integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== +  dependencies: +    "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" +    "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" +    "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" +    "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" +    "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" +    "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" +    "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" +    "@svgr/babel-plugin-transform-svg-component" "^5.5.0" + +"@svgr/core@^5.5.0": +  version "5.5.0" +  resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" +  integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== +  dependencies: +    "@svgr/plugin-jsx" "^5.5.0" +    camelcase "^6.2.0" +    cosmiconfig "^7.0.0" + +"@svgr/hast-util-to-babel-ast@^5.5.0": +  version "5.5.0" +  resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" +  integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== +  dependencies: +    "@babel/types" "^7.12.6" + +"@svgr/plugin-jsx@^5.5.0": +  version "5.5.0" +  resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" +  integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== +  dependencies: +    "@babel/core" "^7.12.3" +    "@svgr/babel-preset" "^5.5.0" +    "@svgr/hast-util-to-babel-ast" "^5.5.0" +    svg-parser "^2.0.2" + +"@svgr/plugin-svgo@^5.5.0": +  version "5.5.0" +  resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" +  integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== +  dependencies: +    cosmiconfig "^7.0.0" +    deepmerge "^4.2.2" +    svgo "^1.2.2" + +"@svgr/webpack@^5.5.0": +  version "5.5.0" +  resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" +  integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== +  dependencies: +    "@babel/core" "^7.12.3" +    "@babel/plugin-transform-react-constant-elements" "^7.12.1" +    "@babel/preset-env" "^7.12.1" +    "@babel/preset-react" "^7.12.5" +    "@svgr/core" "^5.5.0" +    "@svgr/plugin-jsx" "^5.5.0" +    "@svgr/plugin-svgo" "^5.5.0" +    loader-utils "^2.0.0" + +"@szmarczak/http-timer@^1.1.2": +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" +  integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== +  dependencies: +    defer-to-connect "^1.0.1" + +"@trysound/sax@0.2.0": +  version "0.2.0" +  resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" +  integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@tsconfig/docusaurus@^1.0.4": +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/@tsconfig/docusaurus/-/docusaurus-1.0.4.tgz#fc40f87a672568678d83533dd4031a09d75877ca" +  integrity sha512-I6sziQAzLrrqj9r6S26c7aOAjfGVXIE7gWdNONPwnpDcHiMRMQut1s1YCi/APem3dOy23tAb2rvHfNtGCaWuUQ== + +"@types/eslint-scope@^3.7.0": +  version "3.7.1" +  resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e" +  integrity sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g== +  dependencies: +    "@types/eslint" "*" +    "@types/estree" "*" + +"@types/eslint@*": +  version "7.28.0" +  resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a" +  integrity sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A== +  dependencies: +    "@types/estree" "*" +    "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.50": +  version "0.0.50" +  resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" +  integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== + +"@types/github-slugger@^1.3.0": +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/@types/github-slugger/-/github-slugger-1.3.0.tgz#16ab393b30d8ae2a111ac748a015ac05a1fc5524" +  integrity sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g== + +"@types/glob@^7.1.1": +  version "7.1.4" +  resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" +  integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== +  dependencies: +    "@types/minimatch" "*" +    "@types/node" "*" + +"@types/hast@^2.0.0": +  version "2.3.4" +  resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" +  integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g== +  dependencies: +    "@types/unist" "*" + +"@types/history@*": +  version "4.7.9" +  resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.9.tgz#1cfb6d60ef3822c589f18e70f8b12f9a28ce8724" +  integrity sha512-MUc6zSmU3tEVnkQ78q0peeEjKWPUADMlC/t++2bI8WnAG2tvYRPIgHG8lWkXwqc8MsUF6Z2MOf+Mh5sazOmhiQ== + +"@types/html-minifier-terser@^5.0.0": +  version "5.1.2" +  resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz#693b316ad323ea97eed6b38ed1a3cc02b1672b57" +  integrity sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w== + +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8": +  version "7.0.9" +  resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" +  integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + +"@types/mdast@^3.0.0": +  version "3.0.10" +  resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" +  integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== +  dependencies: +    "@types/unist" "*" + +"@types/minimatch@*": +  version "3.0.5" +  resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" +  integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/node@*": +  version "16.10.2" +  resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.2.tgz#5764ca9aa94470adb4e1185fe2e9f19458992b2e" +  integrity sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ== + +"@types/node@^15.0.1": +  version "15.14.9" +  resolved "https://registry.yarnpkg.com/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" +  integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== + +"@types/parse-json@^4.0.0": +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" +  integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/parse5@^5.0.0": +  version "5.0.3" +  resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" +  integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== + +"@types/prop-types@*": +  version "15.7.4" +  resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" +  integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + +"@types/q@^1.5.1": +  version "1.5.5" +  resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" +  integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== + +"@types/react-helmet@^6.1.2": +  version "6.1.3" +  resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-6.1.3.tgz#1a58b26a79e464c59d3f9cdd5b7ece485335937b" +  integrity sha512-U4onVxaZxAp78KpXsfmyCIhLjsvJJ3goG3CYFOo+xW0cPYAz9oe5cBAUSAcN7l35OTbrFvu9TuE0YkcZMKGr4A== +  dependencies: +    "@types/react" "*" + +"@types/react-router-dom@^5.1.8": +  version "5.3.0" +  resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.0.tgz#8c4e0aa0ccaf638ba965829ad29a10ac3cbe2212" +  integrity sha512-svUzpEpKDwK8nmfV2vpZNSsiijFNKY8+gUqGqvGGOVrXvX58k1JIJubZa5igkwacbq/0umphO5SsQn/BQsnKpw== +  dependencies: +    "@types/history" "*" +    "@types/react" "*" +    "@types/react-router" "*" + +"@types/react-router@*": +  version "5.1.16" +  resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.16.tgz#f3ba045fb96634e38b21531c482f9aeb37608a99" +  integrity sha512-8d7nR/fNSqlTFGHti0R3F9WwIertOaaA1UEB8/jr5l5mDMOs4CidEgvvYMw4ivqrBK+vtVLxyTj2P+Pr/dtgzg== +  dependencies: +    "@types/history" "*" +    "@types/react" "*" + +"@types/react@*", "@types/react@^17.0.14": +  version "17.0.27" +  resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.27.tgz#6498ed9b3ad117e818deb5525fa1946c09f2e0e6" +  integrity sha512-zgiJwtsggVGtr53MndV7jfiUESTqrbxOcBvwfe6KS/9bzaVPCTDieTWnFNecVNx6EAaapg5xsLLWFfHHR437AA== +  dependencies: +    "@types/prop-types" "*" +    "@types/scheduler" "*" +    csstype "^3.0.2" + +"@types/sax@^1.2.1": +  version "1.2.3" +  resolved "https://registry.yarnpkg.com/@types/sax/-/sax-1.2.3.tgz#b630ac1403ebd7812e0bf9a10de9bf5077afb348" +  integrity sha512-+QSw6Tqvs/KQpZX8DvIl3hZSjNFLW/OqE5nlyHXtTwODaJvioN2rOWpBNEWZp2HZUFhOh+VohmJku/WxEXU2XA== +  dependencies: +    "@types/node" "*" + +"@types/scheduler@*": +  version "0.16.2" +  resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" +  integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": +  version "2.0.6" +  resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" +  integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== + +"@webassemblyjs/ast@1.11.1": +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" +  integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== +  dependencies: +    "@webassemblyjs/helper-numbers" "1.11.1" +    "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" +  integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + +"@webassemblyjs/helper-api-error@1.11.1": +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" +  integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + +"@webassemblyjs/helper-buffer@1.11.1": +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" +  integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-numbers@1.11.1": +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" +  integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== +  dependencies: +    "@webassemblyjs/floating-point-hex-parser" "1.11.1" +    "@webassemblyjs/helper-api-error" "1.11.1" +    "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" +  integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + +"@webassemblyjs/helper-wasm-section@1.11.1": +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" +  integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== +  dependencies: +    "@webassemblyjs/ast" "1.11.1" +    "@webassemblyjs/helper-buffer" "1.11.1" +    "@webassemblyjs/helper-wasm-bytecode" "1.11.1" +    "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/ieee754@1.11.1": +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" +  integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== +  dependencies: +    "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" +  integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== +  dependencies: +    "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" +  integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" +  integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== +  dependencies: +    "@webassemblyjs/ast" "1.11.1" +    "@webassemblyjs/helper-buffer" "1.11.1" +    "@webassemblyjs/helper-wasm-bytecode" "1.11.1" +    "@webassemblyjs/helper-wasm-section" "1.11.1" +    "@webassemblyjs/wasm-gen" "1.11.1" +    "@webassemblyjs/wasm-opt" "1.11.1" +    "@webassemblyjs/wasm-parser" "1.11.1" +    "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" +  integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== +  dependencies: +    "@webassemblyjs/ast" "1.11.1" +    "@webassemblyjs/helper-wasm-bytecode" "1.11.1" +    "@webassemblyjs/ieee754" "1.11.1" +    "@webassemblyjs/leb128" "1.11.1" +    "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" +  integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== +  dependencies: +    "@webassemblyjs/ast" "1.11.1" +    "@webassemblyjs/helper-buffer" "1.11.1" +    "@webassemblyjs/wasm-gen" "1.11.1" +    "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" +  integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== +  dependencies: +    "@webassemblyjs/ast" "1.11.1" +    "@webassemblyjs/helper-api-error" "1.11.1" +    "@webassemblyjs/helper-wasm-bytecode" "1.11.1" +    "@webassemblyjs/ieee754" "1.11.1" +    "@webassemblyjs/leb128" "1.11.1" +    "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" +  integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== +  dependencies: +    "@webassemblyjs/ast" "1.11.1" +    "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" +  integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": +  version "4.2.2" +  resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" +  integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: +  version "1.3.7" +  resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" +  integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +  dependencies: +    mime-types "~2.1.24" +    negotiator "0.6.2" + +acorn-import-assertions@^1.7.6: +  version "1.8.0" +  resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" +  integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + +acorn-walk@^8.0.0: +  version "8.2.0" +  resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" +  integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.0.4, acorn@^8.4.1: +  version "8.5.0" +  resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" +  integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== + +address@1.1.2, address@^1.0.1: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" +  integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +aggregate-error@^3.0.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" +  integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== +  dependencies: +    clean-stack "^2.0.0" +    indent-string "^4.0.0" + +ajv-errors@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" +  integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.5.2: +  version "3.5.2" +  resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" +  integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.12.4, ajv@^6.12.5: +  version "6.12.6" +  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" +  integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== +  dependencies: +    fast-deep-equal "^3.1.1" +    fast-json-stable-stringify "^2.0.0" +    json-schema-traverse "^0.4.1" +    uri-js "^4.2.2" + +algoliasearch-helper@^3.3.4: +  version "3.5.5" +  resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.5.5.tgz#05263869d3c8a7292278d7e49630f52520f204d7" +  integrity sha512-JDH14gMpSj8UzEaKwVkrqKOeAOyK0dDWsFlKvWhk0Xl5yw9FyafYf1xZPb4uSXaPBAFQtUouFlR1Zt68BCY0/w== +  dependencies: +    events "^1.1.1" + +algoliasearch@^4.0.0, algoliasearch@^4.8.4: +  version "4.10.5" +  resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.10.5.tgz#1faf34a3ae5ac3bef27282eb141251c70c7f5db2" +  integrity sha512-KmH2XkiN+8FxhND4nWFbQDkIoU6g2OjfeU9kIv4Lb+EiOOs3Gpp7jvd+JnatsCisAZsnWQdjd7zVlW7I/85QvQ== +  dependencies: +    "@algolia/cache-browser-local-storage" "4.10.5" +    "@algolia/cache-common" "4.10.5" +    "@algolia/cache-in-memory" "4.10.5" +    "@algolia/client-account" "4.10.5" +    "@algolia/client-analytics" "4.10.5" +    "@algolia/client-common" "4.10.5" +    "@algolia/client-personalization" "4.10.5" +    "@algolia/client-search" "4.10.5" +    "@algolia/logger-common" "4.10.5" +    "@algolia/logger-console" "4.10.5" +    "@algolia/requester-browser-xhr" "4.10.5" +    "@algolia/requester-common" "4.10.5" +    "@algolia/requester-node-http" "4.10.5" +    "@algolia/transporter" "4.10.5" + +alphanum-sort@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" +  integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-align@^3.0.0: +  version "3.0.1" +  resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" +  integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== +  dependencies: +    string-width "^4.1.0" + +ansi-colors@^3.0.0: +  version "3.2.4" +  resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" +  integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^4.3.1: +  version "4.3.2" +  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" +  integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== +  dependencies: +    type-fest "^0.21.3" + +ansi-html@0.0.7: +  version "0.0.7" +  resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" +  integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" +  integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^4.1.0: +  version "4.1.0" +  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" +  integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" +  integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: +  version "3.2.1" +  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" +  integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== +  dependencies: +    color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: +  version "4.3.0" +  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" +  integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== +  dependencies: +    color-convert "^2.0.1" + +anymatch@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" +  integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== +  dependencies: +    micromatch "^3.1.4" +    normalize-path "^2.1.1" + +anymatch@~3.1.2: +  version "3.1.2" +  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" +  integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== +  dependencies: +    normalize-path "^3.0.0" +    picomatch "^2.0.4" + +arg@^5.0.0: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb" +  integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA== + +argparse@^1.0.7: +  version "1.0.10" +  resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" +  integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== +  dependencies: +    sprintf-js "~1.0.2" + +argparse@^2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" +  integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +arr-diff@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" +  integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" +  integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" +  integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-flatten@1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" +  integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: +  version "2.1.2" +  resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" +  integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-union@^1.0.1: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" +  integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= +  dependencies: +    array-uniq "^1.0.1" + +array-union@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" +  integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" +  integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: +  version "0.3.2" +  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" +  integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +asap@~2.0.3: +  version "2.0.6" +  resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" +  integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +assign-symbols@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" +  integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +async-each@^1.0.1: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" +  integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" +  integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.2: +  version "2.6.3" +  resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" +  integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== +  dependencies: +    lodash "^4.17.14" + +at-least-node@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" +  integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +atob@^2.1.2: +  version "2.1.2" +  resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" +  integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^10.2.0, autoprefixer@^10.2.5: +  version "10.3.6" +  resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.3.6.tgz#537c8a046e32ec46bfe528bcc9e2a5f2d87cd4c4" +  integrity sha512-3bDjTfF0MfZntwVCSd18XAT2Zndufh3Mep+mafbzdIQEeWbncVRUVDjH8/EPANV9Hq40seJ24QcYAyhUsFz7gQ== +  dependencies: +    browserslist "^4.17.1" +    caniuse-lite "^1.0.30001260" +    fraction.js "^4.1.1" +    nanocolors "^0.2.8" +    normalize-range "^0.1.2" +    postcss-value-parser "^4.1.0" + +axios@^0.21.1: +  version "0.21.4" +  resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" +  integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== +  dependencies: +    follow-redirects "^1.14.0" + +babel-loader@^8.2.2: +  version "8.2.2" +  resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" +  integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== +  dependencies: +    find-cache-dir "^3.3.1" +    loader-utils "^1.4.0" +    make-dir "^3.1.0" +    schema-utils "^2.6.5" + +babel-plugin-apply-mdx-type-prop@1.6.22: +  version "1.6.22" +  resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz#d216e8fd0de91de3f1478ef3231e05446bc8705b" +  integrity sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ== +  dependencies: +    "@babel/helper-plugin-utils" "7.10.4" +    "@mdx-js/util" "1.6.22" + +babel-plugin-dynamic-import-node@2.3.0: +  version "2.3.0" +  resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" +  integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== +  dependencies: +    object.assign "^4.1.0" + +babel-plugin-dynamic-import-node@^2.3.3: +  version "2.3.3" +  resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" +  integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== +  dependencies: +    object.assign "^4.1.0" + +babel-plugin-extract-import-names@1.6.22: +  version "1.6.22" +  resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz#de5f9a28eb12f3eb2578bf74472204e66d1a13dc" +  integrity sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ== +  dependencies: +    "@babel/helper-plugin-utils" "7.10.4" + +babel-plugin-polyfill-corejs2@^0.2.2: +  version "0.2.2" +  resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" +  integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== +  dependencies: +    "@babel/compat-data" "^7.13.11" +    "@babel/helper-define-polyfill-provider" "^0.2.2" +    semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.2.2: +  version "0.2.5" +  resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz#2779846a16a1652244ae268b1e906ada107faf92" +  integrity sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw== +  dependencies: +    "@babel/helper-define-polyfill-provider" "^0.2.2" +    core-js-compat "^3.16.2" + +babel-plugin-polyfill-regenerator@^0.2.2: +  version "0.2.2" +  resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" +  integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== +  dependencies: +    "@babel/helper-define-polyfill-provider" "^0.2.2" + +bail@^1.0.0: +  version "1.0.5" +  resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" +  integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== + +balanced-match@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" +  integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base16@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" +  integrity sha1-4pf2DX7BAUp6lxo568ipjAtoHnA= + +base@^0.11.1: +  version "0.11.2" +  resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" +  integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== +  dependencies: +    cache-base "^1.0.1" +    class-utils "^0.3.5" +    component-emitter "^1.2.1" +    define-property "^1.0.0" +    isobject "^3.0.1" +    mixin-deep "^1.2.0" +    pascalcase "^0.1.1" + +batch@0.6.1: +  version "0.6.1" +  resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" +  integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +big.js@^5.2.2: +  version "5.2.2" +  resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" +  integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: +  version "1.13.1" +  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" +  integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" +  integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: +  version "1.5.0" +  resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" +  integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== +  dependencies: +    file-uri-to-path "1.0.0" + +bluebird@^3.7.1: +  version "3.7.2" +  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" +  integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +body-parser@1.19.0: +  version "1.19.0" +  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" +  integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== +  dependencies: +    bytes "3.1.0" +    content-type "~1.0.4" +    debug "2.6.9" +    depd "~1.1.2" +    http-errors "1.7.2" +    iconv-lite "0.4.24" +    on-finished "~2.3.0" +    qs "6.7.0" +    raw-body "2.4.0" +    type-is "~1.6.17" + +bonjour@^3.5.0: +  version "3.5.0" +  resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" +  integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= +  dependencies: +    array-flatten "^2.1.0" +    deep-equal "^1.0.1" +    dns-equal "^1.0.0" +    dns-txt "^2.0.2" +    multicast-dns "^6.0.1" +    multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" +  integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +boxen@^5.0.0, boxen@^5.0.1: +  version "5.1.2" +  resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" +  integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== +  dependencies: +    ansi-align "^3.0.0" +    camelcase "^6.2.0" +    chalk "^4.1.0" +    cli-boxes "^2.2.1" +    string-width "^4.2.2" +    type-fest "^0.20.2" +    widest-line "^3.1.0" +    wrap-ansi "^7.0.0" + +brace-expansion@^1.1.7: +  version "1.1.11" +  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" +  integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== +  dependencies: +    balanced-match "^1.0.0" +    concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: +  version "2.3.2" +  resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" +  integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== +  dependencies: +    arr-flatten "^1.1.0" +    array-unique "^0.3.2" +    extend-shallow "^2.0.1" +    fill-range "^4.0.0" +    isobject "^3.0.1" +    repeat-element "^1.1.2" +    snapdragon "^0.8.1" +    snapdragon-node "^2.0.1" +    split-string "^3.0.2" +    to-regex "^3.0.1" + +braces@^3.0.1, braces@~3.0.2: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" +  integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== +  dependencies: +    fill-range "^7.0.1" + +browserslist@4.14.2: +  version "4.14.2" +  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce" +  integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== +  dependencies: +    caniuse-lite "^1.0.30001125" +    electron-to-chromium "^1.3.564" +    escalade "^3.0.2" +    node-releases "^1.1.61" + +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.6, browserslist@^4.17.1: +  version "4.17.2" +  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.2.tgz#aa15dbd2fab399a399fe4df601bb09363c5458a6" +  integrity sha512-jSDZyqJmkKMEMi7SZAgX5UltFdR5NAO43vY0AwTpu4X3sGH7GLLQ83KiUomgrnvZRCeW0yPPnKqnxPqQOER9zQ== +  dependencies: +    caniuse-lite "^1.0.30001261" +    electron-to-chromium "^1.3.854" +    escalade "^3.1.1" +    nanocolors "^0.2.12" +    node-releases "^1.1.76" + +buffer-from@^1.0.0: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" +  integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-indexof@^1.0.0: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" +  integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +bytes@3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" +  integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" +  integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cache-base@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" +  integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== +  dependencies: +    collection-visit "^1.0.0" +    component-emitter "^1.2.1" +    get-value "^2.0.6" +    has-value "^1.0.0" +    isobject "^3.0.1" +    set-value "^2.0.0" +    to-object-path "^0.3.0" +    union-value "^1.0.0" +    unset-value "^1.0.0" + +cacheable-request@^6.0.0: +  version "6.1.0" +  resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" +  integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== +  dependencies: +    clone-response "^1.0.2" +    get-stream "^5.1.0" +    http-cache-semantics "^4.0.0" +    keyv "^3.0.0" +    lowercase-keys "^2.0.0" +    normalize-url "^4.1.0" +    responselike "^1.0.2" + +call-bind@^1.0.0, call-bind@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" +  integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +  dependencies: +    function-bind "^1.1.1" +    get-intrinsic "^1.0.2" + +callsites@^3.0.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" +  integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.1: +  version "4.1.2" +  resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" +  integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== +  dependencies: +    pascal-case "^3.1.2" +    tslib "^2.0.3" + +camelcase-css@2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" +  integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.0.0: +  version "5.3.1" +  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" +  integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: +  version "6.2.0" +  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" +  integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + +caniuse-api@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" +  integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== +  dependencies: +    browserslist "^4.0.0" +    caniuse-lite "^1.0.0" +    lodash.memoize "^4.1.2" +    lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001260, caniuse-lite@^1.0.30001261: +  version "1.0.30001264" +  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001264.tgz#88f625a60efb6724c7c62ac698bc8dbd9757e55b" +  integrity sha512-Ftfqqfcs/ePiUmyaySsQ4PUsdcYyXG2rfoBVsk3iY1ahHaJEw65vfb7Suzqm+cEkwwPIv/XWkg27iCpRavH4zA== + +ccount@^1.0.0, ccount@^1.0.3: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" +  integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1: +  version "2.4.2" +  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" +  integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== +  dependencies: +    ansi-styles "^3.2.1" +    escape-string-regexp "^1.0.5" +    supports-color "^5.3.0" + +chalk@^4.1.0, chalk@^4.1.1: +  version "4.1.2" +  resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" +  integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== +  dependencies: +    ansi-styles "^4.1.0" +    supports-color "^7.1.0" + +character-entities-legacy@^1.0.0: +  version "1.1.4" +  resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" +  integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: +  version "1.2.4" +  resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" +  integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: +  version "1.1.4" +  resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" +  integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + +cheerio@^0.22.0: +  version "0.22.0" +  resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" +  integrity sha1-qbqoYKP5tZWmuBsahocxIe06Jp4= +  dependencies: +    css-select "~1.2.0" +    dom-serializer "~0.1.0" +    entities "~1.1.1" +    htmlparser2 "^3.9.1" +    lodash.assignin "^4.0.9" +    lodash.bind "^4.1.4" +    lodash.defaults "^4.0.1" +    lodash.filter "^4.4.0" +    lodash.flatten "^4.2.0" +    lodash.foreach "^4.3.0" +    lodash.map "^4.4.0" +    lodash.merge "^4.4.0" +    lodash.pick "^4.2.1" +    lodash.reduce "^4.4.0" +    lodash.reject "^4.4.0" +    lodash.some "^4.4.0" + +chokidar@^2.1.8: +  version "2.1.8" +  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" +  integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== +  dependencies: +    anymatch "^2.0.0" +    async-each "^1.0.1" +    braces "^2.3.2" +    glob-parent "^3.1.0" +    inherits "^2.0.3" +    is-binary-path "^1.0.0" +    is-glob "^4.0.0" +    normalize-path "^3.0.0" +    path-is-absolute "^1.0.0" +    readdirp "^2.2.1" +    upath "^1.1.1" +  optionalDependencies: +    fsevents "^1.2.7" + +chokidar@^3.5.1: +  version "3.5.2" +  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" +  integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== +  dependencies: +    anymatch "~3.1.2" +    braces "~3.0.2" +    glob-parent "~5.1.2" +    is-binary-path "~2.1.0" +    is-glob "~4.0.1" +    normalize-path "~3.0.0" +    readdirp "~3.6.0" +  optionalDependencies: +    fsevents "~2.3.2" + +chrome-trace-event@^1.0.2: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" +  integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" +  integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.1.1: +  version "3.2.0" +  resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" +  integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== + +class-utils@^0.3.5: +  version "0.3.6" +  resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" +  integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== +  dependencies: +    arr-union "^3.1.0" +    define-property "^0.2.5" +    isobject "^3.0.0" +    static-extend "^0.1.1" + +clean-css@^4.2.3: +  version "4.2.3" +  resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" +  integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== +  dependencies: +    source-map "~0.6.0" + +clean-css@^5.1.5: +  version "5.2.1" +  resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.1.tgz#e5bdb1bee5f332c67e98cb6181251d4f88c0a6ab" +  integrity sha512-ooQCa1/70oRfVdUUGjKpbHuxgMgm8BsDT5EBqBGvPxMoRoGXf4PNx5mMnkjzJ9Ptx4vvmDdha0QVh86QtYIk1g== +  dependencies: +    source-map "~0.6.0" + +clean-stack@^2.0.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" +  integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^2.2.1: +  version "2.2.1" +  resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" +  integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + +cliui@^5.0.0: +  version "5.0.0" +  resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" +  integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== +  dependencies: +    string-width "^3.1.0" +    strip-ansi "^5.2.0" +    wrap-ansi "^5.1.0" + +clone-deep@^4.0.1: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" +  integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== +  dependencies: +    is-plain-object "^2.0.4" +    kind-of "^6.0.2" +    shallow-clone "^3.0.0" + +clone-response@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" +  integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= +  dependencies: +    mimic-response "^1.0.0" + +clsx@^1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" +  integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== + +coa@^2.0.2: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" +  integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== +  dependencies: +    "@types/q" "^1.5.1" +    chalk "^2.4.1" +    q "^1.1.2" + +collapse-white-space@^1.0.2: +  version "1.0.6" +  resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" +  integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== + +collection-visit@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" +  integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= +  dependencies: +    map-visit "^1.0.0" +    object-visit "^1.0.0" + +color-convert@^1.9.0: +  version "1.9.3" +  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" +  integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== +  dependencies: +    color-name "1.1.3" + +color-convert@^2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" +  integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== +  dependencies: +    color-name "~1.1.4" + +color-name@1.1.3: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" +  integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: +  version "1.1.4" +  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" +  integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colord@^2.0.1, colord@^2.6: +  version "2.8.0" +  resolved "https://registry.yarnpkg.com/colord/-/colord-2.8.0.tgz#64fb7aa03de7652b5a39eee50271a104c2783b12" +  integrity sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA== + +combine-promises@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.1.0.tgz#72db90743c0ca7aab7d0d8d2052fd7b0f674de71" +  integrity sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg== + +comma-separated-tokens@^1.0.0: +  version "1.0.8" +  resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" +  integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== + +commander@^2.20.0: +  version "2.20.3" +  resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" +  integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.1.1: +  version "4.1.1" +  resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" +  integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@^5.1.0: +  version "5.1.0" +  resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" +  integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +commander@^6.2.0: +  version "6.2.1" +  resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" +  integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + +commander@^7.2.0: +  version "7.2.0" +  resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" +  integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commondir@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" +  integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" +  integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: +  version "2.0.18" +  resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" +  integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== +  dependencies: +    mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: +  version "1.7.4" +  resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" +  integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== +  dependencies: +    accepts "~1.3.5" +    bytes "3.0.0" +    compressible "~2.0.16" +    debug "2.6.9" +    on-headers "~1.0.2" +    safe-buffer "5.1.2" +    vary "~1.1.2" + +concat-map@0.0.1: +  version "0.0.1" +  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +  integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +configstore@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" +  integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== +  dependencies: +    dot-prop "^5.2.0" +    graceful-fs "^4.1.2" +    make-dir "^3.0.0" +    unique-string "^2.0.0" +    write-file-atomic "^3.0.0" +    xdg-basedir "^4.0.0" + +connect-history-api-fallback@^1.6.0: +  version "1.6.0" +  resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" +  integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +consola@^2.15.0: +  version "2.15.3" +  resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" +  integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== + +content-disposition@0.5.2: +  version "0.5.2" +  resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" +  integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= + +content-disposition@0.5.3: +  version "0.5.3" +  resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" +  integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== +  dependencies: +    safe-buffer "5.1.2" + +content-type@~1.0.4: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" +  integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.7.0: +  version "1.8.0" +  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" +  integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== +  dependencies: +    safe-buffer "~5.1.1" + +cookie-signature@1.0.6: +  version "1.0.6" +  resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" +  integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: +  version "0.4.0" +  resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" +  integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-descriptor@^0.1.0: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" +  integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copy-text-to-clipboard@^3.0.1: +  version "3.0.1" +  resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz#8cbf8f90e0a47f12e4a24743736265d157bce69c" +  integrity sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q== + +copy-webpack-plugin@^9.0.0: +  version "9.0.1" +  resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz#b71d21991599f61a4ee00ba79087b8ba279bbb59" +  integrity sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw== +  dependencies: +    fast-glob "^3.2.5" +    glob-parent "^6.0.0" +    globby "^11.0.3" +    normalize-path "^3.0.0" +    p-limit "^3.1.0" +    schema-utils "^3.0.0" +    serialize-javascript "^6.0.0" + +core-js-compat@^3.16.0, core-js-compat@^3.16.2: +  version "3.18.1" +  resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.18.1.tgz#01942a0877caf9c6e5007c027183cf0bdae6a191" +  integrity sha512-XJMYx58zo4W0kLPmIingVZA10+7TuKrMLPt83+EzDmxFJQUMcTVVmQ+n5JP4r6Z14qSzhQBRi3NSWoeVyKKXUg== +  dependencies: +    browserslist "^4.17.1" +    semver "7.0.0" + +core-js-pure@^3.16.0: +  version "3.18.1" +  resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.18.1.tgz#097d34d24484be45cea700a448d1e74622646c80" +  integrity sha512-kmW/k8MaSuqpvA1xm2l3TVlBuvW+XBkcaOroFUpO3D4lsTGQWBTb/tBDCf/PNkkPLrwgrkQRIYNPB0CeqGJWGQ== + +core-js@^3.9.1: +  version "3.18.1" +  resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.18.1.tgz#289d4be2ce0085d40fc1244c0b1a54c00454622f" +  integrity sha512-vJlUi/7YdlCZeL6fXvWNaLUPh/id12WXj3MbkMw5uOyF0PfWPBNOCNbs53YqgrvtujLNlt9JQpruyIKkUZ+PKA== + +core-util-is@~1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" +  integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^7.0.0: +  version "7.0.1" +  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" +  integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== +  dependencies: +    "@types/parse-json" "^4.0.0" +    import-fresh "^3.2.1" +    parse-json "^5.0.0" +    path-type "^4.0.0" +    yaml "^1.10.0" + +cross-fetch@^3.0.4: +  version "3.1.4" +  resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39" +  integrity sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ== +  dependencies: +    node-fetch "2.6.1" + +cross-spawn@7.0.3, cross-spawn@^7.0.3: +  version "7.0.3" +  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" +  integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== +  dependencies: +    path-key "^3.1.0" +    shebang-command "^2.0.0" +    which "^2.0.1" + +cross-spawn@^6.0.0: +  version "6.0.5" +  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" +  integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== +  dependencies: +    nice-try "^1.0.4" +    path-key "^2.0.1" +    semver "^5.5.0" +    shebang-command "^1.2.0" +    which "^1.2.9" + +crypto-random-string@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" +  integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +css-color-names@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-1.0.1.tgz#6ff7ee81a823ad46e020fa2fd6ab40a887e2ba67" +  integrity sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA== + +css-declaration-sorter@^6.0.3: +  version "6.1.3" +  resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz#e9852e4cf940ba79f509d9425b137d1f94438dc2" +  integrity sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA== +  dependencies: +    timsort "^0.3.0" + +css-loader@^5.1.1: +  version "5.2.7" +  resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.7.tgz#9b9f111edf6fb2be5dc62525644cbc9c232064ae" +  integrity sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg== +  dependencies: +    icss-utils "^5.1.0" +    loader-utils "^2.0.0" +    postcss "^8.2.15" +    postcss-modules-extract-imports "^3.0.0" +    postcss-modules-local-by-default "^4.0.0" +    postcss-modules-scope "^3.0.0" +    postcss-modules-values "^4.0.0" +    postcss-value-parser "^4.1.0" +    schema-utils "^3.0.0" +    semver "^7.3.5" + +css-minimizer-webpack-plugin@^3.0.1: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.0.2.tgz#8fadbdf10128cb40227bff275a4bb47412534245" +  integrity sha512-B3I5e17RwvKPJwsxjjWcdgpU/zqylzK1bPVghcmpFHRL48DXiBgrtqz1BJsn68+t/zzaLp9kYAaEDvQ7GyanFQ== +  dependencies: +    cssnano "^5.0.6" +    jest-worker "^27.0.2" +    p-limit "^3.0.2" +    postcss "^8.3.5" +    schema-utils "^3.0.0" +    serialize-javascript "^6.0.0" +    source-map "^0.6.1" + +css-select-base-adapter@^0.1.1: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" +  integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" +  integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== +  dependencies: +    boolbase "^1.0.0" +    css-what "^3.2.1" +    domutils "^1.7.0" +    nth-check "^1.0.2" + +css-select@^4.1.3: +  version "4.1.3" +  resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" +  integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== +  dependencies: +    boolbase "^1.0.0" +    css-what "^5.0.0" +    domhandler "^4.2.0" +    domutils "^2.6.0" +    nth-check "^2.0.0" + +css-select@~1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" +  integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= +  dependencies: +    boolbase "~1.0.0" +    css-what "2.1" +    domutils "1.5.1" +    nth-check "~1.0.1" + +css-tree@1.0.0-alpha.37: +  version "1.0.0-alpha.37" +  resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" +  integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== +  dependencies: +    mdn-data "2.0.4" +    source-map "^0.6.1" + +css-tree@^1.1.2, css-tree@^1.1.3: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" +  integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== +  dependencies: +    mdn-data "2.0.14" +    source-map "^0.6.1" + +css-what@2.1: +  version "2.1.3" +  resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" +  integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css-what@^3.2.1: +  version "3.4.2" +  resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" +  integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css-what@^5.0.0: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" +  integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg== + +cssesc@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" +  integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-advanced@^5.1.1: +  version "5.1.4" +  resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.1.4.tgz#b492d03756550f75cd8131d59105efdea88c2f7e" +  integrity sha512-pFtIM15OzryDk09RcK+bBBtwSl80+g/POTAf/sVPqPmnOAleK6vBkY5wTmPjqGyV5/UTPjEzWMtbOQ3Z0kCBXA== +  dependencies: +    autoprefixer "^10.2.0" +    cssnano-preset-default "^5.1.4" +    postcss-discard-unused "^5.0.1" +    postcss-merge-idents "^5.0.1" +    postcss-reduce-idents "^5.0.1" +    postcss-zindex "^5.0.1" + +cssnano-preset-default@^5.1.4: +  version "5.1.4" +  resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz#359943bf00c5c8e05489f12dd25f3006f2c1cbd2" +  integrity sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ== +  dependencies: +    css-declaration-sorter "^6.0.3" +    cssnano-utils "^2.0.1" +    postcss-calc "^8.0.0" +    postcss-colormin "^5.2.0" +    postcss-convert-values "^5.0.1" +    postcss-discard-comments "^5.0.1" +    postcss-discard-duplicates "^5.0.1" +    postcss-discard-empty "^5.0.1" +    postcss-discard-overridden "^5.0.1" +    postcss-merge-longhand "^5.0.2" +    postcss-merge-rules "^5.0.2" +    postcss-minify-font-values "^5.0.1" +    postcss-minify-gradients "^5.0.2" +    postcss-minify-params "^5.0.1" +    postcss-minify-selectors "^5.1.0" +    postcss-normalize-charset "^5.0.1" +    postcss-normalize-display-values "^5.0.1" +    postcss-normalize-positions "^5.0.1" +    postcss-normalize-repeat-style "^5.0.1" +    postcss-normalize-string "^5.0.1" +    postcss-normalize-timing-functions "^5.0.1" +    postcss-normalize-unicode "^5.0.1" +    postcss-normalize-url "^5.0.2" +    postcss-normalize-whitespace "^5.0.1" +    postcss-ordered-values "^5.0.2" +    postcss-reduce-initial "^5.0.1" +    postcss-reduce-transforms "^5.0.1" +    postcss-svgo "^5.0.2" +    postcss-unique-selectors "^5.0.1" + +cssnano-utils@^2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-2.0.1.tgz#8660aa2b37ed869d2e2f22918196a9a8b6498ce2" +  integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ== + +cssnano@^5.0.4, cssnano@^5.0.6: +  version "5.0.8" +  resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.8.tgz#39ad166256980fcc64faa08c9bb18bb5789ecfa9" +  integrity sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg== +  dependencies: +    cssnano-preset-default "^5.1.4" +    is-resolvable "^1.1.0" +    lilconfig "^2.0.3" +    yaml "^1.10.2" + +csso@^4.0.2, csso@^4.2.0: +  version "4.2.0" +  resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" +  integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== +  dependencies: +    css-tree "^1.1.2" + +csstype@^3.0.2: +  version "3.0.9" +  resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b" +  integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: +  version "2.6.9" +  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" +  integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== +  dependencies: +    ms "2.0.0" + +debug@^3.1.1, debug@^3.2.6: +  version "3.2.7" +  resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" +  integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== +  dependencies: +    ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1: +  version "4.3.2" +  resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" +  integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== +  dependencies: +    ms "2.1.2" + +decamelize@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +  integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: +  version "0.2.0" +  resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" +  integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +decompress-response@^3.3.0: +  version "3.3.0" +  resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" +  integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= +  dependencies: +    mimic-response "^1.0.0" + +deep-equal@^1.0.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" +  integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== +  dependencies: +    is-arguments "^1.0.4" +    is-date-object "^1.0.1" +    is-regex "^1.0.4" +    object-is "^1.0.1" +    object-keys "^1.1.1" +    regexp.prototype.flags "^1.2.0" + +deep-extend@^0.6.0: +  version "0.6.0" +  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" +  integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deepmerge@^4.2.2: +  version "4.2.2" +  resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" +  integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-gateway@^4.2.0: +  version "4.2.0" +  resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" +  integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== +  dependencies: +    execa "^1.0.0" +    ip-regex "^2.1.0" + +defer-to-connect@^1.0.1: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" +  integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +define-properties@^1.1.3: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" +  integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== +  dependencies: +    object-keys "^1.0.12" + +define-property@^0.2.5: +  version "0.2.5" +  resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" +  integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= +  dependencies: +    is-descriptor "^0.1.0" + +define-property@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" +  integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= +  dependencies: +    is-descriptor "^1.0.0" + +define-property@^2.0.2: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" +  integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== +  dependencies: +    is-descriptor "^1.0.2" +    isobject "^3.0.1" + +del@^4.1.1: +  version "4.1.1" +  resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" +  integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== +  dependencies: +    "@types/glob" "^7.1.1" +    globby "^6.1.0" +    is-path-cwd "^2.0.0" +    is-path-in-cwd "^2.0.0" +    p-map "^2.0.0" +    pify "^4.0.1" +    rimraf "^2.6.3" + +del@^6.0.0: +  version "6.0.0" +  resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" +  integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== +  dependencies: +    globby "^11.0.1" +    graceful-fs "^4.2.4" +    is-glob "^4.0.1" +    is-path-cwd "^2.2.0" +    is-path-inside "^3.0.2" +    p-map "^4.0.0" +    rimraf "^3.0.2" +    slash "^3.0.0" + +depd@~1.1.2: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" +  integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +destroy@~1.0.4: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" +  integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detab@2.0.4: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43" +  integrity sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g== +  dependencies: +    repeat-string "^1.5.4" + +detect-node@^2.0.4: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" +  integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-port-alt@1.1.6: +  version "1.1.6" +  resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" +  integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== +  dependencies: +    address "^1.0.1" +    debug "^2.6.0" + +detect-port@^1.3.0: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" +  integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== +  dependencies: +    address "^1.0.1" +    debug "^2.6.0" + +dir-glob@^3.0.1: +  version "3.0.1" +  resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" +  integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== +  dependencies: +    path-type "^4.0.0" + +dns-equal@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" +  integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: +  version "1.3.4" +  resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" +  integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== +  dependencies: +    ip "^1.1.0" +    safe-buffer "^5.0.1" + +dns-txt@^2.0.2: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" +  integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= +  dependencies: +    buffer-indexof "^1.0.0" + +dom-converter@^0.2.0: +  version "0.2.0" +  resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" +  integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== +  dependencies: +    utila "~0.4" + +dom-serializer@0: +  version "0.2.2" +  resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" +  integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== +  dependencies: +    domelementtype "^2.0.1" +    entities "^2.0.0" + +dom-serializer@^1.0.1: +  version "1.3.2" +  resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" +  integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== +  dependencies: +    domelementtype "^2.0.1" +    domhandler "^4.2.0" +    entities "^2.0.0" + +dom-serializer@~0.1.0: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" +  integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== +  dependencies: +    domelementtype "^1.3.0" +    entities "^1.1.1" + +domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: +  version "1.3.1" +  resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" +  integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1, domelementtype@^2.2.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" +  integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domhandler@^2.3.0: +  version "2.4.2" +  resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" +  integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== +  dependencies: +    domelementtype "1" + +domhandler@^4.0.0, domhandler@^4.2.0: +  version "4.2.2" +  resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" +  integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== +  dependencies: +    domelementtype "^2.2.0" + +domutils@1.5.1: +  version "1.5.1" +  resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" +  integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= +  dependencies: +    dom-serializer "0" +    domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: +  version "1.7.0" +  resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" +  integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== +  dependencies: +    dom-serializer "0" +    domelementtype "1" + +domutils@^2.5.2, domutils@^2.6.0: +  version "2.8.0" +  resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" +  integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== +  dependencies: +    dom-serializer "^1.0.1" +    domelementtype "^2.2.0" +    domhandler "^4.2.0" + +dot-case@^3.0.4: +  version "3.0.4" +  resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" +  integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== +  dependencies: +    no-case "^3.0.4" +    tslib "^2.0.3" + +dot-prop@^5.2.0: +  version "5.3.0" +  resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" +  integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== +  dependencies: +    is-obj "^2.0.0" + +duplexer3@^0.1.4: +  version "0.1.4" +  resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" +  integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +duplexer@^0.1.1, duplexer@^0.1.2: +  version "0.1.2" +  resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" +  integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +ee-first@1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" +  integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.854: +  version "1.3.857" +  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.857.tgz#dcc239ff8a12b6e4b501e6a5ad20fd0d5a3210f9" +  integrity sha512-a5kIr2lajm4bJ5E4D3fp8Y/BRB0Dx2VOcCRE5Gtb679mXIME/OFhWler8Gy2ksrf8gFX+EFCSIGA33FB3gqYpg== + +emoji-regex@^7.0.1: +  version "7.0.3" +  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" +  integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: +  version "8.0.0" +  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" +  integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" +  integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +emoticon@^3.2.0: +  version "3.2.0" +  resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-3.2.0.tgz#c008ca7d7620fac742fe1bf4af8ff8fed154ae7f" +  integrity sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg== + +encodeurl@~1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" +  integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.1.0: +  version "1.4.4" +  resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" +  integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== +  dependencies: +    once "^1.4.0" + +enhanced-resolve@^5.8.3: +  version "5.8.3" +  resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" +  integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== +  dependencies: +    graceful-fs "^4.2.4" +    tapable "^2.2.0" + +entities@^1.1.1, entities@~1.1.1: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" +  integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" +  integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +errno@^0.1.3: +  version "0.1.8" +  resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" +  integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== +  dependencies: +    prr "~1.0.1" + +error-ex@^1.3.1: +  version "1.3.2" +  resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" +  integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== +  dependencies: +    is-arrayish "^0.2.1" + +es-abstract@^1.17.2, es-abstract@^1.19.1: +  version "1.19.1" +  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" +  integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== +  dependencies: +    call-bind "^1.0.2" +    es-to-primitive "^1.2.1" +    function-bind "^1.1.1" +    get-intrinsic "^1.1.1" +    get-symbol-description "^1.0.0" +    has "^1.0.3" +    has-symbols "^1.0.2" +    internal-slot "^1.0.3" +    is-callable "^1.2.4" +    is-negative-zero "^2.0.1" +    is-regex "^1.1.4" +    is-shared-array-buffer "^1.0.1" +    is-string "^1.0.7" +    is-weakref "^1.0.1" +    object-inspect "^1.11.0" +    object-keys "^1.1.1" +    object.assign "^4.1.2" +    string.prototype.trimend "^1.0.4" +    string.prototype.trimstart "^1.0.4" +    unbox-primitive "^1.0.1" + +es-module-lexer@^0.9.0: +  version "0.9.2" +  resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.2.tgz#d0a8c72c5d904014111fac7fab4c92b9ac545564" +  integrity sha512-YkAGWqxZq2B4FxQ5y687UwywDwvLQhIMCZ+SDU7ZW729SDHOEI6wVFXwTRecz+yiwJzCsVwC6V7bxyNbZSB1rg== + +es-to-primitive@^1.2.1: +  version "1.2.1" +  resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" +  integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== +  dependencies: +    is-callable "^1.1.4" +    is-date-object "^1.0.1" +    is-symbol "^1.0.2" + +escalade@^3.0.2, escalade@^3.1.1: +  version "3.1.1" +  resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" +  integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-goat@^2.0.0: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" +  integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + +escape-html@^1.0.3, escape-html@~1.0.3: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" +  integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" +  integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.5: +  version "1.0.5" +  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +  integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escape-string-regexp@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" +  integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@5.1.1: +  version "5.1.1" +  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" +  integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== +  dependencies: +    esrecurse "^4.3.0" +    estraverse "^4.1.1" + +esprima@^4.0.0: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" +  integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esrecurse@^4.3.0: +  version "4.3.0" +  resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" +  integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== +  dependencies: +    estraverse "^5.2.0" + +estraverse@^4.1.1: +  version "4.3.0" +  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" +  integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: +  version "5.2.0" +  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" +  integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +esutils@^2.0.2: +  version "2.0.3" +  resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" +  integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +eta@^1.12.1: +  version "1.12.3" +  resolved "https://registry.yarnpkg.com/eta/-/eta-1.12.3.tgz#2982d08adfbef39f9fa50e2fbd42d7337e7338b1" +  integrity sha512-qHixwbDLtekO/d51Yr4glcaUJCIjGVJyTzuqV4GPlgZo1YpgOKG+avQynErZIYrfM6JIJdtiG2Kox8tbb+DoGg== + +etag@~1.8.1: +  version "1.8.1" +  resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" +  integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eval@^0.1.4: +  version "0.1.6" +  resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.6.tgz#9620d7d8c85515e97e6b47c5814f46ae381cb3cc" +  integrity sha512-o0XUw+5OGkXw4pJZzQoXUk+H87DHuC+7ZE//oSrRGtatTmr12oTnLfg6QOq9DyTt0c/p4TwzgmkKrBzWTSizyQ== +  dependencies: +    require-like ">= 0.1.1" + +eventemitter3@^4.0.0: +  version "4.0.7" +  resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" +  integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" +  integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= + +events@^3.2.0: +  version "3.3.0" +  resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" +  integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +eventsource@^1.0.7: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" +  integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== +  dependencies: +    original "^1.0.0" + +execa@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" +  integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== +  dependencies: +    cross-spawn "^6.0.0" +    get-stream "^4.0.0" +    is-stream "^1.1.0" +    npm-run-path "^2.0.0" +    p-finally "^1.0.0" +    signal-exit "^3.0.0" +    strip-eof "^1.0.0" + +execa@^5.0.0: +  version "5.1.1" +  resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" +  integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== +  dependencies: +    cross-spawn "^7.0.3" +    get-stream "^6.0.0" +    human-signals "^2.1.0" +    is-stream "^2.0.0" +    merge-stream "^2.0.0" +    npm-run-path "^4.0.1" +    onetime "^5.1.2" +    signal-exit "^3.0.3" +    strip-final-newline "^2.0.0" + +expand-brackets@^2.1.4: +  version "2.1.4" +  resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" +  integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= +  dependencies: +    debug "^2.3.3" +    define-property "^0.2.5" +    extend-shallow "^2.0.1" +    posix-character-classes "^0.1.0" +    regex-not "^1.0.0" +    snapdragon "^0.8.1" +    to-regex "^3.0.1" + +express@^4.17.1: +  version "4.17.1" +  resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" +  integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== +  dependencies: +    accepts "~1.3.7" +    array-flatten "1.1.1" +    body-parser "1.19.0" +    content-disposition "0.5.3" +    content-type "~1.0.4" +    cookie "0.4.0" +    cookie-signature "1.0.6" +    debug "2.6.9" +    depd "~1.1.2" +    encodeurl "~1.0.2" +    escape-html "~1.0.3" +    etag "~1.8.1" +    finalhandler "~1.1.2" +    fresh "0.5.2" +    merge-descriptors "1.0.1" +    methods "~1.1.2" +    on-finished "~2.3.0" +    parseurl "~1.3.3" +    path-to-regexp "0.1.7" +    proxy-addr "~2.0.5" +    qs "6.7.0" +    range-parser "~1.2.1" +    safe-buffer "5.1.2" +    send "0.17.1" +    serve-static "1.14.1" +    setprototypeof "1.1.1" +    statuses "~1.5.0" +    type-is "~1.6.18" +    utils-merge "1.0.1" +    vary "~1.1.2" + +extend-shallow@^2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" +  integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= +  dependencies: +    is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" +  integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= +  dependencies: +    assign-symbols "^1.0.0" +    is-extendable "^1.0.1" + +extend@^3.0.0: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" +  integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" +  integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== +  dependencies: +    array-unique "^0.3.2" +    define-property "^1.0.0" +    expand-brackets "^2.1.4" +    extend-shallow "^2.0.1" +    fragment-cache "^0.2.1" +    regex-not "^1.0.0" +    snapdragon "^0.8.1" +    to-regex "^3.0.1" + +fast-deep-equal@^3.1.1: +  version "3.1.3" +  resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" +  integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.1.1, fast-glob@^3.2.5: +  version "3.2.7" +  resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" +  integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== +  dependencies: +    "@nodelib/fs.stat" "^2.0.2" +    "@nodelib/fs.walk" "^1.2.3" +    glob-parent "^5.1.2" +    merge2 "^1.3.0" +    micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" +  integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-url-parser@1.1.3: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" +  integrity sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0= +  dependencies: +    punycode "^1.3.2" + +fastq@^1.6.0: +  version "1.13.0" +  resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" +  integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== +  dependencies: +    reusify "^1.0.4" + +faye-websocket@^0.11.3: +  version "0.11.4" +  resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" +  integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== +  dependencies: +    websocket-driver ">=0.5.1" + +fbemitter@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3" +  integrity sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== +  dependencies: +    fbjs "^3.0.0" + +fbjs-css-vars@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" +  integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.0.tgz#0907067fb3f57a78f45d95f1eacffcacd623c165" +  integrity sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg== +  dependencies: +    cross-fetch "^3.0.4" +    fbjs-css-vars "^1.0.0" +    loose-envify "^1.0.0" +    object-assign "^4.1.0" +    promise "^7.1.1" +    setimmediate "^1.0.5" +    ua-parser-js "^0.7.18" + +feed@^4.2.2: +  version "4.2.2" +  resolved "https://registry.yarnpkg.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e" +  integrity sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ== +  dependencies: +    xml-js "^1.6.11" + +figures@^3.2.0: +  version "3.2.0" +  resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" +  integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== +  dependencies: +    escape-string-regexp "^1.0.5" + +file-loader@^6.2.0: +  version "6.2.0" +  resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" +  integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== +  dependencies: +    loader-utils "^2.0.0" +    schema-utils "^3.0.0" + +file-uri-to-path@1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" +  integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filesize@6.1.0: +  version "6.1.0" +  resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" +  integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== + +fill-range@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" +  integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= +  dependencies: +    extend-shallow "^2.0.1" +    is-number "^3.0.0" +    repeat-string "^1.6.1" +    to-regex-range "^2.1.0" + +fill-range@^7.0.1: +  version "7.0.1" +  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" +  integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +  dependencies: +    to-regex-range "^5.0.1" + +finalhandler@~1.1.2: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" +  integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== +  dependencies: +    debug "2.6.9" +    encodeurl "~1.0.2" +    escape-html "~1.0.3" +    on-finished "~2.3.0" +    parseurl "~1.3.3" +    statuses "~1.5.0" +    unpipe "~1.0.0" + +find-cache-dir@^3.3.1: +  version "3.3.2" +  resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" +  integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== +  dependencies: +    commondir "^1.0.1" +    make-dir "^3.0.2" +    pkg-dir "^4.1.0" + +find-up@4.1.0, find-up@^4.0.0: +  version "4.1.0" +  resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" +  integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== +  dependencies: +    locate-path "^5.0.0" +    path-exists "^4.0.0" + +find-up@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" +  integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== +  dependencies: +    locate-path "^3.0.0" + +find-up@^5.0.0: +  version "5.0.0" +  resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" +  integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== +  dependencies: +    locate-path "^6.0.0" +    path-exists "^4.0.0" + +flux@^4.0.1: +  version "4.0.2" +  resolved "https://registry.yarnpkg.com/flux/-/flux-4.0.2.tgz#d71dcaf6cb51ca059f303f3d964d6f325d444952" +  integrity sha512-u/ucO5ezm3nBvdaSGkWpDlzCePoV+a9x3KHmy13TV/5MzOaCZDN8Mfd94jmf0nOi8ZZay+nOKbBUkOe2VNaupQ== +  dependencies: +    fbemitter "^3.0.0" +    fbjs "^3.0.0" + +follow-redirects@^1.0.0, follow-redirects@^1.14.0: +  version "1.14.4" +  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379" +  integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== + +for-in@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" +  integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +fork-ts-checker-webpack-plugin@4.1.6: +  version "4.1.6" +  resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" +  integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== +  dependencies: +    "@babel/code-frame" "^7.5.5" +    chalk "^2.4.1" +    micromatch "^3.1.10" +    minimatch "^3.0.4" +    semver "^5.6.0" +    tapable "^1.0.0" +    worker-rpc "^0.1.0" + +forwarded@0.2.0: +  version "0.2.0" +  resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" +  integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.1.1: +  version "4.1.1" +  resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.1.tgz#ac4e520473dae67012d618aab91eda09bcb400ff" +  integrity sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg== + +fragment-cache@^0.2.1: +  version "0.2.1" +  resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" +  integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= +  dependencies: +    map-cache "^0.2.2" + +fresh@0.5.2: +  version "0.5.2" +  resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" +  integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-extra@^10.0.0: +  version "10.0.0" +  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" +  integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== +  dependencies: +    graceful-fs "^4.2.0" +    jsonfile "^6.0.1" +    universalify "^2.0.0" + +fs-extra@^9.1.0: +  version "9.1.0" +  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" +  integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== +  dependencies: +    at-least-node "^1.0.0" +    graceful-fs "^4.2.0" +    jsonfile "^6.0.1" +    universalify "^2.0.0" + +fs.realpath@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" +  integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: +  version "1.2.13" +  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" +  integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== +  dependencies: +    bindings "^1.5.0" +    nan "^2.12.1" + +fsevents@~2.3.2: +  version "2.3.2" +  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" +  integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" +  integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: +  version "1.0.0-beta.2" +  resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" +  integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: +  version "2.0.5" +  resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" +  integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" +  integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== +  dependencies: +    function-bind "^1.1.1" +    has "^1.0.3" +    has-symbols "^1.0.1" + +get-own-enumerable-property-symbols@^3.0.0: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" +  integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-stream@^4.0.0, get-stream@^4.1.0: +  version "4.1.0" +  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" +  integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== +  dependencies: +    pump "^3.0.0" + +get-stream@^5.1.0: +  version "5.2.0" +  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" +  integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== +  dependencies: +    pump "^3.0.0" + +get-stream@^6.0.0: +  version "6.0.1" +  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" +  integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" +  integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== +  dependencies: +    call-bind "^1.0.2" +    get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: +  version "2.0.6" +  resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" +  integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +github-slugger@^1.3.0: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e" +  integrity sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ== + +glob-parent@^3.1.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" +  integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= +  dependencies: +    is-glob "^3.1.0" +    path-dirname "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: +  version "5.1.2" +  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" +  integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== +  dependencies: +    is-glob "^4.0.1" + +glob-parent@^6.0.0: +  version "6.0.2" +  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" +  integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== +  dependencies: +    is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: +  version "0.4.1" +  resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" +  integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.3: +  version "7.2.0" +  resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" +  integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== +  dependencies: +    fs.realpath "^1.0.0" +    inflight "^1.0.4" +    inherits "2" +    minimatch "^3.0.4" +    once "^1.3.0" +    path-is-absolute "^1.0.0" + +global-dirs@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" +  integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== +  dependencies: +    ini "2.0.0" + +global-modules@2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" +  integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== +  dependencies: +    global-prefix "^3.0.0" + +global-prefix@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" +  integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== +  dependencies: +    ini "^1.3.5" +    kind-of "^6.0.2" +    which "^1.3.1" + +globals@^11.1.0: +  version "11.12.0" +  resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" +  integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globby@11.0.1: +  version "11.0.1" +  resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" +  integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== +  dependencies: +    array-union "^2.1.0" +    dir-glob "^3.0.1" +    fast-glob "^3.1.1" +    ignore "^5.1.4" +    merge2 "^1.3.0" +    slash "^3.0.0" + +globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4: +  version "11.0.4" +  resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" +  integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== +  dependencies: +    array-union "^2.1.0" +    dir-glob "^3.0.1" +    fast-glob "^3.1.1" +    ignore "^5.1.4" +    merge2 "^1.3.0" +    slash "^3.0.0" + +globby@^6.1.0: +  version "6.1.0" +  resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" +  integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= +  dependencies: +    array-union "^1.0.1" +    glob "^7.0.3" +    object-assign "^4.0.1" +    pify "^2.0.0" +    pinkie-promise "^2.0.0" + +got@^9.6.0: +  version "9.6.0" +  resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" +  integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== +  dependencies: +    "@sindresorhus/is" "^0.14.0" +    "@szmarczak/http-timer" "^1.1.2" +    cacheable-request "^6.0.0" +    decompress-response "^3.3.0" +    duplexer3 "^0.1.4" +    get-stream "^4.1.0" +    lowercase-keys "^1.0.1" +    mimic-response "^1.0.1" +    p-cancelable "^1.0.0" +    to-readable-stream "^1.0.0" +    url-parse-lax "^3.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: +  version "4.2.8" +  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" +  integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== + +gray-matter@^4.0.3: +  version "4.0.3" +  resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" +  integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== +  dependencies: +    js-yaml "^3.13.1" +    kind-of "^6.0.2" +    section-matter "^1.0.0" +    strip-bom-string "^1.0.0" + +gzip-size@5.1.1: +  version "5.1.1" +  resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" +  integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== +  dependencies: +    duplexer "^0.1.1" +    pify "^4.0.1" + +gzip-size@^6.0.0: +  version "6.0.0" +  resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" +  integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== +  dependencies: +    duplexer "^0.1.2" + +handle-thing@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" +  integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +has-bigints@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" +  integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + +has-flag@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" +  integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" +  integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1, has-symbols@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" +  integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-tostringtag@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" +  integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== +  dependencies: +    has-symbols "^1.0.2" + +has-value@^0.3.1: +  version "0.3.1" +  resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" +  integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= +  dependencies: +    get-value "^2.0.3" +    has-values "^0.1.4" +    isobject "^2.0.0" + +has-value@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" +  integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= +  dependencies: +    get-value "^2.0.6" +    has-values "^1.0.0" +    isobject "^3.0.0" + +has-values@^0.1.4: +  version "0.1.4" +  resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" +  integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" +  integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= +  dependencies: +    is-number "^3.0.0" +    kind-of "^4.0.0" + +has-yarn@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" +  integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + +has@^1.0.3: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" +  integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== +  dependencies: +    function-bind "^1.1.1" + +hast-to-hyperscript@^9.0.0: +  version "9.0.1" +  resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" +  integrity sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA== +  dependencies: +    "@types/unist" "^2.0.3" +    comma-separated-tokens "^1.0.0" +    property-information "^5.3.0" +    space-separated-tokens "^1.0.0" +    style-to-object "^0.3.0" +    unist-util-is "^4.0.0" +    web-namespaces "^1.0.0" + +hast-util-from-parse5@^5.0.0: +  version "5.0.3" +  resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz#3089dc0ee2ccf6ec8bc416919b51a54a589e097c" +  integrity sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA== +  dependencies: +    ccount "^1.0.3" +    hastscript "^5.0.0" +    property-information "^5.0.0" +    web-namespaces "^1.1.2" +    xtend "^4.0.1" + +hast-util-from-parse5@^6.0.0: +  version "6.0.1" +  resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a" +  integrity sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA== +  dependencies: +    "@types/parse5" "^5.0.0" +    hastscript "^6.0.0" +    property-information "^5.0.0" +    vfile "^4.0.0" +    vfile-location "^3.2.0" +    web-namespaces "^1.0.0" + +hast-util-parse-selector@^2.0.0: +  version "2.2.5" +  resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" +  integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== + +hast-util-raw@6.0.1: +  version "6.0.1" +  resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-6.0.1.tgz#973b15930b7529a7b66984c98148b46526885977" +  integrity sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig== +  dependencies: +    "@types/hast" "^2.0.0" +    hast-util-from-parse5 "^6.0.0" +    hast-util-to-parse5 "^6.0.0" +    html-void-elements "^1.0.0" +    parse5 "^6.0.0" +    unist-util-position "^3.0.0" +    vfile "^4.0.0" +    web-namespaces "^1.0.0" +    xtend "^4.0.0" +    zwitch "^1.0.0" + +hast-util-to-parse5@^6.0.0: +  version "6.0.0" +  resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479" +  integrity sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ== +  dependencies: +    hast-to-hyperscript "^9.0.0" +    property-information "^5.0.0" +    web-namespaces "^1.0.0" +    xtend "^4.0.0" +    zwitch "^1.0.0" + +hastscript@^5.0.0: +  version "5.1.2" +  resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.1.2.tgz#bde2c2e56d04c62dd24e8c5df288d050a355fb8a" +  integrity sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ== +  dependencies: +    comma-separated-tokens "^1.0.0" +    hast-util-parse-selector "^2.0.0" +    property-information "^5.0.0" +    space-separated-tokens "^1.0.0" + +hastscript@^6.0.0: +  version "6.0.0" +  resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" +  integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== +  dependencies: +    "@types/hast" "^2.0.0" +    comma-separated-tokens "^1.0.0" +    hast-util-parse-selector "^2.0.0" +    property-information "^5.0.0" +    space-separated-tokens "^1.0.0" + +he@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" +  integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +history@^4.9.0: +  version "4.10.1" +  resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" +  integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== +  dependencies: +    "@babel/runtime" "^7.1.2" +    loose-envify "^1.2.0" +    resolve-pathname "^3.0.0" +    tiny-invariant "^1.0.2" +    tiny-warning "^1.0.0" +    value-equal "^1.0.1" + +hoist-non-react-statics@^3.1.0: +  version "3.3.2" +  resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" +  integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== +  dependencies: +    react-is "^16.7.0" + +hpack.js@^2.1.6: +  version "2.1.6" +  resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" +  integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= +  dependencies: +    inherits "^2.0.1" +    obuf "^1.0.0" +    readable-stream "^2.0.1" +    wbuf "^1.1.0" + +html-entities@^1.3.1: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" +  integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== + +html-minifier-terser@^5.0.1, html-minifier-terser@^5.1.1: +  version "5.1.1" +  resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" +  integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== +  dependencies: +    camel-case "^4.1.1" +    clean-css "^4.2.3" +    commander "^4.1.1" +    he "^1.2.0" +    param-case "^3.0.3" +    relateurl "^0.2.7" +    terser "^4.6.3" + +html-tags@^3.1.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" +  integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== + +html-void-elements@^1.0.0: +  version "1.0.5" +  resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" +  integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== + +html-webpack-plugin@^5.3.2: +  version "5.3.2" +  resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.3.2.tgz#7b04bf80b1f6fe84a6d3f66c8b79d64739321b08" +  integrity sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ== +  dependencies: +    "@types/html-minifier-terser" "^5.0.0" +    html-minifier-terser "^5.0.1" +    lodash "^4.17.21" +    pretty-error "^3.0.4" +    tapable "^2.0.0" + +htmlparser2@^3.9.1: +  version "3.10.1" +  resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" +  integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== +  dependencies: +    domelementtype "^1.3.1" +    domhandler "^2.3.0" +    domutils "^1.5.1" +    entities "^1.1.1" +    inherits "^2.0.1" +    readable-stream "^3.1.1" + +htmlparser2@^6.1.0: +  version "6.1.0" +  resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" +  integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== +  dependencies: +    domelementtype "^2.0.1" +    domhandler "^4.0.0" +    domutils "^2.5.2" +    entities "^2.0.0" + +http-cache-semantics@^4.0.0: +  version "4.1.0" +  resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" +  integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-deceiver@^1.2.7: +  version "1.2.7" +  resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" +  integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: +  version "1.7.2" +  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" +  integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== +  dependencies: +    depd "~1.1.2" +    inherits "2.0.3" +    setprototypeof "1.1.1" +    statuses ">= 1.5.0 < 2" +    toidentifier "1.0.0" + +http-errors@~1.6.2: +  version "1.6.3" +  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" +  integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= +  dependencies: +    depd "~1.1.2" +    inherits "2.0.3" +    setprototypeof "1.1.0" +    statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: +  version "1.7.3" +  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" +  integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== +  dependencies: +    depd "~1.1.2" +    inherits "2.0.4" +    setprototypeof "1.1.1" +    statuses ">= 1.5.0 < 2" +    toidentifier "1.0.0" + +http-parser-js@>=0.5.1: +  version "0.5.3" +  resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" +  integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + +http-proxy-middleware@0.19.1: +  version "0.19.1" +  resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" +  integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== +  dependencies: +    http-proxy "^1.17.0" +    is-glob "^4.0.0" +    lodash "^4.17.11" +    micromatch "^3.1.10" + +http-proxy@^1.17.0: +  version "1.18.1" +  resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" +  integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== +  dependencies: +    eventemitter3 "^4.0.0" +    follow-redirects "^1.0.0" +    requires-port "^1.0.0" + +human-signals@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" +  integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@0.4.24: +  version "0.4.24" +  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" +  integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== +  dependencies: +    safer-buffer ">= 2.1.2 < 3" + +icss-utils@^5.0.0, icss-utils@^5.1.0: +  version "5.1.0" +  resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" +  integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +ignore@^5.1.4: +  version "5.1.8" +  resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" +  integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +immer@8.0.1: +  version "8.0.1" +  resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656" +  integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== + +import-fresh@^3.2.1, import-fresh@^3.2.2, import-fresh@^3.3.0: +  version "3.3.0" +  resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" +  integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== +  dependencies: +    parent-module "^1.0.0" +    resolve-from "^4.0.0" + +import-lazy@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" +  integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + +import-local@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" +  integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== +  dependencies: +    pkg-dir "^3.0.0" +    resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: +  version "0.1.4" +  resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" +  integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" +  integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +infima@0.2.0-alpha.33: +  version "0.2.0-alpha.33" +  resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.33.tgz#8d1a77ea916bedcebffa60dcd2dffbe382e09abf" +  integrity sha512-iLZI8/vGTbbhbeFhlWv1zwvrqfNDLAayuEdqZqNqCyGuh0IW469dRIRm0FLZ98YyLikt2njzuKfy6xUrBWRXcg== + +inflight@^1.0.4: +  version "1.0.6" +  resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" +  integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= +  dependencies: +    once "^1.3.0" +    wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" +  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: +  version "2.0.3" +  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" +  integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" +  integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +ini@^1.3.5, ini@~1.3.0: +  version "1.3.8" +  resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" +  integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inline-style-parser@0.1.1: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" +  integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== + +internal-ip@^4.3.0: +  version "4.3.0" +  resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" +  integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== +  dependencies: +    default-gateway "^4.2.0" +    ipaddr.js "^1.9.0" + +internal-slot@^1.0.3: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" +  integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== +  dependencies: +    get-intrinsic "^1.1.0" +    has "^1.0.3" +    side-channel "^1.0.4" + +interpret@^1.0.0: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" +  integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +ip-regex@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" +  integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: +  version "1.1.5" +  resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" +  integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: +  version "1.9.1" +  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" +  integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^3.0.3: +  version "3.0.3" +  resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" +  integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: +  version "0.1.6" +  resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" +  integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= +  dependencies: +    kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" +  integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== +  dependencies: +    kind-of "^6.0.0" + +is-alphabetical@1.0.4, is-alphabetical@^1.0.0: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" +  integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + +is-alphanumerical@^1.0.0: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" +  integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== +  dependencies: +    is-alphabetical "^1.0.0" +    is-decimal "^1.0.0" + +is-arguments@^1.0.4: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" +  integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== +  dependencies: +    call-bind "^1.0.2" +    has-tostringtag "^1.0.0" + +is-arrayish@^0.2.1: +  version "0.2.1" +  resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" +  integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-bigint@^1.0.1: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" +  integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== +  dependencies: +    has-bigints "^1.0.1" + +is-binary-path@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" +  integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= +  dependencies: +    binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" +  integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== +  dependencies: +    binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" +  integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== +  dependencies: +    call-bind "^1.0.2" +    has-tostringtag "^1.0.0" + +is-buffer@^1.1.5: +  version "1.1.6" +  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" +  integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-buffer@^2.0.0: +  version "2.0.5" +  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" +  integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-callable@^1.1.4, is-callable@^1.2.4: +  version "1.2.4" +  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" +  integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-ci@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" +  integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== +  dependencies: +    ci-info "^2.0.0" + +is-core-module@^2.2.0: +  version "2.7.0" +  resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.7.0.tgz#3c0ef7d31b4acfc574f80c58409d568a836848e3" +  integrity sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ== +  dependencies: +    has "^1.0.3" + +is-data-descriptor@^0.1.4: +  version "0.1.4" +  resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" +  integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= +  dependencies: +    kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" +  integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== +  dependencies: +    kind-of "^6.0.0" + +is-date-object@^1.0.1: +  version "1.0.5" +  resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" +  integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== +  dependencies: +    has-tostringtag "^1.0.0" + +is-decimal@^1.0.0: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" +  integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + +is-descriptor@^0.1.0: +  version "0.1.6" +  resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" +  integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== +  dependencies: +    is-accessor-descriptor "^0.1.6" +    is-data-descriptor "^0.1.4" +    kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" +  integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== +  dependencies: +    is-accessor-descriptor "^1.0.0" +    is-data-descriptor "^1.0.0" +    kind-of "^6.0.2" + +is-docker@^2.0.0: +  version "2.2.1" +  resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" +  integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extendable@^0.1.0, is-extendable@^0.1.1: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" +  integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" +  integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== +  dependencies: +    is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" +  integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" +  integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" +  integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^3.1.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" +  integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= +  dependencies: +    is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: +  version "4.0.3" +  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" +  integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== +  dependencies: +    is-extglob "^2.1.1" + +is-hexadecimal@^1.0.0: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" +  integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + +is-installed-globally@^0.4.0: +  version "0.4.0" +  resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" +  integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== +  dependencies: +    global-dirs "^3.0.0" +    is-path-inside "^3.0.2" + +is-negative-zero@^2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" +  integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-npm@^5.0.0: +  version "5.0.0" +  resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" +  integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== + +is-number-object@^1.0.4: +  version "1.0.6" +  resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" +  integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== +  dependencies: +    has-tostringtag "^1.0.0" + +is-number@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" +  integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= +  dependencies: +    kind-of "^3.0.2" + +is-number@^7.0.0: +  version "7.0.0" +  resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" +  integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" +  integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-obj@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" +  integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0, is-path-cwd@^2.2.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" +  integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" +  integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== +  dependencies: +    is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" +  integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== +  dependencies: +    path-is-inside "^1.0.2" + +is-path-inside@^3.0.2: +  version "3.0.3" +  resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" +  integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" +  integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" +  integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== +  dependencies: +    isobject "^3.0.1" + +is-regex@^1.0.4, is-regex@^1.1.4: +  version "1.1.4" +  resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" +  integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== +  dependencies: +    call-bind "^1.0.2" +    has-tostringtag "^1.0.0" + +is-regexp@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" +  integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-resolvable@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" +  integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-root@2.1.0, is-root@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" +  integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-shared-array-buffer@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" +  integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== + +is-stream@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" +  integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" +  integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: +  version "1.0.7" +  resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" +  integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== +  dependencies: +    has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" +  integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== +  dependencies: +    has-symbols "^1.0.2" + +is-typedarray@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" +  integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-weakref@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" +  integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== +  dependencies: +    call-bind "^1.0.0" + +is-whitespace-character@^1.0.0: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" +  integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== + +is-windows@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" +  integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-word-character@^1.0.0: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" +  integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== + +is-wsl@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" +  integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" +  integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== +  dependencies: +    is-docker "^2.0.0" + +is-yarn-global@^0.3.0: +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" +  integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + +isarray@0.0.1: +  version "0.0.1" +  resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" +  integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@~1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" +  integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" +  integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" +  integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= +  dependencies: +    isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: +  version "3.0.1" +  resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" +  integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +jest-worker@^27.0.2, jest-worker@^27.0.6: +  version "27.2.4" +  resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.4.tgz#881455df75e22e7726a53f43703ab74d6b36f82d" +  integrity sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g== +  dependencies: +    "@types/node" "*" +    merge-stream "^2.0.0" +    supports-color "^8.0.0" + +joi@^17.3.0, joi@^17.4.0: +  version "17.4.2" +  resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.2.tgz#02f4eb5cf88e515e614830239379dcbbe28ce7f7" +  integrity sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw== +  dependencies: +    "@hapi/hoek" "^9.0.0" +    "@hapi/topo" "^5.0.0" +    "@sideway/address" "^4.1.0" +    "@sideway/formula" "^3.0.0" +    "@sideway/pinpoint" "^2.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" +  integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: +  version "3.14.1" +  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" +  integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== +  dependencies: +    argparse "^1.0.7" +    esprima "^4.0.0" + +js-yaml@^4.0.0: +  version "4.1.0" +  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" +  integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== +  dependencies: +    argparse "^2.0.1" + +jsesc@^2.5.1: +  version "2.5.2" +  resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" +  integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: +  version "0.5.0" +  resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" +  integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-buffer@3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" +  integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-parse-better-errors@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" +  integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: +  version "2.3.1" +  resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" +  integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: +  version "0.4.1" +  resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" +  integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json3@^3.3.3: +  version "3.3.3" +  resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" +  integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" +  integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== +  dependencies: +    minimist "^1.2.0" + +json5@^2.1.2: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" +  integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== +  dependencies: +    minimist "^1.2.5" + +jsonfile@^6.0.1: +  version "6.1.0" +  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" +  integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== +  dependencies: +    universalify "^2.0.0" +  optionalDependencies: +    graceful-fs "^4.1.6" + +keyv@^3.0.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" +  integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== +  dependencies: +    json-buffer "3.0.0" + +killable@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" +  integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: +  version "3.2.2" +  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" +  integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= +  dependencies: +    is-buffer "^1.1.5" + +kind-of@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" +  integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= +  dependencies: +    is-buffer "^1.1.5" + +kind-of@^5.0.0: +  version "5.1.0" +  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" +  integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: +  version "6.0.3" +  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" +  integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: +  version "3.0.3" +  resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" +  integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +klona@^2.0.4: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" +  integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== + +latest-version@^5.1.0: +  version "5.1.0" +  resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" +  integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== +  dependencies: +    package-json "^6.3.0" + +leven@^3.1.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" +  integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lilconfig@^2.0.3: +  version "2.0.3" +  resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.3.tgz#68f3005e921dafbd2a2afb48379986aa6d2579fd" +  integrity sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg== + +lines-and-columns@^1.1.6: +  version "1.1.6" +  resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" +  integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +loader-runner@^4.2.0: +  version "4.2.0" +  resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" +  integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== + +loader-utils@2.0.0, loader-utils@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" +  integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== +  dependencies: +    big.js "^5.2.2" +    emojis-list "^3.0.0" +    json5 "^2.1.2" + +loader-utils@^1.2.3, loader-utils@^1.4.0: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" +  integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== +  dependencies: +    big.js "^5.2.2" +    emojis-list "^3.0.0" +    json5 "^1.0.1" + +locate-path@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" +  integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== +  dependencies: +    p-locate "^3.0.0" +    path-exists "^3.0.0" + +locate-path@^5.0.0: +  version "5.0.0" +  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" +  integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== +  dependencies: +    p-locate "^4.1.0" + +locate-path@^6.0.0: +  version "6.0.0" +  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" +  integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== +  dependencies: +    p-locate "^5.0.0" + +lodash.assignin@^4.0.9: +  version "4.2.0" +  resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" +  integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI= + +lodash.bind@^4.1.4: +  version "4.2.1" +  resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" +  integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU= + +lodash.curry@^4.0.1: +  version "4.1.1" +  resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" +  integrity sha1-JI42By7ekGUB11lmIAqG2riyMXA= + +lodash.debounce@^4.0.8: +  version "4.0.8" +  resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" +  integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.defaults@^4.0.1: +  version "4.2.0" +  resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" +  integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + +lodash.filter@^4.4.0: +  version "4.6.0" +  resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" +  integrity sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4= + +lodash.flatten@^4.2.0: +  version "4.4.0" +  resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" +  integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + +lodash.flow@^3.3.0: +  version "3.5.0" +  resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" +  integrity sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o= + +lodash.foreach@^4.3.0: +  version "4.5.0" +  resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" +  integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= + +lodash.map@^4.4.0: +  version "4.6.0" +  resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" +  integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= + +lodash.memoize@^4.1.2: +  version "4.1.2" +  resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" +  integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.merge@^4.4.0: +  version "4.6.2" +  resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" +  integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.pick@^4.2.1: +  version "4.4.0" +  resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" +  integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= + +lodash.reduce@^4.4.0: +  version "4.6.0" +  resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" +  integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs= + +lodash.reject@^4.4.0: +  version "4.6.0" +  resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" +  integrity sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU= + +lodash.some@^4.4.0: +  version "4.6.0" +  resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" +  integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= + +lodash.uniq@4.5.0, lodash.uniq@^4.5.0: +  version "4.5.0" +  resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" +  integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: +  version "4.17.21" +  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" +  integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loglevel@^1.6.8: +  version "1.7.1" +  resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" +  integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" +  integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== +  dependencies: +    js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" +  integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== +  dependencies: +    tslib "^2.0.3" + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" +  integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" +  integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^6.0.0: +  version "6.0.0" +  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" +  integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== +  dependencies: +    yallist "^4.0.0" + +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" +  integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== +  dependencies: +    semver "^6.0.0" + +map-cache@^0.2.2: +  version "0.2.2" +  resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" +  integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" +  integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= +  dependencies: +    object-visit "^1.0.0" + +markdown-escapes@^1.0.0: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" +  integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== + +mdast-squeeze-paragraphs@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97" +  integrity sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ== +  dependencies: +    unist-util-remove "^2.0.0" + +mdast-util-definitions@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" +  integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== +  dependencies: +    unist-util-visit "^2.0.0" + +mdast-util-to-hast@10.0.1: +  version "10.0.1" +  resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz#0cfc82089494c52d46eb0e3edb7a4eb2aea021eb" +  integrity sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA== +  dependencies: +    "@types/mdast" "^3.0.0" +    "@types/unist" "^2.0.0" +    mdast-util-definitions "^4.0.0" +    mdurl "^1.0.0" +    unist-builder "^2.0.0" +    unist-util-generated "^1.0.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^2.0.0" + +mdast-util-to-string@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" +  integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== + +mdn-data@2.0.14: +  version "2.0.14" +  resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" +  integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" +  integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +mdurl@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" +  integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + +media-typer@0.3.0: +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" +  integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memory-fs@^0.4.1: +  version "0.4.1" +  resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" +  integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= +  dependencies: +    errno "^0.1.3" +    readable-stream "^2.0.1" + +merge-descriptors@1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" +  integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" +  integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0: +  version "1.4.1" +  resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" +  integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" +  integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +microevent.ts@~0.1.1: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" +  integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + +micromatch@^3.1.10, micromatch@^3.1.4: +  version "3.1.10" +  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" +  integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== +  dependencies: +    arr-diff "^4.0.0" +    array-unique "^0.3.2" +    braces "^2.3.1" +    define-property "^2.0.2" +    extend-shallow "^3.0.2" +    extglob "^2.0.4" +    fragment-cache "^0.2.1" +    kind-of "^6.0.2" +    nanomatch "^1.2.9" +    object.pick "^1.3.0" +    regex-not "^1.0.0" +    snapdragon "^0.8.1" +    to-regex "^3.0.2" + +micromatch@^4.0.4: +  version "4.0.4" +  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" +  integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== +  dependencies: +    braces "^3.0.1" +    picomatch "^2.2.3" + +mime-db@1.50.0, "mime-db@>= 1.43.0 < 2": +  version "1.50.0" +  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" +  integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A== + +mime-db@~1.33.0: +  version "1.33.0" +  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" +  integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== + +mime-types@2.1.18: +  version "2.1.18" +  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" +  integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== +  dependencies: +    mime-db "~1.33.0" + +mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24: +  version "2.1.33" +  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb" +  integrity sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g== +  dependencies: +    mime-db "1.50.0" + +mime@1.6.0: +  version "1.6.0" +  resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" +  integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.3.1, mime@^2.4.4: +  version "2.5.2" +  resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" +  integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + +mimic-fn@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" +  integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0, mimic-response@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" +  integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mini-create-react-context@^0.4.0: +  version "0.4.1" +  resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" +  integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== +  dependencies: +    "@babel/runtime" "^7.12.1" +    tiny-warning "^1.0.3" + +mini-css-extract-plugin@^1.6.0: +  version "1.6.2" +  resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz#83172b4fd812f8fc4a09d6f6d16f924f53990ca8" +  integrity sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q== +  dependencies: +    loader-utils "^2.0.0" +    schema-utils "^3.0.0" +    webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" +  integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@3.0.4, minimatch@^3.0.4: +  version "3.0.4" +  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" +  integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +  dependencies: +    brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5: +  version "1.2.5" +  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" +  integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mixin-deep@^1.2.0: +  version "1.3.2" +  resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" +  integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== +  dependencies: +    for-in "^1.0.2" +    is-extendable "^1.0.1" + +mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1: +  version "0.5.5" +  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" +  integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== +  dependencies: +    minimist "^1.2.5" + +mkdirp@^1.0.4: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" +  integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +module-alias@^2.2.2: +  version "2.2.2" +  resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0" +  integrity sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q== + +ms@2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" +  integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" +  integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2: +  version "2.1.2" +  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" +  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: +  version "2.1.3" +  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" +  integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns-service-types@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" +  integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: +  version "6.2.3" +  resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" +  integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== +  dependencies: +    dns-packet "^1.3.1" +    thunky "^1.0.2" + +nan@^2.12.1: +  version "2.15.0" +  resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" +  integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== + +nanocolors@^0.1.12: +  version "0.1.12" +  resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6" +  integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ== + +nanocolors@^0.2.12, nanocolors@^0.2.2, nanocolors@^0.2.8: +  version "0.2.12" +  resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.2.12.tgz#4d05932e70116078673ea4cc6699a1c56cc77777" +  integrity sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug== + +nanoid@^3.1.25: +  version "3.1.28" +  resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.28.tgz#3c01bac14cb6c5680569014cc65a2f26424c6bd4" +  integrity sha512-gSu9VZ2HtmoKYe/lmyPFES5nknFrHa+/DT9muUFWFMi6Jh9E1I7bkvlQ8xxf1Kos9pi9o8lBnIOkatMhKX/YUw== + +nanomatch@^1.2.9: +  version "1.2.13" +  resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" +  integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== +  dependencies: +    arr-diff "^4.0.0" +    array-unique "^0.3.2" +    define-property "^2.0.2" +    extend-shallow "^3.0.2" +    fragment-cache "^0.2.1" +    is-windows "^1.0.2" +    kind-of "^6.0.2" +    object.pick "^1.3.0" +    regex-not "^1.0.0" +    snapdragon "^0.8.1" +    to-regex "^3.0.1" + +negotiator@0.6.2: +  version "0.6.2" +  resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" +  integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.6.2: +  version "2.6.2" +  resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" +  integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nice-try@^1.0.4: +  version "1.0.5" +  resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" +  integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.4: +  version "3.0.4" +  resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" +  integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== +  dependencies: +    lower-case "^2.0.2" +    tslib "^2.0.3" + +node-emoji@^1.10.0: +  version "1.11.0" +  resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" +  integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== +  dependencies: +    lodash "^4.17.21" + +node-fetch@2.6.1: +  version "2.6.1" +  resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" +  integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +node-forge@^0.10.0: +  version "0.10.0" +  resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" +  integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-releases@^1.1.61, node-releases@^1.1.76: +  version "1.1.77" +  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e" +  integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== + +normalize-path@^2.1.1: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" +  integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= +  dependencies: +    remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" +  integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: +  version "0.1.2" +  resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" +  integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@^4.1.0: +  version "4.5.1" +  resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" +  integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +normalize-url@^6.0.1: +  version "6.1.0" +  resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" +  integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^2.0.0: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" +  integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= +  dependencies: +    path-key "^2.0.0" + +npm-run-path@^4.0.1: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" +  integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== +  dependencies: +    path-key "^3.0.0" + +nprogress@^0.2.0: +  version "0.2.0" +  resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" +  integrity sha1-y480xTIT2JVyP8urkH6UIq28r7E= + +nth-check@^1.0.2, nth-check@~1.0.1: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" +  integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== +  dependencies: +    boolbase "~1.0.0" + +nth-check@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" +  integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== +  dependencies: +    boolbase "^1.0.0" + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +  version "4.1.1" +  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +  integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: +  version "0.1.0" +  resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" +  integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= +  dependencies: +    copy-descriptor "^0.1.0" +    define-property "^0.2.5" +    kind-of "^3.0.3" + +object-inspect@^1.11.0, object-inspect@^1.9.0: +  version "1.11.0" +  resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" +  integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== + +object-is@^1.0.1: +  version "1.1.5" +  resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" +  integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== +  dependencies: +    call-bind "^1.0.2" +    define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" +  integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" +  integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= +  dependencies: +    isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.2: +  version "4.1.2" +  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" +  integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== +  dependencies: +    call-bind "^1.0.0" +    define-properties "^1.1.3" +    has-symbols "^1.0.1" +    object-keys "^1.1.1" + +object.getownpropertydescriptors@^2.1.0: +  version "2.1.3" +  resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" +  integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== +  dependencies: +    call-bind "^1.0.2" +    define-properties "^1.1.3" +    es-abstract "^1.19.1" + +object.pick@^1.3.0: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" +  integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= +  dependencies: +    isobject "^3.0.1" + +object.values@^1.1.0: +  version "1.1.5" +  resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" +  integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== +  dependencies: +    call-bind "^1.0.2" +    define-properties "^1.1.3" +    es-abstract "^1.19.1" + +obuf@^1.0.0, obuf@^1.1.2: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" +  integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: +  version "2.3.0" +  resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" +  integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= +  dependencies: +    ee-first "1.1.1" + +on-headers@~1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" +  integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" +  integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= +  dependencies: +    wrappy "1" + +onetime@^5.1.2: +  version "5.1.2" +  resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" +  integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== +  dependencies: +    mimic-fn "^2.1.0" + +open@^7.0.2: +  version "7.4.2" +  resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" +  integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== +  dependencies: +    is-docker "^2.0.0" +    is-wsl "^2.1.1" + +opener@^1.5.2: +  version "1.5.2" +  resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" +  integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + +opn@^5.5.0: +  version "5.5.0" +  resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" +  integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== +  dependencies: +    is-wsl "^1.1.0" + +original@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" +  integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== +  dependencies: +    url-parse "^1.4.3" + +p-cancelable@^1.0.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" +  integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-finally@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" +  integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^2.0.0, p-limit@^2.2.0: +  version "2.3.0" +  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" +  integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== +  dependencies: +    p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" +  integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== +  dependencies: +    yocto-queue "^0.1.0" + +p-locate@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" +  integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== +  dependencies: +    p-limit "^2.0.0" + +p-locate@^4.1.0: +  version "4.1.0" +  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" +  integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== +  dependencies: +    p-limit "^2.2.0" + +p-locate@^5.0.0: +  version "5.0.0" +  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" +  integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== +  dependencies: +    p-limit "^3.0.2" + +p-map@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" +  integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" +  integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== +  dependencies: +    aggregate-error "^3.0.0" + +p-retry@^3.0.1: +  version "3.0.1" +  resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" +  integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== +  dependencies: +    retry "^0.12.0" + +p-try@^2.0.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" +  integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json@^6.3.0: +  version "6.5.0" +  resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" +  integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== +  dependencies: +    got "^9.6.0" +    registry-auth-token "^4.0.0" +    registry-url "^5.0.0" +    semver "^6.2.0" + +param-case@^3.0.3: +  version "3.0.4" +  resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" +  integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== +  dependencies: +    dot-case "^3.0.4" +    tslib "^2.0.3" + +parent-module@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" +  integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== +  dependencies: +    callsites "^3.0.0" + +parse-entities@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" +  integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== +  dependencies: +    character-entities "^1.0.0" +    character-entities-legacy "^1.0.0" +    character-reference-invalid "^1.0.0" +    is-alphanumerical "^1.0.0" +    is-decimal "^1.0.0" +    is-hexadecimal "^1.0.0" + +parse-json@^5.0.0: +  version "5.2.0" +  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" +  integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== +  dependencies: +    "@babel/code-frame" "^7.0.0" +    error-ex "^1.3.1" +    json-parse-even-better-errors "^2.3.0" +    lines-and-columns "^1.1.6" + +parse-numeric-range@^1.2.0: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3" +  integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ== + +parse5@^5.0.0: +  version "5.1.1" +  resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" +  integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parse5@^6.0.0: +  version "6.0.1" +  resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" +  integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.2, parseurl@~1.3.3: +  version "1.3.3" +  resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" +  integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: +  version "3.1.2" +  resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" +  integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== +  dependencies: +    no-case "^3.0.4" +    tslib "^2.0.3" + +pascalcase@^0.1.1: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" +  integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-dirname@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" +  integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" +  integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" +  integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +  integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@1.0.2, path-is-inside@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" +  integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" +  integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: +  version "3.1.1" +  resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" +  integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: +  version "1.0.7" +  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" +  integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: +  version "0.1.7" +  resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" +  integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-to-regexp@2.2.1: +  version "2.2.1" +  resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" +  integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== + +path-to-regexp@^1.7.0: +  version "1.8.0" +  resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" +  integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== +  dependencies: +    isarray "0.0.1" + +path-type@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" +  integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: +  version "2.3.0" +  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" +  integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +pify@^2.0.0: +  version "2.3.0" +  resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" +  integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^4.0.1: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" +  integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" +  integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= +  dependencies: +    pinkie "^2.0.0" + +pinkie@^2.0.0: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" +  integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pkg-dir@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" +  integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== +  dependencies: +    find-up "^3.0.0" + +pkg-dir@^4.1.0: +  version "4.2.0" +  resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" +  integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== +  dependencies: +    find-up "^4.0.0" + +pkg-up@3.1.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" +  integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== +  dependencies: +    find-up "^3.0.0" + +portfinder@^1.0.26: +  version "1.0.28" +  resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" +  integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== +  dependencies: +    async "^2.6.2" +    debug "^3.1.1" +    mkdirp "^0.5.5" + +posix-character-classes@^0.1.0: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" +  integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-calc@^8.0.0: +  version "8.0.0" +  resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.0.0.tgz#a05b87aacd132740a5db09462a3612453e5df90a" +  integrity sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g== +  dependencies: +    postcss-selector-parser "^6.0.2" +    postcss-value-parser "^4.0.2" + +postcss-colormin@^5.2.0: +  version "5.2.0" +  resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.2.0.tgz#2b620b88c0ff19683f3349f4cf9e24ebdafb2c88" +  integrity sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw== +  dependencies: +    browserslist "^4.16.6" +    caniuse-api "^3.0.0" +    colord "^2.0.1" +    postcss-value-parser "^4.1.0" + +postcss-convert-values@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz#4ec19d6016534e30e3102fdf414e753398645232" +  integrity sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg== +  dependencies: +    postcss-value-parser "^4.1.0" + +postcss-discard-comments@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz#9eae4b747cf760d31f2447c27f0619d5718901fe" +  integrity sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg== + +postcss-discard-duplicates@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz#68f7cc6458fe6bab2e46c9f55ae52869f680e66d" +  integrity sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA== + +postcss-discard-empty@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz#ee136c39e27d5d2ed4da0ee5ed02bc8a9f8bf6d8" +  integrity sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw== + +postcss-discard-overridden@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz#454b41f707300b98109a75005ca4ab0ff2743ac6" +  integrity sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q== + +postcss-discard-unused@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-5.0.1.tgz#63e35a74a154912f93d4e75a1e6ff3cc146f934b" +  integrity sha512-tD6xR/xyZTwfhKYRw0ylfCY8wbfhrjpKAMnDKRTLMy2fNW5hl0hoV6ap5vo2JdCkuHkP3CHw72beO4Y8pzFdww== +  dependencies: +    postcss-selector-parser "^6.0.5" + +postcss-loader@^5.3.0: +  version "5.3.0" +  resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-5.3.0.tgz#1657f869e48d4fdb018a40771c235e499ee26244" +  integrity sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw== +  dependencies: +    cosmiconfig "^7.0.0" +    klona "^2.0.4" +    semver "^7.3.4" + +postcss-merge-idents@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.0.1.tgz#6b5856fc28f2571f28ecce49effb9b0e64be9437" +  integrity sha512-xu8ueVU0RszbI2gKkxR6mluupsOSSLvt8q4gA2fcKFkA+x6SlH3cb4cFHpDvcRCNFbUmCR/VUub+Y6zPOjPx+Q== +  dependencies: +    cssnano-utils "^2.0.1" +    postcss-value-parser "^4.1.0" + +postcss-merge-longhand@^5.0.2: +  version "5.0.2" +  resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz#277ada51d9a7958e8ef8cf263103c9384b322a41" +  integrity sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw== +  dependencies: +    css-color-names "^1.0.1" +    postcss-value-parser "^4.1.0" +    stylehacks "^5.0.1" + +postcss-merge-rules@^5.0.2: +  version "5.0.2" +  resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz#d6e4d65018badbdb7dcc789c4f39b941305d410a" +  integrity sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg== +  dependencies: +    browserslist "^4.16.6" +    caniuse-api "^3.0.0" +    cssnano-utils "^2.0.1" +    postcss-selector-parser "^6.0.5" +    vendors "^1.0.3" + +postcss-minify-font-values@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz#a90cefbfdaa075bd3dbaa1b33588bb4dc268addf" +  integrity sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA== +  dependencies: +    postcss-value-parser "^4.1.0" + +postcss-minify-gradients@^5.0.2: +  version "5.0.2" +  resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz#7c175c108f06a5629925d698b3c4cf7bd3864ee5" +  integrity sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ== +  dependencies: +    colord "^2.6" +    cssnano-utils "^2.0.1" +    postcss-value-parser "^4.1.0" + +postcss-minify-params@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz#371153ba164b9d8562842fdcd929c98abd9e5b6c" +  integrity sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw== +  dependencies: +    alphanum-sort "^1.0.2" +    browserslist "^4.16.0" +    cssnano-utils "^2.0.1" +    postcss-value-parser "^4.1.0" +    uniqs "^2.0.0" + +postcss-minify-selectors@^5.1.0: +  version "5.1.0" +  resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz#4385c845d3979ff160291774523ffa54eafd5a54" +  integrity sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og== +  dependencies: +    alphanum-sort "^1.0.2" +    postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" +  integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" +  integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== +  dependencies: +    icss-utils "^5.0.0" +    postcss-selector-parser "^6.0.2" +    postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" +  integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== +  dependencies: +    postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" +  integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== +  dependencies: +    icss-utils "^5.0.0" + +postcss-normalize-charset@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz#121559d1bebc55ac8d24af37f67bd4da9efd91d0" +  integrity sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg== + +postcss-normalize-display-values@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz#62650b965981a955dffee83363453db82f6ad1fd" +  integrity sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ== +  dependencies: +    cssnano-utils "^2.0.1" +    postcss-value-parser "^4.1.0" + +postcss-normalize-positions@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz#868f6af1795fdfa86fbbe960dceb47e5f9492fe5" +  integrity sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg== +  dependencies: +    postcss-value-parser "^4.1.0" + +postcss-normalize-repeat-style@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz#cbc0de1383b57f5bb61ddd6a84653b5e8665b2b5" +  integrity sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w== +  dependencies: +    cssnano-utils "^2.0.1" +    postcss-value-parser "^4.1.0" + +postcss-normalize-string@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz#d9eafaa4df78c7a3b973ae346ef0e47c554985b0" +  integrity sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA== +  dependencies: +    postcss-value-parser "^4.1.0" + +postcss-normalize-timing-functions@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz#8ee41103b9130429c6cbba736932b75c5e2cb08c" +  integrity sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q== +  dependencies: +    cssnano-utils "^2.0.1" +    postcss-value-parser "^4.1.0" + +postcss-normalize-unicode@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz#82d672d648a411814aa5bf3ae565379ccd9f5e37" +  integrity sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA== +  dependencies: +    browserslist "^4.16.0" +    postcss-value-parser "^4.1.0" + +postcss-normalize-url@^5.0.2: +  version "5.0.2" +  resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz#ddcdfb7cede1270740cf3e4dfc6008bd96abc763" +  integrity sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ== +  dependencies: +    is-absolute-url "^3.0.3" +    normalize-url "^6.0.1" +    postcss-value-parser "^4.1.0" + +postcss-normalize-whitespace@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz#b0b40b5bcac83585ff07ead2daf2dcfbeeef8e9a" +  integrity sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA== +  dependencies: +    postcss-value-parser "^4.1.0" + +postcss-ordered-values@^5.0.2: +  version "5.0.2" +  resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz#1f351426977be00e0f765b3164ad753dac8ed044" +  integrity sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ== +  dependencies: +    cssnano-utils "^2.0.1" +    postcss-value-parser "^4.1.0" + +postcss-reduce-idents@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.0.1.tgz#99b49ce8ee6f9c179447671cc9693e198e877bb7" +  integrity sha512-6Rw8iIVFbqtaZExgWK1rpVgP7DPFRPh0DDFZxJ/ADNqPiH10sPCoq5tgo6kLiTyfh9sxjKYjXdc8udLEcPOezg== +  dependencies: +    postcss-value-parser "^4.1.0" + +postcss-reduce-initial@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz#9d6369865b0f6f6f6b165a0ef5dc1a4856c7e946" +  integrity sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw== +  dependencies: +    browserslist "^4.16.0" +    caniuse-api "^3.0.0" + +postcss-reduce-transforms@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz#93c12f6a159474aa711d5269923e2383cedcf640" +  integrity sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA== +  dependencies: +    cssnano-utils "^2.0.1" +    postcss-value-parser "^4.1.0" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: +  version "6.0.6" +  resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" +  integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== +  dependencies: +    cssesc "^3.0.0" +    util-deprecate "^1.0.2" + +postcss-sort-media-queries@^3.10.11: +  version "3.12.13" +  resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-3.12.13.tgz#213b1422e7efc29e0c2519b6ab259ff7d50b2156" +  integrity sha512-bFbR1+P6HhZWXcT5DVV2pBH5Y2U5daKbFd0j+kcwKdzrxkbmgFu0GhI2JfFUyy5KQIeW+YJGP+vwNDOS5hIn2g== +  dependencies: +    sort-css-media-queries "2.0.4" + +postcss-svgo@^5.0.2: +  version "5.0.2" +  resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.0.2.tgz#bc73c4ea4c5a80fbd4b45e29042c34ceffb9257f" +  integrity sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A== +  dependencies: +    postcss-value-parser "^4.1.0" +    svgo "^2.3.0" + +postcss-unique-selectors@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz#3be5c1d7363352eff838bd62b0b07a0abad43bfc" +  integrity sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w== +  dependencies: +    alphanum-sort "^1.0.2" +    postcss-selector-parser "^6.0.5" +    uniqs "^2.0.0" + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: +  version "4.1.0" +  resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" +  integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss-zindex@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.0.1.tgz#c585724beb69d356af8c7e68847b28d6298ece03" +  integrity sha512-nwgtJJys+XmmSGoYCcgkf/VczP8Mp/0OfSv3v0+fw0uABY4yxw+eFs0Xp9nAZHIKnS5j+e9ywQ+RD+ONyvl5pA== + +postcss@^8.2.15, postcss@^8.2.4, postcss@^8.3.5: +  version "8.3.8" +  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.8.tgz#9ebe2a127396b4b4570ae9f7770e7fb83db2bac1" +  integrity sha512-GT5bTjjZnwDifajzczOC+r3FI3Cu+PgPvrsjhQdRqa2kTJ4968/X9CUce9xttIB0xOs5c6xf0TCWZo/y9lF6bA== +  dependencies: +    nanocolors "^0.2.2" +    nanoid "^3.1.25" +    source-map-js "^0.6.2" + +prepend-http@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" +  integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +pretty-error@^3.0.4: +  version "3.0.4" +  resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-3.0.4.tgz#94b1d54f76c1ed95b9c604b9de2194838e5b574e" +  integrity sha512-ytLFLfv1So4AO1UkoBF6GXQgJRaKbiSiGFICaOPNwQ3CMvBvXpLRubeQWyPGnsbV/t9ml9qto6IeCsho0aEvwQ== +  dependencies: +    lodash "^4.17.20" +    renderkid "^2.0.6" + +pretty-time@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" +  integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== + +prism-react-renderer@^1.2.1: +  version "1.2.1" +  resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.2.1.tgz#392460acf63540960e5e3caa699d851264e99b89" +  integrity sha512-w23ch4f75V1Tnz8DajsYKvY5lF7H1+WvzvLUcF0paFxkTHSp42RS0H5CttdN2Q8RR3DRGZ9v5xD/h3n8C8kGmg== + +prismjs@^1.23.0: +  version "1.25.0" +  resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756" +  integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg== + +process-nextick-args@~2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" +  integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise@^7.1.1: +  version "7.3.1" +  resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" +  integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== +  dependencies: +    asap "~2.0.3" + +prompts@2.4.0: +  version "2.4.0" +  resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" +  integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== +  dependencies: +    kleur "^3.0.3" +    sisteransi "^1.0.5" + +prompts@^2.4.1: +  version "2.4.1" +  resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" +  integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== +  dependencies: +    kleur "^3.0.3" +    sisteransi "^1.0.5" + +prop-types@^15.5.0, prop-types@^15.6.2, prop-types@^15.7.2: +  version "15.7.2" +  resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" +  integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== +  dependencies: +    loose-envify "^1.4.0" +    object-assign "^4.1.1" +    react-is "^16.8.1" + +property-information@^5.0.0, property-information@^5.3.0: +  version "5.6.0" +  resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" +  integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== +  dependencies: +    xtend "^4.0.0" + +proxy-addr@~2.0.5: +  version "2.0.7" +  resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" +  integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== +  dependencies: +    forwarded "0.2.0" +    ipaddr.js "1.9.1" + +prr@~1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" +  integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pump@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" +  integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== +  dependencies: +    end-of-stream "^1.1.0" +    once "^1.3.1" + +punycode@1.3.2: +  version "1.3.2" +  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" +  integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.3.2: +  version "1.4.1" +  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" +  integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" +  integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +pupa@^2.1.1: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" +  integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== +  dependencies: +    escape-goat "^2.0.0" + +pure-color@^1.2.0: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" +  integrity sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4= + +q@^1.1.2: +  version "1.5.1" +  resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" +  integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: +  version "6.7.0" +  resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" +  integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +querystring@0.2.0: +  version "0.2.0" +  resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" +  integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" +  integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: +  version "1.2.3" +  resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" +  integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" +  integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== +  dependencies: +    safe-buffer "^5.1.0" + +range-parser@1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" +  integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= + +range-parser@^1.2.1, range-parser@~1.2.1: +  version "1.2.1" +  resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" +  integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: +  version "2.4.0" +  resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" +  integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== +  dependencies: +    bytes "3.1.0" +    http-errors "1.7.2" +    iconv-lite "0.4.24" +    unpipe "1.0.0" + +rc@^1.2.8: +  version "1.2.8" +  resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" +  integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== +  dependencies: +    deep-extend "^0.6.0" +    ini "~1.3.0" +    minimist "^1.2.0" +    strip-json-comments "~2.0.1" + +react-base16-styling@^0.6.0: +  version "0.6.0" +  resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.6.0.tgz#ef2156d66cf4139695c8a167886cb69ea660792c" +  integrity sha1-7yFW1mz0E5aVyKFniGy2nqZgeSw= +  dependencies: +    base16 "^1.0.0" +    lodash.curry "^4.0.1" +    lodash.flow "^3.3.0" +    pure-color "^1.2.0" + +react-dev-utils@^11.0.1: +  version "11.0.4" +  resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a" +  integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== +  dependencies: +    "@babel/code-frame" "7.10.4" +    address "1.1.2" +    browserslist "4.14.2" +    chalk "2.4.2" +    cross-spawn "7.0.3" +    detect-port-alt "1.1.6" +    escape-string-regexp "2.0.0" +    filesize "6.1.0" +    find-up "4.1.0" +    fork-ts-checker-webpack-plugin "4.1.6" +    global-modules "2.0.0" +    globby "11.0.1" +    gzip-size "5.1.1" +    immer "8.0.1" +    is-root "2.1.0" +    loader-utils "2.0.0" +    open "^7.0.2" +    pkg-up "3.1.0" +    prompts "2.4.0" +    react-error-overlay "^6.0.9" +    recursive-readdir "2.2.2" +    shell-quote "1.7.2" +    strip-ansi "6.0.0" +    text-table "0.2.0" + +react-dom@^17.0.1: +  version "17.0.2" +  resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" +  integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== +  dependencies: +    loose-envify "^1.1.0" +    object-assign "^4.1.1" +    scheduler "^0.20.2" + +react-error-overlay@^6.0.9: +  version "6.0.9" +  resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" +  integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== + +react-fast-compare@^3.1.1: +  version "3.2.0" +  resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" +  integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== + +react-helmet@^6.1.0: +  version "6.1.0" +  resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" +  integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== +  dependencies: +    object-assign "^4.1.1" +    prop-types "^15.7.2" +    react-fast-compare "^3.1.1" +    react-side-effect "^2.1.0" + +react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: +  version "16.13.1" +  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" +  integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-json-view@^1.21.3: +  version "1.21.3" +  resolved "https://registry.yarnpkg.com/react-json-view/-/react-json-view-1.21.3.tgz#f184209ee8f1bf374fb0c41b0813cff54549c475" +  integrity sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw== +  dependencies: +    flux "^4.0.1" +    react-base16-styling "^0.6.0" +    react-lifecycles-compat "^3.0.4" +    react-textarea-autosize "^8.3.2" + +react-lifecycles-compat@^3.0.4: +  version "3.0.4" +  resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" +  integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-loadable-ssr-addon-v5-slorber@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz#2cdc91e8a744ffdf9e3556caabeb6e4278689883" +  integrity sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A== +  dependencies: +    "@babel/runtime" "^7.10.3" + +react-loadable@^5.5.0: +  version "5.5.0" +  resolved "https://registry.yarnpkg.com/react-loadable/-/react-loadable-5.5.0.tgz#582251679d3da86c32aae2c8e689c59f1196d8c4" +  integrity sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg== +  dependencies: +    prop-types "^15.5.0" + +react-router-config@^5.1.1: +  version "5.1.1" +  resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" +  integrity sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg== +  dependencies: +    "@babel/runtime" "^7.1.2" + +react-router-dom@^5.2.0: +  version "5.3.0" +  resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363" +  integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== +  dependencies: +    "@babel/runtime" "^7.12.13" +    history "^4.9.0" +    loose-envify "^1.3.1" +    prop-types "^15.6.2" +    react-router "5.2.1" +    tiny-invariant "^1.0.2" +    tiny-warning "^1.0.0" + +react-router@5.2.1, react-router@^5.2.0: +  version "5.2.1" +  resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d" +  integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== +  dependencies: +    "@babel/runtime" "^7.12.13" +    history "^4.9.0" +    hoist-non-react-statics "^3.1.0" +    loose-envify "^1.3.1" +    mini-create-react-context "^0.4.0" +    path-to-regexp "^1.7.0" +    prop-types "^15.6.2" +    react-is "^16.6.0" +    tiny-invariant "^1.0.2" +    tiny-warning "^1.0.0" + +react-side-effect@^2.1.0: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3" +  integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== + +react-textarea-autosize@^8.3.2: +  version "8.3.3" +  resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz#f70913945369da453fd554c168f6baacd1fa04d8" +  integrity sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ== +  dependencies: +    "@babel/runtime" "^7.10.2" +    use-composed-ref "^1.0.0" +    use-latest "^1.0.0" + +react@^17.0.1: +  version "17.0.2" +  resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" +  integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== +  dependencies: +    loose-envify "^1.1.0" +    object-assign "^4.1.1" + +readable-stream@^2.0.1, readable-stream@^2.0.2: +  version "2.3.7" +  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" +  integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== +  dependencies: +    core-util-is "~1.0.0" +    inherits "~2.0.3" +    isarray "~1.0.0" +    process-nextick-args "~2.0.0" +    safe-buffer "~5.1.1" +    string_decoder "~1.1.1" +    util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.1.1: +  version "3.6.0" +  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" +  integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== +  dependencies: +    inherits "^2.0.3" +    string_decoder "^1.1.1" +    util-deprecate "^1.0.1" + +readdirp@^2.2.1: +  version "2.2.1" +  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" +  integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== +  dependencies: +    graceful-fs "^4.1.11" +    micromatch "^3.1.10" +    readable-stream "^2.0.2" + +readdirp@~3.6.0: +  version "3.6.0" +  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" +  integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== +  dependencies: +    picomatch "^2.2.1" + +reading-time@^1.3.0: +  version "1.5.0" +  resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb" +  integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg== + +rechoir@^0.6.2: +  version "0.6.2" +  resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" +  integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= +  dependencies: +    resolve "^1.1.6" + +recursive-readdir@2.2.2: +  version "2.2.2" +  resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" +  integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== +  dependencies: +    minimatch "3.0.4" + +regenerate-unicode-properties@^9.0.0: +  version "9.0.0" +  resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" +  integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA== +  dependencies: +    regenerate "^1.4.2" + +regenerate@^1.4.2: +  version "1.4.2" +  resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" +  integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.4: +  version "0.13.9" +  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" +  integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-transform@^0.14.2: +  version "0.14.5" +  resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" +  integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== +  dependencies: +    "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" +  integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== +  dependencies: +    extend-shallow "^3.0.2" +    safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0: +  version "1.3.1" +  resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" +  integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== +  dependencies: +    call-bind "^1.0.2" +    define-properties "^1.1.3" + +regexpu-core@^4.7.1: +  version "4.8.0" +  resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" +  integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== +  dependencies: +    regenerate "^1.4.2" +    regenerate-unicode-properties "^9.0.0" +    regjsgen "^0.5.2" +    regjsparser "^0.7.0" +    unicode-match-property-ecmascript "^2.0.0" +    unicode-match-property-value-ecmascript "^2.0.0" + +registry-auth-token@^4.0.0: +  version "4.2.1" +  resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" +  integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== +  dependencies: +    rc "^1.2.8" + +registry-url@^5.0.0: +  version "5.1.0" +  resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" +  integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== +  dependencies: +    rc "^1.2.8" + +regjsgen@^0.5.2: +  version "0.5.2" +  resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" +  integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.7.0: +  version "0.7.0" +  resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" +  integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ== +  dependencies: +    jsesc "~0.5.0" + +rehype-parse@^6.0.2: +  version "6.0.2" +  resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-6.0.2.tgz#aeb3fdd68085f9f796f1d3137ae2b85a98406964" +  integrity sha512-0S3CpvpTAgGmnz8kiCyFLGuW5yA4OQhyNTm/nwPopZ7+PI11WnGl1TTWTGv/2hPEe/g2jRLlhVVSsoDH8waRug== +  dependencies: +    hast-util-from-parse5 "^5.0.0" +    parse5 "^5.0.0" +    xtend "^4.0.0" + +relateurl@^0.2.7: +  version "0.2.7" +  resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" +  integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remark-admonitions@^1.2.1: +  version "1.2.1" +  resolved "https://registry.yarnpkg.com/remark-admonitions/-/remark-admonitions-1.2.1.tgz#87caa1a442aa7b4c0cafa04798ed58a342307870" +  integrity sha512-Ji6p68VDvD+H1oS95Fdx9Ar5WA2wcDA4kwrrhVU7fGctC6+d3uiMICu7w7/2Xld+lnU7/gi+432+rRbup5S8ow== +  dependencies: +    rehype-parse "^6.0.2" +    unified "^8.4.2" +    unist-util-visit "^2.0.1" + +remark-emoji@^2.1.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-2.2.0.tgz#1c702090a1525da5b80e15a8f963ef2c8236cac7" +  integrity sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w== +  dependencies: +    emoticon "^3.2.0" +    node-emoji "^1.10.0" +    unist-util-visit "^2.0.3" + +remark-footnotes@2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f" +  integrity sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ== + +remark-mdx@1.6.22: +  version "1.6.22" +  resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.22.tgz#06a8dab07dcfdd57f3373af7f86bd0e992108bbd" +  integrity sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ== +  dependencies: +    "@babel/core" "7.12.9" +    "@babel/helper-plugin-utils" "7.10.4" +    "@babel/plugin-proposal-object-rest-spread" "7.12.1" +    "@babel/plugin-syntax-jsx" "7.12.1" +    "@mdx-js/util" "1.6.22" +    is-alphabetical "1.0.4" +    remark-parse "8.0.3" +    unified "9.2.0" + +remark-parse@8.0.3: +  version "8.0.3" +  resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1" +  integrity sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q== +  dependencies: +    ccount "^1.0.0" +    collapse-white-space "^1.0.2" +    is-alphabetical "^1.0.0" +    is-decimal "^1.0.0" +    is-whitespace-character "^1.0.0" +    is-word-character "^1.0.0" +    markdown-escapes "^1.0.0" +    parse-entities "^2.0.0" +    repeat-string "^1.5.4" +    state-toggle "^1.0.0" +    trim "0.0.1" +    trim-trailing-lines "^1.0.0" +    unherit "^1.0.4" +    unist-util-remove-position "^2.0.0" +    vfile-location "^3.0.0" +    xtend "^4.0.1" + +remark-squeeze-paragraphs@4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead" +  integrity sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw== +  dependencies: +    mdast-squeeze-paragraphs "^4.0.0" + +remove-trailing-separator@^1.0.1: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" +  integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.6: +  version "2.0.7" +  resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" +  integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== +  dependencies: +    css-select "^4.1.3" +    dom-converter "^0.2.0" +    htmlparser2 "^6.1.0" +    lodash "^4.17.21" +    strip-ansi "^3.0.1" + +repeat-element@^1.1.2: +  version "1.1.4" +  resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" +  integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.5.4, repeat-string@^1.6.1: +  version "1.6.1" +  resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" +  integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +require-directory@^2.1.1: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" +  integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +"require-like@>= 0.1.1": +  version "0.1.2" +  resolved "https://registry.yarnpkg.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa" +  integrity sha1-rW8wwTvs15cBDEaK+ndcDAprR/o= + +require-main-filename@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" +  integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" +  integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" +  integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= +  dependencies: +    resolve-from "^3.0.0" + +resolve-from@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" +  integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" +  integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-pathname@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" +  integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + +resolve-url@^0.2.1: +  version "0.2.1" +  resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" +  integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.1.6, resolve@^1.14.2, resolve@^1.3.2: +  version "1.20.0" +  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" +  integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== +  dependencies: +    is-core-module "^2.2.0" +    path-parse "^1.0.6" + +responselike@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" +  integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= +  dependencies: +    lowercase-keys "^1.0.0" + +ret@~0.1.10: +  version "0.1.15" +  resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" +  integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: +  version "0.12.0" +  resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" +  integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +reusify@^1.0.4: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" +  integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^2.6.3: +  version "2.7.1" +  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" +  integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== +  dependencies: +    glob "^7.1.3" + +rimraf@^3.0.2: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" +  integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== +  dependencies: +    glob "^7.1.3" + +rtl-detect@^1.0.3: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.0.4.tgz#40ae0ea7302a150b96bc75af7d749607392ecac6" +  integrity sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ== + +rtlcss@^3.1.2: +  version "3.3.0" +  resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-3.3.0.tgz#fa9d29b071a863fe959704da6a93de3076aeeca4" +  integrity sha512-XZ2KEatH2nU5yPlts1Wu8SGIuZ3ndN025HQX5MqtUCUiOn5WkCDbcpJ2VJWjpuFmM2cUTQ1xtH21fhMCSseI5A== +  dependencies: +    chalk "^4.1.0" +    find-up "^5.0.0" +    mkdirp "^1.0.4" +    postcss "^8.2.4" +    strip-json-comments "^3.1.1" + +run-parallel@^1.1.9: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" +  integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== +  dependencies: +    queue-microtask "^1.2.2" + +rxjs@^6.6.3: +  version "6.6.7" +  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" +  integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== +  dependencies: +    tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +  version "5.1.2" +  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" +  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +  version "5.2.1" +  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" +  integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" +  integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= +  dependencies: +    ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": +  version "2.1.2" +  resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" +  integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4, sax@~1.2.4: +  version "1.2.4" +  resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" +  integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +scheduler@^0.20.2: +  version "0.20.2" +  resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" +  integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== +  dependencies: +    loose-envify "^1.1.0" +    object-assign "^4.1.1" + +schema-utils@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" +  integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== +  dependencies: +    ajv "^6.1.0" +    ajv-errors "^1.0.0" +    ajv-keywords "^3.1.0" + +schema-utils@^2.6.5: +  version "2.7.1" +  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" +  integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== +  dependencies: +    "@types/json-schema" "^7.0.5" +    ajv "^6.12.4" +    ajv-keywords "^3.5.2" + +schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: +  version "3.1.1" +  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" +  integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== +  dependencies: +    "@types/json-schema" "^7.0.8" +    ajv "^6.12.5" +    ajv-keywords "^3.5.2" + +section-matter@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" +  integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== +  dependencies: +    extend-shallow "^2.0.1" +    kind-of "^6.0.0" + +select-hose@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" +  integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.8: +  version "1.10.11" +  resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" +  integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== +  dependencies: +    node-forge "^0.10.0" + +semver-diff@^3.1.1: +  version "3.1.1" +  resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" +  integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== +  dependencies: +    semver "^6.3.0" + +semver@7.0.0: +  version "7.0.0" +  resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" +  integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: +  version "5.7.1" +  resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" +  integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: +  version "6.3.0" +  resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" +  integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.4, semver@^7.3.5: +  version "7.3.5" +  resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" +  integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== +  dependencies: +    lru-cache "^6.0.0" + +send@0.17.1: +  version "0.17.1" +  resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" +  integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== +  dependencies: +    debug "2.6.9" +    depd "~1.1.2" +    destroy "~1.0.4" +    encodeurl "~1.0.2" +    escape-html "~1.0.3" +    etag "~1.8.1" +    fresh "0.5.2" +    http-errors "~1.7.2" +    mime "1.6.0" +    ms "2.1.1" +    on-finished "~2.3.0" +    range-parser "~1.2.1" +    statuses "~1.5.0" + +serialize-javascript@^6.0.0: +  version "6.0.0" +  resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" +  integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== +  dependencies: +    randombytes "^2.1.0" + +serve-handler@^6.1.3: +  version "6.1.3" +  resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.3.tgz#1bf8c5ae138712af55c758477533b9117f6435e8" +  integrity sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w== +  dependencies: +    bytes "3.0.0" +    content-disposition "0.5.2" +    fast-url-parser "1.1.3" +    mime-types "2.1.18" +    minimatch "3.0.4" +    path-is-inside "1.0.2" +    path-to-regexp "2.2.1" +    range-parser "1.2.0" + +serve-index@^1.9.1: +  version "1.9.1" +  resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" +  integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= +  dependencies: +    accepts "~1.3.4" +    batch "0.6.1" +    debug "2.6.9" +    escape-html "~1.0.3" +    http-errors "~1.6.2" +    mime-types "~2.1.17" +    parseurl "~1.3.2" + +serve-static@1.14.1: +  version "1.14.1" +  resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" +  integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== +  dependencies: +    encodeurl "~1.0.2" +    escape-html "~1.0.3" +    parseurl "~1.3.3" +    send "0.17.1" + +set-blocking@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" +  integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" +  integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== +  dependencies: +    extend-shallow "^2.0.1" +    is-extendable "^0.1.1" +    is-plain-object "^2.0.3" +    split-string "^3.0.1" + +setimmediate@^1.0.5: +  version "1.0.5" +  resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" +  integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" +  integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" +  integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +shallow-clone@^3.0.0: +  version "3.0.1" +  resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" +  integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== +  dependencies: +    kind-of "^6.0.2" + +shebang-command@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" +  integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= +  dependencies: +    shebang-regex "^1.0.0" + +shebang-command@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" +  integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== +  dependencies: +    shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" +  integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" +  integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: +  version "1.7.2" +  resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" +  integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shelljs@^0.8.4: +  version "0.8.4" +  resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" +  integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== +  dependencies: +    glob "^7.0.0" +    interpret "^1.0.0" +    rechoir "^0.6.2" + +side-channel@^1.0.4: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" +  integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== +  dependencies: +    call-bind "^1.0.0" +    get-intrinsic "^1.0.2" +    object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: +  version "3.0.5" +  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f" +  integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ== + +sirv@^1.0.7: +  version "1.0.17" +  resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.17.tgz#86e2c63c612da5a1dace1c16c46f524aaa26ac45" +  integrity sha512-qx9go5yraB7ekT7bCMqUHJ5jEaOC/GXBxUWv+jeWnb7WzHUFdcQPGWk7YmAwFBaQBrogpuSqd/azbC2lZRqqmw== +  dependencies: +    "@polka/url" "^1.0.0-next.20" +    mime "^2.3.1" +    totalist "^1.0.0" + +sisteransi@^1.0.5: +  version "1.0.5" +  resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" +  integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +sitemap@^7.0.0: +  version "7.0.0" +  resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-7.0.0.tgz#022bef4df8cba42e38e1fe77039f234cab0372b6" +  integrity sha512-Ud0jrRQO2k7fEtPAM+cQkBKoMvxQyPKNXKDLn8tRVHxRCsdDQ2JZvw+aZ5IRYYQVAV9iGxEar6boTwZzev+x3g== +  dependencies: +    "@types/node" "^15.0.1" +    "@types/sax" "^1.2.1" +    arg "^5.0.0" +    sax "^1.2.4" + +slash@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" +  integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +snapdragon-node@^2.0.1: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" +  integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== +  dependencies: +    define-property "^1.0.0" +    isobject "^3.0.0" +    snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: +  version "3.0.1" +  resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" +  integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== +  dependencies: +    kind-of "^3.2.0" + +snapdragon@^0.8.1: +  version "0.8.2" +  resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" +  integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== +  dependencies: +    base "^0.11.1" +    debug "^2.2.0" +    define-property "^0.2.5" +    extend-shallow "^2.0.1" +    map-cache "^0.2.2" +    source-map "^0.5.6" +    source-map-resolve "^0.5.0" +    use "^3.1.0" + +sockjs-client@^1.5.0: +  version "1.5.2" +  resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.2.tgz#4bc48c2da9ce4769f19dc723396b50f5c12330a3" +  integrity sha512-ZzRxPBISQE7RpzlH4tKJMQbHM9pabHluk0WBaxAQ+wm/UieeBVBou0p4wVnSQGN9QmpAZygQ0cDIypWuqOFmFQ== +  dependencies: +    debug "^3.2.6" +    eventsource "^1.0.7" +    faye-websocket "^0.11.3" +    inherits "^2.0.4" +    json3 "^3.3.3" +    url-parse "^1.5.3" + +sockjs@^0.3.21: +  version "0.3.21" +  resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" +  integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== +  dependencies: +    faye-websocket "^0.11.3" +    uuid "^3.4.0" +    websocket-driver "^0.7.4" + +sort-css-media-queries@2.0.4: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.0.4.tgz#b2badfa519cb4a938acbc6d3aaa913d4949dc908" +  integrity sha512-PAIsEK/XupCQwitjv7XxoMvYhT7EAfyzI3hsy/MyDgTvc+Ft55ctdkctJLOy6cQejaIC+zjpUL4djFVm2ivOOw== + +source-list-map@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" +  integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-js@^0.6.2: +  version "0.6.2" +  resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" +  integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + +source-map-resolve@^0.5.0: +  version "0.5.3" +  resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" +  integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== +  dependencies: +    atob "^2.1.2" +    decode-uri-component "^0.2.0" +    resolve-url "^0.2.1" +    source-map-url "^0.4.0" +    urix "^0.1.0" + +source-map-support@~0.5.12, source-map-support@~0.5.20: +  version "0.5.20" +  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" +  integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== +  dependencies: +    buffer-from "^1.0.0" +    source-map "^0.6.0" + +source-map-url@^0.4.0: +  version "0.4.1" +  resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" +  integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.0, source-map@^0.5.6: +  version "0.5.7" +  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" +  integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: +  version "0.6.1" +  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" +  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@~0.7.2: +  version "0.7.3" +  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" +  integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +space-separated-tokens@^1.0.0: +  version "1.1.5" +  resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" +  integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== + +spdy-transport@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" +  integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== +  dependencies: +    debug "^4.1.0" +    detect-node "^2.0.4" +    hpack.js "^2.1.6" +    obuf "^1.1.2" +    readable-stream "^3.0.6" +    wbuf "^1.7.3" + +spdy@^4.0.2: +  version "4.0.2" +  resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" +  integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== +  dependencies: +    debug "^4.1.0" +    handle-thing "^2.0.0" +    http-deceiver "^1.2.7" +    select-hose "^2.0.0" +    spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" +  integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== +  dependencies: +    extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" +  integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +stable@^0.1.8: +  version "0.1.8" +  resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" +  integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +state-toggle@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" +  integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== + +static-extend@^0.1.1: +  version "0.1.2" +  resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" +  integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= +  dependencies: +    define-property "^0.2.5" +    object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: +  version "1.5.0" +  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" +  integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +std-env@^2.2.1: +  version "2.3.1" +  resolved "https://registry.yarnpkg.com/std-env/-/std-env-2.3.1.tgz#d42271908819c243f8defc77a140fc1fcee336a1" +  integrity sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g== +  dependencies: +    ci-info "^3.1.1" + +string-width@^3.0.0, string-width@^3.1.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" +  integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== +  dependencies: +    emoji-regex "^7.0.1" +    is-fullwidth-code-point "^2.0.0" +    strip-ansi "^5.1.0" + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.2: +  version "4.2.3" +  resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" +  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== +  dependencies: +    emoji-regex "^8.0.0" +    is-fullwidth-code-point "^3.0.0" +    strip-ansi "^6.0.1" + +string.prototype.trimend@^1.0.4: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" +  integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== +  dependencies: +    call-bind "^1.0.2" +    define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" +  integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== +  dependencies: +    call-bind "^1.0.2" +    define-properties "^1.1.3" + +string_decoder@^1.1.1: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" +  integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== +  dependencies: +    safe-buffer "~5.2.0" + +string_decoder@~1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" +  integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== +  dependencies: +    safe-buffer "~5.1.0" + +stringify-object@^3.3.0: +  version "3.3.0" +  resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" +  integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== +  dependencies: +    get-own-enumerable-property-symbols "^3.0.0" +    is-obj "^1.0.1" +    is-regexp "^1.0.0" + +strip-ansi@6.0.0: +  version "6.0.0" +  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" +  integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== +  dependencies: +    ansi-regex "^5.0.0" + +strip-ansi@^3.0.1: +  version "3.0.1" +  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" +  integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= +  dependencies: +    ansi-regex "^2.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: +  version "5.2.0" +  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" +  integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== +  dependencies: +    ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: +  version "6.0.1" +  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" +  integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== +  dependencies: +    ansi-regex "^5.0.1" + +strip-bom-string@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" +  integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= + +strip-eof@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" +  integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" +  integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.1: +  version "3.1.1" +  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" +  integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" +  integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +style-to-object@0.3.0, style-to-object@^0.3.0: +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" +  integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== +  dependencies: +    inline-style-parser "0.1.1" + +stylehacks@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.0.1.tgz#323ec554198520986806388c7fdaebc38d2c06fb" +  integrity sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA== +  dependencies: +    browserslist "^4.16.0" +    postcss-selector-parser "^6.0.4" + +supports-color@^5.3.0: +  version "5.5.0" +  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" +  integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== +  dependencies: +    has-flag "^3.0.0" + +supports-color@^6.1.0: +  version "6.1.0" +  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" +  integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== +  dependencies: +    has-flag "^3.0.0" + +supports-color@^7.1.0: +  version "7.2.0" +  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" +  integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== +  dependencies: +    has-flag "^4.0.0" + +supports-color@^8.0.0: +  version "8.1.1" +  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" +  integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== +  dependencies: +    has-flag "^4.0.0" + +svg-parser@^2.0.2: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" +  integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.2.2: +  version "1.3.2" +  resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" +  integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== +  dependencies: +    chalk "^2.4.1" +    coa "^2.0.2" +    css-select "^2.0.0" +    css-select-base-adapter "^0.1.1" +    css-tree "1.0.0-alpha.37" +    csso "^4.0.2" +    js-yaml "^3.13.1" +    mkdirp "~0.5.1" +    object.values "^1.1.0" +    sax "~1.2.4" +    stable "^0.1.8" +    unquote "~1.1.1" +    util.promisify "~1.0.0" + +svgo@^2.3.0: +  version "2.7.0" +  resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.7.0.tgz#e164cded22f4408fe4978f082be80159caea1e2d" +  integrity sha512-aDLsGkre4fTDCWvolyW+fs8ZJFABpzLXbtdK1y71CKnHzAnpDxKXPj2mNKj+pyOXUCzFHzuxRJ94XOFygOWV3w== +  dependencies: +    "@trysound/sax" "0.2.0" +    commander "^7.2.0" +    css-select "^4.1.3" +    css-tree "^1.1.3" +    csso "^4.2.0" +    nanocolors "^0.1.12" +    stable "^0.1.8" + +tapable@^1.0.0: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" +  integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: +  version "2.2.1" +  resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" +  integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terser-webpack-plugin@^5.1.3: +  version "5.2.4" +  resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz#ad1be7639b1cbe3ea49fab995cbe7224b31747a1" +  integrity sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA== +  dependencies: +    jest-worker "^27.0.6" +    p-limit "^3.1.0" +    schema-utils "^3.1.1" +    serialize-javascript "^6.0.0" +    source-map "^0.6.1" +    terser "^5.7.2" + +terser@^4.6.3: +  version "4.8.0" +  resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" +  integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== +  dependencies: +    commander "^2.20.0" +    source-map "~0.6.1" +    source-map-support "~0.5.12" + +terser@^5.7.2: +  version "5.9.0" +  resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" +  integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== +  dependencies: +    commander "^2.20.0" +    source-map "~0.7.2" +    source-map-support "~0.5.20" + +text-table@0.2.0, text-table@^0.2.0: +  version "0.2.0" +  resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +  integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +thunky@^1.0.2: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" +  integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timsort@^0.3.0: +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" +  integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-invariant@^1.0.2: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" +  integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== + +tiny-warning@^1.0.0, tiny-warning@^1.0.3: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" +  integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +to-fast-properties@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" +  integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" +  integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= +  dependencies: +    kind-of "^3.0.2" + +to-readable-stream@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" +  integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^2.1.0: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" +  integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= +  dependencies: +    is-number "^3.0.0" +    repeat-string "^1.6.1" + +to-regex-range@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" +  integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== +  dependencies: +    is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" +  integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== +  dependencies: +    define-property "^2.0.2" +    extend-shallow "^3.0.2" +    regex-not "^1.0.2" +    safe-regex "^1.1.0" + +toidentifier@1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" +  integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +totalist@^1.0.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" +  integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== + +trim-trailing-lines@^1.0.0: +  version "1.1.4" +  resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" +  integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ== + +trim@0.0.1: +  version "0.0.1" +  resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" +  integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= + +trough@^1.0.0: +  version "1.0.5" +  resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" +  integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== + +ts-essentials@^2.0.3: +  version "2.0.12" +  resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" +  integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w== + +tslib@^1.9.0: +  version "1.14.1" +  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" +  integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0: +  version "2.3.1" +  resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" +  integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + +type-fest@^0.20.2: +  version "0.20.2" +  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" +  integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: +  version "0.21.3" +  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" +  integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-is@~1.6.17, type-is@~1.6.18: +  version "1.6.18" +  resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" +  integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== +  dependencies: +    media-typer "0.3.0" +    mime-types "~2.1.24" + +typedarray-to-buffer@^3.1.5: +  version "3.1.5" +  resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" +  integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== +  dependencies: +    is-typedarray "^1.0.0" + +typescript@^4.3.5: +  version "4.4.3" +  resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" +  integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== + +ua-parser-js@^0.7.18: +  version "0.7.28" +  resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" +  integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== + +unbox-primitive@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" +  integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== +  dependencies: +    function-bind "^1.1.1" +    has-bigints "^1.0.1" +    has-symbols "^1.0.2" +    which-boxed-primitive "^1.0.2" + +unherit@^1.0.4: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" +  integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== +  dependencies: +    inherits "^2.0.0" +    xtend "^4.0.0" + +unicode-canonical-property-names-ecmascript@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" +  integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" +  integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== +  dependencies: +    unicode-canonical-property-names-ecmascript "^2.0.0" +    unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" +  integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + +unicode-property-aliases-ecmascript@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" +  integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + +unified@9.2.0: +  version "9.2.0" +  resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8" +  integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg== +  dependencies: +    bail "^1.0.0" +    extend "^3.0.0" +    is-buffer "^2.0.0" +    is-plain-obj "^2.0.0" +    trough "^1.0.0" +    vfile "^4.0.0" + +unified@^8.4.2: +  version "8.4.2" +  resolved "https://registry.yarnpkg.com/unified/-/unified-8.4.2.tgz#13ad58b4a437faa2751a4a4c6a16f680c500fff1" +  integrity sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA== +  dependencies: +    bail "^1.0.0" +    extend "^3.0.0" +    is-plain-obj "^2.0.0" +    trough "^1.0.0" +    vfile "^4.0.0" + +union-value@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" +  integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== +  dependencies: +    arr-union "^3.1.0" +    get-value "^2.0.6" +    is-extendable "^0.1.1" +    set-value "^2.0.1" + +uniqs@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" +  integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-string@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" +  integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== +  dependencies: +    crypto-random-string "^2.0.0" + +unist-builder@2.0.3, unist-builder@^2.0.0: +  version "2.0.3" +  resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" +  integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== + +unist-util-generated@^1.0.0: +  version "1.1.6" +  resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" +  integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg== + +unist-util-is@^4.0.0: +  version "4.1.0" +  resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" +  integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== + +unist-util-position@^3.0.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" +  integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== + +unist-util-remove-position@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc" +  integrity sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA== +  dependencies: +    unist-util-visit "^2.0.0" + +unist-util-remove@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.1.0.tgz#b0b4738aa7ee445c402fda9328d604a02d010588" +  integrity sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q== +  dependencies: +    unist-util-is "^4.0.0" + +unist-util-stringify-position@^2.0.0: +  version "2.0.3" +  resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" +  integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== +  dependencies: +    "@types/unist" "^2.0.2" + +unist-util-visit-parents@^3.0.0: +  version "3.1.1" +  resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" +  integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== +  dependencies: +    "@types/unist" "^2.0.0" +    unist-util-is "^4.0.0" + +unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.1, unist-util-visit@^2.0.2, unist-util-visit@^2.0.3: +  version "2.0.3" +  resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" +  integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== +  dependencies: +    "@types/unist" "^2.0.0" +    unist-util-is "^4.0.0" +    unist-util-visit-parents "^3.0.0" + +universalify@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" +  integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" +  integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" +  integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" +  integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= +  dependencies: +    has-value "^0.3.1" +    isobject "^3.0.0" + +upath@^1.1.1: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" +  integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +update-notifier@^5.1.0: +  version "5.1.0" +  resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" +  integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== +  dependencies: +    boxen "^5.0.0" +    chalk "^4.1.0" +    configstore "^5.0.1" +    has-yarn "^2.1.0" +    import-lazy "^2.1.0" +    is-ci "^2.0.0" +    is-installed-globally "^0.4.0" +    is-npm "^5.0.0" +    is-yarn-global "^0.3.0" +    latest-version "^5.1.0" +    pupa "^2.1.1" +    semver "^7.3.4" +    semver-diff "^3.1.1" +    xdg-basedir "^4.0.0" + +uri-js@^4.2.2: +  version "4.4.1" +  resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" +  integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== +  dependencies: +    punycode "^2.1.0" + +urix@^0.1.0: +  version "0.1.0" +  resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" +  integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@^4.1.1: +  version "4.1.1" +  resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" +  integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== +  dependencies: +    loader-utils "^2.0.0" +    mime-types "^2.1.27" +    schema-utils "^3.0.0" + +url-parse-lax@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" +  integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= +  dependencies: +    prepend-http "^2.0.0" + +url-parse@^1.4.3, url-parse@^1.5.3: +  version "1.5.3" +  resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862" +  integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ== +  dependencies: +    querystringify "^2.1.1" +    requires-port "^1.0.0" + +url@^0.11.0: +  version "0.11.0" +  resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" +  integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= +  dependencies: +    punycode "1.3.2" +    querystring "0.2.0" + +use-composed-ref@^1.0.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.1.0.tgz#9220e4e94a97b7b02d7d27eaeab0b37034438bbc" +  integrity sha512-my1lNHGWsSDAhhVAT4MKs6IjBUtG6ZG11uUqexPH9PptiIZDQOzaF4f5tEbJ2+7qvNbtXNBbU3SfmN+fXlWDhg== +  dependencies: +    ts-essentials "^2.0.3" + +use-isomorphic-layout-effect@^1.0.0: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz#7bb6589170cd2987a152042f9084f9effb75c225" +  integrity sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ== + +use-latest@^1.0.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.0.tgz#a44f6572b8288e0972ec411bdd0840ada366f232" +  integrity sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw== +  dependencies: +    use-isomorphic-layout-effect "^1.0.0" + +use@^3.1.0: +  version "3.1.1" +  resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" +  integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +  integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@~1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" +  integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== +  dependencies: +    define-properties "^1.1.3" +    es-abstract "^1.17.2" +    has-symbols "^1.0.1" +    object.getownpropertydescriptors "^2.1.0" + +utila@~0.4: +  version "0.4.0" +  resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" +  integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utility-types@^3.10.0: +  version "3.10.0" +  resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" +  integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== + +utils-merge@1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" +  integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2, uuid@^3.4.0: +  version "3.4.0" +  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" +  integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +value-equal@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" +  integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + +vary@~1.1.2: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" +  integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.3: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" +  integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +vfile-location@^3.0.0, vfile-location@^3.2.0: +  version "3.2.0" +  resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c" +  integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA== + +vfile-message@^2.0.0: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" +  integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== +  dependencies: +    "@types/unist" "^2.0.0" +    unist-util-stringify-position "^2.0.0" + +vfile@^4.0.0: +  version "4.2.1" +  resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" +  integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== +  dependencies: +    "@types/unist" "^2.0.0" +    is-buffer "^2.0.0" +    unist-util-stringify-position "^2.0.0" +    vfile-message "^2.0.0" + +wait-on@^5.3.0: +  version "5.3.0" +  resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-5.3.0.tgz#584e17d4b3fe7b46ac2b9f8e5e102c005c2776c7" +  integrity sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg== +  dependencies: +    axios "^0.21.1" +    joi "^17.3.0" +    lodash "^4.17.21" +    minimist "^1.2.5" +    rxjs "^6.6.3" + +watchpack@^2.2.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce" +  integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA== +  dependencies: +    glob-to-regexp "^0.4.1" +    graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: +  version "1.7.3" +  resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" +  integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== +  dependencies: +    minimalistic-assert "^1.0.0" + +web-namespaces@^1.0.0, web-namespaces@^1.1.2: +  version "1.1.4" +  resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" +  integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== + +webpack-bundle-analyzer@^4.4.2: +  version "4.4.2" +  resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz#39898cf6200178240910d629705f0f3493f7d666" +  integrity sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ== +  dependencies: +    acorn "^8.0.4" +    acorn-walk "^8.0.0" +    chalk "^4.1.0" +    commander "^6.2.0" +    gzip-size "^6.0.0" +    lodash "^4.17.20" +    opener "^1.5.2" +    sirv "^1.0.7" +    ws "^7.3.1" + +webpack-dev-middleware@^3.7.2: +  version "3.7.3" +  resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" +  integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== +  dependencies: +    memory-fs "^0.4.1" +    mime "^2.4.4" +    mkdirp "^0.5.1" +    range-parser "^1.2.1" +    webpack-log "^2.0.0" + +webpack-dev-server@^3.11.2: +  version "3.11.2" +  resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708" +  integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== +  dependencies: +    ansi-html "0.0.7" +    bonjour "^3.5.0" +    chokidar "^2.1.8" +    compression "^1.7.4" +    connect-history-api-fallback "^1.6.0" +    debug "^4.1.1" +    del "^4.1.1" +    express "^4.17.1" +    html-entities "^1.3.1" +    http-proxy-middleware "0.19.1" +    import-local "^2.0.0" +    internal-ip "^4.3.0" +    ip "^1.1.5" +    is-absolute-url "^3.0.3" +    killable "^1.0.1" +    loglevel "^1.6.8" +    opn "^5.5.0" +    p-retry "^3.0.1" +    portfinder "^1.0.26" +    schema-utils "^1.0.0" +    selfsigned "^1.10.8" +    semver "^6.3.0" +    serve-index "^1.9.1" +    sockjs "^0.3.21" +    sockjs-client "^1.5.0" +    spdy "^4.0.2" +    strip-ansi "^3.0.1" +    supports-color "^6.1.0" +    url "^0.11.0" +    webpack-dev-middleware "^3.7.2" +    webpack-log "^2.0.0" +    ws "^6.2.1" +    yargs "^13.3.2" + +webpack-log@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" +  integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== +  dependencies: +    ansi-colors "^3.0.0" +    uuid "^3.3.2" + +webpack-merge@^5.8.0: +  version "5.8.0" +  resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" +  integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== +  dependencies: +    clone-deep "^4.0.1" +    wildcard "^2.0.0" + +webpack-sources@^1.1.0, webpack-sources@^1.4.3: +  version "1.4.3" +  resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" +  integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== +  dependencies: +    source-list-map "^2.0.0" +    source-map "~0.6.1" + +webpack-sources@^3.2.0: +  version "3.2.1" +  resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.1.tgz#251a7d9720d75ada1469ca07dbb62f3641a05b6d" +  integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA== + +webpack@^5.40.0: +  version "5.56.1" +  resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.56.1.tgz#e39d1d1f1acdb6f07e346f74b7dcfe323da4ded9" +  integrity sha512-MRbTPooHJuSAfbx7Lh/qEMRUe/d0p4cRj2GPo/fq+4JUeR/+Q1EfLvS1lexslbMcJZyPXxxz/k/NzVepkA5upA== +  dependencies: +    "@types/eslint-scope" "^3.7.0" +    "@types/estree" "^0.0.50" +    "@webassemblyjs/ast" "1.11.1" +    "@webassemblyjs/wasm-edit" "1.11.1" +    "@webassemblyjs/wasm-parser" "1.11.1" +    acorn "^8.4.1" +    acorn-import-assertions "^1.7.6" +    browserslist "^4.14.5" +    chrome-trace-event "^1.0.2" +    enhanced-resolve "^5.8.3" +    es-module-lexer "^0.9.0" +    eslint-scope "5.1.1" +    events "^3.2.0" +    glob-to-regexp "^0.4.1" +    graceful-fs "^4.2.4" +    json-parse-better-errors "^1.0.2" +    loader-runner "^4.2.0" +    mime-types "^2.1.27" +    neo-async "^2.6.2" +    schema-utils "^3.1.0" +    tapable "^2.1.1" +    terser-webpack-plugin "^5.1.3" +    watchpack "^2.2.0" +    webpack-sources "^3.2.0" + +webpackbar@^5.0.0-3: +  version "5.0.0-3" +  resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-5.0.0-3.tgz#f4f96c8fb13001b2bb1348252db4c980ab93aaac" +  integrity sha512-viW6KCYjMb0NPoDrw2jAmLXU2dEOhRrtku28KmOfeE1vxbfwCYuTbTaMhnkrCZLFAFyY9Q49Z/jzYO80Dw5b8g== +  dependencies: +    ansi-escapes "^4.3.1" +    chalk "^4.1.0" +    consola "^2.15.0" +    figures "^3.2.0" +    pretty-time "^1.1.0" +    std-env "^2.2.1" +    text-table "^0.2.0" +    wrap-ansi "^7.0.0" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: +  version "0.7.4" +  resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" +  integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== +  dependencies: +    http-parser-js ">=0.5.1" +    safe-buffer ">=5.1.0" +    websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: +  version "0.1.4" +  resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" +  integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +which-boxed-primitive@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" +  integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== +  dependencies: +    is-bigint "^1.0.1" +    is-boolean-object "^1.1.0" +    is-number-object "^1.0.4" +    is-string "^1.0.5" +    is-symbol "^1.0.3" + +which-module@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" +  integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9, which@^1.3.1: +  version "1.3.1" +  resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" +  integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== +  dependencies: +    isexe "^2.0.0" + +which@^2.0.1: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" +  integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== +  dependencies: +    isexe "^2.0.0" + +widest-line@^3.1.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" +  integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== +  dependencies: +    string-width "^4.0.0" + +wildcard@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" +  integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== + +worker-rpc@^0.1.0: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" +  integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== +  dependencies: +    microevent.ts "~0.1.1" + +wrap-ansi@^5.1.0: +  version "5.1.0" +  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" +  integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== +  dependencies: +    ansi-styles "^3.2.0" +    string-width "^3.0.0" +    strip-ansi "^5.0.0" + +wrap-ansi@^7.0.0: +  version "7.0.0" +  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" +  integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== +  dependencies: +    ansi-styles "^4.0.0" +    string-width "^4.1.0" +    strip-ansi "^6.0.0" + +wrappy@1: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +  integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^3.0.0: +  version "3.0.3" +  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" +  integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== +  dependencies: +    imurmurhash "^0.1.4" +    is-typedarray "^1.0.0" +    signal-exit "^3.0.2" +    typedarray-to-buffer "^3.1.5" + +ws@^6.2.1: +  version "6.2.2" +  resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" +  integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== +  dependencies: +    async-limiter "~1.0.0" + +ws@^7.3.1: +  version "7.5.5" +  resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" +  integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== + +xdg-basedir@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" +  integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== + +xml-js@^1.6.11: +  version "1.6.11" +  resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9" +  integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== +  dependencies: +    sax "^1.2.4" + +xtend@^4.0.0, xtend@^4.0.1: +  version "4.0.2" +  resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" +  integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: +  version "4.0.3" +  resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" +  integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yallist@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" +  integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.10.2: +  version "1.10.2" +  resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" +  integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^13.1.2: +  version "13.1.2" +  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" +  integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== +  dependencies: +    camelcase "^5.0.0" +    decamelize "^1.2.0" + +yargs@^13.3.2: +  version "13.3.2" +  resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" +  integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== +  dependencies: +    cliui "^5.0.0" +    find-up "^3.0.0" +    get-caller-file "^2.0.1" +    require-directory "^2.1.1" +    require-main-filename "^2.0.0" +    set-blocking "^2.0.0" +    string-width "^3.0.0" +    which-module "^2.0.0" +    y18n "^4.0.0" +    yargs-parser "^13.1.2" + +yocto-queue@^0.1.0: +  version "0.1.0" +  resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" +  integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zwitch@^1.0.0: +  version "1.0.5" +  resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" +  integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== diff --git a/gateway/BUILD b/gateway/BUILD index 542b496..d65c913 100644 --- a/gateway/BUILD +++ b/gateway/BUILD @@ -7,14 +7,17 @@ test_suite(name = "tests")  rust_binary(      name = "gateway",      srcs = glob(["src/**/*.rs"]), -    proc_macro_deps = crate_deps(["serde_repr", "num-derive"]), -    deps = all_crate_deps() + ["//common/rust:common"], +    proc_macro_deps = crate_deps([ +        "serde_repr", +        "num-derive", +    ]),      visibility = ["//visibility:public"], +    deps = all_crate_deps() + ["//common/rust:common"],  )  rust_image(      name = "image", +    base = "//bazel:base",      binary = ":gateway",      visibility = ["//visibility:public"], -    base = "//bazel:base",  ) diff --git a/gateway/Cargo.toml b/gateway/Cargo.toml index 1b8e9ea..4afdbc2 100644 --- a/gateway/Cargo.toml +++ b/gateway/Cargo.toml @@ -5,12 +5,12 @@ edition = "2018"  [dependencies]  common = { path = "../common/rust" } -tokio = { version = "1", features = ["full"] }  tokio-tungstenite = { version = "*", features = ["rustls-tls"] } +tokio = { version = "1", features = ["full"] } +  url = "2.2.2"  futures-util = "0.3.17"  futures = "0.3.17" -log = { version = "0.4", features = ["std"] }  serde_json = { version = "1.0" }  serde = { version = "1.0", features = ["derive"] } @@ -19,4 +19,4 @@ enumflags2 = { version = "0.7.1", features = ["serde"] }  num-traits = "0.2"  num-derive = "0.3" -num = "0.4"
\ No newline at end of file +num = "0.4" diff --git a/gateway/README.md b/gateway/README.md deleted file mode 100644 index 0f8b76c..0000000 --- a/gateway/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Gateway
 -
 -The gateway component managed the connexion with the Discord event gateway using a websocket connexion.
\ No newline at end of file diff --git a/gateway/cargo/BUILD.bazel b/gateway/cargo/BUILD.bazel index e85683f..211b096 100644 --- a/gateway/cargo/BUILD.bazel +++ b/gateway/cargo/BUILD.bazel @@ -40,15 +40,6 @@ alias(  )  alias( -    name = "log", -    actual = "@raze__log__0_4_14//:log", -    tags = [ -        "cargo-raze", -        "manual", -    ], -) - -alias(      name = "num",      actual = "@raze__num__0_4_0//:num",      tags = [ diff --git a/gateway/config/default.toml b/gateway/config/default.toml deleted file mode 100644 index 4bfac9d..0000000 --- a/gateway/config/default.toml +++ /dev/null @@ -1,12 +0,0 @@ -[monitoring] -enabled = false - -[nats] -host = "localhost" - -[gateway] -max_reconnects = 5 -reconnect_delay_growth_factor = 1.25 -reconnect_delay_minimum = 5000 -reconnect_delay_maximum = 60000 -intents = 32767 diff --git a/gateway/src/connection/stream.rs b/gateway/src/connection/stream.rs index 767feec..5a12daf 100644 --- a/gateway/src/connection/stream.rs +++ b/gateway/src/connection/stream.rs @@ -2,7 +2,7 @@ use crate::{error::GatewayError, payloads::gateway::BaseMessage};  use super::Connection;  use futures::{FutureExt, Sink, SinkExt, Stream, StreamExt}; -use log::info; +use common::log::info;  use serde::Serialize;  use std::{      pin::Pin, diff --git a/gateway/src/connection/utils.rs b/gateway/src/connection/utils.rs index fb07229..bb425da 100644 --- a/gateway/src/connection/utils.rs +++ b/gateway/src/connection/utils.rs @@ -1,6 +1,6 @@  use std::str::from_utf8;  use tokio_tungstenite::tungstenite::Message; -use log::info; +use common::log::info;  use crate::error::GatewayError; diff --git a/gateway/src/error.rs b/gateway/src/error.rs index 603caab..eb3a245 100644 --- a/gateway/src/error.rs +++ b/gateway/src/error.rs @@ -16,9 +16,7 @@ impl From<tokio_tungstenite::tungstenite::Error> for GatewayError {  impl From<String> for GatewayError {      fn from(e: String) -> Self {          GatewayError { -            0: NovaError { -                message: e, -            }, +            0: NovaError { message: e },          }      }  } diff --git a/gateway/src/management/mod.rs b/gateway/src/management/mod.rs deleted file mode 100644 index e69de29..0000000 --- a/gateway/src/management/mod.rs +++ /dev/null diff --git a/gateway/src/payloads/dispatch.rs b/gateway/src/payloads/dispatch.rs index be5f237..9eca9c5 100644 --- a/gateway/src/payloads/dispatch.rs +++ b/gateway/src/payloads/dispatch.rs @@ -1,5 +1,3 @@ -use futures::io::Read; -use log::info;  use serde::{Deserialize, Deserializer, Serialize};  use serde_json::Value; diff --git a/gateway/src/payloads/events/resume.rs b/gateway/src/payloads/events/resume.rs deleted file mode 100644 index e69de29..0000000 --- a/gateway/src/payloads/events/resume.rs +++ /dev/null diff --git a/gateway/src/payloads/gateway.rs b/gateway/src/payloads/gateway.rs index 6ec2285..4f24890 100644 --- a/gateway/src/payloads/gateway.rs +++ b/gateway/src/payloads/gateway.rs @@ -1,7 +1,10 @@ -use super::{dispatch::Dispatch, opcodes::{OpCodes, hello::Hello}}; +use super::{ +    dispatch::Dispatch, +    opcodes::{hello::Hello, OpCodes}, +}; +use serde::de::Error;  use serde::{Deserialize, Serialize};  use serde_json::Value; -use serde::de::Error;  #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]  #[serde(bound(deserialize = "T: Deserialize<'de> + std::fmt::Debug"))] @@ -24,7 +27,10 @@ pub enum Message {  }  impl<'de> serde::Deserialize<'de> for Message { -    fn deserialize<D: serde::Deserializer<'de>>(d: D) -> Result<Self, D::Error> where D::Error : Error { +    fn deserialize<D: serde::Deserializer<'de>>(d: D) -> Result<Self, D::Error> +    where +        D::Error: Error, +    {          let value = Value::deserialize(d)?;          let val = value.get("op").and_then(Value::as_u64).unwrap(); @@ -36,42 +42,32 @@ impl<'de> serde::Deserialize<'de> for Message {                      let sequence = value.get("s").unwrap().as_u64();                      // we need to find a better solution than clone -                    match serde_json::from_value(value) { -                        Ok(data) => { -                            Ok(Message::Dispatch(BaseMessage { -                                op, -                                t, -                                sequence, -                                data -                            })) -                        }, -                        Err(e) => Err(Error::custom(e)), -                    } -                }, -                 -                OpCodes::Reconnect => { -                    match BaseMessage::deserialize(value) { -                        Ok(data) => Ok(Message::Reconnect(data)), +                    match Dispatch::deserialize(value) { +                        Ok(data) => Ok(Message::Dispatch(BaseMessage { +                            op, +                            t, +                            sequence, +                            data, +                        })),                          Err(e) => Err(Error::custom(e)),                      } +                } + +                OpCodes::Reconnect => match BaseMessage::deserialize(value) { +                    Ok(data) => Ok(Message::Reconnect(data)), +                    Err(e) => Err(Error::custom(e)),                  }, -                OpCodes::InvalidSession => { -                    match BaseMessage::deserialize(value) { -                        Ok(data) => Ok(Message::InvalidSession(data)), -                        Err(e) => Err(Error::custom(e)), -                    } +                OpCodes::InvalidSession => match BaseMessage::deserialize(value) { +                    Ok(data) => Ok(Message::InvalidSession(data)), +                    Err(e) => Err(Error::custom(e)),                  }, -                OpCodes::Hello => { -                    match BaseMessage::deserialize(value) { -                        Ok(data) => Ok(Message::Hello(data)), -                        Err(e) => Err(Error::custom(e)), -                    } +                OpCodes::Hello => match BaseMessage::deserialize(value) { +                    Ok(data) => Ok(Message::Hello(data)), +                    Err(e) => Err(Error::custom(e)),                  }, -                OpCodes::HeartbeatACK => { -                    match BaseMessage::deserialize(value) { -                        Ok(data) => Ok(Message::HeartbeatACK(data)), -                        Err(e) => Err(Error::custom(e)), -                    } +                OpCodes::HeartbeatACK => match BaseMessage::deserialize(value) { +                    Ok(data) => Ok(Message::HeartbeatACK(data)), +                    Err(e) => Err(Error::custom(e)),                  },                  _ => panic!("Cannot convert"),              } diff --git a/gateway/src/shard/actions.rs b/gateway/src/shard/actions.rs index 86e5f98..b6ef038 100644 --- a/gateway/src/shard/actions.rs +++ b/gateway/src/shard/actions.rs @@ -1,7 +1,7 @@  use std::env;  use futures::SinkExt; -use log::{debug, error, info}; +use common::log::{debug, error, info};  use serde::Serialize;  use serde_json::Value;  use std::fmt::Debug; diff --git a/gateway/src/shard/connection.rs b/gateway/src/shard/connection.rs index a0fa98a..8f8ddc6 100644 --- a/gateway/src/shard/connection.rs +++ b/gateway/src/shard/connection.rs @@ -7,8 +7,8 @@ use crate::{connection::Connection, error::GatewayError, payloads::{  use super::{state::ConnectionState, ConnectionWithState, Shard};  use futures::StreamExt; -use log::{error, info}; -use tokio::{select, time::{Instant, sleep}}; +use common::log::{error, info}; +use tokio::{select, time::{Instant, interval_at, sleep}};  impl Shard {      pub async fn start(self: &mut Self) { @@ -159,7 +159,7 @@ impl Shard {                  info!("Server hello received");                  self._util_set_seq(msg.sequence);                  if let Some(conn) = &mut self.connection { -                    conn.state.interval = Some(tokio::time::interval_at( +                    conn.state.interval = Some(interval_at(                          Instant::now() + Duration::from_millis(msg.data.heartbeat_interval),                          Duration::from_millis(msg.data.heartbeat_interval),                      )); @@ -185,7 +185,9 @@ impl Shard {                      session_id: ready.session_id.clone(),                  });              } -            Dispatch::Other(data) => {            } +            Dispatch::Other(_data) => { +                // todo: build dispatch & forward to nats +            }          }      }  } @@ -9,6 +9,5 @@ require (  	github.com/prometheus/client_golang v1.9.0  	github.com/rs/zerolog v1.23.0  	github.com/spf13/cobra v0.0.3 -	golang.org/x/sys v0.0.0-20210510120138-977fb7262007 // indirect -	google.golang.org/protobuf v1.27.1 // indirect +	google.golang.org/grpc v1.41.0  ) @@ -31,6 +31,8 @@ github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2c  github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=  github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA=  github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=  github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=  github.com/apache/thrift v0.13.0 h1:5hryIiq9gtn+MiLVn0wP37kb/uTeRZgN08WoCsAhIhI=  github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= @@ -68,6 +70,11 @@ github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec h1:EdRZT3IeKQmfCSrgo  github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=  github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=  github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158 h1:CevA8fI91PAnP8vpnXuB8ZYAZ5wqY86nAbxfgK8tWO4= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=  github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa h1:OaNxuTZr7kxeODyLWsRMC+OD03aFUH+mW6r2d+MWa5Y=  github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=  github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w= @@ -103,8 +110,12 @@ github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaB  github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg=  github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o=  github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473 h1:4cmBvAEBNJaGARUEs3/suWRyfyBfhf7I60WBZq+bv2w= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=  github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021 h1:fP+fF0up6oPY49OrjPrhIJ8yQfdIM85NXMLkMg1EXVs= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=  github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A=  github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=  github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= @@ -160,11 +171,13 @@ github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb  github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=  github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=  github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=  github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=  github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=  github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=  github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=  github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=  github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=  github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=  github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= @@ -179,14 +192,16 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a  github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=  github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=  github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=  github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=  github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=  github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=  github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=  github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA=  github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA=  github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=  github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=  github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=  github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= @@ -200,8 +215,9 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de  github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=  github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=  github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5 h1:UImYN5qQ8tuGpGE16ZmjvcTtTw24zw1QAp/SlnNrZhI=  github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=  github.com/hashicorp/consul/api v1.3.0 h1:HXNYlRkkM/t+Y/Yhxtwcy02dlYwIaoxzvxPnS+cqy78=  github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE=  github.com/hashicorp/consul/sdk v0.3.0 h1:UOxjlb4xVNF93jak1mzzoBatyFju9nrkxpVwIp/QqxQ= @@ -421,8 +437,9 @@ github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULU  github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=  github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ=  github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af h1:gu+uRPtBe88sKxUCEXRoeCvVG90TJmwhiqRpvdhQFng=  github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=  github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk=  github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=  github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= @@ -469,6 +486,7 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+  github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=  github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=  github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=  github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=  github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=  github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8 h1:ndzgwNDnKIqyCvHTXaCqh9KlOWKvBry6nuXMJmonVsE= @@ -490,6 +508,8 @@ go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=  go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=  go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs=  go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opentelemetry.io/proto/otlp v0.7.0 h1:rwOQPCuKAKmwGKq2aVNnYIibI6wnV7EvzgfTCzcdGg8= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=  go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=  go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY=  go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -541,13 +561,15 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL  golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=  golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=  golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=  golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=  golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=  golang.org/x/net v0.0.0-20210326060303-6b1517762897 h1:KrsHThm5nFk34YtATK1LsThyGhGbGe1olrte/HInHvs=  golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k=  golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421 h1:Wo7BWFiOk0QRFMLYMqJGFMd9CgUAcGx7V+qEg/h5IBI=  golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=  golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=  golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=  golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -584,9 +606,8 @@ golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7w  golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=  golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=  golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79 h1:RX8C8PRZc2hTIod4ds8ij+/4RQX3AqhYj3uOHmyaz4E=  golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=  golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=  golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=  golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -627,8 +648,10 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA  google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=  google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=  google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE=  google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=  google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=  google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=  google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -637,18 +660,25 @@ google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ij  google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=  google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=  google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=  google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.41.0 h1:f+PlOh7QV4iIJkPrx5NQ7qaNGFQ3OTse67yaDHfju4E= +google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k=  google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=  google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=  google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=  google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=  google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=  google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=  google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk=  google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=  gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=  gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=  gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -674,6 +704,7 @@ gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRN  gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=  gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=  gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=  gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=  gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=  gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= diff --git a/novactl/BUILD.bazel b/novactl/BUILD.bazel index 5c5a33c..2731bce 100644 --- a/novactl/BUILD.bazel +++ b/novactl/BUILD.bazel @@ -10,6 +10,8 @@ go_library(      visibility = ["//visibility:private"],      deps = [          "//novactl/cmd", +        "@com_github_rs_zerolog//:zerolog", +        "@com_github_rs_zerolog//log",          "@com_github_spf13_cobra//:cobra",      ],  ) diff --git a/novactl/README.md b/novactl/README.md deleted file mode 100644 index 480524a..0000000 --- a/novactl/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Novactl
 -
 -Novactl is a simple command-line utility used to interact with your nova projects, and the nova infrastructure.
\ No newline at end of file diff --git a/novactl/cmd/BUILD.bazel b/novactl/cmd/BUILD.bazel index eb6837b..9c83733 100644 --- a/novactl/cmd/BUILD.bazel +++ b/novactl/cmd/BUILD.bazel @@ -3,15 +3,20 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library")  go_library(      name = "cmd",      srcs = [ +        "cluster.go",          "init.go",          "version.go",      ],      importpath = "github.com/discordnova/nova/novactl/cmd",      visibility = ["//visibility:public"],      deps = [ +        "//common", +        "//common/management",          "//novactl/lib",          "@com_github_go_git_go_git_v5//:go-git", +        "@com_github_go_git_go_git_v5//config", +        "@com_github_olekukonko_tablewriter//:tablewriter", +        "@com_github_rs_zerolog//log",          "@com_github_spf13_cobra//:cobra", -        "@com_github_twinproduction_go_color//:go-color",      ],  ) diff --git a/novactl/cmd/cluster.go b/novactl/cmd/cluster.go new file mode 100644 index 0000000..3d56c21 --- /dev/null +++ b/novactl/cmd/cluster.go @@ -0,0 +1,96 @@ +package cmd + +import ( +	"context" +	"errors" +	"github.com/discordnova/nova/common/management" +	"github.com/discordnova/nova/novactl/lib" +	"github.com/olekukonko/tablewriter" +	"github.com/rs/zerolog/log" +	"github.com/spf13/cobra" +	"os" +	"strconv" +	"time" +) + +var ClusterCommand = createClusterCommand() + +var ( +	ServerUrl *string = nil +	Ctx               = context.Background() +) + +func createClusterCommand() *cobra.Command { +	command := &cobra.Command{ +		Use:              "cluster", +		Short:            "Commands to interact with the nova cluster", +		Aliases:          []string{"c"}, +		TraverseChildren: true, +	} +	// shard sub command +	shard := cobra.Command{ +		Use:   "shard [shard]", +		Short: "Returns information about a specific shard", +		Run:   shardCommand, +		Args: func(cmd *cobra.Command, args []string) error { +			if len(args) != 1 { +				return errors.New("one shard id must be specified") +			} else { +				if _, err := strconv.Atoi(args[0]); err != nil { +					return errors.New("the shard id must be a string") +				} +			} +			return nil +		}, +		TraverseChildren: true, +	} +	// info sub command +	info := cobra.Command{ +		Use:              "info", +		Short:            "Gets the status of the cluster", +		Aliases:          []string{"i"}, +		Run:              infoCommand, +		TraverseChildren: true, +	} + +	ServerUrl = command.Flags().StringP("server", "s", "localhost:8053", "") + +	command.AddCommand(&shard) +	command.AddCommand(&info) + +	return command +} + +func shardCommand(command *cobra.Command, args []string) { +	id, err := strconv.ParseInt(args[0], 10, 64) +	if err != nil { +		log.Err(err).Msg("Failed to parse the shard id") +		os.Exit(1) +	} + +	log.Info().Msgf("Starting connection with server %s", *ServerUrl) +	conn, err := lib.NewConn(*ServerUrl) + +	if err != nil { +		log.Err(err).Msg("Failed to connect to the manager") +		return +	} +	ctx, _ := context.WithTimeout(Ctx, time.Second*10) + +	manager := *conn +	data, err := manager.GetShardStatus(ctx, &management.ShardStatusRequest{ +		Identifier: id, +	}) + +	if err != nil { +		log.Err(err).Msg("Failed to get the status of the shard") +		return +	} + +	table := tablewriter.NewWriter(os.Stdout) +	table.SetHeader([]string{"Status", "Id", "Cluster", "Latency"}) +	table.Append([]string{string(data.Status), string(data.Identifier), data.Cluster, string(data.Latency)}) +	table.Render() +} + +func infoCommand(command *cobra.Command, args []string) {} diff --git a/novactl/cmd/init.go b/novactl/cmd/init.go index 47a5559..084c2da 100644 --- a/novactl/cmd/init.go +++ b/novactl/cmd/init.go @@ -1,89 +1,140 @@ -package cmd
 -
 -import (
 -	"fmt"
 -	"io/fs"
 -	"io/ioutil"
 -	"os"
 -	"path/filepath"
 -	"strings"
 -
 -	"github.com/TwinProduction/go-color"
 -	"github.com/go-git/go-git/v5"
 -	"github.com/spf13/cobra"
 -)
 -
 -var (
 -	InitializeCommand = &cobra.Command{
 -		Use:   "init",
 -		Short: "Initialize a new nova based project",
 -		Run:   initNovaRepo,
 -	}
 -)
 -
 -func initNovaRepo(cmd *cobra.Command, args []string) {
 -	url := "https://github.com/libgit2/git2go.git"
 -	path := ""
 -	name := "test"
 -
 -	if name == "" {
 -		fmt.Print(
 -			color.Ize(color.Red, "A name must be specified"),
 -		)
 -		return
 -	}
 -
 -	if path == "" {
 -		path = fmt.Sprintf("./%s", name)
 -	}
 -	cw, err := os.Getwd()
 -	if err != nil {
 -		return
 -	}
 -	path = filepath.Join(cw, path)
 -
 -	fmt.Println(
 -		color.Ize(color.Green, fmt.Sprintf("Initializing a new nova project at %s", path)),
 -	)
 -	fmt.Println(
 -		color.Ize(color.Gray, fmt.Sprintf("Using the %s template", url)),
 -	)
 -
 -	// clone the repo
 -	_, err = git.PlainClone(path, false, &git.CloneOptions{
 -		URL:      url,
 -		Progress: os.Stdout,
 -	})
 -
 -	if err != nil {
 -		fmt.Println(
 -			color.Ize(color.Red, fmt.Sprintf("Failed to initialize the repository: %s", err.Error())),
 -		)
 -		return
 -	}
 -
 -	fmt.Println(
 -		color.Ize(color.Green, "Cloned the repository..."),
 -	)
 -
 -	filepath.WalkDir(path, func(path string, d fs.DirEntry, err error) error {
 -		if d.IsDir() || err != nil {
 -			return nil
 -		}
 -
 -		read, err := ioutil.ReadFile(path)
 -		if err != nil {
 -
 -		}
 -		content := strings.ReplaceAll(string(read), "%PROJECT%", name)
 -
 -		err = ioutil.WriteFile(path, []byte(content), 0)
 -
 -		if err != nil {
 -			return err
 -		}
 -		return nil
 -	})
 -
 -	err = os.RemoveAll(filepath.Join(path, ".git"))
 -}
 +package cmd + +import ( +	"fmt" +	"github.com/go-git/go-git/v5/config" +	"github.com/rs/zerolog/log" +	"io/fs" +	"io/ioutil" +	"os" +	"path/filepath" +	"strings" + +	"github.com/go-git/go-git/v5" +	"github.com/spf13/cobra" +) + +var ( +	InitializeCommand         = createInitCommand() +	Flavour           *string = nil +	Name              *string = nil +) + +func createInitCommand() *cobra.Command { +	command := cobra.Command{ +		Use:   "init [path]", +		Short: "Initialize a new nova based project", +		Run:   initNovaRepo, +	} + +	Flavour = command.Flags().String("flavour", "javascript", "the flavour of template to use") +	Name = command.Flags().String("name", "", "the name of the project") + +	return &command +} + +func determineTemplate() string { +	if strings.HasPrefix(*Flavour, "http") || strings.HasPrefix(*Flavour, "ssh") { +		return *Flavour +	} else { +		return fmt.Sprintf("https://github.com/discordnova/template-%s.git", *Flavour) +	} +} + +func initNovaRepo(cmd *cobra.Command, args []string) { + +	url := determineTemplate() +	if len(args) == 0 { +		log.Error().Msg("A path must be specified") +		os.Exit(1) +	} + +	path := strings.Join(args, " ") +	name := path + +	// if the user specified a name different from the folder name +	if *Name != "" { +		name = *Name +	} + +	cw, err := os.Getwd() +	if err != nil { +		return +	} +	// we get the absolute path of the folder +	path = filepath.Join(cw, path) +	log.Info().Msgf("Initializing a %s at %s using template %s", name, path, url) + +	// clone the repo +	_, err = git.PlainClone(path, false, &git.CloneOptions{ +		URL: url, +	}) + +	if err != nil { +		log.Err(err).Msg("Failed to initialize the repository") +		os.Exit(1) +	} + +	log.Info().Msg("Successfully cloned the template") + +	// replace all the instances of "%PROJECT%" with the project name +	err = filepath.WalkDir(path, func(path string, d fs.DirEntry, err error) error { +		if d.IsDir() || err != nil { +			return nil +		} + +		read, err := ioutil.ReadFile(path) +		if err != nil { + +		} +		content := strings.ReplaceAll(string(read), "%PROJECT%", name) + +		err = ioutil.WriteFile(path, []byte(content), 0) + +		if err != nil { +			return err +		} +		return nil +	}) + +	if err != nil { +		log.Err(err).Msgf("Failed to bootstrap the project") +		// we try to remove the folder +		_ = os.Remove(path) +		os.Exit(1) +	} +	// we remove the git folder +	err = os.RemoveAll(filepath.Join(path, ".git")) + +	repo, err := git.PlainInit(path, false) +	if err != nil { +		log.Err(err).Msgf("Failed to initialize the git repository") +		os.Exit(1) +	} + +	err = repo.CreateBranch(&config.Branch{ +		Name: "main", +	}) +	if err != nil { +		log.Err(err).Msgf("Failed to create the main branch") +		os.Exit(1) +	} + +	tree, err := repo.Worktree() +	if err != nil { +		log.Err(err).Msgf("Failed to get worktree") +		os.Exit(1) +	} +	_, err = tree.Add(".") +	if err != nil { +		log.Err(err).Msgf("Failed to index the files") +		os.Exit(1) +	} +	_, err = tree.Commit("first commit", &git.CommitOptions{}) +	if err != nil { +		log.Err(err).Msgf("Failed to index the first commit") +		os.Exit(1) +	} + +	log.Info().Msgf("Created a new repository at %", path) +} diff --git a/novactl/cmd/version.go b/novactl/cmd/version.go index cea4f1b..425cd89 100644 --- a/novactl/cmd/version.go +++ b/novactl/cmd/version.go @@ -1,20 +1,20 @@ -package cmd
 -
 -import (
 -	"fmt"
 -
 -	"github.com/discordnova/nova/novactl/lib"
 -	"github.com/spf13/cobra"
 -)
 -
 -var (
 -	VersionCommand = &cobra.Command{
 -		Use:   "version",
 -		Short: "Returns the version of the CLI",
 -		Run:   version,
 -	}
 -)
 -
 -func version(cmd *cobra.Command, args []string) {
 -	fmt.Println(fmt.Sprintf("Nova version: %s", lib.VERSION))
 -}
 +package cmd + +import ( +	"fmt" + +	"github.com/discordnova/nova/common" +	"github.com/spf13/cobra" +) + +var ( +	VersionCommand = &cobra.Command{ +		Use:   "version", +		Short: "Returns the version of the CLI", +		Run:   version, +	} +) + +func version(cmd *cobra.Command, args []string) { +	fmt.Println(fmt.Sprintf("Nova version: %s", common.VERSION)) +} diff --git a/novactl/lib/BUILD.bazel b/novactl/lib/BUILD.bazel index 1dd62b7..55da507 100644 --- a/novactl/lib/BUILD.bazel +++ b/novactl/lib/BUILD.bazel @@ -1,14 +1,12 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") +load("@io_bazel_rules_go//go:def.bzl", "go_library")  go_library(      name = "lib", -    srcs = ["vesion.go"], +    srcs = ["conn.go"],      importpath = "github.com/discordnova/nova/novactl/lib",      visibility = ["//visibility:public"], -) - -go_test( -    name = "lib_test", -    srcs = ["version_test.go"], -    deps = [":lib"], +    deps = [ +        "//common/management", +        "@org_golang_google_grpc//:go_default_library", +    ],  ) diff --git a/novactl/lib/conn.go b/novactl/lib/conn.go new file mode 100644 index 0000000..362c9ed --- /dev/null +++ b/novactl/lib/conn.go @@ -0,0 +1,19 @@ +package lib + +import ( +	"google.golang.org/grpc" + +	"github.com/discordnova/nova/common/management" +) + +// NewConn creates a connection to the manager +func NewConn(host string) (*management.ManagementServiceClient, error) { +	lis, err := grpc.Dial(host, grpc.WithInsecure()) +	if err != nil { +		return nil, err +	} + +	conn := management.NewManagementServiceClient(lis) + +	return &conn, nil +} diff --git a/novactl/lib/version_test.go b/novactl/lib/version_test.go deleted file mode 100644 index 665780f..0000000 --- a/novactl/lib/version_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package lib_test
 -
 -import (
 -	"testing"
 -
 -	"github.com/discordnova/nova/novactl/lib"
 -)
 -
 -func TestVersion(t *testing.T) {
 -	if lib.VERSION != "0.0.1" {
 -		t.Fatalf("Version number do not match %s", lib.VERSION)
 -	}
 -}
 diff --git a/novactl/lib/vesion.go b/novactl/lib/vesion.go deleted file mode 100644 index 2d18ea9..0000000 --- a/novactl/lib/vesion.go +++ /dev/null @@ -1,5 +0,0 @@ -package lib
 -
 -const (
 -	VERSION = "0.0.1"
 -)
 diff --git a/novactl/main.go b/novactl/main.go index 7261b68..0939961 100644 --- a/novactl/main.go +++ b/novactl/main.go @@ -1,13 +1,23 @@ -package main
 -
 -import (
 -	"github.com/discordnova/nova/novactl/cmd"
 -	"github.com/spf13/cobra"
 -)
 -
 -func main() {
 -	rootCommand := &cobra.Command{Use: "app"}
 -	rootCommand.AddCommand(cmd.VersionCommand)
 -	rootCommand.AddCommand(cmd.InitializeCommand)
 -	rootCommand.Execute()
 -}
 +package main + +import ( +	"github.com/discordnova/nova/novactl/cmd" +	"github.com/rs/zerolog" +	"github.com/rs/zerolog/log" +	"github.com/spf13/cobra" +	"os" +) + +func main() { +	log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}) + +	rootCommand := &cobra.Command{ +		Use: "novactl", +		Short: "A tool to interact with a nova cluster", +		TraverseChildren: true, +	} +	rootCommand.AddCommand(cmd.VersionCommand) +	rootCommand.AddCommand(cmd.InitializeCommand) +	rootCommand.AddCommand(cmd.ClusterCommand) +	_ = rootCommand.Execute() +} diff --git a/ratelimiter/BUILD b/ratelimiter/BUILD deleted file mode 100644 index 4a122e1..0000000 --- a/ratelimiter/BUILD +++ /dev/null @@ -1,36 +0,0 @@ -load("@rules_rust//rust:rust.bzl", "rust_binary") -load("@rules_rust//cargo:cargo_build_script.bzl", "cargo_build_script") -load("//cargo:crates.bzl", "all_crate_deps", "crate_deps") -load("@io_bazel_rules_docker//rust:image.bzl", "rust_image") - -test_suite(name = "tests") - -cargo_build_script( -    name = "build_script", -    srcs = ["build.rs"], -    build_script_env = { -        "PROTOC": "$(location @com_google_protobuf//:protoc)", -    }, -    data = [ -        "//ratelimiter/proto:nova.ratelimit.v1.proto", -    ] + [ -        "@com_google_protobuf//:protoc", -        "@com_google_protobuf//:protobuf_headers", -    ], -    deps = all_crate_deps() + crate_deps(["tonic-build"]), -) - -rust_binary( -    name = "ratelimiter", -    srcs = ["src/main.rs"], -    deps = all_crate_deps() + [":build_script"], -    visibility = ["//visibility:public"], -) - -rust_image( -    name = "image", -    srcs = ["src/main.rs"], -    deps = all_crate_deps() + [":build_script"], -    visibility = ["//visibility:public"], -    base = "//bazel:base", -)
\ No newline at end of file diff --git a/ratelimiter/Cargo.toml b/ratelimiter/Cargo.toml deleted file mode 100644 index 873017c..0000000 --- a/ratelimiter/Cargo.toml +++ /dev/null @@ -1,20 +0,0 @@ -[package]
 -name = "rest-ratelimiter"
 -version = "0.1.0"
 -edition = "2018"
 -
 -[dependencies]
 -tonic = "0.5"
 -prost = "0.8"
 -tokio = { version = "1", features = ["full"] }
 -
 -[[bin]]
 -name = "rest-ratelimiter"
 -path = "src/main.rs"
 -
 -[build-dependencies]
 -tonic-build = { version = "0.5", features = ["transport", "prost"], default-features = false }
 -
 -[dev-dependencies]
 -tonic-build = { version = "0.5", features = ["transport", "prost"], default-features = false }
 -
 diff --git a/ratelimiter/README.md b/ratelimiter/README.md deleted file mode 100644 index a6e400e..0000000 --- a/ratelimiter/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Ratelimiter
 -
 -This is an implementation of the ratelimiting service described in the `proto/nova.ratelimit.v1.proto`.
 -The library is divied in two part, a Rust library, built as a static library, and a rust executable that implements
 -the rate limiting algorithm. A  FFI interface is exposed by the Rust static library for use in the nova-lite component.
\ No newline at end of file diff --git a/ratelimiter/build.rs b/ratelimiter/build.rs deleted file mode 100644 index e0a62ca..0000000 --- a/ratelimiter/build.rs +++ /dev/null @@ -1,4 +0,0 @@ -fn main() -> Result<(), Box<dyn std::error::Error>> {
 -    tonic_build::compile_protos("proto/nova.ratelimit.v1.proto").unwrap();
 -    Ok(())
 -}
\ No newline at end of file diff --git a/ratelimiter/cargo/BUILD.bazel b/ratelimiter/cargo/BUILD.bazel deleted file mode 100644 index ab46977..0000000 --- a/ratelimiter/cargo/BUILD.bazel +++ /dev/null @@ -1,49 +0,0 @@ -""" -@generated -cargo-raze generated Bazel file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -package(default_visibility = ["//visibility:public"]) - -licenses([ -    "notice",  # See individual crates for specific licenses -]) - -# Aliased targets -alias( -    name = "prost", -    actual = "@raze__prost__0_8_0//:prost", -    tags = [ -        "cargo-raze", -        "manual", -    ], -) - -alias( -    name = "tokio", -    actual = "@raze__tokio__1_11_0//:tokio", -    tags = [ -        "cargo-raze", -        "manual", -    ], -) - -alias( -    name = "tonic", -    actual = "@raze__tonic__0_5_2//:tonic", -    tags = [ -        "cargo-raze", -        "manual", -    ], -) - -alias( -    name = "tonic_build", -    actual = "@raze__tonic_build__0_5_2//:tonic_build", -    tags = [ -        "cargo-raze", -        "manual", -    ], -) diff --git a/ratelimiter/proto/BUILD.bazel b/ratelimiter/proto/BUILD.bazel deleted file mode 100644 index 247554e..0000000 --- a/ratelimiter/proto/BUILD.bazel +++ /dev/null @@ -1 +0,0 @@ -exports_files(["nova.ratelimit.v1.proto"]) diff --git a/ratelimiter/proto/nova.ratelimit.v1.proto b/ratelimiter/proto/nova.ratelimit.v1.proto deleted file mode 100644 index b9a0d36..0000000 --- a/ratelimiter/proto/nova.ratelimit.v1.proto +++ /dev/null @@ -1,39 +0,0 @@ -// How does this works ?
 -// Every request, the proxy (envoy) requests the rate-limiting service if
 -// the requested route bucket or global rate-limit is hit.
 -
 -syntax = "proto3";
 -package nova.ratelimit.v1;
 -
 -// The reponse of a RatelimitRequest, it includes the status of the reponse and
 -// the bucket informations.
 -message RatelimitResponse {
 -    enum Status {
 -        OK                  = 0;
 -        RATELIMITED         = 1;
 -        GLOBAL_RATELIMITED  = 2;
 -    }
 -    Status status = 1;
 -    bool   updateAsked = 2;
 -}
 -
 -// Requests the ratelimit status of a route request, it also takes the 
 -// indentifiables of the request in question.
 -message RatelimitRequest {
 -    string          routeName       = 1;
 -    repeated string indentifiables  = 2;
 -}
 -
 -// Used when "updateAsked" is sed to true
 -// this means the bucket is unknown to the ratelimit server.
 -message CreateBucketData {
 -    RatelimitRequest request    = 1;
 -    int32 limit                 = 2;
 -    int32 remaining             = 3;
 -    int32 reset                 = 4;
 -}
 -
 -service RatelimitService {
 -    rpc GetRatelimitStatus (RatelimitRequest)   returns (RatelimitResponse);
 -    rpc CreateBucket       (CreateBucketData)   returns (CreateBucketData);
 -}
\ No newline at end of file diff --git a/ratelimiter/src/main.rs b/ratelimiter/src/main.rs deleted file mode 100644 index 633af68..0000000 --- a/ratelimiter/src/main.rs +++ /dev/null @@ -1,45 +0,0 @@ -// Some implementation of the gRPC service using the shared library.
 -
 -pub mod ratelimit_pb {
 -    tonic::include_proto!("nova.ratelimit.v1");
 -}
 -
 -use ratelimit_pb::ratelimit_service_server::{RatelimitService, RatelimitServiceServer};
 -use ratelimit_pb::{CreateBucketData, RatelimitResponse, RatelimitRequest};
 -use tonic::{Request, Status, Response};
 -use tonic::transport::Server;
 -use std::error::Error;
 -
 -#[derive(Default)]
 -pub struct MyRatelimitService {}
 -
 -#[tonic::async_trait]
 -impl RatelimitService for MyRatelimitService {
 -    async fn get_ratelimit_status(
 -        &self,
 -        _request: Request<RatelimitRequest>
 -    ) -> Result<Response<RatelimitResponse>, Status> {
 -        return Err(Status::not_found("Not implmented"))
 -    }
 -    async fn create_bucket(
 -        &self,
 -        _request: Request<CreateBucketData>
 -    ) ->Result<Response<CreateBucketData>, Status> {
 -        return Err(tonic::Status::not_found("Not implmented"))
 -    }
 -}
 -
 -#[tokio::main]
 -async fn main() -> Result<(), Box<dyn Error>> {
 -    let addr = "[::1]:50051".parse().unwrap();
 -    let service = MyRatelimitService::default();
 -
 -    println!("GreeterServer listening on {}", addr);
 -
 -    Server::builder()
 -        .add_service(RatelimitServiceServer::new(service))
 -        .serve(addr)
 -        .await?;
 -
 -    Ok(())
 -}
\ No newline at end of file diff --git a/rest/BUILD b/rest/BUILD new file mode 100644 index 0000000..2487187 --- /dev/null +++ b/rest/BUILD @@ -0,0 +1,24 @@ +load("@rules_rust//rust:rust.bzl", "rust_binary", "rust_test") +load("//cargo:crates.bzl", "all_crate_deps") +load("@io_bazel_rules_docker//rust:image.bzl", "rust_image") + +test_suite(name = "tests") + +rust_binary( +    name = "rest", +    srcs = glob(["src/**"]), +    visibility = ["//visibility:public"], +    deps = all_crate_deps() + ["//common/rust:common"], +) + +rust_test( +    name = "rest_test", +    crate = ":rest", +) + +rust_image( +    name = "image", +    base = "//bazel:base", +    binary = ":rest", +    visibility = ["//visibility:public"], +) diff --git a/rest/Cargo.toml b/rest/Cargo.toml new file mode 100644 index 0000000..0264852 --- /dev/null +++ b/rest/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "rest" +version = "0.1.0" +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +common = { path = "../common/rust" } +hyper = { version = "0.14", features = ["full"] } +tokio = { version = "1", features = ["full"] } +serde = { version = "1.0.8", features = ["derive"] } +futures-util = "0.3.17" +hyper-tls = "0.5.0" +lazy_static = "1.4.0" +xxhash-rust = { version = "0.8.2", features = ["xxh32"] }
\ No newline at end of file diff --git a/rest/cargo/BUILD.bazel b/rest/cargo/BUILD.bazel new file mode 100644 index 0000000..c56ad3d --- /dev/null +++ b/rest/cargo/BUILD.bazel @@ -0,0 +1,76 @@ +""" +@generated +cargo-raze generated Bazel file. + +DO NOT EDIT! Replaced on runs of cargo-raze +""" + +package(default_visibility = ["//visibility:public"]) + +licenses([ +    "notice",  # See individual crates for specific licenses +]) + +# Aliased targets +alias( +    name = "futures_util", +    actual = "@raze__futures_util__0_3_17//:futures_util", +    tags = [ +        "cargo-raze", +        "manual", +    ], +) + +alias( +    name = "hyper", +    actual = "@raze__hyper__0_14_12//:hyper", +    tags = [ +        "cargo-raze", +        "manual", +    ], +) + +alias( +    name = "hyper_tls", +    actual = "@raze__hyper_tls__0_5_0//:hyper_tls", +    tags = [ +        "cargo-raze", +        "manual", +    ], +) + +alias( +    name = "lazy_static", +    actual = "@raze__lazy_static__1_4_0//:lazy_static", +    tags = [ +        "cargo-raze", +        "manual", +    ], +) + +alias( +    name = "serde", +    actual = "@raze__serde__1_0_130//:serde", +    tags = [ +        "cargo-raze", +        "manual", +    ], +) + +alias( +    name = "tokio", +    actual = "@raze__tokio__1_11_0//:tokio", +    tags = [ +        "cargo-raze", +        "manual", +    ], +) + +alias( +    name = "xxhash_rust", +    actual = "@raze__xxhash_rust__0_8_2//:xxhash_rust", +    tags = [ +        "cargo-raze", +        "manual", +    ], +) diff --git a/rest/src/config.rs b/rest/src/config.rs new file mode 100644 index 0000000..559929f --- /dev/null +++ b/rest/src/config.rs @@ -0,0 +1,18 @@ +use serde::Deserialize; + +#[derive(Debug, Deserialize, Clone, Default)] +pub struct ServerSettings { +    pub port: u16, +    pub address: String, +} + +#[derive(Debug, Deserialize, Clone, Default)] +pub struct Discord { +    pub token: String +} + +#[derive(Debug, Deserialize, Clone, Default)] +pub struct Config { +    pub server: ServerSettings, +    pub discord: Discord, +} diff --git a/rest/src/main.rs b/rest/src/main.rs new file mode 100644 index 0000000..ae993d9 --- /dev/null +++ b/rest/src/main.rs @@ -0,0 +1,46 @@ +use std::{convert::Infallible, sync::Arc}; + +use crate::{config::Config, ratelimit::Ratelimiter}; +use common::{ +    config::Settings, +    log::{error, info}, +    redis_crate::Client, +}; +use hyper::{server::conn::AddrStream, service::make_service_fn, Server}; +use std::net::ToSocketAddrs; +use tokio::sync::Mutex; + +use crate::proxy::ServiceProxy; + +mod config; +mod proxy; +mod ratelimit; + +#[tokio::main] +async fn main() { +    let settings: Settings<Config> = Settings::new("rest").unwrap(); +    let config = Arc::new(settings.config); +    let redis_client: Client = settings.redis.into(); +    let redis = Arc::new(Mutex::new( +        redis_client.get_async_connection().await.unwrap(), +    )); +    let ratelimiter = Arc::new(Ratelimiter::new(redis)); + +    let addr = format!("{}:{}", config.server.address, config.server.port) +        .to_socket_addrs() +        .unwrap() +        .next() +        .unwrap(); + +    let service_fn = make_service_fn(move |_: &AddrStream| { +        let service_proxy = ServiceProxy::new(config.clone(), ratelimiter.clone()); +        async move { Ok::<_, Infallible>(service_proxy) } +    }); + +    let server = Server::bind(&addr).serve(service_fn); + +    info!("starting ratelimit server"); +    if let Err(e) = server.await { +        error!("server error: {}", e); +    } +} diff --git a/rest/src/proxy/mod.rs b/rest/src/proxy/mod.rs new file mode 100644 index 0000000..f07d995 --- /dev/null +++ b/rest/src/proxy/mod.rs @@ -0,0 +1,132 @@ +use crate::{config::Config, ratelimit::Ratelimiter}; +use common::{log::debug, prometheus::{Counter, HistogramVec, labels, opts, register_counter, register_histogram_vec}}; +use hyper::{ +    client::HttpConnector, header::HeaderValue, http::uri::Parts, service::Service, Body, Client, +    HeaderMap, Request, Response, Uri, +}; +use hyper_tls::HttpsConnector; +use tokio::sync::Mutex; +use std::{future::Future, pin::Pin, sync::Arc, task::Poll}; + +lazy_static::lazy_static! { +    static ref HTTP_COUNTER: Counter = register_counter!(opts!( +        "nova_rest_http_requests_total", +        "Number of HTTP requests made.", +        labels! {"handler" => "all",} +    )) +    .unwrap(); + +    static ref HTTP_REQ_HISTOGRAM: HistogramVec = register_histogram_vec!( +        "nova_rest_http_request_duration_seconds", +        "The HTTP request latencies in seconds.", +        &["handler"] +    ) +    .unwrap(); + +    static ref HTTP_COUNTER_STATUS: Counter = register_counter!(opts!( +        "nova_rest_http_requests_status", +        "Number of HTTP requests made by status", +        labels! {"" => ""} +    )) +    .unwrap(); +} + + +#[derive(Clone)] +pub struct ServiceProxy { +    client: Client<HttpsConnector<HttpConnector>>, +    ratelimiter: Arc<Ratelimiter>, +    config: Arc<Config>, +    fail: Arc<Mutex<i32>>, +} + + +impl Service<Request<Body>> for ServiceProxy { +    type Response = Response<Body>; +    type Error = hyper::Error; +    type Future = Pin<Box<dyn Future<Output = Result<Self::Response, Self::Error>> + Send>>; + +    fn poll_ready( +        &mut self, +        cx: &mut std::task::Context<'_>, +    ) -> std::task::Poll<Result<(), Self::Error>> { +        match self.client.poll_ready(cx) { +            Poll::Ready(Ok(())) => Poll::Ready(Ok(())), +            Poll::Ready(Err(e)) => Poll::Ready(Err(e)), +            Poll::Pending => Poll::Pending, +        } +    } + +    fn call(&mut self, mut req: Request<hyper::Body>) -> Self::Future { +        HTTP_COUNTER.inc(); + +        let timer = HTTP_REQ_HISTOGRAM.with_label_values(&["all"]).start_timer(); +        let host = "discord.com"; +        let mut new_parts = Parts::default(); + +        let path = req.uri().path().to_string(); + +        new_parts.scheme = Some("https".parse().unwrap()); +        new_parts.authority = Some(host.parse().unwrap()); +        new_parts.path_and_query = Some(path.parse().unwrap()); + +        *req.uri_mut() = Uri::from_parts(new_parts).unwrap(); + +        let mut headers = HeaderMap::default(); + +        headers.insert("Host", HeaderValue::from_str("discord.com").unwrap()); +        headers.insert( +            "Authorization", +            HeaderValue::from_str(&format!("Bot {}", self.config.discord.token)).unwrap(), +        ); + +        *req.headers_mut() = headers; +        let client = self.client.clone(); +        let ratelimiter = self.ratelimiter.clone(); +        let fail = self.fail.clone(); + +        return Box::pin(async move { +            let resp = match ratelimiter.before_request(&req).await { +                Ok(allowed) => match allowed { +                    crate::ratelimit::RatelimiterResponse::Ratelimited => { +                        debug!("ratelimited"); +                        Ok(Response::builder().body("ratelimited".into()).unwrap()) +                    } +                    _ => { +                        debug!("forwarding request"); +                        match client.request(req).await { +                            Ok(mut response) => { +                                ratelimiter.after_request(&path, &response).await; +                                if response.status() != 200 { +                                    *fail.lock().await += 1 +                                } +                                response.headers_mut().insert("x-fails", HeaderValue::from_str(&format!("{}", fail.lock().await)).unwrap()); +                                Ok(response) +                            } +                            Err(e) => Err(e), +                        } +                    } +                }, +                Err(e) => Ok(Response::builder() +                    .body(format!("server error: {}", e).into()) +                    .unwrap()), +            }; +            timer.observe_duration(); +            resp +        }); +    } +} + +impl ServiceProxy { +    pub fn new(config: Arc<Config>, ratelimiter: Arc<Ratelimiter>) -> Self { +        let https = HttpsConnector::new(); +        let client = Client::builder().build::<_, hyper::Body>(https); +        let fail = Arc::new(Mutex::new(0)); +        ServiceProxy { +            client, +            config, +            ratelimiter, +            fail +        } +    } +} diff --git a/rest/src/ratelimit/mod.rs b/rest/src/ratelimit/mod.rs new file mode 100644 index 0000000..86fc7af --- /dev/null +++ b/rest/src/ratelimit/mod.rs @@ -0,0 +1,156 @@ +use common::{ +    error::NovaError, +    log::debug, +    redis_crate::{aio::Connection, AsyncCommands}, +}; +use hyper::{Body, Request, Response}; +use std::{ +    convert::TryInto, +    sync::Arc, +    time::{SystemTime, UNIX_EPOCH}, +}; +use tokio::sync::Mutex; +use xxhash_rust::xxh32::xxh32; + +pub enum RatelimiterResponse { +    NoSuchUrl, +    Ratelimited, +    Pass, +} + +pub struct Ratelimiter { +    redis: Arc<Mutex<Connection>>, +} + +impl Ratelimiter { +    pub fn new(redis: Arc<Mutex<Connection>>) -> Ratelimiter { +        return Ratelimiter { redis }; +    } + +    pub async fn before_request( +        &self, +        request: &Request<Body>, +    ) -> Result<RatelimiterResponse, NovaError> { +        // we lookup if the route hash is stored in the redis table +        let path = request.uri().path(); +        let hash = xxh32(path.as_bytes(), 32); +        let mut redis = self.redis.lock().await; + +        let start = SystemTime::now(); +        let since_the_epoch = start +            .duration_since(UNIX_EPOCH) +            .expect("Time went backwards"); + +        // global rate litmit +        match redis +            .get::<String, Option<i32>>(format!( +                "nova:rest:ratelimit:global:{}", +                since_the_epoch.as_secs() +            )) +            .await +        { +            Ok(value) => { +                match value { +                    Some(value) => { +                        debug!("incr: {}", value); +                        if value >= 49 { +                            return Ok(RatelimiterResponse::Ratelimited); +                        } +                    } +                    None => { +                        let key = +                            format!("nova:rest:ratelimit:global:{}", since_the_epoch.as_secs()); +                        // init global ratelimit +                        redis.set_ex::<String, i32, ()>(key, 0, 2).await.unwrap(); +                    } +                } +            } +            Err(_) => { +                return Err(NovaError::from("internal error")); +            } +        }; + +        // we lookup the corresponding bucket for this url +        match redis +            .get::<String, Option<String>>(format!("nova:rest:ratelimit:url_bucket:{}", hash)) +            .await +        { +            Ok(bucket) => match bucket { +                Some(bucket) => { +                    match redis +                        .exists::<String, bool>(format!("nova:rest:ratelimit:lock:{}", bucket)) +                        .await +                    { +                        Ok(exists) => { +                            if exists { +                                Ok(RatelimiterResponse::Ratelimited) +                            } else { +                                Ok(RatelimiterResponse::Pass) +                            } +                        } +                        Err(_) => Err(NovaError::from("unable to reach the server")), +                    } +                } +                None => Ok(RatelimiterResponse::NoSuchUrl), +            }, +            Err(_) => Err(NovaError::from("internal error")), +        } +    } + +    fn parse_headers(&self, response: &Response<Body>) -> Option<(String, i32, i32)> { +        if let Some(bucket) = response.headers().get("X-RateLimit-Bucket") { +            let bucket = bucket.to_str().unwrap().to_string(); + +            let remaining = response.headers().get("X-RateLimit-Remaining").unwrap(); +            let reset = response.headers().get("X-RateLimit-Reset-After").unwrap(); + +            let remaining_i32 = remaining.to_str().unwrap().parse::<i32>().unwrap(); +            let reset_ms_i32 = reset.to_str().unwrap().parse::<f32>().unwrap().ceil() as i32; +            return Some((bucket, remaining_i32, reset_ms_i32)); +        } else { +            None +        } +    } + +    pub async fn after_request(&self, path: &str, response: &Response<Body>) { +        let hash = xxh32(path.as_bytes(), 32); +        // verified earlier + +        let mut redis = self.redis.lock().await; + +        let start = SystemTime::now(); +        let since_the_epoch = start +            .duration_since(UNIX_EPOCH) +            .expect("Time went backwards"); + +        redis +            .incr::<String, i32, ()>( +                format!("nova:rest:ratelimit:global:{}", since_the_epoch.as_secs()), +                1, +            ) +            .await +            .unwrap(); +        if let Some((bucket, remaining, reset)) = self.parse_headers(response) { +            if remaining <= 1 { +                // we set a lock for the bucket until the timeout passes +                redis +                    .set_ex::<String, bool, ()>( +                        format!("nova:rest:ratelimit:lock:{}", bucket), +                        true, +                        reset.try_into().unwrap(), +                    ) +                    .await +                    .unwrap(); +            } + +            redis +                .set_ex::<String, String, ()>( +                    format!("nova:rest:ratelimit:url_bucket:{}", hash), +                    bucket, +                    reset.try_into().unwrap(), +                ) +                .await +                .unwrap(); +        } +    } +} diff --git a/webhook/BUILD b/webhook/BUILD index f29da5f..4340909 100644 --- a/webhook/BUILD +++ b/webhook/BUILD @@ -7,18 +7,18 @@ test_suite(name = "tests")  rust_binary(      name = "webhook",      srcs = glob(["src/**"]), -    deps = all_crate_deps() + ["//common/rust:common"],      visibility = ["//visibility:public"], +    deps = all_crate_deps() + ["//common/rust:common"],  )  rust_test(      name = "webhook_test", -    crate = ":webhook" +    crate = ":webhook",  )  rust_image(      name = "image", +    base = "//bazel:base",      binary = ":webhook",      visibility = ["//visibility:public"], -    base = "//bazel:base",  ) diff --git a/webhook/Cargo.toml b/webhook/Cargo.toml index 045c710..7e73c43 100644 --- a/webhook/Cargo.toml +++ b/webhook/Cargo.toml @@ -6,14 +6,13 @@ edition = "2018"  [dependencies]  hyper = { version = "0.14", features = ["full"] }  tokio = { version = "1", features = ["full"] } -log = { version = "0.4", features = ["std"] } -config = "0.11" +common = { path = "../common/rust" }  serde = { version = "1.0.8", features = ["derive"] }  libsodium-sys = "0.2.7"  hex = "0.4.3"  serde_json = { version = "1.0" } -common = { path = "../common/rust" } -nats = "0.15.2" +libc = "0.2.101" +lazy_static = "1.4.0"  [[bin]]  name = "webhook" diff --git a/webhook/README.md b/webhook/README.md deleted file mode 100644 index e69de29..0000000 --- a/webhook/README.md +++ /dev/null diff --git a/webhook/cargo/BUILD.bazel b/webhook/cargo/BUILD.bazel index e035ab6..4569cc1 100644 --- a/webhook/cargo/BUILD.bazel +++ b/webhook/cargo/BUILD.bazel @@ -13,15 +13,6 @@ licenses([  # Aliased targets  alias( -    name = "config", -    actual = "@raze__config__0_11_0//:config", -    tags = [ -        "cargo-raze", -        "manual", -    ], -) - -alias(      name = "hex",      actual = "@raze__hex__0_4_3//:hex",      tags = [ @@ -40,8 +31,8 @@ alias(  )  alias( -    name = "libsodium_sys", -    actual = "@raze__libsodium_sys__0_2_7//:libsodium_sys", +    name = "lazy_static", +    actual = "@raze__lazy_static__1_4_0//:lazy_static",      tags = [          "cargo-raze",          "manual", @@ -49,8 +40,8 @@ alias(  )  alias( -    name = "log", -    actual = "@raze__log__0_4_14//:log", +    name = "libc", +    actual = "@raze__libc__0_2_101//:libc",      tags = [          "cargo-raze",          "manual", @@ -58,8 +49,8 @@ alias(  )  alias( -    name = "nats", -    actual = "@raze__nats__0_15_2//:nats", +    name = "libsodium_sys", +    actual = "@raze__libsodium_sys__0_2_7//:libsodium_sys",      tags = [          "cargo-raze",          "manual", diff --git a/webhook/src/config.rs b/webhook/src/config.rs index eead97b..a054d33 100644 --- a/webhook/src/config.rs +++ b/webhook/src/config.rs @@ -16,4 +16,4 @@ pub struct Discord {  pub struct Config {      pub server: ServerSettings,      pub discord: Discord, -}
\ No newline at end of file +} diff --git a/webhook/src/handler/error.rs b/webhook/src/handler/error.rs new file mode 100644 index 0000000..ccec59f --- /dev/null +++ b/webhook/src/handler/error.rs @@ -0,0 +1,24 @@ +use hyper::{Body, Error, Response, StatusCode}; + +pub struct WebhookError { +    pub code: StatusCode, +    pub message: String, +} + +impl WebhookError { +    pub fn new(code: StatusCode, message: &str) -> WebhookError { +        WebhookError { +            code, +            message: message.to_string(), +        } +    } +} + +impl Into<Response<Body>> for WebhookError { +    fn into(self) -> Response<Body> { +        Response::builder() +            .status(self.code) +            .body(self.message.into()) +            .unwrap() +    } +} diff --git a/webhook/src/handler/handler.rs b/webhook/src/handler/handler.rs index b993aaa..4af2ba6 100644 --- a/webhook/src/handler/handler.rs +++ b/webhook/src/handler/handler.rs @@ -1,20 +1,32 @@ +use super::error::WebhookError;  use super::{signature::validate_signature, types::Interaction};  use crate::config::Config; -use hyper::{Body, Method, Request, Response, StatusCode, body::{to_bytes, Bytes}, service::Service}; -use log::{error, info, trace}; -use nats::Connection; +use common::log::{debug, error, info}; +use common::nats_crate::Connection; +use hyper::{ +    body::{to_bytes, Bytes}, +    service::Service, +    Body, Method, Request, Response, StatusCode, +};  use serde::{Deserialize, Serialize}; -use std::{future::Future, io::{Error, ErrorKind}, pin::Pin, str::from_utf8, sync::Arc, task::{Context, Poll}}; +use std::{ +    future::Future, +    pin::Pin, +    str::from_utf8, +    sync::Arc, +    task::{Context, Poll}, +    time::Duration, +};  /// Hyper service used to handle the discord webhooks  #[derive(Clone)]  pub struct HandlerService { -    pub config: Config, +    pub config: Arc<Config>,      pub nats: Arc<Connection>,  }  impl HandlerService { -    async fn check_request(&self, req: Request<Body>) -> Result<Bytes, Error> { +    async fn check_request(&self, req: Request<Body>) -> Result<Bytes, WebhookError> {          if req.method() == Method::POST {              let headers = req.headers().clone();              let signature = headers.get("X-Signature-Ed25519"); @@ -30,25 +42,96 @@ impl HandlerService {                          ) {                              Ok(data)                          } else { -                            Err(Error::new( -                                ErrorKind::InvalidData, -                                "invalid signature specified", +                            Err(WebhookError::new( +                                StatusCode::UNAUTHORIZED, +                                "invalid signature",                              ))                          }                      } else { -                        Err(Error::new( -                            ErrorKind::BrokenPipe, +                        Err(WebhookError::new( +                            StatusCode::BAD_REQUEST,                              "failed to read signature",                          ))                      }                  } else { -                    Err(Error::new(ErrorKind::BrokenPipe, "unable to read body")) +                    Err(WebhookError::new( +                        StatusCode::BAD_REQUEST, +                        "unable to read body", +                    ))                  }              } else { -                Err(Error::new(ErrorKind::InvalidData, "missing headers")) +                Err(WebhookError::new( +                    StatusCode::UNAUTHORIZED, +                    "missing signature headers", +                ))              }          } else { -            Err(Error::new(ErrorKind::InvalidData, "invalid method")) +            Err(WebhookError::new(StatusCode::NOT_FOUND, "not found")) +        } +    } + +    async fn process_request( +        &mut self, +        req: Request<Body>, +    ) -> Result<Response<Body>, WebhookError> { +        match self.check_request(req).await { +            Ok(data) => { +                let utf8 = from_utf8(&data); +                match utf8 { +                    Ok(data) => match serde_json::from_str::<Interaction>(data) { +                        Ok(value) => { +                            if value.t == 1 { +                                info!("sending pong"); +                                // a ping must be responded with another ping +                                return Ok(Response::builder() +                                    .header("Content-Type", "application/json") +                                    .body(serde_json::to_string(&Ping { t: 1 }).unwrap().into()) +                                    .unwrap()); +                            } else { +                                debug!("calling nats"); +                                // this should hopefully not fail ? +                                let payload = +                                    serde_json::to_string(&common::payloads::CachePayload { +                                        tracing: common::payloads::Tracing { +                                            node_id: "".to_string(), +                                            span: None, +                                        }, +                                        operation: "".to_string(), +                                        data: value, +                                    }) +                                    .unwrap(); + +                                match self.nats.request_timeout( +                                    "nova.cache.dispatch.interaction", +                                    payload, +                                    Duration::from_secs(2), +                                ) { +                                    Ok(response) => Ok(Response::builder() +                                        .header("Content-Type", "application/json") +                                        .body(Body::from(response.data)) +                                        .unwrap()), + +                                    Err(error) => { +                                        error!("failed to request nats: {}", error); +                                        Err(WebhookError::new( +                                            StatusCode::INTERNAL_SERVER_ERROR, +                                            "failed to request nats", +                                        )) +                                    } +                                } +                            } +                        } + +                        Err(_) => Err(WebhookError::new( +                            StatusCode::BAD_REQUEST, +                            "invalid json body", +                        )), +                    }, + +                    Err(_) => Err(WebhookError::new(StatusCode::BAD_REQUEST, "not utf-8 body")), +                } +            } +            Err(error) => Err(error),          }      }  } @@ -56,7 +139,7 @@ impl HandlerService {  #[derive(Debug, Serialize, Deserialize)]  pub struct Ping {      #[serde(rename = "type")] -    t: i32 +    t: i32,  }  /// Implementation of the service @@ -70,56 +153,13 @@ impl Service<Request<Body>> for HandlerService {      }      fn call(&mut self, req: Request<Body>) -> Self::Future { -        let self_clone = self.clone(); - +        let mut clone = self.clone();          Box::pin(async move { -            match self_clone.check_request(req).await { -                Ok(data) => { -                    let value: Interaction = serde_json::from_str(from_utf8(&data).unwrap()).unwrap(); -                    trace!("received value: {:?}", value); - -                    match value.t { -                        1 => { -                            info!("sending pong"); -                            // a ping must be responded with another ping -                            return Ok(Response::builder().header("Content-Type", "application/json").body(serde_json::to_string(&Ping { -                                t: 1 -                            }).unwrap().into()).unwrap()); -                        }, -                        _ => { -                            let payload = serde_json::to_string(&common::payloads::CachePayload { -                                tracing: common::payloads::Tracing { -                                    node_id: "".to_string(), -                                    span: None, -                                }, -                                data: value, -                            }).unwrap(); +            let response = clone.process_request(req).await; -                            match self_clone.nats.request("nova.cache.dispatch.interaction", payload) { -                                Ok(response) =>  { -                                    Ok( -                                        Response::builder() -                                            .header("Content-Type", "application/json") -                                            .body(from_utf8(&response.data).unwrap().to_string().into()) -                                            .unwrap() -                                    ) -                                }, -                                Err(error) => { -                                    error!("failed to request nats: {}", error); -                                    Ok( -                                        Response::builder() -                                            .status(500) -                                            .body("an internal server error occured".to_string().into()) -                                            .unwrap() -                                    ) -                                } -                            } -                        }, -                    } -                }, -                Err(error) => { -                    Ok(Response::builder().status(StatusCode::UNAUTHORIZED).body(error.to_string().into()).unwrap()) -                } +            match response { +                Ok(r) => Ok(r), +                Err(e) => Ok(e.into()),              }          })      } diff --git a/webhook/src/handler/make_service.rs b/webhook/src/handler/make_service.rs index 96b203d..deeb2fe 100644 --- a/webhook/src/handler/make_service.rs +++ b/webhook/src/handler/make_service.rs @@ -1,12 +1,15 @@ -use std::{future::{Ready, ready}, sync::Arc, task::{Context, Poll}}; -use hyper::service::Service; -use nats::Connection; -use crate::config::Config;  use super::handler::HandlerService; - +use crate::config::Config; +use hyper::service::Service; +use common::nats_crate::Connection; +use std::{ +    future::{ready, Ready}, +    sync::Arc, +    task::{Context, Poll}, +};  pub struct MakeSvc { -    pub settings: Config, +    pub settings: Arc<Config>,      pub nats: Arc<Connection>,  } diff --git a/webhook/src/handler/mod.rs b/webhook/src/handler/mod.rs index 490c580..a437dd5 100644 --- a/webhook/src/handler/mod.rs +++ b/webhook/src/handler/mod.rs @@ -1,4 +1,8 @@  pub mod make_service;  mod signature;  mod handler; -mod types;
\ No newline at end of file +mod types; +mod error; + +#[cfg(test)] +pub mod tests;
\ No newline at end of file diff --git a/webhook/src/handler/signature.rs b/webhook/src/handler/signature.rs index 5af6b63..c12f9e8 100644 --- a/webhook/src/handler/signature.rs +++ b/webhook/src/handler/signature.rs @@ -1,11 +1,30 @@ +use common::prometheus::{Counter, HistogramVec, labels, opts, register_counter, register_histogram_vec};  use libsodium_sys::crypto_sign_ed25519_verify_detached; +lazy_static::lazy_static! { +    static ref SIGNATURE_TIME_HISTOGRAM: HistogramVec = register_histogram_vec!( +        "nova_webhook_signature_time", +        "The time taken by the signature verification", +        &["signature"] +    ).unwrap(); + +    static ref SIGNATURE_BODY_COUNTER: Counter = register_counter!(opts!( +        "nova_webhook_", +        "", +        labels! {"handler" => "webhook_main"} +    )).unwrap(); +} +  /// Checks the signature of a given data using the hex signature and the public key.  pub fn validate_signature(hex_public_key: &str, data: &Vec<u8>, hex_signature: &str) -> bool { +    SIGNATURE_BODY_COUNTER.inc(); +    let timer = SIGNATURE_TIME_HISTOGRAM.with_label_values(&["webhook_main"]).start_timer(); +      // First, we need to check if the signature & private key is valid base64.      let signature_result = hex::decode(hex_signature);      let public_key_result = hex::decode(hex_public_key); +    let mut result = false;      if signature_result.is_ok() && public_key_result.is_ok() {          // Since we now have the signatures in u8 vectors. We will initialize all the          // parameters for the ffi call to sodium. @@ -19,7 +38,7 @@ pub fn validate_signature(hex_public_key: &str, data: &Vec<u8>, hex_signature: &          // we assume all the parameters are correct for the call          unsafe {              // If the signature is valid, sodium will return 0 -            return crypto_sign_ed25519_verify_detached( +            result = crypto_sign_ed25519_verify_detached(                  signature_pointer.as_ptr(),                  data_pointer,                  data_len, @@ -27,39 +46,7 @@ pub fn validate_signature(hex_public_key: &str, data: &Vec<u8>, hex_signature: &              ) == 0;          }      } -    false -} - -#[cfg(test)] -mod test { -    use crate::handler::signature::validate_signature; - -    #[test] -    fn validate_signature_test() { -        let signature = "543ec3547d57f9ddb1ec4c5c36503ebf288ffda3da3d510764c9a49c2abb57690ef974c63d174771bdd2481de1066966f57abbec12a3ec171b9f6e2373837002"; -        let public_key = "eefe0c24473737cb2035232e3b4eb91c206f0a14684168f3503f7d8316058d6f"; -        let content = "message de test incroyable".as_bytes().to_vec(); -        assert!(validate_signature(public_key, &content, signature)) -    } - -    #[test] -    fn validate_signature_reverse_test() { -        let signature = "543ec3547d57f9ddb1ec4c5c36503ebf288ffda3da3d510764c9a49c2abb57690ef974c63d174771bdd2481de1066966f57abbec12a3ec171b9f6e2373837002"; -        let public_key = "c029eea18437292c87c62aec34e7d1bd4e38fe6126f3f7c446de6375dc666044"; -        let content = "ceci est un test qui ne fonctionnera pas!" -            .as_bytes() -            .to_vec(); -        assert!(!validate_signature(public_key, &content, signature)) -    } - -    #[test] -    fn invalid_hex() { -        let signature = "zzz"; -        let public_key = "zzz"; -        let content = "ceci est un test qui ne fonctionnera pas!" -            .as_bytes() -            .to_vec(); -        assert!(!validate_signature(public_key, &content, signature)) -    } +    timer.observe_duration(); +    result  } diff --git a/docs/components/gateway.md b/webhook/src/handler/tests/handler.rs index e69de29..e69de29 100644 --- a/docs/components/gateway.md +++ b/webhook/src/handler/tests/handler.rs diff --git a/webhook/src/handler/tests/handler_integration.rs b/webhook/src/handler/tests/handler_integration.rs new file mode 100644 index 0000000..fd0d67f --- /dev/null +++ b/webhook/src/handler/tests/handler_integration.rs @@ -0,0 +1,234 @@ +use std::time::Duration; + +use crate::{ +    config::Config, +    handler::tests::utils::{generate_keypair, sign_message}, +    start, +}; +use common::{config::test_init, nats_crate::Connection, testcontainers::{Image, images::generic::WaitFor}}; +use common::{ +    config::Settings, +    log::info, +    testcontainers::{clients::Cli, images::generic::GenericImage, Container, Docker}, +}; +use hyper::{Body, Method, Request}; +use lazy_static::{__Deref, lazy_static}; +use serde_json::json; + +#[cfg(all(unix, target_arch = "x86_64"))] +const fn nats_image<'a>() -> &'a str { +    return "amd64/nats"; +} + +#[cfg(all(unix, target_arch = "aarch64"))] +const fn nats_image<'a>() -> &'a str { +    return "arm64v8/nats"; +} + +#[cfg(all(target_arch = "x86_64", target_os = "windows"))] +const fn nats_image<'a>() -> &'a str { +    return "winamd64/nats"; +} + +lazy_static! { +    static ref DOCKER: Cli = Cli::default(); + +    static ref NATS_CONTAINER: Container<'static, Cli, GenericImage> = { +        test_init(); + +        let image: GenericImage = GenericImage::new(nats_image()) +            .with_wait_for(WaitFor::message_on_stderr("Server is ready")); +         +        let container = DOCKER.run(image); +        container.start(); +        container.image().wait_until_ready(&container); +        container.get_host_port(4222).unwrap(); +        container +    }; + +     +    static ref KEYPAIR: (String, [u8; 64]) = { +        generate_keypair() +    }; + +    static ref SETTINGS: Settings<Config> = { +        let port = NATS_CONTAINER.get_host_port(4222).unwrap(); +        common::config::Settings { +            config: crate::config::Config { +                server: crate::config::ServerSettings { +                    port: 5003, +                    address: "0.0.0.0".to_string(), +                }, +                discord: crate::config::Discord { +                    public_key: KEYPAIR.0.clone(), +                    client_id: 0, +                }, +            }, +            redis: common::redis::RedisConfiguration { +                url: "".to_string(), +            }, +            monitoring: common::monitoring::MonitoringConfiguration { +                enabled: false, +                address: None, +                port: None, +            }, +            nats: common::nats::NatsConfiguration { +                client_cert: None, +                root_cert: None, +                jetstream_api_prefix: None, +                max_reconnects: None, +                reconnect_buffer_size: None, +                tls: None, +                client_name: None, +                tls_required: None, +                host: format!("localhost:{}", port), +            }, +        } +    }; + +    static ref TASK: () = { +        std::thread::spawn(|| { +            let r = tokio::runtime::Runtime::new().unwrap(); +            r.spawn(async { start(SETTINGS.clone()).await }); +            loop {} +        }); +        std::thread::sleep(Duration::from_secs(1)); +    }; +} + +#[tokio::test] +async fn respond_to_pings() { +    let _ = NATS_CONTAINER.deref(); +    let _ = TASK.deref(); +    let ping = json!({ "type": 1 }).to_string(); +    let timestamp = "my datetime :)"; +    let signature_data = [timestamp.as_bytes().to_vec(), ping.as_bytes().to_vec()].concat(); +    let signature = sign_message(signature_data, KEYPAIR.1); + +    let req = Request::builder() +        .method(Method::POST) +        .uri("http://localhost:5003/") +        .header("X-Signature-Ed25519", signature) +        .header("X-Signature-Timestamp", timestamp) +        .body(Body::from(ping.clone())) +        .expect("request builder"); +    let client = hyper::client::Client::new(); +    let result = client.request(req).await.unwrap(); + +    assert!(result.status() == 200); +} + +#[tokio::test] +async fn deny_invalid_signatures() { +    let _ = NATS_CONTAINER.deref(); +    let _ = TASK.deref(); +    let ping = json!({ "type": 1 }).to_string(); +    let timestamp = "my datetime :)"; + +    let req = Request::builder() +        .method(Method::POST) +        .uri("http://localhost:5003/") +        .header("X-Signature-Ed25519", "inva&lid signature :)") +        .header("X-Signature-Timestamp", timestamp) +        .body(Body::from(ping.clone())) +        .expect("request builder"); +    let client = hyper::client::Client::new(); +    let result = client.request(req).await.unwrap(); +    assert!(result.status() == 401); +} + +#[tokio::test] +async fn response_500_when_no_nats_response() { +    let _ = NATS_CONTAINER.deref(); +    let _ = TASK.deref(); +    let ping = json!({ "type": 0 }).to_string(); +    let timestamp = "my datetime :)"; +    let signature_data = [timestamp.as_bytes().to_vec(), ping.as_bytes().to_vec()].concat(); +    let signature = sign_message(signature_data, KEYPAIR.1); + +    // we must timeout +    let req = Request::builder() +        .method(Method::POST) +        .uri("http://localhost:5003/") +        .header("X-Signature-Ed25519", signature) +        .header("X-Signature-Timestamp", timestamp) +        .body(Body::from(ping.clone())) +        .expect("request builder"); + +    let client = hyper::client::Client::new(); +    let result = client.request(req).await.unwrap(); +    assert!(result.status() == 500); +} + +#[tokio::test] +async fn respond_from_nats_response() { +    let _ = NATS_CONTAINER.deref(); +    let _ = TASK.deref(); +    let nats: Connection = SETTINGS.clone().nats.into(); +    let sub = nats.subscribe("nova.cache.dispatch.interaction").unwrap(); +    let ping = json!({ "type": 0 }).to_string(); +    let timestamp = "my datetime :)"; +    let signature_data = [timestamp.as_bytes().to_vec(), ping.as_bytes().to_vec()].concat(); +    let signature = sign_message(signature_data, KEYPAIR.1); + +    sub.with_handler(move |msg| { +        info!("Received {}", &msg); +        msg.respond("ok :)").unwrap(); +        Ok(()) +    }); + +    let req = Request::builder() +        .method(Method::POST) +        .uri("http://localhost:5003/") +        .header("X-Signature-Ed25519", signature) +        .header("X-Signature-Timestamp", timestamp) +        .body(Body::from(ping.clone())) +        .expect("request builder"); +    let client = hyper::client::Client::new(); +    let result = client.request(req).await.unwrap(); +    assert!(result.status() == 200); +} + +#[tokio::test] +async fn response_400_when_invalid_json_body() { +    let _ = NATS_CONTAINER.deref(); +    let _ = TASK.deref(); +    let ping = "{".to_string(); +    let timestamp = "my datetime :)"; +    let signature_data = [timestamp.as_bytes().to_vec(), ping.as_bytes().to_vec()].concat(); +    let signature = sign_message(signature_data, KEYPAIR.1); + +    let req = Request::builder() +        .method(Method::POST) +        .uri("http://localhost:5003/") +        .header("X-Signature-Ed25519", signature) +        .header("X-Signature-Timestamp", timestamp) +        .body(Body::from(ping.clone())) +        .expect("request builder"); +    let client = hyper::client::Client::new(); +    let result = client.request(req).await.unwrap(); +    assert!(result.status() == 400); +} + +#[tokio::test] +async fn response_400_when_invalid_utf8_body() { +    let _ = NATS_CONTAINER.deref(); +    let _ = TASK.deref(); +    // invalid 2 octet sequence +    let ping = vec![0xc3, 0x28]; + +    let timestamp = "my datetime :)"; +    let signature_data = [timestamp.as_bytes().to_vec(), ping.to_vec()].concat(); +    let signature = sign_message(signature_data, KEYPAIR.1); + +    let req = Request::builder() +        .method(Method::POST) +        .uri("http://localhost:5003/") +        .header("X-Signature-Ed25519", signature) +        .header("X-Signature-Timestamp", timestamp) +        .body(Body::from(ping.clone())) +        .expect("request builder"); +    let client = hyper::client::Client::new(); +    let result = client.request(req).await.unwrap(); +    assert!(result.status() == 400); +} diff --git a/webhook/src/handler/tests/mod.rs b/webhook/src/handler/tests/mod.rs new file mode 100644 index 0000000..589ad52 --- /dev/null +++ b/webhook/src/handler/tests/mod.rs @@ -0,0 +1,4 @@ +pub mod handler_integration; +pub mod signature; +pub mod utils; +pub mod handler; diff --git a/webhook/src/handler/tests/signature.rs b/webhook/src/handler/tests/signature.rs new file mode 100644 index 0000000..475e446 --- /dev/null +++ b/webhook/src/handler/tests/signature.rs @@ -0,0 +1,30 @@ +use crate::handler::signature::validate_signature; + + +#[test] +fn validate_signature_test() { +    let signature = "543ec3547d57f9ddb1ec4c5c36503ebf288ffda3da3d510764c9a49c2abb57690ef974c63d174771bdd2481de1066966f57abbec12a3ec171b9f6e2373837002"; +    let public_key = "eefe0c24473737cb2035232e3b4eb91c206f0a14684168f3503f7d8316058d6f"; +    let content = "message de test incroyable".as_bytes().to_vec(); +    assert!(validate_signature(public_key, &content, signature)) +} + +#[test] +fn validate_signature_reverse_test() { +    let signature = "543ec3547d57f9ddb1ec4c5c36503ebf288ffda3da3d510764c9a49c2abb57690ef974c63d174771bdd2481de1066966f57abbec12a3ec171b9f6e2373837002"; +    let public_key = "c029eea18437292c87c62aec34e7d1bd4e38fe6126f3f7c446de6375dc666044"; +    let content = "ceci est un test qui ne fonctionnera pas!" +        .as_bytes() +        .to_vec(); +    assert!(!validate_signature(public_key, &content, signature)) +} + +#[test] +fn invalid_hex() { +    let signature = "zzz"; +    let public_key = "zzz"; +    let content = "ceci est un test qui ne fonctionnera pas!" +        .as_bytes() +        .to_vec(); +    assert!(!validate_signature(public_key, &content, signature)) +}
\ No newline at end of file diff --git a/webhook/src/handler/tests/utils.rs b/webhook/src/handler/tests/utils.rs new file mode 100644 index 0000000..f8cdac2 --- /dev/null +++ b/webhook/src/handler/tests/utils.rs @@ -0,0 +1,46 @@ +pub fn generate_keypair() -> ( +    String, +    [u8; libsodium_sys::crypto_sign_ed25519_SECRETKEYBYTES as usize], +) { +    use libsodium_sys::crypto_sign_ed25519_keypair; +    let pk_s: String; + +    let mut pk = [0; libsodium_sys::crypto_sign_ed25519_PUBLICKEYBYTES as usize]; +    let mut sk = [0; libsodium_sys::crypto_sign_ed25519_SECRETKEYBYTES as usize]; + +    let pk_p = pk.as_mut_ptr(); +    let sk_p = sk.as_mut_ptr(); + +    // generate keypair +    unsafe { +        if crypto_sign_ed25519_keypair(pk_p, sk_p) < 0 { +            panic!("keypair generation failed!"); +        } +    }; + +    pk_s = hex::encode(pk); +    return (pk_s, sk); +} + +pub fn sign_message( +    msg: Vec<u8>, +    sk: [u8; libsodium_sys::crypto_sign_ed25519_SECRETKEYBYTES as usize], +) -> String { +    use libc::c_ulonglong; +    use libsodium_sys::crypto_sign_ed25519_detached; + +    let len = msg.len(); +    let mut signature_len: c_ulonglong = 0; +    let mut str = [0; 64]; +    unsafe { +        crypto_sign_ed25519_detached( +            str.as_mut_ptr(), +            &mut signature_len, +            msg.as_ptr(), +            len as u64, +            sk.as_ptr(), +        ); +    }; + +    return hex::encode(str); +}
\ No newline at end of file diff --git a/webhook/src/handler/types.rs b/webhook/src/handler/types.rs index 4cba12a..4fc5b68 100644 --- a/webhook/src/handler/types.rs +++ b/webhook/src/handler/types.rs @@ -7,4 +7,3 @@ pub struct Interaction {      pub t: i16,      pub data: Option<Value>,  } - diff --git a/webhook/src/main.rs b/webhook/src/main.rs index c127c2c..98e5f13 100644 --- a/webhook/src/main.rs +++ b/webhook/src/main.rs @@ -1,30 +1,37 @@  use std::{net::ToSocketAddrs, sync::Arc};
 -mod handler;
  mod config;
 +mod handler;
  use crate::handler::make_service::MakeSvc;
 -use hyper::Server;
 -use log::{info, error};
 -use common::config::Settings;
  use crate::config::Config;
 +use common::config::Settings;
 +use common::log::{error, info};
 +use hyper::Server;
  #[tokio::main]
  async fn main() {
      let settings: Settings<Config> = Settings::new("webhook").unwrap();
 +    start(settings).await;
 +}
 -    let addr = format!("{}:{}", settings.config.server.address, settings.config.server.port)
 -        .to_socket_addrs()
 -        .unwrap()
 -        .next()
 -        .unwrap();
 +async fn start(settings: Settings<Config>) {
 +    let addr = format!(
 +        "{}:{}",
 +        settings.config.server.address, settings.config.server.port
 +    )
 +    .to_socket_addrs()
 +    .unwrap()
 +    .next()
 +    .unwrap();
      info!(
          "Starting server on {}:{}",
          settings.config.server.address, settings.config.server.port
      );
 +    let config = Arc::new(settings.config);
      let server = Server::bind(&addr).serve(MakeSvc {
 -        settings: settings.config.clone(),
 +        settings: config,
          nats: Arc::new(settings.nats.into()),
      });
  | 
