###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
#     bazel run //third_party/rust:crate_index
###############################################################################

package(default_visibility = ["//visibility:public"])

exports_files(
    [
        "cargo-bazel.json",
        "crates.bzl",
        "defs.bzl",
    ] + glob(["*.bazel"]),
)

filegroup(
    name = "srcs",
    srcs = glob([
        "*.bazel",
        "*.bzl",
    ]),
)

# Workspace Member Dependencies
alias(
    name = "ansi_term",
    actual = "@crate_index__ansi_term-0.12.1//:ansi_term",
    tags = ["manual"],
)

alias(
    name = "anyhow",
    actual = "@crate_index__anyhow-1.0.69//:anyhow",
    tags = ["manual"],
)

alias(
    name = "atty",
    actual = "@crate_index__atty-0.2.14//:atty",
    tags = ["manual"],
)

alias(
    name = "bitflags",
    actual = "@crate_index__bitflags-1.3.2//:bitflags",
    tags = ["manual"],
)

alias(
    name = "bitvec",
    actual = "@crate_index__bitvec-1.0.1//:bitvec",
    tags = ["manual"],
)

alias(
    name = "byteorder",
    actual = "@crate_index__byteorder-1.4.3//:byteorder",
    tags = ["manual"],
)

alias(
    name = "chrono",
    actual = "@crate_index__chrono-0.4.23//:chrono",
    tags = ["manual"],
)

alias(
    name = "crc",
    actual = "@crate_index__crc-3.0.1//:crc",
    tags = ["manual"],
)

alias(
    name = "deser-hjson",
    actual = "@crate_index__deser-hjson-1.1.0//:deser_hjson",
    tags = ["manual"],
)

alias(
    name = "directories",
    actual = "@crate_index__directories-4.0.1//:directories",
    tags = ["manual"],
)

alias(
    name = "env_logger",
    actual = "@crate_index__env_logger-0.8.4//:env_logger",
    tags = ["manual"],
)

alias(
    name = "erased-serde",
    actual = "@crate_index__erased-serde-0.3.24//:erased_serde",
    tags = ["manual"],
)

alias(
    name = "hex",
    actual = "@crate_index__hex-0.4.3//:hex",
    tags = ["manual"],
)

alias(
    name = "humantime",
    actual = "@crate_index__humantime-2.1.0//:humantime",
    tags = ["manual"],
)

alias(
    name = "humantime-serde",
    actual = "@crate_index__humantime-serde-1.1.1//:humantime_serde",
    tags = ["manual"],
)

alias(
    name = "indicatif",
    actual = "@crate_index__indicatif-0.16.2//:indicatif",
    tags = ["manual"],
)

alias(
    name = "lazy_static",
    actual = "@crate_index__lazy_static-1.4.0//:lazy_static",
    tags = ["manual"],
)

alias(
    name = "libftdi1-sys",
    actual = "@crate_index__libftdi1-sys-1.1.2//:libftdi1_sys",
    tags = ["manual"],
)

alias(
    name = "log",
    actual = "@crate_index__log-0.4.17//:log",
    tags = ["manual"],
)

alias(
    name = "memoffset",
    actual = "@crate_index__memoffset-0.6.5//:memoffset",
    tags = ["manual"],
)

alias(
    name = "mio",
    actual = "@crate_index__mio-0.7.14//:mio",
    tags = ["manual"],
)

alias(
    name = "mio-signals",
    actual = "@crate_index__mio-signals-0.1.5//:mio_signals",
    tags = ["manual"],
)

alias(
    name = "nix",
    actual = "@crate_index__nix-0.17.0//:nix",
    tags = ["manual"],
)

alias(
    name = "num-bigint-dig",
    actual = "@crate_index__num-bigint-dig-0.7.0//:num_bigint_dig",
    tags = ["manual"],
)

alias(
    name = "num-traits",
    actual = "@crate_index__num-traits-0.2.15//:num_traits",
    tags = ["manual"],
)

alias(
    name = "num_enum",
    actual = "@crate_index__num_enum-0.5.9//:num_enum",
    tags = ["manual"],
)

alias(
    name = "object",
    actual = "@crate_index__object-0.25.3//:object",
    tags = ["manual"],
)

alias(
    name = "once_cell",
    actual = "@crate_index__once_cell-1.17.1//:once_cell",
    tags = ["manual"],
)

alias(
    name = "pest",
    actual = "@crate_index__pest-2.5.5//:pest",
    tags = ["manual"],
)

alias(
    name = "pest_derive",
    actual = "@crate_index__pest_derive-2.5.5//:pest_derive",
    tags = ["manual"],
)

alias(
    name = "proc-macro-error",
    actual = "@crate_index__proc-macro-error-1.0.4//:proc_macro_error",
    tags = ["manual"],
)

alias(
    name = "proc-macro2",
    actual = "@crate_index__proc-macro2-1.0.51//:proc_macro2",
    tags = ["manual"],
)

alias(
    name = "quote",
    actual = "@crate_index__quote-1.0.23//:quote",
    tags = ["manual"],
)

alias(
    name = "rand",
    actual = "@crate_index__rand-0.8.5//:rand",
    tags = ["manual"],
)

alias(
    name = "raw_tty",
    actual = "@crate_index__raw_tty-0.1.0//:raw_tty",
    tags = ["manual"],
)

alias(
    name = "regex",
    actual = "@crate_index__regex-1.7.1//:regex",
    tags = ["manual"],
)

alias(
    name = "rsa",
    actual = "@crate_index__rsa-0.5.0//:rsa",
    tags = ["manual"],
)

alias(
    name = "rusb",
    actual = "@crate_index__rusb-0.8.1//:rusb",
    tags = ["manual"],
)

alias(
    name = "serde",
    actual = "@crate_index__serde-1.0.152//:serde",
    tags = ["manual"],
)

alias(
    name = "serde_bytes",
    actual = "@crate_index__serde_bytes-0.11.9//:serde_bytes",
    tags = ["manual"],
)

alias(
    name = "serde_derive",
    actual = "@crate_index__serde_derive-1.0.152//:serde_derive",
    tags = ["manual"],
)

alias(
    name = "serde_json",
    actual = "@crate_index__serde_json-1.0.93//:serde_json",
    tags = ["manual"],
)

alias(
    name = "serialport",
    actual = "@crate_index__serialport-4.2.0//:serialport",
    tags = ["manual"],
)

alias(
    name = "sha2",
    actual = "@crate_index__sha2-0.10.6//:sha2",
    tags = ["manual"],
)

alias(
    name = "shellwords",
    actual = "@crate_index__shellwords-1.1.0//:shellwords",
    tags = ["manual"],
)

alias(
    name = "structopt",
    actual = "@crate_index__structopt-0.3.26//:structopt",
    tags = ["manual"],
)

alias(
    name = "syn",
    actual = "@crate_index__syn-1.0.107//:syn",
    tags = ["manual"],
)

alias(
    name = "tempfile",
    actual = "@crate_index__tempfile-3.3.0//:tempfile",
    tags = ["manual"],
)

alias(
    name = "thiserror",
    actual = "@crate_index__thiserror-1.0.38//:thiserror",
    tags = ["manual"],
)

alias(
    name = "typetag",
    actual = "@crate_index__typetag-0.1.8//:typetag",
    tags = ["manual"],
)

alias(
    name = "zerocopy",
    actual = "@crate_index__zerocopy-0.5.0//:zerocopy",
    tags = ["manual"],
)
