
# This file was @generated by crate2nix 0.10.0 with the command:
#   "generate"
# See https://github.com/kolloch/crate2nix for more info.

{ nixpkgs ? <nixpkgs>
, pkgs ? import nixpkgs { config = {}; }
, lib ? pkgs.lib
, stdenv ? pkgs.stdenv
, buildRustCrateForPkgs ? if buildRustCrate != null
    then lib.warn "crate2nix: Passing `buildRustCrate` as argument to Cargo.nix is deprecated. If you don't customize `buildRustCrate`, replace `callPackage ./Cargo.nix {}` by `import ./Cargo.nix { inherit pkgs; }`, and if you need to customize `buildRustCrate`, use `buildRustCrateForPkgs` instead." (_: buildRustCrate)
    else pkgs: pkgs.buildRustCrate
  # Deprecated
, buildRustCrate ? null
  # This is used as the `crateOverrides` argument for `buildRustCrate`.
, defaultCrateOverrides ? pkgs.defaultCrateOverrides
  # The features to enable for the root_crate or the workspace_members.
, rootFeatures ? [ "default" ]
  # If true, throw errors instead of issueing deprecation warnings.
, strictDeprecation ? false
  # Used for conditional compilation based on CPU feature detection.
, targetFeatures ? []
  # Whether to perform release builds: longer compile times, faster binaries.
, release ? true
  # Additional crate2nix configuration if it exists.
, crateConfig
  ? if builtins.pathExists ./crate-config.nix
    then pkgs.callPackage ./crate-config.nix {}
    else {}
}:

rec {
  #
  # "public" attributes that we attempt to keep stable with new versions of crate2nix.
  #


  # Refer your crate build derivation by name here.
  # You can override the features with
  # workspaceMembers."${crateName}".build.override { features = [ "default" "feature1" ... ]; }.
  workspaceMembers = {
    "kaleidoscope" = rec {
      packageId = "kaleidoscope";
      build = internal.buildRustCrateWithFeatures {
        packageId = "kaleidoscope";
      };

      # Debug support which might change between releases.
      # File a bug if you depend on any for non-debug work!
      debug = internal.debugCrate { inherit packageId; };
    };
    "kaleidoscope_ast" = rec {
      packageId = "kaleidoscope_ast";
      build = internal.buildRustCrateWithFeatures {
        packageId = "kaleidoscope_ast";
      };

      # Debug support which might change between releases.
      # File a bug if you depend on any for non-debug work!
      debug = internal.debugCrate { inherit packageId; };
    };
    "kaleidoscope_codegen" = rec {
      packageId = "kaleidoscope_codegen";
      build = internal.buildRustCrateWithFeatures {
        packageId = "kaleidoscope_codegen";
      };

      # Debug support which might change between releases.
      # File a bug if you depend on any for non-debug work!
      debug = internal.debugCrate { inherit packageId; };
    };
    "kaleidoscope_error" = rec {
      packageId = "kaleidoscope_error";
      build = internal.buildRustCrateWithFeatures {
        packageId = "kaleidoscope_error";
      };

      # Debug support which might change between releases.
      # File a bug if you depend on any for non-debug work!
      debug = internal.debugCrate { inherit packageId; };
    };
    "kaleidoscope_parser" = rec {
      packageId = "kaleidoscope_parser";
      build = internal.buildRustCrateWithFeatures {
        packageId = "kaleidoscope_parser";
      };

      # Debug support which might change between releases.
      # File a bug if you depend on any for non-debug work!
      debug = internal.debugCrate { inherit packageId; };
    };
  };

  # A derivation that joins the outputs of all workspace members together.
  allWorkspaceMembers = pkgs.symlinkJoin {
      name = "all-workspace-members";
      paths =
        let members = builtins.attrValues workspaceMembers;
        in builtins.map (m: m.build) members;
  };

  #
  # "internal" ("private") attributes that may change in every new version of crate2nix.
  #

  internal = rec {
    # Build and dependency information for crates.
    # Many of the fields are passed one-to-one to buildRustCrate.
    #
    # Noteworthy:
    # * `dependencies`/`buildDependencies`: similar to the corresponding fields for buildRustCrate.
    #   but with additional information which is used during dependency/feature resolution.
    # * `resolvedDependencies`: the selected default features reported by cargo - only included for debugging.
    # * `devDependencies` as of now not used by `buildRustCrate` but used to
    #   inject test dependencies into the build

    crates = {
      "aho-corasick" = rec {
        crateName = "aho-corasick";
        version = "0.7.19";
        edition = "2018";
        sha256 = "0knl5n9f396068qk4zrvhcf01d5qp9ja2my4j7ywny093bcmpxdl";
        libName = "aho_corasick";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "memchr";
            packageId = "memchr";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" ];
          "std" = [ "memchr/std" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "ansi_term" = rec {
        crateName = "ansi_term";
        version = "0.12.1";
        edition = "2015";
        sha256 = "1ljmkbilxgmhavxvxqa7qvm6f3fjggi7q2l3a72q9x0cxjvrnanm";
        authors = [
          "ogham@bsago.me"
          "Ryan Scheel (Havvy) <ryan.havvy@gmail.com>"
          "Josh Triplett <josh@joshtriplett.org>"
        ];
        dependencies = [
          {
            name = "winapi";
            packageId = "winapi";
            target = { target, features }: (target."os" == "windows");
            features = [ "consoleapi" "errhandlingapi" "fileapi" "handleapi" "processenv" ];
          }
        ];
        features = {
          "derive_serde_style" = [ "serde" ];
        };
      };
      "atty" = rec {
        crateName = "atty";
        version = "0.2.14";
        edition = "2015";
        sha256 = "1s7yslcs6a28c5vz7jwj63lkfgyx8mx99fdirlhi9lbhhzhrpcyr";
        authors = [
          "softprops <d.tangren@gmail.com>"
        ];
        dependencies = [
          {
            name = "hermit-abi";
            packageId = "hermit-abi";
            target = { target, features }: (target."os" == "hermit");
          }
          {
            name = "libc";
            packageId = "libc";
            usesDefaultFeatures = false;
            target = { target, features }: (target."unix" or false);
          }
          {
            name = "winapi";
            packageId = "winapi";
            target = { target, features }: (target."windows" or false);
            features = [ "consoleapi" "processenv" "minwinbase" "minwindef" "winbase" ];
          }
        ];

      };
      "autocfg" = rec {
        crateName = "autocfg";
        version = "1.1.0";
        edition = "2015";
        sha256 = "1ylp3cb47ylzabimazvbz9ms6ap784zhb6syaz6c1jqpmcmq0s6l";
        authors = [
          "Josh Stone <cuviper@gmail.com>"
        ];

      };
      "bitflags" = rec {
        crateName = "bitflags";
        version = "1.3.2";
        edition = "2018";
        sha256 = "12ki6w8gn1ldq7yz9y680llwk5gmrhrzszaa17g1sbrw2r2qvwxy";
        authors = [
          "The Rust Project Developers"
        ];
        features = {
          "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "bstr" = rec {
        crateName = "bstr";
        version = "0.2.17";
        edition = "2018";
        sha256 = "08rjbhysy6gg27db2h3pnhvr2mlr5vkj797i9625kwg8hgrnjdds";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "lazy_static";
            packageId = "lazy_static";
            optional = true;
          }
          {
            name = "memchr";
            packageId = "memchr";
            usesDefaultFeatures = false;
          }
          {
            name = "regex-automata";
            packageId = "regex-automata";
            optional = true;
            usesDefaultFeatures = false;
          }
          {
            name = "serde";
            packageId = "serde";
            optional = true;
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" "unicode" ];
          "serde1" = [ "std" "serde1-nostd" "serde/std" ];
          "serde1-nostd" = [ "serde" ];
          "std" = [ "memchr/std" ];
          "unicode" = [ "lazy_static" "regex-automata" ];
        };
        resolvedDefaultFeatures = [ "default" "lazy_static" "regex-automata" "serde" "serde1" "serde1-nostd" "std" "unicode" ];
      };
      "bumpalo" = rec {
        crateName = "bumpalo";
        version = "3.11.1";
        edition = "2021";
        sha256 = "1fl072w8wia496byc2h6ck2159sir2jjrb8niwq8h4916r8njbsp";
        authors = [
          "Nick Fitzgerald <fitzgen@gmail.com>"
        ];
        features = {
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "bunt" = rec {
        crateName = "bunt";
        version = "0.2.6";
        edition = "2018";
        sha256 = "0lamzh452i27cafllq9g8fz6nvhmpj647r43nvz76hz02dnaqaqr";
        authors = [
          "Lukas Kalbertodt <lukas.kalbertodt@gmail.com>"
        ];
        dependencies = [
          {
            name = "bunt-macros";
            packageId = "bunt-macros";
          }
          {
            name = "termcolor";
            packageId = "termcolor";
          }
        ];

      };
      "bunt-macros" = rec {
        crateName = "bunt-macros";
        version = "0.2.5";
        edition = "2018";
        sha256 = "1056014hjn7ysscdqyjfa1xcvwiqv4x35h8dlx0ghilbpcdy66hq";
        procMacro = true;
        authors = [
          "Lukas Kalbertodt <lukas.kalbertodt@gmail.com>"
        ];
        dependencies = [
          {
            name = "litrs";
            packageId = "litrs";
          }
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
          }
          {
            name = "quote";
            packageId = "quote";
          }
          {
            name = "unicode-xid";
            packageId = "unicode-xid";
          }
        ];

      };
      "cast" = rec {
        crateName = "cast";
        version = "0.3.0";
        edition = "2018";
        sha256 = "1dbyngbyz2qkk0jn2sxil8vrz3rnpcj142y184p9l4nbl9radcip";
        authors = [
          "Jorge Aparicio <jorge@japaric.io>"
        ];
        features = {
        };
      };
      "cc" = rec {
        crateName = "cc";
        version = "1.0.73";
        edition = "2018";
        crateBin = [];
        sha256 = "04ccylrjq94jssh8f7d7hxv64gs9f1m1jrsxb7wqgfxk4xljmzrg";
        authors = [
          "Alex Crichton <alex@alexcrichton.com>"
        ];
        features = {
          "parallel" = [ "jobserver" ];
        };
      };
      "cfg-if" = rec {
        crateName = "cfg-if";
        version = "1.0.0";
        edition = "2018";
        sha256 = "1za0vb97n4brpzpv8lsbnzmq5r8f2b0cpqqr0sy8h5bn751xxwds";
        authors = [
          "Alex Crichton <alex@alexcrichton.com>"
        ];
        features = {
          "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
        };
      };
      "clap" = rec {
        crateName = "clap";
        version = "2.34.0";
        edition = "2018";
        sha256 = "071q5d8jfwbazi6zhik9xwpacx5i6kb2vkzy060vhf0c3120aqd0";
        authors = [
          "Kevin K. <kbknapp@gmail.com>"
        ];
        dependencies = [
          {
            name = "ansi_term";
            packageId = "ansi_term";
            optional = true;
            target = { target, features }: (!(target."windows" or false));
          }
          {
            name = "atty";
            packageId = "atty";
            optional = true;
          }
          {
            name = "bitflags";
            packageId = "bitflags";
          }
          {
            name = "strsim";
            packageId = "strsim";
            optional = true;
          }
          {
            name = "textwrap";
            packageId = "textwrap";
          }
          {
            name = "unicode-width";
            packageId = "unicode-width";
          }
          {
            name = "vec_map";
            packageId = "vec_map";
            optional = true;
          }
        ];
        features = {
          "color" = [ "ansi_term" "atty" ];
          "default" = [ "suggestions" "color" "vec_map" ];
          "doc" = [ "yaml" ];
          "suggestions" = [ "strsim" ];
          "wrap_help" = [ "term_size" "textwrap/term_size" ];
          "yaml" = [ "yaml-rust" ];
        };
        resolvedDefaultFeatures = [ "ansi_term" "atty" "color" "default" "strsim" "suggestions" "vec_map" ];
      };
      "codespan-reporting" = rec {
        crateName = "codespan-reporting";
        version = "0.11.1";
        edition = "2018";
        sha256 = "0vkfay0aqk73d33kh79k1kqxx06ka22894xhqi89crnc6c6jff1m";
        authors = [
          "Brendan Zabarauskas <bjzaba@yahoo.com.au>"
        ];
        dependencies = [
          {
            name = "termcolor";
            packageId = "termcolor";
          }
          {
            name = "unicode-width";
            packageId = "unicode-width";
          }
        ];
        features = {
          "serialization" = [ "serde" "serde/rc" ];
        };
      };
      "criterion" = rec {
        crateName = "criterion";
        version = "0.3.6";
        edition = "2018";
        sha256 = "13yd64ah93gkbdv7qq4cr6rhgl9979jjcjk3gkhnav1b7glns7dh";
        authors = [
          "Jorge Aparicio <japaricious@gmail.com>"
          "Brook Heisler <brookheisler@gmail.com>"
        ];
        dependencies = [
          {
            name = "atty";
            packageId = "atty";
          }
          {
            name = "cast";
            packageId = "cast";
          }
          {
            name = "clap";
            packageId = "clap";
            usesDefaultFeatures = false;
          }
          {
            name = "criterion-plot";
            packageId = "criterion-plot";
          }
          {
            name = "csv";
            packageId = "csv";
          }
          {
            name = "itertools";
            packageId = "itertools";
          }
          {
            name = "lazy_static";
            packageId = "lazy_static";
          }
          {
            name = "num-traits";
            packageId = "num-traits";
            usesDefaultFeatures = false;
          }
          {
            name = "oorandom";
            packageId = "oorandom";
          }
          {
            name = "plotters";
            packageId = "plotters";
            usesDefaultFeatures = false;
            features = [ "svg_backend" "area_series" "line_series" ];
          }
          {
            name = "rayon";
            packageId = "rayon";
          }
          {
            name = "regex";
            packageId = "regex";
            usesDefaultFeatures = false;
            features = [ "std" ];
          }
          {
            name = "serde";
            packageId = "serde";
          }
          {
            name = "serde_cbor";
            packageId = "serde_cbor";
          }
          {
            name = "serde_derive";
            packageId = "serde_derive";
          }
          {
            name = "serde_json";
            packageId = "serde_json";
          }
          {
            name = "tinytemplate";
            packageId = "tinytemplate";
          }
          {
            name = "walkdir";
            packageId = "walkdir";
          }
        ];
        features = {
          "async" = [ "futures" ];
          "async_futures" = [ "futures/executor" "async" ];
          "async_smol" = [ "smol" "async" ];
          "async_std" = [ "async-std" "async" ];
          "async_tokio" = [ "tokio" "async" ];
          "default" = [ "cargo_bench_support" ];
          "stable" = [ "async_futures" "async_smol" "async_tokio" "async_std" ];
        };
        resolvedDefaultFeatures = [ "cargo_bench_support" "default" ];
      };
      "criterion-plot" = rec {
        crateName = "criterion-plot";
        version = "0.4.5";
        edition = "2018";
        sha256 = "0xhq0jz1603585h7xvm3s4x9irmifjliklszbzs4cda00y1cqwr6";
        authors = [
          "Jorge Aparicio <japaricious@gmail.com>"
          "Brook Heisler <brookheisler@gmail.com>"
        ];
        dependencies = [
          {
            name = "cast";
            packageId = "cast";
          }
          {
            name = "itertools";
            packageId = "itertools";
          }
        ];

      };
      "crossbeam-channel" = rec {
        crateName = "crossbeam-channel";
        version = "0.5.6";
        edition = "2018";
        sha256 = "08f5f043rljl82a06d1inda6nl2b030s7yfqp31ps8w8mzfh9pf2";
        dependencies = [
          {
            name = "cfg-if";
            packageId = "cfg-if";
          }
          {
            name = "crossbeam-utils";
            packageId = "crossbeam-utils";
            optional = true;
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" ];
          "std" = [ "crossbeam-utils/std" ];
        };
        resolvedDefaultFeatures = [ "crossbeam-utils" "default" "std" ];
      };
      "crossbeam-deque" = rec {
        crateName = "crossbeam-deque";
        version = "0.8.2";
        edition = "2018";
        sha256 = "1z6ifz35lyk0mw818xcl3brgss2k8islhgdmfk9s5fwjnr982pki";
        dependencies = [
          {
            name = "cfg-if";
            packageId = "cfg-if";
          }
          {
            name = "crossbeam-epoch";
            packageId = "crossbeam-epoch";
            optional = true;
            usesDefaultFeatures = false;
          }
          {
            name = "crossbeam-utils";
            packageId = "crossbeam-utils";
            optional = true;
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" ];
          "std" = [ "crossbeam-epoch/std" "crossbeam-utils/std" ];
        };
        resolvedDefaultFeatures = [ "crossbeam-epoch" "crossbeam-utils" "default" "std" ];
      };
      "crossbeam-epoch" = rec {
        crateName = "crossbeam-epoch";
        version = "0.9.11";
        edition = "2018";
        sha256 = "0j33x0b3bzplrj4bjqi63n2s42kpr6gxpwb5msfyvc2nsg2xy5pr";
        dependencies = [
          {
            name = "cfg-if";
            packageId = "cfg-if";
          }
          {
            name = "crossbeam-utils";
            packageId = "crossbeam-utils";
            usesDefaultFeatures = false;
          }
          {
            name = "memoffset";
            packageId = "memoffset";
          }
          {
            name = "scopeguard";
            packageId = "scopeguard";
            usesDefaultFeatures = false;
          }
        ];
        buildDependencies = [
          {
            name = "autocfg";
            packageId = "autocfg";
          }
        ];
        features = {
          "default" = [ "std" ];
          "loom" = [ "loom-crate" "crossbeam-utils/loom" ];
          "nightly" = [ "crossbeam-utils/nightly" ];
          "std" = [ "alloc" "crossbeam-utils/std" ];
        };
        resolvedDefaultFeatures = [ "alloc" "std" ];
      };
      "crossbeam-utils" = rec {
        crateName = "crossbeam-utils";
        version = "0.8.12";
        edition = "2018";
        sha256 = "1b0zs5ahnwkgky7svwah9fhmqx645qnb3h97cnk6q68zzb2zxfpd";
        dependencies = [
          {
            name = "cfg-if";
            packageId = "cfg-if";
          }
        ];
        features = {
          "default" = [ "std" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "csv" = rec {
        crateName = "csv";
        version = "1.1.6";
        edition = "2018";
        sha256 = "1q9nqn0qlamwl18v57p82c8yhxy43lkzf2z1mndmycsvqinkm092";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "bstr";
            packageId = "bstr";
            features = [ "serde1" ];
          }
          {
            name = "csv-core";
            packageId = "csv-core";
          }
          {
            name = "itoa";
            packageId = "itoa 0.4.8";
          }
          {
            name = "ryu";
            packageId = "ryu";
          }
          {
            name = "serde";
            packageId = "serde";
          }
        ];
        devDependencies = [
          {
            name = "serde";
            packageId = "serde";
            features = [ "derive" ];
          }
        ];

      };
      "csv-core" = rec {
        crateName = "csv-core";
        version = "0.1.10";
        edition = "2018";
        sha256 = "145wcc3560v1kmysqqspvddppiysr2rifqzy4nnlh3r6kxanc91b";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "memchr";
            packageId = "memchr";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "libc" = [ "memchr/libc" ];
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "either" = rec {
        crateName = "either";
        version = "1.8.0";
        edition = "2018";
        sha256 = "15z70yaivlkpx27vzv99ibf8d2x5jp24yn69y0xi20w86v4c3rch";
        authors = [
          "bluss"
        ];
        features = {
          "default" = [ "use_std" ];
        };
        resolvedDefaultFeatures = [ "default" "use_std" ];
      };
      "half" = rec {
        crateName = "half";
        version = "1.8.2";
        edition = "2018";
        sha256 = "1mqbmx2m9qd4lslkb42fzgldsklhv9c4bxsc8j82r80d8m24mfza";
        authors = [
          "Kathryn Long <squeeself@gmail.com>"
        ];
        features = {
          "serialize" = [ "serde" ];
          "std" = [ "alloc" ];
        };
      };
      "hermit-abi" = rec {
        crateName = "hermit-abi";
        version = "0.1.19";
        edition = "2018";
        sha256 = "0cxcm8093nf5fyn114w8vxbrbcyvv91d4015rdnlgfll7cs6gd32";
        authors = [
          "Stefan Lankes"
        ];
        dependencies = [
          {
            name = "libc";
            packageId = "libc";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "rustc-dep-of-std" = [ "core" "compiler_builtins/rustc-dep-of-std" "libc/rustc-dep-of-std" ];
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "inkwell" = rec {
        crateName = "inkwell";
        version = "0.1.0";
        edition = "2021";
        workspace_member = null;
        src = pkgs.fetchgit {
          url = "https://github.com/TheDan64/inkwell";
          rev = "27b8ab5623696709c8948fabfc62ce47d5a32edd";
          sha256 = "0v5fb27j07v5c8x7sbwv8lc0m53fhy9ab6rxbb2mgfjkzz12mm5l";
        };
        authors = [
          "Daniel Kolsoi <thadan64@gmail.com>"
        ];
        dependencies = [
          {
            name = "either";
            packageId = "either";
          }
          {
            name = "inkwell_internals";
            packageId = "inkwell_internals";
          }
          {
            name = "libc";
            packageId = "libc";
          }
          {
            name = "llvm-sys";
            packageId = "llvm-sys";
            rename = "llvm-sys-130";
            optional = true;
          }
          {
            name = "once_cell";
            packageId = "once_cell";
          }
          {
            name = "parking_lot";
            packageId = "parking_lot";
          }
        ];
        features = {
          "default" = [ "target-all" ];
          "experimental" = [ "static-alloc" ];
          "llvm10-0" = [ "llvm-sys-100" ];
          "llvm10-0-no-llvm-linking" = [ "llvm10-0" "llvm-sys-100/no-llvm-linking" ];
          "llvm11-0" = [ "llvm-sys-110" ];
          "llvm11-0-no-llvm-linking" = [ "llvm11-0" "llvm-sys-110/no-llvm-linking" ];
          "llvm12-0" = [ "llvm-sys-120" ];
          "llvm12-0-no-llvm-linking" = [ "llvm12-0" "llvm-sys-120/no-llvm-linking" ];
          "llvm13-0" = [ "llvm-sys-130" ];
          "llvm13-0-no-llvm-linking" = [ "llvm13-0" "llvm-sys-130/no-llvm-linking" ];
          "llvm14-0" = [ "llvm-sys-140" ];
          "llvm14-0-no-llvm-linking" = [ "llvm14-0" "llvm-sys-140/no-llvm-linking" ];
          "llvm4-0" = [ "llvm-sys-40" ];
          "llvm4-0-no-llvm-linking" = [ "llvm4-0" "llvm-sys-40/no-llvm-linking" ];
          "llvm5-0" = [ "llvm-sys-50" ];
          "llvm5-0-no-llvm-linking" = [ "llvm5-0" "llvm-sys-50/no-llvm-linking" ];
          "llvm6-0" = [ "llvm-sys-60" ];
          "llvm6-0-no-llvm-linking" = [ "llvm6-0" "llvm-sys-60/no-llvm-linking" ];
          "llvm7-0" = [ "llvm-sys-70" ];
          "llvm7-0-no-llvm-linking" = [ "llvm7-0" "llvm-sys-70/no-llvm-linking" ];
          "llvm8-0" = [ "llvm-sys-80" ];
          "llvm8-0-no-llvm-linking" = [ "llvm8-0" "llvm-sys-80/no-llvm-linking" ];
          "llvm9-0" = [ "llvm-sys-90" ];
          "llvm9-0-no-llvm-linking" = [ "llvm9-0" "llvm-sys-90/no-llvm-linking" ];
          "nightly" = [ "inkwell_internals/nightly" ];
          "target-all" = [ "target-x86" "target-arm" "target-mips" "target-aarch64" "target-amdgpu" "target-systemz" "target-hexagon" "target-nvptx" "target-msp430" "target-xcore" "target-powerpc" "target-sparc" "target-bpf" "target-lanai" "target-webassembly" "target-riscv" ];
        };
        resolvedDefaultFeatures = [ "default" "llvm-sys-130" "llvm13-0" "target-aarch64" "target-all" "target-amdgpu" "target-arm" "target-bpf" "target-hexagon" "target-lanai" "target-mips" "target-msp430" "target-nvptx" "target-powerpc" "target-riscv" "target-sparc" "target-systemz" "target-webassembly" "target-x86" "target-xcore" ];
      };
      "inkwell_internals" = rec {
        crateName = "inkwell_internals";
        version = "0.5.0";
        edition = "2021";
        workspace_member = null;
        src = pkgs.fetchgit {
          url = "https://github.com/TheDan64/inkwell";
          rev = "27b8ab5623696709c8948fabfc62ce47d5a32edd";
          sha256 = "0v5fb27j07v5c8x7sbwv8lc0m53fhy9ab6rxbb2mgfjkzz12mm5l";
        };
        procMacro = true;
        authors = [
          "Daniel Kolsoi <thadan64@gmail.com>"
        ];
        dependencies = [
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
          }
          {
            name = "quote";
            packageId = "quote";
          }
          {
            name = "syn";
            packageId = "syn";
            features = [ "full" "fold" ];
          }
        ];
        features = {
        };
      };
      "itertools" = rec {
        crateName = "itertools";
        version = "0.10.5";
        edition = "2018";
        sha256 = "0ww45h7nxx5kj6z2y6chlskxd1igvs4j507anr6dzg99x1h25zdh";
        authors = [
          "bluss"
        ];
        dependencies = [
          {
            name = "either";
            packageId = "either";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "use_std" ];
          "use_std" = [ "use_alloc" "either/use_std" ];
        };
        resolvedDefaultFeatures = [ "default" "use_alloc" "use_std" ];
      };
      "itoa 0.4.8" = rec {
        crateName = "itoa";
        version = "0.4.8";
        edition = "2015";
        sha256 = "1m1dairwyx8kfxi7ab3b5jc71z1vigh9w4shnhiajji9avzr26dp";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];
        features = {
          "default" = [ "std" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "itoa 1.0.4" = rec {
        crateName = "itoa";
        version = "1.0.4";
        edition = "2018";
        sha256 = "1k2y06z87wjxda4v751ybf7n9q4kwl9ly9jffa78vpxs3qsas5s2";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];

      };
      "js-sys" = rec {
        crateName = "js-sys";
        version = "0.3.60";
        edition = "2018";
        sha256 = "0isslargvb1cd5xfk73xrxqni3p2ksharkp22swmc25zwgrrsh29";
        authors = [
          "The wasm-bindgen Developers"
        ];
        dependencies = [
          {
            name = "wasm-bindgen";
            packageId = "wasm-bindgen";
          }
        ];

      };
      "kaleidoscope" = rec {
        crateName = "kaleidoscope";
        version = "0.1.0";
        edition = "2018";
        crateBin = [
          { name = "kaleidoscope"; path = "src/main.rs"; }
        ];
        src = lib.cleanSourceWith { filter = sourceFilter;  src = ./kaleidoscope_compiler; };
        authors = [
          "Jakob Leifhelm <jakob.leifhelm@gmail.com>"
        ];
        dependencies = [
          {
            name = "atty";
            packageId = "atty";
          }
          {
            name = "bunt";
            packageId = "bunt";
          }
          {
            name = "clap";
            packageId = "clap";
          }
          {
            name = "kaleidoscope_ast";
            packageId = "kaleidoscope_ast";
          }
          {
            name = "kaleidoscope_codegen";
            packageId = "kaleidoscope_codegen";
          }
          {
            name = "kaleidoscope_error";
            packageId = "kaleidoscope_error";
            features = [ "bunt" "codespan-reporting" ];
          }
          {
            name = "kaleidoscope_parser";
            packageId = "kaleidoscope_parser";
          }
        ];

      };
      "kaleidoscope_ast" = rec {
        crateName = "kaleidoscope_ast";
        version = "0.1.0";
        edition = "2018";
        src = lib.cleanSourceWith { filter = sourceFilter;  src = ./kaleidoscope_ast; };
        authors = [
          "Jakob Leifhelm <jakob.leifhelm@gmail.com>"
        ];

      };
      "kaleidoscope_codegen" = rec {
        crateName = "kaleidoscope_codegen";
        version = "0.1.0";
        edition = "2018";
        src = lib.cleanSourceWith { filter = sourceFilter;  src = ./kaleidoscope_codegen; };
        authors = [
          "Jakob Leifhelm <jakob.leifhelm@gmail.com>"
        ];
        dependencies = [
          {
            name = "inkwell";
            packageId = "inkwell";
            features = [ "llvm13-0" ];
          }
          {
            name = "kaleidoscope_ast";
            packageId = "kaleidoscope_ast";
          }
          {
            name = "thread_local";
            packageId = "thread_local";
          }
        ];

      };
      "kaleidoscope_error" = rec {
        crateName = "kaleidoscope_error";
        version = "0.1.0";
        edition = "2018";
        src = lib.cleanSourceWith { filter = sourceFilter;  src = ./kaleidoscope_error; };
        authors = [
          "Jakob Leifhelm <jakob.leifhelm@gmail.com>"
        ];
        dependencies = [
          {
            name = "bunt";
            packageId = "bunt";
            optional = true;
          }
          {
            name = "codespan-reporting";
            packageId = "codespan-reporting";
            optional = true;
          }
        ];

        resolvedDefaultFeatures = [ "bunt" "codespan-reporting" ];
      };
      "kaleidoscope_parser" = rec {
        crateName = "kaleidoscope_parser";
        version = "0.1.0";
        edition = "2018";
        src = lib.cleanSourceWith { filter = sourceFilter;  src = ./kaleidoscope_parser; };
        authors = [
          "Jakob Leifhelm <jakob.leifhelm@gmail.com>"
        ];
        dependencies = [
          {
            name = "kaleidoscope_ast";
            packageId = "kaleidoscope_ast";
          }
          {
            name = "kaleidoscope_error";
            packageId = "kaleidoscope_error";
          }
          {
            name = "nom";
            packageId = "nom";
          }
          {
            name = "nom-unicode";
            packageId = "nom-unicode";
          }
          {
            name = "termtree";
            packageId = "termtree";
          }
        ];
        devDependencies = [
          {
            name = "criterion";
            packageId = "criterion";
          }
        ];

      };
      "lazy_static" = rec {
        crateName = "lazy_static";
        version = "1.4.0";
        edition = "2015";
        sha256 = "0in6ikhw8mgl33wjv6q6xfrb5b9jr16q8ygjy803fay4zcisvaz2";
        authors = [
          "Marvin Löbel <loebel.marvin@gmail.com>"
        ];
        features = {
          "spin_no_std" = [ "spin" ];
        };
      };
      "libc" = rec {
        crateName = "libc";
        version = "0.2.137";
        edition = "2015";
        sha256 = "12dz2lk4a7lm03k079n2rkm1l6cpdhvy6nrngbfprzrv19icqzzw";
        authors = [
          "The Rust Project Developers"
        ];
        features = {
          "default" = [ "std" ];
          "rustc-dep-of-std" = [ "align" "rustc-std-workspace-core" ];
          "use_std" = [ "std" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "litrs" = rec {
        crateName = "litrs";
        version = "0.2.3";
        edition = "2018";
        sha256 = "1akrxglqv6dz41jrjr409pjjysd00z5w0949007v52yg6c4mw9zr";
        authors = [
          "Lukas Kalbertodt <lukas.kalbertodt@gmail.com>"
        ];
        dependencies = [
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
            optional = true;
          }
        ];
        features = {
          "default" = [ "proc-macro2" ];
        };
        resolvedDefaultFeatures = [ "default" "proc-macro2" ];
      };
      "llvm-sys" = rec {
        crateName = "llvm-sys";
        version = "130.0.5";
        edition = "2015";
        sha256 = "1z4zfmi12vzmynz5b3hfz5xcjjx0vpf5ixzpwpss33g7h8bhc4ky";
        authors = [
          "Peter Marheine <peter@taricorp.net>"
        ];
        dependencies = [
          {
            name = "libc";
            packageId = "libc";
          }
        ];
        buildDependencies = [
          {
            name = "cc";
            packageId = "cc";
          }
          {
            name = "lazy_static";
            packageId = "lazy_static";
          }
          {
            name = "regex";
            packageId = "regex";
          }
          {
            name = "semver";
            packageId = "semver";
          }
        ];
        features = {
        };
      };
      "lock_api" = rec {
        crateName = "lock_api";
        version = "0.4.9";
        edition = "2018";
        sha256 = "1py41vk243hwk345nhkn5nw0bd4m03gzjmprdjqq6rg5dwv12l23";
        authors = [
          "Amanieu d'Antras <amanieu@gmail.com>"
        ];
        dependencies = [
          {
            name = "scopeguard";
            packageId = "scopeguard";
            usesDefaultFeatures = false;
          }
        ];
        buildDependencies = [
          {
            name = "autocfg";
            packageId = "autocfg";
          }
        ];
        features = {
        };
      };
      "log" = rec {
        crateName = "log";
        version = "0.4.17";
        edition = "2015";
        sha256 = "0biqlaaw1lsr8bpnmbcc0fvgjj34yy79ghqzyi0ali7vgil2xcdb";
        authors = [
          "The Rust Project Developers"
        ];
        dependencies = [
          {
            name = "cfg-if";
            packageId = "cfg-if";
          }
        ];
        features = {
          "kv_unstable" = [ "value-bag" ];
          "kv_unstable_serde" = [ "kv_unstable_std" "value-bag/serde" "serde" ];
          "kv_unstable_std" = [ "std" "kv_unstable" "value-bag/error" ];
          "kv_unstable_sval" = [ "kv_unstable" "value-bag/sval" "sval" ];
        };
      };
      "memchr" = rec {
        crateName = "memchr";
        version = "2.5.0";
        edition = "2018";
        sha256 = "0vanfk5mzs1g1syqnj03q8n0syggnhn55dq535h2wxr7rwpfbzrd";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
          "bluss"
        ];
        features = {
          "default" = [ "std" ];
          "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
          "use_std" = [ "std" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "memoffset" = rec {
        crateName = "memoffset";
        version = "0.6.5";
        edition = "2015";
        sha256 = "1kkrzll58a3ayn5zdyy9i1f1v3mx0xgl29x0chq614zazba638ss";
        authors = [
          "Gilad Naaman <gilad.naaman@gmail.com>"
        ];
        buildDependencies = [
          {
            name = "autocfg";
            packageId = "autocfg";
          }
        ];
        features = {
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "minimal-lexical" = rec {
        crateName = "minimal-lexical";
        version = "0.2.1";
        edition = "2018";
        sha256 = "16ppc5g84aijpri4jzv14rvcnslvlpphbszc7zzp6vfkddf4qdb8";
        authors = [
          "Alex Huszagh <ahuszagh@gmail.com>"
        ];
        features = {
          "default" = [ "std" ];
        };
        resolvedDefaultFeatures = [ "std" ];
      };
      "nom" = rec {
        crateName = "nom";
        version = "7.1.1";
        edition = "2018";
        sha256 = "0djc3lq5xihnwhrvkc4bj0fd58sjf632yh6hfiw545x355d3x458";
        authors = [
          "contact@geoffroycouprie.com"
        ];
        dependencies = [
          {
            name = "memchr";
            packageId = "memchr";
            usesDefaultFeatures = false;
          }
          {
            name = "minimal-lexical";
            packageId = "minimal-lexical";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" ];
          "std" = [ "alloc" "memchr/std" "minimal-lexical/std" ];
        };
        resolvedDefaultFeatures = [ "alloc" "default" "std" ];
      };
      "nom-unicode" = rec {
        crateName = "nom-unicode";
        version = "0.3.0";
        edition = "2018";
        sha256 = "1zhzfxhc42hpyszdyimijf080fpikng34rf1ab3l15xbf56kmh55";
        authors = [
          "Alex Huszagh <ahuszagh@gmail.com>"
        ];
        dependencies = [
          {
            name = "nom";
            packageId = "nom";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "alloc" = [ "nom/alloc" ];
          "default" = [ "std" ];
          "std" = [ "nom/std" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "num-traits" = rec {
        crateName = "num-traits";
        version = "0.2.15";
        edition = "2015";
        sha256 = "1kfdqqw2ndz0wx2j75v9nbjx7d3mh3150zs4p5595y02rwsdx3jp";
        authors = [
          "The Rust Project Developers"
        ];
        buildDependencies = [
          {
            name = "autocfg";
            packageId = "autocfg";
          }
        ];
        features = {
          "default" = [ "std" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "num_cpus" = rec {
        crateName = "num_cpus";
        version = "1.13.1";
        edition = "2015";
        sha256 = "18apx62z4j4lajj2fi6r1i8slr9rs2d0xrbj2ls85qfyxck4brhr";
        authors = [
          "Sean McArthur <sean@seanmonstar.com>"
        ];
        dependencies = [
          {
            name = "hermit-abi";
            packageId = "hermit-abi";
            target = { target, features }: (((target."arch" == "x86_64") || (target."arch" == "aarch64")) && (target."os" == "hermit"));
          }
          {
            name = "libc";
            packageId = "libc";
            target = { target, features }: (!(target."windows" or false));
          }
        ];

      };
      "once_cell" = rec {
        crateName = "once_cell";
        version = "1.15.0";
        edition = "2021";
        sha256 = "1q9r8c0ls1qgjp89p4rd36sjv4671pz6710c106ajwcv2c2asbg8";
        authors = [
          "Aleksey Kladov <aleksey.kladov@gmail.com>"
        ];
        features = {
          "alloc" = [ "race" ];
          "default" = [ "std" ];
          "parking_lot" = [ "parking_lot_core" ];
          "std" = [ "alloc" ];
        };
        resolvedDefaultFeatures = [ "alloc" "default" "race" "std" ];
      };
      "oorandom" = rec {
        crateName = "oorandom";
        version = "11.1.3";
        edition = "2018";
        sha256 = "0xdm4vd89aiwnrk1xjwzklnchjqvib4klcihlc2bsd4x50mbrc8a";
        authors = [
          "Simon Heath <icefox@dreamquest.io>"
        ];

      };
      "parking_lot" = rec {
        crateName = "parking_lot";
        version = "0.12.1";
        edition = "2018";
        sha256 = "13r2xk7mnxfc5g0g6dkdxqdqad99j7s7z8zhzz4npw5r0g0v4hip";
        authors = [
          "Amanieu d'Antras <amanieu@gmail.com>"
        ];
        dependencies = [
          {
            name = "lock_api";
            packageId = "lock_api";
          }
          {
            name = "parking_lot_core";
            packageId = "parking_lot_core";
          }
        ];
        features = {
          "arc_lock" = [ "lock_api/arc_lock" ];
          "deadlock_detection" = [ "parking_lot_core/deadlock_detection" ];
          "nightly" = [ "parking_lot_core/nightly" "lock_api/nightly" ];
          "owning_ref" = [ "lock_api/owning_ref" ];
          "serde" = [ "lock_api/serde" ];
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "parking_lot_core" = rec {
        crateName = "parking_lot_core";
        version = "0.9.4";
        edition = "2018";
        sha256 = "1h5y9qbsyismsbk85b8dvzqc7i9h7n6z7bs3j786j76w5bff1jad";
        authors = [
          "Amanieu d'Antras <amanieu@gmail.com>"
        ];
        dependencies = [
          {
            name = "cfg-if";
            packageId = "cfg-if";
          }
          {
            name = "libc";
            packageId = "libc";
            target = { target, features }: (target."unix" or false);
          }
          {
            name = "redox_syscall";
            packageId = "redox_syscall";
            target = { target, features }: (target."os" == "redox");
          }
          {
            name = "smallvec";
            packageId = "smallvec";
          }
          {
            name = "windows-sys";
            packageId = "windows-sys";
            target = { target, features }: (target."windows" or false);
            features = [ "Win32_Foundation" "Win32_System_LibraryLoader" "Win32_System_SystemServices" "Win32_System_WindowsProgramming" ];
          }
        ];
        features = {
          "deadlock_detection" = [ "petgraph" "thread-id" "backtrace" ];
        };
      };
      "pest" = rec {
        crateName = "pest";
        version = "2.4.0";
        edition = "2018";
        sha256 = "06n4g6rv96fl0wr6vgxnc79d6kr71h99pmblglrr5r32q1lvriyv";
        authors = [
          "Dragoș Tiselice <dragostiselice@gmail.com>"
        ];
        dependencies = [
          {
            name = "thiserror";
            packageId = "thiserror";
            optional = true;
          }
          {
            name = "ucd-trie";
            packageId = "ucd-trie";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" ];
          "fast-line-col" = [ "memchr" "bytecount" ];
          "pretty-print" = [ "serde" "serde_json" ];
          "std" = [ "ucd-trie/std" "thiserror" ];
        };
        resolvedDefaultFeatures = [ "default" "std" "thiserror" ];
      };
      "plotters" = rec {
        crateName = "plotters";
        version = "0.3.4";
        edition = "2018";
        sha256 = "15xzbxnjcfsaf8lac846lgi4xmn9k18m9k8gqm35aaa2wqwvcf15";
        authors = [
          "Hao Hou <haohou302@gmail.com>"
        ];
        dependencies = [
          {
            name = "num-traits";
            packageId = "num-traits";
          }
          {
            name = "plotters-backend";
            packageId = "plotters-backend";
          }
          {
            name = "plotters-svg";
            packageId = "plotters-svg";
            optional = true;
          }
          {
            name = "wasm-bindgen";
            packageId = "wasm-bindgen";
            target = { target, features }: ((target."arch" == "wasm32") && (!(target."os" == "wasi")));
          }
          {
            name = "web-sys";
            packageId = "web-sys";
            target = { target, features }: ((target."arch" == "wasm32") && (!(target."os" == "wasi")));
            features = [ "Document" "DomRect" "Element" "HtmlElement" "Node" "Window" "HtmlCanvasElement" "CanvasRenderingContext2d" ];
          }
        ];
        features = {
          "all_elements" = [ "errorbar" "candlestick" "boxplot" "histogram" ];
          "all_series" = [ "area_series" "line_series" "point_series" "surface_series" ];
          "bitmap_backend" = [ "plotters-bitmap" "ttf" ];
          "bitmap_encoder" = [ "plotters-bitmap/image_encoder" ];
          "bitmap_gif" = [ "plotters-bitmap/gif_backend" ];
          "datetime" = [ "chrono" ];
          "default" = [ "bitmap_backend" "bitmap_encoder" "bitmap_gif" "svg_backend" "chrono" "ttf" "image" "deprecated_items" "all_series" "all_elements" "full_palette" ];
          "evcxr" = [ "svg_backend" ];
          "evcxr_bitmap" = [ "evcxr" "bitmap_backend" "plotters-svg/bitmap_encoder" ];
          "fontconfig-dlopen" = [ "font-kit/source-fontconfig-dlopen" ];
          "svg_backend" = [ "plotters-svg" ];
          "ttf" = [ "font-kit" "ttf-parser" "lazy_static" "pathfinder_geometry" ];
        };
        resolvedDefaultFeatures = [ "area_series" "line_series" "plotters-svg" "svg_backend" ];
      };
      "plotters-backend" = rec {
        crateName = "plotters-backend";
        version = "0.3.4";
        edition = "2018";
        sha256 = "0hl1x8dqrzsjw1vabyw48gzp7g6z8rlyjqjc4b0wvzl1cdhjhchr";
        authors = [
          "Hao Hou <haohou302@gmail.com>"
        ];

      };
      "plotters-svg" = rec {
        crateName = "plotters-svg";
        version = "0.3.3";
        edition = "2018";
        sha256 = "0vx5wmm5mxip3fm4l67l3wcvv3jwph4c70zpd3kdmqdab4kiva7r";
        authors = [
          "Hao Hou <haohou302@gmail.com>"
        ];
        dependencies = [
          {
            name = "plotters-backend";
            packageId = "plotters-backend";
          }
        ];
        features = {
          "bitmap_encoder" = [ "image" ];
        };
      };
      "proc-macro2" = rec {
        crateName = "proc-macro2";
        version = "1.0.47";
        edition = "2018";
        sha256 = "09g7alc7mlbycsadfh7lwskr1qfxbiic9qp9z751cqz3n04dk8sy";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
          "Alex Crichton <alex@alexcrichton.com>"
        ];
        dependencies = [
          {
            name = "unicode-ident";
            packageId = "unicode-ident";
          }
        ];
        features = {
          "default" = [ "proc-macro" ];
        };
        resolvedDefaultFeatures = [ "default" "proc-macro" ];
      };
      "quote" = rec {
        crateName = "quote";
        version = "1.0.21";
        edition = "2018";
        sha256 = "0yai5cyd9h95n7hkwjcx8ig3yv0hindmz5gm60g9dmm7fzrlir5v";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];
        dependencies = [
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "proc-macro" ];
          "proc-macro" = [ "proc-macro2/proc-macro" ];
        };
        resolvedDefaultFeatures = [ "default" "proc-macro" ];
      };
      "rayon" = rec {
        crateName = "rayon";
        version = "1.5.3";
        edition = "2018";
        sha256 = "0z9sjcy1hnnvgkwx3cn1x44pf24jpwarp3172m9am2xd5rvyb6dx";
        authors = [
          "Niko Matsakis <niko@alum.mit.edu>"
          "Josh Stone <cuviper@gmail.com>"
        ];
        dependencies = [
          {
            name = "crossbeam-deque";
            packageId = "crossbeam-deque";
          }
          {
            name = "either";
            packageId = "either";
            usesDefaultFeatures = false;
          }
          {
            name = "rayon-core";
            packageId = "rayon-core";
          }
        ];
        buildDependencies = [
          {
            name = "autocfg";
            packageId = "autocfg";
          }
        ];

      };
      "rayon-core" = rec {
        crateName = "rayon-core";
        version = "1.9.3";
        edition = "2018";
        sha256 = "0gv8k6612gc24kqqm4440f5qfx6gnyv2v6dj3d4libbdmjswv2r5";
        authors = [
          "Niko Matsakis <niko@alum.mit.edu>"
          "Josh Stone <cuviper@gmail.com>"
        ];
        dependencies = [
          {
            name = "crossbeam-channel";
            packageId = "crossbeam-channel";
          }
          {
            name = "crossbeam-deque";
            packageId = "crossbeam-deque";
          }
          {
            name = "crossbeam-utils";
            packageId = "crossbeam-utils";
          }
          {
            name = "num_cpus";
            packageId = "num_cpus";
          }
        ];

      };
      "redox_syscall" = rec {
        crateName = "redox_syscall";
        version = "0.2.16";
        edition = "2018";
        sha256 = "16jicm96kjyzm802cxdd1k9jmcph0db1a4lhslcnhjsvhp0mhnpv";
        libName = "syscall";
        authors = [
          "Jeremy Soller <jackpot51@gmail.com>"
        ];
        dependencies = [
          {
            name = "bitflags";
            packageId = "bitflags";
          }
        ];

      };
      "regex" = rec {
        crateName = "regex";
        version = "1.6.0";
        edition = "2018";
        sha256 = "12wqvyh4i75j7pc8sgvmqh4yy3qaj4inc4alyv1cdf3lf4kb6kjc";
        authors = [
          "The Rust Project Developers"
        ];
        dependencies = [
          {
            name = "aho-corasick";
            packageId = "aho-corasick";
            optional = true;
          }
          {
            name = "memchr";
            packageId = "memchr";
            optional = true;
          }
          {
            name = "regex-syntax";
            packageId = "regex-syntax";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" "perf" "unicode" "regex-syntax/default" ];
          "perf" = [ "perf-cache" "perf-dfa" "perf-inline" "perf-literal" ];
          "perf-literal" = [ "aho-corasick" "memchr" ];
          "unicode" = [ "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" "regex-syntax/unicode" ];
          "unicode-age" = [ "regex-syntax/unicode-age" ];
          "unicode-bool" = [ "regex-syntax/unicode-bool" ];
          "unicode-case" = [ "regex-syntax/unicode-case" ];
          "unicode-gencat" = [ "regex-syntax/unicode-gencat" ];
          "unicode-perl" = [ "regex-syntax/unicode-perl" ];
          "unicode-script" = [ "regex-syntax/unicode-script" ];
          "unicode-segment" = [ "regex-syntax/unicode-segment" ];
          "unstable" = [ "pattern" ];
          "use_std" = [ "std" ];
        };
        resolvedDefaultFeatures = [ "aho-corasick" "default" "memchr" "perf" "perf-cache" "perf-dfa" "perf-inline" "perf-literal" "std" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ];
      };
      "regex-automata" = rec {
        crateName = "regex-automata";
        version = "0.1.10";
        edition = "2015";
        sha256 = "0ci1hvbzhrfby5fdpf4ganhf7kla58acad9i1ff1p34dzdrhs8vc";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        features = {
          "default" = [ "std" ];
          "std" = [ "regex-syntax" ];
          "transducer" = [ "std" "fst" ];
        };
      };
      "regex-syntax" = rec {
        crateName = "regex-syntax";
        version = "0.6.27";
        edition = "2018";
        sha256 = "0i32nnvyzzkvz1rqp2qyfxrp2170859z8ck37jd63c8irrrppy53";
        authors = [
          "The Rust Project Developers"
        ];
        features = {
          "default" = [ "unicode" ];
          "unicode" = [ "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ];
        };
        resolvedDefaultFeatures = [ "default" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ];
      };
      "ryu" = rec {
        crateName = "ryu";
        version = "1.0.11";
        edition = "2018";
        sha256 = "02czvxrxhi2gmamw25drdvkfkkk9xd9758bpnk0s30mfyggsn0a5";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];
        features = {
        };
      };
      "same-file" = rec {
        crateName = "same-file";
        version = "1.0.6";
        edition = "2018";
        sha256 = "00h5j1w87dmhnvbv9l8bic3y7xxsnjmssvifw2ayvgx9mb1ivz4k";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "winapi-util";
            packageId = "winapi-util";
            target = { target, features }: (target."windows" or false);
          }
        ];

      };
      "scopeguard" = rec {
        crateName = "scopeguard";
        version = "1.1.0";
        edition = "2015";
        sha256 = "1kbqm85v43rq92vx7hfiay6pmcga03vrjbbfwqpyj3pwsg3b16nj";
        authors = [
          "bluss"
        ];
        features = {
          "default" = [ "use_std" ];
        };
      };
      "semver" = rec {
        crateName = "semver";
        version = "0.11.0";
        edition = "2015";
        sha256 = "1dn6064fipjymnmjccyjhb70miyvqvp08gvw1wbg8vbg4c8ay0gk";
        authors = [
          "Steve Klabnik <steve@steveklabnik.com>"
          "The Rust Project Developers"
        ];
        dependencies = [
          {
            name = "semver-parser";
            packageId = "semver-parser";
          }
        ];
        features = {
          "ci" = [ "serde" "diesel/sqlite" ];
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "semver-parser" = rec {
        crateName = "semver-parser";
        version = "0.10.2";
        edition = "2018";
        crateBin = [];
        sha256 = "1xqijhqhx3bn77xnl1mlcp032hz8nv7n2fbdacbdzq7rnzsvxc00";
        authors = [
          "Steve Klabnik <steve@steveklabnik.com>"
        ];
        dependencies = [
          {
            name = "pest";
            packageId = "pest";
          }
        ];

      };
      "serde" = rec {
        crateName = "serde";
        version = "1.0.147";
        edition = "2015";
        sha256 = "0rc9jj8bbhf3lkf07ln8kyljigyzc4kk90nzg4dc2gwqmsdxd4yi";
        authors = [
          "Erick Tryzelaar <erick.tryzelaar@gmail.com>"
          "David Tolnay <dtolnay@gmail.com>"
        ];
        features = {
          "default" = [ "std" ];
          "derive" = [ "serde_derive" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "serde_cbor" = rec {
        crateName = "serde_cbor";
        version = "0.11.2";
        edition = "2018";
        sha256 = "1xf1bq7ixha30914pd5jl3yw9v1x6car7xgrpimvfvs5vszjxvrb";
        authors = [
          "Pyfisch <pyfisch@posteo.org>"
          "Steven Fackler <sfackler@gmail.com>"
        ];
        dependencies = [
          {
            name = "half";
            packageId = "half";
          }
          {
            name = "serde";
            packageId = "serde";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "alloc" = [ "serde/alloc" ];
          "default" = [ "std" ];
          "std" = [ "serde/std" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "serde_derive" = rec {
        crateName = "serde_derive";
        version = "1.0.147";
        edition = "2015";
        sha256 = "0ln8rqbybpxmk4fvh6lgm75acs1d8x90fi44fhx3x77wm0n3c7ag";
        procMacro = true;
        authors = [
          "Erick Tryzelaar <erick.tryzelaar@gmail.com>"
          "David Tolnay <dtolnay@gmail.com>"
        ];
        dependencies = [
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
          }
          {
            name = "quote";
            packageId = "quote";
          }
          {
            name = "syn";
            packageId = "syn";
          }
        ];
        features = {
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "serde_json" = rec {
        crateName = "serde_json";
        version = "1.0.87";
        edition = "2018";
        sha256 = "0ibxrq43axvspv350wvx7w05l4s7b1gvaa0dysf6pmshn6vpgrvc";
        authors = [
          "Erick Tryzelaar <erick.tryzelaar@gmail.com>"
          "David Tolnay <dtolnay@gmail.com>"
        ];
        dependencies = [
          {
            name = "itoa";
            packageId = "itoa 1.0.4";
          }
          {
            name = "ryu";
            packageId = "ryu";
          }
          {
            name = "serde";
            packageId = "serde";
            usesDefaultFeatures = false;
          }
        ];
        devDependencies = [
          {
            name = "serde";
            packageId = "serde";
            features = [ "derive" ];
          }
        ];
        features = {
          "alloc" = [ "serde/alloc" ];
          "default" = [ "std" ];
          "preserve_order" = [ "indexmap" "std" ];
          "std" = [ "serde/std" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "smallvec" = rec {
        crateName = "smallvec";
        version = "1.10.0";
        edition = "2018";
        sha256 = "1q2k15fzxgwjpcdv3f323w24rbbfyv711ayz85ila12lg7zbw1x5";
        authors = [
          "The Servo Project Developers"
        ];
        features = {
          "const_new" = [ "const_generics" ];
        };
      };
      "strsim" = rec {
        crateName = "strsim";
        version = "0.8.0";
        edition = "2015";
        sha256 = "0sjsm7hrvjdifz661pjxq5w4hf190hx53fra8dfvamacvff139cf";
        authors = [
          "Danny Guo <dannyguo91@gmail.com>"
        ];

      };
      "syn" = rec {
        crateName = "syn";
        version = "1.0.103";
        edition = "2018";
        sha256 = "0pa4b6g938drphblgdhmjnzclp7gcbf4zdgkmfaxlfhk54i08r58";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];
        dependencies = [
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
            usesDefaultFeatures = false;
          }
          {
            name = "quote";
            packageId = "quote";
            optional = true;
            usesDefaultFeatures = false;
          }
          {
            name = "unicode-ident";
            packageId = "unicode-ident";
          }
        ];
        features = {
          "default" = [ "derive" "parsing" "printing" "clone-impls" "proc-macro" ];
          "printing" = [ "quote" ];
          "proc-macro" = [ "proc-macro2/proc-macro" "quote/proc-macro" ];
          "test" = [ "syn-test-suite/all-features" ];
        };
        resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "fold" "full" "parsing" "printing" "proc-macro" "quote" "visit" ];
      };
      "termcolor" = rec {
        crateName = "termcolor";
        version = "1.1.3";
        edition = "2018";
        sha256 = "0mbpflskhnz3jf312k50vn0hqbql8ga2rk0k79pkgchip4q4vcms";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "winapi-util";
            packageId = "winapi-util";
            target = { target, features }: (target."windows" or false);
          }
        ];

      };
      "termtree" = rec {
        crateName = "termtree";
        version = "0.2.4";
        edition = "2018";
        sha256 = "02y9lhad22p56y8pgwz04si2pd91nxcl5djmmall6v1vd2c9hzjh";

      };
      "textwrap" = rec {
        crateName = "textwrap";
        version = "0.11.0";
        edition = "2015";
        sha256 = "0q5hky03ik3y50s9sz25r438bc4nwhqc6dqwynv4wylc807n29nk";
        authors = [
          "Martin Geisler <martin@geisler.net>"
        ];
        dependencies = [
          {
            name = "unicode-width";
            packageId = "unicode-width";
          }
        ];

      };
      "thiserror" = rec {
        crateName = "thiserror";
        version = "1.0.37";
        edition = "2018";
        sha256 = "0gky83x4i87gd87w3fknnp920wvk9yycp7dgkf5h3jg364vb7phh";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];
        dependencies = [
          {
            name = "thiserror-impl";
            packageId = "thiserror-impl";
          }
        ];

      };
      "thiserror-impl" = rec {
        crateName = "thiserror-impl";
        version = "1.0.37";
        edition = "2018";
        sha256 = "1fydmpksd14x1mkc24zas01qjssz8q43sbn2ywl6n527dda1fbcq";
        procMacro = true;
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];
        dependencies = [
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
          }
          {
            name = "quote";
            packageId = "quote";
          }
          {
            name = "syn";
            packageId = "syn";
          }
        ];

      };
      "thread_local" = rec {
        crateName = "thread_local";
        version = "1.1.4";
        edition = "2018";
        sha256 = "1001bvz6a688wf3izcrh3jqrkiqaarf44wf08azm071ig1xw45jm";
        authors = [
          "Amanieu d'Antras <amanieu@gmail.com>"
        ];
        dependencies = [
          {
            name = "once_cell";
            packageId = "once_cell";
          }
        ];

      };
      "tinytemplate" = rec {
        crateName = "tinytemplate";
        version = "1.2.1";
        edition = "2015";
        sha256 = "1g5n77cqkdh9hy75zdb01adxn45mkh9y40wdr7l68xpz35gnnkdy";
        authors = [
          "Brook Heisler <brookheisler@gmail.com>"
        ];
        dependencies = [
          {
            name = "serde";
            packageId = "serde";
          }
          {
            name = "serde_json";
            packageId = "serde_json";
          }
        ];

      };
      "ucd-trie" = rec {
        crateName = "ucd-trie";
        version = "0.1.5";
        edition = "2018";
        sha256 = "10ggllapxq99cxxy179wbklmabj5fikm02233v4idf7djvcw8ycy";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        features = {
          "default" = [ "std" ];
        };
        resolvedDefaultFeatures = [ "std" ];
      };
      "unicode-ident" = rec {
        crateName = "unicode-ident";
        version = "1.0.5";
        edition = "2018";
        sha256 = "1wznr6ax3jl09vxkvj4a62vip2avfgif13js9sflkjg4b6fv7skc";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];

      };
      "unicode-width" = rec {
        crateName = "unicode-width";
        version = "0.1.10";
        edition = "2015";
        sha256 = "12vc3wv0qwg8rzcgb9bhaf5119dlmd6lmkhbfy1zfls6n7jx3vf0";
        authors = [
          "kwantam <kwantam@gmail.com>"
          "Manish Goregaokar <manishsmail@gmail.com>"
        ];
        features = {
          "rustc-dep-of-std" = [ "std" "core" "compiler_builtins" ];
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "unicode-xid" = rec {
        crateName = "unicode-xid";
        version = "0.2.4";
        edition = "2015";
        sha256 = "131dfzf7d8fsr1ivch34x42c2d1ik5ig3g78brxncnn0r1sdyqpr";
        authors = [
          "erick.tryzelaar <erick.tryzelaar@gmail.com>"
          "kwantam <kwantam@gmail.com>"
          "Manish Goregaokar <manishsmail@gmail.com>"
        ];
        features = {
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "vec_map" = rec {
        crateName = "vec_map";
        version = "0.8.2";
        edition = "2015";
        sha256 = "1481w9g1dw9rxp3l6snkdqihzyrd2f8vispzqmwjwsdyhw8xzggi";
        authors = [
          "Alex Crichton <alex@alexcrichton.com>"
          "Jorge Aparicio <japaricious@gmail.com>"
          "Alexis Beingessner <a.beingessner@gmail.com>"
          "Brian Anderson <>"
          "tbu- <>"
          "Manish Goregaokar <>"
          "Aaron Turon <aturon@mozilla.com>"
          "Adolfo Ochagavía <>"
          "Niko Matsakis <>"
          "Steven Fackler <>"
          "Chase Southwood <csouth3@illinois.edu>"
          "Eduard Burtescu <>"
          "Florian Wilkens <>"
          "Félix Raimundo <>"
          "Tibor Benke <>"
          "Markus Siemens <markus@m-siemens.de>"
          "Josh Branchaud <jbranchaud@gmail.com>"
          "Huon Wilson <dbau.pp@gmail.com>"
          "Corey Farwell <coref@rwell.org>"
          "Aaron Liblong <>"
          "Nick Cameron <nrc@ncameron.org>"
          "Patrick Walton <pcwalton@mimiga.net>"
          "Felix S Klock II <>"
          "Andrew Paseltiner <apaseltiner@gmail.com>"
          "Sean McArthur <sean.monstar@gmail.com>"
          "Vadim Petrochenkov <>"
        ];
        features = {
          "eders" = [ "serde" ];
        };
      };
      "walkdir" = rec {
        crateName = "walkdir";
        version = "2.3.2";
        edition = "2018";
        sha256 = "0mnszy33685v8y9js8mw6x2p3iddqs8vfj7n2dhqddnlbirz5340";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "same-file";
            packageId = "same-file";
          }
          {
            name = "winapi";
            packageId = "winapi";
            target = { target, features }: (target."windows" or false);
            features = [ "std" "winnt" ];
          }
          {
            name = "winapi-util";
            packageId = "winapi-util";
            target = { target, features }: (target."windows" or false);
          }
        ];

      };
      "wasm-bindgen" = rec {
        crateName = "wasm-bindgen";
        version = "0.2.83";
        edition = "2018";
        sha256 = "0s3ji0k8p261glnsxi5rkd34v2pv67h96blb29yf32zcxsngbyga";
        authors = [
          "The wasm-bindgen Developers"
        ];
        dependencies = [
          {
            name = "cfg-if";
            packageId = "cfg-if";
          }
          {
            name = "wasm-bindgen-macro";
            packageId = "wasm-bindgen-macro";
          }
        ];
        features = {
          "default" = [ "spans" "std" ];
          "enable-interning" = [ "std" ];
          "serde-serialize" = [ "serde" "serde_json" "std" ];
          "spans" = [ "wasm-bindgen-macro/spans" ];
          "strict-macro" = [ "wasm-bindgen-macro/strict-macro" ];
          "xxx_debug_only_print_generated_code" = [ "wasm-bindgen-macro/xxx_debug_only_print_generated_code" ];
        };
        resolvedDefaultFeatures = [ "default" "spans" "std" ];
      };
      "wasm-bindgen-backend" = rec {
        crateName = "wasm-bindgen-backend";
        version = "0.2.83";
        edition = "2018";
        sha256 = "0hhigjqrb31axh7jgmb5y8akdpxqx8gvjs6ja9xmbc3r4lrzp3sc";
        authors = [
          "The wasm-bindgen Developers"
        ];
        dependencies = [
          {
            name = "bumpalo";
            packageId = "bumpalo";
          }
          {
            name = "log";
            packageId = "log";
          }
          {
            name = "once_cell";
            packageId = "once_cell";
          }
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
          }
          {
            name = "quote";
            packageId = "quote";
          }
          {
            name = "syn";
            packageId = "syn";
            features = [ "full" ];
          }
          {
            name = "wasm-bindgen-shared";
            packageId = "wasm-bindgen-shared";
          }
        ];
        features = {
          "extra-traits" = [ "syn/extra-traits" ];
        };
        resolvedDefaultFeatures = [ "spans" ];
      };
      "wasm-bindgen-macro" = rec {
        crateName = "wasm-bindgen-macro";
        version = "0.2.83";
        edition = "2018";
        sha256 = "0468wshk7bp78mnglcpmrb6m4q7x2fp9pz6ybk3wpri683wy0aq5";
        procMacro = true;
        authors = [
          "The wasm-bindgen Developers"
        ];
        dependencies = [
          {
            name = "quote";
            packageId = "quote";
          }
          {
            name = "wasm-bindgen-macro-support";
            packageId = "wasm-bindgen-macro-support";
          }
        ];
        features = {
          "spans" = [ "wasm-bindgen-macro-support/spans" ];
          "strict-macro" = [ "wasm-bindgen-macro-support/strict-macro" ];
        };
        resolvedDefaultFeatures = [ "spans" ];
      };
      "wasm-bindgen-macro-support" = rec {
        crateName = "wasm-bindgen-macro-support";
        version = "0.2.83";
        edition = "2018";
        sha256 = "0g0rmawgkhfyfgjj2mvch7gvz1nzfnfmya0kgcq3xwn53l2hrg07";
        authors = [
          "The wasm-bindgen Developers"
        ];
        dependencies = [
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
          }
          {
            name = "quote";
            packageId = "quote";
          }
          {
            name = "syn";
            packageId = "syn";
            features = [ "visit" "full" ];
          }
          {
            name = "wasm-bindgen-backend";
            packageId = "wasm-bindgen-backend";
          }
          {
            name = "wasm-bindgen-shared";
            packageId = "wasm-bindgen-shared";
          }
        ];
        features = {
          "extra-traits" = [ "syn/extra-traits" ];
          "spans" = [ "wasm-bindgen-backend/spans" ];
        };
        resolvedDefaultFeatures = [ "spans" ];
      };
      "wasm-bindgen-shared" = rec {
        crateName = "wasm-bindgen-shared";
        version = "0.2.83";
        edition = "2018";
        sha256 = "0zzz9xfi3fp2n5ihhlq8ws7674a2ir2frvsd1d7yr4sxad2w0f0w";
        authors = [
          "The wasm-bindgen Developers"
        ];

      };
      "web-sys" = rec {
        crateName = "web-sys";
        version = "0.3.60";
        edition = "2018";
        sha256 = "03sic7x58vi5qz8qrcka21748kmdmwlvgiddsn7p4vp1idnr1nmw";
        authors = [
          "The wasm-bindgen Developers"
        ];
        dependencies = [
          {
            name = "js-sys";
            packageId = "js-sys";
          }
          {
            name = "wasm-bindgen";
            packageId = "wasm-bindgen";
          }
        ];
        features = {
          "AbortSignal" = [ "EventTarget" ];
          "AnalyserNode" = [ "AudioNode" "EventTarget" ];
          "Animation" = [ "EventTarget" ];
          "AnimationEvent" = [ "Event" ];
          "AnimationPlaybackEvent" = [ "Event" ];
          "Attr" = [ "EventTarget" "Node" ];
          "AudioBufferSourceNode" = [ "AudioNode" "AudioScheduledSourceNode" "EventTarget" ];
          "AudioContext" = [ "BaseAudioContext" "EventTarget" ];
          "AudioDestinationNode" = [ "AudioNode" "EventTarget" ];
          "AudioNode" = [ "EventTarget" ];
          "AudioProcessingEvent" = [ "Event" ];
          "AudioScheduledSourceNode" = [ "AudioNode" "EventTarget" ];
          "AudioStreamTrack" = [ "EventTarget" "MediaStreamTrack" ];
          "AudioTrackList" = [ "EventTarget" ];
          "AudioWorklet" = [ "Worklet" ];
          "AudioWorkletGlobalScope" = [ "WorkletGlobalScope" ];
          "AudioWorkletNode" = [ "AudioNode" "EventTarget" ];
          "AuthenticatorAssertionResponse" = [ "AuthenticatorResponse" ];
          "AuthenticatorAttestationResponse" = [ "AuthenticatorResponse" ];
          "BaseAudioContext" = [ "EventTarget" ];
          "BatteryManager" = [ "EventTarget" ];
          "BeforeUnloadEvent" = [ "Event" ];
          "BiquadFilterNode" = [ "AudioNode" "EventTarget" ];
          "BlobEvent" = [ "Event" ];
          "Bluetooth" = [ "EventTarget" ];
          "BluetoothAdvertisingEvent" = [ "Event" ];
          "BluetoothDevice" = [ "EventTarget" ];
          "BluetoothPermissionResult" = [ "EventTarget" "PermissionStatus" ];
          "BluetoothRemoteGattCharacteristic" = [ "EventTarget" ];
          "BluetoothRemoteGattService" = [ "EventTarget" ];
          "BroadcastChannel" = [ "EventTarget" ];
          "CanvasCaptureMediaStream" = [ "EventTarget" "MediaStream" ];
          "CdataSection" = [ "CharacterData" "EventTarget" "Node" "Text" ];
          "ChannelMergerNode" = [ "AudioNode" "EventTarget" ];
          "ChannelSplitterNode" = [ "AudioNode" "EventTarget" ];
          "CharacterData" = [ "EventTarget" "Node" ];
          "ChromeWorker" = [ "EventTarget" "Worker" ];
          "Clipboard" = [ "EventTarget" ];
          "ClipboardEvent" = [ "Event" ];
          "CloseEvent" = [ "Event" ];
          "Comment" = [ "CharacterData" "EventTarget" "Node" ];
          "CompositionEvent" = [ "Event" "UiEvent" ];
          "ConstantSourceNode" = [ "AudioNode" "AudioScheduledSourceNode" "EventTarget" ];
          "ConvolverNode" = [ "AudioNode" "EventTarget" ];
          "CssAnimation" = [ "Animation" "EventTarget" ];
          "CssConditionRule" = [ "CssGroupingRule" "CssRule" ];
          "CssCounterStyleRule" = [ "CssRule" ];
          "CssFontFaceRule" = [ "CssRule" ];
          "CssFontFeatureValuesRule" = [ "CssRule" ];
          "CssGroupingRule" = [ "CssRule" ];
          "CssImportRule" = [ "CssRule" ];
          "CssKeyframeRule" = [ "CssRule" ];
          "CssKeyframesRule" = [ "CssRule" ];
          "CssMediaRule" = [ "CssConditionRule" "CssGroupingRule" "CssRule" ];
          "CssNamespaceRule" = [ "CssRule" ];
          "CssPageRule" = [ "CssRule" ];
          "CssStyleRule" = [ "CssRule" ];
          "CssStyleSheet" = [ "StyleSheet" ];
          "CssSupportsRule" = [ "CssConditionRule" "CssGroupingRule" "CssRule" ];
          "CssTransition" = [ "Animation" "EventTarget" ];
          "CustomEvent" = [ "Event" ];
          "DedicatedWorkerGlobalScope" = [ "EventTarget" "WorkerGlobalScope" ];
          "DelayNode" = [ "AudioNode" "EventTarget" ];
          "DeviceLightEvent" = [ "Event" ];
          "DeviceMotionEvent" = [ "Event" ];
          "DeviceOrientationEvent" = [ "Event" ];
          "DeviceProximityEvent" = [ "Event" ];
          "Document" = [ "EventTarget" "Node" ];
          "DocumentFragment" = [ "EventTarget" "Node" ];
          "DocumentTimeline" = [ "AnimationTimeline" ];
          "DocumentType" = [ "EventTarget" "Node" ];
          "DomMatrix" = [ "DomMatrixReadOnly" ];
          "DomPoint" = [ "DomPointReadOnly" ];
          "DomRect" = [ "DomRectReadOnly" ];
          "DomRequest" = [ "EventTarget" ];
          "DragEvent" = [ "Event" "MouseEvent" "UiEvent" ];
          "DynamicsCompressorNode" = [ "AudioNode" "EventTarget" ];
          "Element" = [ "EventTarget" "Node" ];
          "ErrorEvent" = [ "Event" ];
          "EventSource" = [ "EventTarget" ];
          "ExtendableEvent" = [ "Event" ];
          "ExtendableMessageEvent" = [ "Event" "ExtendableEvent" ];
          "FetchEvent" = [ "Event" "ExtendableEvent" ];
          "FetchObserver" = [ "EventTarget" ];
          "File" = [ "Blob" ];
          "FileReader" = [ "EventTarget" ];
          "FileSystemDirectoryEntry" = [ "FileSystemEntry" ];
          "FileSystemFileEntry" = [ "FileSystemEntry" ];
          "FocusEvent" = [ "Event" "UiEvent" ];
          "FontFaceSet" = [ "EventTarget" ];
          "FontFaceSetLoadEvent" = [ "Event" ];
          "GainNode" = [ "AudioNode" "EventTarget" ];
          "GamepadAxisMoveEvent" = [ "Event" "GamepadEvent" ];
          "GamepadButtonEvent" = [ "Event" "GamepadEvent" ];
          "GamepadEvent" = [ "Event" ];
          "GpuDevice" = [ "EventTarget" ];
          "GpuOutOfMemoryError" = [ "GpuError" ];
          "GpuUncapturedErrorEvent" = [ "Event" ];
          "GpuValidationError" = [ "GpuError" ];
          "HashChangeEvent" = [ "Event" ];
          "Hid" = [ "EventTarget" ];
          "HidConnectionEvent" = [ "Event" ];
          "HidDevice" = [ "EventTarget" ];
          "HidInputReportEvent" = [ "Event" ];
          "HtmlAnchorElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlAreaElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlAudioElement" = [ "Element" "EventTarget" "HtmlElement" "HtmlMediaElement" "Node" ];
          "HtmlBaseElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlBodyElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlBrElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlButtonElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlCanvasElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlDListElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlDataElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlDataListElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlDetailsElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlDialogElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlDirectoryElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlDivElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlDocument" = [ "Document" "EventTarget" "Node" ];
          "HtmlElement" = [ "Element" "EventTarget" "Node" ];
          "HtmlEmbedElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlFieldSetElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlFontElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlFormControlsCollection" = [ "HtmlCollection" ];
          "HtmlFormElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlFrameElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlFrameSetElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlHeadElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlHeadingElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlHrElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlHtmlElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlIFrameElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlImageElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlInputElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlLabelElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlLegendElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlLiElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlLinkElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlMapElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlMediaElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlMenuElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlMenuItemElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlMetaElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlMeterElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlModElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlOListElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlObjectElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlOptGroupElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlOptionElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlOptionsCollection" = [ "HtmlCollection" ];
          "HtmlOutputElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlParagraphElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlParamElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlPictureElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlPreElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlProgressElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlQuoteElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlScriptElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlSelectElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlSlotElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlSourceElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlSpanElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlStyleElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlTableCaptionElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlTableCellElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlTableColElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlTableElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlTableRowElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlTableSectionElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlTemplateElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlTextAreaElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlTimeElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlTitleElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlTrackElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlUListElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlUnknownElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
          "HtmlVideoElement" = [ "Element" "EventTarget" "HtmlElement" "HtmlMediaElement" "Node" ];
          "IdbCursorWithValue" = [ "IdbCursor" ];
          "IdbDatabase" = [ "EventTarget" ];
          "IdbFileHandle" = [ "EventTarget" ];
          "IdbFileRequest" = [ "DomRequest" "EventTarget" ];
          "IdbLocaleAwareKeyRange" = [ "IdbKeyRange" ];
          "IdbMutableFile" = [ "EventTarget" ];
          "IdbOpenDbRequest" = [ "EventTarget" "IdbRequest" ];
          "IdbRequest" = [ "EventTarget" ];
          "IdbTransaction" = [ "EventTarget" ];
          "IdbVersionChangeEvent" = [ "Event" ];
          "IirFilterNode" = [ "AudioNode" "EventTarget" ];
          "ImageCaptureErrorEvent" = [ "Event" ];
          "ImageTrack" = [ "EventTarget" ];
          "InputEvent" = [ "Event" "UiEvent" ];
          "KeyboardEvent" = [ "Event" "UiEvent" ];
          "KeyframeEffect" = [ "AnimationEffect" ];
          "LocalMediaStream" = [ "EventTarget" "MediaStream" ];
          "MediaDevices" = [ "EventTarget" ];
          "MediaElementAudioSourceNode" = [ "AudioNode" "EventTarget" ];
          "MediaEncryptedEvent" = [ "Event" ];
          "MediaKeyError" = [ "Event" ];
          "MediaKeyMessageEvent" = [ "Event" ];
          "MediaKeySession" = [ "EventTarget" ];
          "MediaQueryList" = [ "EventTarget" ];
          "MediaQueryListEvent" = [ "Event" ];
          "MediaRecorder" = [ "EventTarget" ];
          "MediaRecorderErrorEvent" = [ "Event" ];
          "MediaSource" = [ "EventTarget" ];
          "MediaStream" = [ "EventTarget" ];
          "MediaStreamAudioDestinationNode" = [ "AudioNode" "EventTarget" ];
          "MediaStreamAudioSourceNode" = [ "AudioNode" "EventTarget" ];
          "MediaStreamEvent" = [ "Event" ];
          "MediaStreamTrack" = [ "EventTarget" ];
          "MediaStreamTrackEvent" = [ "Event" ];
          "MediaStreamTrackGenerator" = [ "EventTarget" "MediaStreamTrack" ];
          "MessageEvent" = [ "Event" ];
          "MessagePort" = [ "EventTarget" ];
          "MidiAccess" = [ "EventTarget" ];
          "MidiConnectionEvent" = [ "Event" ];
          "MidiInput" = [ "EventTarget" "MidiPort" ];
          "MidiMessageEvent" = [ "Event" ];
          "MidiOutput" = [ "EventTarget" "MidiPort" ];
          "MidiPort" = [ "EventTarget" ];
          "MouseEvent" = [ "Event" "UiEvent" ];
          "MouseScrollEvent" = [ "Event" "MouseEvent" "UiEvent" ];
          "MutationEvent" = [ "Event" ];
          "NetworkInformation" = [ "EventTarget" ];
          "Node" = [ "EventTarget" ];
          "Notification" = [ "EventTarget" ];
          "NotificationEvent" = [ "Event" "ExtendableEvent" ];
          "OfflineAudioCompletionEvent" = [ "Event" ];
          "OfflineAudioContext" = [ "BaseAudioContext" "EventTarget" ];
          "OfflineResourceList" = [ "EventTarget" ];
          "OffscreenCanvas" = [ "EventTarget" ];
          "OscillatorNode" = [ "AudioNode" "AudioScheduledSourceNode" "EventTarget" ];
          "PageTransitionEvent" = [ "Event" ];
          "PaintWorkletGlobalScope" = [ "WorkletGlobalScope" ];
          "PannerNode" = [ "AudioNode" "EventTarget" ];
          "PaymentMethodChangeEvent" = [ "Event" "PaymentRequestUpdateEvent" ];
          "PaymentRequestUpdateEvent" = [ "Event" ];
          "Performance" = [ "EventTarget" ];
          "PerformanceMark" = [ "PerformanceEntry" ];
          "PerformanceMeasure" = [ "PerformanceEntry" ];
          "PerformanceNavigationTiming" = [ "PerformanceEntry" "PerformanceResourceTiming" ];
          "PerformanceResourceTiming" = [ "PerformanceEntry" ];
          "PermissionStatus" = [ "EventTarget" ];
          "PointerEvent" = [ "Event" "MouseEvent" "UiEvent" ];
          "PopStateEvent" = [ "Event" ];
          "PopupBlockedEvent" = [ "Event" ];
          "PresentationAvailability" = [ "EventTarget" ];
          "PresentationConnection" = [ "EventTarget" ];
          "PresentationConnectionAvailableEvent" = [ "Event" ];
          "PresentationConnectionCloseEvent" = [ "Event" ];
          "PresentationConnectionList" = [ "EventTarget" ];
          "PresentationRequest" = [ "EventTarget" ];
          "ProcessingInstruction" = [ "CharacterData" "EventTarget" "Node" ];
          "ProgressEvent" = [ "Event" ];
          "PromiseRejectionEvent" = [ "Event" ];
          "PublicKeyCredential" = [ "Credential" ];
          "PushEvent" = [ "Event" "ExtendableEvent" ];
          "RadioNodeList" = [ "NodeList" ];
          "RtcDataChannel" = [ "EventTarget" ];
          "RtcDataChannelEvent" = [ "Event" ];
          "RtcPeerConnection" = [ "EventTarget" ];
          "RtcPeerConnectionIceEvent" = [ "Event" ];
          "RtcTrackEvent" = [ "Event" ];
          "RtcdtmfSender" = [ "EventTarget" ];
          "RtcdtmfToneChangeEvent" = [ "Event" ];
          "Screen" = [ "EventTarget" ];
          "ScreenOrientation" = [ "EventTarget" ];
          "ScriptProcessorNode" = [ "AudioNode" "EventTarget" ];
          "ScrollAreaEvent" = [ "Event" "UiEvent" ];
          "SecurityPolicyViolationEvent" = [ "Event" ];
          "ServiceWorker" = [ "EventTarget" ];
          "ServiceWorkerContainer" = [ "EventTarget" ];
          "ServiceWorkerGlobalScope" = [ "EventTarget" "WorkerGlobalScope" ];
          "ServiceWorkerRegistration" = [ "EventTarget" ];
          "ShadowRoot" = [ "DocumentFragment" "EventTarget" "Node" ];
          "SharedWorker" = [ "EventTarget" ];
          "SharedWorkerGlobalScope" = [ "EventTarget" "WorkerGlobalScope" ];
          "SourceBuffer" = [ "EventTarget" ];
          "SourceBufferList" = [ "EventTarget" ];
          "SpeechRecognition" = [ "EventTarget" ];
          "SpeechRecognitionError" = [ "Event" ];
          "SpeechRecognitionEvent" = [ "Event" ];
          "SpeechSynthesis" = [ "EventTarget" ];
          "SpeechSynthesisErrorEvent" = [ "Event" "SpeechSynthesisEvent" ];
          "SpeechSynthesisEvent" = [ "Event" ];
          "SpeechSynthesisUtterance" = [ "EventTarget" ];
          "StereoPannerNode" = [ "AudioNode" "EventTarget" ];
          "StorageEvent" = [ "Event" ];
          "SubmitEvent" = [ "Event" ];
          "SvgAnimateElement" = [ "Element" "EventTarget" "Node" "SvgAnimationElement" "SvgElement" ];
          "SvgAnimateMotionElement" = [ "Element" "EventTarget" "Node" "SvgAnimationElement" "SvgElement" ];
          "SvgAnimateTransformElement" = [ "Element" "EventTarget" "Node" "SvgAnimationElement" "SvgElement" ];
          "SvgAnimationElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgCircleElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
          "SvgClipPathElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgComponentTransferFunctionElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgDefsElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
          "SvgDescElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgElement" = [ "Element" "EventTarget" "Node" ];
          "SvgEllipseElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
          "SvgFilterElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgForeignObjectElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
          "SvgGeometryElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
          "SvgGradientElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgGraphicsElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgImageElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
          "SvgLineElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
          "SvgLinearGradientElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGradientElement" ];
          "SvgMarkerElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgMaskElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgMetadataElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgPathElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
          "SvgPathSegArcAbs" = [ "SvgPathSeg" ];
          "SvgPathSegArcRel" = [ "SvgPathSeg" ];
          "SvgPathSegClosePath" = [ "SvgPathSeg" ];
          "SvgPathSegCurvetoCubicAbs" = [ "SvgPathSeg" ];
          "SvgPathSegCurvetoCubicRel" = [ "SvgPathSeg" ];
          "SvgPathSegCurvetoCubicSmoothAbs" = [ "SvgPathSeg" ];
          "SvgPathSegCurvetoCubicSmoothRel" = [ "SvgPathSeg" ];
          "SvgPathSegCurvetoQuadraticAbs" = [ "SvgPathSeg" ];
          "SvgPathSegCurvetoQuadraticRel" = [ "SvgPathSeg" ];
          "SvgPathSegCurvetoQuadraticSmoothAbs" = [ "SvgPathSeg" ];
          "SvgPathSegCurvetoQuadraticSmoothRel" = [ "SvgPathSeg" ];
          "SvgPathSegLinetoAbs" = [ "SvgPathSeg" ];
          "SvgPathSegLinetoHorizontalAbs" = [ "SvgPathSeg" ];
          "SvgPathSegLinetoHorizontalRel" = [ "SvgPathSeg" ];
          "SvgPathSegLinetoRel" = [ "SvgPathSeg" ];
          "SvgPathSegLinetoVerticalAbs" = [ "SvgPathSeg" ];
          "SvgPathSegLinetoVerticalRel" = [ "SvgPathSeg" ];
          "SvgPathSegMovetoAbs" = [ "SvgPathSeg" ];
          "SvgPathSegMovetoRel" = [ "SvgPathSeg" ];
          "SvgPatternElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgPolygonElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
          "SvgPolylineElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
          "SvgRadialGradientElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGradientElement" ];
          "SvgRectElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
          "SvgScriptElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgSetElement" = [ "Element" "EventTarget" "Node" "SvgAnimationElement" "SvgElement" ];
          "SvgStopElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgStyleElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgSwitchElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
          "SvgSymbolElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgTextContentElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
          "SvgTextElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" "SvgTextContentElement" "SvgTextPositioningElement" ];
          "SvgTextPathElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" "SvgTextContentElement" ];
          "SvgTextPositioningElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" "SvgTextContentElement" ];
          "SvgTitleElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgUseElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
          "SvgViewElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgaElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
          "SvgfeBlendElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeColorMatrixElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeComponentTransferElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeCompositeElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeConvolveMatrixElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeDiffuseLightingElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeDisplacementMapElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeDistantLightElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeDropShadowElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeFloodElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeFuncAElement" = [ "Element" "EventTarget" "Node" "SvgComponentTransferFunctionElement" "SvgElement" ];
          "SvgfeFuncBElement" = [ "Element" "EventTarget" "Node" "SvgComponentTransferFunctionElement" "SvgElement" ];
          "SvgfeFuncGElement" = [ "Element" "EventTarget" "Node" "SvgComponentTransferFunctionElement" "SvgElement" ];
          "SvgfeFuncRElement" = [ "Element" "EventTarget" "Node" "SvgComponentTransferFunctionElement" "SvgElement" ];
          "SvgfeGaussianBlurElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeImageElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeMergeElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeMergeNodeElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeMorphologyElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeOffsetElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfePointLightElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeSpecularLightingElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeSpotLightElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeTileElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgfeTurbulenceElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvggElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
          "SvgmPathElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
          "SvgsvgElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
          "SvgtSpanElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" "SvgTextContentElement" "SvgTextPositioningElement" ];
          "TcpServerSocket" = [ "EventTarget" ];
          "TcpServerSocketEvent" = [ "Event" ];
          "TcpSocket" = [ "EventTarget" ];
          "TcpSocketErrorEvent" = [ "Event" ];
          "TcpSocketEvent" = [ "Event" ];
          "Text" = [ "CharacterData" "EventTarget" "Node" ];
          "TextTrack" = [ "EventTarget" ];
          "TextTrackCue" = [ "EventTarget" ];
          "TextTrackList" = [ "EventTarget" ];
          "TimeEvent" = [ "Event" ];
          "TouchEvent" = [ "Event" "UiEvent" ];
          "TrackEvent" = [ "Event" ];
          "TransitionEvent" = [ "Event" ];
          "UiEvent" = [ "Event" ];
          "Usb" = [ "EventTarget" ];
          "UsbConnectionEvent" = [ "Event" ];
          "UsbPermissionResult" = [ "EventTarget" "PermissionStatus" ];
          "UserProximityEvent" = [ "Event" ];
          "ValueEvent" = [ "Event" ];
          "VideoStreamTrack" = [ "EventTarget" "MediaStreamTrack" ];
          "VideoTrackList" = [ "EventTarget" ];
          "VrDisplay" = [ "EventTarget" ];
          "VttCue" = [ "EventTarget" "TextTrackCue" ];
          "WakeLockSentinel" = [ "EventTarget" ];
          "WaveShaperNode" = [ "AudioNode" "EventTarget" ];
          "WebGlContextEvent" = [ "Event" ];
          "WebKitCssMatrix" = [ "DomMatrix" "DomMatrixReadOnly" ];
          "WebSocket" = [ "EventTarget" ];
          "WheelEvent" = [ "Event" "MouseEvent" "UiEvent" ];
          "Window" = [ "EventTarget" ];
          "WindowClient" = [ "Client" ];
          "Worker" = [ "EventTarget" ];
          "WorkerDebuggerGlobalScope" = [ "EventTarget" ];
          "WorkerGlobalScope" = [ "EventTarget" ];
          "XmlDocument" = [ "Document" "EventTarget" "Node" ];
          "XmlHttpRequest" = [ "EventTarget" "XmlHttpRequestEventTarget" ];
          "XmlHttpRequestEventTarget" = [ "EventTarget" ];
          "XmlHttpRequestUpload" = [ "EventTarget" "XmlHttpRequestEventTarget" ];
          "XrBoundedReferenceSpace" = [ "EventTarget" "XrReferenceSpace" "XrSpace" ];
          "XrInputSourceEvent" = [ "Event" ];
          "XrInputSourcesChangeEvent" = [ "Event" ];
          "XrLayer" = [ "EventTarget" ];
          "XrPermissionStatus" = [ "EventTarget" "PermissionStatus" ];
          "XrReferenceSpace" = [ "EventTarget" "XrSpace" ];
          "XrReferenceSpaceEvent" = [ "Event" ];
          "XrSession" = [ "EventTarget" ];
          "XrSessionEvent" = [ "Event" ];
          "XrSpace" = [ "EventTarget" ];
          "XrSystem" = [ "EventTarget" ];
          "XrViewerPose" = [ "XrPose" ];
          "XrWebGlLayer" = [ "EventTarget" "XrLayer" ];
        };
        resolvedDefaultFeatures = [ "CanvasRenderingContext2d" "Document" "DomRect" "DomRectReadOnly" "Element" "EventTarget" "HtmlCanvasElement" "HtmlElement" "Node" "Window" ];
      };
      "winapi" = rec {
        crateName = "winapi";
        version = "0.3.9";
        edition = "2015";
        sha256 = "06gl025x418lchw1wxj64ycr7gha83m44cjr5sarhynd9xkrm0sw";
        authors = [
          "Peter Atashian <retep998@gmail.com>"
        ];
        dependencies = [
          {
            name = "winapi-i686-pc-windows-gnu";
            packageId = "winapi-i686-pc-windows-gnu";
            target = { target, features }: (stdenv.hostPlatform.config == "i686-pc-windows-gnu");
          }
          {
            name = "winapi-x86_64-pc-windows-gnu";
            packageId = "winapi-x86_64-pc-windows-gnu";
            target = { target, features }: (stdenv.hostPlatform.config == "x86_64-pc-windows-gnu");
          }
        ];
        features = {
          "debug" = [ "impl-debug" ];
        };
        resolvedDefaultFeatures = [ "consoleapi" "errhandlingapi" "fileapi" "handleapi" "minwinbase" "minwindef" "processenv" "std" "winbase" "wincon" "winerror" "winnt" ];
      };
      "winapi-i686-pc-windows-gnu" = rec {
        crateName = "winapi-i686-pc-windows-gnu";
        version = "0.4.0";
        edition = "2015";
        sha256 = "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc";
        authors = [
          "Peter Atashian <retep998@gmail.com>"
        ];

      };
      "winapi-util" = rec {
        crateName = "winapi-util";
        version = "0.1.5";
        edition = "2018";
        sha256 = "0y71bp7f6d536czj40dhqk0d55wfbbwqfp2ymqf1an5ibgl6rv3h";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "winapi";
            packageId = "winapi";
            target = { target, features }: (target."windows" or false);
            features = [ "std" "consoleapi" "errhandlingapi" "fileapi" "minwindef" "processenv" "winbase" "wincon" "winerror" "winnt" ];
          }
        ];

      };
      "winapi-x86_64-pc-windows-gnu" = rec {
        crateName = "winapi-x86_64-pc-windows-gnu";
        version = "0.4.0";
        edition = "2015";
        sha256 = "0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki";
        authors = [
          "Peter Atashian <retep998@gmail.com>"
        ];

      };
      "windows-sys" = rec {
        crateName = "windows-sys";
        version = "0.42.0";
        edition = "2018";
        sha256 = "19waf8aryvyq9pzk0gamgfwjycgzk4gnrazpfvv171cby0h1hgjs";
        authors = [
          "Microsoft"
        ];
        dependencies = [
          {
            name = "windows_aarch64_gnullvm";
            packageId = "windows_aarch64_gnullvm";
            target = { target, features }: (stdenv.hostPlatform.config == "aarch64-pc-windows-gnullvm");
          }
          {
            name = "windows_aarch64_msvc";
            packageId = "windows_aarch64_msvc";
            target = { target, features }: (stdenv.hostPlatform.config == "aarch64-pc-windows-msvc");
          }
          {
            name = "windows_aarch64_msvc";
            packageId = "windows_aarch64_msvc";
            target = { target, features }: (stdenv.hostPlatform.config == "aarch64-uwp-windows-msvc");
          }
          {
            name = "windows_i686_gnu";
            packageId = "windows_i686_gnu";
            target = { target, features }: (stdenv.hostPlatform.config == "i686-pc-windows-gnu");
          }
          {
            name = "windows_i686_gnu";
            packageId = "windows_i686_gnu";
            target = { target, features }: (stdenv.hostPlatform.config == "i686-uwp-windows-gnu");
          }
          {
            name = "windows_i686_msvc";
            packageId = "windows_i686_msvc";
            target = { target, features }: (stdenv.hostPlatform.config == "i686-pc-windows-msvc");
          }
          {
            name = "windows_i686_msvc";
            packageId = "windows_i686_msvc";
            target = { target, features }: (stdenv.hostPlatform.config == "i686-uwp-windows-msvc");
          }
          {
            name = "windows_x86_64_gnu";
            packageId = "windows_x86_64_gnu";
            target = { target, features }: (stdenv.hostPlatform.config == "x86_64-pc-windows-gnu");
          }
          {
            name = "windows_x86_64_gnu";
            packageId = "windows_x86_64_gnu";
            target = { target, features }: (stdenv.hostPlatform.config == "x86_64-uwp-windows-gnu");
          }
          {
            name = "windows_x86_64_gnullvm";
            packageId = "windows_x86_64_gnullvm";
            target = { target, features }: (stdenv.hostPlatform.config == "x86_64-pc-windows-gnullvm");
          }
          {
            name = "windows_x86_64_msvc";
            packageId = "windows_x86_64_msvc";
            target = { target, features }: (stdenv.hostPlatform.config == "x86_64-pc-windows-msvc");
          }
          {
            name = "windows_x86_64_msvc";
            packageId = "windows_x86_64_msvc";
            target = { target, features }: (stdenv.hostPlatform.config == "x86_64-uwp-windows-msvc");
          }
        ];
        features = {
          "Win32_AI" = [ "Win32" ];
          "Win32_AI_MachineLearning" = [ "Win32_AI" ];
          "Win32_AI_MachineLearning_DirectML" = [ "Win32_AI_MachineLearning" ];
          "Win32_AI_MachineLearning_WinML" = [ "Win32_AI_MachineLearning" ];
          "Win32_Data" = [ "Win32" ];
          "Win32_Data_HtmlHelp" = [ "Win32_Data" ];
          "Win32_Data_RightsManagement" = [ "Win32_Data" ];
          "Win32_Data_Xml" = [ "Win32_Data" ];
          "Win32_Data_Xml_MsXml" = [ "Win32_Data_Xml" ];
          "Win32_Data_Xml_XmlLite" = [ "Win32_Data_Xml" ];
          "Win32_Devices" = [ "Win32" ];
          "Win32_Devices_AllJoyn" = [ "Win32_Devices" ];
          "Win32_Devices_BiometricFramework" = [ "Win32_Devices" ];
          "Win32_Devices_Bluetooth" = [ "Win32_Devices" ];
          "Win32_Devices_Communication" = [ "Win32_Devices" ];
          "Win32_Devices_DeviceAccess" = [ "Win32_Devices" ];
          "Win32_Devices_DeviceAndDriverInstallation" = [ "Win32_Devices" ];
          "Win32_Devices_DeviceQuery" = [ "Win32_Devices" ];
          "Win32_Devices_Display" = [ "Win32_Devices" ];
          "Win32_Devices_Enumeration" = [ "Win32_Devices" ];
          "Win32_Devices_Enumeration_Pnp" = [ "Win32_Devices_Enumeration" ];
          "Win32_Devices_Fax" = [ "Win32_Devices" ];
          "Win32_Devices_FunctionDiscovery" = [ "Win32_Devices" ];
          "Win32_Devices_Geolocation" = [ "Win32_Devices" ];
          "Win32_Devices_HumanInterfaceDevice" = [ "Win32_Devices" ];
          "Win32_Devices_ImageAcquisition" = [ "Win32_Devices" ];
          "Win32_Devices_PortableDevices" = [ "Win32_Devices" ];
          "Win32_Devices_Properties" = [ "Win32_Devices" ];
          "Win32_Devices_Pwm" = [ "Win32_Devices" ];
          "Win32_Devices_Sensors" = [ "Win32_Devices" ];
          "Win32_Devices_SerialCommunication" = [ "Win32_Devices" ];
          "Win32_Devices_Tapi" = [ "Win32_Devices" ];
          "Win32_Devices_Usb" = [ "Win32_Devices" ];
          "Win32_Devices_WebServicesOnDevices" = [ "Win32_Devices" ];
          "Win32_Foundation" = [ "Win32" ];
          "Win32_Gaming" = [ "Win32" ];
          "Win32_Globalization" = [ "Win32" ];
          "Win32_Graphics" = [ "Win32" ];
          "Win32_Graphics_CompositionSwapchain" = [ "Win32_Graphics" ];
          "Win32_Graphics_DXCore" = [ "Win32_Graphics" ];
          "Win32_Graphics_Direct2D" = [ "Win32_Graphics" ];
          "Win32_Graphics_Direct2D_Common" = [ "Win32_Graphics_Direct2D" ];
          "Win32_Graphics_Direct3D" = [ "Win32_Graphics" ];
          "Win32_Graphics_Direct3D10" = [ "Win32_Graphics" ];
          "Win32_Graphics_Direct3D11" = [ "Win32_Graphics" ];
          "Win32_Graphics_Direct3D11on12" = [ "Win32_Graphics" ];
          "Win32_Graphics_Direct3D12" = [ "Win32_Graphics" ];
          "Win32_Graphics_Direct3D9" = [ "Win32_Graphics" ];
          "Win32_Graphics_Direct3D9on12" = [ "Win32_Graphics" ];
          "Win32_Graphics_Direct3D_Dxc" = [ "Win32_Graphics_Direct3D" ];
          "Win32_Graphics_Direct3D_Fxc" = [ "Win32_Graphics_Direct3D" ];
          "Win32_Graphics_DirectComposition" = [ "Win32_Graphics" ];
          "Win32_Graphics_DirectDraw" = [ "Win32_Graphics" ];
          "Win32_Graphics_DirectManipulation" = [ "Win32_Graphics" ];
          "Win32_Graphics_DirectWrite" = [ "Win32_Graphics" ];
          "Win32_Graphics_Dwm" = [ "Win32_Graphics" ];
          "Win32_Graphics_Dxgi" = [ "Win32_Graphics" ];
          "Win32_Graphics_Dxgi_Common" = [ "Win32_Graphics_Dxgi" ];
          "Win32_Graphics_Gdi" = [ "Win32_Graphics" ];
          "Win32_Graphics_Hlsl" = [ "Win32_Graphics" ];
          "Win32_Graphics_Imaging" = [ "Win32_Graphics" ];
          "Win32_Graphics_Imaging_D2D" = [ "Win32_Graphics_Imaging" ];
          "Win32_Graphics_OpenGL" = [ "Win32_Graphics" ];
          "Win32_Graphics_Printing" = [ "Win32_Graphics" ];
          "Win32_Graphics_Printing_PrintTicket" = [ "Win32_Graphics_Printing" ];
          "Win32_Management" = [ "Win32" ];
          "Win32_Management_MobileDeviceManagementRegistration" = [ "Win32_Management" ];
          "Win32_Media" = [ "Win32" ];
          "Win32_Media_Audio" = [ "Win32_Media" ];
          "Win32_Media_Audio_Apo" = [ "Win32_Media_Audio" ];
          "Win32_Media_Audio_DirectMusic" = [ "Win32_Media_Audio" ];
          "Win32_Media_Audio_DirectSound" = [ "Win32_Media_Audio" ];
          "Win32_Media_Audio_Endpoints" = [ "Win32_Media_Audio" ];
          "Win32_Media_Audio_XAudio2" = [ "Win32_Media_Audio" ];
          "Win32_Media_DeviceManager" = [ "Win32_Media" ];
          "Win32_Media_DirectShow" = [ "Win32_Media" ];
          "Win32_Media_DirectShow_Xml" = [ "Win32_Media_DirectShow" ];
          "Win32_Media_DxMediaObjects" = [ "Win32_Media" ];
          "Win32_Media_KernelStreaming" = [ "Win32_Media" ];
          "Win32_Media_LibrarySharingServices" = [ "Win32_Media" ];
          "Win32_Media_MediaFoundation" = [ "Win32_Media" ];
          "Win32_Media_MediaPlayer" = [ "Win32_Media" ];
          "Win32_Media_Multimedia" = [ "Win32_Media" ];
          "Win32_Media_PictureAcquisition" = [ "Win32_Media" ];
          "Win32_Media_Speech" = [ "Win32_Media" ];
          "Win32_Media_Streaming" = [ "Win32_Media" ];
          "Win32_Media_WindowsMediaFormat" = [ "Win32_Media" ];
          "Win32_NetworkManagement" = [ "Win32" ];
          "Win32_NetworkManagement_Dhcp" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_Dns" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_InternetConnectionWizard" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_IpHelper" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_MobileBroadband" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_Multicast" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_Ndis" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_NetBios" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_NetManagement" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_NetShell" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_NetworkDiagnosticsFramework" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_NetworkPolicyServer" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_P2P" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_QoS" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_Rras" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_Snmp" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_WNet" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_WebDav" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_WiFi" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_WindowsConnectNow" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_WindowsConnectionManager" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_WindowsFilteringPlatform" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_WindowsFirewall" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_WindowsNetworkVirtualization" = [ "Win32_NetworkManagement" ];
          "Win32_Networking" = [ "Win32" ];
          "Win32_Networking_ActiveDirectory" = [ "Win32_Networking" ];
          "Win32_Networking_BackgroundIntelligentTransferService" = [ "Win32_Networking" ];
          "Win32_Networking_Clustering" = [ "Win32_Networking" ];
          "Win32_Networking_HttpServer" = [ "Win32_Networking" ];
          "Win32_Networking_Ldap" = [ "Win32_Networking" ];
          "Win32_Networking_NetworkListManager" = [ "Win32_Networking" ];
          "Win32_Networking_RemoteDifferentialCompression" = [ "Win32_Networking" ];
          "Win32_Networking_WebSocket" = [ "Win32_Networking" ];
          "Win32_Networking_WinHttp" = [ "Win32_Networking" ];
          "Win32_Networking_WinInet" = [ "Win32_Networking" ];
          "Win32_Networking_WinSock" = [ "Win32_Networking" ];
          "Win32_Networking_WindowsWebServices" = [ "Win32_Networking" ];
          "Win32_Security" = [ "Win32" ];
          "Win32_Security_AppLocker" = [ "Win32_Security" ];
          "Win32_Security_Authentication" = [ "Win32_Security" ];
          "Win32_Security_Authentication_Identity" = [ "Win32_Security_Authentication" ];
          "Win32_Security_Authentication_Identity_Provider" = [ "Win32_Security_Authentication_Identity" ];
          "Win32_Security_Authorization" = [ "Win32_Security" ];
          "Win32_Security_Authorization_UI" = [ "Win32_Security_Authorization" ];
          "Win32_Security_ConfigurationSnapin" = [ "Win32_Security" ];
          "Win32_Security_Credentials" = [ "Win32_Security" ];
          "Win32_Security_Cryptography" = [ "Win32_Security" ];
          "Win32_Security_Cryptography_Catalog" = [ "Win32_Security_Cryptography" ];
          "Win32_Security_Cryptography_Certificates" = [ "Win32_Security_Cryptography" ];
          "Win32_Security_Cryptography_Sip" = [ "Win32_Security_Cryptography" ];
          "Win32_Security_Cryptography_UI" = [ "Win32_Security_Cryptography" ];
          "Win32_Security_DiagnosticDataQuery" = [ "Win32_Security" ];
          "Win32_Security_DirectoryServices" = [ "Win32_Security" ];
          "Win32_Security_EnterpriseData" = [ "Win32_Security" ];
          "Win32_Security_ExtensibleAuthenticationProtocol" = [ "Win32_Security" ];
          "Win32_Security_Isolation" = [ "Win32_Security" ];
          "Win32_Security_LicenseProtection" = [ "Win32_Security" ];
          "Win32_Security_NetworkAccessProtection" = [ "Win32_Security" ];
          "Win32_Security_Tpm" = [ "Win32_Security" ];
          "Win32_Security_WinTrust" = [ "Win32_Security" ];
          "Win32_Security_WinWlx" = [ "Win32_Security" ];
          "Win32_Storage" = [ "Win32" ];
          "Win32_Storage_Cabinets" = [ "Win32_Storage" ];
          "Win32_Storage_CloudFilters" = [ "Win32_Storage" ];
          "Win32_Storage_Compression" = [ "Win32_Storage" ];
          "Win32_Storage_DataDeduplication" = [ "Win32_Storage" ];
          "Win32_Storage_DistributedFileSystem" = [ "Win32_Storage" ];
          "Win32_Storage_EnhancedStorage" = [ "Win32_Storage" ];
          "Win32_Storage_FileHistory" = [ "Win32_Storage" ];
          "Win32_Storage_FileServerResourceManager" = [ "Win32_Storage" ];
          "Win32_Storage_FileSystem" = [ "Win32_Storage" ];
          "Win32_Storage_Imapi" = [ "Win32_Storage" ];
          "Win32_Storage_IndexServer" = [ "Win32_Storage" ];
          "Win32_Storage_InstallableFileSystems" = [ "Win32_Storage" ];
          "Win32_Storage_IscsiDisc" = [ "Win32_Storage" ];
          "Win32_Storage_Jet" = [ "Win32_Storage" ];
          "Win32_Storage_OfflineFiles" = [ "Win32_Storage" ];
          "Win32_Storage_OperationRecorder" = [ "Win32_Storage" ];
          "Win32_Storage_Packaging" = [ "Win32_Storage" ];
          "Win32_Storage_Packaging_Appx" = [ "Win32_Storage_Packaging" ];
          "Win32_Storage_Packaging_Opc" = [ "Win32_Storage_Packaging" ];
          "Win32_Storage_ProjectedFileSystem" = [ "Win32_Storage" ];
          "Win32_Storage_StructuredStorage" = [ "Win32_Storage" ];
          "Win32_Storage_Vhd" = [ "Win32_Storage" ];
          "Win32_Storage_VirtualDiskService" = [ "Win32_Storage" ];
          "Win32_Storage_Vss" = [ "Win32_Storage" ];
          "Win32_Storage_Xps" = [ "Win32_Storage" ];
          "Win32_Storage_Xps_Printing" = [ "Win32_Storage_Xps" ];
          "Win32_System" = [ "Win32" ];
          "Win32_System_AddressBook" = [ "Win32_System" ];
          "Win32_System_Antimalware" = [ "Win32_System" ];
          "Win32_System_ApplicationInstallationAndServicing" = [ "Win32_System" ];
          "Win32_System_ApplicationVerifier" = [ "Win32_System" ];
          "Win32_System_AssessmentTool" = [ "Win32_System" ];
          "Win32_System_Com" = [ "Win32_System" ];
          "Win32_System_Com_CallObj" = [ "Win32_System_Com" ];
          "Win32_System_Com_ChannelCredentials" = [ "Win32_System_Com" ];
          "Win32_System_Com_Events" = [ "Win32_System_Com" ];
          "Win32_System_Com_Marshal" = [ "Win32_System_Com" ];
          "Win32_System_Com_StructuredStorage" = [ "Win32_System_Com" ];
          "Win32_System_Com_UI" = [ "Win32_System_Com" ];
          "Win32_System_Com_Urlmon" = [ "Win32_System_Com" ];
          "Win32_System_ComponentServices" = [ "Win32_System" ];
          "Win32_System_Console" = [ "Win32_System" ];
          "Win32_System_Contacts" = [ "Win32_System" ];
          "Win32_System_CorrelationVector" = [ "Win32_System" ];
          "Win32_System_DataExchange" = [ "Win32_System" ];
          "Win32_System_DeploymentServices" = [ "Win32_System" ];
          "Win32_System_DesktopSharing" = [ "Win32_System" ];
          "Win32_System_DeveloperLicensing" = [ "Win32_System" ];
          "Win32_System_Diagnostics" = [ "Win32_System" ];
          "Win32_System_Diagnostics_Ceip" = [ "Win32_System_Diagnostics" ];
          "Win32_System_Diagnostics_Debug" = [ "Win32_System_Diagnostics" ];
          "Win32_System_Diagnostics_Etw" = [ "Win32_System_Diagnostics" ];
          "Win32_System_Diagnostics_ProcessSnapshotting" = [ "Win32_System_Diagnostics" ];
          "Win32_System_Diagnostics_ToolHelp" = [ "Win32_System_Diagnostics" ];
          "Win32_System_DistributedTransactionCoordinator" = [ "Win32_System" ];
          "Win32_System_Environment" = [ "Win32_System" ];
          "Win32_System_ErrorReporting" = [ "Win32_System" ];
          "Win32_System_EventCollector" = [ "Win32_System" ];
          "Win32_System_EventLog" = [ "Win32_System" ];
          "Win32_System_EventNotificationService" = [ "Win32_System" ];
          "Win32_System_GroupPolicy" = [ "Win32_System" ];
          "Win32_System_HostCompute" = [ "Win32_System" ];
          "Win32_System_HostComputeNetwork" = [ "Win32_System" ];
          "Win32_System_HostComputeSystem" = [ "Win32_System" ];
          "Win32_System_Hypervisor" = [ "Win32_System" ];
          "Win32_System_IO" = [ "Win32_System" ];
          "Win32_System_Iis" = [ "Win32_System" ];
          "Win32_System_Ioctl" = [ "Win32_System" ];
          "Win32_System_JobObjects" = [ "Win32_System" ];
          "Win32_System_Js" = [ "Win32_System" ];
          "Win32_System_Kernel" = [ "Win32_System" ];
          "Win32_System_LibraryLoader" = [ "Win32_System" ];
          "Win32_System_Mailslots" = [ "Win32_System" ];
          "Win32_System_Mapi" = [ "Win32_System" ];
          "Win32_System_Memory" = [ "Win32_System" ];
          "Win32_System_Memory_NonVolatile" = [ "Win32_System_Memory" ];
          "Win32_System_MessageQueuing" = [ "Win32_System" ];
          "Win32_System_MixedReality" = [ "Win32_System" ];
          "Win32_System_Mmc" = [ "Win32_System" ];
          "Win32_System_Ole" = [ "Win32_System" ];
          "Win32_System_ParentalControls" = [ "Win32_System" ];
          "Win32_System_PasswordManagement" = [ "Win32_System" ];
          "Win32_System_Performance" = [ "Win32_System" ];
          "Win32_System_Performance_HardwareCounterProfiling" = [ "Win32_System_Performance" ];
          "Win32_System_Pipes" = [ "Win32_System" ];
          "Win32_System_Power" = [ "Win32_System" ];
          "Win32_System_ProcessStatus" = [ "Win32_System" ];
          "Win32_System_RealTimeCommunications" = [ "Win32_System" ];
          "Win32_System_Recovery" = [ "Win32_System" ];
          "Win32_System_Registry" = [ "Win32_System" ];
          "Win32_System_RemoteAssistance" = [ "Win32_System" ];
          "Win32_System_RemoteDesktop" = [ "Win32_System" ];
          "Win32_System_RemoteManagement" = [ "Win32_System" ];
          "Win32_System_RestartManager" = [ "Win32_System" ];
          "Win32_System_Restore" = [ "Win32_System" ];
          "Win32_System_Rpc" = [ "Win32_System" ];
          "Win32_System_Search" = [ "Win32_System" ];
          "Win32_System_Search_Common" = [ "Win32_System_Search" ];
          "Win32_System_SecurityCenter" = [ "Win32_System" ];
          "Win32_System_ServerBackup" = [ "Win32_System" ];
          "Win32_System_Services" = [ "Win32_System" ];
          "Win32_System_SettingsManagementInfrastructure" = [ "Win32_System" ];
          "Win32_System_SetupAndMigration" = [ "Win32_System" ];
          "Win32_System_Shutdown" = [ "Win32_System" ];
          "Win32_System_SideShow" = [ "Win32_System" ];
          "Win32_System_StationsAndDesktops" = [ "Win32_System" ];
          "Win32_System_SubsystemForLinux" = [ "Win32_System" ];
          "Win32_System_SystemInformation" = [ "Win32_System" ];
          "Win32_System_SystemServices" = [ "Win32_System" ];
          "Win32_System_TaskScheduler" = [ "Win32_System" ];
          "Win32_System_Threading" = [ "Win32_System" ];
          "Win32_System_Time" = [ "Win32_System" ];
          "Win32_System_TpmBaseServices" = [ "Win32_System" ];
          "Win32_System_TransactionServer" = [ "Win32_System" ];
          "Win32_System_UpdateAgent" = [ "Win32_System" ];
          "Win32_System_UpdateAssessment" = [ "Win32_System" ];
          "Win32_System_UserAccessLogging" = [ "Win32_System" ];
          "Win32_System_VirtualDosMachines" = [ "Win32_System" ];
          "Win32_System_WinRT" = [ "Win32_System" ];
          "Win32_System_WinRT_AllJoyn" = [ "Win32_System_WinRT" ];
          "Win32_System_WinRT_Composition" = [ "Win32_System_WinRT" ];
          "Win32_System_WinRT_CoreInputView" = [ "Win32_System_WinRT" ];
          "Win32_System_WinRT_Direct3D11" = [ "Win32_System_WinRT" ];
          "Win32_System_WinRT_Display" = [ "Win32_System_WinRT" ];
          "Win32_System_WinRT_Graphics" = [ "Win32_System_WinRT" ];
          "Win32_System_WinRT_Graphics_Capture" = [ "Win32_System_WinRT_Graphics" ];
          "Win32_System_WinRT_Graphics_Direct2D" = [ "Win32_System_WinRT_Graphics" ];
          "Win32_System_WinRT_Graphics_Imaging" = [ "Win32_System_WinRT_Graphics" ];
          "Win32_System_WinRT_Holographic" = [ "Win32_System_WinRT" ];
          "Win32_System_WinRT_Isolation" = [ "Win32_System_WinRT" ];
          "Win32_System_WinRT_ML" = [ "Win32_System_WinRT" ];
          "Win32_System_WinRT_Media" = [ "Win32_System_WinRT" ];
          "Win32_System_WinRT_Pdf" = [ "Win32_System_WinRT" ];
          "Win32_System_WinRT_Printing" = [ "Win32_System_WinRT" ];
          "Win32_System_WinRT_Shell" = [ "Win32_System_WinRT" ];
          "Win32_System_WinRT_Storage" = [ "Win32_System_WinRT" ];
          "Win32_System_WindowsProgramming" = [ "Win32_System" ];
          "Win32_System_WindowsSync" = [ "Win32_System" ];
          "Win32_System_Wmi" = [ "Win32_System" ];
          "Win32_UI" = [ "Win32" ];
          "Win32_UI_Accessibility" = [ "Win32_UI" ];
          "Win32_UI_Animation" = [ "Win32_UI" ];
          "Win32_UI_ColorSystem" = [ "Win32_UI" ];
          "Win32_UI_Controls" = [ "Win32_UI" ];
          "Win32_UI_Controls_Dialogs" = [ "Win32_UI_Controls" ];
          "Win32_UI_Controls_RichEdit" = [ "Win32_UI_Controls" ];
          "Win32_UI_HiDpi" = [ "Win32_UI" ];
          "Win32_UI_Input" = [ "Win32_UI" ];
          "Win32_UI_Input_Ime" = [ "Win32_UI_Input" ];
          "Win32_UI_Input_Ink" = [ "Win32_UI_Input" ];
          "Win32_UI_Input_KeyboardAndMouse" = [ "Win32_UI_Input" ];
          "Win32_UI_Input_Pointer" = [ "Win32_UI_Input" ];
          "Win32_UI_Input_Radial" = [ "Win32_UI_Input" ];
          "Win32_UI_Input_Touch" = [ "Win32_UI_Input" ];
          "Win32_UI_Input_XboxController" = [ "Win32_UI_Input" ];
          "Win32_UI_InteractionContext" = [ "Win32_UI" ];
          "Win32_UI_LegacyWindowsEnvironmentFeatures" = [ "Win32_UI" ];
          "Win32_UI_Magnification" = [ "Win32_UI" ];
          "Win32_UI_Notifications" = [ "Win32_UI" ];
          "Win32_UI_Ribbon" = [ "Win32_UI" ];
          "Win32_UI_Shell" = [ "Win32_UI" ];
          "Win32_UI_Shell_Common" = [ "Win32_UI_Shell" ];
          "Win32_UI_Shell_PropertiesSystem" = [ "Win32_UI_Shell" ];
          "Win32_UI_TabletPC" = [ "Win32_UI" ];
          "Win32_UI_TextServices" = [ "Win32_UI" ];
          "Win32_UI_WindowsAndMessaging" = [ "Win32_UI" ];
          "Win32_UI_Wpf" = [ "Win32_UI" ];
          "Win32_UI_Xaml" = [ "Win32_UI" ];
          "Win32_UI_Xaml_Diagnostics" = [ "Win32_UI_Xaml" ];
        };
        resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_System" "Win32_System_LibraryLoader" "Win32_System_SystemServices" "Win32_System_WindowsProgramming" "default" ];
      };
      "windows_aarch64_gnullvm" = rec {
        crateName = "windows_aarch64_gnullvm";
        version = "0.42.0";
        edition = "2018";
        sha256 = "17m1p753qk02r25afg31dxym4rpy7kpr0z8nwl5f1jzhyrqsmlj1";
        authors = [
          "Microsoft"
        ];

      };
      "windows_aarch64_msvc" = rec {
        crateName = "windows_aarch64_msvc";
        version = "0.42.0";
        edition = "2018";
        sha256 = "1d6d9ny0yl5l9vvagydigvkfcphzk2aygchiccywijimb8pja3yx";
        authors = [
          "Microsoft"
        ];

      };
      "windows_i686_gnu" = rec {
        crateName = "windows_i686_gnu";
        version = "0.42.0";
        edition = "2018";
        sha256 = "1rsxdjp50nk38zfd1dxj12i2qmhpvxsm6scdq8v1d10ncygy3spv";
        authors = [
          "Microsoft"
        ];

      };
      "windows_i686_msvc" = rec {
        crateName = "windows_i686_msvc";
        version = "0.42.0";
        edition = "2018";
        sha256 = "0ii2hrsdif2ms79dfiyfzm1n579jzj42ji3fpsxd57d3v9jjzhc4";
        authors = [
          "Microsoft"
        ];

      };
      "windows_x86_64_gnu" = rec {
        crateName = "windows_x86_64_gnu";
        version = "0.42.0";
        edition = "2018";
        sha256 = "1vdh8k5a4m6pfkc5gladqznyqxgapkjm0qb8iwqvqb1nnlhinyxz";
        authors = [
          "Microsoft"
        ];

      };
      "windows_x86_64_gnullvm" = rec {
        crateName = "windows_x86_64_gnullvm";
        version = "0.42.0";
        edition = "2018";
        sha256 = "0a10rns9b07m9snlr97iqxq42zi9ai547gb5fqlv7vihpb92bm89";
        authors = [
          "Microsoft"
        ];

      };
      "windows_x86_64_msvc" = rec {
        crateName = "windows_x86_64_msvc";
        version = "0.42.0";
        edition = "2018";
        sha256 = "1xdnvhg8yj4fgjy0vkrahq5cbgfpcd7ak2bdv8s5lwjrazc0j07l";
        authors = [
          "Microsoft"
        ];

      };
    };

    #
# crate2nix/default.nix (excerpt start)
#

  /* Target (platform) data for conditional dependencies.
    This corresponds roughly to what buildRustCrate is setting.
  */
  defaultTarget = {
    unix = true;
    windows = false;
    fuchsia = true;
    test = false;

    # This doesn't appear to be officially documented anywhere yet.
    # See https://github.com/rust-lang-nursery/rust-forge/issues/101.
    os =
      if stdenv.hostPlatform.isDarwin
      then "macos"
      else stdenv.hostPlatform.parsed.kernel.name;
    arch = stdenv.hostPlatform.parsed.cpu.name;
    family = "unix";
    env = "gnu";
    endian =
      if stdenv.hostPlatform.parsed.cpu.significantByte.name == "littleEndian"
      then "little" else "big";
    pointer_width = toString stdenv.hostPlatform.parsed.cpu.bits;
    vendor = stdenv.hostPlatform.parsed.vendor.name;
    debug_assertions = false;
  };

  /* Filters common temp files and build files. */
  # TODO(pkolloch): Substitute with gitignore filter
  sourceFilter = name: type:
    let
      baseName = builtins.baseNameOf (builtins.toString name);
    in
      ! (
        # Filter out git
        baseName == ".gitignore"
        || (type == "directory" && baseName == ".git")

        # Filter out build results
        || (
          type == "directory" && (
            baseName == "target"
            || baseName == "_site"
            || baseName == ".sass-cache"
            || baseName == ".jekyll-metadata"
            || baseName == "build-artifacts"
          )
        )

        # Filter out nix-build result symlinks
        || (
          type == "symlink" && lib.hasPrefix "result" baseName
        )

        # Filter out IDE config
        || (
          type == "directory" && (
            baseName == ".idea" || baseName == ".vscode"
          )
        ) || lib.hasSuffix ".iml" baseName

        # Filter out nix build files
        || baseName == "Cargo.nix"

        # Filter out editor backup / swap files.
        || lib.hasSuffix "~" baseName
        || builtins.match "^\\.sw[a-z]$$" baseName != null
        || builtins.match "^\\..*\\.sw[a-z]$$" baseName != null
        || lib.hasSuffix ".tmp" baseName
        || lib.hasSuffix ".bak" baseName
        || baseName == "tests.nix"
      );

  /* Returns a crate which depends on successful test execution
    of crate given as the second argument.

    testCrateFlags: list of flags to pass to the test exectuable
    testInputs: list of packages that should be available during test execution
  */
  crateWithTest = { crate, testCrate, testCrateFlags, testInputs, testPreRun, testPostRun }:
    assert builtins.typeOf testCrateFlags == "list";
    assert builtins.typeOf testInputs == "list";
    assert builtins.typeOf testPreRun == "string";
    assert builtins.typeOf testPostRun == "string";
    let
      # override the `crate` so that it will build and execute tests instead of
      # building the actual lib and bin targets We just have to pass `--test`
      # to rustc and it will do the right thing.  We execute the tests and copy
      # their log and the test executables to $out for later inspection.
      test =
        let
          drv = testCrate.override
            (
              _: {
                buildTests = true;
              }
            );
          # If the user hasn't set any pre/post commands, we don't want to
          # insert empty lines. This means that any existing users of crate2nix
          # don't get a spurious rebuild unless they set these explicitly.
          testCommand = pkgs.lib.concatStringsSep "\n"
            (pkgs.lib.filter (s: s != "") [
              testPreRun
              "$f $testCrateFlags 2>&1 | tee -a $out"
              testPostRun
            ]);
        in
        pkgs.runCommand "run-tests-${testCrate.name}"
          {
            inherit testCrateFlags;
            buildInputs = testInputs;
          } ''
          set -ex

          export RUST_BACKTRACE=1

          # recreate a file hierarchy as when running tests with cargo

          # the source for test data
          ${pkgs.xorg.lndir}/bin/lndir ${crate.src}

          # build outputs
          testRoot=target/debug
          mkdir -p $testRoot

          # executables of the crate
          # we copy to prevent std::env::current_exe() to resolve to a store location
          for i in ${crate}/bin/*; do
            cp "$i" "$testRoot"
          done
          chmod +w -R .

          # test harness executables are suffixed with a hash, like cargo does
          # this allows to prevent name collision with the main
          # executables of the crate
          hash=$(basename $out)
          for file in ${drv}/tests/*; do
            f=$testRoot/$(basename $file)-$hash
            cp $file $f
            ${testCommand}
          done
        '';
    in
    pkgs.runCommand "${crate.name}-linked"
      {
        inherit (crate) outputs crateName;
        passthru = (crate.passthru or { }) // {
          inherit test;
        };
      } ''
      echo tested by ${test}
      ${lib.concatMapStringsSep "\n" (output: "ln -s ${crate.${output}} ${"$"}${output}") crate.outputs}
    '';

  /* A restricted overridable version of builtRustCratesWithFeatures. */
  buildRustCrateWithFeatures =
    { packageId
    , features ? rootFeatures
    , crateOverrides ? defaultCrateOverrides
    , buildRustCrateForPkgsFunc ? null
    , runTests ? false
    , testCrateFlags ? [ ]
    , testInputs ? [ ]
      # Any command to run immediatelly before a test is executed.
    , testPreRun ? ""
      # Any command run immediatelly after a test is executed.
    , testPostRun ? ""
    }:
    lib.makeOverridable
      (
        { features
        , crateOverrides
        , runTests
        , testCrateFlags
        , testInputs
        , testPreRun
        , testPostRun
        }:
        let
          buildRustCrateForPkgsFuncOverriden =
            if buildRustCrateForPkgsFunc != null
            then buildRustCrateForPkgsFunc
            else
              (
                if crateOverrides == pkgs.defaultCrateOverrides
                then buildRustCrateForPkgs
                else
                  pkgs: (buildRustCrateForPkgs pkgs).override {
                    defaultCrateOverrides = crateOverrides;
                  }
              );
          builtRustCrates = builtRustCratesWithFeatures {
            inherit packageId features;
            buildRustCrateForPkgsFunc = buildRustCrateForPkgsFuncOverriden;
            runTests = false;
          };
          builtTestRustCrates = builtRustCratesWithFeatures {
            inherit packageId features;
            buildRustCrateForPkgsFunc = buildRustCrateForPkgsFuncOverriden;
            runTests = true;
          };
          drv = builtRustCrates.crates.${packageId};
          testDrv = builtTestRustCrates.crates.${packageId};
          derivation =
            if runTests then
              crateWithTest
                {
                  crate = drv;
                  testCrate = testDrv;
                  inherit testCrateFlags testInputs testPreRun testPostRun;
                }
            else drv;
        in
        derivation
      )
      { inherit features crateOverrides runTests testCrateFlags testInputs testPreRun testPostRun; };

  /* Returns an attr set with packageId mapped to the result of buildRustCrateForPkgsFunc
    for the corresponding crate.
  */
  builtRustCratesWithFeatures =
    { packageId
    , features
    , crateConfigs ? crates
    , buildRustCrateForPkgsFunc
    , runTests
    , target ? defaultTarget
    } @ args:
      assert (builtins.isAttrs crateConfigs);
      assert (builtins.isString packageId);
      assert (builtins.isList features);
      assert (builtins.isAttrs target);
      assert (builtins.isBool runTests);
      let
        rootPackageId = packageId;
        mergedFeatures = mergePackageFeatures
          (
            args // {
              inherit rootPackageId;
              target = target // { test = runTests; };
            }
          );
        # Memoize built packages so that reappearing packages are only built once.
        builtByPackageIdByPkgs = mkBuiltByPackageIdByPkgs pkgs;
        mkBuiltByPackageIdByPkgs = pkgs:
          let
            self = {
              crates = lib.mapAttrs (packageId: value: buildByPackageIdForPkgsImpl self pkgs packageId) crateConfigs;
              build = mkBuiltByPackageIdByPkgs pkgs.buildPackages;
            };
          in
          self;
        buildByPackageIdForPkgsImpl = self: pkgs: packageId:
          let
            features = mergedFeatures."${packageId}" or [ ];
            crateConfig' = crateConfigs."${packageId}";
            crateConfig =
              builtins.removeAttrs crateConfig' [ "resolvedDefaultFeatures" "devDependencies" ];
            devDependencies =
              lib.optionals
                (runTests && packageId == rootPackageId)
                (crateConfig'.devDependencies or [ ]);
            dependencies =
              dependencyDerivations {
                inherit features target;
                buildByPackageId = depPackageId:
                  # proc_macro crates must be compiled for the build architecture
                  if crateConfigs.${depPackageId}.procMacro or false
                  then self.build.crates.${depPackageId}
                  else self.crates.${depPackageId};
                dependencies =
                  (crateConfig.dependencies or [ ])
                  ++ devDependencies;
              };
            buildDependencies =
              dependencyDerivations {
                inherit features target;
                buildByPackageId = depPackageId:
                  self.build.crates.${depPackageId};
                dependencies = crateConfig.buildDependencies or [ ];
              };
            filterEnabledDependenciesForThis = dependencies: filterEnabledDependencies {
              inherit dependencies features target;
            };
            dependenciesWithRenames =
              lib.filter (d: d ? "rename")
                (
                  filterEnabledDependenciesForThis
                    (
                      (crateConfig.buildDependencies or [ ])
                      ++ (crateConfig.dependencies or [ ])
                      ++ devDependencies
                    )
                );
            # Crate renames have the form:
            #
            # {
            #    crate_name = [
            #       { version = "1.2.3"; rename = "crate_name01"; }
            #    ];
            #    # ...
            # }
            crateRenames =
              let
                grouped =
                  lib.groupBy
                    (dependency: dependency.name)
                    dependenciesWithRenames;
                versionAndRename = dep:
                  let
                    package = crateConfigs."${dep.packageId}";
                  in
                  { inherit (dep) rename; version = package.version; };
              in
              lib.mapAttrs (name: choices: builtins.map versionAndRename choices) grouped;
          in
          buildRustCrateForPkgsFunc pkgs
            (
              crateConfig // {
                src = crateConfig.src or (
                  pkgs.fetchurl rec {
                    name = "${crateConfig.crateName}-${crateConfig.version}.tar.gz";
                    # https://www.pietroalbini.org/blog/downloading-crates-io/
                    # Not rate-limited, CDN URL.
                    url = "https://static.crates.io/crates/${crateConfig.crateName}/${crateConfig.crateName}-${crateConfig.version}.crate";
                    sha256 =
                      assert (lib.assertMsg (crateConfig ? sha256) "Missing sha256 for ${name}");
                      crateConfig.sha256;
                  }
                );
                extraRustcOpts = lib.lists.optional (targetFeatures != [ ]) "-C target-feature=${lib.concatMapStringsSep "," (x: "+${x}") targetFeatures}";
                inherit features dependencies buildDependencies crateRenames release;
              }
            );
      in
      builtByPackageIdByPkgs;

  /* Returns the actual derivations for the given dependencies. */
  dependencyDerivations =
    { buildByPackageId
    , features
    , dependencies
    , target
    }:
      assert (builtins.isList features);
      assert (builtins.isList dependencies);
      assert (builtins.isAttrs target);
      let
        enabledDependencies = filterEnabledDependencies {
          inherit dependencies features target;
        };
        depDerivation = dependency: buildByPackageId dependency.packageId;
      in
      map depDerivation enabledDependencies;

  /* Returns a sanitized version of val with all values substituted that cannot
    be serialized as JSON.
  */
  sanitizeForJson = val:
    if builtins.isAttrs val
    then lib.mapAttrs (n: v: sanitizeForJson v) val
    else if builtins.isList val
    then builtins.map sanitizeForJson val
    else if builtins.isFunction val
    then "function"
    else val;

  /* Returns various tools to debug a crate. */
  debugCrate = { packageId, target ? defaultTarget }:
    assert (builtins.isString packageId);
    let
      debug = rec {
        # The built tree as passed to buildRustCrate.
        buildTree = buildRustCrateWithFeatures {
          buildRustCrateForPkgsFunc = _: lib.id;
          inherit packageId;
        };
        sanitizedBuildTree = sanitizeForJson buildTree;
        dependencyTree = sanitizeForJson
          (
            buildRustCrateWithFeatures {
              buildRustCrateForPkgsFunc = _: crate: {
                "01_crateName" = crate.crateName or false;
                "02_features" = crate.features or [ ];
                "03_dependencies" = crate.dependencies or [ ];
              };
              inherit packageId;
            }
          );
        mergedPackageFeatures = mergePackageFeatures {
          features = rootFeatures;
          inherit packageId target;
        };
        diffedDefaultPackageFeatures = diffDefaultPackageFeatures {
          inherit packageId target;
        };
      };
    in
    { internal = debug; };

  /* Returns differences between cargo default features and crate2nix default
    features.

    This is useful for verifying the feature resolution in crate2nix.
  */
  diffDefaultPackageFeatures =
    { crateConfigs ? crates
    , packageId
    , target
    }:
      assert (builtins.isAttrs crateConfigs);
      let
        prefixValues = prefix: lib.mapAttrs (n: v: { "${prefix}" = v; });
        mergedFeatures =
          prefixValues
            "crate2nix"
            (mergePackageFeatures { inherit crateConfigs packageId target; features = [ "default" ]; });
        configs = prefixValues "cargo" crateConfigs;
        combined = lib.foldAttrs (a: b: a // b) { } [ mergedFeatures configs ];
        onlyInCargo =
          builtins.attrNames
            (lib.filterAttrs (n: v: !(v ? "crate2nix") && (v ? "cargo")) combined);
        onlyInCrate2Nix =
          builtins.attrNames
            (lib.filterAttrs (n: v: (v ? "crate2nix") && !(v ? "cargo")) combined);
        differentFeatures = lib.filterAttrs
          (
            n: v:
              (v ? "crate2nix")
              && (v ? "cargo")
              && (v.crate2nix.features or [ ]) != (v."cargo".resolved_default_features or [ ])
          )
          combined;
      in
      builtins.toJSON {
        inherit onlyInCargo onlyInCrate2Nix differentFeatures;
      };

  /* Returns an attrset mapping packageId to the list of enabled features.

    If multiple paths to a dependency enable different features, the
    corresponding feature sets are merged. Features in rust are additive.
  */
  mergePackageFeatures =
    { crateConfigs ? crates
    , packageId
    , rootPackageId ? packageId
    , features ? rootFeatures
    , dependencyPath ? [ crates.${packageId}.crateName ]
    , featuresByPackageId ? { }
    , target
      # Adds devDependencies to the crate with rootPackageId.
    , runTests ? false
    , ...
    } @ args:
      assert (builtins.isAttrs crateConfigs);
      assert (builtins.isString packageId);
      assert (builtins.isString rootPackageId);
      assert (builtins.isList features);
      assert (builtins.isList dependencyPath);
      assert (builtins.isAttrs featuresByPackageId);
      assert (builtins.isAttrs target);
      assert (builtins.isBool runTests);
      let
        crateConfig = crateConfigs."${packageId}" or (builtins.throw "Package not found: ${packageId}");
        expandedFeatures = expandFeatures (crateConfig.features or { }) features;
        enabledFeatures = enableFeatures (crateConfig.dependencies or [ ]) expandedFeatures;
        depWithResolvedFeatures = dependency:
          let
            packageId = dependency.packageId;
            features = dependencyFeatures enabledFeatures dependency;
          in
          { inherit packageId features; };
        resolveDependencies = cache: path: dependencies:
          assert (builtins.isAttrs cache);
          assert (builtins.isList dependencies);
          let
            enabledDependencies = filterEnabledDependencies {
              inherit dependencies target;
              features = enabledFeatures;
            };
            directDependencies = map depWithResolvedFeatures enabledDependencies;
            foldOverCache = op: lib.foldl op cache directDependencies;
          in
          foldOverCache
            (
              cache: { packageId, features }:
                let
                  cacheFeatures = cache.${packageId} or [ ];
                  combinedFeatures = sortedUnique (cacheFeatures ++ features);
                in
                if cache ? ${packageId} && cache.${packageId} == combinedFeatures
                then cache
                else
                  mergePackageFeatures {
                    features = combinedFeatures;
                    featuresByPackageId = cache;
                    inherit crateConfigs packageId target runTests rootPackageId;
                  }
            );
        cacheWithSelf =
          let
            cacheFeatures = featuresByPackageId.${packageId} or [ ];
            combinedFeatures = sortedUnique (cacheFeatures ++ enabledFeatures);
          in
          featuresByPackageId // {
            "${packageId}" = combinedFeatures;
          };
        cacheWithDependencies =
          resolveDependencies cacheWithSelf "dep"
            (
              crateConfig.dependencies or [ ]
              ++ lib.optionals
                (runTests && packageId == rootPackageId)
                (crateConfig.devDependencies or [ ])
            );
        cacheWithAll =
          resolveDependencies
            cacheWithDependencies "build"
            (crateConfig.buildDependencies or [ ]);
      in
      cacheWithAll;

  /* Returns the enabled dependencies given the enabled features. */
  filterEnabledDependencies = { dependencies, features, target }:
    assert (builtins.isList dependencies);
    assert (builtins.isList features);
    assert (builtins.isAttrs target);

    lib.filter
      (
        dep:
        let
          targetFunc = dep.target or (features: true);
        in
        targetFunc { inherit features target; }
        && (
          !(dep.optional or false)
          || builtins.any (doesFeatureEnableDependency dep) features
        )
      )
      dependencies;

  /* Returns whether the given feature should enable the given dependency. */
  doesFeatureEnableDependency = { name, rename ? null, ... }: feature:
    let
      prefix = "${name}/";
      len = builtins.stringLength prefix;
      startsWithPrefix = builtins.substring 0 len feature == prefix;
    in
    (rename == null && feature == name)
    || (rename != null && rename == feature)
    || startsWithPrefix;

  /* Returns the expanded features for the given inputFeatures by applying the
    rules in featureMap.

    featureMap is an attribute set which maps feature names to lists of further
    feature names to enable in case this feature is selected.
  */
  expandFeatures = featureMap: inputFeatures:
    assert (builtins.isAttrs featureMap);
    assert (builtins.isList inputFeatures);
    let
      expandFeature = feature:
        assert (builtins.isString feature);
        [ feature ] ++ (expandFeatures featureMap (featureMap."${feature}" or [ ]));
      outFeatures = lib.concatMap expandFeature inputFeatures;
    in
    sortedUnique outFeatures;

  /* This function adds optional dependencies as features if they are enabled
    indirectly by dependency features. This function mimics Cargo's behavior
    described in a note at:
    https://doc.rust-lang.org/nightly/cargo/reference/features.html#dependency-features
  */
  enableFeatures = dependencies: features:
    assert (builtins.isList features);
    assert (builtins.isList dependencies);
    let
      additionalFeatures = lib.concatMap
        (
          dependency:
            assert (builtins.isAttrs dependency);
            let
              enabled = builtins.any (doesFeatureEnableDependency dependency) features;
            in
            if (dependency.optional or false) && enabled then [ dependency.name ] else [ ]
        )
        dependencies;
    in
    sortedUnique (features ++ additionalFeatures);

  /*
    Returns the actual features for the given dependency.

    features: The features of the crate that refers this dependency.
  */
  dependencyFeatures = features: dependency:
    assert (builtins.isList features);
    assert (builtins.isAttrs dependency);
    let
      defaultOrNil =
        if dependency.usesDefaultFeatures or true
        then [ "default" ]
        else [ ];
      explicitFeatures = dependency.features or [ ];
      additionalDependencyFeatures =
        let
          dependencyPrefix = (dependency.rename or dependency.name) + "/";
          dependencyFeatures =
            builtins.filter (f: lib.hasPrefix dependencyPrefix f) features;
        in
        builtins.map (lib.removePrefix dependencyPrefix) dependencyFeatures;
    in
    defaultOrNil ++ explicitFeatures ++ additionalDependencyFeatures;

  /* Sorts and removes duplicates from a list of strings. */
  sortedUnique = features:
    assert (builtins.isList features);
    assert (builtins.all builtins.isString features);
    let
      outFeaturesSet = lib.foldl (set: feature: set // { "${feature}" = 1; }) { } features;
      outFeaturesUnique = builtins.attrNames outFeaturesSet;
    in
    builtins.sort (a: b: a < b) outFeaturesUnique;

  deprecationWarning = message: value:
    if strictDeprecation
    then builtins.throw "strictDeprecation enabled, aborting: ${message}"
    else builtins.trace message value;

  #
  # crate2nix/default.nix (excerpt end)
  #
  };
}

