From 43be16e4bc85b9152e46afbafbafc4e4bb2051cc Mon Sep 17 00:00:00 2001 From: the-superpirate Date: Fri, 2 Sep 2022 18:44:56 +0300 Subject: [PATCH 1/5] - [nexus] Update schema - [nexus] Remove outdated protos - [nexus] Development - [nexus] Development - [nexus] Development - [nexus] Development - [nexus] Development - [nexus] Refactor views - [nexus] Update aiosumma - [nexus] Add tags - [nexus] Development - [nexus] Update repository - [nexus] Update repository - [nexus] Update dependencies - [nexus] Update dependencies - [nexus] Fixes for MetaAPI - [nexus] Support for new queries - [nexus] Adopt new versions of search - [nexus] Improving Nexus - [nexus] Various fixes - [nexus] Add profile - [nexus] Fixes for ingestion - [nexus] Refactorings and bugfixes - [idm] Add profile methods - [nexus] Fix stalled nexus-meta bugs - [nexus] Various bugfixes - [nexus] Restore IDM API functionality GitOrigin-RevId: a0842345a6dde5b321279ab5510a50c0def0e71a --- BUILD.bazel | 1 - WORKSPACE | 126 +- apps/nexus-cognitron-web/docker-compose.yaml | 29 - apps/nexus-cognitron-web/envoy.yaml | 59 - idm/api/BUILD.bazel | 5 +- idm/api/aioclient/aioclient.py | 140 +- idm/api/configs/base.yaml | 7 +- idm/api/configs/logging.yaml | 9 +- idm/api/main.py | 62 +- idm/api/proto/BUILD.bazel | 2 + idm/api/proto/chat_manager_service.proto | 2 + idm/api/proto/chat_manager_service_pb2.py | 503 -- .../proto/chat_manager_service_pb2_grpc.py | 166 - idm/api/proto/profile_service.proto | 37 + .../proto/subscription_manager_service.proto | 60 + idm/api/services/chat_manager.py | 103 +- idm/api/services/profile.py | 204 + idm/api/services/subscription_manager.py | 202 + images/install.bzl | 4 +- images/production/BUILD.bazel | 11 +- library/aiogrpctools/base.py | 42 +- library/aiopostgres/pool_holder.py | 64 +- library/js/BUILD.bazel | 22 - library/js/base-client.js | 52 - library/js/utils.js | 145 - library/logging/BUILD.bazel | 4 +- library/logging/__init__.py | 2 +- library/telegram/base.py | 56 +- library/telegram/common.py | 14 + library/telegram/utils.py | 15 +- nexus/README.md | 1 - nexus/actions/BUILD.bazel | 2 +- nexus/actions/crossref_api.py | 38 +- .../store_telegram_file_id_pb.py | 2 +- .../update_document_scimag_pb.py | 190 +- .../update_document_scitech_pb.py | 209 +- .../update_document_sharience_pb.py | 4 +- .../actions/document_operations_pb/vote_pb.py | 4 +- nexus/actions/libgen_api.py | 39 +- nexus/actions/postgres.py | 18 +- nexus/actions/scimag_pb.py | 40 +- nexus/actions/scitech_pb.py | 65 +- nexus/bot/BUILD.bazel | 5 +- nexus/bot/application.py | 4 +- nexus/bot/configs/__init__.py | 1 - nexus/bot/configs/base.yaml | 49 +- nexus/bot/configs/logging.yaml | 17 +- nexus/bot/configs/promotions.yaml | 39 +- nexus/bot/exceptions.py | 14 +- nexus/bot/handlers/__init__.py | 14 +- nexus/bot/handlers/aboutus.py | 22 + nexus/bot/handlers/ban.py | 32 +- nexus/bot/handlers/base.py | 70 +- nexus/bot/handlers/close.py | 15 +- nexus/bot/handlers/contact.py | 33 - nexus/bot/handlers/copyright.py | 11 +- nexus/bot/handlers/download.py | 5 +- nexus/bot/handlers/emoji.py | 17 - nexus/bot/handlers/help.py | 4 +- .../bot/handlers/{donate.py => howtohelp.py} | 17 +- nexus/bot/handlers/legacy.py | 4 +- nexus/bot/handlers/profile.py | 126 + nexus/bot/handlers/rank.py | 25 + nexus/bot/handlers/roll.py | 64 +- nexus/bot/handlers/search.py | 303 +- nexus/bot/handlers/seed.py | 128 + nexus/bot/handlers/shortlink.py | 4 +- nexus/bot/handlers/start.py | 20 +- nexus/bot/handlers/submit.py | 131 +- nexus/bot/handlers/top_missed.py | 54 - nexus/bot/handlers/trends.py | 190 + nexus/bot/handlers/view.py | 100 +- nexus/bot/main.py | 8 +- nexus/bot/promotioner.py | 11 +- nexus/bot/widgets/profile_widget.py | 131 + nexus/bot/widgets/search_widget.py | 137 +- nexus/bot/widgets/settings_widget.py | 52 +- nexus/cognitron/configs/scimag.yaml | 99 +- nexus/cognitron/configs/scitech.yaml | 49 +- nexus/cognitron/web/BUILD.bazel | 72 - nexus/cognitron/web/README.md | 29 - nexus/cognitron/web/app.vue | 4 - nexus/cognitron/web/components/document.vue | 46 - .../cognitron/web/components/search-list.vue | 32 - nexus/cognitron/web/components/v-footer.vue | 19 - nexus/cognitron/web/components/v-header.vue | 25 - .../web/components/v-scimag-search-item.vue | 70 - nexus/cognitron/web/components/v-scimag.vue | 86 - .../web/components/v-scitech-search-item.vue | 71 - nexus/cognitron/web/components/v-scitech.vue | 66 - .../web/components/v-tr-multi-link.vue | 40 - nexus/cognitron/web/components/v-tr.vue | 55 - nexus/cognitron/web/nuxt.config.ts | 33 - nexus/cognitron/web/plugins/helpers.js | 10 - nexus/cognitron/web/plugins/meta-api.js | 41 - nexus/cognitron/web/plugins/utils.js | 6 - nexus/cognitron/web/tsconfig.json | 4 - nexus/hub/BUILD.bazel | 6 + nexus/hub/aioclient/aioclient.py | 71 +- nexus/hub/configs/__init__.py | 1 + nexus/hub/configs/base.yaml | 14 +- nexus/hub/configs/logging.yaml | 13 +- nexus/hub/configs/pylon.yaml | 618 ++ nexus/hub/fancy_names.py | 2 +- nexus/hub/main.py | 87 +- nexus/hub/proto/delivery_service.proto | 19 +- nexus/hub/proto/submitter_service.proto | 22 +- nexus/hub/services/base.py | 76 +- nexus/hub/services/delivery.py | 554 +- nexus/hub/services/mutual_aid_service.py | 98 + nexus/hub/services/submitter.py | 382 +- nexus/ingest/BUILD.bazel | 2 +- nexus/ingest/README.md | 23 +- nexus/ingest/jobs/base.py | 4 +- nexus/ingest/jobs/crossref_api.py | 19 +- nexus/ingest/jobs/libgen_api.py | 9 +- nexus/ingest/jobs/postgres.py | 74 +- nexus/ingest/jobs/self_feed.py | 5 +- nexus/ingest/sinks/kafka.py | 9 +- nexus/meta_api/BUILD.bazel | 7 +- nexus/meta_api/aioclient/aioclient.py | 118 +- nexus/meta_api/cli.py | 11 +- nexus/meta_api/configs/__init__.py | 1 - nexus/meta_api/configs/base.yaml | 6 +- nexus/meta_api/configs/logging.yaml | 14 +- nexus/meta_api/js/client/BUILD.bazel | 11 - nexus/meta_api/js/client/index.js | 48 - nexus/meta_api/main.py | 180 +- nexus/meta_api/mergers/__init__.py | 6 + nexus/meta_api/mergers/aggregation.py | 13 + nexus/meta_api/mergers/count.py | 16 + nexus/meta_api/mergers/reservoir_sampling.py | 21 + nexus/meta_api/mergers/top_docs.py | 67 + nexus/meta_api/models/classic.txt | 1760 ----- nexus/meta_api/proto/BUILD.bazel | 12 +- nexus/meta_api/proto/documents_service.proto | 25 +- nexus/meta_api/proto/documents_service_pb2.py | 79 + .../proto/documents_service_pb2_grpc.py | 135 + nexus/meta_api/proto/search_service.proto | 28 +- nexus/meta_api/proto/search_service_pb2.py | 59 + .../meta_api/proto/search_service_pb2_grpc.py | 67 + nexus/meta_api/providers/data.py | 60 - nexus/meta_api/providers/stat.py | 73 +- nexus/meta_api/query_extensions/BUILD.bazel | 16 - nexus/meta_api/query_extensions/__init__.py | 31 - nexus/meta_api/query_extensions/checks.py | 61 - .../query_extensions/grammar/__init__.py | 9 - .../query_extensions/grammar/parser.py | 330 - .../meta_api/query_extensions/grammar/tree.py | 370 - .../grammar/tree_transformer.py | 207 - .../query_extensions/tests/BUILD.bazel | 12 - .../query_extensions/tests/__init__.py | 0 nexus/meta_api/query_extensions/tests/test.py | 7 - .../query_extensions/tests/test_grammar.py | 41 - .../tests/test_query_extensionner.py | 70 - nexus/meta_api/rescorers/__init__.py | 3 - nexus/meta_api/rescorers/base.py | 11 - nexus/meta_api/rescorers/classic_rescorer.py | 236 - nexus/meta_api/services/base.py | 68 + nexus/meta_api/services/documents.py | 159 +- nexus/meta_api/services/search.py | 467 +- nexus/meta_api/word_transformers.py | 104 + nexus/models/proto/operation.proto | 4 +- nexus/models/proto/operation_pb2.py | 342 - nexus/models/proto/scimag.proto | 9 +- nexus/models/proto/scimag_pb2.py | 276 - nexus/models/proto/scitech.proto | 1 + nexus/models/proto/scitech_pb2.py | 268 - nexus/models/proto/sharience.proto | 2 + nexus/models/proto/sharience_pb2.py | 120 - nexus/models/proto/typed_document_pb2.py | 108 - nexus/nlptools/BUILD.bazel | 18 - nexus/nlptools/__init__.py | 0 nexus/nlptools/language_detect.py | 7 - nexus/nlptools/languages.py | 24 - nexus/nlptools/morph.py | 29 - nexus/nlptools/regex.py | 33 - nexus/nlptools/tests/BUILD.bazel | 12 - nexus/nlptools/tests/__init__.py | 0 nexus/nlptools/tests/test.py | 7 - nexus/nlptools/tests/test_utils.py | 20 - nexus/nlptools/utils.py | 109 - nexus/pipe/BUILD.bazel | 2 +- nexus/pipe/configs/base.yaml | 15 +- nexus/pipe/configs/logging.yaml | 10 +- nexus/pipe/consumers/base.py | 113 +- nexus/pipe/main.py | 11 +- nexus/pipe/processors/base.py | 4 +- .../processors/cross_references_processor.py | 23 +- nexus/pylon/BUILD.bazel | 9 + nexus/pylon/README.md | 4 +- nexus/pylon/__init__.py | 7 + nexus/pylon/cli.py | 46 +- nexus/pylon/client.py | 92 +- nexus/pylon/configs/__init__.py | 11 + nexus/pylon/configs/pylon.yaml | 618 ++ nexus/pylon/consts.py | 1 + nexus/pylon/drivers/__init__.py | 4 + nexus/pylon/drivers/base.py | 40 + nexus/pylon/drivers/browser.py | 309 + nexus/pylon/drivers/direct.py | 54 + nexus/pylon/matcher.py | 16 + nexus/pylon/network_agent.py | 60 + nexus/pylon/pdftools/__init__.py | 32 + nexus/pylon/pdftools/text_collector.py | 29 + nexus/pylon/pdftools/watermarks.py | 439 ++ nexus/pylon/prepared_request.py | 81 + nexus/pylon/proxy_manager.py | 74 + nexus/pylon/resolvers/__init__.py | 5 + nexus/pylon/resolvers/base.py | 15 + nexus/pylon/resolvers/doi_org_request.py | 62 + nexus/pylon/resolvers/request.py | 50 + nexus/pylon/resolvers/template.py | 32 + nexus/pylon/source.py | 88 + nexus/pylon/sources/__init__.py | 17 - nexus/pylon/sources/base.py | 252 - nexus/pylon/sources/libgen_doi.py | 38 - nexus/pylon/sources/libgen_md5.py | 43 - nexus/pylon/sources/libgen_new.py | 56 - nexus/pylon/sources/scihub.py | 54 - nexus/pylon/sources/specific/__init__.py | 24 - nexus/pylon/sources/specific/biorxiv.py | 24 - nexus/pylon/sources/specific/lancet.py | 34 - nexus/pylon/sources/specific/nature.py | 27 - nexus/pylon/sources/specific/nejm.py | 26 - nexus/pylon/sources/specific/pnas.py | 42 - .../pylon/sources/specific/research_square.py | 34 - nexus/pylon/validators/__init__.py | 4 + nexus/pylon/validators/base.py | 6 + nexus/pylon/validators/md5.py | 19 + nexus/pylon/validators/pdf.py | 68 + nexus/translations/translations.yaml | 794 +- nexus/views/js/BUILD.bazel | 11 - nexus/views/js/base.js | 131 - nexus/views/js/helpers.js | 42 - nexus/views/js/index.js | 2 - nexus/views/js/scimag.js | 76 - nexus/views/js/scitech.js | 21 - nexus/views/js/utils.js | 24 - nexus/views/telegram/BUILD.bazel | 2 +- nexus/views/telegram/__init__.py | 3 - nexus/views/telegram/base.py | 117 - nexus/views/telegram/base_holder.py | 249 + nexus/views/telegram/base_view_builder.py | 389 + nexus/views/telegram/common.py | 19 +- .../telegram}/document_list_widget.py | 58 +- nexus/views/telegram/progress_bar.py | 3 +- nexus/views/telegram/registry.py | 22 - nexus/views/telegram/scimag.py | 346 +- nexus/views/telegram/scitech.py | 296 +- postgres/sql/chats.sql | 158 + postgres/sql/scimag.sql | 169 +- postgres/sql/scitech.sql | 51 +- postgres/sql/series.sql | 87 + postgres/sql/sharience.sql | 1 + postgres/sql/subscriptions.sql | 177 + repository/install-packages.sh | 4 +- rules/java/BUILD.bazel | 0 rules/java/artifacts.bzl | 26 - rules/misc/setup.bzl | 56 +- rules/nodejs/.babelrc | 12 - rules/nodejs/BUILD.bazel | 5 - rules/nodejs/common.bzl | 42 - rules/nodejs/package.json | 48 - rules/nodejs/yarn.lock | 6964 ----------------- rules/python/BUILD.bazel | 38 +- rules/python/requirements-lock.txt | 164 +- rules/python/requirements.txt | 30 +- rules/rust/BUILD.bazel | 15 - rules/rust/Cargo.lock | 2458 ------ rules/rust/Cargo.raze.lock | 2454 ------ rules/rust/Cargo.toml | 60 - rules/rust/README.md | 3 - rules/rust/cargo/BUILD.bazel | 327 - rules/rust/crates.bzl | 2502 ------ rules/rust/remote/BUILD.ahash-0.4.7.bazel | 64 - rules/rust/remote/BUILD.ahash-0.7.6.bazel | 131 - .../remote/BUILD.aho-corasick-0.7.18.bazel | 57 - .../remote/BUILD.alloc-no-stdlib-2.0.3.bazel | 81 - .../remote/BUILD.alloc-stdlib-0.2.1.bazel | 83 - .../rust/remote/BUILD.ansi_term-0.12.1.bazel | 60 - rules/rust/remote/BUILD.anyhow-1.0.56.bazel | 116 - .../remote/BUILD.async-stream-0.3.3.bazel | 66 - .../BUILD.async-stream-impl-0.3.3.bazel | 57 - .../remote/BUILD.async-trait-0.1.52.bazel | 91 - rules/rust/remote/BUILD.atty-0.2.14.bazel | 67 - rules/rust/remote/BUILD.autocfg-1.1.0.bazel | 64 - rules/rust/remote/BUILD.base64-0.13.0.bazel | 70 - rules/rust/remote/BUILD.bazel | 0 rules/rust/remote/BUILD.bitflags-1.3.2.bazel | 59 - .../rust/remote/BUILD.bitpacking-0.8.4.bazel | 58 - .../remote/BUILD.block-buffer-0.7.3.bazel | 58 - .../remote/BUILD.block-padding-0.1.5.bazel | 55 - rules/rust/remote/BUILD.brotli-3.3.3.bazel | 129 - .../BUILD.brotli-decompressor-2.3.2.bazel | 89 - rules/rust/remote/BUILD.bumpalo-3.9.1.bazel | 59 - .../rust/remote/BUILD.byte-tools-0.3.1.bazel | 54 - rules/rust/remote/BUILD.byteorder-1.4.3.bazel | 58 - rules/rust/remote/BUILD.bytes-1.1.0.bazel | 84 - rules/rust/remote/BUILD.cc-1.0.73.bazel | 87 - rules/rust/remote/BUILD.census-0.4.0.bazel | 54 - rules/rust/remote/BUILD.cfg-if-1.0.0.bazel | 56 - rules/rust/remote/BUILD.chrono-0.4.19.bazel | 71 - rules/rust/remote/BUILD.clap-3.1.6.bazel | 175 - rules/rust/remote/BUILD.colored-2.0.0.bazel | 66 - rules/rust/remote/BUILD.combine-4.6.3.bazel | 79 - rules/rust/remote/BUILD.config-0.12.0.bazel | 133 - rules/rust/remote/BUILD.crc32fast-1.3.2.bazel | 91 - rules/rust/remote/BUILD.crossbeam-0.8.1.bazel | 69 - .../BUILD.crossbeam-channel-0.5.4.bazel | 95 - .../remote/BUILD.crossbeam-deque-0.8.1.bazel | 69 - .../remote/BUILD.crossbeam-epoch-0.9.8.bazel | 106 - .../remote/BUILD.crossbeam-queue-0.3.5.bazel | 94 - .../remote/BUILD.crossbeam-utils-0.8.8.bazel | 106 - rules/rust/remote/BUILD.crunchy-0.2.2.bazel | 88 - rules/rust/remote/BUILD.ctor-0.1.22.bazel | 58 - rules/rust/remote/BUILD.dashmap-4.0.2.bazel | 57 - rules/rust/remote/BUILD.diff-0.1.12.bazel | 60 - rules/rust/remote/BUILD.digest-0.8.1.bazel | 55 - rules/rust/remote/BUILD.dlv-list-0.2.3.bazel | 55 - .../rust/remote/BUILD.downcast-rs-1.2.0.bazel | 60 - rules/rust/remote/BUILD.either-1.6.1.bazel | 56 - rules/rust/remote/BUILD.fail-0.5.0.bazel | 59 - rules/rust/remote/BUILD.fake-simd-0.1.2.bazel | 54 - .../rust/remote/BUILD.fastdivide-0.4.0.bazel | 56 - .../remote/BUILD.fastfield_codecs-0.1.0.bazel | 91 - rules/rust/remote/BUILD.fastrand-1.7.0.bazel | 60 - .../rust/remote/BUILD.fixedbitset-0.4.1.bazel | 56 - rules/rust/remote/BUILD.fnv-1.0.7.bazel | 56 - rules/rust/remote/BUILD.fs2-0.4.3.bazel | 65 - rules/rust/remote/BUILD.futures-0.3.21.bazel | 178 - .../remote/BUILD.futures-channel-0.3.21.bazel | 106 - .../remote/BUILD.futures-core-0.3.21.bazel | 90 - .../BUILD.futures-executor-0.3.21.bazel | 66 - .../rust/remote/BUILD.futures-io-0.3.21.bazel | 55 - .../remote/BUILD.futures-macro-0.3.21.bazel | 57 - .../remote/BUILD.futures-sink-0.3.21.bazel | 57 - .../remote/BUILD.futures-task-0.3.21.bazel | 88 - .../remote/BUILD.futures-util-0.3.21.bazel | 128 - .../remote/BUILD.generic-array-0.12.4.bazel | 67 - rules/rust/remote/BUILD.getrandom-0.2.5.bazel | 75 - rules/rust/remote/BUILD.h2-0.3.12.bazel | 71 - .../rust/remote/BUILD.hashbrown-0.11.2.bazel | 69 - rules/rust/remote/BUILD.hashbrown-0.9.1.bazel | 68 - rules/rust/remote/BUILD.heck-0.3.3.bazel | 55 - .../rust/remote/BUILD.hermit-abi-0.1.19.bazel | 56 - .../rust/remote/BUILD.htmlescape-0.3.1.bazel | 58 - rules/rust/remote/BUILD.http-0.2.6.bazel | 73 - rules/rust/remote/BUILD.http-body-0.4.4.bazel | 59 - .../BUILD.http-range-header-0.3.0.bazel | 56 - rules/rust/remote/BUILD.httparse-1.6.0.bazel | 92 - rules/rust/remote/BUILD.httpdate-1.0.2.bazel | 56 - rules/rust/remote/BUILD.hyper-0.14.17.bazel | 133 - .../remote/BUILD.hyper-timeout-0.4.1.bazel | 60 - rules/rust/remote/BUILD.indexmap-1.8.0.bazel | 100 - rules/rust/remote/BUILD.instant-0.1.12.bazel | 57 - .../rust/remote/BUILD.itertools-0.10.3.bazel | 98 - rules/rust/remote/BUILD.itoa-1.0.1.bazel | 58 - rules/rust/remote/BUILD.js-sys-0.3.56.bazel | 59 - rules/rust/remote/BUILD.json5-0.4.1.bazel | 71 - .../rust/remote/BUILD.lazy_static-1.4.0.bazel | 58 - .../BUILD.levenshtein_automata-0.2.1.bazel | 54 - rules/rust/remote/BUILD.libc-0.2.121.bazel | 90 - rules/rust/remote/BUILD.libz-sys-1.1.5.bazel | 94 - .../remote/BUILD.linked-hash-map-0.5.4.bazel | 60 - rules/rust/remote/BUILD.lock_api-0.4.6.bazel | 55 - rules/rust/remote/BUILD.log-0.4.14.bazel | 93 - rules/rust/remote/BUILD.lru-0.7.3.bazel | 57 - rules/rust/remote/BUILD.lz4_flex-0.9.2.bazel | 58 - rules/rust/remote/BUILD.maplit-1.0.2.bazel | 56 - rules/rust/remote/BUILD.matchers-0.1.0.bazel | 55 - .../remote/BUILD.measure_time-0.8.0.bazel | 55 - rules/rust/remote/BUILD.memchr-2.4.1.bazel | 88 - rules/rust/remote/BUILD.memmap2-0.5.3.bazel | 67 - rules/rust/remote/BUILD.memoffset-0.6.5.bazel | 87 - .../remote/BUILD.minimal-lexical-0.2.1.bazel | 79 - rules/rust/remote/BUILD.mio-0.8.2.bazel | 76 - rules/rust/remote/BUILD.miow-0.3.7.bazel | 55 - rules/rust/remote/BUILD.multimap-0.8.3.bazel | 54 - .../remote/BUILD.murmurhash32-0.2.0.bazel | 57 - rules/rust/remote/BUILD.nom-7.1.1.bazel | 97 - rules/rust/remote/BUILD.ntapi-0.3.7.bazel | 89 - .../remote/BUILD.num-integer-0.1.44.bazel | 96 - .../rust/remote/BUILD.num-traits-0.2.14.bazel | 87 - rules/rust/remote/BUILD.num_cpus-1.13.1.bazel | 67 - rules/rust/remote/BUILD.num_enum-0.5.7.bazel | 73 - .../remote/BUILD.num_enum_derive-0.5.7.bazel | 60 - .../rust/remote/BUILD.num_threads-0.1.5.bazel | 64 - .../rust/remote/BUILD.once_cell-1.10.0.bazel | 74 - .../remote/BUILD.opaque-debug-0.2.3.bazel | 54 - .../remote/BUILD.opentelemetry-0.17.0.bazel | 86 - ...UILD.opentelemetry-prometheus-0.10.0.bazel | 59 - .../remote/BUILD.ordered-multimap-0.3.1.bazel | 56 - .../remote/BUILD.os_str_bytes-6.0.0.bazel | 58 - .../remote/BUILD.output_vt100-0.1.3.bazel | 57 - .../rust/remote/BUILD.ownedbytes-0.2.0.bazel | 55 - .../remote/BUILD.parking_lot-0.11.2.bazel | 60 - .../remote/BUILD.parking_lot-0.12.0.bazel | 60 - .../remote/BUILD.parking_lot_core-0.8.5.bazel | 106 - .../remote/BUILD.parking_lot_core-0.9.1.bazel | 105 - rules/rust/remote/BUILD.pathdiff-0.2.1.bazel | 54 - .../remote/BUILD.percent-encoding-2.1.0.bazel | 54 - rules/rust/remote/BUILD.pest-2.1.3.bazel | 61 - .../rust/remote/BUILD.pest_derive-2.1.0.bazel | 64 - .../remote/BUILD.pest_generator-2.1.3.bazel | 59 - rules/rust/remote/BUILD.pest_meta-2.1.3.bazel | 56 - rules/rust/remote/BUILD.petgraph-0.6.0.bazel | 102 - .../remote/BUILD.pin-project-1.0.10.bazel | 101 - .../BUILD.pin-project-internal-1.0.10.bazel | 57 - .../remote/BUILD.pin-project-lite-0.2.8.bazel | 66 - rules/rust/remote/BUILD.pin-utils-0.1.0.bazel | 58 - .../rust/remote/BUILD.pkg-config-0.3.24.bazel | 56 - .../rust/remote/BUILD.ppv-lite86-0.2.16.bazel | 56 - .../BUILD.pretty_assertions-1.2.0.bazel | 64 - .../remote/BUILD.proc-macro-crate-1.1.3.bazel | 56 - .../remote/BUILD.proc-macro2-1.0.36.bazel | 99 - .../rust/remote/BUILD.prometheus-0.13.0.bazel | 121 - rules/rust/remote/BUILD.prost-0.9.0.bazel | 63 - .../rust/remote/BUILD.prost-build-0.9.0.bazel | 96 - .../remote/BUILD.prost-derive-0.9.0.bazel | 59 - .../rust/remote/BUILD.prost-types-0.9.0.bazel | 58 - rules/rust/remote/BUILD.protobuf-2.27.1.bazel | 88 - rules/rust/remote/BUILD.quote-1.0.16.bazel | 61 - rules/rust/remote/BUILD.rand-0.8.5.bazel | 75 - .../rust/remote/BUILD.rand_chacha-0.3.1.bazel | 57 - rules/rust/remote/BUILD.rand_core-0.6.3.bazel | 58 - rules/rust/remote/BUILD.rayon-1.5.1.bazel | 118 - .../rust/remote/BUILD.rayon-core-1.9.1.bazel | 102 - rules/rust/remote/BUILD.rdkafka-0.28.0.bazel | 102 - .../BUILD.rdkafka-sys-4.2.0+1.8.2.bazel | 97 - .../remote/BUILD.redox_syscall-0.2.11.bazel | 64 - rules/rust/remote/BUILD.regex-1.5.5.bazel | 104 - .../remote/BUILD.regex-automata-0.1.10.bazel | 60 - .../remote/BUILD.regex-syntax-0.4.2.bazel | 54 - .../remote/BUILD.regex-syntax-0.6.25.bazel | 65 - .../remote/BUILD.remove_dir_all-0.5.3.bazel | 54 - rules/rust/remote/BUILD.ron-0.7.0.bazel | 109 - rules/rust/remote/BUILD.rust-ini-0.17.0.bazel | 68 - .../remote/BUILD.rust-stemmers-1.2.0.bazel | 60 - rules/rust/remote/BUILD.ryu-1.0.9.bazel | 72 - .../rust/remote/BUILD.scopeguard-1.1.0.bazel | 56 - rules/rust/remote/BUILD.serde-1.0.136.bazel | 95 - .../remote/BUILD.serde_derive-1.0.136.bazel | 89 - .../rust/remote/BUILD.serde_json-1.0.79.bazel | 105 - .../rust/remote/BUILD.serde_yaml-0.8.23.bazel | 66 - rules/rust/remote/BUILD.sha-1-0.8.2.bazel | 73 - .../remote/BUILD.sharded-slab-0.1.4.bazel | 57 - .../remote/BUILD.signal-hook-0.3.13.bazel | 100 - .../BUILD.signal-hook-registry-1.4.0.bazel | 57 - rules/rust/remote/BUILD.slab-0.4.5.bazel | 60 - rules/rust/remote/BUILD.smallvec-1.8.0.bazel | 58 - rules/rust/remote/BUILD.smawk-0.3.1.bazel | 62 - rules/rust/remote/BUILD.socket2-0.4.4.bazel | 66 - .../BUILD.stable_deref_trait-1.2.0.bazel | 57 - .../BUILD.static_assertions-1.1.0.bazel | 54 - rules/rust/remote/BUILD.strsim-0.10.0.bazel | 58 - rules/rust/remote/BUILD.syn-1.0.89.bazel | 167 - rules/rust/remote/BUILD.tantivy-0.17.0.bazel | 151 - .../BUILD.tantivy-bitpacker-0.1.1.bazel | 56 - .../remote/BUILD.tantivy-common-0.1.0.bazel | 55 - .../remote/BUILD.tantivy-common-0.2.0.bazel | 56 - .../rust/remote/BUILD.tantivy-fst-0.3.0.bazel | 61 - .../BUILD.tantivy-query-grammar-0.15.0.bazel | 55 - rules/rust/remote/BUILD.tempfile-3.3.0.bazel | 76 - rules/rust/remote/BUILD.termcolor-1.1.3.bazel | 54 - rules/rust/remote/BUILD.textwrap-0.15.0.bazel | 73 - .../rust/remote/BUILD.thiserror-1.0.30.bazel | 81 - .../remote/BUILD.thiserror-impl-1.0.30.bazel | 57 - .../remote/BUILD.thread_local-1.1.4.bazel | 57 - rules/rust/remote/BUILD.time-0.1.44.bazel | 55 - rules/rust/remote/BUILD.time-0.3.7.bazel | 73 - rules/rust/remote/BUILD.tokio-1.17.0.bazel | 315 - .../remote/BUILD.tokio-io-timeout-1.2.0.bazel | 56 - .../remote/BUILD.tokio-macros-1.7.0.bazel | 57 - .../remote/BUILD.tokio-stream-0.1.8.bazel | 85 - .../rust/remote/BUILD.tokio-util-0.6.9.bazel | 96 - .../rust/remote/BUILD.tokio-util-0.7.0.bazel | 96 - rules/rust/remote/BUILD.toml-0.5.8.bazel | 64 - rules/rust/remote/BUILD.tonic-0.6.2.bazel | 97 - .../rust/remote/BUILD.tonic-build-0.6.2.bazel | 61 - rules/rust/remote/BUILD.tower-0.4.12.bazel | 114 - .../rust/remote/BUILD.tower-http-0.2.5.bazel | 69 - .../rust/remote/BUILD.tower-layer-0.3.1.bazel | 54 - .../remote/BUILD.tower-service-0.3.1.bazel | 54 - rules/rust/remote/BUILD.tracing-0.1.32.bazel | 100 - .../remote/BUILD.tracing-appender-0.2.2.bazel | 57 - .../BUILD.tracing-attributes-0.1.20.bazel | 77 - .../remote/BUILD.tracing-core-0.1.23.bazel | 65 - .../remote/BUILD.tracing-futures-0.2.5.bazel | 64 - .../rust/remote/BUILD.tracing-log-0.1.2.bazel | 63 - .../remote/BUILD.tracing-serde-0.1.3.bazel | 56 - .../BUILD.tracing-subscriber-0.3.9.bazel | 129 - rules/rust/remote/BUILD.try-lock-0.2.3.bazel | 54 - rules/rust/remote/BUILD.twox-hash-1.6.2.bazel | 83 - rules/rust/remote/BUILD.typenum-1.15.0.bazel | 86 - rules/rust/remote/BUILD.ucd-trie-0.1.3.bazel | 58 - .../BUILD.unicode-linebreak-0.1.2.bazel | 85 - .../BUILD.unicode-segmentation-1.9.0.bazel | 60 - .../remote/BUILD.unicode-width-0.1.9.bazel | 55 - .../rust/remote/BUILD.unicode-xid-0.2.2.bazel | 59 - .../rust/remote/BUILD.utf8-ranges-1.0.4.bazel | 56 - rules/rust/remote/BUILD.uuid-0.8.2.bazel | 71 - rules/rust/remote/BUILD.valuable-0.1.0.bazel | 96 - rules/rust/remote/BUILD.vcpkg-0.2.15.bazel | 54 - .../remote/BUILD.version_check-0.9.4.bazel | 54 - rules/rust/remote/BUILD.want-0.3.0.bazel | 58 - ...D.wasi-0.10.0+wasi-snapshot-preview1.bazel | 56 - ...D.wasi-0.11.0+wasi-snapshot-preview1.bazel | 56 - .../remote/BUILD.wasm-bindgen-0.2.79.bazel | 106 - .../BUILD.wasm-bindgen-backend-0.2.79.bazel | 62 - .../BUILD.wasm-bindgen-macro-0.2.79.bazel | 59 - ...LD.wasm-bindgen-macro-support-0.2.79.bazel | 60 - .../BUILD.wasm-bindgen-shared-0.2.79.bazel | 85 - rules/rust/remote/BUILD.which-4.2.5.bazel | 58 - rules/rust/remote/BUILD.winapi-0.3.9.bazel | 154 - ...ILD.winapi-i686-pc-windows-gnu-0.4.0.bazel | 84 - .../rust/remote/BUILD.winapi-util-0.1.5.bazel | 54 - ...D.winapi-x86_64-pc-windows-gnu-0.4.0.bazel | 84 - .../remote/BUILD.windows-sys-0.32.0.bazel | 61 - .../BUILD.windows_aarch64_msvc-0.32.0.bazel | 84 - .../BUILD.windows_i686_gnu-0.32.0.bazel | 84 - .../BUILD.windows_i686_msvc-0.32.0.bazel | 84 - .../BUILD.windows_x86_64_gnu-0.32.0.bazel | 84 - .../BUILD.windows_x86_64_msvc-0.32.0.bazel | 84 - rules/rust/remote/BUILD.yaml-rust-0.4.5.bazel | 63 - rules/rust/rustfmt.toml | 1 - 526 files changed, 9909 insertions(+), 44224 deletions(-) delete mode 100644 apps/nexus-cognitron-web/envoy.yaml delete mode 100644 idm/api/proto/chat_manager_service_pb2.py delete mode 100644 idm/api/proto/chat_manager_service_pb2_grpc.py create mode 100644 idm/api/proto/profile_service.proto create mode 100644 idm/api/proto/subscription_manager_service.proto create mode 100644 idm/api/services/profile.py create mode 100644 idm/api/services/subscription_manager.py delete mode 100644 library/js/BUILD.bazel delete mode 100644 library/js/base-client.js delete mode 100644 library/js/utils.js create mode 100644 library/telegram/common.py create mode 100644 nexus/bot/handlers/aboutus.py delete mode 100644 nexus/bot/handlers/contact.py delete mode 100644 nexus/bot/handlers/emoji.py rename nexus/bot/handlers/{donate.py => howtohelp.py} (50%) create mode 100644 nexus/bot/handlers/profile.py create mode 100644 nexus/bot/handlers/rank.py create mode 100644 nexus/bot/handlers/seed.py delete mode 100644 nexus/bot/handlers/top_missed.py create mode 100644 nexus/bot/handlers/trends.py create mode 100644 nexus/bot/widgets/profile_widget.py delete mode 100644 nexus/cognitron/web/BUILD.bazel delete mode 100644 nexus/cognitron/web/README.md delete mode 100644 nexus/cognitron/web/app.vue delete mode 100644 nexus/cognitron/web/components/document.vue delete mode 100644 nexus/cognitron/web/components/search-list.vue delete mode 100644 nexus/cognitron/web/components/v-footer.vue delete mode 100644 nexus/cognitron/web/components/v-header.vue delete mode 100644 nexus/cognitron/web/components/v-scimag-search-item.vue delete mode 100644 nexus/cognitron/web/components/v-scimag.vue delete mode 100644 nexus/cognitron/web/components/v-scitech-search-item.vue delete mode 100644 nexus/cognitron/web/components/v-scitech.vue delete mode 100644 nexus/cognitron/web/components/v-tr-multi-link.vue delete mode 100644 nexus/cognitron/web/components/v-tr.vue delete mode 100644 nexus/cognitron/web/nuxt.config.ts delete mode 100644 nexus/cognitron/web/plugins/helpers.js delete mode 100644 nexus/cognitron/web/plugins/meta-api.js delete mode 100644 nexus/cognitron/web/plugins/utils.js delete mode 100644 nexus/cognitron/web/tsconfig.json create mode 100644 nexus/hub/configs/pylon.yaml create mode 100644 nexus/hub/services/mutual_aid_service.py delete mode 100644 nexus/meta_api/js/client/BUILD.bazel delete mode 100644 nexus/meta_api/js/client/index.js create mode 100644 nexus/meta_api/mergers/__init__.py create mode 100644 nexus/meta_api/mergers/aggregation.py create mode 100644 nexus/meta_api/mergers/count.py create mode 100644 nexus/meta_api/mergers/reservoir_sampling.py create mode 100644 nexus/meta_api/mergers/top_docs.py delete mode 100644 nexus/meta_api/models/classic.txt create mode 100644 nexus/meta_api/proto/documents_service_pb2.py create mode 100644 nexus/meta_api/proto/documents_service_pb2_grpc.py create mode 100644 nexus/meta_api/proto/search_service_pb2.py create mode 100644 nexus/meta_api/proto/search_service_pb2_grpc.py delete mode 100644 nexus/meta_api/providers/data.py delete mode 100644 nexus/meta_api/query_extensions/BUILD.bazel delete mode 100644 nexus/meta_api/query_extensions/__init__.py delete mode 100644 nexus/meta_api/query_extensions/checks.py delete mode 100644 nexus/meta_api/query_extensions/grammar/__init__.py delete mode 100644 nexus/meta_api/query_extensions/grammar/parser.py delete mode 100644 nexus/meta_api/query_extensions/grammar/tree.py delete mode 100644 nexus/meta_api/query_extensions/grammar/tree_transformer.py delete mode 100644 nexus/meta_api/query_extensions/tests/BUILD.bazel delete mode 100644 nexus/meta_api/query_extensions/tests/__init__.py delete mode 100644 nexus/meta_api/query_extensions/tests/test.py delete mode 100644 nexus/meta_api/query_extensions/tests/test_grammar.py delete mode 100644 nexus/meta_api/query_extensions/tests/test_query_extensionner.py delete mode 100644 nexus/meta_api/rescorers/__init__.py delete mode 100644 nexus/meta_api/rescorers/base.py delete mode 100644 nexus/meta_api/rescorers/classic_rescorer.py create mode 100644 nexus/meta_api/services/base.py create mode 100644 nexus/meta_api/word_transformers.py delete mode 100644 nexus/models/proto/operation_pb2.py delete mode 100644 nexus/models/proto/scimag_pb2.py delete mode 100644 nexus/models/proto/scitech_pb2.py delete mode 100644 nexus/models/proto/sharience_pb2.py delete mode 100644 nexus/models/proto/typed_document_pb2.py delete mode 100644 nexus/nlptools/BUILD.bazel delete mode 100644 nexus/nlptools/__init__.py delete mode 100644 nexus/nlptools/language_detect.py delete mode 100644 nexus/nlptools/languages.py delete mode 100644 nexus/nlptools/morph.py delete mode 100644 nexus/nlptools/regex.py delete mode 100644 nexus/nlptools/tests/BUILD.bazel delete mode 100644 nexus/nlptools/tests/__init__.py delete mode 100644 nexus/nlptools/tests/test.py delete mode 100644 nexus/nlptools/tests/test_utils.py delete mode 100644 nexus/nlptools/utils.py create mode 100644 nexus/pylon/configs/__init__.py create mode 100644 nexus/pylon/configs/pylon.yaml create mode 100644 nexus/pylon/consts.py create mode 100644 nexus/pylon/drivers/__init__.py create mode 100644 nexus/pylon/drivers/base.py create mode 100644 nexus/pylon/drivers/browser.py create mode 100644 nexus/pylon/drivers/direct.py create mode 100644 nexus/pylon/matcher.py create mode 100644 nexus/pylon/network_agent.py create mode 100644 nexus/pylon/pdftools/text_collector.py create mode 100644 nexus/pylon/pdftools/watermarks.py create mode 100644 nexus/pylon/prepared_request.py create mode 100644 nexus/pylon/proxy_manager.py create mode 100644 nexus/pylon/resolvers/__init__.py create mode 100644 nexus/pylon/resolvers/base.py create mode 100644 nexus/pylon/resolvers/doi_org_request.py create mode 100644 nexus/pylon/resolvers/request.py create mode 100644 nexus/pylon/resolvers/template.py create mode 100644 nexus/pylon/source.py delete mode 100644 nexus/pylon/sources/__init__.py delete mode 100644 nexus/pylon/sources/base.py delete mode 100644 nexus/pylon/sources/libgen_doi.py delete mode 100644 nexus/pylon/sources/libgen_md5.py delete mode 100644 nexus/pylon/sources/libgen_new.py delete mode 100644 nexus/pylon/sources/scihub.py delete mode 100644 nexus/pylon/sources/specific/__init__.py delete mode 100644 nexus/pylon/sources/specific/biorxiv.py delete mode 100644 nexus/pylon/sources/specific/lancet.py delete mode 100644 nexus/pylon/sources/specific/nature.py delete mode 100644 nexus/pylon/sources/specific/nejm.py delete mode 100644 nexus/pylon/sources/specific/pnas.py delete mode 100644 nexus/pylon/sources/specific/research_square.py create mode 100644 nexus/pylon/validators/__init__.py create mode 100644 nexus/pylon/validators/base.py create mode 100644 nexus/pylon/validators/md5.py create mode 100644 nexus/pylon/validators/pdf.py delete mode 100644 nexus/views/js/BUILD.bazel delete mode 100644 nexus/views/js/base.js delete mode 100644 nexus/views/js/helpers.js delete mode 100644 nexus/views/js/index.js delete mode 100644 nexus/views/js/scimag.js delete mode 100644 nexus/views/js/scitech.js delete mode 100644 nexus/views/js/utils.js delete mode 100644 nexus/views/telegram/base.py create mode 100644 nexus/views/telegram/base_holder.py create mode 100644 nexus/views/telegram/base_view_builder.py rename nexus/{bot/widgets => views/telegram}/document_list_widget.py (53%) delete mode 100644 nexus/views/telegram/registry.py create mode 100644 postgres/sql/chats.sql create mode 100644 postgres/sql/series.sql create mode 100644 postgres/sql/subscriptions.sql delete mode 100644 rules/java/BUILD.bazel delete mode 100644 rules/java/artifacts.bzl delete mode 100644 rules/nodejs/.babelrc delete mode 100644 rules/nodejs/BUILD.bazel delete mode 100644 rules/nodejs/common.bzl delete mode 100644 rules/nodejs/package.json delete mode 100644 rules/nodejs/yarn.lock delete mode 100644 rules/rust/BUILD.bazel delete mode 100644 rules/rust/Cargo.lock delete mode 100644 rules/rust/Cargo.raze.lock delete mode 100644 rules/rust/Cargo.toml delete mode 100644 rules/rust/README.md delete mode 100644 rules/rust/cargo/BUILD.bazel delete mode 100644 rules/rust/crates.bzl delete mode 100644 rules/rust/remote/BUILD.ahash-0.4.7.bazel delete mode 100644 rules/rust/remote/BUILD.ahash-0.7.6.bazel delete mode 100644 rules/rust/remote/BUILD.aho-corasick-0.7.18.bazel delete mode 100644 rules/rust/remote/BUILD.alloc-no-stdlib-2.0.3.bazel delete mode 100644 rules/rust/remote/BUILD.alloc-stdlib-0.2.1.bazel delete mode 100644 rules/rust/remote/BUILD.ansi_term-0.12.1.bazel delete mode 100644 rules/rust/remote/BUILD.anyhow-1.0.56.bazel delete mode 100644 rules/rust/remote/BUILD.async-stream-0.3.3.bazel delete mode 100644 rules/rust/remote/BUILD.async-stream-impl-0.3.3.bazel delete mode 100644 rules/rust/remote/BUILD.async-trait-0.1.52.bazel delete mode 100644 rules/rust/remote/BUILD.atty-0.2.14.bazel delete mode 100644 rules/rust/remote/BUILD.autocfg-1.1.0.bazel delete mode 100644 rules/rust/remote/BUILD.base64-0.13.0.bazel delete mode 100644 rules/rust/remote/BUILD.bazel delete mode 100644 rules/rust/remote/BUILD.bitflags-1.3.2.bazel delete mode 100644 rules/rust/remote/BUILD.bitpacking-0.8.4.bazel delete mode 100644 rules/rust/remote/BUILD.block-buffer-0.7.3.bazel delete mode 100644 rules/rust/remote/BUILD.block-padding-0.1.5.bazel delete mode 100644 rules/rust/remote/BUILD.brotli-3.3.3.bazel delete mode 100644 rules/rust/remote/BUILD.brotli-decompressor-2.3.2.bazel delete mode 100644 rules/rust/remote/BUILD.bumpalo-3.9.1.bazel delete mode 100644 rules/rust/remote/BUILD.byte-tools-0.3.1.bazel delete mode 100644 rules/rust/remote/BUILD.byteorder-1.4.3.bazel delete mode 100644 rules/rust/remote/BUILD.bytes-1.1.0.bazel delete mode 100644 rules/rust/remote/BUILD.cc-1.0.73.bazel delete mode 100644 rules/rust/remote/BUILD.census-0.4.0.bazel delete mode 100644 rules/rust/remote/BUILD.cfg-if-1.0.0.bazel delete mode 100644 rules/rust/remote/BUILD.chrono-0.4.19.bazel delete mode 100644 rules/rust/remote/BUILD.clap-3.1.6.bazel delete mode 100644 rules/rust/remote/BUILD.colored-2.0.0.bazel delete mode 100644 rules/rust/remote/BUILD.combine-4.6.3.bazel delete mode 100644 rules/rust/remote/BUILD.config-0.12.0.bazel delete mode 100644 rules/rust/remote/BUILD.crc32fast-1.3.2.bazel delete mode 100644 rules/rust/remote/BUILD.crossbeam-0.8.1.bazel delete mode 100644 rules/rust/remote/BUILD.crossbeam-channel-0.5.4.bazel delete mode 100644 rules/rust/remote/BUILD.crossbeam-deque-0.8.1.bazel delete mode 100644 rules/rust/remote/BUILD.crossbeam-epoch-0.9.8.bazel delete mode 100644 rules/rust/remote/BUILD.crossbeam-queue-0.3.5.bazel delete mode 100644 rules/rust/remote/BUILD.crossbeam-utils-0.8.8.bazel delete mode 100644 rules/rust/remote/BUILD.crunchy-0.2.2.bazel delete mode 100644 rules/rust/remote/BUILD.ctor-0.1.22.bazel delete mode 100644 rules/rust/remote/BUILD.dashmap-4.0.2.bazel delete mode 100644 rules/rust/remote/BUILD.diff-0.1.12.bazel delete mode 100644 rules/rust/remote/BUILD.digest-0.8.1.bazel delete mode 100644 rules/rust/remote/BUILD.dlv-list-0.2.3.bazel delete mode 100644 rules/rust/remote/BUILD.downcast-rs-1.2.0.bazel delete mode 100644 rules/rust/remote/BUILD.either-1.6.1.bazel delete mode 100644 rules/rust/remote/BUILD.fail-0.5.0.bazel delete mode 100644 rules/rust/remote/BUILD.fake-simd-0.1.2.bazel delete mode 100644 rules/rust/remote/BUILD.fastdivide-0.4.0.bazel delete mode 100644 rules/rust/remote/BUILD.fastfield_codecs-0.1.0.bazel delete mode 100644 rules/rust/remote/BUILD.fastrand-1.7.0.bazel delete mode 100644 rules/rust/remote/BUILD.fixedbitset-0.4.1.bazel delete mode 100644 rules/rust/remote/BUILD.fnv-1.0.7.bazel delete mode 100644 rules/rust/remote/BUILD.fs2-0.4.3.bazel delete mode 100644 rules/rust/remote/BUILD.futures-0.3.21.bazel delete mode 100644 rules/rust/remote/BUILD.futures-channel-0.3.21.bazel delete mode 100644 rules/rust/remote/BUILD.futures-core-0.3.21.bazel delete mode 100644 rules/rust/remote/BUILD.futures-executor-0.3.21.bazel delete mode 100644 rules/rust/remote/BUILD.futures-io-0.3.21.bazel delete mode 100644 rules/rust/remote/BUILD.futures-macro-0.3.21.bazel delete mode 100644 rules/rust/remote/BUILD.futures-sink-0.3.21.bazel delete mode 100644 rules/rust/remote/BUILD.futures-task-0.3.21.bazel delete mode 100644 rules/rust/remote/BUILD.futures-util-0.3.21.bazel delete mode 100644 rules/rust/remote/BUILD.generic-array-0.12.4.bazel delete mode 100644 rules/rust/remote/BUILD.getrandom-0.2.5.bazel delete mode 100644 rules/rust/remote/BUILD.h2-0.3.12.bazel delete mode 100644 rules/rust/remote/BUILD.hashbrown-0.11.2.bazel delete mode 100644 rules/rust/remote/BUILD.hashbrown-0.9.1.bazel delete mode 100644 rules/rust/remote/BUILD.heck-0.3.3.bazel delete mode 100644 rules/rust/remote/BUILD.hermit-abi-0.1.19.bazel delete mode 100644 rules/rust/remote/BUILD.htmlescape-0.3.1.bazel delete mode 100644 rules/rust/remote/BUILD.http-0.2.6.bazel delete mode 100644 rules/rust/remote/BUILD.http-body-0.4.4.bazel delete mode 100644 rules/rust/remote/BUILD.http-range-header-0.3.0.bazel delete mode 100644 rules/rust/remote/BUILD.httparse-1.6.0.bazel delete mode 100644 rules/rust/remote/BUILD.httpdate-1.0.2.bazel delete mode 100644 rules/rust/remote/BUILD.hyper-0.14.17.bazel delete mode 100644 rules/rust/remote/BUILD.hyper-timeout-0.4.1.bazel delete mode 100644 rules/rust/remote/BUILD.indexmap-1.8.0.bazel delete mode 100644 rules/rust/remote/BUILD.instant-0.1.12.bazel delete mode 100644 rules/rust/remote/BUILD.itertools-0.10.3.bazel delete mode 100644 rules/rust/remote/BUILD.itoa-1.0.1.bazel delete mode 100644 rules/rust/remote/BUILD.js-sys-0.3.56.bazel delete mode 100644 rules/rust/remote/BUILD.json5-0.4.1.bazel delete mode 100644 rules/rust/remote/BUILD.lazy_static-1.4.0.bazel delete mode 100644 rules/rust/remote/BUILD.levenshtein_automata-0.2.1.bazel delete mode 100644 rules/rust/remote/BUILD.libc-0.2.121.bazel delete mode 100644 rules/rust/remote/BUILD.libz-sys-1.1.5.bazel delete mode 100644 rules/rust/remote/BUILD.linked-hash-map-0.5.4.bazel delete mode 100644 rules/rust/remote/BUILD.lock_api-0.4.6.bazel delete mode 100644 rules/rust/remote/BUILD.log-0.4.14.bazel delete mode 100644 rules/rust/remote/BUILD.lru-0.7.3.bazel delete mode 100644 rules/rust/remote/BUILD.lz4_flex-0.9.2.bazel delete mode 100644 rules/rust/remote/BUILD.maplit-1.0.2.bazel delete mode 100644 rules/rust/remote/BUILD.matchers-0.1.0.bazel delete mode 100644 rules/rust/remote/BUILD.measure_time-0.8.0.bazel delete mode 100644 rules/rust/remote/BUILD.memchr-2.4.1.bazel delete mode 100644 rules/rust/remote/BUILD.memmap2-0.5.3.bazel delete mode 100644 rules/rust/remote/BUILD.memoffset-0.6.5.bazel delete mode 100644 rules/rust/remote/BUILD.minimal-lexical-0.2.1.bazel delete mode 100644 rules/rust/remote/BUILD.mio-0.8.2.bazel delete mode 100644 rules/rust/remote/BUILD.miow-0.3.7.bazel delete mode 100644 rules/rust/remote/BUILD.multimap-0.8.3.bazel delete mode 100644 rules/rust/remote/BUILD.murmurhash32-0.2.0.bazel delete mode 100644 rules/rust/remote/BUILD.nom-7.1.1.bazel delete mode 100644 rules/rust/remote/BUILD.ntapi-0.3.7.bazel delete mode 100644 rules/rust/remote/BUILD.num-integer-0.1.44.bazel delete mode 100644 rules/rust/remote/BUILD.num-traits-0.2.14.bazel delete mode 100644 rules/rust/remote/BUILD.num_cpus-1.13.1.bazel delete mode 100644 rules/rust/remote/BUILD.num_enum-0.5.7.bazel delete mode 100644 rules/rust/remote/BUILD.num_enum_derive-0.5.7.bazel delete mode 100644 rules/rust/remote/BUILD.num_threads-0.1.5.bazel delete mode 100644 rules/rust/remote/BUILD.once_cell-1.10.0.bazel delete mode 100644 rules/rust/remote/BUILD.opaque-debug-0.2.3.bazel delete mode 100644 rules/rust/remote/BUILD.opentelemetry-0.17.0.bazel delete mode 100644 rules/rust/remote/BUILD.opentelemetry-prometheus-0.10.0.bazel delete mode 100644 rules/rust/remote/BUILD.ordered-multimap-0.3.1.bazel delete mode 100644 rules/rust/remote/BUILD.os_str_bytes-6.0.0.bazel delete mode 100644 rules/rust/remote/BUILD.output_vt100-0.1.3.bazel delete mode 100644 rules/rust/remote/BUILD.ownedbytes-0.2.0.bazel delete mode 100644 rules/rust/remote/BUILD.parking_lot-0.11.2.bazel delete mode 100644 rules/rust/remote/BUILD.parking_lot-0.12.0.bazel delete mode 100644 rules/rust/remote/BUILD.parking_lot_core-0.8.5.bazel delete mode 100644 rules/rust/remote/BUILD.parking_lot_core-0.9.1.bazel delete mode 100644 rules/rust/remote/BUILD.pathdiff-0.2.1.bazel delete mode 100644 rules/rust/remote/BUILD.percent-encoding-2.1.0.bazel delete mode 100644 rules/rust/remote/BUILD.pest-2.1.3.bazel delete mode 100644 rules/rust/remote/BUILD.pest_derive-2.1.0.bazel delete mode 100644 rules/rust/remote/BUILD.pest_generator-2.1.3.bazel delete mode 100644 rules/rust/remote/BUILD.pest_meta-2.1.3.bazel delete mode 100644 rules/rust/remote/BUILD.petgraph-0.6.0.bazel delete mode 100644 rules/rust/remote/BUILD.pin-project-1.0.10.bazel delete mode 100644 rules/rust/remote/BUILD.pin-project-internal-1.0.10.bazel delete mode 100644 rules/rust/remote/BUILD.pin-project-lite-0.2.8.bazel delete mode 100644 rules/rust/remote/BUILD.pin-utils-0.1.0.bazel delete mode 100644 rules/rust/remote/BUILD.pkg-config-0.3.24.bazel delete mode 100644 rules/rust/remote/BUILD.ppv-lite86-0.2.16.bazel delete mode 100644 rules/rust/remote/BUILD.pretty_assertions-1.2.0.bazel delete mode 100644 rules/rust/remote/BUILD.proc-macro-crate-1.1.3.bazel delete mode 100644 rules/rust/remote/BUILD.proc-macro2-1.0.36.bazel delete mode 100644 rules/rust/remote/BUILD.prometheus-0.13.0.bazel delete mode 100644 rules/rust/remote/BUILD.prost-0.9.0.bazel delete mode 100644 rules/rust/remote/BUILD.prost-build-0.9.0.bazel delete mode 100644 rules/rust/remote/BUILD.prost-derive-0.9.0.bazel delete mode 100644 rules/rust/remote/BUILD.prost-types-0.9.0.bazel delete mode 100644 rules/rust/remote/BUILD.protobuf-2.27.1.bazel delete mode 100644 rules/rust/remote/BUILD.quote-1.0.16.bazel delete mode 100644 rules/rust/remote/BUILD.rand-0.8.5.bazel delete mode 100644 rules/rust/remote/BUILD.rand_chacha-0.3.1.bazel delete mode 100644 rules/rust/remote/BUILD.rand_core-0.6.3.bazel delete mode 100644 rules/rust/remote/BUILD.rayon-1.5.1.bazel delete mode 100644 rules/rust/remote/BUILD.rayon-core-1.9.1.bazel delete mode 100644 rules/rust/remote/BUILD.rdkafka-0.28.0.bazel delete mode 100644 rules/rust/remote/BUILD.rdkafka-sys-4.2.0+1.8.2.bazel delete mode 100644 rules/rust/remote/BUILD.redox_syscall-0.2.11.bazel delete mode 100644 rules/rust/remote/BUILD.regex-1.5.5.bazel delete mode 100644 rules/rust/remote/BUILD.regex-automata-0.1.10.bazel delete mode 100644 rules/rust/remote/BUILD.regex-syntax-0.4.2.bazel delete mode 100644 rules/rust/remote/BUILD.regex-syntax-0.6.25.bazel delete mode 100644 rules/rust/remote/BUILD.remove_dir_all-0.5.3.bazel delete mode 100644 rules/rust/remote/BUILD.ron-0.7.0.bazel delete mode 100644 rules/rust/remote/BUILD.rust-ini-0.17.0.bazel delete mode 100644 rules/rust/remote/BUILD.rust-stemmers-1.2.0.bazel delete mode 100644 rules/rust/remote/BUILD.ryu-1.0.9.bazel delete mode 100644 rules/rust/remote/BUILD.scopeguard-1.1.0.bazel delete mode 100644 rules/rust/remote/BUILD.serde-1.0.136.bazel delete mode 100644 rules/rust/remote/BUILD.serde_derive-1.0.136.bazel delete mode 100644 rules/rust/remote/BUILD.serde_json-1.0.79.bazel delete mode 100644 rules/rust/remote/BUILD.serde_yaml-0.8.23.bazel delete mode 100644 rules/rust/remote/BUILD.sha-1-0.8.2.bazel delete mode 100644 rules/rust/remote/BUILD.sharded-slab-0.1.4.bazel delete mode 100644 rules/rust/remote/BUILD.signal-hook-0.3.13.bazel delete mode 100644 rules/rust/remote/BUILD.signal-hook-registry-1.4.0.bazel delete mode 100644 rules/rust/remote/BUILD.slab-0.4.5.bazel delete mode 100644 rules/rust/remote/BUILD.smallvec-1.8.0.bazel delete mode 100644 rules/rust/remote/BUILD.smawk-0.3.1.bazel delete mode 100644 rules/rust/remote/BUILD.socket2-0.4.4.bazel delete mode 100644 rules/rust/remote/BUILD.stable_deref_trait-1.2.0.bazel delete mode 100644 rules/rust/remote/BUILD.static_assertions-1.1.0.bazel delete mode 100644 rules/rust/remote/BUILD.strsim-0.10.0.bazel delete mode 100644 rules/rust/remote/BUILD.syn-1.0.89.bazel delete mode 100644 rules/rust/remote/BUILD.tantivy-0.17.0.bazel delete mode 100644 rules/rust/remote/BUILD.tantivy-bitpacker-0.1.1.bazel delete mode 100644 rules/rust/remote/BUILD.tantivy-common-0.1.0.bazel delete mode 100644 rules/rust/remote/BUILD.tantivy-common-0.2.0.bazel delete mode 100644 rules/rust/remote/BUILD.tantivy-fst-0.3.0.bazel delete mode 100644 rules/rust/remote/BUILD.tantivy-query-grammar-0.15.0.bazel delete mode 100644 rules/rust/remote/BUILD.tempfile-3.3.0.bazel delete mode 100644 rules/rust/remote/BUILD.termcolor-1.1.3.bazel delete mode 100644 rules/rust/remote/BUILD.textwrap-0.15.0.bazel delete mode 100644 rules/rust/remote/BUILD.thiserror-1.0.30.bazel delete mode 100644 rules/rust/remote/BUILD.thiserror-impl-1.0.30.bazel delete mode 100644 rules/rust/remote/BUILD.thread_local-1.1.4.bazel delete mode 100644 rules/rust/remote/BUILD.time-0.1.44.bazel delete mode 100644 rules/rust/remote/BUILD.time-0.3.7.bazel delete mode 100644 rules/rust/remote/BUILD.tokio-1.17.0.bazel delete mode 100644 rules/rust/remote/BUILD.tokio-io-timeout-1.2.0.bazel delete mode 100644 rules/rust/remote/BUILD.tokio-macros-1.7.0.bazel delete mode 100644 rules/rust/remote/BUILD.tokio-stream-0.1.8.bazel delete mode 100644 rules/rust/remote/BUILD.tokio-util-0.6.9.bazel delete mode 100644 rules/rust/remote/BUILD.tokio-util-0.7.0.bazel delete mode 100644 rules/rust/remote/BUILD.toml-0.5.8.bazel delete mode 100644 rules/rust/remote/BUILD.tonic-0.6.2.bazel delete mode 100644 rules/rust/remote/BUILD.tonic-build-0.6.2.bazel delete mode 100644 rules/rust/remote/BUILD.tower-0.4.12.bazel delete mode 100644 rules/rust/remote/BUILD.tower-http-0.2.5.bazel delete mode 100644 rules/rust/remote/BUILD.tower-layer-0.3.1.bazel delete mode 100644 rules/rust/remote/BUILD.tower-service-0.3.1.bazel delete mode 100644 rules/rust/remote/BUILD.tracing-0.1.32.bazel delete mode 100644 rules/rust/remote/BUILD.tracing-appender-0.2.2.bazel delete mode 100644 rules/rust/remote/BUILD.tracing-attributes-0.1.20.bazel delete mode 100644 rules/rust/remote/BUILD.tracing-core-0.1.23.bazel delete mode 100644 rules/rust/remote/BUILD.tracing-futures-0.2.5.bazel delete mode 100644 rules/rust/remote/BUILD.tracing-log-0.1.2.bazel delete mode 100644 rules/rust/remote/BUILD.tracing-serde-0.1.3.bazel delete mode 100644 rules/rust/remote/BUILD.tracing-subscriber-0.3.9.bazel delete mode 100644 rules/rust/remote/BUILD.try-lock-0.2.3.bazel delete mode 100644 rules/rust/remote/BUILD.twox-hash-1.6.2.bazel delete mode 100644 rules/rust/remote/BUILD.typenum-1.15.0.bazel delete mode 100644 rules/rust/remote/BUILD.ucd-trie-0.1.3.bazel delete mode 100644 rules/rust/remote/BUILD.unicode-linebreak-0.1.2.bazel delete mode 100644 rules/rust/remote/BUILD.unicode-segmentation-1.9.0.bazel delete mode 100644 rules/rust/remote/BUILD.unicode-width-0.1.9.bazel delete mode 100644 rules/rust/remote/BUILD.unicode-xid-0.2.2.bazel delete mode 100644 rules/rust/remote/BUILD.utf8-ranges-1.0.4.bazel delete mode 100644 rules/rust/remote/BUILD.uuid-0.8.2.bazel delete mode 100644 rules/rust/remote/BUILD.valuable-0.1.0.bazel delete mode 100644 rules/rust/remote/BUILD.vcpkg-0.2.15.bazel delete mode 100644 rules/rust/remote/BUILD.version_check-0.9.4.bazel delete mode 100644 rules/rust/remote/BUILD.want-0.3.0.bazel delete mode 100644 rules/rust/remote/BUILD.wasi-0.10.0+wasi-snapshot-preview1.bazel delete mode 100644 rules/rust/remote/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel delete mode 100644 rules/rust/remote/BUILD.wasm-bindgen-0.2.79.bazel delete mode 100644 rules/rust/remote/BUILD.wasm-bindgen-backend-0.2.79.bazel delete mode 100644 rules/rust/remote/BUILD.wasm-bindgen-macro-0.2.79.bazel delete mode 100644 rules/rust/remote/BUILD.wasm-bindgen-macro-support-0.2.79.bazel delete mode 100644 rules/rust/remote/BUILD.wasm-bindgen-shared-0.2.79.bazel delete mode 100644 rules/rust/remote/BUILD.which-4.2.5.bazel delete mode 100644 rules/rust/remote/BUILD.winapi-0.3.9.bazel delete mode 100644 rules/rust/remote/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel delete mode 100644 rules/rust/remote/BUILD.winapi-util-0.1.5.bazel delete mode 100644 rules/rust/remote/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel delete mode 100644 rules/rust/remote/BUILD.windows-sys-0.32.0.bazel delete mode 100644 rules/rust/remote/BUILD.windows_aarch64_msvc-0.32.0.bazel delete mode 100644 rules/rust/remote/BUILD.windows_i686_gnu-0.32.0.bazel delete mode 100644 rules/rust/remote/BUILD.windows_i686_msvc-0.32.0.bazel delete mode 100644 rules/rust/remote/BUILD.windows_x86_64_gnu-0.32.0.bazel delete mode 100644 rules/rust/remote/BUILD.windows_x86_64_msvc-0.32.0.bazel delete mode 100644 rules/rust/remote/BUILD.yaml-rust-0.4.5.bazel delete mode 100644 rules/rust/rustfmt.toml diff --git a/BUILD.bazel b/BUILD.bazel index 5a12b96..2f04405 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -14,7 +14,6 @@ config_setting( platform( name = "linux_x86", constraint_values = [ - "@rules_rust//rust/platform:linux", "@bazel_tools//platforms:linux", "@bazel_tools//platforms:x86_64", ], diff --git a/WORKSPACE b/WORKSPACE index fc73047..f0c1755 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,7 +1,4 @@ -workspace( - name = "hyperboria", - managed_directories = {"@npm": ["rules/nodejs/node_modules"]}, -) +workspace(name = "hyperboria") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") @@ -9,9 +6,14 @@ http_archive( name = "bazel_skylib", sha256 = "ebdf850bfef28d923a2cc67ddca86355a449b5e4f38b0a70e584dc24e5984aa6", strip_prefix = "bazel-skylib-f80bc733d4b9f83d427ce3442be2e07427b2cc8d", - urls = [ - "https://github.com/bazelbuild/bazel-skylib/archive/f80bc733d4b9f83d427ce3442be2e07427b2cc8d.tar.gz", - ], + urls = ["https://github.com/bazelbuild/bazel-skylib/archive/f80bc733d4b9f83d427ce3442be2e07427b2cc8d.tar.gz"], +) + +http_archive( + name = "com_github_grpc_grpc", + sha256 = "291db3c4e030164421b89833ee761a2e6ca06b1d1f8e67953df762665d89439d", + strip_prefix = "grpc-1.46.1", + urls = ["https://github.com/grpc/grpc/archive/v1.46.1.tar.gz"], ) # ToDo: wait for https://github.com/bazelbuild/rules_docker/pull/1638 @@ -24,46 +26,18 @@ http_archive( ], ) -http_archive( - name = "build_bazel_rules_nodejs", - sha256 = "f7037c8e295fdc921f714962aee7c496110052511e2b14076bd8e2d46bc9819c", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/4.4.5/rules_nodejs-4.4.5.tar.gz"], -) - http_archive( name = "io_bazel_rules_k8s", sha256 = "a08850199d6900328ef899906717fb1dfcc6cde62701c63725748b2e6ca1d5d9", strip_prefix = "rules_k8s-d05cbea5c56738ef02c667c10951294928a1d64a", - urls = [ - "https://github.com/bazelbuild/rules_k8s/archive/d05cbea5c56738ef02c667c10951294928a1d64a.tar.gz", - ], -) - -http_archive( - name = "rules_rust", - sha256 = "30c1b40d77a262e3f7dba6e4267fe4695b5eb1e68debc6aa06c3e09d429ae19a", - strip_prefix = "rules_rust-0.1.0", - urls = [ - "https://github.com/bazelbuild/rules_rust/archive/0.1.0.tar.gz", - ], -) - -http_archive( - name = "rules_jvm_external", - sha256 = "2a547d8d5e99703de8de54b6188ff0ed470b3bfc88e346972d1c8865e2688391", - strip_prefix = "rules_jvm_external-3.3", - urls = [ - "https://github.com/bazelbuild/rules_jvm_external/archive/3.3.tar.gz", - ], + urls = ["https://github.com/bazelbuild/rules_k8s/archive/d05cbea5c56738ef02c667c10951294928a1d64a.tar.gz"], ) http_archive( name = "rules_pkg", sha256 = "b9a5bdfe4f8ce0dedf9387eadd9f4844c383118b3f4cc27b586626b7998141c3", strip_prefix = "rules_pkg-4b0b9f4679484f107f750a60190ff5ec6b164a5f/pkg", - urls = [ - "https://github.com/bazelbuild/rules_pkg/archive/4b0b9f4679484f107f750a60190ff5ec6b164a5f.tar.gz", - ], + urls = ["https://github.com/bazelbuild/rules_pkg/archive/4b0b9f4679484f107f750a60190ff5ec6b164a5f.tar.gz"], ) http_archive( @@ -75,9 +49,24 @@ http_archive( http_archive( name = "rules_python", - sha256 = "15f84594af9da06750ceb878abbf129241421e3abbd6e36893041188db67f2fb", - strip_prefix = "rules_python-0.7.0", - urls = ["https://github.com/bazelbuild/rules_python/archive/0.7.0.tar.gz"], + sha256 = "95525d542c925bc2f4a7ac9b68449fc96ca52cfba15aa883f7193cdf745c38ff", + strip_prefix = "rules_python-cccbfb920c8b100744c53c0c03900f1be4040fe8", + url = "https://github.com/ppodolsky/rules_python/archive/cccbfb920c8b100744c53c0c03900f1be4040fe8.tar.gz", +) + +http_archive( + name = "org_chromium_chromium", + build_file_content = """exports_files(["chromedriver"])""", + strip_prefix = "ungoogled-chromium_103.0.5060.134_1.vaapi_linux", + urls = [ + "https://github.com/macchrome/linchrome/releases/download/v103.0.5060.134-r1002911-portable-ungoogled-Lin64/ungoogled-chromium_103.0.5060.134_1.vaapi_linux.tar.xz", + ], +) + +http_archive( + name = "org_izihawa_summa", + strip_prefix = "summa-ab7ea3eba9846094d1792077d578ddb585d8e070", + url = "https://github.com/izihawa/summa/archive/ab7ea3eba9846094d1792077d578ddb585d8e070.tar.gz", ) # Images Install @@ -97,12 +86,19 @@ load("//rules/go:install.bzl", "go_install") go_install() # Python -register_toolchains("//rules/python:py_toolchain") +load("@rules_python//python:repositories.bzl", "python_register_toolchains") +python_register_toolchains( + name = "python3_10", + python_version = "3.10", +) + +load("@python3_10//:defs.bzl", "interpreter") load("@rules_python//python:pip.bzl", "pip_parse") pip_parse( name = "pip_modules", + python_interpreter_target = interpreter, requirements_lock = "//rules/python:requirements-lock.txt", ) @@ -126,43 +122,13 @@ load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_deps") grpc_deps() -load("@com_github_grpc_grpc//bazel:grpc_extra_deps.bzl", "grpc_extra_deps") +load("@com_google_googleapis//:repository_rules.bzl", "switched_rules_by_language") -grpc_extra_deps() - -# Java - -load("//rules/java:artifacts.bzl", "maven_fetch_remote_artifacts") - -maven_fetch_remote_artifacts() - -# Rust - -load("@rules_rust//rust:repositories.bzl", "rust_repositories") - -rust_repositories( - edition = "2021", - version = "1.59.0", -) - -load("//rules/rust:crates.bzl", "raze_fetch_remote_crates") - -raze_fetch_remote_crates() - -# NodeJS -load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") - -node_repositories( - package_json = ["//rules/nodejs:package.json"], - preserve_symlinks = True, -) - -yarn_install( - name = "npm", - package_json = "//rules/nodejs:package.json", - symlink_node_modules = True, - use_global_yarn_cache = True, - yarn_lock = "//rules/nodejs:yarn.lock", +switched_rules_by_language( + name = "com_google_googleapis_imports", + cc = True, + grpc = True, + python = True, ) # Packaging @@ -185,19 +151,13 @@ load("@io_bazel_rules_docker//repositories:py_repositories.bzl", "py_deps") py_deps() -load("@io_bazel_rules_docker//java:image.bzl", java_image_repos = "repositories") load("@io_bazel_rules_docker//python3:image.bzl", py3_image_repos = "repositories") load("@io_bazel_rules_docker//nodejs:image.bzl", nodejs_image_repos = "repositories") -load("@io_bazel_rules_docker//rust:image.bzl", rust_image_repos = "repositories") - -java_image_repos() nodejs_image_repos() py3_image_repos() -rust_image_repos() - # K8s load("@io_bazel_rules_k8s//k8s:k8s.bzl", "k8s_defaults", "k8s_repositories") diff --git a/apps/nexus-cognitron-web/docker-compose.yaml b/apps/nexus-cognitron-web/docker-compose.yaml index 4b770f8..612d9d3 100644 --- a/apps/nexus-cognitron-web/docker-compose.yaml +++ b/apps/nexus-cognitron-web/docker-compose.yaml @@ -1,41 +1,12 @@ --- services: nexus-cognitron-web: - depends_on: - - nexus-meta-api-envoy environment: ENV_TYPE: production NEXUS_COGNITRON_WEB_application.address: 0.0.0.0 NEXUS_COGNITRON_WEB_application.port: 3000 NEXUS_COGNITRON_WEB_ipfs.gateway.url: https://cloudflare-ipfs.com - NEXUS_COGNITRON_WEB_meta_api.url: http://localhost:8080 image: thesuperpirate/nexus-cognitron-web:latest ports: - '3000:3000' - nexus-meta-api: - depends_on: - - summa - environment: - ENV_TYPE: production - NEXUS_META_API_grpc.address: '0.0.0.0' - NEXUS_META_API_grpc.port: 9090 - NEXUS_META_API_summa.url: 'http://summa:8082' - image: thesuperpirate/nexus-meta-api:latest - nexus-meta-api-envoy: - depends_on: - - nexus-meta-api - image: envoyproxy/envoy-dev:latest - ports: - - '8080:8080' - volumes: - - './envoy.yaml:/etc/envoy/envoy.yaml' - summa: - environment: - ENV_TYPE: production - SUMMA_debug: 'true' - SUMMA_http.address: '0.0.0.0' - SUMMA_http.port: '8082' - image: izihawa/summa:latest - volumes: - - '${DATA_PATH}:/summa/data' version: "3" diff --git a/apps/nexus-cognitron-web/envoy.yaml b/apps/nexus-cognitron-web/envoy.yaml deleted file mode 100644 index ce8cd84..0000000 --- a/apps/nexus-cognitron-web/envoy.yaml +++ /dev/null @@ -1,59 +0,0 @@ ---- -admin: - access_log_path: /tmp/admin_access.log - address: - socket_address: - address: 0.0.0.0 - port_value: 9901 -static_resources: - clusters: - - connect_timeout: 5s - http2_protocol_options: {} - lb_policy: round_robin - load_assignment: - cluster_name: cluster_0 - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: nexus-meta-api - port_value: 9090 - name: meta_api_service - type: logical_dns - listeners: - - address: - socket_address: - address: 0.0.0.0 - port_value: 8080 - filter_chains: - - filters: - - name: envoy.filters.network.http_connection_manager - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager - codec_type: auto - http_filters: - - name: envoy.filters.http.grpc_web - - name: envoy.filters.http.cors - - name: envoy.filters.http.router - route_config: - name: local_route - virtual_hosts: - - cors: - allow_headers: keep-alive,user-agent,cache-control,content-type,content-transfer-encoding,request-id,x-accept-content-transfer-encoding,x-accept-response-streaming,x-user-agent,x-grpc-web,grpc-timeout - allow_methods: GET, PUT, DELETE, POST, OPTIONS - allow_origin_string_match: - - prefix: "*" - expose_headers: request-id,grpc-status,grpc-message - max_age: "1728000" - domains: ["*"] - name: local_service - routes: - - match: { prefix: "/" } - route: - cluster: meta_api_service - idle_timeout: 0s - max_stream_duration: - grpc_timeout_header_max: 0s - stat_prefix: ingress_http - name: listener_0 diff --git a/idm/api/BUILD.bazel b/idm/api/BUILD.bazel index a144e81..c5a805a 100644 --- a/idm/api/BUILD.bazel +++ b/idm/api/BUILD.bazel @@ -32,6 +32,9 @@ py3_image( "configs/logging.yaml", ], layers = [ + requirement("aiochclient"), + requirement("aiohttp"), + requirement("croniter"), requirement("grpcio"), requirement("pypika"), requirement("uvloop"), @@ -42,7 +45,7 @@ py3_image( "//library/aiopostgres", "//library/configurator", "//library/telegram", - requirement("izihawa-utils"), + requirement("izihawa_utils"), ], main = "main.py", srcs_version = "PY3ONLY", diff --git a/idm/api/aioclient/aioclient.py b/idm/api/aioclient/aioclient.py index 9005730..cce93c4 100644 --- a/idm/api/aioclient/aioclient.py +++ b/idm/api/aioclient/aioclient.py @@ -1,20 +1,25 @@ -from typing import Optional +from typing import ( + Optional, + TypedDict, + Union, +) from aiogrpcclient import BaseGrpcClient -from idm.api.proto.chat_manager_service_pb2 import Chat as ChatPb -from idm.api.proto.chat_manager_service_pb2 import Chats as ChatsPb -from idm.api.proto.chat_manager_service_pb2 import ( - CreateChatRequest, - GetChatRequest, - ListChatsRequest, - UpdateChatRequest, +from idm.api.proto import ( + chat_manager_service_pb2, + chat_manager_service_pb2_grpc, + profile_service_pb2, + profile_service_pb2_grpc, + subscription_manager_service_pb2, + subscription_manager_service_pb2_grpc, ) -from idm.api.proto.chat_manager_service_pb2_grpc import ChatManagerStub class IdmApiGrpcClient(BaseGrpcClient): stub_clses = { - 'chat_manager': ChatManagerStub, + 'chat_manager': chat_manager_service_pb2_grpc.ChatManagerStub, + 'profile': profile_service_pb2_grpc.ProfileStub, + 'subscription_manager': subscription_manager_service_pb2_grpc.SubscriptionManagerStub, } async def create_chat( @@ -23,15 +28,16 @@ class IdmApiGrpcClient(BaseGrpcClient): username: str, language: str, request_id: Optional[str] = None, - ) -> ChatPb: + session_id: Optional[str] = None, + ) -> chat_manager_service_pb2.Chat: response = await self.stubs['chat_manager'].create_chat( - CreateChatRequest( + chat_manager_service_pb2.CreateChatRequest( chat_id=chat_id, username=username, language=language, ), metadata=( - ('request-id', request_id), + ('request-id', request_id), ('session-id', session_id), ), ) return response @@ -40,11 +46,12 @@ class IdmApiGrpcClient(BaseGrpcClient): self, chat_id: int, request_id: Optional[str] = None, - ) -> ChatPb: + session_id: Optional[str] = None, + ) -> chat_manager_service_pb2.Chat: response = await self.stubs['chat_manager'].get_chat( - GetChatRequest(chat_id=chat_id), + chat_manager_service_pb2.GetChatRequest(chat_id=chat_id), metadata=( - ('request-id', request_id), + ('request-id', request_id), ('session-id', session_id), ), ) return response @@ -52,12 +59,13 @@ class IdmApiGrpcClient(BaseGrpcClient): async def list_chats( self, request_id: Optional[str] = None, + session_id: Optional[str] = None, banned_at_moment: Optional[str] = None, - ) -> ChatsPb: + ) -> chat_manager_service_pb2.Chats: response = await self.stubs['chat_manager'].list_chats( - ListChatsRequest(banned_at_moment=banned_at_moment), + chat_manager_service_pb2.ListChatsRequest(banned_at_moment=banned_at_moment), metadata=( - ('request-id', request_id), + ('request-id', request_id), ('session-id', session_id), ), ) return response @@ -66,25 +74,113 @@ class IdmApiGrpcClient(BaseGrpcClient): self, chat_id: int, request_id: Optional[str] = None, + session_id: Optional[str] = None, language: Optional[str] = None, is_system_messaging_enabled: Optional[bool] = None, is_discovery_enabled: Optional[bool] = None, + is_connectome_enabled: Optional[bool] = None, ban_until: Optional[int] = None, ban_message: Optional[str] = None, is_admin: Optional[bool] = None, - ) -> ChatPb: + ) -> chat_manager_service_pb2.Chat: response = await self.stubs['chat_manager'].update_chat( - UpdateChatRequest( + chat_manager_service_pb2.UpdateChatRequest( chat_id=chat_id, language=language, is_system_messaging_enabled=is_system_messaging_enabled, is_discovery_enabled=is_discovery_enabled, + is_connectome_enabled=is_connectome_enabled, ban_until=ban_until, ban_message=ban_message, is_admin=is_admin, ), metadata=( - ('request-id', request_id), + ('request-id', request_id), ('session-id', session_id), + ), + ) + return response + + async def get_profile( + self, + chat_id: int, + starting_from: int = 0, + last_n_documents: Optional[int] = None, + request_id: Optional[str] = None, + session_id: Optional[str] = None, + ) -> profile_service_pb2.GetProfileResponse: + response = await self.stubs['profile'].get_profile( + profile_service_pb2.GetProfileRequest( + chat_id=chat_id, + starting_from=starting_from, + last_n_documents=last_n_documents, + ), + metadata=( + ('request-id', request_id), ('session-id', session_id), + ), + ) + return response + + async def subscribe( + self, + chat_id: int, + subscription_query: str, + schedule: str, + is_oneshot: Optional[bool] = None, + is_downloadable: Optional[bool] = None, + valid_until: Optional[int] = None, + subscription_type: subscription_manager_service_pb2.Subscription.Type + = subscription_manager_service_pb2.Subscription.Type.CUSTOM, + request_id: Optional[str] = None, + session_id: Optional[str] = None, + ) -> subscription_manager_service_pb2.SubscribeResponse: + response = await self.stubs['subscription_manager'].subscribe( + subscription_manager_service_pb2.SubscribeRequest( + chat_id=chat_id, + subscription_query=subscription_query, + schedule=schedule, + is_oneshot=is_oneshot, + is_downloadable=is_downloadable, + valid_until=valid_until, + subscription_type=subscription_type, + ), + metadata=( + ('request-id', request_id), + ('session-id', session_id), + ), + ) + return response + + async def get_single_chat_task( + self, + request_id: Optional[str] = None, + session_id: Optional[str] = None, + ) -> subscription_manager_service_pb2.GetSingleChatTaskResponse: + response = await self.stubs['subscription_manager'].get_single_chat_task( + subscription_manager_service_pb2.GetSingleChatTaskRequest(), + metadata=( + ('request-id', request_id), + ('session-id', session_id), + ), + ) + return response + + async def reschedule_subscriptions( + self, + subscriptions_ids: dict, + is_fired: bool = False, + new_schedule: Optional[subscription_manager_service_pb2.NewSchedule] = None, + request_id: Optional[str] = None, + session_id: Optional[str] = None, + ) -> subscription_manager_service_pb2.RescheduleSubscriptionsResponse: + response = await self.stubs['subscription_manager'].reschedule_subscriptions( + subscription_manager_service_pb2.RescheduleSubscriptionsRequest( + is_fired=is_fired, + new_schedule=new_schedule, + **subscriptions_ids, + ), + metadata=( + ('request-id', request_id), + ('session-id', session_id), ), ) return response diff --git a/idm/api/configs/base.yaml b/idm/api/configs/base.yaml index 8b3178f..5dfbe12 100644 --- a/idm/api/configs/base.yaml +++ b/idm/api/configs/base.yaml @@ -3,7 +3,12 @@ application: debug: true service_name: idm-api database: - port: 5432 + idm: + drivername: postgresql + port: 5432 + nexus: + drivername: postgresql + port: 5432 grpc: address: 0.0.0.0 port: 82 diff --git a/idm/api/configs/logging.yaml b/idm/api/configs/logging.yaml index 3b0cdd2..d7b8ecd 100644 --- a/idm/api/configs/logging.yaml +++ b/idm/api/configs/logging.yaml @@ -12,10 +12,14 @@ logging: traceback: class: library.logging.formatters.TracebackFormatter handlers: + console: + class: logging.StreamHandler + level: WARNING + stream: 'ext://sys.stderr' debug: class: library.logging.handlers.BaseFileHandler - formatter: default filename: '{{ log_path }}/debug.log' + formatter: default level: DEBUG error: class: library.logging.handlers.BaseFileHandler @@ -44,6 +48,7 @@ logging: propagate: false error: handlers: + - console - error - traceback - warning @@ -54,10 +59,12 @@ logging: propagate: false telethon: handlers: + - warning - error propagate: false root: handlers: + - console - debug level: DEBUG version: 1 diff --git a/idm/api/main.py b/idm/api/main.py index 5ce6444..9496936 100644 --- a/idm/api/main.py +++ b/idm/api/main.py @@ -1,8 +1,12 @@ import asyncio import uvloop +from aiochclient import ChClient +from aiohttp import ClientSession from idm.api.configs import get_config from idm.api.services.chat_manager import ChatManagerService +from idm.api.services.profile import ProfileService +from idm.api.services.subscription_manager import SubscriptionManagerService from library.aiogrpctools import AioGrpcServer from library.aiopostgres.pool_holder import AioPostgresPoolHolder from library.configurator import Configurator @@ -13,36 +17,50 @@ class GrpcServer(AioGrpcServer): def __init__(self, config: Configurator): super().__init__(address=config['grpc']['address'], port=config['grpc']['port']) database = config['database'] - self.pool_holder = AioPostgresPoolHolder( - conninfo=f'dbname={database["database"]} ' - f'user={database["username"]} ' - f'password={database["password"]} ' - f'host={database["host"]}' - f'port={database["port"]}', - timeout=30, - max_size=4, - ) + self.pool_holder = { + 'idm': AioPostgresPoolHolder( + conninfo=f'dbname={database["idm"]["database"]} user={database["idm"]["username"]} ' + f'password={database["idm"]["password"]} host={database["idm"]["host"]} port={database["idm"]["port"]}', + timeout=30, + max_size=4, + ), + 'nexus': AioPostgresPoolHolder( + conninfo=f'dbname={database["nexus"]["database"]} user={database["nexus"]["username"]} ' + f'password={database["nexus"]["password"]} host={database["nexus"]["host"]} port={database["nexus"]["port"]}', + timeout=30, + max_size=4, + ) + } + self.starts.extend([self.pool_holder['idm'], self.pool_holder['nexus']]) self.chat_manager_service = ChatManagerService( - server=self.server, + application=self, service_name=config['application']['service_name'], - pool_holder=self.pool_holder, ) - self.waits.extend([self.chat_manager_service, self.pool_holder]) - - -async def create_app(config: Configurator): - grpc_server = GrpcServer(config) - await grpc_server.start_and_wait() + self.subscription_manager_service = SubscriptionManagerService( + application=self, + service_name=config['application']['service_name'], + ) + self.clickhouse_session = ClientSession() + self.clickhouse_client = ChClient( + self.clickhouse_session, + url=config['clickhouse']['host'], + user=config['clickhouse']['username'], + password=config['clickhouse']['password'], + ) + self.profile_service = ProfileService( + application=self, + service_name=config['application']['service_name'], + ) + self.starts.extend([self.chat_manager_service, self.profile_service, self.subscription_manager_service]) def main(): config = get_config() configure_logging(config) - if config['metrics']['enabled']: - from library.metrics_server import MetricsServer - MetricsServer(config['metrics']).fork_process() - asyncio.set_event_loop(uvloop.new_event_loop()) - asyncio.get_event_loop().run_until_complete(create_app(config)) + loop = uvloop.new_event_loop() + asyncio.set_event_loop(loop) + grpc_server = GrpcServer(config) + loop.run_until_complete(grpc_server.start_and_wait()) if __name__ == '__main__': diff --git a/idm/api/proto/BUILD.bazel b/idm/api/proto/BUILD.bazel index 92b316e..ee094f4 100644 --- a/idm/api/proto/BUILD.bazel +++ b/idm/api/proto/BUILD.bazel @@ -7,6 +7,8 @@ proto_library( name = "proto", srcs = [ "chat_manager_service.proto", + "profile_service.proto", + "subscription_manager_service.proto", ], deps = [ "@com_google_protobuf//:wrappers_proto", diff --git a/idm/api/proto/chat_manager_service.proto b/idm/api/proto/chat_manager_service.proto index 2244820..97ad6c9 100644 --- a/idm/api/proto/chat_manager_service.proto +++ b/idm/api/proto/chat_manager_service.proto @@ -12,6 +12,7 @@ message Chat { bool is_admin = 8; int64 created_at = 10; int64 updated_at = 11; + bool is_connectome_enabled = 12; } message Chats { @@ -40,6 +41,7 @@ message UpdateChatRequest { optional int32 ban_until = 5; optional string ban_message = 6; optional bool is_admin = 7; + optional bool is_connectome_enabled = 8; } service ChatManager { diff --git a/idm/api/proto/chat_manager_service_pb2.py b/idm/api/proto/chat_manager_service_pb2.py deleted file mode 100644 index 711355b..0000000 --- a/idm/api/proto/chat_manager_service_pb2.py +++ /dev/null @@ -1,503 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: idm/api/proto/chat_manager_service.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='idm/api/proto/chat_manager_service.proto', - package='idm.api.proto', - syntax='proto3', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n(idm/api/proto/chat_manager_service.proto\x12\ridm.api.proto\"\xe3\x01\n\x04\x43hat\x12\x0f\n\x07\x63hat_id\x18\x01 \x01(\x03\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x10\n\x08language\x18\x03 \x01(\t\x12#\n\x1bis_system_messaging_enabled\x18\x04 \x01(\x08\x12\x1c\n\x14is_discovery_enabled\x18\x05 \x01(\x08\x12\x11\n\tban_until\x18\x06 \x01(\x05\x12\x13\n\x0b\x62\x61n_message\x18\x07 \x01(\t\x12\x10\n\x08is_admin\x18\x08 \x01(\x08\x12\x15\n\ris_subscribed\x18\t \x01(\x08\x12\x12\n\ncreated_at\x18\n \x01(\x03\"+\n\x05\x43hats\x12\"\n\x05\x63hats\x18\x01 \x03(\x0b\x32\x13.idm.api.proto.Chat\"H\n\x11\x43reateChatRequest\x12\x0f\n\x07\x63hat_id\x18\x01 \x01(\x03\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x10\n\x08language\x18\x03 \x01(\t\"!\n\x0eGetChatRequest\x12\x0f\n\x07\x63hat_id\x18\x01 \x01(\x03\"F\n\x10ListChatsRequest\x12\x1d\n\x10\x62\x61nned_at_moment\x18\x01 \x01(\x05H\x00\x88\x01\x01\x42\x13\n\x11_banned_at_moment\"\xc2\x02\n\x11UpdateChatRequest\x12\x0f\n\x07\x63hat_id\x18\x01 \x01(\x03\x12\x15\n\x08language\x18\x02 \x01(\tH\x00\x88\x01\x01\x12(\n\x1bis_system_messaging_enabled\x18\x03 \x01(\x08H\x01\x88\x01\x01\x12!\n\x14is_discovery_enabled\x18\x04 \x01(\x08H\x02\x88\x01\x01\x12\x16\n\tban_until\x18\x05 \x01(\x05H\x03\x88\x01\x01\x12\x18\n\x0b\x62\x61n_message\x18\x06 \x01(\tH\x04\x88\x01\x01\x12\x15\n\x08is_admin\x18\x07 \x01(\x08H\x05\x88\x01\x01\x42\x0b\n\t_languageB\x1e\n\x1c_is_system_messaging_enabledB\x17\n\x15_is_discovery_enabledB\x0c\n\n_ban_untilB\x0e\n\x0c_ban_messageB\x0b\n\t_is_admin2\xa6\x02\n\x0b\x43hatManager\x12\x46\n\x0b\x63reate_chat\x12 .idm.api.proto.CreateChatRequest\x1a\x13.idm.api.proto.Chat\"\x00\x12@\n\x08get_chat\x12\x1d.idm.api.proto.GetChatRequest\x1a\x13.idm.api.proto.Chat\"\x00\x12\x45\n\nlist_chats\x12\x1f.idm.api.proto.ListChatsRequest\x1a\x14.idm.api.proto.Chats\"\x00\x12\x46\n\x0bupdate_chat\x12 .idm.api.proto.UpdateChatRequest\x1a\x13.idm.api.proto.Chat\"\x00\x62\x06proto3' -) - - - - -_CHAT = _descriptor.Descriptor( - name='Chat', - full_name='idm.api.proto.Chat', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='chat_id', full_name='idm.api.proto.Chat.chat_id', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='username', full_name='idm.api.proto.Chat.username', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='language', full_name='idm.api.proto.Chat.language', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_system_messaging_enabled', full_name='idm.api.proto.Chat.is_system_messaging_enabled', index=3, - number=4, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_discovery_enabled', full_name='idm.api.proto.Chat.is_discovery_enabled', index=4, - number=5, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ban_until', full_name='idm.api.proto.Chat.ban_until', index=5, - number=6, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ban_message', full_name='idm.api.proto.Chat.ban_message', index=6, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_admin', full_name='idm.api.proto.Chat.is_admin', index=7, - number=8, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_subscribed', full_name='idm.api.proto.Chat.is_subscribed', index=8, - number=9, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='created_at', full_name='idm.api.proto.Chat.created_at', index=9, - number=10, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=60, - serialized_end=287, -) - - -_CHATS = _descriptor.Descriptor( - name='Chats', - full_name='idm.api.proto.Chats', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='chats', full_name='idm.api.proto.Chats.chats', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=289, - serialized_end=332, -) - - -_CREATECHATREQUEST = _descriptor.Descriptor( - name='CreateChatRequest', - full_name='idm.api.proto.CreateChatRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='chat_id', full_name='idm.api.proto.CreateChatRequest.chat_id', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='username', full_name='idm.api.proto.CreateChatRequest.username', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='language', full_name='idm.api.proto.CreateChatRequest.language', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=334, - serialized_end=406, -) - - -_GETCHATREQUEST = _descriptor.Descriptor( - name='GetChatRequest', - full_name='idm.api.proto.GetChatRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='chat_id', full_name='idm.api.proto.GetChatRequest.chat_id', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=408, - serialized_end=441, -) - - -_LISTCHATSREQUEST = _descriptor.Descriptor( - name='ListChatsRequest', - full_name='idm.api.proto.ListChatsRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='banned_at_moment', full_name='idm.api.proto.ListChatsRequest.banned_at_moment', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name='_banned_at_moment', full_name='idm.api.proto.ListChatsRequest._banned_at_moment', - index=0, containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[]), - ], - serialized_start=443, - serialized_end=513, -) - - -_UPDATECHATREQUEST = _descriptor.Descriptor( - name='UpdateChatRequest', - full_name='idm.api.proto.UpdateChatRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='chat_id', full_name='idm.api.proto.UpdateChatRequest.chat_id', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='language', full_name='idm.api.proto.UpdateChatRequest.language', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_system_messaging_enabled', full_name='idm.api.proto.UpdateChatRequest.is_system_messaging_enabled', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_discovery_enabled', full_name='idm.api.proto.UpdateChatRequest.is_discovery_enabled', index=3, - number=4, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ban_until', full_name='idm.api.proto.UpdateChatRequest.ban_until', index=4, - number=5, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ban_message', full_name='idm.api.proto.UpdateChatRequest.ban_message', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_admin', full_name='idm.api.proto.UpdateChatRequest.is_admin', index=6, - number=7, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name='_language', full_name='idm.api.proto.UpdateChatRequest._language', - index=0, containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[]), - _descriptor.OneofDescriptor( - name='_is_system_messaging_enabled', full_name='idm.api.proto.UpdateChatRequest._is_system_messaging_enabled', - index=1, containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[]), - _descriptor.OneofDescriptor( - name='_is_discovery_enabled', full_name='idm.api.proto.UpdateChatRequest._is_discovery_enabled', - index=2, containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[]), - _descriptor.OneofDescriptor( - name='_ban_until', full_name='idm.api.proto.UpdateChatRequest._ban_until', - index=3, containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[]), - _descriptor.OneofDescriptor( - name='_ban_message', full_name='idm.api.proto.UpdateChatRequest._ban_message', - index=4, containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[]), - _descriptor.OneofDescriptor( - name='_is_admin', full_name='idm.api.proto.UpdateChatRequest._is_admin', - index=5, containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[]), - ], - serialized_start=516, - serialized_end=838, -) - -_CHATS.fields_by_name['chats'].message_type = _CHAT -_LISTCHATSREQUEST.oneofs_by_name['_banned_at_moment'].fields.append( - _LISTCHATSREQUEST.fields_by_name['banned_at_moment']) -_LISTCHATSREQUEST.fields_by_name['banned_at_moment'].containing_oneof = _LISTCHATSREQUEST.oneofs_by_name['_banned_at_moment'] -_UPDATECHATREQUEST.oneofs_by_name['_language'].fields.append( - _UPDATECHATREQUEST.fields_by_name['language']) -_UPDATECHATREQUEST.fields_by_name['language'].containing_oneof = _UPDATECHATREQUEST.oneofs_by_name['_language'] -_UPDATECHATREQUEST.oneofs_by_name['_is_system_messaging_enabled'].fields.append( - _UPDATECHATREQUEST.fields_by_name['is_system_messaging_enabled']) -_UPDATECHATREQUEST.fields_by_name['is_system_messaging_enabled'].containing_oneof = _UPDATECHATREQUEST.oneofs_by_name['_is_system_messaging_enabled'] -_UPDATECHATREQUEST.oneofs_by_name['_is_discovery_enabled'].fields.append( - _UPDATECHATREQUEST.fields_by_name['is_discovery_enabled']) -_UPDATECHATREQUEST.fields_by_name['is_discovery_enabled'].containing_oneof = _UPDATECHATREQUEST.oneofs_by_name['_is_discovery_enabled'] -_UPDATECHATREQUEST.oneofs_by_name['_ban_until'].fields.append( - _UPDATECHATREQUEST.fields_by_name['ban_until']) -_UPDATECHATREQUEST.fields_by_name['ban_until'].containing_oneof = _UPDATECHATREQUEST.oneofs_by_name['_ban_until'] -_UPDATECHATREQUEST.oneofs_by_name['_ban_message'].fields.append( - _UPDATECHATREQUEST.fields_by_name['ban_message']) -_UPDATECHATREQUEST.fields_by_name['ban_message'].containing_oneof = _UPDATECHATREQUEST.oneofs_by_name['_ban_message'] -_UPDATECHATREQUEST.oneofs_by_name['_is_admin'].fields.append( - _UPDATECHATREQUEST.fields_by_name['is_admin']) -_UPDATECHATREQUEST.fields_by_name['is_admin'].containing_oneof = _UPDATECHATREQUEST.oneofs_by_name['_is_admin'] -DESCRIPTOR.message_types_by_name['Chat'] = _CHAT -DESCRIPTOR.message_types_by_name['Chats'] = _CHATS -DESCRIPTOR.message_types_by_name['CreateChatRequest'] = _CREATECHATREQUEST -DESCRIPTOR.message_types_by_name['GetChatRequest'] = _GETCHATREQUEST -DESCRIPTOR.message_types_by_name['ListChatsRequest'] = _LISTCHATSREQUEST -DESCRIPTOR.message_types_by_name['UpdateChatRequest'] = _UPDATECHATREQUEST -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Chat = _reflection.GeneratedProtocolMessageType('Chat', (_message.Message,), { - 'DESCRIPTOR' : _CHAT, - '__module__' : 'idm.api.proto.chat_manager_service_pb2' - # @@protoc_insertion_point(class_scope:idm.api.proto.Chat) - }) -_sym_db.RegisterMessage(Chat) - -Chats = _reflection.GeneratedProtocolMessageType('Chats', (_message.Message,), { - 'DESCRIPTOR' : _CHATS, - '__module__' : 'idm.api.proto.chat_manager_service_pb2' - # @@protoc_insertion_point(class_scope:idm.api.proto.Chats) - }) -_sym_db.RegisterMessage(Chats) - -CreateChatRequest = _reflection.GeneratedProtocolMessageType('CreateChatRequest', (_message.Message,), { - 'DESCRIPTOR' : _CREATECHATREQUEST, - '__module__' : 'idm.api.proto.chat_manager_service_pb2' - # @@protoc_insertion_point(class_scope:idm.api.proto.CreateChatRequest) - }) -_sym_db.RegisterMessage(CreateChatRequest) - -GetChatRequest = _reflection.GeneratedProtocolMessageType('GetChatRequest', (_message.Message,), { - 'DESCRIPTOR' : _GETCHATREQUEST, - '__module__' : 'idm.api.proto.chat_manager_service_pb2' - # @@protoc_insertion_point(class_scope:idm.api.proto.GetChatRequest) - }) -_sym_db.RegisterMessage(GetChatRequest) - -ListChatsRequest = _reflection.GeneratedProtocolMessageType('ListChatsRequest', (_message.Message,), { - 'DESCRIPTOR' : _LISTCHATSREQUEST, - '__module__' : 'idm.api.proto.chat_manager_service_pb2' - # @@protoc_insertion_point(class_scope:idm.api.proto.ListChatsRequest) - }) -_sym_db.RegisterMessage(ListChatsRequest) - -UpdateChatRequest = _reflection.GeneratedProtocolMessageType('UpdateChatRequest', (_message.Message,), { - 'DESCRIPTOR' : _UPDATECHATREQUEST, - '__module__' : 'idm.api.proto.chat_manager_service_pb2' - # @@protoc_insertion_point(class_scope:idm.api.proto.UpdateChatRequest) - }) -_sym_db.RegisterMessage(UpdateChatRequest) - - - -_CHATMANAGER = _descriptor.ServiceDescriptor( - name='ChatManager', - full_name='idm.api.proto.ChatManager', - file=DESCRIPTOR, - index=0, - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_start=841, - serialized_end=1135, - methods=[ - _descriptor.MethodDescriptor( - name='create_chat', - full_name='idm.api.proto.ChatManager.create_chat', - index=0, - containing_service=None, - input_type=_CREATECHATREQUEST, - output_type=_CHAT, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name='get_chat', - full_name='idm.api.proto.ChatManager.get_chat', - index=1, - containing_service=None, - input_type=_GETCHATREQUEST, - output_type=_CHAT, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name='list_chats', - full_name='idm.api.proto.ChatManager.list_chats', - index=2, - containing_service=None, - input_type=_LISTCHATSREQUEST, - output_type=_CHATS, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name='update_chat', - full_name='idm.api.proto.ChatManager.update_chat', - index=3, - containing_service=None, - input_type=_UPDATECHATREQUEST, - output_type=_CHAT, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), -]) -_sym_db.RegisterServiceDescriptor(_CHATMANAGER) - -DESCRIPTOR.services_by_name['ChatManager'] = _CHATMANAGER - -# @@protoc_insertion_point(module_scope) diff --git a/idm/api/proto/chat_manager_service_pb2_grpc.py b/idm/api/proto/chat_manager_service_pb2_grpc.py deleted file mode 100644 index b0738c0..0000000 --- a/idm/api/proto/chat_manager_service_pb2_grpc.py +++ /dev/null @@ -1,166 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -"""Client and server classes corresponding to protobuf-defined services.""" -import grpc -from idm.api.proto import \ - chat_manager_service_pb2 as \ - idm_dot_api_dot_proto_dot_chat__manager__service__pb2 - - -class ChatManagerStub(object): - """Missing associated documentation comment in .proto file.""" - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.create_chat = channel.unary_unary( - '/idm.api.proto.ChatManager/create_chat', - request_serializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.CreateChatRequest.SerializeToString, - response_deserializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.Chat.FromString, - ) - self.get_chat = channel.unary_unary( - '/idm.api.proto.ChatManager/get_chat', - request_serializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.GetChatRequest.SerializeToString, - response_deserializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.Chat.FromString, - ) - self.list_chats = channel.unary_unary( - '/idm.api.proto.ChatManager/list_chats', - request_serializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.ListChatsRequest.SerializeToString, - response_deserializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.Chats.FromString, - ) - self.update_chat = channel.unary_unary( - '/idm.api.proto.ChatManager/update_chat', - request_serializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.UpdateChatRequest.SerializeToString, - response_deserializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.Chat.FromString, - ) - - -class ChatManagerServicer(object): - """Missing associated documentation comment in .proto file.""" - - def create_chat(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def get_chat(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def list_chats(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def update_chat(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_ChatManagerServicer_to_server(servicer, server): - rpc_method_handlers = { - 'create_chat': grpc.unary_unary_rpc_method_handler( - servicer.create_chat, - request_deserializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.CreateChatRequest.FromString, - response_serializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.Chat.SerializeToString, - ), - 'get_chat': grpc.unary_unary_rpc_method_handler( - servicer.get_chat, - request_deserializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.GetChatRequest.FromString, - response_serializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.Chat.SerializeToString, - ), - 'list_chats': grpc.unary_unary_rpc_method_handler( - servicer.list_chats, - request_deserializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.ListChatsRequest.FromString, - response_serializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.Chats.SerializeToString, - ), - 'update_chat': grpc.unary_unary_rpc_method_handler( - servicer.update_chat, - request_deserializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.UpdateChatRequest.FromString, - response_serializer=idm_dot_api_dot_proto_dot_chat__manager__service__pb2.Chat.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'idm.api.proto.ChatManager', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - - - # This class is part of an EXPERIMENTAL API. -class ChatManager(object): - """Missing associated documentation comment in .proto file.""" - - @staticmethod - def create_chat(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/idm.api.proto.ChatManager/create_chat', - idm_dot_api_dot_proto_dot_chat__manager__service__pb2.CreateChatRequest.SerializeToString, - idm_dot_api_dot_proto_dot_chat__manager__service__pb2.Chat.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def get_chat(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/idm.api.proto.ChatManager/get_chat', - idm_dot_api_dot_proto_dot_chat__manager__service__pb2.GetChatRequest.SerializeToString, - idm_dot_api_dot_proto_dot_chat__manager__service__pb2.Chat.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def list_chats(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/idm.api.proto.ChatManager/list_chats', - idm_dot_api_dot_proto_dot_chat__manager__service__pb2.ListChatsRequest.SerializeToString, - idm_dot_api_dot_proto_dot_chat__manager__service__pb2.Chats.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def update_chat(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/idm.api.proto.ChatManager/update_chat', - idm_dot_api_dot_proto_dot_chat__manager__service__pb2.UpdateChatRequest.SerializeToString, - idm_dot_api_dot_proto_dot_chat__manager__service__pb2.Chat.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/idm/api/proto/profile_service.proto b/idm/api/proto/profile_service.proto new file mode 100644 index 0000000..f48735e --- /dev/null +++ b/idm/api/proto/profile_service.proto @@ -0,0 +1,37 @@ +syntax = "proto3"; +package idm.api.proto; + +import "idm/api/proto/subscription_manager_service.proto"; + +service Profile { + rpc get_profile(GetProfileRequest) returns (GetProfileResponse) {}; +} + +message GetProfileRequest { + int64 chat_id = 1; + int32 starting_from = 2; + optional int32 last_n_documents = 3; +} + +message Series { + repeated string issns = 1; + string name = 2; +} + +message ShortDocumentDescription { + int64 id = 1; + string title = 2; + repeated string tags = 3; + repeated string issns = 4; +} + +message GetProfileResponse { + int64 downloads_count = 1; + int64 uploads_count = 2; + repeated string similar_users_logins = 3; + repeated string most_popular_tags = 4; + repeated Subscription subscriptions = 5; + repeated Series most_popular_series = 6; + repeated ShortDocumentDescription downloaded_documents = 7; + bool is_connectome_enabled = 8; +} diff --git a/idm/api/proto/subscription_manager_service.proto b/idm/api/proto/subscription_manager_service.proto new file mode 100644 index 0000000..4850999 --- /dev/null +++ b/idm/api/proto/subscription_manager_service.proto @@ -0,0 +1,60 @@ +syntax = "proto3"; +package idm.api.proto; + +service SubscriptionManager { + rpc get_single_chat_task(GetSingleChatTaskRequest) returns (GetSingleChatTaskResponse) {}; + rpc subscribe(SubscribeRequest) returns (SubscribeResponse) {}; + rpc reschedule_subscriptions(RescheduleSubscriptionsRequest) returns (RescheduleSubscriptionsResponse) {} +} + +message Subscription { + enum Type { + CUSTOM = 0; + DIGEST = 1; + DOI = 2; + } + int64 id = 1; + int64 chat_id = 2; + string subscription_query = 3; + string schedule = 4; + bool is_oneshot = 5; + bool is_downloadable = 6; + optional uint32 valid_until = 7; + uint32 next_check_at = 8; + Type subscription_type = 9; +} + +message NewSchedule { + bool is_persistent = 1; + string schedule = 2; +} + +message RescheduleSubscriptionsRequest { + oneof subscriptions_ids { + int64 subscription_id = 1; + string subscription_query = 2; + } + bool is_fired = 3; + optional NewSchedule new_schedule = 4; +} + +message RescheduleSubscriptionsResponse {} + +message GetSingleChatTaskRequest {} + +message GetSingleChatTaskResponse { + repeated Subscription subscriptions = 1; + int64 chat_id = 2; +} + +message SubscribeRequest { + int64 chat_id = 1; + string subscription_query = 2; + string schedule = 3; + bool is_oneshot = 4; + bool is_downloadable = 5; + optional uint32 valid_until = 7; + Subscription.Type subscription_type = 9; +} + +message SubscribeResponse {} diff --git a/idm/api/services/chat_manager.py b/idm/api/services/chat_manager.py index 1858d34..067936e 100644 --- a/idm/api/services/chat_manager.py +++ b/idm/api/services/chat_manager.py @@ -1,4 +1,4 @@ -import logging +import sys from grpc import StatusCode from idm.api.proto.chat_manager_service_pb2 import Chat as ChatPb @@ -7,11 +7,11 @@ from idm.api.proto.chat_manager_service_pb2_grpc import ( ChatManagerServicer, add_ChatManagerServicer_to_server, ) -from izihawa_utils.pb_to_json import MessageToDict from library.aiogrpctools.base import ( BaseService, aiogrpc_request_wrapper, ) +from psycopg.rows import dict_row from pypika import ( PostgreSQLQuery, Table, @@ -21,13 +21,8 @@ from pypika import ( class ChatManagerService(ChatManagerServicer, BaseService): chats_table = Table('chats') - def __init__(self, server, service_name, pool_holder): - super().__init__(service_name=service_name) - self.server = server - self.pool_holder = pool_holder - async def start(self): - add_ChatManagerServicer_to_server(self, self.server) + add_ChatManagerServicer_to_server(self, self.application.server) @aiogrpc_request_wrapper() async def create_chat(self, request, context, metadata): @@ -37,6 +32,7 @@ class ChatManagerService(ChatManagerServicer, BaseService): username=request.username, is_system_messaging_enabled=True, is_discovery_enabled=True, + is_connectome_enabled=False, ) query = ( PostgreSQLQuery @@ -47,6 +43,7 @@ class ChatManagerService(ChatManagerServicer, BaseService): self.chats_table.username, self.chats_table.is_system_messaging_enabled, self.chats_table.is_discovery_enabled, + self.chats_table.is_connectome_enabled, ) .insert( chat.chat_id, @@ -54,57 +51,89 @@ class ChatManagerService(ChatManagerServicer, BaseService): chat.username, chat.is_system_messaging_enabled, chat.is_discovery_enabled, + chat.is_connectome_enabled, ) .on_conflict('chat_id') .do_nothing() ).get_sql() - async with self.pool_holder.pool.acquire() as session: - await session.execute(query) - return await self._get_chat(session=session, chat_id=request.chat_id, context=context) + await self.application.pool_holder['idm'].execute(query) + return await self._get_chat(chat_id=request.chat_id, context=context) - async def _get_chat(self, session, chat_id, context): - query = ( + async def _get_chat(self, chat_id, context): + sql = ( PostgreSQLQuery .from_(self.chats_table) - .select('*') + .select( + self.chats_table.chat_id, + self.chats_table.username, + self.chats_table.language, + self.chats_table.is_system_messaging_enabled, + self.chats_table.is_discovery_enabled, + self.chats_table.is_connectome_enabled, + self.chats_table.ban_until, + self.chats_table.ban_message, + self.chats_table.is_admin, + self.chats_table.created_at, + self.chats_table.updated_at, + ) .where(self.chats_table.chat_id == chat_id) ).get_sql() - result = await session.execute(query) - chat = await result.fetchone() - if chat is None: + + chats = [ChatPb(**row) async for row in self.application.pool_holder['idm'].iterate(sql, row_factory=dict_row)] + if not chats: await context.abort(StatusCode.NOT_FOUND, 'not_found') - return ChatPb(**chat) + return chats[0] - @aiogrpc_request_wrapper() + @aiogrpc_request_wrapper(log=False) async def get_chat(self, request, context, metadata): - async with self.pool_holder.pool.acquire() as session: - return await self._get_chat(session=session, chat_id=request.chat_id, context=context) + return await self._get_chat(chat_id=request.chat_id, context=context) - @aiogrpc_request_wrapper() + @aiogrpc_request_wrapper(log=False) async def list_chats(self, request, context, metadata): - query = ( + sql = ( PostgreSQLQuery .from_(self.chats_table) - .select('*') + .select( + self.chats_table.chat_id, + self.chats_table.username, + self.chats_table.language, + self.chats_table.is_system_messaging_enabled, + self.chats_table.is_discovery_enabled, + self.chats_table.is_connectome_enabled, + self.chats_table.ban_until, + self.chats_table.ban_message, + self.chats_table.is_admin, + self.chats_table.created_at, + self.chats_table.updated_at, + ) .where(self.chats_table.ban_until > request.banned_at_moment) .limit(10) ).get_sql() - async with self.pool_holder.pool.acquire() as session: - results = await session.execute(query) - chats = await results.fetchall() - return ChatsPb( - chats=list(map(lambda x: ChatPb(**x), chats)) - ) + return ChatsPb(chats=[ChatPb(**row) async for row in self.application.pool_holder['idm'].iterate(sql, row_factory=dict_row)]) @aiogrpc_request_wrapper() async def update_chat(self, request, context, metadata): - query = PostgreSQLQuery.update(self.chats_table) + sql = PostgreSQLQuery.update(self.chats_table) for field in request.DESCRIPTOR.fields: if field.containing_oneof and request.HasField(field.name): field_value = getattr(request, field.name) - query = query.set(field.name, field_value) - query = query.where(self.chats_table.chat_id == request.chat_id).returning('*').get_sql() - async with self.pool_holder.pool.acquire() as session: - result = await session.execute(query) - chat = await result.fetchone() - return ChatPb(**chat) + sql = sql.set(field.name, field_value) + sql = sql.where(self.chats_table.chat_id == request.chat_id).returning( + self.chats_table.chat_id, + self.chats_table.username, + self.chats_table.language, + self.chats_table.is_system_messaging_enabled, + self.chats_table.is_discovery_enabled, + self.chats_table.is_connectome_enabled, + self.chats_table.ban_until, + self.chats_table.ban_message, + self.chats_table.is_admin, + self.chats_table.created_at, + self.chats_table.updated_at, + ).get_sql() + rows = [] + async for row in self.application.pool_holder['idm'].iterate(sql, row_factory=dict_row): + rows.append(row) + if not rows: + return await context.abort(StatusCode.NOT_FOUND, 'not_found') + return ChatPb(**rows[0]) diff --git a/idm/api/services/profile.py b/idm/api/services/profile.py new file mode 100644 index 0000000..857deed --- /dev/null +++ b/idm/api/services/profile.py @@ -0,0 +1,204 @@ +import asyncio +from collections import defaultdict + +from idm.api.proto import ( + profile_service_pb2, + profile_service_pb2_grpc, + subscription_manager_service_pb2, + subscription_manager_service_pb2_grpc, +) +from library.aiogrpctools.base import ( + BaseService, + aiogrpc_request_wrapper, +) +from psycopg.rows import dict_row +from pypika import ( + CustomFunction, + PostgreSQLQuery, + Table, + functions, +) +from pypika.pseudocolumns import PseudoColumn + + +class ProfileService(profile_service_pb2_grpc.ProfileServicer, BaseService): + chats_table = Table('chats') + scimag_table = Table('scimag') + scitech_table = Table('scitech') + sharience_table = Table('sharience') + subscriptions_table = Table('subscriptions') + Unnest = CustomFunction('UNNEST', ['column']) + + async def start(self): + profile_service_pb2_grpc.add_ProfileServicer_to_server(self, self.application.server) + + async def get_downloaded_documents(self, chat_id, starting_from=0, last_n_documents=None): + if last_n_documents is None: + last_n_documents = 2**32 - 1 + + query = f''' + select document_id from telegram_statbox_log + where mode = 'download' and action = 'get' + and chat_id = {chat_id} and event_datetime > FROM_UNIXTIME({starting_from}) + order by event_datetime desc limit {last_n_documents} + ''' + + document_ids = [] + async for row in self.application.clickhouse_client.iterate(query): + document_ids.append(row['document_id']) + + if not document_ids: + return [] + + document_query = ( + PostgreSQLQuery + .from_(self.scimag_table) + .select( + self.scimag_table.id, + self.scimag_table.title, + self.scimag_table.issns, + self.scimag_table.tags, + ) + .where(self.scimag_table.id.isin(document_ids)) + * PostgreSQLQuery + .from_(self.scitech_table) + .select( + self.scitech_table.id, + self.scitech_table.title, + PseudoColumn('array[]::text[]').as_('issns'), + self.scitech_table.tags, + ) + .where(self.scitech_table.id.isin(document_ids)) + ).get_sql() + + documents_dict = {} + async for document_row in self.application.pool_holder['nexus'].iterate(document_query, row_factory=dict_row): + documents_dict[document_row['id']] = profile_service_pb2.ShortDocumentDescription( + id=document_row['id'], + title=document_row['title'], + issns=document_row['issns'], + tags=document_row['tags'], + ) + documents = [] + for document_id in document_ids: + document = documents_dict.get(document_id) + if document: + documents.append(document) + return documents + + async def get_chat_config(self, chat_id): + async for row in self.application.pool_holder['idm'].iterate( + PostgreSQLQuery + .from_(self.chats_table) + .select(self.chats_table.is_connectome_enabled) + .where(self.chats_table.chat_id == chat_id) + .get_sql() + ): + return row[0] + + async def get_stats(self, downloaded_documents): + issns_counter = defaultdict(int) + tags_counter = defaultdict(int) + for download_document in downloaded_documents: + for issn in download_document.issns: + issns_counter[issn] += 1 + for tag in download_document.tags: + tags_counter[tag] += 1 + + most_popular_issns = sorted(issns_counter, key=issns_counter.get, reverse=True)[:7] + most_popular_tags = sorted(tags_counter, key=tags_counter.get, reverse=True)[:7] + + most_popular_series = [] + async for row in self.application.pool_holder['nexus'].iterate( + f"select name, issns from series where issns && array[{most_popular_issns}]::text[]".format( + most_popular_issns=','.join(map(lambda x: "'" + x + "'", most_popular_issns)), + ), + row_factory=dict_row, + ): + most_popular_series.append(profile_service_pb2.Series( + name=row['name'], + issns=row['issns'], + )) + + return most_popular_series, most_popular_tags + + async def get_uploads_count(self, chat_id): + sql = ( + PostgreSQLQuery.from_(self.sharience_table) + .select(functions.Count(self.sharience_table.parent_id).distinct()) + .groupby(self.sharience_table.uploader_id) + .where(self.sharience_table.uploader_id == chat_id) + ).get_sql() + async for row in self.application.pool_holder['nexus'].iterate(sql): + return row[0] + + async def get_subscriptions(self, chat_id): + subscriptions_sql = ( + PostgreSQLQuery.select( + self.subscriptions_table.id, + self.subscriptions_table.chat_id, + self.subscriptions_table.subscription_query, + self.subscriptions_table.schedule, + self.subscriptions_table.is_oneshot, + self.subscriptions_table.is_downloadable, + self.subscriptions_table.valid_until, + self.subscriptions_table.next_check_at, + self.subscriptions_table.subscription_type, + ) + .from_(self.subscriptions_table) + .where(self.subscriptions_table.chat_id == chat_id) + .orderby(self.subscriptions_table.id) + ).get_sql() + subscriptions = [] + async for row in self.application.pool_holder['idm'].iterate(subscriptions_sql, row_factory=dict_row): + subscriptions.append(subscription_manager_service_pb2.Subscription( + id=row['id'], + chat_id=row['chat_id'], + subscription_query=row['subscription_query'], + schedule=row['schedule'], + is_oneshot=row['is_oneshot'], + is_downloadable=row['is_downloadable'], + valid_until=row['valid_until'], + next_check_at=row['next_check_at'], + subscription_type=row['subscription_type'], + )) + return subscriptions + + @aiogrpc_request_wrapper() + async def get_profile( + self, + request: profile_service_pb2.GetProfileRequest, + context, + metadata, + ) -> profile_service_pb2.GetProfileResponse: + downloaded_documents = await self.get_downloaded_documents( + chat_id=request.chat_id, + starting_from=request.starting_from, + last_n_documents=request.last_n_documents if request.HasField('last_n_documents') else None, + ) + uploads_count, stats, subscriptions, is_connectome_enabled = await asyncio.gather( + self.get_uploads_count(chat_id=request.chat_id), + self.get_stats(downloaded_documents=downloaded_documents), + self.get_subscriptions(chat_id=request.chat_id), + self.get_chat_config(chat_id=request.chat_id), + ) + most_popular_series, most_popular_tags = stats + self.statbox( + mode='profile', + action='show', + chat_id=request.chat_id, + uploads_count=uploads_count, + downloads_count=len(downloaded_documents), + most_popular_tags=most_popular_tags, + most_popular_series=[series.name for series in most_popular_series], + is_connectome_enabled=is_connectome_enabled, + ) + return profile_service_pb2.GetProfileResponse( + most_popular_tags=most_popular_tags, + most_popular_series=most_popular_series, + subscriptions=subscriptions, + uploads_count=uploads_count, + downloads_count=len(downloaded_documents), + downloaded_documents=downloaded_documents if is_connectome_enabled else [], + is_connectome_enabled=is_connectome_enabled, + ) diff --git a/idm/api/services/subscription_manager.py b/idm/api/services/subscription_manager.py new file mode 100644 index 0000000..146cb3c --- /dev/null +++ b/idm/api/services/subscription_manager.py @@ -0,0 +1,202 @@ +import logging +import time + +from croniter import croniter +from grpc import StatusCode +from idm.api.proto import ( + subscription_manager_service_pb2, + subscription_manager_service_pb2_grpc, +) +from library.aiogrpctools.base import ( + BaseService, + aiogrpc_request_wrapper, +) +from psycopg.rows import dict_row +from pypika import ( + PostgreSQLQuery, + Table, +) + + +class SubscriptionManagerService(subscription_manager_service_pb2_grpc.SubscriptionManagerServicer, BaseService): + chats_table = Table('chats') + subscriptions_table = Table('subscriptions') + + async def start(self): + subscription_manager_service_pb2_grpc.add_SubscriptionManagerServicer_to_server(self, self.application.server) + + @aiogrpc_request_wrapper(log=False) + async def get_single_chat_task( + self, + request: subscription_manager_service_pb2.SubscribeRequest, + context, + metadata, + ) -> subscription_manager_service_pb2.GetSingleChatTaskRequest: + subquery = ( + PostgreSQLQuery + .from_(self.subscriptions_table) + .select( + self.subscriptions_table.chat_id, + self.subscriptions_table.next_check_at, + ) + .inner_join(self.chats_table) + .using('chat_id') + .where(self.chats_table.is_discovery_enabled == True) + .where(self.subscriptions_table.next_check_at.notnull()) + .where(self.subscriptions_table.valid_until > int(time.time())) + .orderby(self.subscriptions_table.next_check_at).limit(1) + ) + query = ( + PostgreSQLQuery.select( + self.subscriptions_table.id, + self.subscriptions_table.chat_id, + self.subscriptions_table.subscription_query, + self.subscriptions_table.schedule, + self.subscriptions_table.is_oneshot, + self.subscriptions_table.is_downloadable, + self.subscriptions_table.next_check_at, + self.subscriptions_table.valid_until, + self.subscriptions_table.subscription_type, + ) + .from_(self.subscriptions_table) + .inner_join(subquery) + .using('chat_id') + .where(self.subscriptions_table.next_check_at < subquery.next_check_at + 5) + .orderby(self.subscriptions_table.next_check_at) + ).get_sql() + subscriptions = [] + chat_id = None + async for row in self.application.pool_holder['idm'].iterate(query, row_factory=dict_row): + chat_id = row['chat_id'] + subscriptions.append(subscription_manager_service_pb2.Subscription(**row)) + return subscription_manager_service_pb2.GetSingleChatTaskResponse( + subscriptions=subscriptions, + chat_id=chat_id, + ) + + @aiogrpc_request_wrapper(log=False) + async def subscribe( + self, + request: subscription_manager_service_pb2.SubscribeRequest, + context, + metadata, + ) -> subscription_manager_service_pb2.SubscribeResponse: + next_check_at = None + valid_until = request.valid_until if request.HasField('valid_until') else 2 ** 31 - 1 + if request.schedule: + if not croniter.is_valid(request.schedule): + return await context.abort(StatusCode.INVALID_ARGUMENT, request.schedule) + next_check_at = croniter(request.schedule).next(ret_type=float) + query = ( + PostgreSQLQuery + .into(self.subscriptions_table) + .columns( + self.subscriptions_table.chat_id, + self.subscriptions_table.subscription_query, + self.subscriptions_table.schedule, + self.subscriptions_table.is_oneshot, + self.subscriptions_table.is_downloadable, + self.subscriptions_table.valid_until, + self.subscriptions_table.next_check_at, + self.subscriptions_table.subscription_type, + ) + .insert( + request.chat_id, + request.subscription_query, + request.schedule, + request.is_oneshot, + request.is_downloadable, + valid_until, + next_check_at, + request.subscription_type + ) + .on_conflict( + self.subscriptions_table.chat_id, + self.subscriptions_table.subscription_query, + ) + .do_update( + self.subscriptions_table.valid_until, + valid_until, + ) + ).get_sql() + await self.application.pool_holder['idm'].execute(query) + return subscription_manager_service_pb2.SubscribeResponse() + + @aiogrpc_request_wrapper(log=False) + async def reschedule_subscriptions( + self, + request: subscription_manager_service_pb2.RescheduleSubscriptionsRequest, + context, + metadata, + ) -> subscription_manager_service_pb2.RescheduleSubscriptionsResponse: + response_pb = subscription_manager_service_pb2.RescheduleSubscriptionsResponse() + match str(request.WhichOneof('subscriptions_ids')): + case 'subscription_id': + select_condition = self.subscriptions_table.id == request.subscription_id + case 'subscription_query': + select_condition = self.subscriptions_table.subscription_query == request.subscription_query + case _: + raise RuntimeError(f"Unknown file type {request.WhichOneof('subscriptions_ids')}") + + if request.HasField('new_schedule'): + schedule = request.new_schedule.schedule + next_check_at = None + if request.new_schedule.schedule: + if not croniter.is_valid(schedule): + return await context.abort(StatusCode.INVALID_ARGUMENT, schedule) + next_check_at = int(croniter(schedule).next(ret_type=float)) + update_sql = ( + PostgreSQLQuery.update(self.subscriptions_table) + .where(select_condition) + .set(self.subscriptions_table.next_check_at, next_check_at) + ) + if request.new_schedule.is_persistent: + update_sql = update_sql.set(self.subscriptions_table.schedule, schedule) + update_sql = update_sql.get_sql() + await self.application.pool_holder['idm'].execute(update_sql) + logging.getLogger('statbox').info({ + 'action': 'rescheduled', + 'mode': 'reschedule_subscriptions', + 'sql': update_sql, + }) + else: + select_sql = ( + PostgreSQLQuery + .from_(self.subscriptions_table).select( + self.subscriptions_table.id, + self.subscriptions_table.schedule, + self.subscriptions_table.is_oneshot) + .where(select_condition) + ) + async for row in self.application.pool_holder['idm'].iterate(select_sql.get_sql(), row_factory=dict_row): + if row['is_oneshot'] and request.is_fired: + delete_sql = ( + PostgreSQLQuery + .from_(self.subscriptions_table) + .delete() + .where(self.subscriptions_table.id == row['id']) + ).get_sql() + await self.application.pool_holder['idm'].execute(delete_sql) + logging.getLogger('statbox').info({ + 'action': 'delete', + 'mode': 'reschedule_subscriptions', + 'subscription_id': row['id'], + 'is_oneshot': row['is_oneshot'], + 'is_fired': request.is_fired, + }) + else: + next_check_at = int(croniter(row['schedule']).next(ret_type=float)) + update_sql = ( + PostgreSQLQuery + .update(self.subscriptions_table) + .where(self.subscriptions_table.id == row['id']) + .set(self.subscriptions_table.next_check_at, next_check_at) + ).get_sql() + await self.application.pool_holder['idm'].execute(update_sql) + logging.getLogger('statbox').info({ + 'action': 'rescheduled', + 'mode': 'reschedule_subscriptions', + 'sql': update_sql, + }) + + return response_pb diff --git a/images/install.bzl b/images/install.bzl index e3347b0..0c03cce 100644 --- a/images/install.bzl +++ b/images/install.bzl @@ -11,8 +11,8 @@ def images_install(): container_pull( name = "ubuntu", - digest = "sha256:d0b4808a158b42b6efb3ae93abb567b1cb6ee097221813c0315390de0fa320b9", + digest = "sha256:c27987afd3fd8234bcf7a81e46cf86c2c4c10ef06e80f0869c22c6ff22b29f9d", registry = "index.docker.io", repository = "library/ubuntu", - tag = "21.10", + tag = "22.04", ) diff --git a/images/production/BUILD.bazel b/images/production/BUILD.bazel index ce78233..3419e42 100644 --- a/images/production/BUILD.bazel +++ b/images/production/BUILD.bazel @@ -14,7 +14,7 @@ download_pkgs( "libgomp1", "libgoogle-perftools-dev", "libprotobuf23", - "libssl1.1", + "libssl3", ], ) @@ -38,8 +38,8 @@ download_pkgs( name = "download-base-python-image", image_tar = ":base-production-image.tar", packages = [ - "python3.9", - "python3.9-distutils", + "python3", + "python3-distutils", ], ) @@ -54,10 +54,9 @@ install_pkgs( container_image( name = "base-python-image", base = ":install-base-python-image", - entrypoint = ["/usr/bin/python3.9"], + entrypoint = ["/usr/bin/python3"], symlinks = { - "/usr/bin/python": "/usr/bin/python3.9", - "/usr/bin/python3": "/usr/bin/python3.9", + "/usr/bin/python": "/usr/bin/python3", }, visibility = ["//visibility:public"], ) diff --git a/library/aiogrpctools/base.py b/library/aiogrpctools/base.py index 0b908fa..8af5e90 100644 --- a/library/aiogrpctools/base.py +++ b/library/aiogrpctools/base.py @@ -13,33 +13,50 @@ from library.logging import error_log class AioGrpcServer(AioRootThing): - def __init__(self, address, port): + def __init__(self, address, port, max_message_length: int = 300 * 1024 * 1024, termination_timeout: float = 1.0): super().__init__() self.address = address self.port = port - self.server = aio.server() + self.termination_timeout = termination_timeout + self.server = aio.server( + options=[ + ('grpc.max_send_message_length', max_message_length), + ('grpc.max_receive_message_length', max_message_length), + ] + ) self.server.add_insecure_port(f'{address}:{port}') async def start(self): - logging.getLogger('debug').info({ - 'action': 'starting', + logging.getLogger('debug').debug({ + 'action': 'start', 'address': self.address, 'mode': 'grpc', 'port': self.port, - 'extras': [x.__class__.__name__ for x in self.starts + self.waits] + 'extras': [x.__class__.__name__ for x in self.starts] }) - await self.server.start() - await self.server.wait_for_termination() + r = await self.server.start() + logging.getLogger('debug').debug({ + 'action': 'started', + 'address': self.address, + 'mode': 'grpc', + 'port': self.port, + }) + return r async def stop(self): - logging.getLogger('debug').info({ - 'action': 'stopping', + logging.getLogger('debug').debug({ + 'action': 'stop', 'mode': 'grpc', }) - await self.server.stop(None) + r = await self.server.stop(self.termination_timeout) + logging.getLogger('debug').debug({ + 'action': 'stopped', + 'mode': 'grpc', + }) + return r def log_config(self, config): - logging.getLogger('debug').info( + logging.getLogger('debug').debug( '\n' + yaml.safe_dump(config.get_files()), ) @@ -47,8 +64,9 @@ class AioGrpcServer(AioRootThing): class BaseService(AioThing): error_mapping = {} - def __init__(self, service_name): + def __init__(self, application, service_name): super().__init__() + self.application = application self.service_name = service_name self.class_name = camel_to_snake(self.__class__.__name__) diff --git a/library/aiopostgres/pool_holder.py b/library/aiopostgres/pool_holder.py index 9965527..31830b2 100644 --- a/library/aiopostgres/pool_holder.py +++ b/library/aiopostgres/pool_holder.py @@ -1,27 +1,87 @@ +import asyncio +import logging from typing import Optional +import psycopg from aiokit import AioThing +from izihawa_utils.exceptions import BaseError from psycopg.rows import tuple_row from psycopg_pool import AsyncConnectionPool +class OperationalError(BaseError): + level = logging.WARNING + code = 'operational_error' + + class AioPostgresPoolHolder(AioThing): - def __init__(self, conninfo, timeout=30, min_size=1, max_size=4): + def __init__(self, conninfo, timeout=30, min_size=1, max_size=1, is_recycling=True): super().__init__() self.pool = None self.fn = lambda: AsyncConnectionPool( conninfo=conninfo, timeout=timeout, min_size=min_size, - max_size=max_size, + max_size=max_size + int(is_recycling), ) + self.is_recycling = is_recycling + self.recycling_task = None + self.timeout = timeout + + async def _get_connection(self): + ev = asyncio.Event() + conn = await self.pool.getconn() + asyncio.get_running_loop().add_reader(conn.fileno(), ev.set) + return ev, conn + + async def recycling(self): + logging.getLogger('debug').debug({ + 'action': 'start_recycling', + 'mode': 'pool', + 'stats': self.pool.get_stats(), + }) + ev, conn = await self._get_connection() + try: + while True: + try: + await asyncio.wait_for(ev.wait(), self.timeout) + except asyncio.TimeoutError: + continue + try: + await conn.execute("SELECT 1") + except psycopg.OperationalError: + asyncio.get_running_loop().remove_reader(conn.fileno()) + await self.pool.putconn(conn) + await self.pool.check() + ev, conn = await self._get_connection() + except asyncio.CancelledError: + pass + finally: + await self.pool.putconn(conn) + logging.getLogger('debug').debug({ + 'action': 'stopped_recycling', + 'mode': 'pool', + 'stats': self.pool.get_stats(), + }) async def start(self): if not self.pool: self.pool = self.fn() + await self.pool.wait() + if self.is_recycling: + self.recycling_task = asyncio.create_task(self.recycling()) async def stop(self): if self.pool: + if self.recycling_task: + self.recycling_task.cancel() + await self.recycling_task + self.recycling_task = None + logging.getLogger('debug').debug({ + 'action': 'close', + 'mode': 'pool', + 'stats': self.pool.get_stats(), + }) await self.pool.close() self.pool = None diff --git a/library/js/BUILD.bazel b/library/js/BUILD.bazel deleted file mode 100644 index 406cc66..0000000 --- a/library/js/BUILD.bazel +++ /dev/null @@ -1,22 +0,0 @@ -load("@build_bazel_rules_nodejs//:index.bzl", "js_library") - -js_library( - name = "base-client", - package_name = "base-client", - srcs = ["base-client.js"], - visibility = ["//visibility:public"], - deps = [ - "//library/js:utils", - "@npm//axios", - ], -) - -js_library( - name = "utils", - package_name = "utils", - srcs = ["utils.js"], - visibility = ["//visibility:public"], - deps = [ - "@npm//lodash", - ], -) diff --git a/library/js/base-client.js b/library/js/base-client.js deleted file mode 100644 index 4e196e5..0000000 --- a/library/js/base-client.js +++ /dev/null @@ -1,52 +0,0 @@ -import { removeUndefined, toCamel, toSnake } from 'utils' -import Axios from 'axios' - -export default class BaseClient { - constructor ({ baseUrl, headers = null, beforeRequest = null, afterRequest = null, errorHandler = null, withCredentials = false } = {}) { - this.nativeClient = Axios.create({ - baseURL: baseUrl, - withCredentials: withCredentials, - headers: { - 'X-Bypass-Cache': 1, - 'Accept-Language': 'en' - }, - transformResponse: Axios.defaults.transformResponse.concat([data => { - return toCamel(data) - }]) - }) - this.nativeClient.defaults.withCredentials = withCredentials - this.nativeClient.interceptors.request.use((config) => { - if (config.data) { - config.data = removeUndefined(config.data) - config.data = toSnake(config.data) - } - if (config.headers) { - if (typeof headers === 'function') { - config.headers = Object.assign(config.headers, headers()) - } else { - config.headers = Object.assign(config.headers, headers) - } - } - if (beforeRequest) { - beforeRequest() - } - return config - }) - - this.nativeClient.interceptors.response.use((response) => { - if (afterRequest) { - afterRequest() - } - return response.data - }, (error) => { - if (afterRequest) { - afterRequest() - } - if (errorHandler) { - return errorHandler(error) - } else { - return Promise.reject(error) - } - }) - } -} diff --git a/library/js/utils.js b/library/js/utils.js deleted file mode 100644 index ffc0543..0000000 --- a/library/js/utils.js +++ /dev/null @@ -1,145 +0,0 @@ -import lodash from 'lodash' - -export const alignToLines = function (array, lineSize) { - const lines = [] - const length = array.length - for (let i = 0; i < length; i += lineSize) { - const line = [] - for (let l = 0; l < lineSize; l++) { - if (i + l < length) { - line.push(array[i + l]) - } - } - lines.push(line) - } - return lines -} - -export function removeUndefined (obj) { - Object.keys(obj).forEach(key => { - if (obj[key] && typeof obj[key] === 'object') removeUndefined(obj[key]) - else if (obj[key] === undefined) delete obj[key] - }) - return obj -} - -function castObjectKeys (o, depth, func, exclude) { - if (depth === 0) { - return o - } - if (lodash.isArray(o)) { - return o.map(x => { - if (exclude !== undefined && $.inArray(x, exclude) > -1) { - return x - } else { - return castObjectKeys(x, depth - 1, func, exclude) - } - }) - } else if (lodash.isPlainObject(o)) { - const castedObject = {} - for (const key in o) { - if (exclude !== undefined && $.inArray(key, exclude) > -1) { - castedObject[key] = o[key] - } else { - castedObject[func(key)] = castObjectKeys(o[key], depth - 1, func, exclude) - } - } - return castedObject - } else { - return o - } -} - -export const toSnake = function (o, depth, exclude) { - return castObjectKeys(o, depth || -1, lodash.snakeCase, exclude) -} - -export const toCamel = function (o, depth, exclude) { - return castObjectKeys(o, depth || -1, lodash.camelCase, exclude) -} - -export const toKebab = function (o, depth, exclude) { - return castObjectKeys(o, depth || -1, lodash.kebabCase, exclude) -} - -export const queryString = function (o) { - o = JSON.parse(JSON.stringify(o)) - const r = [] - for (const key in o) { - const value = o[key] - if (value !== undefined) { - if (Array.isArray(value)) { - value.map((it, index) => r.push(`${key}-${index}=${it}`)) - } else { - r.push(toSnake(key) + '=' + value) - } - } - } - return r.join('&') -} - -export var aggregation = (baseClass, ...mixins) => { - class base extends baseClass { - constructor (...args) { - super(...args) - mixins.forEach((Mixin) => { - copyProps(this, (new Mixin(...args))) - }) - } - } - - const copyProps = (target, source) => { - Object.getOwnPropertyNames(source) - .concat(Object.getOwnPropertySymbols(source)) - .forEach((prop) => { - if (!prop.match(/^(?:constructor|prototype|arguments|caller|name|bind|call|apply|toString|length)$/)) { - Object.defineProperty(target, prop, Object.getOwnPropertyDescriptor(source, prop)) - } - }) - } - mixins.forEach((mixin) => { - copyProps(base.prototype, mixin.prototype) - copyProps(base, mixin) - }) - return base -} - -export const capitalizeFirstLetter = function (s) { - return s.charAt(0).toUpperCase() + s.slice(1) -} - -export const extend = function () { - const extended = {} - let deep = false - let i = 0 - const length = arguments.length - - if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]') { - deep = arguments[0] - i++ - } - - const merge = function (obj) { - for (const prop in obj) { - if (Object.prototype.hasOwnProperty.call(obj, prop)) { - // If deep merge and property is an object, merge properties - if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]') { - extended[prop] = extend(true, extended[prop], obj[prop]) - } else { - extended[prop] = obj[prop] - } - } - } - } - for (; i < length; i++) { - const obj = arguments[i] - merge(obj) - } - return extended -} - -export const getRandomInt = function (min, max) { - min = Math.ceil(min) - max = Math.floor(max) - return Math.floor(Math.random() * (max - min + 1)) + min -} diff --git a/library/logging/BUILD.bazel b/library/logging/BUILD.bazel index b054edb..b478824 100644 --- a/library/logging/BUILD.bazel +++ b/library/logging/BUILD.bazel @@ -7,9 +7,9 @@ py_library( srcs_version = "PY3ONLY", visibility = ["//visibility:public"], deps = [ - requirement("orjson"), - requirement("prometheus_client"), requirement("izihawa_types"), requirement("izihawa_utils"), + requirement("orjson"), + requirement("prometheus_client"), ], ) diff --git a/library/logging/__init__.py b/library/logging/__init__.py index 84b81a6..1f301fc 100644 --- a/library/logging/__init__.py +++ b/library/logging/__init__.py @@ -33,7 +33,7 @@ def error_log(e, level=logging.ERROR, **fields): elif fields: e = {'error': repr(e), **fields} logging.getLogger('error').log( - msg=e, + msg=str(e), level=level ) diff --git a/library/telegram/base.py b/library/telegram/base.py index c50c4fd..28a7fb2 100644 --- a/library/telegram/base.py +++ b/library/telegram/base.py @@ -9,10 +9,12 @@ from typing import ( from aiokit import AioThing from izihawa_utils.random import generate_request_id +from izihawa_utils.text import mask from library.logging import error_log from telethon import ( TelegramClient, connection, + hints, sessions, ) from tenacity import ( # noqa @@ -22,6 +24,7 @@ from tenacity import ( # noqa wait_fixed, ) +from .common import close_button from .session_backend import AlchemySessionContainer @@ -42,6 +45,7 @@ class BaseTelegramClient(AioThing): raise ValueError( 'Your API ID or Hash cannot be empty or None. Set up telegram.app_id and/or telegram.app_hash' ) + self.app_id = app_id self._telegram_client = TelegramClient( self._get_session(database), app_id, @@ -53,6 +57,9 @@ class BaseTelegramClient(AioThing): self.password = password self.bot_token = bot_token + def __str__(self): + return f'BaseTelegramClient(app_id={self.app_id}, phone={mask(self.phone)}, bot_token={mask(self.bot_token)})' + def _get_session(self, database): if database.get('drivername') == 'postgresql': self.container = AlchemySessionContainer( @@ -80,21 +87,22 @@ class BaseTelegramClient(AioThing): @retry(retry=retry_if_exception_type(ConnectionError), stop=stop_after_attempt(3), wait=wait_fixed(5)) async def start(self): - logging.getLogger('debug').info({'mode': 'telegram', 'action': 'starting'}) + logging.getLogger('debug').debug({'mode': 'telegram', 'action': 'start'}) await self._telegram_client.start( phone=lambda: self.phone, bot_token=self.bot_token, - password=self.password, - code_callback=self.polling_file, + password=self.polling_file('/tmp/telegram_password'), + code_callback=self.polling_file('/tmp/telegram_code'), ) - logging.getLogger('debug').info({'mode': 'telegram', 'action': 'started'}) + logging.getLogger('debug').debug({'mode': 'telegram', 'action': 'started'}) - async def polling_file(self): - fname = '/tmp/telegram_code' - while not os.path.exists(fname): - await asyncio.sleep(5.0) - with open(fname, 'r') as code_file: - return code_file.read().strip() + def polling_file(self, fname): + async def f(): + while not os.path.exists(fname): + await asyncio.sleep(5.0) + with open(fname, 'r') as code_file: + return code_file.read().strip() + return f async def stop(self): return await self.disconnect() @@ -125,6 +133,12 @@ class BaseTelegramClient(AioThing): **kwargs, ) + def upload_file(self, file: hints.FileLike, file_name: str): + return self._telegram_client.upload_file( + file=file, + file_name=file_name, + ) + def edit_message(self, *args, **kwargs): return self._telegram_client.edit_message(*args, **kwargs) @@ -188,13 +202,21 @@ class RequestContext: self.default_fields.update(fields) def statbox(self, **kwargs): - logging.getLogger('statbox').info( - msg=dict( - **self.default_fields, - **kwargs, - ), - ) + logging.getLogger('statbox').info(msg=self.default_fields | kwargs) + + def debug_log(self, **kwargs): + logging.getLogger('debug').debug(msg=self.default_fields | kwargs) def error_log(self, e, level=logging.ERROR, **fields): - all_fields = {**self.default_fields, **fields} + all_fields = self.default_fields | fields error_log(e, level=level, **all_fields) + + def is_group_mode(self): + return self.chat.chat_id < 0 + + def is_personal_mode(self): + return self.chat.chat_id > 0 + + def personal_buttons(self): + if self.is_personal_mode(): + return [close_button()] diff --git a/library/telegram/common.py b/library/telegram/common.py new file mode 100644 index 0000000..9bdd3ff --- /dev/null +++ b/library/telegram/common.py @@ -0,0 +1,14 @@ +from telethon import Button + + +def close_button(session_id: str = None): + if session_id: + return Button.inline( + text='✖️', + data=f'/close_{session_id}', + ) + else: + return Button.inline( + text='✖️', + data='/close', + ) diff --git a/library/telegram/utils.py b/library/telegram/utils.py index d8e6ef8..008714b 100644 --- a/library/telegram/utils.py +++ b/library/telegram/utils.py @@ -7,39 +7,40 @@ from typing import ( Optional, ) +from library.logging import error_log from telethon import ( errors, events, ) -from .base import RequestContext - @asynccontextmanager async def safe_execution( - request_context: RequestContext, + error_log=error_log, on_fail: Optional[Callable[[], Awaitable]] = None, + level=logging.WARNING, ): try: try: yield except events.StopPropagation: raise + except errors.MessageNotModifiedError: + pass except ( errors.UserIsBlockedError, errors.QueryIdInvalidError, errors.MessageDeleteForbiddenError, errors.MessageIdInvalidError, - errors.MessageNotModifiedError, errors.ChatAdminRequiredError, ) as e: - request_context.error_log(e, level=logging.WARNING) + error_log(e, level=level) except Exception as e: + error_log(e, level=level) traceback.print_exc() - request_context.error_log(e) if on_fail: await on_fail() except events.StopPropagation: raise except Exception as e: - request_context.error_log(e) + error_log(e, level=level) diff --git a/nexus/README.md b/nexus/README.md index 8ab2900..a769237 100644 --- a/nexus/README.md +++ b/nexus/README.md @@ -9,7 +9,6 @@ - ✅ [`ingest`](ingest) - retrieving metadata from external APIs and putting it onto Kafka - ✅ [`meta_api`](meta_api) - rescoring and merging API for Summa backends - ✅ [`models`](models) - shared Protobuf models -- ✅ [`nlptools`](nlptools) - text routines - ✅ [`pipe`](pipe) - processing pipeline based on Kafka - ✅ [`pylon`](pylon) - smart client for downloading files from the Internet/IPFS - ✅ [`translations`](translations) - text translations used in `bot` and `hub` diff --git a/nexus/actions/BUILD.bazel b/nexus/actions/BUILD.bazel index 3621500..2582943 100644 --- a/nexus/actions/BUILD.bazel +++ b/nexus/actions/BUILD.bazel @@ -20,6 +20,6 @@ py_library( "//library/aiopostgres", requirement("izihawa_types"), "//nexus/models/proto:proto_py", - "//nexus/nlptools", + requirement("izihawa_nlptools"), ], ) diff --git a/nexus/actions/crossref_api.py b/nexus/actions/crossref_api.py index 7ebcac6..25d7be0 100644 --- a/nexus/actions/crossref_api.py +++ b/nexus/actions/crossref_api.py @@ -1,6 +1,4 @@ -import time -from datetime import date - +import numpy as np from nexus.models.proto.scimag_pb2 import Scimag as ScimagPb from .base import BaseAction @@ -20,14 +18,12 @@ def extract_dates(date_parts): if not date_parts or not date_parts[0]: return 0, None year, month, day = date_parts[0] + [0] * (3 - len(date_parts[0])) - if year: - issued_at = int(time.mktime(date( - year=year, - month=month if month else 1, - day=day if day else 1, - ).timetuple())) - return year, issued_at - return 0, None + if not year: + return 0, None + month = month if month else 1 + day = day if day else 1 + issued_at = np.datetime64(f'{year}-{month:02d}-{day:02d}').astype('datetime64[s]').astype(np.int64) + return year, issued_at def extract_first(arr, default=''): @@ -71,17 +67,19 @@ def extract_references(references): return dois +def clean_issns(issns): + if issns: + cleaned_issns = [] + for issn in issns: + if issn != '0000-0000': + cleaned_issns.append(issn) + return cleaned_issns + + def extract_title(title, subtitle): return ': '.join(filter(lambda x: bool(x), [title.strip(), subtitle.strip()])) -class ToThinScimagPbAction(BaseAction): - async def do(self, item: dict) -> ScimagPb: - if 'DOI' not in item: - raise InterruptProcessing(document_id=None, reason='no_doi') - return ScimagPb(doi=item['DOI']) - - class ToScimagPbAction(BaseAction): async def do(self, item: dict) -> ScimagPb: if 'DOI' not in item: @@ -91,9 +89,9 @@ class ToScimagPbAction(BaseAction): container_title=extract_first(item.get('container-title')), doi=item['DOI'], issue=item.get('issue'), - issns=item.get('ISSN'), + issns=clean_issns(item.get('ISSN')), language=item.get('language'), - ref_by_count=item.get('is-referenced-by-count'), + referenced_by_count=item.get('is-referenced-by-count'), references=extract_references(item.get('reference')), tags=item.get('subject'), title=extract_title(extract_first(item.get('title')), extract_first(item.get('subtitle'))), diff --git a/nexus/actions/document_operations_pb/store_telegram_file_id_pb.py b/nexus/actions/document_operations_pb/store_telegram_file_id_pb.py index f1961e5..5057469 100644 --- a/nexus/actions/document_operations_pb/store_telegram_file_id_pb.py +++ b/nexus/actions/document_operations_pb/store_telegram_file_id_pb.py @@ -20,7 +20,7 @@ class ToPostgresAction(BaseAction): f'password={database["password"]} ' f'host={database["host"]}', ) - self.waits.append(self.pool_holder) + self.starts.append(self.pool_holder) async def do(self, document_operation_pb: DocumentOperationPb) -> DocumentOperationPb: store_telegram_file_id_pb = document_operation_pb.store_telegram_file_id diff --git a/nexus/actions/document_operations_pb/update_document_scimag_pb.py b/nexus/actions/document_operations_pb/update_document_scimag_pb.py index 01f1f75..1bec67b 100644 --- a/nexus/actions/document_operations_pb/update_document_scimag_pb.py +++ b/nexus/actions/document_operations_pb/update_document_scimag_pb.py @@ -1,16 +1,26 @@ import asyncio +import logging from typing import ( Optional, Set, ) +import orjson as json from aiocrossref import CrossrefClient from aiocrossref.exceptions import ( NotFoundError, WrongContentTypeError, ) from aiokafka import AIOKafkaProducer +from aiosumma import SummaClient +from izihawa_utils.common import filter_none +from izihawa_utils.pb_to_json import MessageToDict from library.aiopostgres.pool_holder import AioPostgresPoolHolder +from nexus.actions import scimag_pb +from nexus.actions.base import BaseAction +from nexus.actions.common import canonize_doi +from nexus.actions.crossref_api import ToScimagPbAction +from nexus.actions.exceptions import InterruptProcessing from nexus.models.proto.operation_pb2 import \ CrossReferenceOperation as CrossReferenceOperationPb from nexus.models.proto.operation_pb2 import \ @@ -21,11 +31,7 @@ from pypika import ( Table, ) from pypika.terms import Array - -from .. import scimag_pb -from ..base import BaseAction -from ..crossref_api import ToScimagPbAction -from ..exceptions import InterruptProcessing +from summa.proto import index_service_pb2 as index_service_pb class ToPostgresAction(BaseAction): @@ -33,6 +39,7 @@ class ToPostgresAction(BaseAction): db_multi_fields = { 'authors', 'ipfs_multihashes', + 'isbns', 'issns', 'tags', } @@ -40,6 +47,7 @@ class ToPostgresAction(BaseAction): 'id', 'abstract', 'container_title', + 'content', 'doi', 'embedding', 'filesize', @@ -52,7 +60,8 @@ class ToPostgresAction(BaseAction): 'last_page', 'meta_language', 'md5', - 'ref_by_count', + 'page_rank', + 'referenced_by_count', 'scimag_bulk_id', 'title', 'type', @@ -69,7 +78,7 @@ class ToPostgresAction(BaseAction): f'password={database["password"]} ' f'host={database["host"]}', ) - self.waits.append(self.pool_holder) + self.starts.append(self.pool_holder) def cast_field_value(self, field_name: str, field_value): if field_name in self.db_multi_fields: @@ -82,18 +91,9 @@ class ToPostgresAction(BaseAction): return scimag_pb.HasField(field_name) return field_value - def generate_delete_sql(self, scimag_pb: ScimagPb): - return ( - PostgreSQLQuery - .from_('scimag') - .where(self.scimag_table.id == scimag_pb.id) - .delete() - .get_sql() - ) - def generate_insert_sql(self, scimag_pb: ScimagPb, fields: Optional[Set[str]] = None): columns = [] - inserts = [] + params = [] fields = fields or self.db_fields for field_name in fields: @@ -101,12 +101,12 @@ class ToPostgresAction(BaseAction): field_value = getattr(scimag_pb, field_name) field_name, field_value = self.cast_field_value(field_name, field_value) columns.append(field_name) - inserts.append(field_value) + params.append(field_value) - query = PostgreSQLQuery.into(self.scimag_table).columns(*columns).insert(*inserts) + query = PostgreSQLQuery.into(self.scimag_table).columns(*columns).insert(*params) if columns: query = query.on_conflict('doi') - for field, val in zip(columns, inserts): + for field, val in zip(columns, params): query = query.do_update(field, val) return query.returning(self.scimag_table.id).get_sql() @@ -134,13 +134,10 @@ class ToPostgresAction(BaseAction): fields = update_document_pb.fields or self.db_fields if scimag_pb.id: - if not scimag_pb.is_deleted: - sql = self.generate_update_sql( - scimag_pb, - fields=fields, - ) - else: - sql = self.generate_delete_sql(scimag_pb) + sql = self.generate_update_sql( + scimag_pb, + fields=fields, + ) await self.pool_holder.execute(sql) else: sql = self.generate_insert_sql( @@ -152,11 +149,83 @@ class ToPostgresAction(BaseAction): return document_operation_pb -class ReferencesToKafkaAction(BaseAction): - def __init__(self, topic, brokers): +class ToSummaAction(BaseAction): + forbidden_types = { + 'book-series', + 'book-set', + 'book-track', + 'component', + 'dataset', + 'journal', + 'journal-issue', + 'journal-volume', + 'other', + 'peer-review', + 'proceedings', + 'report-series', + } + + def __init__(self, kafka, summa): super().__init__() - self.topic = topic - self.brokers = brokers + self.kafka = kafka + self.producer = None + self.summa_config = summa + self.summa_client = SummaClient(endpoint=summa['endpoint']) + + async def start(self): + self.producer = self.get_producer() + await self.producer.start() + await self.summa_client.start() + + async def stop(self): + await self.summa_client.stop() + if self.producer: + await self.producer.stop() + self.producer = None + + def get_producer(self): + return AIOKafkaProducer( + loop=asyncio.get_running_loop(), + bootstrap_servers=self.kafka['bootstrap_servers'], + max_request_size=self.kafka['max_request_size'], + ) + + async def async_index(self, scimag_pb: ScimagPb): + for topic_name in self.kafka['topic_names']: + await self.producer.send_and_wait( + topic_name, + index_service_pb.IndexOperation( + index_document=index_service_pb.IndexDocumentOperation( + document=json.dumps(filter_none(MessageToDict(scimag_pb, preserving_proto_field_name=True))), + ), + ).SerializeToString(), + ) + + async def sync_index(self, scimag_pb: ScimagPb): + document = filter_none(MessageToDict(scimag_pb, preserving_proto_field_name=True)) + logging.getLogger('statbox').info({'action': 'sync_index', 'document': document}) + await self.summa_client.index_document(index_alias=self.summa_config['index_alias'], document=document) + await self.summa_client.commit_index(index_alias=self.summa_config['index_alias']) + + async def do(self, document_operation_pb: DocumentOperationPb) -> DocumentOperationPb: + update_document_pb = document_operation_pb.update_document + scimag_pb = update_document_pb.typed_document.scimag + if scimag_pb.type in self.forbidden_types: + return document_operation_pb + if not scimag_pb.HasField('issued_at'): + scimag_pb.issued_at = -62135596800 + if update_document_pb.full_text_index: + if update_document_pb.full_text_index_commit: + await self.sync_index(scimag_pb=scimag_pb) + else: + await self.async_index(scimag_pb=scimag_pb) + return document_operation_pb + + +class ReferencesToKafkaAction(BaseAction): + def __init__(self, kafka): + super().__init__() + self.kafka = kafka self.producer = None async def start(self): @@ -164,13 +233,14 @@ class ReferencesToKafkaAction(BaseAction): await self.producer.start() async def stop(self): - await self.producer.stop() - self.producer = None + if self.producer: + await self.producer.stop() + self.producer = None def get_producer(self): return AIOKafkaProducer( loop=asyncio.get_running_loop(), - bootstrap_servers=self.brokers, + bootstrap_servers=self.kafka['bootstrap_servers'], ) async def do(self, document_operation_pb: DocumentOperationPb) -> DocumentOperationPb: @@ -181,10 +251,12 @@ class ReferencesToKafkaAction(BaseAction): source=scimag_pb.doi, target=reference, ) - await self.producer.send_and_wait( - self.topic, - reference_operation.SerializeToString(), - ) + for topic_name in self.kafka['topic_names']: + await self.producer.send_and_wait( + topic_name, + reference_operation.SerializeToString(), + ) + return document_operation_pb @@ -192,7 +264,6 @@ class FillFromExternalSourceAction(BaseAction): def __init__(self, crossref): super().__init__() self.crossref_client = CrossrefClient( - delay=1.0 / crossref['rps'], max_retries=crossref.get('max_retries', 15), proxy_url=crossref.get('proxy_url'), retry_delay=crossref.get('retry_delay', 0.5), @@ -200,18 +271,31 @@ class FillFromExternalSourceAction(BaseAction): user_agent=crossref.get('user_agent'), ttl_dns_cache=crossref.get('ttl_dns_cache'), ) + self.doi_client = self.crossref_client self.crossref_api_to_scimag_pb_action = ToScimagPbAction() - self.waits.append(self.crossref_client) + self.starts.append(self.crossref_client) + + async def try_resolve(self, doi, look_at_doi_org=False): + try: + return await self.crossref_client.works(doi=doi) + except (WrongContentTypeError, NotFoundError) as e: + if look_at_doi_org: + doi_org_response = await self.doi_client.get(doi=doi) + if doi_org_response: + resolved_doi = canonize_doi(doi_org_response.get('published-print', {}).get('DOI')) + if resolved_doi: + try: + return await self.crossref_client.works(doi=resolved_doi) + except (WrongContentTypeError, NotFoundError) as e: + raise InterruptProcessing(document_id=doi, reason=str(e)) + raise InterruptProcessing(document_id=doi, reason=str(e)) async def do(self, document_operation_pb: DocumentOperationPb) -> DocumentOperationPb: update_document_pb = document_operation_pb.update_document + scimag_pb = update_document_pb.typed_document.scimag if not update_document_pb.should_fill_from_external_source: return document_operation_pb - scimag_pb = update_document_pb.typed_document.scimag - try: - crossref_api_response = await self.crossref_client.works(doi=scimag_pb.doi) - except (WrongContentTypeError, NotFoundError) as e: - raise InterruptProcessing(document_id=scimag_pb.doi, reason=str(e)) + crossref_api_response = await self.try_resolve(doi=scimag_pb.doi) new_scimag_pb = await self.crossref_api_to_scimag_pb_action.do(crossref_api_response) scimag_pb.MergeFrom(new_scimag_pb) return document_operation_pb @@ -221,9 +305,21 @@ class CleanAction(BaseAction): def __init__(self): super().__init__() self.cleaner = scimag_pb.CleanAction() - self.waits.append(self.cleaner) + self.language_detect = scimag_pb.DetectLanguageAction() + self.starts.append(self.cleaner) async def do(self, document_operation_pb: DocumentOperationPb) -> DocumentOperationPb: update_document_pb = document_operation_pb.update_document - update_document_pb.typed_document.scimag.CopyFrom(await self.cleaner.do(update_document_pb.typed_document.scimag)) + scimag_pb = update_document_pb.typed_document.scimag + scimag_pb = await self.cleaner.do(scimag_pb) + scimag_pb = await self.language_detect.do(scimag_pb) + if update_document_pb.fields and (scimag_pb.language or scimag_pb.meta_language): + fields = set(update_document_pb.fields) + if scimag_pb.language: + fields.add('language') + if scimag_pb.meta_language: + fields.add('meta_language') + del update_document_pb.fields[:] + update_document_pb.fields.extend(fields) + update_document_pb.typed_document.scimag.CopyFrom(scimag_pb) return document_operation_pb diff --git a/nexus/actions/document_operations_pb/update_document_scitech_pb.py b/nexus/actions/document_operations_pb/update_document_scitech_pb.py index 2d44d5a..1c174d8 100644 --- a/nexus/actions/document_operations_pb/update_document_scitech_pb.py +++ b/nexus/actions/document_operations_pb/update_document_scitech_pb.py @@ -1,5 +1,12 @@ -import logging +import asyncio +from typing import ( + Optional, + Set, +) +import orjson as json +from aiokafka import AIOKafkaProducer +from izihawa_utils.common import filter_none from izihawa_utils.pb_to_json import MessageToDict from library.aiopostgres.pool_holder import AioPostgresPoolHolder from nexus.models.proto.operation_pb2 import \ @@ -10,7 +17,11 @@ from pypika import ( Table, functions, ) -from pypika.terms import Array +from pypika.terms import ( + Array, + NullValue, +) +from summa.proto import index_service_pb2 as index_service_pb from .. import scitech_pb from ..base import BaseAction @@ -46,6 +57,7 @@ class ToPostgresAction(BaseAction): 'title', 'updated_at', 'volume', + 'periodical', } db_multi_fields = { 'authors', @@ -53,6 +65,15 @@ class ToPostgresAction(BaseAction): 'isbns', 'tags', } + essential_fields = { + 'title', + 'authors', + 'volume', + 'periodical', + 'series', + 'pages', + 'edition', + } db_fields = db_single_fields | db_multi_fields def __init__(self, database): @@ -63,7 +84,7 @@ class ToPostgresAction(BaseAction): f'password={database["password"]} ' f'host={database["host"]}', ) - self.waits.append(self.pool_holder) + self.starts.append(self.pool_holder) def cast_field_value(self, field_name, field_value): if field_name in self.db_multi_fields: @@ -78,6 +99,72 @@ class ToPostgresAction(BaseAction): return scitech_pb.HasField(field_name) return field_value + def generate_insert_sql(self, scitech_pb: ScitechPb, fields: Optional[Set[str]] = None): + columns = [] + inserts = [] + reset_original_id = False + has_original_id = False + has_is_deleted = False + + for field_name in fields: + if self.is_field_set(scitech_pb, field_name): + field_value = getattr(scitech_pb, field_name) + field_name, field_value = self.cast_field_value(field_name, field_value) + columns.append(field_name) + inserts.append(field_value) + if field_name == 'original_id': + has_original_id = True + elif field_name == 'is_deleted': + has_is_deleted = True + elif field_name in self.essential_fields: + reset_original_id = True + + if reset_original_id and not has_original_id: + columns.append('original_id') + inserts.append(NullValue()) + if not has_is_deleted: + columns.append('is_deleted') + inserts.append(False) + + query = ( + PostgreSQLQuery + .into(self.scitech_table) + .columns(*columns) + .insert(*inserts) + ) + if columns: + query = query.on_conflict('libgen_id', 'doi') + for col, val in zip(columns, inserts): + query = query.do_update(col, val) + sql = query.returning('id', 'original_id').get_sql() + return sql + + def generate_update_sql(self, conditions, scitech_pb: ScitechPb, fields: Optional[Set[str]] = None): + query = PostgreSQLQuery.update(self.scitech_table) + reset_original_id = False + has_original_id = False + has_is_deleted = True + + for field_name in fields: + if self.is_field_set(scitech_pb, field_name): + field_value = getattr(scitech_pb, field_name) + field_name, field_value = self.cast_field_value(field_name, field_value) + query = query.set(field_name, field_value) + if field_name == 'original_id': + has_original_id = True + elif field_name == 'is_deleted': + has_is_deleted = True + elif field_name in self.essential_fields: + reset_original_id = True + + if reset_original_id and not has_original_id: + query = query.set('original_id', NullValue()) + if not has_is_deleted: + query = query.set('is_deleted', False) + + sql = query.where(conditions).returning('id', 'original_id').get_sql() + return sql + async def do(self, document_operation_pb: DocumentOperationPb) -> DocumentOperationPb: update_document_pb = document_operation_pb.update_document scitech_pb = update_document_pb.typed_document.scitech @@ -94,66 +181,82 @@ class ToPostgresAction(BaseAction): conditions.append(self.scitech_table.doi == scitech_pb.doi) # if scitech_pb.md5: # conditions.append(self.scitech_table.md5 == UuidFunction(scitech_pb.md5)) + if not conditions: + return - if conditions: - casted_conditions = conditions[0] - for condition in conditions[1:]: - casted_conditions = casted_conditions | condition - sql = ( - PostgreSQLQuery - .from_(self.scitech_table) - .select(functions.Count('*')) - .where(casted_conditions) - .get_sql() - ) - result = [row async for row in self.pool_holder.iterate(sql)] - count = result[0][0] + casted_conditions = conditions[0] + for condition in conditions[1:]: + casted_conditions = casted_conditions | condition + count_sql = ( + PostgreSQLQuery + .from_(self.scitech_table) + .select(functions.Count('*')) + .where(casted_conditions) + .get_sql() + ) + result = [row async for row in self.pool_holder.iterate(count_sql)] + count = result[0][0] - if count > 1: - raise ConflictError(scitech_pb, duplicates=[]) + if count > 1: + raise ConflictError(scitech_pb, duplicates=[]) - if count == 1: - query = PostgreSQLQuery.update(self.scitech_table) - for field_name in fields: - if self.is_field_set(scitech_pb, field_name): - field_value = getattr(scitech_pb, field_name) - field_name, field_value = self.cast_field_value(field_name, field_value) - query = query.set(field_name, field_value) - sql = query.where(casted_conditions).returning('id', 'original_id').get_sql() - else: - columns = [] - inserts = [] - for field_name in fields: - if self.is_field_set(scitech_pb, field_name): - field_value = getattr(scitech_pb, field_name) - field_name, field_value = self.cast_field_value(field_name, field_value) - columns.append(field_name) - inserts.append(field_value) - query = ( - PostgreSQLQuery - .into(self.scitech_table) - .columns(*columns) - .insert(*inserts) - .on_conflict('libgen_id', 'doi') + if count == 1: + sql = self.generate_update_sql(conditions=casted_conditions, scitech_pb=scitech_pb, fields=fields) + result = [row async for row in self.pool_holder.iterate(sql)][0] + scitech_pb.id = result[0] + scitech_pb.original_id = result[1] or 0 + else: + sql = self.generate_insert_sql(scitech_pb=scitech_pb, fields=fields) + result = [row async for row in self.pool_holder.iterate(sql)][0] + scitech_pb.id = result[0] + scitech_pb.original_id = result[1] or 0 + return document_operation_pb + + +class ToSummaAction(BaseAction): + def __init__(self, kafka, summa): + super().__init__() + self.kafka = kafka + self.producer = None + self.summa = summa + + async def start(self): + self.producer = self.get_producer() + await self.producer.start() + + async def stop(self): + if self.producer: + await self.producer.stop() + self.producer = None + + def get_producer(self): + return AIOKafkaProducer( + loop=asyncio.get_running_loop(), + bootstrap_servers=self.kafka['bootstrap_servers'], + max_request_size=self.kafka['max_request_size'], + ) + + async def do(self, document_operation_pb: DocumentOperationPb) -> DocumentOperationPb: + update_document_pb = document_operation_pb.update_document + scitech_pb = update_document_pb.typed_document.scitech + if update_document_pb.full_text_index: + for topic_name in self.kafka['topic_names']: + await self.producer.send_and_wait( + topic_name, + index_service_pb.IndexOperation( + index_document=index_service_pb.IndexDocumentOperation( + document=json.dumps(filter_none(MessageToDict(scitech_pb, preserving_proto_field_name=True))), + ), + ).SerializeToString(), ) - for col, val in zip(columns, inserts): - query = query.do_update(col, val) - sql = query.returning('id', 'original_id').get_sql() - - try: - result = [row async for row in self.pool_holder.iterate(sql)] - except: - logging.getLogger('error').error({'sql': sql, 'scitech': MessageToDict(scitech_pb)}) - raise - scitech_pb.id, scitech_pb.original_id = result[0][0], result[0][1] or 0 - return document_operation_pb + return document_operation_pb class CleanAction(BaseAction): def __init__(self): super().__init__() self.cleaner = scitech_pb.CleanAction() - self.waits.append(self.cleaner) + self.starts.append(self.cleaner) async def do(self, document_operation_pb: DocumentOperationPb) -> DocumentOperationPb: update_document_pb = document_operation_pb.update_document diff --git a/nexus/actions/document_operations_pb/update_document_sharience_pb.py b/nexus/actions/document_operations_pb/update_document_sharience_pb.py index 8d15732..0fda282 100644 --- a/nexus/actions/document_operations_pb/update_document_sharience_pb.py +++ b/nexus/actions/document_operations_pb/update_document_sharience_pb.py @@ -28,6 +28,8 @@ class ToPostgresAction(BaseAction): 'filesize', 'md5', 'updated_at', + 'abstract', + 'content', } db_fields = db_single_fields | db_multi_fields @@ -39,7 +41,7 @@ class ToPostgresAction(BaseAction): f'password={database["password"]} ' f'host={database["host"]}', ) - self.waits.append(self.pool_holder) + self.starts.append(self.pool_holder) def cast_field_value(self, field_name: str, field_value): if field_name in self.db_multi_fields: diff --git a/nexus/actions/document_operations_pb/vote_pb.py b/nexus/actions/document_operations_pb/vote_pb.py index e7a6b33..3d8f9c2 100644 --- a/nexus/actions/document_operations_pb/vote_pb.py +++ b/nexus/actions/document_operations_pb/vote_pb.py @@ -19,9 +19,9 @@ class ToPostgresAction(BaseAction): f'user={database["username"]} ' f'password={database["password"]} ' f'host={database["host"]}', - max_size=2, + max_size=1, ) - self.waits.append(self.pool_holder) + self.starts.append(self.pool_holder) def generate_insert_sql(self, document_id: int, value: int, voter_id: int): query = PostgreSQLQuery.into(self.votes_table).columns( diff --git a/nexus/actions/libgen_api.py b/nexus/actions/libgen_api.py index 3ac4b34..c98d3cd 100644 --- a/nexus/actions/libgen_api.py +++ b/nexus/actions/libgen_api.py @@ -85,6 +85,25 @@ def create_cu(libgen_id, coverurl, md5): class ToScitechPbAction(BaseAction): + def process_tag(self, raw_tag) -> list: + tags = [] + for tag in raw_tag.split(';'): + tag = tag.strip().lower() + if not bool(tag): + continue + for dash_tag in tag.split('--'): + tags.append(dash_tag.strip()) + return list(sorted(set(tags))) + + def process_isbns(self, identifier): + return list(filter( + lambda x: bool(x), + map( + lambda x: x.replace('-', '').strip(), + identifier.replace(';', ',').split(',') + ), + )) + async def do(self, item: dict) -> ScitechPb: scitech_pb = ScitechPb( authors=(item.get('author') or '').split('; '), @@ -94,25 +113,15 @@ class ToScitechPbAction(BaseAction): extension=item.get('extension'), filesize=safe_int(item['filesize']) or 0, is_deleted=item.get('visible', '') != '', - isbns=list(filter( - lambda x: bool(x), - map( - lambda x: x.replace('-', '').strip(), - item['identifier'].replace(';', ',').split(',') - ), - )), + isbns=self.process_isbns(item['identifier']), language=LANGUAGE_TRANSLATION.get(item['language']), libgen_id=int(item['id']), md5=item['md5'].lower(), pages=safe_int(item['pages']), series=item.get('series'), - tags=list(filter( - lambda x: bool(x), - map( - lambda x: x.strip(), - item['tags'].split(';') - ), - )), + volume=item.get('volumeinfo'), + periodical=item.get('periodical'), + tags=self.process_tag(item['tags']), title=item['title'].replace('\0', '').strip(), ) @@ -124,6 +133,6 @@ class ToScitechPbAction(BaseAction): year = safe_int(item['year']) if year and year < 9999: scitech_pb.year = year - # Subtract 1970 + # Subtract 1970 because `np.datetime64(year, 'Y')` is not returning unixtime scitech_pb.issued_at = np.datetime64(year, 'Y').astype('datetime64[s]').astype(np.int64) - 62167132800 return scitech_pb diff --git a/nexus/actions/postgres.py b/nexus/actions/postgres.py index 8fed5ce..f3c72f8 100644 --- a/nexus/actions/postgres.py +++ b/nexus/actions/postgres.py @@ -1,14 +1,17 @@ import orjson as json from izihawa_utils.common import filter_none -from nexus.models.proto.scimag_pb2 import Scimag as ScimagPb -from summa.proto.proto_grpc_py_pb import index_pb2 as index_pb +from summa.proto import index_service_pb2 as index_service_pb from .base import BaseAction -class ToThinScimagPbAction(BaseAction): - async def do(self, item: dict) -> ScimagPb: - return ScimagPb(doi=item['doi']) +class ScimagToIndexOperationBytesAction(BaseAction): + async def do(self, item: dict) -> bytes: + return index_service_pb.IndexOperation( + index_document=index_service_pb.IndexDocumentOperation( + document=json.dumps(filter_none(item)), + ), + ).SerializeToString() class ScitechToIndexOperationBytesAction(BaseAction): @@ -26,9 +29,8 @@ class ScitechToIndexOperationBytesAction(BaseAction): async def do(self, item: dict) -> bytes: # if item['original_id'] is not None: # item = {rc: item[rc] for rc in self.restricted_column_set} - return index_pb.IndexOperation( - index_document=index_pb.IndexDocumentOperation( + return index_service_pb.IndexOperation( + index_document=index_service_pb.IndexDocumentOperation( document=json.dumps(filter_none(item)), - reindex=True, ), ).SerializeToString() diff --git a/nexus/actions/scimag_pb.py b/nexus/actions/scimag_pb.py index 4ceeeee..8af3edd 100644 --- a/nexus/actions/scimag_pb.py +++ b/nexus/actions/scimag_pb.py @@ -1,22 +1,35 @@ from html import unescape from bs4 import BeautifulSoup +from izihawa_nlptools.language_detect import detect_language +from izihawa_nlptools.utils import ( + despace, + despace_full, +) from nexus.models.proto.operation_pb2 import \ DocumentOperation as DocumentOperationPb from nexus.models.proto.operation_pb2 import UpdateDocument as UpdateDocumentPb from nexus.models.proto.scimag_pb2 import Scimag as ScimagPb from nexus.models.proto.typed_document_pb2 import \ TypedDocument as TypedDocumentPb -from nexus.nlptools.language_detect import detect_language -from nexus.nlptools.utils import ( - despace, - despace_full, -) from .base import BaseAction from .common import canonize_doi +class DetectLanguageAction(BaseAction): + async def do(self, scimag_pb: ScimagPb) -> ScimagPb: + if scimag_pb.title or scimag_pb.abstract or scimag_pb.content: + detected_language = detect_language(f'{scimag_pb.title} {scimag_pb.abstract} {scimag_pb.content}') + if detected_language: + scimag_pb.meta_language = detected_language + if scimag_pb.content: + scimag_pb.language = detected_language + if not scimag_pb.language: + scimag_pb.language = scimag_pb.meta_language + return scimag_pb + + class CleanAction(BaseAction): async def do(self, scimag_pb: ScimagPb) -> ScimagPb: if scimag_pb.abstract: @@ -52,21 +65,20 @@ class CleanAction(BaseAction): canonized_references = list(map(canonize_doi, scimag_pb.references)) del scimag_pb.references[:] scimag_pb.references.extend(canonized_references) - if not scimag_pb.meta_language and (scimag_pb.title or scimag_pb.abstract): - detected_language = detect_language(f'{scimag_pb.title} {scimag_pb.abstract}') - if detected_language: - scimag_pb.meta_language = detected_language - if not scimag_pb.language: - scimag_pb.language = scimag_pb.meta_language return scimag_pb -class ToDocumentOperationAction(BaseAction): +class ToDocumentOperationBytesAction(BaseAction): + def __init__(self, full_text_index: bool, should_fill_from_external_source: bool): + super().__init__() + self.full_text_index = full_text_index + self.should_fill_from_external_source = should_fill_from_external_source + async def do(self, item: ScimagPb) -> bytes: document_operation_pb = DocumentOperationPb( update_document=UpdateDocumentPb( - reindex=True, - should_fill_from_external_source=True, + full_text_index=self.full_text_index, + should_fill_from_external_source=self.should_fill_from_external_source, typed_document=TypedDocumentPb(scimag=item), ), ) diff --git a/nexus/actions/scitech_pb.py b/nexus/actions/scitech_pb.py index 4acf075..0be762b 100644 --- a/nexus/actions/scitech_pb.py +++ b/nexus/actions/scitech_pb.py @@ -1,21 +1,61 @@ from html import unescape from bs4 import BeautifulSoup +from izihawa_nlptools.language_detect import detect_language +from izihawa_nlptools.utils import ( + despace, + despace_full, +) from nexus.models.proto.operation_pb2 import \ DocumentOperation as DocumentOperationPb from nexus.models.proto.operation_pb2 import UpdateDocument as UpdateDocumentPb from nexus.models.proto.scitech_pb2 import Scitech as ScitechPb from nexus.models.proto.typed_document_pb2 import \ TypedDocument as TypedDocumentPb -from nexus.nlptools.language_detect import detect_language -from nexus.nlptools.utils import ( - despace, - despace_full, -) from .base import BaseAction from .common import canonize_doi +editions = { + '1st': '1', + '1st ed.': '1', + 'first edition': '1', + 'none': '', + '2nd': '2', + 'paperback': '', + 'hardcover': '', + '1st ed': '1', + 'reprint': '', + '2nd ed': '2', + '1. aufl.': '1', + '0': '', + 'illustrated edition': '', + '3rd': '3', + '1ª': '1', + '1st edition': '1', + 'kindle edition': '', + '1st edition.': '1', + '1st ed. 2019': '1', + '3rd ed': '3', + 'second edition': '2', + '2-е': '2', + 'original': '', + '4th': '4', + '1st ed. 2020': '1', + 'annotated edition': '', + '2nd edition': '2', + '2nd ed.': '2', + '5th': '5', + '1. aufl': '1', + '4th ed': '4', + 'ebook': '', + '1. auflage': '1', + 'first edition.': '1', + '3rd edition': '3', + '10th ed': '10', + '2-е издание, переработанное и дополненное': '2', +} + class CleanAction(BaseAction): async def do(self, scitech_pb: ScitechPb) -> ScitechPb: @@ -29,6 +69,8 @@ class CleanAction(BaseAction): line.replace_with(f'\n{line.text.strip()}\n') scitech_pb.description = despace(description_soup.text.strip()) + scitech_pb.periodical = despace_full(scitech_pb.periodical) + scitech_pb.volume = despace_full(scitech_pb.volume) scitech_pb.series = despace_full(scitech_pb.series) scitech_pb.title = despace_full(scitech_pb.title) @@ -42,16 +84,21 @@ class CleanAction(BaseAction): scitech_pb.md5 = scitech_pb.md5.lower() scitech_pb.extension = scitech_pb.extension.lower() scitech_pb.doi = canonize_doi(scitech_pb.doi) - if scitech_pb.edition == 'None': - scitech_pb.edition = '' + if scitech_pb.edition is not None: + edition = scitech_pb.edition.lower() + scitech_pb.edition = editions.get(edition, edition) return scitech_pb -class ToDocumentOperationPbAction(BaseAction): +class ToDocumentOperationBytesAction(BaseAction): + def __init__(self, full_text_index: bool): + super().__init__() + self.full_text_index = full_text_index + async def do(self, item: ScitechPb) -> bytes: document_operation_pb = DocumentOperationPb( update_document=UpdateDocumentPb( - reindex=True, + full_text_index=self.full_text_index, typed_document=TypedDocumentPb(scitech=item), ), ) diff --git a/nexus/bot/BUILD.bazel b/nexus/bot/BUILD.bazel index 6f6d5b2..94285c7 100644 --- a/nexus/bot/BUILD.bazel +++ b/nexus/bot/BUILD.bazel @@ -25,8 +25,11 @@ py3_image( requirement("aiodns"), requirement("aiohttp"), requirement("aiohttp_socks"), + requirement("dateparser"), + requirement("pandas"), requirement("pytimeparse"), requirement("python_socks"), + requirement("seaborn"), requirement("tenacity"), requirement("uvloop"), "//idm/api/aioclient", @@ -39,8 +42,8 @@ py3_image( "//nexus/hub/aioclient", "//nexus/meta_api/aioclient", "//nexus/models/proto:proto_py", - "//nexus/nlptools", "//nexus/views/telegram", + requirement("izihawa_nlptools"), requirement("izihawa_utils"), ], ) diff --git a/nexus/bot/application.py b/nexus/bot/application.py index 5d70234..25d665f 100644 --- a/nexus/bot/application.py +++ b/nexus/bot/application.py @@ -19,7 +19,6 @@ class TelegramApplication(AioRootThing): database=self.config['telegram'].get('database'), mtproxy=self.config['telegram'].get('mtproxy'), ) - self.hub_client = HubGrpcClient(endpoint=self.config['hub']['endpoint']) self.starts.append(self.hub_client) self.idm_client = None @@ -39,8 +38,7 @@ class TelegramApplication(AioRootThing): async def start(self): self.set_handlers(self.telegram_client) - await self.telegram_client.start_and_wait() - await self.telegram_client.run_until_disconnected() + await self.telegram_client.start() async def stop(self): self.telegram_client.remove_event_handlers() diff --git a/nexus/bot/configs/__init__.py b/nexus/bot/configs/__init__.py index 0b03040..4a7ab92 100644 --- a/nexus/bot/configs/__init__.py +++ b/nexus/bot/configs/__init__.py @@ -5,7 +5,6 @@ from library.configurator import Configurator def get_config(): return Configurator([ 'nexus/bot/configs/base.yaml', - 'nexus/bot/configs/metrics.yaml?', 'nexus/bot/configs/%s.yaml?' % env.type, 'nexus/bot/configs/logging.yaml', 'nexus/bot/configs/promotions.yaml', diff --git a/nexus/bot/configs/base.yaml b/nexus/bot/configs/base.yaml index ea7137e..285476f 100644 --- a/nexus/bot/configs/base.yaml +++ b/nexus/bot/configs/base.yaml @@ -1,17 +1,17 @@ --- application: - # Amazon Recipient Email in /donate message + # Amazon Recipient Email in /howtohelp message amazon_gift_card_recipient: pirate@ship.space - # Amazon URL for buying card in /donate message + # Amazon URL for buying card in /howtohelp message amazon_gift_card_url: https://www.amazon.com/dp/B07TMNGSN4 - bot_version: 1.6.0 - # Bitcoin Donation address in /donate message - btc_donate_address: 3QbF3zRQVjn3qMJBSbmLC1gb6VUc555xkw + bot_version: 2.0.0 + btc_donate_address: '3CLEdvAXtNqCNix6SQmyT5RscR6pzxGvg8' # List of chat IDs that is allowed to bypass maintenance mode bypass_maintenance: [] # Debugging mode debug: true + eth_donate_address: '0x930B94dafE8f2dEf8C6b536d9F70A12604Af10C3' # Enabled indices (passed to Nexus Meta API) index_aliases: - scitech @@ -21,25 +21,27 @@ application: # and preventing creation of new users is_read_only_mode: false # Require subscription to `related_channel` before allowing to use the bot - is_subscription_required: true - # Libera Pay URL in /donate message - libera_pay_url: + is_subscription_required: false maintenance_picture_url: - nexus_version: InterCom + nexus_version: Jabbah # Default page size for SERP page_size: 5 - # Length of generated Request-Id used for tracking requests across all backends + # Length of generated Request-ID used for tracking requests across all backends request_id_length: 12 # Length of generated Session-ID used in commands to clue user sessions session_id_length: 8 + sol_donate_address: 'FcJG17cEyG8LnNkdJg8HCAQQZKxqpwTupD9fc3GXMqxD' too_difficult_picture_url: upgrade_maintenance_picture_url: # Configuring behaviour of the bot in some cases views: settings: + has_connectome_button: true has_discovery_button: true has_language_buttons: true - has_system_messaging_button: true + xmr_donate_address: '42HZx5Cg1uQ2CtCrq7QabP23BN7gBrGu6U6QumkMmR4bKS61gcoP8xyNzP5cJCbjac9yaWFhLsDmM3adMWyBKBXn1d9WiUb' + xrp_donate_address: 'rw2ciyaNshpHe7bCHo4bRWq6pqqynnWKQg' + xrp_donate_tag: '1968122674' hub: endpoint: idm: @@ -48,15 +50,13 @@ idm: log_path: '/var/log/nexus-bot' meta_api: endpoint: -metrics: - enabled: false telegram: # Telegram App Hash from https://my.telegram.org/ app_hash: '{{ APP_HASH }}' # Telegram App ID from https://my.telegram.org/ app_id: 00000 # External bot name shown in messages to users - bot_name: libgen_scihub_1_bot + bot_name: libgen_scihub_2_bot bot_token: # WARNING! Potentially buggy telethon option. Sometimes it goes mad and overload users with tons of messages # Collect missed messages at startup time and answer to them @@ -72,26 +72,35 @@ telegram: - nexus.bot.handlers.ban.BanHandler - nexus.bot.handlers.ban.BanlistHandler - nexus.bot.handlers.ban.UnbanHandler - - nexus.bot.handlers.contact.ContactHandler + - nexus.bot.handlers.aboutus.AboutusHandler - nexus.bot.handlers.copyright.CopyrightHandler - nexus.bot.handlers.close.CloseHandler - - nexus.bot.handlers.donate.DonateHandler - nexus.bot.handlers.download.DownloadHandler - - nexus.bot.handlers.emoji.EmojiHandler + - nexus.bot.handlers.howtohelp.HowToHelpHandler - nexus.bot.handlers.help.HelpHandler + - nexus.bot.handlers.profile.ProfileHandler + - nexus.bot.handlers.profile.DigestHandler + - nexus.bot.handlers.rank.RankHandler - nexus.bot.handlers.roll.RollHandler + - nexus.bot.handlers.seed.SeedHandler - nexus.bot.handlers.settings.SettingsButtonsHandler - nexus.bot.handlers.settings.SettingsHandler - nexus.bot.handlers.shortlink.ShortlinkHandler - nexus.bot.handlers.submit.SubmitHandler + - nexus.bot.handlers.submit.EditSubmitHandler - nexus.bot.handlers.start.StartHandler - nexus.bot.handlers.stop.StopHandler - - nexus.bot.handlers.top_missed.TopMissedHandler + - nexus.bot.handlers.trends.TrendsHelpHandler + - nexus.bot.handlers.trends.TrendsHandler + - nexus.bot.handlers.trends.TrendsEditHandler - nexus.bot.handlers.view.ViewHandler - nexus.bot.handlers.vote.VoteHandler - nexus.bot.handlers.noop.NoopHandler - nexus.bot.handlers.search.SearchHandler - nexus.bot.handlers.search.SearchEditHandler - nexus.bot.handlers.search.SearchPagingHandler - # Channel that will be shown in /help, /donate, /contact and in promotions - related_channel: '@nexus_search' + - nexus.bot.handlers.search.InlineSearchHandler + # Channel that will be shown in /help, /howtohelp and in promotions + related_channel: 'nexus_search' +twitter: + contact_url: https://twitter.com/the_superpirate diff --git a/nexus/bot/configs/logging.yaml b/nexus/bot/configs/logging.yaml index cbf78a8..eda8c87 100644 --- a/nexus/bot/configs/logging.yaml +++ b/nexus/bot/configs/logging.yaml @@ -10,10 +10,14 @@ logging: traceback: class: library.logging.formatters.TracebackFormatter handlers: + console: + class: logging.StreamHandler + level: WARNING + stream: 'ext://sys.stderr' debug: class: library.logging.handlers.BaseFileHandler - formatter: default filename: '{{ log_path }}/debug.log' + formatter: default level: DEBUG error: class: library.logging.handlers.BaseFileHandler @@ -29,7 +33,7 @@ logging: class: library.logging.handlers.BaseFileHandler filename: '{{ log_path }}/statbox.log' formatter: default - level: DEBUG + level: INFO traceback: class: library.logging.handlers.BaseFileHandler filename: '{{ log_path }}/traceback.log' @@ -56,14 +60,11 @@ logging: propagate: false error: handlers: + - console - error - traceback - warning propagate: false - metrics: - handlers: - - error - propagate: false operation: handlers: - operation @@ -74,10 +75,12 @@ logging: propagate: false telethon: handlers: - - debug + - error + - warning propagate: false root: handlers: + - console - debug level: DEBUG version: 1 diff --git a/nexus/bot/configs/promotions.yaml b/nexus/bot/configs/promotions.yaml index c49f4b1..233962a 100644 --- a/nexus/bot/configs/promotions.yaml +++ b/nexus/bot/configs/promotions.yaml @@ -2,12 +2,35 @@ promotions: - texts: - en: 🎁 Help us at /donate to accelerate knowledge unchaining - weight: 3.0 + en: 💬 The victory of humanity is inevitable + weight: 1 - texts: - en: ⤴️ Stay tuned with us at {related_channel} - es: ⤴️ Mantente en contacto con nosotros en {related_channel} - it: ⤴️ Resta aggiornato con noi su {related_channel} - pb: ⤴️ Fique ligado conosco em {related_channel} - ru: ⤴️ Оставайся на связи с нами на {related_channel} - weight: 1.0 + en: 💬 Shall build Standard Template Construct + weight: 1 + - texts: + en: 💬 Gaining knowledge is the only purpose of life + weight: 1 + - texts: + en: 💬 Knowledge cannot belong + weight: 1 + - texts: + en: 💬 Obey the path of discovery + weight: 1 + - texts: + en: 💬 Research is the only and ultimate goal + weight: 1 + - texts: + en: ✋ Have a subscription to paid articles? [Help researchers!](https://t.me/nexus_aaron) + ru: ✋ Есть доступ к платным статьям? [Помоги ученым!](https://t.me/nexus_aaron) + weight: 25 + - texts: + en: ✋ Help us, become a seeder of books. Learn how in /seed + ru: ✋ Сохрани наследие, раздавай книги нуждающимся. Узнай как в /seed + weight: 25 + - texts: + en: ⤴️ Stay tuned with us at @{related_channel} and [Twitter]({twitter_contact_url}) + es: ⤴️ Mantente en contacto con nosotros en @{related_channel} y [Twitter]({twitter_contact_url}) + it: ⤴️ Resta aggiornato con noi su @{related_channel} e [Twitter]({twitter_contact_url}) + pb: ⤴️ Fique ligado conosco em @{related_channel} e [Twitter]({twitter_contact_url}) + ru: ⤴️ Оставайся на связи с нами на @{related_channel} и в [Twitter]({twitter_contact_url}) + weight: 25 diff --git a/nexus/bot/exceptions.py b/nexus/bot/exceptions.py index 2d44d6d..ae87eda 100644 --- a/nexus/bot/exceptions.py +++ b/nexus/bot/exceptions.py @@ -11,11 +11,6 @@ class BannedUserError(BaseError): self.ban_timeout = ban_timeout -class MessageHasBeenDeletedError(BaseError): - level = logging.WARNING - code = 'message_has_been_deleted_error' - - class UnknownFileFormatError(BaseError): level = logging.WARNING code = 'unknown_file_format_error' @@ -23,3 +18,12 @@ class UnknownFileFormatError(BaseError): class UnknownIndexAliasError(BaseError): code = 'unknown_index_alias_error' + + +class WidgetError(BaseError): + level = logging.WARNING + code = 'widget_error' + + def __init__(self, text, buttons): + self.text = text + self.buttons = buttons diff --git a/nexus/bot/handlers/__init__.py b/nexus/bot/handlers/__init__.py index 79072ec..d92c05e 100644 --- a/nexus/bot/handlers/__init__.py +++ b/nexus/bot/handlers/__init__.py @@ -1,27 +1,27 @@ from . import ( + aboutus, admin, ban, close, - contact, copyright, - donate, download, - emoji, help, + howtohelp, legacy, noop, + rank, roll, search, + seed, settings, shortlink, start, stop, submit, - top_missed, view, vote, ) -__all__ = ['admin', 'ban', 'contact', 'copyright', 'close', 'donate', 'download', 'emoji', 'help', - 'legacy', 'noop', 'roll', 'search', 'settings', - 'shortlink', 'start', 'stop', 'submit', 'top_missed', 'view', 'vote'] +__all__ = ['aboutus', 'admin', 'ban', 'copyright', 'close', 'download', 'help', 'howtohelp', + 'legacy', 'noop', 'rank', 'roll', 'search', 'seed', 'settings', + 'shortlink', 'start', 'stop', 'submit', 'view', 'vote'] diff --git a/nexus/bot/handlers/aboutus.py b/nexus/bot/handlers/aboutus.py new file mode 100644 index 0000000..0662083 --- /dev/null +++ b/nexus/bot/handlers/aboutus.py @@ -0,0 +1,22 @@ +from library.telegram.base import RequestContext +from nexus.translations import t +from telethon import ( + Button, + events, +) + +from .base import BaseHandler + + +class AboutusHandler(BaseHandler): + filter = events.NewMessage(incoming=True, pattern='^/aboutus(@[A-Za-z0-9_]+)?$') + is_group_handler = True + + async def handler(self, event: events.ChatAction, request_context: RequestContext): + request_context.statbox(action='show', mode='aboutus') + await event.reply( + t('ABOUT_US', request_context.chat.language), + buttons=Button.clear(), + link_preview=False, + ) + diff --git a/nexus/bot/handlers/ban.py b/nexus/bot/handlers/ban.py index fbdb92b..2ece8cf 100644 --- a/nexus/bot/handlers/ban.py +++ b/nexus/bot/handlers/ban.py @@ -3,7 +3,8 @@ from datetime import ( timedelta, ) -from aiobaseclient.exceptions import ClientError +from grpc import StatusCode +from grpc.aio import AioRpcError from library.telegram.base import RequestContext from nexus.bot.widgets.banlist_widget import BanlistWidget from pytimeparse.timeparse import timeparse @@ -13,7 +14,7 @@ from .admin import BaseAdminHandler class BanHandler(BaseAdminHandler): - filter = events.NewMessage(incoming=True, pattern='^/ban ([0-9]+) ([A-Za-z0-9]+)\\s?(.*)?$') + filter = events.NewMessage(incoming=True, pattern='^/ban (-?[0-9]+) ([A-Za-z0-9]+)\\s?(.*)?$') def parse_pattern(self, event: events.ChatAction): chat_id = int(event.pattern_match.group(1)) @@ -39,17 +40,16 @@ class BanHandler(BaseAdminHandler): ban_until=ban_end_date.timestamp(), banned_chat_id=chat_id, ) - except ClientError as e: - if e.code == 'nonexistent_entity_error': - await event.reply('Chat not found') - return - raise - - await event.reply('User banned until ' + ban_end_date.strftime("%Y-%m-%d %H:%M") + ' UTC') + except AioRpcError as e: + if e.code() == StatusCode.NOT_FOUND: + return await event.reply('Chat not found') + else: + raise + return await event.reply('User banned until ' + ban_end_date.strftime("%Y-%m-%d %H:%M") + ' UTC') class UnbanHandler(BaseAdminHandler): - filter = events.NewMessage(incoming=True, pattern='^/unban(?:_|\\s)([0-9]+)$') + filter = events.NewMessage(incoming=True, pattern='^/unban(?:_|\\s)(-?[0-9]+)$') async def handler(self, event, request_context: RequestContext): chat_id = int(event.pattern_match.group(1)) @@ -64,13 +64,13 @@ class UnbanHandler(BaseAdminHandler): action='unbanned', unbanned_chat_id=chat_id, ) - except ClientError as e: - if e.code == 'nonexistent_entity_error': - await event.reply('Chat not found') - return - raise + except AioRpcError as e: + if e.code() == StatusCode.NOT_FOUND: + return await event.reply('Chat not found') + else: + raise - await event.reply('User unbanned') + return await event.reply('User unbanned') class BanlistHandler(BaseAdminHandler): diff --git a/nexus/bot/handlers/base.py b/nexus/bot/handlers/base.py index 979c66f..8d042aa 100644 --- a/nexus/bot/handlers/base.py +++ b/nexus/bot/handlers/base.py @@ -2,7 +2,6 @@ import logging import time from abc import ABC from datetime import datetime -from typing import Union from grpc import StatusCode from grpc.experimental.aio import AioRpcError @@ -11,18 +10,17 @@ from izihawa_utils.exceptions import BaseError from izihawa_utils.random import random_string from library.logging import error_log from library.telegram.base import RequestContext +from library.telegram.common import close_button from library.telegram.utils import safe_execution from nexus.bot.application import TelegramApplication from nexus.bot.exceptions import UnknownIndexAliasError from nexus.models.proto.typed_document_pb2 import \ TypedDocument as TypedDocumentPb from nexus.translations import t -from nexus.views.telegram.common import close_button -from nexus.views.telegram.scimag import ScimagView -from nexus.views.telegram.scitech import ScitechView from telethon import ( TelegramClient, events, + functions, ) from telethon.errors import ( QueryIdInvalidError, @@ -82,10 +80,19 @@ class BaseHandler(ABC): def short_index_alias_to_index_alias(self, short_index_alias: str) -> str: return self.short_index_alias_to_index_alias_dict[short_index_alias] + async def get_last_messages_in_chat(self, event: events.ChatAction): + messages_holder = await self.application.telegram_client(functions.messages.GetMessagesRequest( + id=list(range(event.id + 1, event.id + 10))) + ) + if messages_holder: + return messages_holder.messages + return [] + async def get_typed_document_pb( self, index_alias: str, document_id: int, + mode: str, request_context: RequestContext, session_id: str, position: int, @@ -93,6 +100,7 @@ class BaseHandler(ABC): return await self.application.meta_api_client.get( index_alias=index_alias, document_id=document_id, + mode=mode, session_id=session_id, position=position, request_id=request_context.request_id, @@ -105,15 +113,15 @@ class BaseHandler(ABC): position: int, request_context: RequestContext, session_id: str, - ) -> ScimagView: - typed_document_pb = await self.get_typed_document_pb( + ) -> TypedDocumentPb: + return await self.get_typed_document_pb( index_alias='scimag', document_id=document_id, + mode='view', position=position, request_context=request_context, session_id=session_id, ) - return ScimagView(document_pb=typed_document_pb.scimag) async def resolve_scitech( self, @@ -121,30 +129,15 @@ class BaseHandler(ABC): position: int, request_context: RequestContext, session_id: str, - ) -> ScitechView: - typed_document_pb = await self.get_typed_document_pb( + ) -> TypedDocumentPb: + return await self.get_typed_document_pb( index_alias='scitech', document_id=document_id, + mode='view', position=position, request_context=request_context, session_id=session_id, ) - search_response_duplicates = await self.application.meta_api_client.search( - index_aliases=('scitech',), - query=f'original_id:{document_id}', - page_size=16, - request_id=request_context.request_id, - session_id=session_id, - user_id=str(request_context.chat.chat_id), - ) - duplicates = [ - scored_document.typed_document.scitech - for scored_document in search_response_duplicates.scored_documents - ] - return ScitechView( - document_pb=typed_document_pb.scitech, - duplicates=duplicates, - ) async def resolve_document( self, @@ -153,7 +146,7 @@ class BaseHandler(ABC): position: int, session_id: str, request_context: RequestContext - ) -> Union[ScimagView, ScitechView]: + ) -> TypedDocumentPb: if index_alias not in self.index_alias_to_resolver: raise UnknownIndexAliasError(index_alias=index_alias) @@ -175,12 +168,12 @@ class BaseHandler(ABC): async def _send_fail_response(self, event: events.ChatAction, request_context: RequestContext): try: await event.reply( - t('MAINTENANCE', language=request_context.chat.language).format( + t('MAINTENANCE', request_context.chat.language).format( maintenance_picture_url=self.application.config['application']['maintenance_picture_url'], ), - buttons=[close_button()] + buttons=None if request_context.is_group_mode() else [close_button()] ) - except (ConnectionError, QueryIdInvalidError) as e: + except (ConnectionError, QueryIdInvalidError, ValueError) as e: request_context.error_log(e) async def _put_chat(self, event: events.ChatAction, request_id: str): @@ -218,13 +211,10 @@ class BaseHandler(ABC): if is_banned(chat): if chat.ban_message is not None: async with safe_execution( - request_context=request_context, + error_log=request_context.error_log, on_fail=lambda: self._send_fail_response(event, request_context), ): - await event.reply(t( - 'BANNED', - language=chat.language - ).format( + await event.reply(t('BANNED', chat.language).format( datetime=str(time.ctime(chat.ban_until)), reason=chat.ban_message, )) @@ -236,17 +226,18 @@ class BaseHandler(ABC): and event.chat_id not in self.application.config['application']['bypass_maintenance'] ): await event.reply( - t('UPGRADE_MAINTENANCE', language='en').format( + t('UPGRADE_MAINTENANCE', 'en').format( upgrade_maintenance_picture_url=self.application.config['application'] ['upgrade_maintenance_picture_url'] ), + buttons=None if (event.is_group or event.is_channel) else [close_button()] ) raise events.StopPropagation() async def _check_read_only(self, event: events.ChatAction): if self.application.config['application']['is_read_only_mode']: await event.reply( - t("READ_ONLY_MODE", language='en'), + t("READ_ONLY_MODE", 'en'), ) raise events.StopPropagation() @@ -269,7 +260,7 @@ class BaseHandler(ABC): and not await self.is_subscribed(chat) ): async with safe_execution( - request_context=request_context, + error_log=request_context.error_log, on_fail=lambda: self._send_fail_response(event, request_context), ): await event.reply(t( @@ -292,6 +283,7 @@ class BaseHandler(ABC): chat_id=event.chat_id, is_system_messaging_enabled=True, is_discovery_enabled=True, + is_connectome_enabled=False, language='en', username=username, is_admin=False, @@ -326,7 +318,7 @@ class BaseHandler(ABC): self.reset_last_widget(request_context.chat.chat_id) async with safe_execution( - request_context=request_context, + error_log=request_context.error_log, on_fail=lambda: self._send_fail_response(event, request_context), ): await self.handler( @@ -343,6 +335,6 @@ class BaseHandler(ABC): class BaseCallbackQueryHandler(BaseHandler, ABC): async def _send_fail_response(self, event, request_context: RequestContext): try: - await event.answer(t('MAINTENANCE_WO_PIC', language=request_context.chat.language)) + await event.answer(t('MAINTENANCE_WO_PIC', request_context.chat.language)) except (ConnectionError, QueryIdInvalidError) as e: request_context.error_log(e) diff --git a/nexus/bot/handlers/close.py b/nexus/bot/handlers/close.py index 71d9f32..caf6f5a 100644 --- a/nexus/bot/handlers/close.py +++ b/nexus/bot/handlers/close.py @@ -1,11 +1,17 @@ import asyncio +import time from library.telegram.base import RequestContext +from nexus.translations import t from telethon import events from .base import BaseCallbackQueryHandler +def is_earlier_than_2_days(message): + return time.time() - time.mktime(message.date.timetuple()) < 48 * 60 * 60 - 10 + + class CloseHandler(BaseCallbackQueryHandler): filter = events.CallbackQuery(pattern='^/close(?:_([A-Za-z0-9]+))?(?:_([0-9]+))?$') @@ -15,17 +21,20 @@ class CloseHandler(BaseCallbackQueryHandler): session_id = session_id.decode() request_context.add_default_fields(mode='close') - target_events = [event.answer()] + target_events = [] message = await event.get_message() - if message: + if message and is_earlier_than_2_days(message): + target_events.append(event.answer()) request_context.statbox( action='close', message_id=message.id, session_id=session_id, ) reply_message = await message.get_reply_message() - if reply_message: + if reply_message and is_earlier_than_2_days(reply_message): target_events.append(reply_message.delete()) target_events.append(message.delete()) + else: + target_events.append(event.answer(t('DELETION_FORBIDDEN_DUE_TO_AGE'))) await asyncio.gather(*target_events) diff --git a/nexus/bot/handlers/contact.py b/nexus/bot/handlers/contact.py deleted file mode 100644 index 508bbc9..0000000 --- a/nexus/bot/handlers/contact.py +++ /dev/null @@ -1,33 +0,0 @@ -import re - -from library.telegram.base import RequestContext -from nexus.bot.configs import config -from nexus.translations import t -from telethon import events - -from .base import BaseHandler - - -class ContactHandler(BaseHandler): - filter = events.NewMessage(incoming=True, pattern=re.compile('^/contact\\s?(.*)', re.DOTALL)) - is_group_handler = True - - async def handler(self, event: events.ChatAction, request_context: RequestContext): - query = event.pattern_match.group(1) - if query: - request_context.statbox(action='show', mode='contact', query=query) - await event.reply( - t('THANK_YOU_FOR_CONTACT', language=request_context.chat.language).format( - related_channel=self.application.config['telegram']['related_channel'], - ), - ) - else: - request_context.statbox(action='show', mode='contact') - await event.reply( - t('CONTACT', language=request_context.chat.language).format( - btc_donate_address=config['application']['btc_donate_address'], - libera_pay_url=config['application']['libera_pay_url'], - related_channel=config['telegram']['related_channel'], - ), - link_preview=False, - ) diff --git a/nexus/bot/handlers/copyright.py b/nexus/bot/handlers/copyright.py index 61b8971..fb14b97 100644 --- a/nexus/bot/handlers/copyright.py +++ b/nexus/bot/handlers/copyright.py @@ -11,21 +11,18 @@ class CopyrightHandler(BaseHandler): filter = events.NewMessage(incoming=True, pattern=re.compile('^/copyright\\s?(.*)', re.DOTALL)) async def handler(self, event: events.ChatAction, request_context: RequestContext): + request_context.add_default_fields(mode='copyright') query = event.pattern_match.group(1) if query: request_context.statbox( action='show', - mode='copyright', query=query, ) await self.application.telegram_client.forward_messages( self.application.config['telegram']['copyright_infringement_account'], event.message, ) - await event.reply(t( - 'COPYRIGHT_INFRINGEMENT_ACCEPTED', - language=request_context.chat.language, - )) + await event.reply(t('COPYRIGHT_INFRINGEMENT_ACCEPTED', request_context.chat.language)) else: - request_context.statbox(action='show', mode='copyright') - await event.reply(t('COPYRIGHT_DESCRIPTION', language=request_context.chat.language,)) + request_context.statbox(action='show') + await event.reply(t('COPYRIGHT_DESCRIPTION', request_context.chat.language,)) diff --git a/nexus/bot/handlers/download.py b/nexus/bot/handlers/download.py index 4cefde4..c0e66e9 100644 --- a/nexus/bot/handlers/download.py +++ b/nexus/bot/handlers/download.py @@ -32,6 +32,7 @@ class DownloadHandler(BaseCallbackQueryHandler): typed_document_pb = await self.get_typed_document_pb( index_alias=index_alias, document_id=document_id, + mode='download', request_context=request_context, session_id=session_id, position=position, @@ -45,12 +46,12 @@ class DownloadHandler(BaseCallbackQueryHandler): ) if start_delivery_response_pb.status == StartDeliveryResponsePb.Status.ALREADY_DOWNLOADING: await event.answer( - f'{t("ALREADY_DOWNLOADING", language=request_context.chat.language)}', + f'{t("ALREADY_DOWNLOADING", request_context.chat.language)}', ) await remove_button(event, '⬇️', and_empty_too=True) elif start_delivery_response_pb.status == StartDeliveryResponsePb.Status.TOO_MANY_DOWNLOADS: await event.answer( - f'{t("TOO_MANY_DOWNLOADS", language=request_context.chat.language)}', + f'{t("TOO_MANY_DOWNLOADS", request_context.chat.language)}', ) else: await remove_button(event, '⬇️', and_empty_too=True) diff --git a/nexus/bot/handlers/emoji.py b/nexus/bot/handlers/emoji.py deleted file mode 100644 index 1815cbc..0000000 --- a/nexus/bot/handlers/emoji.py +++ /dev/null @@ -1,17 +0,0 @@ -from library.telegram.base import RequestContext -from nexus.nlptools.regex import STICKER_REGEX -from nexus.translations import t -from telethon import events - -from .base import BaseHandler - - -class EmojiHandler(BaseHandler): - filter = events.NewMessage( - incoming=True, - pattern=STICKER_REGEX, - ) - - async def handler(self, event: events.ChatAction, request_context: RequestContext): - request_context.statbox(action='show', mode='emoji') - await event.reply(t('TANKS_BRUH', language=request_context.chat.language)) diff --git a/nexus/bot/handlers/help.py b/nexus/bot/handlers/help.py index fb12f0c..9b7e70a 100644 --- a/nexus/bot/handlers/help.py +++ b/nexus/bot/handlers/help.py @@ -15,6 +15,6 @@ class HelpHandler(BaseHandler): async def handler(self, event: events.ChatAction, request_context: RequestContext): request_context.statbox(action='show', mode='help') if event.is_group or event.is_channel: - await event.reply(t('HELP_FOR_GROUPS', language=request_context.chat.language), buttons=Button.clear()) + await event.reply(t('HELP_FOR_GROUPS', request_context.chat.language), buttons=Button.clear()) else: - await event.reply(t('HELP', language=request_context.chat.language), buttons=Button.clear()) + await event.reply(t('HELP', request_context.chat.language), buttons=Button.clear()) diff --git a/nexus/bot/handlers/donate.py b/nexus/bot/handlers/howtohelp.py similarity index 50% rename from nexus/bot/handlers/donate.py rename to nexus/bot/handlers/howtohelp.py index d85dd3f..ae47246 100644 --- a/nexus/bot/handlers/donate.py +++ b/nexus/bot/handlers/howtohelp.py @@ -6,20 +6,21 @@ from telethon import events from .base import BaseHandler -class DonateHandler(BaseHandler): - filter = events.NewMessage(incoming=True, pattern='^/donate(@[A-Za-z0-9_]+)?$') +class HowToHelpHandler(BaseHandler): + filter = events.NewMessage(incoming=True, pattern='^/howtohelp(@[A-Za-z0-9_]+)?$') is_group_handler = True async def handler(self, event: events.ChatAction, request_context: RequestContext): - request_context.statbox(action='show', mode='donate') + request_context.statbox(action='show', mode='howtohelp') await event.reply( - t( - 'DONATE', - language=request_context.chat.language - ).format( + t('HOW_TO_HELP', request_context.chat.language).format( amazon_gift_card_recipient=config['application'].get('amazon_gift_card_recipient', '🚫'), amazon_gift_card_url=config['application'].get('amazon_gift_card_url', '🚫'), btc_donate_address=config['application'].get('btc_donate_address', '🚫'), - libera_pay_url=config['application'].get('libera_pay_url', '🚫'), + eth_donate_address=config['application'].get('eth_donate_address', '🚫'), related_channel=config['telegram'].get('related_channel', '🚫'), + sol_donate_address=config['application'].get('sol_donate_address', '🚫'), + xmr_donate_address=config['application'].get('xmr_donate_address', '🚫'), + xrp_donate_address=config['application'].get('xrp_donate_address', '🚫'), + xrp_donate_tag=config['application'].get('xrp_donate_tag', '🚫'), )) diff --git a/nexus/bot/handlers/legacy.py b/nexus/bot/handlers/legacy.py index f3014b6..81759b3 100644 --- a/nexus/bot/handlers/legacy.py +++ b/nexus/bot/handlers/legacy.py @@ -15,7 +15,7 @@ class LegacyHandler(BaseHandler): async def handler(self, event: events.ChatAction, request_context: RequestContext): request_context.statbox(action='show', mode='legacy') - await event.reply(t('LEGACY', language=request_context.chat.language)) + await event.reply(t('LEGACY', request_context.chat.language)) class LegacyCallbackHandler(BaseCallbackQueryHandler): @@ -25,4 +25,4 @@ class LegacyCallbackHandler(BaseCallbackQueryHandler): async def handler(self, event: events.ChatAction, request_context: RequestContext): request_context.statbox(action='show', mode='legacy') - return await event.answer(t('LEGACY', language=request_context.chat.language)) + return await event.answer(t('LEGACY', request_context.chat.language)) diff --git a/nexus/bot/handlers/profile.py b/nexus/bot/handlers/profile.py new file mode 100644 index 0000000..661a7cc --- /dev/null +++ b/nexus/bot/handlers/profile.py @@ -0,0 +1,126 @@ +import asyncio +import re +import time + +from library.telegram.base import RequestContext +from nexus.bot.widgets.profile_widget import ProfileWidget +from nexus.views.telegram.base_holder import BaseHolder +from nexus.views.telegram.document_list_widget import DocumentListWidget +from telethon import events +from telethon.tl.types import PeerChannel + +from .base import BaseHandler + + +class ProfileHandler(BaseHandler): + filter = events.NewMessage(incoming=True, pattern=re.compile('^/profile')) + is_group_handler = True + should_reset_last_widget = False + stop_propagation = True + + async def handler(self, event, request_context: RequestContext): + request_context.add_default_fields(mode='profile') + profile_user_id = None + profile_reply_message = None + + target_events = [] + + if request_context.is_personal_mode(): + profile_user_id = request_context.chat.chat_id + target_events.append(event.delete()) + else: + reply_message = await event.get_reply_message() + if reply_message: + target_events.append(event.delete()) + if not isinstance(reply_message.from_id, PeerChannel): + profile_user_id = reply_message.from_id.user_id + profile_reply_message = reply_message + else: + if not isinstance(event.from_id, PeerChannel): + profile_user_id = event.from_id.user_id + profile_reply_message = event + else: + target_events.append(event.delete()) + + if profile_user_id is None: + return await asyncio.gather(*target_events) + + request_context.statbox( + action='show', + profile_user_id=profile_user_id, + ) + + profile = await self.application.idm_client.get_profile(chat_id=profile_user_id, last_n_documents=300) + profile_widget = ProfileWidget( + application=self.application, + request_context=request_context, + profile=profile, + ) + rendered_widget, buttons = await profile_widget.render() + if profile_reply_message: + target_events.append(profile_reply_message.reply(rendered_widget, buttons=buttons, link_preview=False)) + else: + target_events.append(event.reply(rendered_widget, buttons=buttons, link_preview=False)) + return asyncio.gather(*target_events) + + +class DigestHandler(BaseHandler): + filter = events.CallbackQuery(pattern=re.compile('^/digest$')) + should_reset_last_widget = False + + async def handler(self, event, request_context: RequestContext): + bot_name = self.application.config['telegram']['bot_name'] + session_id = self.generate_session_id() + + request_context.add_default_fields(mode='digest', session_id=session_id) + + profile = await self.application.idm_client.get_profile( + request_context.chat.chat_id, + last_n_documents=100, + ) + query = [] + for series in profile.most_popular_series: + for issn in series.issns: + query.append(f'issn:{issn}') + for tag in profile.most_popular_tags: + query.append(f'tag:"{tag}"') + query.append(f'+issued_at:[{int(time.time() - 3600 * 24 * 7)} TO {int(time.time())}]') + for document in profile.downloaded_documents: + query.append(f'-id:{document.id}') + query = ' '.join(query) + + request_context.statbox( + action='query', + query=query, + ) + + search_response = await self.application.meta_api_client.meta_search( + index_aliases=['scimag'], + query=query, + collectors=[{'top_docs': {'limit': 5}}], + user_id=str(request_context.chat.chat_id), + query_tags=['digest'], + session_id=session_id, + request_id=request_context.request_id, + ) + document_holders = [ + BaseHolder.create_from_document(scored_document) + for scored_document in search_response.collector_outputs[0].top_docs.scored_documents + ] + chat = await self.application.idm_client.get_chat(chat_id=request_context.chat.chat_id) + + document_list_widget = DocumentListWidget( + chat=chat, + document_holders=document_holders, + bot_name=bot_name, + header='✨ Nexus Discovery ✨', + ) + + view, buttons = await document_list_widget.render() + + await event.reply( + view, + buttons=buttons, + link_preview=False, + ) + diff --git a/nexus/bot/handlers/rank.py b/nexus/bot/handlers/rank.py new file mode 100644 index 0000000..dfbf3f8 --- /dev/null +++ b/nexus/bot/handlers/rank.py @@ -0,0 +1,25 @@ +import logging +import re + +from library.telegram.base import RequestContext +from library.telegram.common import close_button +from library.telegram.utils import safe_execution +from telethon import events + +from .base import BaseHandler + + +class RankHandler(BaseHandler): + filter = events.NewMessage(incoming=True, pattern=re.compile(r'^/rank(?:@\w+)?(.*)?$', re.DOTALL)) + is_group_handler = True + + async def handler(self, event: events.ChatAction, request_context: RequestContext): + session_id = self.generate_session_id() + request_context.add_default_fields(mode='rank', session_id=session_id) + + query = event.pattern_match.group(1).strip() + bot_name = self.application.config['telegram']['bot_name'] + language = request_context.chat.language + + async with safe_execution(error_log=request_context.error_log, level=logging.DEBUG): + await event.reply('Coming soon!', buttons=[close_button()]) diff --git a/nexus/bot/handlers/roll.py b/nexus/bot/handlers/roll.py index a23ecf2..5981a63 100644 --- a/nexus/bot/handlers/roll.py +++ b/nexus/bot/handlers/roll.py @@ -1,44 +1,58 @@ -import asyncio +import logging import re +import time from library.telegram.base import RequestContext +from library.telegram.utils import safe_execution +from nexus.views.telegram.base_holder import BaseHolder from telethon import events from .base import BaseHandler class RollHandler(BaseHandler): - filter = events.NewMessage(incoming=True, pattern=re.compile('^/roll(@[A-Za-z0-9_]+)?$', re.DOTALL)) + filter = events.NewMessage(incoming=True, pattern=re.compile(r'^/roll(?:@\w+)?(.*)?$', re.DOTALL)) is_group_handler = True async def handler(self, event: events.ChatAction, request_context: RequestContext): + start_time = time.time() + session_id = self.generate_session_id() request_context.add_default_fields(mode='roll', session_id=session_id) - request_context.statbox(action='show') + query = event.pattern_match.group(1).strip() + bot_name = self.application.config['telegram']['bot_name'] + language = request_context.chat.language - roll_response_pb = await self.application.meta_api_client.roll( - language=request_context.chat.language, + meta_search_response = await self.application.meta_api_client.meta_search( + index_aliases=['scimag', 'scitech'], + languages={request_context.chat.language: 1.0} if request_context.chat.language else None, + query=query, + collectors=[{'reservoir_sampling': {'limit': 1}}], session_id=session_id, request_id=request_context.request_id, user_id=str(request_context.chat.chat_id), + query_tags=['roll'], + skip_cache_loading=True, + skip_cache_saving=True, ) - scitech_view = await self.resolve_scitech( - document_id=roll_response_pb.document_id, - position=0, - request_context=request_context, - session_id=session_id, - ) - view, buttons = scitech_view.get_view( - language=request_context.chat.language, - session_id=session_id, - bot_name=self.application.config['telegram']['bot_name'], - ) - actions = [ - self.application.telegram_client.send_message( - request_context.chat.chat_id, - view, - buttons=buttons, - ), - event.delete(), - ] - return await asyncio.gather(*actions) + random_documents = meta_search_response.collector_outputs[0].reservoir_sampling.random_documents + + if random_documents: + holder = BaseHolder.create_from_document(random_documents[0]) + promo = self.application.promotioner.choose_promotion(language).format( + related_channel=self.application.config['telegram']['related_channel'], + twitter_contact_url=self.application.config['twitter']['contact_url'], + ) + view = holder.view_builder(language).add_view(bot_name=bot_name).add_new_line(2).add(promo, escaped=True).build() + buttons_builder = holder.buttons_builder(language) + + if request_context.is_group_mode(): + buttons_builder.add_remote_download_button(bot_name=bot_name) + else: + buttons_builder.add_download_button(session_id) + buttons_builder.add_close_button(session_id) + + request_context.statbox(action='show', duration=time.time() - start_time) + await event.respond(view, buttons=buttons_builder.build()) + async with safe_execution(error_log=request_context.error_log, level=logging.DEBUG): + await event.delete() diff --git a/nexus/bot/handlers/search.py b/nexus/bot/handlers/search.py index 9043a67..2099631 100644 --- a/nexus/bot/handlers/search.py +++ b/nexus/bot/handlers/search.py @@ -2,22 +2,26 @@ import asyncio import re import time from abc import ABC +from typing import Union from grpc import StatusCode from grpc.experimental.aio import AioRpcError from library.telegram.base import RequestContext -from nexus.bot.exceptions import ( - BannedUserError, - MessageHasBeenDeletedError, +from library.telegram.common import close_button +from library.telegram.utils import safe_execution +from nexus.bot.exceptions import BannedUserError +from nexus.bot.widgets.search_widget import ( + InlineSearchWidget, + SearchWidget, ) -from nexus.bot.widgets.search_widget import SearchWidget from nexus.translations import t -from nexus.views.telegram.common import close_button -from nexus.views.telegram.registry import parse_typed_document_to_view +from nexus.views.telegram.base_holder import BaseHolder +from nexus.views.telegram.common import encode_deep_query from telethon import ( + Button, events, - functions, ) +from telethon.tl.types import InlineQueryPeerTypeSameBotPM from .base import ( BaseCallbackQueryHandler, @@ -26,122 +30,68 @@ from .base import ( class BaseSearchHandler(BaseHandler, ABC): - def preprocess_query(self, query): - return query.replace(f'@{self.application.config["telegram"]["bot_name"]}', '').strip() - - async def do_search( + async def setup_widget( self, - event: events.ChatAction, request_context: RequestContext, prefetch_message, query: str, - is_group_mode: bool = False, is_shortpath_enabled: bool = False, - ): + ) -> tuple[str, list[Union[list[Button]], list[Button]]]: session_id = self.generate_session_id() message_id = prefetch_message.id - request_context.add_default_fields(is_group_mode=is_group_mode, mode='search', session_id=session_id) + request_context.add_default_fields( + is_group_mode=request_context.is_group_mode(), + mode='search', + session_id=session_id, + ) start_time = time.time() + language = request_context.chat.language + bot_name = self.application.config['telegram']['bot_name'] try: search_widget = await SearchWidget.create( application=self.application, chat=request_context.chat, session_id=session_id, - message_id=message_id, request_id=request_context.request_id, query=query, - is_group_mode=is_group_mode, + is_group_mode=request_context.is_group_mode(), ) except AioRpcError as e: - actions = [ - self.application.telegram_client.delete_messages( - request_context.chat.chat_id, - [message_id], - ) - ] if e.code() == StatusCode.INVALID_ARGUMENT: - too_difficult_picture_url = self.application.config['application'].get('too_difficult_picture_url', '') - if e.details() == 'url_query_error': - actions.append( - event.reply( - t('INVALID_QUERY_ERROR', language=request_context.chat.language).format( - too_difficult_picture_url=too_difficult_picture_url, - ), - buttons=[close_button()], - ) - ) - elif e.details() == 'invalid_query_error': - actions.append( - event.reply( - t('INVALID_SYNTAX_ERROR', language=request_context.chat.language).format( - too_difficult_picture_url=too_difficult_picture_url, - ), - buttons=[close_button()], - ) - ) - return await asyncio.gather(*actions) + return t('INVALID_SYNTAX_ERROR', language).format( + too_difficult_picture_url=self.application.config['application'].get('too_difficult_picture_url', ''), + ), [close_button()] elif e.code() == StatusCode.CANCELLED: - maintenance_picture_url = self.application.config['application'].get('maintenance_picture_url', '') - request_context.error_log(e) - actions.append(event.reply( - t('MAINTENANCE', language=request_context.chat.language).format( - maintenance_picture_url=maintenance_picture_url, - ), - buttons=[close_button()], - )) - return await asyncio.gather(*actions) - await asyncio.gather(*actions) + return t('MAINTENANCE', language).format( + maintenance_picture_url=self.application.config['application'].get('maintenance_picture_url', ''), + ), [close_button()], + request_context.error_log(e) raise e - action = 'documents_found' - if len(search_widget.scored_documents) == 0: - action = 'documents_not_found' - request_context.statbox( - action=action, + action='documents_retrieved', duration=time.time() - start_time, - query=f'page:0 query:{query}', + query=query, + page=0, + scored_documents=len(search_widget.scored_documents), ) if len(search_widget.scored_documents) == 1 and is_shortpath_enabled: - scored_document = search_widget.scored_documents[0] - document_view = parse_typed_document_to_view(scored_document.typed_document) - # Second (re-)fetching is required to retrieve duplicates - document_view = await self.resolve_document( - index_alias=scored_document.typed_document.WhichOneof('document'), - document_id=document_view.id, + holder = BaseHolder.create(search_widget.scored_documents[0].typed_document) + view = holder.view_builder(language).add_view(bot_name=bot_name).build() + buttons = holder.buttons_builder(language).add_default_layout( + bot_name=bot_name, + session_id=session_id, position=0, - session_id=session_id, - request_context=request_context, - ) - view, buttons = document_view.get_view( - language=request_context.chat.language, - session_id=session_id, - bot_name=self.application.config['telegram']['bot_name'], - with_buttons=not is_group_mode, - ) - return await asyncio.gather( - self.application.telegram_client.edit_message( - request_context.chat.chat_id, - message_id, - view, - buttons=buttons, - ), - ) + ).build() + return view, buttons - serp, buttons = await search_widget.render() - return await self.application.telegram_client.edit_message( - request_context.chat.chat_id, - message_id, - serp, - buttons=buttons, - link_preview=False, - ) + return await search_widget.render(message_id=message_id) class SearchHandler(BaseSearchHandler): - filter = events.NewMessage(incoming=True, pattern=re.compile('^(/search\\s+)?(.*)', flags=re.DOTALL)) + filter = events.NewMessage(incoming=True, pattern=re.compile(r'^(/search(?:@\w+)?\s+)?(.*)', flags=re.DOTALL)) is_group_handler = True should_reset_last_widget = False is_subscription_required_for_handler = True @@ -154,46 +104,46 @@ class SearchHandler(BaseSearchHandler): def parse_pattern(self, event: events.ChatAction): search_prefix = event.pattern_match.group(1) - query = self.preprocess_query(event.pattern_match.group(2)) - is_group_mode = event.is_group or event.is_channel + query = event.pattern_match.group(2).strip() - return search_prefix, query, is_group_mode + return search_prefix, query async def handler(self, event: events.ChatAction, request_context: RequestContext): + language = request_context.chat.language try: self.check_search_ban_timeout(user_id=str(request_context.chat.chat_id)) except BannedUserError as e: request_context.error_log(e) - return await event.reply(t( - 'BANNED_FOR_SECONDS', - language=request_context.chat.language - ).format( - seconds=e.ban_timeout, - reason=t( - 'BAN_MESSAGE_TOO_MANY_REQUESTS', - language=request_context.chat.language - ), - )) - search_prefix, query, is_group_mode = self.parse_pattern(event) + async with safe_execution(error_log=request_context.error_log): + return await event.reply(t('BANNED_FOR_SECONDS', language).format( + seconds=e.ban_timeout, + reason=t('BAN_MESSAGE_TOO_MANY_REQUESTS', language), + )) + search_prefix, query = self.parse_pattern(event) - if is_group_mode and not search_prefix: + if request_context.is_group_mode() and not search_prefix: return - if not is_group_mode and search_prefix: + if request_context.is_personal_mode() and search_prefix: query = event.raw_text prefetch_message = await event.reply( - t("SEARCHING", language=request_context.chat.language), + t("SEARCHING", language), ) self.application.user_manager.last_widget[request_context.chat.chat_id] = prefetch_message.id try: - await self.do_search( - event=event, + text, buttons = await self.setup_widget( request_context=request_context, prefetch_message=prefetch_message, query=query, - is_group_mode=is_group_mode, is_shortpath_enabled=True, ) + return await self.application.telegram_client.edit_message( + request_context.chat.chat_id, + prefetch_message.id, + text, + buttons=buttons, + link_preview=False, + ) except (AioRpcError, asyncio.CancelledError) as e: await asyncio.gather( event.delete(), @@ -202,60 +152,91 @@ class SearchHandler(BaseSearchHandler): raise e +class InlineSearchHandler(BaseSearchHandler): + filter = events.InlineQuery() + stop_propagation = False + + async def handler(self, event, request_context: RequestContext): + if event.query.peer_type == InlineQueryPeerTypeSameBotPM(): + await event.answer() + return + + builder = event.builder + session_id = self.generate_session_id() + + try: + if len(event.text) <= 3: + await event.answer([]) + raise events.StopPropagation() + inline_search_widget = await InlineSearchWidget.create( + application=self.application, + chat=request_context.chat, + session_id=session_id, + request_id=request_context.request_id, + query=event.text, + is_group_mode=request_context.is_group_mode(), + ) + items = inline_search_widget.render(builder=builder) + encoded_query = encode_deep_query(event.text) + if len(encoded_query) < 32: + await event.answer( + items, + private=True, + switch_pm=self.application.config['telegram']['bot_name'], + switch_pm_param=encoded_query, + ) + else: + await event.answer(items) + except AioRpcError as e: + if e.code() == StatusCode.INVALID_ARGUMENT or e.code() == StatusCode.CANCELLED: + await event.answer([]) + raise e + raise events.StopPropagation() + + class SearchEditHandler(BaseSearchHandler): - filter = events.MessageEdited(incoming=True, pattern=re.compile('^(/search\\s+)?(.*)', flags=re.DOTALL)) + filter = events.MessageEdited(incoming=True, pattern=re.compile(r'^(/search(?:@\w+)\s+)?(.*)', flags=re.DOTALL)) is_group_handler = True should_reset_last_widget = False def parse_pattern(self, event: events.ChatAction): search_prefix = event.pattern_match.group(1) - query = self.preprocess_query(event.pattern_match.group(2)) - is_group_mode = event.is_group or event.is_channel - return search_prefix, query, is_group_mode - - async def get_last_messages_in_chat(self, event: events.ChatAction): - return await self.application.telegram_client(functions.messages.GetMessagesRequest( - id=list(range(event.id + 1, event.id + 10))) - ) + query = event.pattern_match.group(2).strip() + return search_prefix, query async def handler(self, event: events.ChatAction, request_context: RequestContext): - search_prefix, query, is_group_mode = self.parse_pattern(event) + search_prefix, query = self.parse_pattern(event) request_context.add_default_fields(mode='search_edit') - if is_group_mode and not search_prefix: + if request_context.is_group_mode() and not search_prefix: return - if not is_group_mode and search_prefix: + if request_context.is_personal_mode() and search_prefix: query = event.raw_text - last_messages = await self.get_last_messages_in_chat(event) - try: - if not last_messages: - raise MessageHasBeenDeletedError() - for next_message in last_messages.messages: - if next_message.is_reply and event.id == next_message.reply_to_msg_id: - request_context.statbox(action='resolved') - return await self.do_search( - event=event, - request_context=request_context, - prefetch_message=next_message, - query=query, - is_group_mode=is_group_mode, - ) - raise MessageHasBeenDeletedError() - except MessageHasBeenDeletedError as e: - request_context.error_log(e) - return await event.reply( - t('REPLY_MESSAGE_HAS_BEEN_DELETED', language=request_context.chat.language), - ) + for next_message in await self.get_last_messages_in_chat(event): + if next_message.is_reply and event.id == next_message.reply_to_msg_id: + request_context.statbox(action='resolved') + text, buttons = await self.setup_widget( + request_context=request_context, + prefetch_message=next_message, + query=query, + ) + return await self.application.telegram_client.edit_message( + request_context.chat.chat_id, + next_message.id, + text, + buttons=buttons, + link_preview=False, + ) + return await event.reply( + t('REPLY_MESSAGE_HAS_BEEN_DELETED', request_context.chat.language), + ) class SearchPagingHandler(BaseCallbackQueryHandler): filter = events.CallbackQuery(pattern='^/search_([A-Za-z0-9]+)_([0-9]+)_([0-9]+)$') should_reset_last_widget = False - def preprocess_query(self, query): - return query.replace(f'@{self.application.config["telegram"]["bot_name"]}', '').strip() - def parse_pattern(self, event: events.ChatAction): session_id = event.pattern_match.group(1).decode() message_id = int(event.pattern_match.group(2).decode()) @@ -274,41 +255,39 @@ class SearchPagingHandler(BaseCallbackQueryHandler): return await event.answer() reply_message = await message.get_reply_message() + if not reply_message: + return await event.respond( + t('REPLY_MESSAGE_HAS_BEEN_DELETED', request_context.chat.language), + ) + + query = reply_message.raw_text.replace(f'@{self.application.config["telegram"]["bot_name"]}', '').strip() + try: - if not reply_message: - raise MessageHasBeenDeletedError() - query = self.preprocess_query(reply_message.raw_text) search_widget = await SearchWidget.create( application=self.application, chat=request_context.chat, session_id=session_id, - message_id=message_id, request_id=request_context.request_id, query=query, page=page, ) - except MessageHasBeenDeletedError: - return await event.respond( - t('REPLY_MESSAGE_HAS_BEEN_DELETED', language=request_context.chat.language), - ) except AioRpcError as e: if e.code() == StatusCode.INVALID_ARGUMENT or e.code() == StatusCode.CANCELLED: request_context.error_log(e) return await event.answer( - t('MAINTENANCE_WO_PIC', language=request_context.chat.language), + t('MAINTENANCE_WO_PIC', request_context.chat.language), ) raise e - action = 'documents_found' - if len(search_widget.scored_documents) == 0: - action = 'documents_not_found' - request_context.statbox( - action=action, + action='documents_retrieved', duration=time.time() - start_time, - query=f'page:{page} query:{query}', + query=query, + page=page, + scored_documents=len(search_widget.scored_documents), ) - serp, buttons = await search_widget.render() + + serp, buttons = await search_widget.render(message_id=message_id) return await asyncio.gather( event.answer(), message.edit(serp, buttons=buttons, link_preview=False) diff --git a/nexus/bot/handlers/seed.py b/nexus/bot/handlers/seed.py new file mode 100644 index 0000000..0c5eb60 --- /dev/null +++ b/nexus/bot/handlers/seed.py @@ -0,0 +1,128 @@ +import io +import re + +from library.telegram.base import RequestContext +from library.telegram.common import close_button +from library.telegram.utils import safe_execution +from nexus.translations import t +from nlptools.izihawa_nlptools.utils import cast_string_to_single_string +from telethon import events +from telethon.tl.types import DocumentAttributeFilename + +from .base import BaseHandler + + +class SeedHandler(BaseHandler): + filter = events.NewMessage( + incoming=True, + pattern=re.compile(r'^/(r)?seed(?:@\w+)?' + r'(?:(?:\s+(\d+))?(?:\s+(\d+))?(\n+.*)?)?$'), + ) + is_group_handler = False + + async def handler(self, event: events.ChatAction, request_context: RequestContext): + session_id = self.generate_session_id() + request_context.add_default_fields(mode='seed', session_id=session_id) + + random_seed = True if event.pattern_match.group(1) else False + + if string_offset := event.pattern_match.group(2): + offset = int(string_offset.strip() or 0) + else: + offset = 0 + + if string_limit := event.pattern_match.group(3): + limit = min(int(string_limit.strip()), 10000) + else: + limit = offset + offset = 0 + + original_query = '' + if string_query := event.pattern_match.group(4): + original_query = string_query.strip() + query = f'+({original_query}) +ipfs_multihashes:[* TO *]' + else: + query = '+ipfs_multihashes:[* TO *]' + + if not string_query and not string_limit and not string_offset: + request_context.statbox(action='help') + return await event.reply(t('SEED_HELP', language=request_context.chat.language), buttons=[close_button()]) + + wait_message = await event.respond(t('SEED_GENERATION', language=request_context.chat.language)) + async with safe_execution(error_log=request_context.error_log): + await event.delete() + + request_context.statbox( + action='request', + offset=offset, + limit=limit, + query=query, + ) + + if random_seed: + meta_search_response = await self.application.meta_api_client.meta_search( + index_aliases=['scitech', ], + query=query, + collectors=[{ + 'reservoir_sampling': { + 'limit': limit, + 'fields': ['ipfs_multihashes', 'doi', 'md5'], + } + }, { + 'count': {} + }], + skip_cache_loading=True, + skip_cache_saving=True, + query_tags=['seed'], + ) + documents = meta_search_response.collector_outputs[0].reservoir_sampling.random_documents + count = meta_search_response.collector_outputs[1].count.count + else: + meta_search_response = await self.application.meta_api_client.meta_search( + index_aliases=['scitech', ], + query=query, + collectors=[{ + 'top_docs': { + 'limit': limit, + 'offset': offset, + 'scorer': {'eval_expr': '-updated_at'}, + 'fields': ['ipfs_multihashes', 'doi', 'md5'], + } + }, { + 'count': {} + }], + query_tags=['seed'], + ) + documents = meta_search_response.collector_outputs[0].top_docs.scored_documents + count = meta_search_response.collector_outputs[1].count.count + + buffer = io.BytesIO() + for document in documents: + buffer.write(document.document.encode()) + buffer.write(b'\n') + buffer.flush() + + casted_query = cast_string_to_single_string(original_query) + if not casted_query: + casted_query = 'cids' + filename = f'{casted_query[:16]}-{offset}-{limit}-{count}.cids.txt' + oneliner = f'cat {filename} | jq -c -r ".ipfs_multihashes[0]" | xargs -I{{}} ipfs pin add {{}}' + + query_head = f'`{original_query}`\n\n' if original_query else '' + offset_head = f'**Offset:** {offset}\n' if not random_seed else '' + await self.application.telegram_client.send_file( + attributes=[DocumentAttributeFilename(filename)], + buttons=[close_button()], + caption=f'{query_head}' + f'{offset_head}' + f'**Limit:** {limit}\n' + f'**Total:** {count}\n\n' + f'**One-liner:** \n' + f'`{oneliner}`', + entity=request_context.chat.chat_id, + file=buffer.getvalue(), + reply_to=event, + ) + buffer.close() + async with safe_execution(error_log=request_context.error_log): + await self.application.telegram_client.delete_messages(request_context.chat.chat_id, [wait_message.id]) diff --git a/nexus/bot/handlers/shortlink.py b/nexus/bot/handlers/shortlink.py index 664d256..71e2ec9 100644 --- a/nexus/bot/handlers/shortlink.py +++ b/nexus/bot/handlers/shortlink.py @@ -17,9 +17,9 @@ class ShortlinkHandler(BaseHandler): request_context.statbox(action='start', mode='shortlink', query=query) try: - bot_name = self.application.config["telegram"]["bot_name"] + bot_name = self.application.config['telegram']['bot_name'] text = encode_query_to_deep_link(query, bot_name) except TooLongQueryError: - text = t('TOO_LONG_QUERY_FOR_SHORTLINK', language=request_context.chat.language), + text = t('TOO_LONG_QUERY_FOR_SHORTLINK', request_context.chat.language) return await event.reply(f'`{text}`', link_preview=False) diff --git a/nexus/bot/handlers/start.py b/nexus/bot/handlers/start.py index 19287ed..ec03de3 100644 --- a/nexus/bot/handlers/start.py +++ b/nexus/bot/handlers/start.py @@ -30,14 +30,26 @@ class StartHandler(BaseSearchHandler): request_context.statbox(action='query', mode='start', query=query) request_message = await self.application.telegram_client.send_message(event.chat, query) prefetch_message = await request_message.reply( - t("SEARCHING", language=request_context.chat.language), + t("SEARCHING", request_context.chat.language), ) self.application.user_manager.last_widget[request_context.chat.chat_id] = prefetch_message.id + text, buttons = await self.setup_widget( + request_context=request_context, + prefetch_message=prefetch_message, + query=query, + is_shortpath_enabled=True, + ) + edit_action = self.application.telegram_client.edit_message( + request_context.chat.chat_id, + prefetch_message.id, + text, + buttons=buttons, + link_preview=False, + ) await asyncio.gather( event.delete(), - self.do_search(event, request_context, prefetch_message, query=query, - is_shortpath_enabled=True), + edit_action, ) else: request_context.statbox(action='show', mode='start') - await event.reply(t('HELP', language=request_context.chat.language)) + await event.reply(t('HELP', request_context.chat.language)) diff --git a/nexus/bot/handlers/submit.py b/nexus/bot/handlers/submit.py index 2cc8702..34d5706 100644 --- a/nexus/bot/handlers/submit.py +++ b/nexus/bot/handlers/submit.py @@ -1,44 +1,125 @@ import asyncio +import io +import re +import zipfile +from izihawa_nlptools.regex import DOI_REGEX from library.telegram.base import RequestContext +from library.telegram.common import close_button from nexus.bot.exceptions import UnknownFileFormatError +from nexus.hub.proto import submitter_service_pb2 as submitter_service_pb from nexus.translations import t -from nexus.views.telegram.common import close_button from telethon import events from .base import BaseHandler class SubmitHandler(BaseHandler): - filter = events.NewMessage(func=lambda e: e.document, incoming=True) - is_group_handler = False + filter = events.NewMessage( + func=lambda e: e.document and e.document.mime_type in ('application/pdf', 'application/zip'), + incoming=True + ) + is_group_handler = True writing_handler = True - async def handler(self, event: events.ChatAction, request_context: RequestContext): + def get_doi_hint(self, message, reply_message): + doi_hint = None + if message.raw_text: + doi_regex = re.search(DOI_REGEX, message.raw_text) + if doi_regex: + doi_hint = doi_regex.group(1) + '/' + doi_regex.group(2) + if not doi_hint and reply_message: + doi_regex = re.search(DOI_REGEX, reply_message.raw_text) + if doi_regex: + doi_hint = doi_regex.group(1) + '/' + doi_regex.group(2) + return doi_hint + + async def handler(self, event, request_context: RequestContext): session_id = self.generate_session_id() request_context.add_default_fields(session_id=session_id) - request_context.statbox(action='show', mode='submit') + request_context.statbox(action='show', mode='submit', mime_type=event.document.mime_type) - if event.document.mime_type != 'application/pdf': - request_context.statbox(action='unknown_file_format') - request_context.error_log(UnknownFileFormatError(format=event.document.mime_type)) - return await asyncio.gather( - event.reply( - t('UNKNOWN_FILE_FORMAT_ERROR', language=request_context.chat.language), - buttons=[close_button()], - ), - event.delete(), - ) + reply_to = None + message = event + reply_message = await event.get_reply_message() + if reply_message: + reply_to = reply_message.id - return await asyncio.gather( - self.application.hub_client.submit( - telegram_document=bytes(event.document), - telegram_file_id=event.file.id, - chat=request_context.chat, - request_id=request_context.request_id, - session_id=session_id, - bot_name=request_context.bot_name, - ), - event.delete(), + doi_hint = self.get_doi_hint(message=message, reply_message=reply_message) + doi_hint_priority = '⚡' in message.raw_text + user_id = message.sender_id + request_context.statbox( + action='analyzed', + mode='submit', + doi_hint=doi_hint, + doi_hint_priority=doi_hint_priority, + reply_to=reply_to, ) + + match event.document.mime_type: + case 'application/pdf': + return await self.application.hub_client.submit( + file=submitter_service_pb.TelegramFile( + document=bytes(event.document), + file_id=event.file.id, + message_id=event.id, + ), + chat=request_context.chat, + bot_name=request_context.bot_name, + reply_to=reply_to, + request_id=request_context.request_id, + session_id=session_id, + doi_hint=doi_hint, + doi_hint_priority=doi_hint_priority, + uploader_id=user_id, + ) + case 'application/zip': + try: + if request_context.is_personal_mode(): + file_data = await self.application.telegram_client.download_document( + document=event.document, + file=bytes, + ) + request_context.statbox(action='unpack', mode='submit', size=len(file_data)) + with zipfile.ZipFile(io.BytesIO(file_data), 'r') as zf: + for filename in zf.namelist(): + if not filename.lower().endswith('.pdf'): + continue + nested_file = zf.read(filename) + request_context.statbox( + action='unpacked_file', + mode='submit', + filename=filename, + size=len(nested_file), + ) + await self.application.hub_client.submit( + file=submitter_service_pb.PlainFile( + data=nested_file, + filename=filename, + ), + chat=request_context.chat, + bot_name=request_context.bot_name, + reply_to=reply_to, + request_id=request_context.request_id, + session_id=session_id, + uploader_id=user_id, + ) + else: + await event.reply(t('ZIP_FILES_ARE_NOT_SUPPORTED_IN_GROUP_MODE', request_context.chat.language)) + finally: + return await event.delete() + case _: + request_context.statbox(action='unknown_file_format') + request_context.error_log(UnknownFileFormatError(format=event.document.mime_type)) + return await asyncio.gather( + event.reply( + t('UNKNOWN_FILE_FORMAT_ERROR', request_context.chat.language), + buttons=None if request_context.is_group_mode() else [close_button()], + ), + event.delete(), + ) + + +class EditSubmitHandler(SubmitHandler): + filter = events.MessageEdited(func=lambda e: e.document, incoming=True) diff --git a/nexus/bot/handlers/top_missed.py b/nexus/bot/handlers/top_missed.py deleted file mode 100644 index 2dd8a38..0000000 --- a/nexus/bot/handlers/top_missed.py +++ /dev/null @@ -1,54 +0,0 @@ -from library.telegram.base import RequestContext -from nexus.bot.widgets.document_list_widget import DocumentListWidget -from nexus.translations import t -from telethon import events - -from .base import BaseHandler - - -class TopMissedHandler(BaseHandler): - filter = events.NewMessage(incoming=True, pattern='^/tm$') - is_group_handler = False - should_reset_last_widget = False - - async def do_request(self, request_context: RequestContext, session_id: str, message_id: int, page: int): - response = await self.application.meta_api_client.top_missed( - page=page, - page_size=10, - session_id=session_id, - request_id=request_context.request_id, - ) - document_list_widget = DocumentListWidget( - application=self.application, - chat=request_context.chat, - typed_documents=response.typed_documents, - cmd='tm', - has_next=response.has_next, - session_id=session_id, - message_id=message_id, - request_id=request_context.request_id, - page=page, - ) - serp, buttons = await document_list_widget.render() - return await self.application.telegram_client.edit_message( - request_context.chat.chat_id, - message_id, - serp, - buttons=buttons, - link_preview=False, - ) - - async def handler(self, event, request_context: RequestContext): - session_id = self.generate_session_id() - request_context.add_default_fields(mode='top_missed', session_id=session_id) - request_context.statbox() - - prefetch_message = await event.reply(t("SEARCHING", language=request_context.chat.language)) - message_id = prefetch_message.id - - return await self.do_request( - request_context=request_context, - session_id=session_id, - message_id=message_id, - page=0, - ) diff --git a/nexus/bot/handlers/trends.py b/nexus/bot/handlers/trends.py new file mode 100644 index 0000000..b7328e9 --- /dev/null +++ b/nexus/bot/handlers/trends.py @@ -0,0 +1,190 @@ +import datetime +import io +import re + +import pandas as pd +import seaborn as sns +from dateparser import parse +from izihawa_utils.pb_to_json import MessageToDict +from library.telegram.base import RequestContext +from library.telegram.common import close_button +from matplotlib import pyplot as plt +from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas +from telethon import events + +from ...translations import t +from .base import BaseHandler + +COLOR = (40/256, 64/256, 145/256) +sns.set(rc={'figure.figsize': (8, 7)}) +sns.set_theme(style='darkgrid') + + +def parse_date(d): + if d == '*': + return d + f = datetime.datetime.fromtimestamp(int(d)) + return f'{f.year}' + + +def derive_range(date_start: datetime.datetime, date_end: datetime.datetime): + days = (date_end - date_start).days + + if days < 60: + ranges = pd.period_range(start=date_start, end=date_end, freq='D') + labels = [f'{period.month:02}-{period.day:02}' for period in ranges] + elif days < 365 * 4: + ranges = pd.period_range(start=date_start, end=date_end, freq='M') + labels = [f'{period.year}-{period.month:02}' for period in ranges] + elif days < 365 * 10: + ranges = pd.period_range(start=date_start, end=date_end, freq='Q') + labels = [f'{period.year}-{period.month:02}' for period in ranges] + elif days < 365 * 30: + ranges = pd.period_range(start=date_start, end=date_end, freq='Y') + labels = [f'{period.year}' for period in ranges] + else: + ranges = pd.period_range(start=date_start, end=date_end, freq='5Y') + labels = [f'{period.year}' for period in ranges] + + timestamps = [period.to_timestamp().timestamp() for period in ranges] + query_ranges = list(map(lambda x: {"from": str(int(x[0])), "to": str(int(x[1]))}, zip(timestamps, timestamps[1:]))) + + return query_ranges, labels[:-1] + + +class TrendsHelpHandler(BaseHandler): + filter = events.NewMessage( + incoming=True, + pattern=re.compile(r'^/trends$') + ) + + async def handler(self, event: events.ChatAction, request_context: RequestContext): + return await event.reply(t('TRENDS_HELP', language=request_context.chat.language), buttons=[close_button()]) + + +class TrendsBaseHandler(BaseHandler): + async def process(self, event: events.ChatAction, request_context: RequestContext): + date_start = event.pattern_match.group(1) + date_end = event.pattern_match.group(2) + queries = [query for query in event.pattern_match.group(3).split('\n') if query] + + request_context.statbox( + action='show', + date_range=[date_start, date_end], + queries=queries, + ) + + date_start = parse(date_start, settings={'PREFER_DAY_OF_MONTH': 'first'}) + date_end = parse(date_end, settings={'PREFER_DAY_OF_MONTH': 'first'}) + query_ranges, labels = derive_range(date_start, date_end) + + request_context.statbox( + action='ranges', + query_ranges=query_ranges, + labels=labels, + ) + + series = {} + for query in queries: + aggregation = await self.application.meta_api_client.meta_search( + index_aliases=['scimag'], + query=query, + collectors=[{ + 'aggregation': {'aggregations': { + 'topics_per_year': { + 'bucket': { + 'range': { + 'field': 'issued_at', + 'ranges': query_ranges, + }, + 'sub_aggregation': { + 'topics': { + 'metric': { + 'stats': { + 'field': 'issued_at', + } + } + } + } + } + } + }}} + ], + user_id=str(request_context.chat.chat_id), + query_tags=['trends'], + ) + + request_context.statbox( + action='aggregation', + aggregation=MessageToDict(aggregation), + ) + + docs = [] + for output in aggregation.collector_outputs: + for bucket in output.aggregation.aggregation_results['topics_per_year'].bucket.range.buckets[1:-1]: + docs.append(int(bucket.doc_count)) + series[query] = pd.Series(docs) + + data = pd.DataFrame({'date': labels, **series}) + data = data.set_index('date') + + fig, ax = plt.subplots() + sns.lineplot(data=data, ax=ax, linewidth=2) + ax.set_title('Science Trends', fontdict={'fontsize': 32}, color=COLOR) + ax.legend() + ax.text(0.01, 0.01, 'https://t.me/nexus_media', transform=ax.transAxes, + fontsize=10, color=COLOR, alpha=0.4) + ax.set(xlabel='', ylabel='# of publications') + + for item in ax.get_xticklabels(): + item.set_rotation(75) + + with io.BytesIO() as plot_file: + FigureCanvas(fig).print_png(plot_file) + plot_file.seek(0) + return await self.send_figure(event, request_context, plot_file) + + async def send_figure(self, event, request_context, plot_file): + raise NotImplementedError() + + +class TrendsHandler(TrendsBaseHandler): + filter = events.NewMessage( + incoming=True, + pattern=re.compile(r'^/trends(?:@\w+)?\s+(.*)\s+to\s+(.*)\n+([\S\s]*)$') + ) + is_group_handler = True + + async def send_figure(self, event, request_context, plot_file): + return await event.reply( + file=plot_file, + buttons=[close_button()] if request_context.is_personal_mode() else None, + ) + + async def handler(self, event: events.ChatAction, request_context: RequestContext): + request_context.add_default_fields(mode='trends') + return await self.process(event, request_context) + + +class TrendsEditHandler(TrendsBaseHandler): + filter = events.MessageEdited( + incoming=True, + pattern=re.compile(r'^/trends(?:@\w+)?\s+(.*)\s+to\s+(.*)\n+([\S\s]*)$') + ) + is_group_handler = True + + async def send_figure(self, event, request_context, plot_file): + for next_message in await self.get_last_messages_in_chat(event): + if next_message.is_reply and event.id == next_message.reply_to_msg_id: + request_context.statbox(action='resolved') + return await self.application.telegram_client.edit_message( + request_context.chat.chat_id, + next_message.id, + file=plot_file, + buttons=[close_button()] if request_context.is_personal_mode() else None, + link_preview=False, + ) + + async def handler(self, event: events.ChatAction, request_context: RequestContext): + request_context.add_default_fields(mode='trends_edit') + return await self.process(event, request_context) diff --git a/nexus/bot/handlers/view.py b/nexus/bot/handlers/view.py index 847c12d..b36557a 100644 --- a/nexus/bot/handlers/view.py +++ b/nexus/bot/handlers/view.py @@ -1,8 +1,10 @@ import asyncio +import time from library.telegram.base import RequestContext -from nexus.bot.exceptions import MessageHasBeenDeletedError +from library.telegram.utils import safe_execution from nexus.translations import t +from nexus.views.telegram.base_holder import BaseHolder from telethon import ( events, functions, @@ -12,9 +14,12 @@ from telethon.errors import MessageIdInvalidError from .base import BaseHandler +def is_earlier_than_2_days(message): + return time.time() - time.mktime(message.date.timetuple()) < 2 * 24 * 60 * 60 - 10 + + class ViewHandler(BaseHandler): - filter = events.NewMessage(incoming=True, pattern='^/v([ab])([sr])?_([A-Za-z0-9]+)_([0-9]+)_([0-9]+)_' - '([0-9]+)') + filter = events.NewMessage(incoming=True, pattern='^/v([ab])([sr])?_([A-Za-z0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)') should_reset_last_widget = False def parse_pattern(self, event: events.ChatAction): @@ -24,94 +29,87 @@ class ViewHandler(BaseHandler): old_message_id = int(event.pattern_match.group(4)) document_id = int(event.pattern_match.group(5)) position = int(event.pattern_match.group(6)) - page = int(position / self.application.config['application']['page_size']) return index_alias, session_id, old_message_id, document_id, position, page - async def process_widgeting(self, has_found_old_widget, old_message_id, request_context: RequestContext): - if has_found_old_widget: - message_id = old_message_id - link_preview = None + async def get_message(self, message_id): + get_message_request = functions.messages.GetMessagesRequest(id=[message_id]) + messages = await self.application.telegram_client(get_message_request) + return messages.messages[0] + + async def process_widgeting(self, has_found_old_widget, old_message, request_context: RequestContext): + if has_found_old_widget and is_earlier_than_2_days(old_message): + message_id = old_message.id else: - old_message = (await self.application.telegram_client( - functions.messages.GetMessagesRequest(id=[old_message_id]) - )).messages[0] prefetch_message = await self.application.telegram_client.send_message( request_context.chat.chat_id, - t("SEARCHING", language=request_context.chat.language), + t("SEARCHING", request_context.chat.language), reply_to=old_message.reply_to_msg_id, ) self.application.user_manager.last_widget[request_context.chat.chat_id] = prefetch_message.id message_id = prefetch_message.id - link_preview = True - return message_id, link_preview + return message_id - async def compose_back_command( - self, - session_id, - message_id, - page, - ): + async def compose_back_command(self, session_id, message_id, page): return f'/search_{session_id}_{message_id}_{page}' async def handler(self, event: events.ChatAction, request_context: RequestContext): index_alias, session_id, old_message_id, document_id, position, page = self.parse_pattern(event) request_context.add_default_fields(mode='view', session_id=session_id) - request_context.statbox(action='view', document_id=document_id, position=position, index_alias=index_alias) + request_context.statbox( + action='view', + document_id=document_id, + position=position, + index_alias=index_alias + ) + old_message = await self.get_message(old_message_id) has_found_old_widget = old_message_id == self.application.user_manager.last_widget.get(request_context.chat.chat_id) + language = request_context.chat.language try: - message_id, link_preview = await self.process_widgeting( + message_id = await self.process_widgeting( has_found_old_widget=has_found_old_widget, - old_message_id=old_message_id, - request_context=request_context + old_message=old_message, + request_context=request_context, ) - - document_view = await self.resolve_document( + typed_document_pb = await self.resolve_document( index_alias, document_id, position, session_id, request_context, ) - try: - back_command = await self.compose_back_command( - session_id=session_id, - message_id=message_id, - page=page, - ) - except MessageHasBeenDeletedError: - return await event.respond( - t('REPLY_MESSAGE_HAS_BEEN_DELETED', language=request_context.chat.language), - ) + holder = BaseHolder.create(typed_document_pb=typed_document_pb) + back_command = await self.compose_back_command(session_id=session_id, message_id=message_id, page=page) - view, buttons = document_view.get_view( - language=request_context.chat.language, - session_id=session_id, - bot_name=self.application.config['telegram']['bot_name'], - position=position, - back_command=back_command, + promo = self.application.promotioner.choose_promotion(language).format( + related_channel=self.application.config['telegram']['related_channel'], + twitter_contact_url=self.application.config['twitter']['contact_url'], ) + view_builder = holder.view_builder(language).add_view( + bot_name=self.application.config['telegram']['bot_name'] + ).add_new_line(2).add(promo, escaped=True) + buttons = holder.buttons_builder(language).add_back_button(back_command).add_default_layout( + bot_name=self.application.config['telegram']['bot_name'], + session_id=session_id, + position=position, + ).build() actions = [ self.application.telegram_client.edit_message( request_context.chat.chat_id, message_id, - view, + view_builder.build(), buttons=buttons, - link_preview=link_preview, + link_preview=view_builder.has_cover, ), event.delete(), ] if not has_found_old_widget: - actions.append( - self.application.telegram_client.delete_messages( - request_context.chat.chat_id, - [old_message_id], - ) - ) + async with safe_execution(error_log=request_context.error_log): + await self.application.telegram_client.delete_messages(request_context.chat.chat_id, [old_message_id]) return await asyncio.gather(*actions) except MessageIdInvalidError: - await event.reply(t("VIEWS_CANNOT_BE_SHARED", language=request_context.chat.language)) + await event.reply(t("VIEWS_CANNOT_BE_SHARED", language)) diff --git a/nexus/bot/main.py b/nexus/bot/main.py index 97fd89f..1115e61 100644 --- a/nexus/bot/main.py +++ b/nexus/bot/main.py @@ -8,11 +8,9 @@ from nexus.bot.configs import get_config def main(config): configure_logging(config) - if config['metrics']['enabled']: - from library.metrics_server import MetricsServer - MetricsServer(config['metrics']).fork_process() - asyncio.set_event_loop(uvloop.new_event_loop()) - asyncio.get_event_loop().run_until_complete(TelegramApplication(config=config).start_and_wait()) + loop = uvloop.new_event_loop() + asyncio.set_event_loop(loop) + loop.run_until_complete(TelegramApplication(config=config).start_and_wait()) if __name__ == '__main__': diff --git a/nexus/bot/promotioner.py b/nexus/bot/promotioner.py index ce402fb..b6e4aab 100644 --- a/nexus/bot/promotioner.py +++ b/nexus/bot/promotioner.py @@ -5,8 +5,9 @@ class Promotioner: """ Promotioner is used to select promotion randomly based on weights of every promotion. """ - def __init__(self, promotions: list[dict]): + def __init__(self, promotions: list[dict], default_promotion_index: int = 0): self.promotions = promotions + self.default_promotion_index = default_promotion_index self.partial_sums: list = [self.promotions[0]['weight']] for promotion in self.promotions[1:]: self.partial_sums.append(promotion['weight'] + self.partial_sums[-1]) @@ -18,4 +19,10 @@ class Promotioner: continue if language in promotion['texts']: return promotion['texts'][language] - return promotion['texts']['en'] + elif promotion.get('local', False): + default_promotion = self.promotions[self.default_promotion_index] + if language in default_promotion['texts']: + return default_promotion['texts'][language] + return default_promotion['texts']['en'] + else: + return promotion['texts']['en'] diff --git a/nexus/bot/widgets/profile_widget.py b/nexus/bot/widgets/profile_widget.py new file mode 100644 index 0000000..f94acd2 --- /dev/null +++ b/nexus/bot/widgets/profile_widget.py @@ -0,0 +1,131 @@ +from typing import Optional + +from idm.api.proto import ( + chat_manager_service_pb2, + profile_service_pb2, + subscription_manager_service_pb2, +) +from izihawa_nlptools.utils import escape_format +from library.telegram.common import close_button +from nexus.bot.application import TelegramApplication +from nexus.views.telegram.common import ( + TooLongQueryError, + encode_query_to_deep_link, +) +from telethon import Button + + +def limits(text, limit, with_dots: bool = False): + if len(text) > limit: + text = text[:limit] + if with_dots: + text += '...' + return text + + +class ProfileWidget: + def __init__( + self, + application: TelegramApplication, + request_context, + profile: profile_service_pb2.GetProfileResponse, + ): + self.application = application + self.profile = profile + self.request_context = request_context + + # ToDo: deduplicate functions + def encode_link(self, bot_name, text, query): + try: + encoded_query = encode_query_to_deep_link(query, bot_name) + return f'[{text}]({encoded_query})' + except TooLongQueryError: + return text + + def get_deep_tag_link(self, bot_name, tag): + query = f'tags:"{tag}"' + return self.encode_link(bot_name, tag, query) + + def get_deep_issn_link(self, bot_name, text, issns): + query = ['order_by:date'] + for issn in issns[:2]: + query.append(f'issn:{issn}') + return self.encode_link(bot_name, text=escape_format(text), query=' '.join(query)) + + def encode_rating(self): + if self.profile.uploads_count > 1000: + return '🏆' + elif self.profile.uploads_count > 100: + return '🥇' + elif self.profile.uploads_count > 10: + return '🥈' + elif self.profile.uploads_count > 0: + return '🥉' + else: + return '💩' + + def encode_subscription(self, subscription: subscription_manager_service_pb2.Subscription): + match subscription.subscription_type: + case subscription_manager_service_pb2.Subscription.Type.CUSTOM: + return f'`{subscription.subscription_query}`' + case subscription_manager_service_pb2.Subscription.Type.DIGEST: + return f'🥘 Daily digest' + case subscription_manager_service_pb2.Subscription.Type.DOI: + return f'🔬 `{subscription.subscription_query}`' + case _: + return f'{subscription.subscription_query}' + + async def render(self) -> tuple[str, Optional[list]]: + profile_view = f'Nexus Rating: {self.encode_rating()}' + + if self.profile.most_popular_tags: + links = [ + self.get_deep_tag_link( + bot_name=self.application.config['telegram']['bot_name'], + tag=escape_format(tag) + ) for tag in self.profile.most_popular_tags + ] + profile_view += ('\n\nInterested in: ' + " - ".join(links)) + + if self.request_context.is_personal_mode() or self.profile.is_connectome_enabled: + if self.profile.most_popular_series: + links = [ + '- ' + self.get_deep_issn_link( + bot_name=self.application.config['telegram']['bot_name'], + text=series.name, + issns=series.issns, + ) for series in self.profile.most_popular_series + ] + profile_view += ('\n\nMost read journals:\n' + "\n".join(links)) + if self.profile.downloaded_documents[:5]: + display_documents = [] + for downloaded_document in self.profile.downloaded_documents[:5]: + title = limits(escape_format(downloaded_document.title), limit=100, with_dots=True) + link = self.encode_link( + bot_name=self.application.config['telegram']['bot_name'], + text=title, + query=f"id:{downloaded_document.id}" + ) + display_documents.append(f'- {link}') + profile_view += ('\n\nLast read:\n' + "\n".join(display_documents)) + + if self.request_context.is_personal_mode() and self.profile.subscriptions: + display_subscriptions = [] + for subscription in self.profile.subscriptions[:5]: + display_subscriptions.append('- ' + self.encode_subscription(subscription)) + profile_view += ('\n\nSubscriptions:\n' + "\n".join(display_subscriptions)) + if len(self.profile.subscriptions) > 5: + profile_view += f'\n`and {len(self.profile.subscriptions) - 5} more...`' + + if self.request_context.is_personal_mode(): + if self.profile.is_connectome_enabled: + profile_view += f'\n\nYou can hide your profile from others in /settings' + else: + profile_view += f'\n\nYou can make your profile visible in /settings' + + digest_button = Button.inline( + '✨ Digest', + data='/digest', + ) + + return profile_view, [digest_button, close_button()] if self.request_context.is_personal_mode() else None diff --git a/nexus/bot/widgets/search_widget.py b/nexus/bot/widgets/search_widget.py index 4b654f5..c3fc7ad 100644 --- a/nexus/bot/widgets/search_widget.py +++ b/nexus/bot/widgets/search_widget.py @@ -1,29 +1,38 @@ +import logging +import mimetypes +import sys from typing import Optional from idm.api.proto.chat_manager_service_pb2 import Chat as ChatPb +from library.telegram.common import close_button from nexus.bot.application import TelegramApplication from nexus.meta_api.proto.search_service_pb2 import \ ScoredDocument as ScoredDocumentPb from nexus.translations import t +from nexus.views.telegram.base_holder import BaseHolder from nexus.views.telegram.common import ( TooLongQueryError, - close_button, encode_query_to_deep_link, ) -from nexus.views.telegram.registry import parse_typed_document_to_view from telethon import Button +from telethon.tl.types import ( + DocumentAttributeImageSize, + InputWebDocument, +) -class SearchWidget: +class BaseSearchWidget: """ Presents markup for the SERP. """ + + query_tags = ['search'] + def __init__( self, application: TelegramApplication, chat: ChatPb, session_id: str, - message_id: int, request_id: str, query: str, page: int = 0, @@ -32,28 +41,26 @@ class SearchWidget: self.application = application self.chat = chat self.session_id = session_id - self.message_id = message_id self.request_id = request_id self.query = query self.page = page self.is_group_mode = is_group_mode - @staticmethod + @classmethod async def create( + cls, application: TelegramApplication, chat: ChatPb, session_id: str, - message_id: int, request_id: str, query: str, page: int = 0, is_group_mode: bool = False, - ) -> 'SearchWidget': - search_widget_view = SearchWidget( + ): + search_widget_view = cls( application=application, chat=chat, session_id=session_id, - message_id=message_id, request_id=request_id, query=query, page=page, @@ -72,8 +79,17 @@ class SearchWidget: session_id=self.session_id, user_id=str(self.chat.chat_id), language=self.chat.language, + query_tags=self.query_tags, ) + @property + def query_language(self) -> str: + return self._search_response.query_language + + @property + def count(self) -> int: + return self._search_response.count + @property def has_next(self) -> bool: return self._search_response.has_next @@ -82,30 +98,41 @@ class SearchWidget: def scored_documents(self) -> list[ScoredDocumentPb]: return self._search_response.scored_documents - async def render(self) -> tuple[str, Optional[list]]: - if not len(self.scored_documents): - return t('COULD_NOT_FIND_ANYTHING', language=self.chat.language), [close_button(self.session_id)] + +class SearchWidget(BaseSearchWidget): + query_tags = ['search'] + + async def render(self, message_id) -> tuple[str, Optional[list]]: + if len(self.scored_documents) == 0: + return t('COULD_NOT_FIND_ANYTHING', self.chat.language), [close_button(self.session_id)] serp_elements = [] bot_name = self.application.config['telegram']['bot_name'] for scored_document in self.scored_documents: - view = parse_typed_document_to_view(scored_document.typed_document) - if not self.is_group_mode: - view_command = view.get_view_command( + holder = BaseHolder.create(scored_document.typed_document, scored_document.snippets) + if self.is_group_mode: + view_command = holder.get_deep_id_link(bot_name, text='⬇️') + else: + view_command = holder.get_view_command( session_id=self.session_id, - message_id=self.message_id, + message_id=message_id, position=scored_document.position, ) - else: - view_command = view.get_deep_link(bot_name, text='⬇️') serp_elements.append( - view.get_snippet( - language=self.chat.language, - view_command=view_command, - limit=512 + 128, - ) + holder + .view_builder(self.chat.language) + .add_short_description() + .add_snippet() + .add_new_line() + .add(view_command, escaped=True) + .add_doi_link(with_leading_pipe=True, text='doi.org') + .add_references_counter(bot_name=bot_name, with_leading_pipe=True) + .add_filedata(with_leading_pipe=True) + .build() ) + + serp_elements.append(f"__{t('FOUND_N_ITEMS', self.chat.language).format(count=self.count)}__") serp = '\n\n'.join(serp_elements) if self.is_group_mode: @@ -115,22 +142,23 @@ class SearchWidget: bot_name, ) serp = ( - f"{serp}\n\n**{t('DOWNLOAD_AND_SEARCH_MORE', language=self.chat.language)}: **" + f"{serp}\n\n**{t('DOWNLOAD_AND_SEARCH_MORE', self.chat.language)}: **" f'[@{bot_name}]' f'({encoded_query})' ) except TooLongQueryError: serp = ( - f"{serp}\n\n**{t('DOWNLOAD_AND_SEARCH_MORE', language=self.chat.language)}: **" + f"{serp}\n\n**{t('DOWNLOAD_AND_SEARCH_MORE', self.chat.language)}: **" f'[@{bot_name}]' f'(https://t.me/{bot_name})' ) - if not self.is_group_mode: - promo = self.application.promotioner.choose_promotion(language=self.chat.language).format( - related_channel=self.application.config['telegram']['related_channel'], - ) - serp = f'{serp}\n\n{promo}\n' + promotion_language = self.query_language or self.chat.language + promo = self.application.promotioner.choose_promotion(promotion_language).format( + related_channel=self.application.config['telegram']['related_channel'], + twitter_contact_url=self.application.config['twitter']['contact_url'], + ) + serp = f'{serp}\n\n{promo}\n' buttons = None if not self.is_group_mode: @@ -139,19 +167,58 @@ class SearchWidget: buttons = [ Button.inline( text='<<1' if self.page > 1 else ' ', - data=f'/search_{self.session_id}_{self.message_id}_0' if self.page > 1 else '/noop', + data=f'/search_{self.session_id}_{message_id}_0' if self.page > 1 else '/noop', ), Button.inline( text=f'<{self.page}' if self.page > 0 else ' ', - data=f'/search_{self.session_id}_{self.message_id}_{self.page - 1}' + data=f'/search_{self.session_id}_{message_id}_{self.page - 1}' if self.page > 0 else '/noop', ), Button.inline( text=f'{self.page + 2}>' if self.has_next else ' ', - data=f'/search_{self.session_id}_{self.message_id}_{self.page + 1}' + data=f'/search_{self.session_id}_{message_id}_{self.page + 1}' if self.has_next else '/noop', ) ] buttons.append(close_button(self.session_id)) - return serp, buttons + + +class InlineSearchWidget(BaseSearchWidget): + query_tags = ['inline_search'] + + def render(self, builder) -> list: + items = [] + bot_name = self.application.config['telegram']['bot_name'] + + for scored_document in self.scored_documents: + holder = BaseHolder.create(scored_document.typed_document) + title = holder.view_builder(self.chat.language).add_icon().add_title(bold=False).limits(140).build() + description = ( + holder.view_builder(self.chat.language) + .add_filedata().add_new_line().add_locator(markup=False).limits(160).build() + ) + response_text = holder.view_builder(self.chat.language).add_short_description().build() + buttons = holder.buttons_builder(self.chat.language).add_remote_download_button(bot_name=bot_name).build() + + cover_url = holder.get_thumb_url() + thumb = None + if cover_url: + mimetype = mimetypes.guess_type(cover_url)[0] + if mimetype: + thumb = InputWebDocument( + url=cover_url, + size=-1, + mime_type=mimetype, + attributes=[DocumentAttributeImageSize(24, 24)] + ) + items.append(builder.article( + title, + id=str(holder.id), + text=response_text, + description=description, + thumb=thumb, + buttons=buttons, + )) + + return items diff --git a/nexus/bot/widgets/settings_widget.py b/nexus/bot/widgets/settings_widget.py index 1481788..1068769 100644 --- a/nexus/bot/widgets/settings_widget.py +++ b/nexus/bot/widgets/settings_widget.py @@ -50,6 +50,7 @@ class SettingsWidget: 'sl': self._switch_language, 'ssm': self._switch_system_messaging, 'sd': self._switch_discovery, + 'sc': self._switch_connectome, } async def _switch_language(self, target_language: str): @@ -60,6 +61,14 @@ class SettingsWidget: ) return self.chat + async def _switch_connectome(self, is_connectome_enabled: str): + self.chat = await self.application.idm_client.update_chat( + chat_id=self.chat.chat_id, + is_connectome_enabled=bool(int(is_connectome_enabled)), + request_id=self.request_id, + ) + return self.chat + async def _switch_system_messaging(self, is_system_messaging_enabled: str): self.chat = await self.application.idm_client.update_chat( chat_id=self.chat.chat_id, @@ -82,13 +91,15 @@ class SettingsWidget: return old_chat != self.chat async def render(self): - text = t('SETTINGS_TEMPLATE', language=self.chat.language).format( + text = t('SETTINGS_TEMPLATE', self.chat.language).format( bot_version=self.application.config['application']['bot_version'], nexus_version=self.application.config['application']['nexus_version'], language=top_languages.get(self.chat.language, self.chat.language), ) if not self.is_group_mode and self.application.config['application']['views']['settings']['has_discovery_button']: - text = f"{text}\n\n{t('NEXUS_DISCOVERY_DESCRIPTION', language=self.chat.language)}" + text = f"{text}\n\n{t('NEXUS_DISCOVERY_DESCRIPTION', self.chat.language)}" + if not self.is_group_mode and self.application.config['application']['views']['settings']['has_connectome_button']: + text = f"{text}\n\n{t('NEXUS_CONNECTOME_DESCRIPTION', self.chat.language)}" buttons = [] if self.has_language_buttons: buttons.append([]) @@ -105,24 +116,23 @@ class SettingsWidget: if self.is_group_mode: return text, buttons - if self.application.config['application']['views']['settings']['has_system_messaging_button']: - buttons.append([ - Button.inline( - text=( - f'{t("SYSTEM_MESSAGING_OPTION", language=self.chat.language)}: ' - f'{boolean_emoji[self.chat.is_system_messaging_enabled]}' - ), - data=f'/settings_ssm_{1 - int(self.chat.is_system_messaging_enabled)}' - ) - ]) + last_line = [] if self.application.config['application']['views']['settings']['has_discovery_button']: - buttons.append([ - Button.inline( - text=( - f'{t("DISCOVERY_OPTION", language=self.chat.language)}: ' - f'{boolean_emoji[self.chat.is_discovery_enabled]}' - ), - data=f'/settings_sd_{1 - int(self.chat.is_discovery_enabled)}' - ) - ]) + last_line.append(Button.inline( + text=( + f'{t("DISCOVERY_OPTION", self.chat.language)}: ' + f'{boolean_emoji[self.chat.is_discovery_enabled]}' + ), + data=f'/settings_sd_{1 - int(self.chat.is_discovery_enabled)}' + )) + if self.application.config['application']['views']['settings']['has_connectome_button']: + last_line.append(Button.inline( + text=( + f'{t("CONNECTOME_OPTION", self.chat.language)}: ' + f'{boolean_emoji[self.chat.is_connectome_enabled]}' + ), + data=f'/settings_sc_{1 - int(self.chat.is_connectome_enabled)}' + )) + if last_line: + buttons.append(last_line) return text, buttons diff --git a/nexus/cognitron/configs/scimag.yaml b/nexus/cognitron/configs/scimag.yaml index 7895b9a..b345b4c 100644 --- a/nexus/cognitron/configs/scimag.yaml +++ b/nexus/cognitron/configs/scimag.yaml @@ -1,8 +1,6 @@ --- # yamllint disable rule:key-ordering -default_fields: ["abstract", "authors", "language", "title", "tags"] -key_field: "id" -multi_fields: ["authors", "ipfs_multihashes", "issns", "references", "tags"] +default_fields: ["abstract", "authors", "container_title", "content", "tags", "title"] schema: - name: id type: i64 @@ -49,10 +47,28 @@ schema: record: position tokenizer: summa stored: true + - name: created_at + type: i64 + options: + fast: single + fieldnorms: false + indexed: true + stored: true + - name: ipfs_multihashes + type: text + options: + indexing: + fieldnorms: false + record: basic + tokenizer: raw + stored: true - name: issns type: text options: - indexing: null + indexing: + fieldnorms: true + record: basic + tokenizer: raw stored: true - name: issue type: text @@ -62,6 +78,7 @@ schema: - name: issued_at type: i64 options: + fast: single fieldnorms: false indexed: true stored: true @@ -79,11 +96,12 @@ schema: fieldnorms: false indexed: false stored: true - - name: ref_by_count - type: i64 + - name: referenced_by_count + type: u64 options: + fast: single fieldnorms: false - indexed: false + indexed: true stored: true - name: references type: text @@ -93,6 +111,14 @@ schema: record: basic tokenizer: raw stored: false + - name: references + type: text + options: + indexing: + fieldnorms: true + record: basic + tokenizer: raw + stored: false - name: scimag_bulk_id type: i64 options: @@ -103,6 +129,7 @@ schema: type: text options: indexing: + fast: multi fieldnorms: true record: position tokenizer: summa @@ -115,9 +142,16 @@ schema: record: position tokenizer: summa stored: true + - name: type + type: text + options: + fieldnorms: false + indexed: false + stored: true - name: updated_at type: i64 options: + fast: single fieldnorms: false indexed: true stored: true @@ -132,3 +166,54 @@ schema: fieldnorms: true indexed: true stored: true + - name: content + type: text + options: + indexing: + fieldnorms: true + record: position + tokenizer: summa + stored: false + - name: page_rank + type: f64 + options: + fast: single + fieldnorms: false + indexed: true + stored: true + - name: isbns + type: text + options: + indexing: + fieldnorms: true + record: basic + tokenizer: raw + stored: true +multi_fields: ["authors", "ipfs_multihashes", "isbns", "issns", "references", "tags"] +primary_key: "id" +stop_words: ['a', 'an', 'and', 'are', 'as', 'at', 'be', 'by', 'for', 'from', 'if', 'in', 'is', 'it', 'of', 'on', 'or', + 's', 'that', 'the', 'these', 'this', 'to', 'was', 'were', 'which', 'with', 'aber', 'alle', 'allem', + 'allen', 'aller', 'alles', 'als', 'also', 'am', 'an', + 'ander', 'andere', 'anderem', 'anderen', 'anderer', 'anderes', 'anderm', 'andern', 'anderr', 'anders', + 'auch', 'auf', 'aus', 'bei', 'bin', 'bis', 'bist', 'da', 'dann', 'der', 'den', 'des', 'dem', 'das', 'dass', + 'daß', 'derselbe', 'derselben', 'denselben', 'desselben', 'demselben', 'dieselbe', 'dieselben', 'dasselbe', + 'dazu', 'dein', 'deine', 'deinem', 'deinen', 'deiner', 'deines', 'denn', 'derer', 'dessen', 'dich', 'dir', + 'du', 'dies', 'diese', 'diesem', 'diesen', 'dieser', 'dieses', 'doch', 'dort', 'durch', 'ein', 'eine', + 'einem', 'einen', 'einer', 'eines', 'einig', 'einige', 'einigem', 'einigen', 'einiger', 'einiges', + 'einmal', 'er', 'ihn', 'ihm', 'es', 'etwas', 'euer', 'eure', 'eurem', 'euren', 'eurer', 'eures', 'für', + 'gegen', 'gewesen', 'hab', 'habe', 'haben', 'hat', 'hatte', 'hatten', 'hier', 'hin', 'hinter', 'ich', + 'mich', 'mir', 'ihr', 'ihre', 'ihrem', 'ihren', 'ihrer', 'ihres', 'euch', 'im', 'in', 'indem', 'ins', + 'ist', 'jede', 'jedem', 'jeden', 'jeder', 'jedes', 'jene', 'jenem', 'jenen', 'jener', 'jenes', 'jetzt', + 'kann', 'kein', 'keine', 'keinem', 'keinen', 'keiner', 'keines', 'können', 'könnte', 'machen', 'man', + 'manche', 'manchem', 'manchen', 'mancher', 'manches', 'mein', 'meine', 'meinem', 'meinen', 'meiner', + 'meines', 'mit', 'muss', 'musste', 'nach', 'nicht', 'nichts', 'noch', 'nun', 'nur', 'ob', 'oder', 'ohne', + 'sehr', 'sein', 'seine', 'seinem', 'seinen', 'seiner', 'seines', 'selbst', 'sich', 'sie', 'ihnen', 'sind', + 'so', 'solche', 'solchem', 'solchen', 'solcher', 'solches', 'soll', 'sollte', 'sondern', 'sonst', 'um', + 'und', 'uns', 'unsere', 'unserem', 'unseren', 'unser', 'unseres', 'unter', 'viel', 'vom', 'von', 'vor', + 'während', 'waren', 'warst', 'weg', 'weil', 'weiter', 'welche', 'welchem', 'welchen', 'welcher', 'welches', + 'wenn', 'werde', 'werden', 'wie', 'wieder', 'wir', 'wird', 'wirst', 'wo', 'wollen', 'wollte', 'würde', + 'würden', 'zu', 'zum', 'zur', 'zwar', 'zwischen', 'и', 'в', 'во', 'не', 'что', 'он', 'на', 'я', 'с', 'со', + 'как', 'а', 'то', 'все', 'она', 'так', 'его', 'но', 'да', 'ты', 'к', 'у', 'же', 'вы', 'за', 'бы', 'по', + 'ее', 'мне', 'было', 'вот', 'от', 'о', 'из', 'ему', 'ей', 'им', 'de', 'la', 'que', 'el', 'en', 'y', 'a', + 'los', 'del', 'se', 'las', 'por', 'un', 'para', 'con', 'una', 'su', 'al', 'lo', 'como', 'más', 'pero', + 'sus', 'le', 'ya', 'o', 'este', 'sí'] diff --git a/nexus/cognitron/configs/scitech.yaml b/nexus/cognitron/configs/scitech.yaml index 025ce35..ddd5647 100644 --- a/nexus/cognitron/configs/scitech.yaml +++ b/nexus/cognitron/configs/scitech.yaml @@ -1,8 +1,6 @@ --- # yamllint disable rule:key-ordering default_fields: ["authors", "description", "tags", "title"] -key_field: "id" -multi_fields: ["authors", "ipfs_multihashes", "isbns", "tags"] schema: - name: id type: i64 @@ -68,8 +66,10 @@ schema: - name: ipfs_multihashes type: text options: - fieldnorms: false - indexed: false + indexing: + fieldnorms: false + record: basic + tokenizer: raw stored: true - name: isbns type: text @@ -115,12 +115,16 @@ schema: - name: pages type: i64 options: - indexed: false + fieldnorms: false + indexed: true stored: true - name: extension type: text options: - indexing: null + indexing: + fieldnorms: false + record: basic + tokenizer: raw stored: true - name: md5 type: text @@ -169,3 +173,36 @@ schema: fieldnorms: true indexed: true stored: true + - name: periodical + type: text + options: + indexing: null + stored: true +multi_fields: ["authors", "ipfs_multihashes", "isbns", "tags"] +primary_key: "id" +stop_words: ['a', 'an', 'and', 'are', 'as', 'at', 'be', 'by', 'for', 'from', 'if', 'in', 'is', 'it', 'of', 'on', 'or', + 's', 'that', 'the', 'their', 'these', 'this', 'to', 'was', 'were', 'with', 'aber', 'alle', 'allem', + 'allen', 'aller', 'alles', 'als', 'also', 'am', 'an', + 'ander', 'andere', 'anderem', 'anderen', 'anderer', 'anderes', 'anderm', 'andern', 'anderr', 'anders', + 'auch', 'auf', 'aus', 'bei', 'bin', 'bis', 'bist', 'da', 'dann', 'der', 'den', 'des', 'dem', 'das', 'dass', + 'daß', 'derselbe', 'derselben', 'denselben', 'desselben', 'demselben', 'dieselbe', 'dieselben', 'dasselbe', + 'dazu', 'dein', 'deine', 'deinem', 'deinen', 'deiner', 'deines', 'denn', 'derer', 'dessen', 'dich', 'dir', + 'du', 'dies', 'diese', 'diesem', 'diesen', 'dieser', 'dieses', 'doch', 'dort', 'durch', 'ein', 'eine', + 'einem', 'einen', 'einer', 'eines', 'einig', 'einige', 'einigem', 'einigen', 'einiger', 'einiges', + 'einmal', 'er', 'ihn', 'ihm', 'es', 'etwas', 'euer', 'eure', 'eurem', 'euren', 'eurer', 'eures', 'für', + 'gegen', 'gewesen', 'hab', 'habe', 'haben', 'hat', 'hatte', 'hatten', 'hier', 'hin', 'hinter', 'ich', + 'mich', 'mir', 'ihr', 'ihre', 'ihrem', 'ihren', 'ihrer', 'ihres', 'euch', 'im', 'in', 'indem', 'ins', + 'ist', 'jede', 'jedem', 'jeden', 'jeder', 'jedes', 'jene', 'jenem', 'jenen', 'jener', 'jenes', 'jetzt', + 'kann', 'kein', 'keine', 'keinem', 'keinen', 'keiner', 'keines', 'können', 'könnte', 'machen', 'man', + 'manche', 'manchem', 'manchen', 'mancher', 'manches', 'mein', 'meine', 'meinem', 'meinen', 'meiner', + 'meines', 'mit', 'muss', 'musste', 'nach', 'nicht', 'nichts', 'noch', 'nun', 'nur', 'ob', 'oder', 'ohne', + 'sehr', 'sein', 'seine', 'seinem', 'seinen', 'seiner', 'seines', 'selbst', 'sich', 'sie', 'ihnen', 'sind', + 'so', 'solche', 'solchem', 'solchen', 'solcher', 'solches', 'soll', 'sollte', 'sondern', 'sonst', 'um', + 'und', 'uns', 'unsere', 'unserem', 'unseren', 'unser', 'unseres', 'unter', 'viel', 'vom', 'von', 'vor', + 'während', 'waren', 'warst', 'weg', 'weil', 'weiter', 'welche', 'welchem', 'welchen', 'welcher', 'welches', + 'wenn', 'werde', 'werden', 'wie', 'wieder', 'wir', 'wird', 'wirst', 'wo', 'wollen', 'wollte', 'würde', + 'würden', 'zu', 'zum', 'zur', 'zwar', 'zwischen', 'и', 'в', 'во', 'не', 'что', 'он', 'на', 'я', 'с', 'со', + 'как', 'а', 'то', 'все', 'она', 'так', 'его', 'но', 'да', 'ты', 'к', 'у', 'же', 'вы', 'за', 'бы', 'по', + 'ее', 'мне', 'было', 'вот', 'от', 'о', 'из', 'ему', 'ей', 'им', 'de', 'la', 'que', 'el', 'en', 'y', 'a', + 'los', 'del', 'se', 'las', 'por', 'un', 'para', 'con', 'una', 'su', 'al', 'lo', 'como', 'más', 'pero', + 'sus', 'le', 'ya', 'o', 'este', 'sí'] diff --git a/nexus/cognitron/web/BUILD.bazel b/nexus/cognitron/web/BUILD.bazel deleted file mode 100644 index 74f8a1c..0000000 --- a/nexus/cognitron/web/BUILD.bazel +++ /dev/null @@ -1,72 +0,0 @@ -load("@io_bazel_rules_docker//container:container.bzl", "container_push") -load("@io_bazel_rules_docker//nodejs:image.bzl", "nodejs_image") -load("@npm//nuxt3:index.bzl", "nuxi") - -files = [ - "app.vue", - "nuxt.config.ts", -] + glob([ - "components/**/*.vue", - "layouts/**/*.vue", - "plugins/**/*.js", -]) - -deps = [ - "@npm//axios", - "@npm//bootstrap-vue-3", - "@npm//pug", - "@npm//pug-plain-loader", - "@npm//sass", - "@npm//sass-loader", - "@npm//vue", - "@npm//@types/node", - "//nexus/meta_api/js/client", - "//nexus/views/js", -] - -nuxi( - name = "web-dev", - args = [ - "dev", - "nexus/cognitron/web", - ], - data = files + deps, -) - -nuxi( - name = ".output", - args = [ - "build", - "nexus/cognitron/web", - "--buildDir=$(@D)", - ], - data = files + deps, - output_dir = True, -) - -nodejs_image( - name = "image", - base = "//images/production:base-nodejs-image", - data = [":.output"], - entry_point = ".output/server/index.mjs", -) - - -container_push( - name = "push-public-latest", - format = "Docker", - image = ":image", - registry = "registry.hub.docker.com", - repository = "thesuperpirate/nexus-cognitron-web", - tag = "latest", -) - -container_push( - name = "push-public-testing", - format = "Docker", - image = ":image", - registry = "registry.hub.docker.com", - repository = "thesuperpirate/nexus-cognitron-web", - tag = "testing", -) - diff --git a/nexus/cognitron/web/README.md b/nexus/cognitron/web/README.md deleted file mode 100644 index 32d27ba..0000000 --- a/nexus/cognitron/web/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# Nuxt 3 Minimal Starter - -We recommend to look at the [documentation](https://v3.nuxtjs.org). - -## Setup - -Make sure to install the dependencies - -```bash -yarn install -``` - -## Development - -Start the development server on http://localhost:3000 - -```bash -yarn dev -``` - -## Production - -Build the application for production: - -```bash -yarn build -``` - -Checkout the [deployment documentation](https://v3.nuxtjs.org/docs/deployment). \ No newline at end of file diff --git a/nexus/cognitron/web/app.vue b/nexus/cognitron/web/app.vue deleted file mode 100644 index ad76faf..0000000 --- a/nexus/cognitron/web/app.vue +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/nexus/cognitron/web/components/document.vue b/nexus/cognitron/web/components/document.vue deleted file mode 100644 index 87ffbee..0000000 --- a/nexus/cognitron/web/components/document.vue +++ /dev/null @@ -1,46 +0,0 @@ - - - - - diff --git a/nexus/cognitron/web/components/search-list.vue b/nexus/cognitron/web/components/search-list.vue deleted file mode 100644 index 80c6bcf..0000000 --- a/nexus/cognitron/web/components/search-list.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - - - diff --git a/nexus/cognitron/web/components/v-footer.vue b/nexus/cognitron/web/components/v-footer.vue deleted file mode 100644 index 2ac1f69..0000000 --- a/nexus/cognitron/web/components/v-footer.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - diff --git a/nexus/cognitron/web/components/v-header.vue b/nexus/cognitron/web/components/v-header.vue deleted file mode 100644 index 52578da..0000000 --- a/nexus/cognitron/web/components/v-header.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - - - diff --git a/nexus/cognitron/web/components/v-scimag-search-item.vue b/nexus/cognitron/web/components/v-scimag-search-item.vue deleted file mode 100644 index c3c5653..0000000 --- a/nexus/cognitron/web/components/v-scimag-search-item.vue +++ /dev/null @@ -1,70 +0,0 @@ - - - - - diff --git a/nexus/cognitron/web/components/v-scimag.vue b/nexus/cognitron/web/components/v-scimag.vue deleted file mode 100644 index f3ac90c..0000000 --- a/nexus/cognitron/web/components/v-scimag.vue +++ /dev/null @@ -1,86 +0,0 @@ - - - diff --git a/nexus/cognitron/web/components/v-scitech-search-item.vue b/nexus/cognitron/web/components/v-scitech-search-item.vue deleted file mode 100644 index e8a12fd..0000000 --- a/nexus/cognitron/web/components/v-scitech-search-item.vue +++ /dev/null @@ -1,71 +0,0 @@ - - - - - diff --git a/nexus/cognitron/web/components/v-scitech.vue b/nexus/cognitron/web/components/v-scitech.vue deleted file mode 100644 index 7a071a4..0000000 --- a/nexus/cognitron/web/components/v-scitech.vue +++ /dev/null @@ -1,66 +0,0 @@ - - - diff --git a/nexus/cognitron/web/components/v-tr-multi-link.vue b/nexus/cognitron/web/components/v-tr-multi-link.vue deleted file mode 100644 index d18524b..0000000 --- a/nexus/cognitron/web/components/v-tr-multi-link.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - - - diff --git a/nexus/cognitron/web/components/v-tr.vue b/nexus/cognitron/web/components/v-tr.vue deleted file mode 100644 index 35fe029..0000000 --- a/nexus/cognitron/web/components/v-tr.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - diff --git a/nexus/cognitron/web/nuxt.config.ts b/nexus/cognitron/web/nuxt.config.ts deleted file mode 100644 index efaf4f1..0000000 --- a/nexus/cognitron/web/nuxt.config.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { defineNuxtConfig } from 'nuxt3' - -let buildDir = process.argv.find((s) => s.startsWith('--buildDir=')) -if (buildDir) { - buildDir = buildDir.substr('--buildDir='.length) -} - -export default defineNuxtConfig({ - head: { - title: 'Nexus Cognitron', - meta: [ - { charset: 'utf-8' }, - { name: 'viewport', content: 'width=device-width, initial-scale=1' }, - { hid: 'description', name: 'description', content: 'Biggest Library on both Earth and Mars' } - ], - link: [ - { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }, - { rel: 'apple-touch-icon', sizes: '180x180', href: '/apple-touch-icon.png' }, - { rel: 'icon', type: 'image/png', sizes: '32x32', href: '/favicon-32x32.png' }, - { rel: 'icon', type: 'image/png', sizes: '16x16', href: '/favicon-16x16.png' }, - { rel: 'manifest', href: '/site.webmanifest' }, - { rel: 'mask-icon', href: '/safari-pinned-tab.svg', color: '#5bbad5' }, - { name: 'msapplication-TileColor', content: '#603cba' }, - { name: 'theme-color', content: '#ffffff' } - ] - }, - nitro: { - preset: 'server', - output: { - dir: buildDir, - } - } -}) diff --git a/nexus/cognitron/web/plugins/helpers.js b/nexus/cognitron/web/plugins/helpers.js deleted file mode 100644 index 8f29c4b..0000000 --- a/nexus/cognitron/web/plugins/helpers.js +++ /dev/null @@ -1,10 +0,0 @@ -import dateFormat from 'dateformat' - -export function getIssuedDate (unixtime) { - if (!unixtime) return null - try { - return dateFormat(new Date(unixtime * 1000), 'yyyy') - } catch (e) { - return null - } -} diff --git a/nexus/cognitron/web/plugins/meta-api.js b/nexus/cognitron/web/plugins/meta-api.js deleted file mode 100644 index b1ba9c9..0000000 --- a/nexus/cognitron/web/plugins/meta-api.js +++ /dev/null @@ -1,41 +0,0 @@ -import { ScimagView, ScitechView } from 'nexus-views-js' -import MetaApi from 'nexus-meta-api-js-client' - -function getSchema (typedDocument) { - return Object.keys(typedDocument).filter(k => typedDocument[k] !== undefined)[0] -} - -function indexNameToView (indexName, pb) { - if (indexName === 'scimag') { - return new ScimagView(pb) - } else if (indexName === 'scitech') { - return new ScitechView(pb) - } -} - -class MetaApiWrapper { - constructor (metaApiConfig) { - this.metaApi = new MetaApi(metaApiConfig.url || ('http://' + window.location.host), metaApiConfig.hostname) - } - - async get (indexName, id) { - const response = await this.metaApi.get(indexName, id) - return indexNameToView(indexName, response[indexName]) - } - - async search (names, query, page, pageSize) { - const response = await this.metaApi.search(names, query, page, pageSize) - const documents = response.scoredDocumentsList.map((scoredDocument) => { - const indexName = getSchema(scoredDocument.typedDocument) - return indexNameToView(indexName, scoredDocument.typedDocument[indexName]) - }) - return { - hasNext: response.hasNext, - documents: documents - } - } -} -export default ({ $config }, inject) => { - const metaApiWrapper = new MetaApiWrapper($config.meta_api) - inject('meta_api', metaApiWrapper) -} diff --git a/nexus/cognitron/web/plugins/utils.js b/nexus/cognitron/web/plugins/utils.js deleted file mode 100644 index 5bf45d6..0000000 --- a/nexus/cognitron/web/plugins/utils.js +++ /dev/null @@ -1,6 +0,0 @@ -const ALNUMWHITESPACE_REGEX = /\P{L}/gu -const MULTIWHITESPACE_REGEX = /\s+/g - -export function castStringToSingleString (s) { - return s.replace(ALNUMWHITESPACE_REGEX, ' ').replace(MULTIWHITESPACE_REGEX, '-') -} diff --git a/nexus/cognitron/web/tsconfig.json b/nexus/cognitron/web/tsconfig.json deleted file mode 100644 index a7bfa18..0000000 --- a/nexus/cognitron/web/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - // https://v3.nuxtjs.org/concepts/typescript - "extends": "./.nuxt/tsconfig.json" -} diff --git a/nexus/hub/BUILD.bazel b/nexus/hub/BUILD.bazel index 648e4a6..9510659 100644 --- a/nexus/hub/BUILD.bazel +++ b/nexus/hub/BUILD.bazel @@ -18,6 +18,7 @@ py3_image( data = [ "configs/base.yaml", "configs/logging.yaml", + "configs/pylon.yaml", ], main = "main.py", srcs_version = "PY3ONLY", @@ -29,9 +30,13 @@ py3_image( requirement("cchardet"), requirement("orjson"), requirement("prometheus-client"), + requirement("pycryptodome"), + requirement("pypika"), requirement("python-socks"), + requirement("pytz"), requirement("tenacity"), requirement("uvloop"), + "//idm/api/aioclient", "//idm/api/proto:proto_py", requirement("aiogrobid"), "//library/aiogrpctools", @@ -45,6 +50,7 @@ py3_image( "//nexus/meta_api/aioclient", "//nexus/models/proto:proto_py", "//nexus/pylon", + "//nexus/translations", "//nexus/views/telegram", ], ) diff --git a/nexus/hub/aioclient/aioclient.py b/nexus/hub/aioclient/aioclient.py index c0b22b3..17b0e8f 100644 --- a/nexus/hub/aioclient/aioclient.py +++ b/nexus/hub/aioclient/aioclient.py @@ -1,27 +1,39 @@ -from typing import Optional +from typing import ( + Optional, + Union, +) from aiogrpcclient import BaseGrpcClient from idm.api.proto.chat_manager_service_pb2 import Chat as ChatPb -from nexus.hub.proto.delivery_service_pb2 import \ - StartDeliveryRequest as StartDeliveryRequestPb -from nexus.hub.proto.delivery_service_pb2 import \ - StartDeliveryResponse as StartDeliveryResponsePb -from nexus.hub.proto.delivery_service_pb2_grpc import DeliveryStub -from nexus.hub.proto.submitter_service_pb2 import \ - SubmitRequest as SubmitRequestPb -from nexus.hub.proto.submitter_service_pb2 import \ - SubmitResponse as SubmitResponsePb -from nexus.hub.proto.submitter_service_pb2_grpc import SubmitterStub +from nexus.hub.proto import ( + delivery_service_pb2, + delivery_service_pb2_grpc, + submitter_service_pb2, + submitter_service_pb2_grpc, +) from nexus.models.proto.typed_document_pb2 import \ TypedDocument as TypedDocumentPb class HubGrpcClient(BaseGrpcClient): stub_clses = { - 'delivery': DeliveryStub, - 'submitter': SubmitterStub, + 'delivery': delivery_service_pb2_grpc.DeliveryStub, + 'submitter': submitter_service_pb2_grpc.SubmitterStub, } + async def get_availability_data( + self, + document_id: int, + request_id: Optional[str] = None, + session_id: Optional[str] = None, + ) -> delivery_service_pb2.GetAvailabilityDataResponse: + return await self.stubs['delivery'].get_availability_data( + delivery_service_pb2.GetAvailabilityDataRequest( + document_id=document_id, + ), + metadata=(('request-id', request_id), ('session-id', session_id)) + ) + async def start_delivery( self, typed_document_pb: TypedDocumentPb, @@ -29,9 +41,9 @@ class HubGrpcClient(BaseGrpcClient): bot_name: str, request_id: Optional[str] = None, session_id: Optional[str] = None, - ) -> StartDeliveryResponsePb: + ) -> delivery_service_pb2.StartDeliveryResponse: return await self.stubs['delivery'].start_delivery( - StartDeliveryRequestPb( + delivery_service_pb2.StartDeliveryRequest( typed_document=typed_document_pb, chat=chat, bot_name=bot_name, @@ -41,19 +53,26 @@ class HubGrpcClient(BaseGrpcClient): async def submit( self, - telegram_document: bytes, - telegram_file_id: str, + file: Union[submitter_service_pb2.PlainFile, submitter_service_pb2.TelegramFile], chat: ChatPb, bot_name: str, + reply_to: Optional[int] = None, + doi_hint: Optional[str] = None, + doi_hint_priority: bool = False, request_id: Optional[str] = None, session_id: Optional[str] = None, - ) -> SubmitResponsePb: - return await self.stubs['submitter'].submit( - SubmitRequestPb( - telegram_document=telegram_document, - telegram_file_id=telegram_file_id, - chat=chat, - bot_name=bot_name, - ), - metadata=(('request-id', request_id), ('session-id', session_id)) + uploader_id: Optional[int] = None + ) -> submitter_service_pb2.SubmitResponse: + request = submitter_service_pb2.SubmitRequest( + chat=chat, + bot_name=bot_name, + reply_to=reply_to, + doi_hint=doi_hint, + doi_hint_priority=doi_hint_priority, + uploader_id=uploader_id, ) + if isinstance(file, submitter_service_pb2.PlainFile): + request.plain.CopyFrom(file) + if isinstance(file, submitter_service_pb2.TelegramFile): + request.telegram.CopyFrom(file) + return await self.stubs['submitter'].submit(request, metadata=(('request-id', request_id), ('session-id', session_id))) diff --git a/nexus/hub/configs/__init__.py b/nexus/hub/configs/__init__.py index 9526d2f..02c7ff7 100644 --- a/nexus/hub/configs/__init__.py +++ b/nexus/hub/configs/__init__.py @@ -6,6 +6,7 @@ def get_config(): return Configurator([ 'nexus/hub/configs/base.yaml', 'nexus/hub/configs/%s.yaml?' % env.type, + 'nexus/hub/configs/pylon.yaml', 'nexus/hub/configs/logging.yaml', ], env_prefix='NEXUS_HUB') diff --git a/nexus/hub/configs/base.yaml b/nexus/hub/configs/base.yaml index a99cb8f..5ff62c3 100644 --- a/nexus/hub/configs/base.yaml +++ b/nexus/hub/configs/base.yaml @@ -8,22 +8,24 @@ application: maintenance_picture_url: # Used in logging service_name: nexus-hub + # Parse downloaded document with Grobid + should_parse_with_grobid: true # Store file hashes into operation log should_store_hashes: true database: database: nexus - enabled: false host: password: username: grobid: - enabled: false url: grpc: # Listen address address: 0.0.0.0 # Listen port port: 82 +idm: + endpoint: ipfs: address: localhost port: 4001 @@ -31,14 +33,11 @@ log_path: '/var/log/nexus-hub' meta_api: url: pylon: - # Proxy used in `pylon` retriever to download files - proxy: socks5://127.0.0.1:9050 - # Proxy used in `pylon` retriever to get metadata - resolve_proxy: socks5://127.0.0.1:9050 + proxies: [] telegram: bots: _policy: merge - libgen_scihub_1_bot: + libgen_scihub_2_bot: # Telegram App Hash from https://my.telegram.org/ app_hash: # Telegram App ID from https://my.telegram.org/ @@ -53,3 +52,4 @@ telegram: progress_throttle_seconds: 5 # Send files using stored telegram_file_id should_use_telegram_file_id: true + related_channel: 'nexus_search' diff --git a/nexus/hub/configs/logging.yaml b/nexus/hub/configs/logging.yaml index 5836cd6..9de9600 100644 --- a/nexus/hub/configs/logging.yaml +++ b/nexus/hub/configs/logging.yaml @@ -10,11 +10,15 @@ logging: traceback: class: library.logging.formatters.TracebackFormatter handlers: - debug: + console: class: logging.StreamHandler + level: WARNING + stream: 'ext://sys.stderr' + debug: + class: library.logging.handlers.BaseFileHandler + filename: '{{ log_path }}/debug.log' formatter: default level: DEBUG - stream: 'ext://sys.stderr' error: class: library.logging.handlers.BaseFileHandler filename: '{{ log_path }}/error.log' @@ -51,8 +55,9 @@ logging: propagate: false error: handlers: - - traceback + - console - error + - traceback - warning propagate: false operation: @@ -65,10 +70,12 @@ logging: propagate: false telethon: handlers: + - warning - error propagate: false root: handlers: + - console - debug - error - warning diff --git a/nexus/hub/configs/pylon.yaml b/nexus/hub/configs/pylon.yaml new file mode 100644 index 0000000..9ec777b --- /dev/null +++ b/nexus/hub/configs/pylon.yaml @@ -0,0 +1,618 @@ +--- +pylon: + default_driver_proxy_list: + - [cambridge] + - [edinburg] + - [southampton] + downloads_directory: /downloads + proxies: + - address: clash.default.svc.cluster.example.com:7890 + name: cambridge + tags: ['cambridge'] + - address: clash.default.svc.cluster.example.com:7990 + name: edinburg + tags: ['edinburg'] + - address: clash.default.svc.cluster.example.com:8090 + name: southampton + tags: ['southampton'] + sources: + # LibGen.rocks + - driver: + args: + proxy_list: ~ + validator: + class: nexus.pylon.validators.Md5Validator + class: + nexus.pylon.drivers.DirectDriver + matcher: + md5: ^.*$ + resolver: + args: + extractors: + - producer: + format_string: 'http://libgen.rocks/{matched_group}' + group: 0 + re: 'get\.php\?md5=.*&key=[A-Za-z\d]+' + timeout: 25.0 + type: regex + url: https://libgen.rocks/ads.php?md5={md5} + class: nexus.pylon.resolvers.RequestResolver + # LibGen.rocks + - driver: + args: + proxy_list: ~ + class: + nexus.pylon.drivers.DirectDriver + matcher: + doi: ^.*$ + resolver: + args: + extractors: + - producer: + format_string: 'http://libgen.rocks/{matched_group}' + group: 0 + re: 'get\.php\?md5=[a-fA-F\d]+&key=[A-Za-z\d]+(&doi=[^\"]*)+' + timeout: 25.0 + type: regex + url: 'https://libgen.rocks/ads.php?doi={doi}' + class: nexus.pylon.resolvers.RequestResolver + # Library.lol + - driver: + args: + proxy_list: ~ + validator: + class: nexus.pylon.validators.Md5Validator + class: + nexus.pylon.drivers.DirectDriver + matcher: + md5: ^.*$ + resolver: + args: + extractors: + - producer: + format_string: '{matched_group}' + group: 1 + re: 'GET' + timeout: 45.0 + type: regex + - producer: + format_string: '{matched_group}' + group: 0 + re: 'https://ipfs.io/ipfs/[A-Za-z\d]+' + type: regex + - producer: + format_string: '{matched_group}' + group: 0 + re: 'https://cloudflare-ipfs.com/ipfs/[A-Za-z\d]+' + type: regex + url: http://library.lol/main/{md5} + class: nexus.pylon.resolvers.RequestResolver + # library.lol + - driver: + args: + proxy_list: ~ + class: + nexus.pylon.drivers.DirectDriver + matcher: + doi: ^.*$ + resolver: + args: + extractors: + - producer: + format_string: '{matched_group}' + group: 1 + re: 'GET' + timeout: 45.0 + type: regex + url: 'http://library.lol/scimag/{doi}' + class: nexus.pylon.resolvers.RequestResolver + # jamanetwork.com + - driver: + args: + actions: + - selector: '#pdf-link .toolbar-link-text-extra, .contents-tab-contents > #pdf-link .toolbar-link-text-extra' + timeout: 20 + type: wait_css_selector + - type: click + class: + nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.1001/.*$ + # wires.onlinelibrary.wiley.com + - matcher: + doi: ^10.1002/.*$ + resolver: + args: + format_string: 'https://onlinelibrary.wiley.com/doi/pdf/{doi}' + class: nexus.pylon.resolvers.TemplateResolver + # link.springer.com + - matcher: + doi: ^10.(1007|14283)/.*$ + resolver: + args: + format_string: 'https://link.springer.com/content/pdf/{doi}.pdf' + class: nexus.pylon.resolvers.TemplateResolver + # www.sciencedirect.com + - matcher: + doi: ^10.(1016|1053|4103)/.*$ + resolver: + args: + format_string: 'https://www.sciencedirect.com/science/article/pii/{selected}/pdfft?isDTMRedir=true&download=true' + selector: '(.resource.primary.URL | split("/"))[-1]' + timeout: 40.0 + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # www.clinicalkey.com + - driver: + args: + actions: + - selector: '.x-pdf' + timeout: 30.0 + type: wait_css_selector + - type: click + class: + nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.1016/.*$ + # www.cambridge.org + - matcher: + doi: ^10.1017/.*$ + resolver: + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # pubs.acs.org + - matcher: + doi: ^10.1021/.*$ + resolver: + args: + format_string: 'https://pubs.acs.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # www.nature.com + - driver: + args: + actions: + - selector: '#entitlement-box-right-column span' + timeout: 30 + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.1038/.*$ + # www.nejm.org + - matcher: + doi: ^10.1056/.*$ + resolver: + args: + format_string: 'https://www.nejm.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # ascelibrary.org + - matcher: + doi: ^10.1061/.*$ + resolver: + args: + format_string: 'https://ascelibrary.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # www.pnas.org + - matcher: + doi: ^10.1073/.*$ + resolver: + args: + format_string: 'https://www.pnas.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # www.tandfonline.com + - matcher: + doi: ^10.1080/.*$ + resolver: + args: + format_string: 'https://www.tandfonline.com/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # iopscience.iop.org + - matcher: + doi: ^10.1088/.*$ + resolver: + args: + format_string: 'https://iopscience.iop.org/article/{doi}/pdf' + class: nexus.pylon.resolvers.TemplateResolver + # academic.oup.com + - driver: + args: + actions: + - selector: '.pdf-link-text' + timeout: 30 + type: wait_css_selector + - type: click + proxy_list: + - [edinburg] + - [cambridge] + - [southampton] + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.1093/.*$ + # journals.lww.com + - driver: + args: + actions: + - selector: '.ejp-article-tools__list-icon-holder > .icon-pdf' + timeout: 30.0 + type: wait_css_selector + - type: click + - selector: '.ejp-article-tools__dropdown-list-button > .icon-pdf' + timeout: 5.0 + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.(1097|1213|5435|14309)/.*$ + resolver: + args: + timeout: 30.0 + class: nexus.pylon.resolvers.TemplateResolver + # journals.aps.org + - matcher: + doi: ^10.1103/.*$ + resolver: + args: + selector: '[.link[] | select(.URL | ascii_downcase | endswith("fulltext"))][0].URL' + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # emerald.com + - matcher: + doi: ^10.1108/.*$ + resolver: + args: + format_string: 'https://www.emerald.com/insight/content/doi/{doi}/full/pdf' + class: nexus.pylon.resolvers.TemplateResolver + # ieeexplore.ieee.org + - matcher: + doi: ^10.1109/.*$ + resolver: + args: + format_string: 'https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber={selected}' + selector: '(.resource.primary.URL | split("/"))[-2]' + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # onlinelibrary.wiley.com + - matcher: + doi: ^10.1111/.*$ + resolver: + args: + format_string: 'https://onlinelibrary.wiley.com/doi/pdfdirect/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # asa.scitation.org + - matcher: + doi: ^10.1121/.*$ + resolver: + args: + format_string: 'https://asa.scitation.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # www.science.org + - matcher: + doi: ^10.1126/.*$ + resolver: + args: + format_string: 'https://www.science.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # ^10.1136/.*$ + - driver: + args: + actions: + - selector: '.article-pdf-download > img' + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.1136/.*$ + # ^10.1136/.*$ + - driver: + args: + actions: + - selector: '.icon' + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.1136/.*$ + resolver: + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # dl.acm.org + - matcher: + doi: ^10.1145/.*$ + resolver: + args: + format_string: 'https://dl.acm.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # www.annualreviews.org + - matcher: + doi: ^10.1146/.*$ + resolver: + args: + format_string: 'https://www.annualreviews.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # journals.physiology.org + - matcher: + doi: ^10.1152/.*$ + resolver: + args: + format_string: 'https://journals.physiology.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # ajp.psychiatryonline.org + - matcher: + doi: ^10.1176/.*$ + resolver: + args: + format_string: 'https://ajp.psychiatryonline.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # journals.sagepub.com + - matcher: + doi: ^10.1177/.*$ + resolver: + args: + format_string: 'https://journals.sagepub.com/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # bmcpsychiatry.biomedcentral.com + - matcher: + doi: ^10.1186/.*$ + resolver: + args: + format_string: 'https://bmcpsychiatry.biomedcentral.com/track/pdf/{doi}.pdf' + class: nexus.pylon.resolvers.TemplateResolver + # journals.plos.org + - driver: + args: + proxy_list: ~ + class: nexus.pylon.drivers.direct.DirectDriver + matcher: + doi: ^10.1371/.*$ + resolver: + args: + format_string: 'https://journals.plos.org/plosone/article/file?id={doi}&type=printable' + class: nexus.pylon.resolvers.TemplateResolver + # bioone.org + - driver: + args: + actions: + - selector: 'DOWNLOAD PAPER' + type: wait_link_text + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.(1638|1654|1667|2108)/.*$ + # jasn.asnjournals.org + - driver: + args: + actions: + - selector: 'View PDF' + type: wait_link_text + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.1681/.*$ + # papers.ssrn.com + - driver: + args: + actions: + - selector: '.abstract-buttons:nth-child(1) .primary > span' + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.2139/.*$ + # www.afghandata.org + - driver: + args: + proxy_list: ~ + class: + nexus.pylon.drivers.DirectDriver + matcher: + doi: ^10.(2458|29171)/.*$ + # www.euppublishing.com + - matcher: + doi: ^10.3366/.*$ + resolver: + args: + format_string: 'https://www.euppublishing.com/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # www.frontiersin.org + - driver: + args: + actions: + - selector: '.paper > .dropdown-toggle' + type: wait_css_selector + - type: click + - selector: '.download-files-pdf' + type: wait_css_selector + - type: click + class: + nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.3389/.*$ + resolver: + args: + selector: '[.link[] | select(.URL | ascii_downcase | endswith("full"))][0].URL' + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # bjgp.org + - driver: + args: + actions: + - selector: 'PDF' + type: wait_link_text + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.3399/.*$ + # www.wjgnet.com + - driver: + args: + actions: + - selector: 'Full Article (PDF)' + type: wait_link_text + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.3748/.*$ + resolver: + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # journals.vilniustech.lt + - driver: + args: + actions: + - selector: '.label' + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.3846/.*$ + resolver: + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # isegoria.revistas.csic.es + - matcher: + doi: ^10.3989/.*$ + resolver: + args: + selector: '[.link[] | select(."intended-application" == "similarity-checking")][0].URL' + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # www.psychiatrist.com + - driver: + args: + actions: + - selector: '.article-dwndpdf > img' + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.4088/.*$ + # www.scirp.org + - driver: + args: + actions: + - selector: 'PDF' + type: wait_link_text + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.4236/.*$ + # jsbr.be + - driver: + args: + actions: + - selector: 'h4 > .fa-download' + type: wait_css_selector + - type: click + - selector: 'PDF (EN)' + type: wait_link_text + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.5334/.*$ + # hess.copernicus.org + - driver: + args: + proxy_list: ~ + class: nexus.pylon.drivers.DirectDriver + matcher: + doi: ^10.5194/.*$ + # ProQuest + - driver: + args: + actions: + - selector: '#searchTerm' + type: wait_css_selector + - type: click + - selector: '#searchTerm' + text: '{doi}' + type: type + - selector: '.uxf-search' + type: wait_css_selector + - type: click + - selector: '.uxf-download' + type: wait_css_selector + - type: click + proxy_list: ~ + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.5585/.* + resolver: + args: + format_string: 'https://www.proquest.com/' + class: nexus.pylon.resolvers.TemplateResolver + # jcsm.aasm.org + - matcher: + doi: ^10.5664/.*$ + resolver: + args: + format_string: 'https://jcsm.aasm.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # journal.permsc.ru + - driver: + args: + actions: + - selector: '.obj_galley_link' + type: wait_css_selector + - type: click + - selector: '.label' + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.7242/.*$ + # amjcaserep.com + - driver: + args: + actions: + - selector: "//input[@value='Download PDF version']" + type: wait_xpath + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.12659/.*$ + # medcraveonline.com + - driver: + args: + actions: + - selector: 'Download PDF' + type: wait_link_text + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.15406/.*$ + # www.researchsquare.com + - driver: + args: + actions: + - selector: '.hidden > .text-blue-600 > .antialiased' + type: wait_css_selector + - type: native_click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.21203/.*$ + # www.ukm.my/ + - driver: + args: + proxy_list: ~ + class: nexus.pylon.drivers.DirectDriver + matcher: + doi: ^10.24035/.*$ + # journals.library.ryerson.ca + - driver: + args: + actions: + - selector: '#a11y-1-tab-tab-download' + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.32920/.*$ + # papers.cumincad.org + - driver: + args: + actions: + - selector: 'file.pdf' + type: wait_link_text + - type: click + proxy_list: ~ + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.52842/.*$ + # ^.*$ + - matcher: + doi: ^.*$ + resolver: + args: + selector: '[(.link | if . == null then [] else . end)[] | select((."content-type" == "application/pdf") or (.URL | ascii_downcase | contains("pdf")))][0].URL' + class: nexus.pylon.resolvers.DoiOrgRequestResolver diff --git a/nexus/hub/fancy_names.py b/nexus/hub/fancy_names.py index 0c94233..1e7e447 100644 --- a/nexus/hub/fancy_names.py +++ b/nexus/hub/fancy_names.py @@ -5,4 +5,4 @@ fancy_names = { def get_fancy_name(url): - return fancy_names.get(urlparse(url).netloc.lower(), 'Saturn Rings') + return fancy_names.get(urlparse(url).netloc.lower(), 'The Shroud') diff --git a/nexus/hub/main.py b/nexus/hub/main.py index 260b804..3799b17 100644 --- a/nexus/hub/main.py +++ b/nexus/hub/main.py @@ -1,6 +1,10 @@ import asyncio +import logging import uvloop +from aiogrobid import GrobidClient +from aioipfs import AsyncIPFS as AsyncIPFS +from idm.api.aioclient import IdmApiGrpcClient from library.aiogrpctools import AioGrpcServer from library.aiopostgres import AioPostgresPoolHolder from library.configurator import Configurator @@ -8,25 +12,38 @@ from library.logging import configure_logging from library.telegram.base import BaseTelegramClient from nexus.hub.configs import get_config from nexus.hub.services.delivery import DeliveryService +from nexus.hub.services.mutual_aid_service import MutualAidService from nexus.hub.services.submitter import SubmitterService +from nexus.hub.user_manager import UserManager +from nexus.meta_api.aioclient import MetaApiGrpcClient class GrpcServer(AioGrpcServer): def __init__(self, config: Configurator): self.log_config(config) + self.config = config super().__init__(address=config['grpc']['address'], port=config['grpc']['port']) - self.pool_holder = None - if config['database']['enabled']: - self.pool_holder = AioPostgresPoolHolder( - conninfo=f'dbname={config["database"]["database"]} ' - f'user={config["database"]["username"]} ' - f'password={config["database"]["password"]} ' - f'host={config["database"]["host"]}', - ) - self.waits.append(self.pool_holder) + self.pool_holder = AioPostgresPoolHolder( + conninfo=f'dbname={config["database"]["database"]} ' + f'user={config["database"]["username"]} ' + f'password={config["database"]["password"]} ' + f'host={config["database"]["host"]}', + ) + self.starts.append(self.pool_holder) self.telegram_clients = {} + self.mutual_aid_services = {} + + telegram_bot_config = config['telegram']['admin'] + self.admin_telegram_client = BaseTelegramClient( + app_id=telegram_bot_config['app_id'], + app_hash=telegram_bot_config['app_hash'], + database=telegram_bot_config.get('database'), + mtproxy=telegram_bot_config.get('mtproxy'), + phone=telegram_bot_config['phone'], + ) + for telegram_bot in config['telegram']['bots']: telegram_bot_config = config['telegram']['bots'][telegram_bot] telegram_client = BaseTelegramClient( @@ -37,41 +54,53 @@ class GrpcServer(AioGrpcServer): mtproxy=telegram_bot_config.get('mtproxy'), ) self.telegram_clients[telegram_bot] = telegram_client + if mutual_aid_group_id := telegram_bot_config.get('mutual_aid_group_id'): + self.mutual_aid_services[telegram_bot] = MutualAidService( + admin_telegram_client=self.admin_telegram_client, + bot_telegram_client=telegram_client, + mutual_aid_group_id=mutual_aid_group_id, + ) + self.starts.append(self.admin_telegram_client) self.starts.extend(self.telegram_clients.values()) + self.starts.extend(self.mutual_aid_services.values()) + + self.grobid_client = GrobidClient(base_url=config['grobid']['url']) + self.idm_client = IdmApiGrpcClient(endpoint=config['idm']['endpoint']) + self.ipfs_client = AsyncIPFS(host=config['ipfs']['address'], port=config['ipfs']['port']) + self.meta_api_client = MetaApiGrpcClient(endpoint=config['meta_api']['endpoint']) + self.starts.extend([self.grobid_client, self.idm_client, self.ipfs_client, self.meta_api_client]) + self.user_manager = UserManager() self.delivery_service = DeliveryService( - server=self.server, + application=self, service_name=config['application']['service_name'], - ipfs_config=config['ipfs'], is_sharience_enabled=config['application']['is_sharience_enabled'], maintenance_picture_url=config['application'].get('maintenance_picture_url', ''), - pool_holder=self.pool_holder, - pylon_config=config['pylon'], + should_parse_with_grobid=config['application']['should_parse_with_grobid'], should_store_hashes=config['application']['should_store_hashes'], - telegram_clients=self.telegram_clients, telegram_bot_configs=config['telegram']['bots'], + pylon_config=config['pylon'], ) - self.starts.append(self.delivery_service) - - if config['grobid']['enabled']: - self.submitter_service = SubmitterService( - server=self.server, - service_name=config['application']['service_name'], - grobid_config=config['grobid'], - ipfs_config=config['ipfs'], - meta_api_config=config['meta_api'], - telegram_clients=self.telegram_clients, - ) - self.starts.append(self.submitter_service) + self.submitter_service = SubmitterService( + application=self, + service_name=config['application']['service_name'], + ) + self.starts.extend([self.delivery_service, self.submitter_service]) def main(): config = get_config() configure_logging(config) - uvloop.install() + loop = uvloop.new_event_loop() + asyncio.set_event_loop(loop) grpc_server = GrpcServer(config) - asyncio.get_event_loop().run_until_complete(grpc_server.start_and_wait()) + return loop.run_until_complete(grpc_server.start_and_wait()) if __name__ == '__main__': - main() + result = main() + logging.getLogger('debug').debug({ + 'action': 'exit', + 'mode': 'main', + 'result': str(result) + }) diff --git a/nexus/hub/proto/delivery_service.proto b/nexus/hub/proto/delivery_service.proto index c628d76..7bea2a5 100644 --- a/nexus/hub/proto/delivery_service.proto +++ b/nexus/hub/proto/delivery_service.proto @@ -4,6 +4,21 @@ package nexus.hub.proto; import "nexus/models/proto/typed_document.proto"; import "idm/api/proto/chat_manager_service.proto"; +service Delivery { + rpc get_availability_data(GetAvailabilityDataRequest) returns (GetAvailabilityDataResponse) {} + rpc start_delivery(StartDeliveryRequest) returns (StartDeliveryResponse) {}; +} + +message GetAvailabilityDataRequest { + uint64 document_id = 1; + optional string bot_name = 2; +} + +message GetAvailabilityDataResponse { + map bot_files = 1; + repeated string ipfs_hashes = 2; +} + message StartDeliveryRequest { nexus.models.proto.TypedDocument typed_document = 1; idm.api.proto.Chat chat = 2; @@ -18,7 +33,3 @@ message StartDeliveryResponse { } Status status = 1; } - -service Delivery { - rpc start_delivery(StartDeliveryRequest) returns (StartDeliveryResponse) {}; -} diff --git a/nexus/hub/proto/submitter_service.proto b/nexus/hub/proto/submitter_service.proto index 06d88a3..4c20e4d 100644 --- a/nexus/hub/proto/submitter_service.proto +++ b/nexus/hub/proto/submitter_service.proto @@ -3,14 +3,32 @@ package nexus.hub.proto; import "idm/api/proto/chat_manager_service.proto"; +message PlainFile { + bytes data = 1; + string filename = 2; +} + +message TelegramFile { + bytes document = 1; + string file_id = 2; + int64 message_id = 3; +} + message SubmitRequest { - bytes telegram_document = 1; - string telegram_file_id = 2; + oneof file { + TelegramFile telegram = 1; + PlainFile plain = 2; + } idm.api.proto.Chat chat = 3; string bot_name = 4; + optional int64 reply_to = 5; + optional string doi_hint = 6; + bool doi_hint_priority = 7; + int64 uploader_id = 8; } message SubmitResponse { } + service Submitter { rpc submit(SubmitRequest) returns (SubmitResponse) {}; } diff --git a/nexus/hub/services/base.py b/nexus/hub/services/base.py index ccfbfb5..c94a748 100644 --- a/nexus/hub/services/base.py +++ b/nexus/hub/services/base.py @@ -1,7 +1,7 @@ import asyncio -from aioipfs import AsyncIPFS as AsyncIPFS from library.aiogrpctools.base import BaseService +from library.telegram.common import close_button from nexus.views.telegram.common import vote_button from telethon.errors import rpcerrorlist from telethon.tl.types import DocumentAttributeFilename @@ -17,24 +17,35 @@ def is_group_or_channel(chat_id: int): class BaseHubService(BaseService): - def __init__(self, service_name: str, ipfs_config: dict, telegram_clients): - super().__init__(service_name=service_name) - self.ipfs_client = None - self.ipfs_config = ipfs_config - self.telegram_clients = telegram_clients - - async def start(self): - self.ipfs_client = AsyncIPFS(host=self.ipfs_config['address'], port=self.ipfs_config['port']) + async def item_found(self, bot_name, doi): + if mutual_aid_service := self.application.mutual_aid_services.get(bot_name): + await mutual_aid_service.delete_request(doi) + await self.application.idm_client.reschedule_subscriptions( + subscriptions_ids=dict( + subscription_query=f'doi:{doi}', + ), + new_schedule={'schedule': '*/1 * * * *'}, + ) async def get_ipfs_hashes(self, file): return list(map( lambda x: x['Hash'], await asyncio.gather( - self.ipfs_client.add_bytes(file, cid_version=1, hash='blake2b-256', only_hash=True), - self.ipfs_client.add_bytes(file, cid_version=0, hash='sha2-256', only_hash=True), + self.application.ipfs_client.add_bytes(file, cid_version=1, hash='blake2b-256', only_hash=True), + self.application.ipfs_client.add_bytes(file, cid_version=0, hash='sha2-256', only_hash=True), ) )) + def set_fields_from_processed(self, document_pb, processed_document): + new_fields = [] + if processed_document.get('abstract') and not document_pb.abstract: + document_pb.abstract = processed_document['abstract'] + new_fields.append('abstract') + if processed_document.get('body') and not document_pb.content: + document_pb.content = processed_document['body'] + new_fields.append('content') + return new_fields + @retry( reraise=True, stop=stop_after_attempt(3), @@ -42,51 +53,62 @@ class BaseHubService(BaseService): ) async def send_file( self, - document_view, + document_holder, file, request_context, session_id, document_id=None, voting=True, + close=False, progress_callback=None, + chat_id=None, + reply_to=None, ): if document_id is None: - document_id = document_view.id - buttons = None + document_id = document_holder.id + buttons = [] if voting: - buttons = [ + buttons += [ vote_button( case='broken', - index_alias=document_view.index_alias, + index_alias=document_holder.index_alias, document_id=document_id, language=request_context.chat.language, session_id=session_id, ), vote_button( case='ok', - index_alias=document_view.index_alias, + index_alias=document_holder.index_alias, document_id=document_id, language=request_context.chat.language, session_id=session_id, ), ] - - caption = ( - f"{document_view.generate_body(language=request_context.chat.language, limit=512)}\n" - f"@{request_context.bot_name}" + if close: + buttons += [ + close_button(session_id=session_id) + ] + if not buttons: + buttons = None + short_description = ( + document_holder.view_builder(request_context.chat.language) + .add_short_description().add_doi_link(label=True, on_newline=True).build() ) - message = await self.telegram_clients[request_context.bot_name].send_file( - attributes=[DocumentAttributeFilename(document_view.get_filename())], + caption = ( + f"{short_description}\n" + f"@{self.application.config['telegram']['related_channel']}" + ) + message = await self.application.telegram_clients[request_context.bot_name].send_file( + attributes=[DocumentAttributeFilename(document_holder.get_filename())], buttons=buttons, caption=caption, - entity=request_context.chat.chat_id, + entity=chat_id or request_context.chat.chat_id, file=file, - progress_callback=progress_callback + progress_callback=progress_callback, + reply_to=reply_to, ) request_context.statbox( action='sent', - document_id=document_id, - index_alias=document_view.index_alias, voting=voting, ) return message diff --git a/nexus/hub/services/delivery.py b/nexus/hub/services/delivery.py index a8c8a25..e817398 100644 --- a/nexus/hub/services/delivery.py +++ b/nexus/hub/services/delivery.py @@ -2,44 +2,47 @@ import asyncio import hashlib import logging import time - -from grpc import ( - Server, - ServicerContext, +from datetime import ( + datetime, + timedelta, ) + +from aiogrobid.exceptions import BadRequestError +from grpc import ServicerContext +from idm.api.proto import subscription_manager_service_pb2 from izihawa_utils.common import filter_none from izihawa_utils.pb_to_json import MessageToDict from library.aiogrpctools.base import aiogrpc_request_wrapper from library.telegram.base import RequestContext from library.telegram.utils import safe_execution from nexus.hub.fancy_names import get_fancy_name -from nexus.hub.proto.delivery_service_pb2 import \ - StartDeliveryRequest as StartDeliveryRequestPb -from nexus.hub.proto.delivery_service_pb2 import \ - StartDeliveryResponse as StartDeliveryResponsePb -from nexus.hub.proto.delivery_service_pb2_grpc import ( - DeliveryServicer, - add_DeliveryServicer_to_server, +from nexus.hub.proto import ( + delivery_service_pb2, + delivery_service_pb2_grpc, ) -from nexus.hub.user_manager import UserManager from nexus.models.proto.operation_pb2 import \ DocumentOperation as DocumentOperationPb from nexus.models.proto.operation_pb2 import \ StoreTelegramFileId as StoreTelegramFileIdPb from nexus.models.proto.operation_pb2 import UpdateDocument as UpdateDocumentPb -from nexus.models.proto.typed_document_pb2 import \ - TypedDocument as TypedDocumentPb from nexus.pylon.client import PylonClient from nexus.pylon.exceptions import DownloadError +from nexus.pylon.pdftools import clean_metadata from nexus.pylon.proto.file_pb2 import FileResponse as FileResponsePb from nexus.translations import t -from nexus.views.telegram import parse_typed_document_to_view -from nexus.views.telegram.common import close_button +from nexus.views.telegram.base_holder import ( + BaseHolder, + ScimagHolder, +) from nexus.views.telegram.progress_bar import ( ProgressBar, ProgressBarLostMessageError, ) from prometheus_client import Gauge +from pypika import ( + PostgreSQLQuery, + Table, +) from .base import ( BaseHubService, @@ -53,153 +56,267 @@ async def operation_log(document_operation_pb): logging.getLogger('operation').info(msg=MessageToDict(document_operation_pb, preserving_proto_field_name=True)) +class DeliveryService(delivery_service_pb2_grpc.DeliveryServicer, BaseHubService): + def __init__( + self, + application, + service_name: str, + is_sharience_enabled: bool, + maintenance_picture_url: str, + should_parse_with_grobid: bool, + should_store_hashes: bool, + telegram_bot_configs: dict, + pylon_config: dict, + ): + super().__init__(application=application, service_name=service_name) + self.downloadings = set() + self.is_sharience_enabled = is_sharience_enabled + self.maintenance_picture_url = maintenance_picture_url + self.pylon_client = PylonClient( + proxies=pylon_config['proxies'], + source_configs=pylon_config['sources'], + default_driver_proxy_list=pylon_config['default_driver_proxy_list'], + downloads_directory=pylon_config['downloads_directory'], + ) + self.should_parse_with_grobid = should_parse_with_grobid + self.should_store_hashes = should_store_hashes + self.telegram_bot_configs = telegram_bot_configs + self.starts.extend([self.pylon_client]) + + async def start(self): + delivery_service_pb2_grpc.add_DeliveryServicer_to_server(self, self.application.server) + + async def stop(self): + for download in set(self.downloadings): + await download.external_cancel() + await asyncio.gather(*map(lambda x: x.task, self.downloadings)) + + async def get_telegram_file_id(self, document_id): + telegram_files = Table('telegram_files') + query = PostgreSQLQuery.from_('telegram_files').select( + telegram_files.bot_name, + telegram_files.telegram_file_id, + ).where(telegram_files.document_id == document_id) + pg_data = self.application.pool_holder.iterate(query.get_sql()) + bot_files = {} + async for bot_name, telegram_file_id in pg_data: + bot_files[bot_name] = telegram_file_id + return bot_files + + @aiogrpc_request_wrapper(log=False) + async def get_availability_data( + self, + request: delivery_service_pb2.GetAvailabilityDataRequest, + context: ServicerContext, + metadata: dict, + ) -> delivery_service_pb2.GetAvailabilityDataResponse: + return delivery_service_pb2.GetAvailabilityDataResponse( + bot_files=await self.get_telegram_file_id(request.document_id), + ) + + @aiogrpc_request_wrapper(log=False) + async def start_delivery( + self, + request: delivery_service_pb2.StartDeliveryRequest, + context: ServicerContext, + metadata: dict, + ) -> delivery_service_pb2.StartDeliveryResponse: + document_holder = BaseHolder.create(request.typed_document) + request_context = RequestContext( + bot_name=request.bot_name, + chat=request.chat, + request_id=metadata.get('request-id'), + ) + request_context.add_default_fields( + mode='delivery', + session_id=metadata.get('session-id'), + document_id=document_holder.id, + index_alias=document_holder.index_alias, + **self.get_default_service_fields(), + ) + if document_holder.doi: + request_context.add_default_fields(doi=document_holder.doi) + + telegram_file_id = None + if self.telegram_bot_configs[request_context.bot_name]['should_use_telegram_file_id']: + bot_files = await self.get_telegram_file_id(document_holder.id) + telegram_file_id = bot_files.get(request_context.bot_name) + if telegram_file_id: + try: + async with safe_execution(error_log=request_context.error_log): + await self.send_file( + document_holder=document_holder, + file=telegram_file_id, + session_id=metadata.get('session-id'), + request_context=request_context, + voting=not is_group_or_channel(request_context.chat.chat_id), + ) + request_context.statbox(action='cache_hit') + except ValueError: + telegram_file_id = None + if not telegram_file_id: + if self.application.user_manager.has_task(request.chat.chat_id, document_holder.id): + return delivery_service_pb2.StartDeliveryResponse(status=delivery_service_pb2.StartDeliveryResponse.Status.ALREADY_DOWNLOADING) + if self.application.user_manager.hit_limits(request.chat.chat_id): + return delivery_service_pb2.StartDeliveryResponse(status=delivery_service_pb2.StartDeliveryResponse.Status.TOO_MANY_DOWNLOADS) + await DownloadTask( + delivery_service=self, + document_holder=document_holder, + request_context=request_context, + session_id=metadata.get('session-id'), + ).schedule() + return delivery_service_pb2.StartDeliveryResponse(status=delivery_service_pb2.StartDeliveryResponse.Status.OK) + + class DownloadTask: def __init__( self, delivery_service, request_context, - document_view, + document_holder, session_id: str, ): + self.application = delivery_service.application self.delivery_service = delivery_service self.request_context = request_context - self.document_view = document_view + self.document_holder = document_holder self.session_id = session_id self.task = None async def schedule(self): + self.delivery_service.downloadings.add(self) + self.application.user_manager.add_task(self.request_context.chat.chat_id, self.document_holder.id) self.task = asyncio.create_task( self.download_task( request_context=self.request_context, - document_view=self.document_view, + document_holder=self.document_holder, ) ) - - self.delivery_service.user_manager.add_task(self.request_context.chat.chat_id, self.document_view.id) - self.delivery_service.downloadings.add(self) - self.task.add_done_callback(self.done_callback) def done_callback(self, f): self.delivery_service.downloadings.remove(self) - self.delivery_service.user_manager.remove_task( + self.application.user_manager.remove_task( self.request_context.chat.chat_id, - self.document_view.id, + self.document_holder.id, ) - async def download_task(self, request_context: RequestContext, document_view): + async def download_task(self, request_context: RequestContext, document_holder): throttle_secs = 2.0 async def _on_fail(): - await self.delivery_service.telegram_clients[request_context.bot_name].send_message( + await self.application.telegram_clients[request_context.bot_name].send_message( request_context.chat.chat_id, - t('MAINTENANCE', language=request_context.chat.language).format( + t('MAINTENANCE', request_context.chat.language).format( maintenance_picture_url=self.delivery_service.maintenance_picture_url ), - buttons=[close_button()] + buttons=request_context.personal_buttons() ) async with safe_execution( - request_context=request_context, + error_log=request_context.error_log, on_fail=_on_fail, ): progress_bar_download = ProgressBar( - telegram_client=self.delivery_service.telegram_clients[request_context.bot_name], + telegram_client=self.application.telegram_clients[request_context.bot_name], request_context=request_context, - banner=t("LOOKING_AT", language=request_context.chat.language), - header=f'⬇️ {document_view.get_filename()}', - tail_text=t('TRANSMITTED_FROM', language=request_context.chat.language), + banner=t("LOOKING_AT", request_context.chat.language), + header=f'⬇️ {document_holder.get_filename()}', + tail_text=t('TRANSMITTED_FROM', request_context.chat.language), throttle_secs=throttle_secs, ) downloads_gauge.inc() start_time = time.time() try: file = await self.download( - document_view=document_view, + document_holder=document_holder, progress_bar=progress_bar_download, ) - if not file: - request_context.statbox( - action='missed', - duration=time.time() - start_time, - document_id=document_view.id, - index_alias=document_view.index_alias, - ) - is_served_from_sharience = False - if self.delivery_service.is_sharience_enabled: - is_served_from_sharience = await self.try_sharience( - request_context=request_context, - document_view=document_view, - ) - if not is_served_from_sharience: - request_context.statbox( - action='not_found', - document_id=document_view.id, - duration=time.time() - start_time, - index_alias=document_view.index_alias, - ) - await self.respond_not_found( - request_context=request_context, - document_view=document_view, - ) - return - else: + if file: request_context.statbox( action='downloaded', duration=time.time() - start_time, - document_id=document_view.id, len=len(file), - index_alias=document_view.index_alias, ) - - progress_bar_upload = ProgressBar( - telegram_client=self.delivery_service.telegram_clients[request_context.bot_name], - request_context=request_context, - message=progress_bar_download.message, - banner=t("LOOKING_AT", language=request_context.chat.language), - header=f'⬇️ {document_view.get_filename()}', - tail_text=t('UPLOADED_TO_TELEGRAM', language=request_context.chat.language), - throttle_secs=throttle_secs - ) - uploaded_message = await self.delivery_service.send_file( - document_view=self.document_view, - file=file, - progress_callback=progress_bar_upload.callback, - request_context=self.request_context, - session_id=self.session_id, - voting=not is_group_or_channel(self.request_context.chat.chat_id), - ) - request_context.statbox( - action='uploaded', - duration=time.time() - start_time, - document_id=document_view.id, - index_alias=document_view.index_alias, - ) - if self.delivery_service.should_store_hashes: - asyncio.create_task(self.store_hashes( + if not document_holder.md5 and document_holder.get_extension() == 'pdf': + try: + file = clean_metadata(file, doi=document_holder.doi) + request_context.statbox( + action='cleaned', + len=len(file), + ) + except ValueError as e: + request_context.error_log(e) + progress_bar_upload = ProgressBar( + telegram_client=self.application.telegram_clients[request_context.bot_name], + request_context=request_context, + message=progress_bar_download.message, + banner=t("LOOKING_AT", request_context.chat.language), + header=f'⬇️ {document_holder.get_filename()}', + tail_text=t('UPLOADED_TO_TELEGRAM', request_context.chat.language), + throttle_secs=throttle_secs + ) + uploaded_message = await self.delivery_service.send_file( + document_holder=self.document_holder, + file=file, + progress_callback=progress_bar_upload.callback, + request_context=self.request_context, + session_id=self.session_id, + voting=not is_group_or_channel(self.request_context.chat.chat_id), + ) + if self.document_holder.doi: + await self.delivery_service.item_found( + bot_name=request_context.bot_name, + doi=self.document_holder.doi, + ) + request_context.statbox( + action='uploaded', + duration=time.time() - start_time, + ) + asyncio.create_task(self.store_new_data( bot_name=request_context.bot_name, - document_view=document_view, + document_holder=document_holder, telegram_file_id=uploaded_message.file.id, file=file, )) + else: + request_context.statbox( + action='missed', + duration=time.time() - start_time, + ) + + if self.delivery_service.is_sharience_enabled and await self.try_sharience( + request_context=request_context, + document_holder=document_holder, + ): + return + + request_context.statbox( + action='not_found', + duration=time.time() - start_time, + ) + await self.respond_not_found( + request_context=request_context, + document_holder=document_holder, + ) except DownloadError: await self.external_cancel() except ProgressBarLostMessageError: self.request_context.statbox( action='user_canceled', duration=time.time() - start_time, - document_id=document_view.id, - index_alias=document_view.index_alias, ) except asyncio.CancelledError: - pass + request_context.statbox(action='canceled') finally: downloads_gauge.dec() messages = filter_none([progress_bar_download.message]) - await ( - self.delivery_service - .telegram_clients[request_context.bot_name] - .delete_messages(request_context.chat.chat_id, messages) - ) + if messages: + async with safe_execution(error_log=request_context.error_log): + await self.application.telegram_clients[request_context.bot_name].delete_messages( + request_context.chat.chat_id, + messages + ) + request_context.debug_log(action='deleted_progress_message') async def process_resp(self, resp, progress_bar, collected, filesize): progress_bar.set_source(get_fancy_name(resp.source)) @@ -212,210 +329,137 @@ class DownloadTask: collected.extend(resp.chunk.content) await progress_bar.callback(len(collected), filesize) - async def respond_not_found(self, request_context: RequestContext, document_view): - return await self.delivery_service.telegram_clients[request_context.bot_name].send_message( + async def respond_not_found(self, request_context: RequestContext, document_holder): + if ( + isinstance(document_holder, ScimagHolder) + and document_holder.doi + ): + await self.application.idm_client.subscribe( + chat_id=request_context.chat.chat_id, + subscription_query=f'doi:{document_holder.doi}', + schedule='0 * * * *', + is_oneshot=True, + is_downloadable=True, + request_id=request_context.request_id, + session_id=self.session_id, + valid_until=int(time.mktime((datetime.now() + timedelta(days=7)).timetuple())), + subscription_type=subscription_manager_service_pb2.Subscription.Type.DOI + ) + if mutual_aid_service := self.application.mutual_aid_services.get(request_context.bot_name): + await mutual_aid_service.request(document_holder.doi, document_holder.type) + return await self.application.telegram_clients[request_context.bot_name].send_message( request_context.chat.chat_id, - t("SOURCES_UNAVAILABLE", language=request_context.chat.language).format( - document=document_view.get_robust_title() + t("SOURCES_UNAVAILABLE", request_context.chat.language).format( + document=document_holder.doi or document_holder.view_builder( + request_context.chat.language).add_title(bold=False).build() ), - buttons=[close_button()] + buttons=request_context.personal_buttons() ) - async def try_sharience(self, request_context, document_view): - if document_view.doi: - request_context.statbox(action='try_sharience', doi=document_view.doi, index_alias=document_view.index_alias) - pg_data = self.delivery_service.pool_holder.iterate( + async def try_sharience(self, request_context, document_holder): + if document_holder.doi: + request_context.statbox(action='try_sharience') + pg_data = self.application.pool_holder.iterate( ''' select sh.id, t.telegram_file_id as vote_sum from sharience as sh left join votes as v on sh.id = v.document_id left join telegram_files as t - on sh.id = t.document_id + on sh.parent_id = t.document_id where t.bot_name = %s group by sh.id, t.telegram_file_id having coalesce(sum(v.value), 0) > -1 and sh.parent_id = %s order by coalesce(sum(v.value), 0) desc; - ''', (self.request_context.bot_name, document_view.id,)) + ''', (self.request_context.bot_name, document_holder.id,)) async for document_id, telegram_file_id in pg_data: return await self.delivery_service.send_file( document_id=document_id, - document_view=self.document_view, + document_holder=self.document_holder, file=telegram_file_id, request_context=self.request_context, session_id=self.session_id, voting=True, ) - async def download(self, document_view, progress_bar): + async def download(self, document_holder, progress_bar): collected = bytearray() - if document_view.doi: + if document_holder.doi: try: - async for resp in self.delivery_service.pylon_client.by_doi( - doi=document_view.doi, - md5=document_view.md5, - error_log_func=self.request_context.error_log, - ): + params = {'doi': document_holder.doi} + if document_holder.md5: + params['md5'] = document_holder.md5 + async for resp in self.delivery_service.pylon_client.download(params): await self.process_resp( resp=resp, progress_bar=progress_bar, collected=collected, - filesize=document_view.filesize, + filesize=document_holder.filesize, ) return bytes(collected) except DownloadError: pass - if document_view.md5: + if document_holder.md5: try: - async for resp in self.delivery_service.pylon_client.by_md5( - md5=document_view.md5, - error_log_func=self.request_context.error_log, - ): + async for resp in self.delivery_service.pylon_client.download({'md5': document_holder.md5}): await self.process_resp( resp=resp, progress_bar=progress_bar, collected=collected, - filesize=document_view.filesize, + filesize=document_holder.filesize, ) return bytes(collected) except DownloadError: pass async def external_cancel(self): - self.task.cancel() - self.request_context.statbox( - action='externally_canceled', - document_id=self.document_view.id, - index=self.document_view.index, - ) - await self.delivery_service.telegram_clients[self.request_context.bot_name].send_message( + self.request_context.statbox(action='externally_canceled') + await self.application.telegram_clients[self.request_context.bot_name].send_message( self.request_context.chat.chat_id, - t("DOWNLOAD_CANCELED", language=self.request_context.chat.language).format( - document=self.document_view.get_robust_title() + t("DOWNLOAD_CANCELED", self.request_context.chat.language).format( + document=self.document_holder.view_builder(self.request_context.chat.language).add_title(bold=False).build() ), - buttons=[close_button()] + buttons=self.request_context.personal_buttons() ) + self.task.cancel() + await self.task - async def store_hashes(self, bot_name, document_view, telegram_file_id, file): - document_pb = document_view.document_pb - document_pb.filesize = len(file) - if not document_pb.md5: - document_pb.md5 = hashlib.md5(file).hexdigest() - del document_pb.ipfs_multihashes[:] - document_pb.ipfs_multihashes.extend(await self.delivery_service.get_ipfs_hashes(file=file)) - - update_document_operation_pb = DocumentOperationPb( - update_document=UpdateDocumentPb( - fields=['filesize', 'ipfs_multihashes', 'md5'], - typed_document=TypedDocumentPb(**{document_view.index_alias: document_pb}), - ), - ) - store_telegram_file_id_operation_pb = DocumentOperationPb( - store_telegram_file_id=StoreTelegramFileIdPb( - document_id=document_pb.id, - telegram_file_id=telegram_file_id, - bot_name=bot_name, - ), - ) - await asyncio.gather( - operation_log(update_document_operation_pb), - operation_log(store_telegram_file_id_operation_pb), - ) - - -class DeliveryService(DeliveryServicer, BaseHubService): - def __init__( - self, - server: Server, - service_name: str, - ipfs_config: dict, - is_sharience_enabled: bool, - maintenance_picture_url: str, - pool_holder, - pylon_config: dict, - should_store_hashes: bool, - telegram_clients: dict, - telegram_bot_configs: dict, - ): - super().__init__( - service_name=service_name, - ipfs_config=ipfs_config, - telegram_clients=telegram_clients, - ) - self.downloadings = set() - self.is_sharience_enabled = is_sharience_enabled - self.maintenance_picture_url = maintenance_picture_url - self.pool_holder = pool_holder - self.pylon_client = PylonClient( - proxy=pylon_config['proxy'], - resolve_proxy=pylon_config['resolve_proxy'], - ) - self.server = server - self.should_store_hashes = should_store_hashes - self.telegram_bot_configs = telegram_bot_configs - self.user_manager = UserManager() - self.waits.extend([self.pylon_client]) - - async def start(self): - await super().start() - add_DeliveryServicer_to_server(self, self.server) - - async def stop(self): - for download in set(self.downloadings): - await download.external_cancel() - await asyncio.gather(*map(lambda x: x.task, self.downloadings)) - await self.ipfs_client.close() - - async def get_telegram_file_id(self, bot_name, document_id): - pg_data = self.pool_holder.iterate(''' - select telegram_file_id from telegram_files where bot_name = %s and document_id = %s - ''', (bot_name, document_id)) - async for telegram_file_id in pg_data: - return telegram_file_id - - @aiogrpc_request_wrapper(log=False) - async def start_delivery( - self, - request: StartDeliveryRequestPb, - context: ServicerContext, - metadata: dict, - ) -> StartDeliveryResponsePb: - request_context = RequestContext( - bot_name=request.bot_name, - chat=request.chat, - request_id=metadata.get('request-id'), - ) - request_context.add_default_fields( - mode='delivery', - session_id=metadata.get('session-id'), - **self.get_default_service_fields(), - ) - document_view = parse_typed_document_to_view(request.typed_document) - telegram_file_id = None - if self.telegram_bot_configs[request_context.bot_name]['should_use_telegram_file_id']: - telegram_file_id = await self.get_telegram_file_id(request_context.bot_name, document_view.id) - if telegram_file_id: + async def store_new_data(self, bot_name, document_holder, telegram_file_id, file): + document_pb = document_holder.document_pb + new_fields = [] + if self.delivery_service.should_store_hashes: + document_pb.filesize = len(file) + if not document_pb.md5: + document_pb.md5 = hashlib.md5(file).hexdigest() + del document_pb.ipfs_multihashes[:] + document_pb.ipfs_multihashes.extend(await self.delivery_service.get_ipfs_hashes(file=file)) + new_fields.extend(['filesize', 'ipfs_multihashes', 'md5']) + store_telegram_file_id_operation_pb = DocumentOperationPb( + store_telegram_file_id=StoreTelegramFileIdPb( + document_id=document_pb.id, + telegram_file_id=telegram_file_id, + bot_name=bot_name, + ), + ) + await operation_log(store_telegram_file_id_operation_pb), + if ( + self.delivery_service.should_parse_with_grobid + and document_holder.index_alias == 'scimag' + ): try: - await self.send_file( - document_view=document_view, - file=telegram_file_id, - session_id=metadata.get('session-id'), - request_context=request_context, - voting=not is_group_or_channel(request_context.chat.chat_id), - ) - request_context.statbox(action='cache_hit', document_id=document_view.id, index_alias=document_view.index_alias) - except ValueError: - telegram_file_id = None - if not telegram_file_id: - if self.user_manager.has_task(request.chat.chat_id, document_view.id): - return StartDeliveryResponsePb(status=StartDeliveryResponsePb.Status.ALREADY_DOWNLOADING) - if self.user_manager.hit_limits(request.chat.chat_id): - return StartDeliveryResponsePb(status=StartDeliveryResponsePb.Status.TOO_MANY_DOWNLOADS) - await DownloadTask( - delivery_service=self, - document_view=document_view, - request_context=request_context, - session_id=metadata.get('session-id'), - ).schedule() - return StartDeliveryResponsePb(status=StartDeliveryResponsePb.Status.OK) + processed_document = await self.application.grobid_client.process_fulltext_document(pdf_file=file) + new_fields += self.delivery_service.set_fields_from_processed(document_pb, processed_document) + except BadRequestError as e: + self.request_context.statbox(action='unparsable_document') + self.request_context.error_log(e) + + if new_fields: + update_document_operation_pb = DocumentOperationPb( + update_document=UpdateDocumentPb( + full_text_index=True, + fields=new_fields, + typed_document=document_holder.get_typed_document(), + ), + ) + await operation_log(update_document_operation_pb) diff --git a/nexus/hub/services/mutual_aid_service.py b/nexus/hub/services/mutual_aid_service.py new file mode 100644 index 0000000..0713a4c --- /dev/null +++ b/nexus/hub/services/mutual_aid_service.py @@ -0,0 +1,98 @@ +import asyncio +import logging +import re +import time +from datetime import ( + datetime, + timedelta, +) + +from aiokit import AioThing +from library.telegram.utils import safe_execution +from nexus.views.telegram.scimag import ScimagViewBuilder +from nlptools.izihawa_nlptools.regex import DOI_REGEX + + +class MutualAidService(AioThing): + def __init__(self, admin_telegram_client, bot_telegram_client, mutual_aid_group_id): + super().__init__() + self.admin_telegram_client = admin_telegram_client + self.bot_telegram_client = bot_telegram_client + self.mutual_aid_group_id = mutual_aid_group_id + self.requests = {} + self.cleanup_task = None + + async def cleanup(self): + try: + while 1: + await self.delete_messages(before_date=time.mktime((datetime.utcnow() - timedelta(hours=46)).timetuple())) + await self.delete_messages(before_date=time.mktime((datetime.utcnow() - timedelta(hours=2)).timetuple()), document_only=True) + await asyncio.sleep(3600) + except asyncio.CancelledError: + pass + + async def start(self): + logging.getLogger('debug').debug({ + 'action': 'start', + 'mode': 'mutual_aid_service', + 'mutual_aid_group_id': self.mutual_aid_group_id, + }) + await self.collect_all_requests() + if not self.cleanup_task: + self.cleanup_task = asyncio.create_task(self.cleanup()) + + async def stop(self): + if self.cleanup_task: + self.cleanup_task.cancel() + await self.cleanup_task + self.cleanup_task = None + + def is_request(self, message): + if message.raw_text and message.raw_text.startswith('#request'): + doi_regex = re.search(DOI_REGEX, message.raw_text) + if doi_regex: + return doi_regex.group(1) + '/' + doi_regex.group(2) + + async def collect_all_requests(self): + async for message in self.admin_telegram_client.iter_messages(self.mutual_aid_group_id): + if doi := self.is_request(message): + self.requests[doi] = message.id + logging.getLogger('debug').debug({ + 'action': 'collect', + 'mode': 'mutual_aid_service', + 'requests': len(self.requests) + }) + + async def request(self, doi: str, type_): + if doi not in self.requests: + message = await self.bot_telegram_client.send_message( + self.mutual_aid_group_id, + f'#request {ScimagViewBuilder.icons.get(type_, ScimagViewBuilder.icon)} https://doi.org/{doi}' + ) + self.requests[doi] = message.id + + async def delete_request(self, doi: str): + message_id = self.requests.pop(doi, None) + logging.getLogger('debug').debug({ + 'action': 'delete_request', + 'mode': 'mutual_aid_service', + 'doi': doi, + 'message_id': message_id, + }) + if message_id: + async with safe_execution(): + await self.admin_telegram_client.delete_messages(self.mutual_aid_group_id, message_id) + + async def delete_messages(self, before_date, document_only=False): + messages = [] + async for message in self.admin_telegram_client.iter_messages(self.mutual_aid_group_id): + if ( + time.mktime(message.date.timetuple()) < before_date + and (not document_only or message.document) + and not message.pinned + ): + if doi := self.is_request(message): + self.requests.pop(doi, None) + messages.append(message) + async with safe_execution(): + await self.admin_telegram_client.delete_messages(self.mutual_aid_group_id, messages) diff --git a/nexus/hub/services/submitter.py b/nexus/hub/services/submitter.py index cec656a..d45c94a 100644 --- a/nexus/hub/services/submitter.py +++ b/nexus/hub/services/submitter.py @@ -1,43 +1,37 @@ import asyncio import hashlib import logging +import re import time +from difflib import SequenceMatcher -from aiogrobid import GrobidClient +import orjson as json from aiogrobid.exceptions import BadRequestError -from grpc import ( - Server, - ServicerContext, -) +from grpc import ServicerContext from izihawa_utils.pb_to_json import MessageToDict from library.aiogrpctools.base import aiogrpc_request_wrapper from library.telegram.base import RequestContext +from library.telegram.common import close_button +from library.telegram.utils import safe_execution from nexus.hub.exceptions import ( FileTooBigError, UnavailableMetadataError, UnparsableDoiError, ) -from nexus.hub.proto.submitter_service_pb2 import \ - SubmitRequest as SubmitRequestPb -from nexus.hub.proto.submitter_service_pb2 import \ - SubmitResponse as SubmitResponsePb -from nexus.hub.proto.submitter_service_pb2_grpc import ( - SubmitterServicer, - add_SubmitterServicer_to_server, +from nexus.hub.proto import ( + submitter_service_pb2, + submitter_service_pb2_grpc, ) -from nexus.hub.user_manager import UserManager -from nexus.meta_api.aioclient import MetaApiGrpcClient -from nexus.models.proto.operation_pb2 import \ - DocumentOperation as DocumentOperationPb -from nexus.models.proto.operation_pb2 import \ - StoreTelegramFileId as StoreTelegramFileIdPb -from nexus.models.proto.operation_pb2 import UpdateDocument as UpdateDocumentPb -from nexus.models.proto.sharience_pb2 import Sharience as ShariencePb -from nexus.models.proto.typed_document_pb2 import \ - TypedDocument as TypedDocumentPb +from nexus.models.proto import ( + operation_pb2, + scimag_pb2, + sharience_pb2, + typed_document_pb2, +) +from nexus.pylon.pdftools import clean_metadata from nexus.translations import t -from nexus.views.telegram.common import close_button -from nexus.views.telegram.scimag import ScimagView +from nexus.views.telegram.base_holder import ScimagHolder +from telethon.errors import ChatAdminRequiredError from telethon.extensions import BinaryReader from .base import BaseHubService @@ -47,42 +41,75 @@ async def operation_log(document_operation_pb): logging.getLogger('operation').info(msg=MessageToDict(document_operation_pb, preserving_proto_field_name=True)) -class SubmitterService(SubmitterServicer, BaseHubService): - def __init__( - self, - server: Server, - service_name: str, - grobid_config: dict, - ipfs_config: dict, - meta_api_config: dict, - telegram_clients, - ): - super().__init__( - service_name=service_name, - ipfs_config=ipfs_config, - telegram_clients=telegram_clients, +class TelegramFile: + def __init__(self, telegram_client, telegram_file): + self.telegram_client = telegram_client + self.telegram_file = telegram_file + self.document = BinaryReader(telegram_file.document).tgread_object() + + @property + def size(self): + return self.document.size + + @property + def message_id(self): + return self.telegram_file.message_id + + @property + def filename(self): + return self.document.attributes[0].file_name + + async def read(self): + return await self.telegram_client.download_document( + document=self.document, + file=bytes, ) - self.server = server - self.grobid_client = GrobidClient(base_url=grobid_config['url']) - self.meta_api_client = MetaApiGrpcClient(endpoint=meta_api_config['endpoint']) - self.telegram_clients = telegram_clients - self.user_manager = UserManager() - self.waits.extend([self.grobid_client, self.meta_api_client]) + +class PlainFile: + def __init__(self, plain_file): + self.plain_file = plain_file + + @property + def size(self): + return len(self.plain_file.data) + + @property + def message_id(self): + return None + + @property + def filename(self): + return self.plain_file.filename + + async def read(self): + return self.plain_file.data + + +def fuzzy_compare(a, b): + if a is None or b is None: + return False + a = re.sub(r'[^a-z\d]', '', a.lower()) + b = re.sub(r'[^a-z\d]', '', b.lower()) + return SequenceMatcher(None, a, b).ratio() > 0.9 + + +async def delayed_task(task, seconds): + await asyncio.sleep(seconds) + await task + + +class SubmitterService(submitter_service_pb2_grpc.SubmitterServicer, BaseHubService): async def start(self): - await super().start() - add_SubmitterServicer_to_server(self, self.server) - - async def stop(self): - await self.ipfs_client.close() + submitter_service_pb2_grpc.add_SubmitterServicer_to_server(self, self.application.server) @aiogrpc_request_wrapper(log=False) async def submit( self, - request: SubmitRequestPb, + request: submitter_service_pb2.SubmitRequest, context: ServicerContext, metadata: dict, - ) -> SubmitResponsePb: + ) -> submitter_service_pb2.SubmitResponse: session_id = metadata.get('session-id') request_context = RequestContext( bot_name=request.bot_name, @@ -91,115 +118,208 @@ class SubmitterService(SubmitterServicer, BaseHubService): ) request_context.add_default_fields( mode='submit', + index_alias='scimag', session_id=metadata.get('session-id'), + doi_hint=request.doi_hint, **self.get_default_service_fields(), ) - document = BinaryReader(request.telegram_document).tgread_object() - if document.size > 20 * 1024 * 1024: - request_context.error_log(FileTooBigError(size=document.size)) + buttons = None if request_context.is_group_mode() else [close_button()] + + match str(request.WhichOneof('file')): + case 'plain': + file = PlainFile(request.plain) + case 'telegram': + file = TelegramFile(self.application.telegram_clients[request_context.bot_name], request.telegram) + case _: + raise RuntimeError(f"Unknown file type {request.WhichOneof('file')}") + + if file.size > 30 * 1024 * 1024: + request_context.error_log(FileTooBigError(size=file.size)) request_context.statbox(action='file_too_big') - await self.telegram_clients[request_context.bot_name].send_message( - request_context.chat.chat_id, - t('FILE_TOO_BIG_ERROR', language=request_context.chat.language), - buttons=[close_button()], - ) - return SubmitResponsePb() - processing_message = await self.telegram_clients[request_context.bot_name].send_message( - request_context.chat.chat_id, - t("PROCESSING_PAPER", language=request_context.chat.language).format( - filename=document.attributes[0].file_name, - ), - ) + async with safe_execution(error_log=request_context.error_log): + await self.application.telegram_clients[request_context.bot_name].send_message( + request_context.chat.chat_id, + t('FILE_TOO_BIG_ERROR', request_context.chat.language), + buttons=buttons, + reply_to=request.reply_to, + ) + return submitter_service_pb2.SubmitResponse() + try: - file = await self.telegram_clients[request_context.bot_name].download_document(document=document, file=bytes) + processing_message = await self.application.telegram_clients[request_context.bot_name].send_message( + request_context.chat.chat_id, + t("PROCESSING_PAPER", request_context.chat.language).format(filename=file.filename), + reply_to=request.reply_to, + ) + except ChatAdminRequiredError: + return submitter_service_pb2.SubmitResponse() + + try: + file_data = await file.read() + processed_document = None + pdf_doi = None + pdf_title = None try: - processed_document = await self.grobid_client.process_fulltext_document(pdf_file=file) + processed_document = await self.application.grobid_client.process_fulltext_document(pdf_file=file_data) + pdf_doi = processed_document.get('doi') + pdf_title = processed_document.get('title') + request_context.add_default_fields(pdf_doi=pdf_doi) except BadRequestError as e: request_context.statbox(action='unparsable_document') request_context.error_log(e) - await self.telegram_clients[request_context.bot_name].send_message( - request_context.chat.chat_id, - t('UNPARSABLE_DOCUMENT_ERROR', language=request_context.chat.language).format( - filename=document.attributes[0].file_name, - ), - buttons=[close_button()], - ) - return SubmitResponsePb() + if not request.doi_hint: + await self.application.telegram_clients[request_context.bot_name].send_message( + request_context.chat.chat_id, + t('UNPARSABLE_DOCUMENT_ERROR', request_context.chat.language).format( + filename=file.filename, + ), + buttons=buttons, + reply_to=request.reply_to, + ) + return submitter_service_pb2.SubmitResponse() - if not processed_document.get('doi'): + if request.doi_hint and pdf_doi != request.doi_hint: + request_context.statbox(action='mismatched_doi', doi_hint_priority=request.doi_hint_priority) + if request.doi_hint_priority: + pdf_doi = request.doi_hint + + if not pdf_doi and not request.doi_hint: request_context.statbox(action='unparsable_doi') request_context.error_log(UnparsableDoiError()) - await self.telegram_clients[request_context.bot_name].send_message( + await self.application.telegram_clients[request_context.bot_name].send_message( request_context.chat.chat_id, - t('UNPARSABLE_DOI_ERROR', language=request_context.chat.language).format( - filename=document.attributes[0].file_name, + t('UNPARSABLE_DOI_ERROR', request_context.chat.language).format( + filename=file.filename, ), - buttons=[close_button()], + buttons=buttons, + reply_to=request.reply_to, ) - return SubmitResponsePb() + return submitter_service_pb2.SubmitResponse() - search_response_pb = await self.meta_api_client.search( - names=('scimag',), - query=processed_document['doi'], - page=0, - page_size=1, - request_id=request_context.request_id, - session_id=session_id, - user_id=str(request_context.chat.chat_id), - language=request_context.chat.language, - ) + scimag_pb = None - if len(search_response_pb.scored_documents) == 0: + if pdf_doi: + meta_search_response = await self.application.meta_api_client.meta_search( + index_aliases=['scimag',], + query=pdf_doi, + collectors=[{'top_docs': {'limit': 1}}], + session_id=session_id, + request_id=request_context.request_id, + user_id=str(request_context.chat.chat_id), + query_tags=['submitter'], + ) + scored_documents = meta_search_response.collector_outputs[0].top_docs.scored_documents + if len(scored_documents) == 1: + scimag_pb = scimag_pb2.Scimag(**json.loads(scored_documents[0].document)) + if not fuzzy_compare(scimag_pb.title, pdf_title): + request_context.statbox( + action='mismatched_title', + doi=pdf_doi, + pdf_title=pdf_title, + title=scimag_pb.title, + ) + scimag_pb = None + + if not scimag_pb and request.doi_hint: + meta_search_response = await self.application.meta_api_client.meta_search( + index_aliases=['scimag', ], + query=request.doi_hint, + collectors=[{'top_docs': {'limit': 1}}], + session_id=session_id, + request_id=request_context.request_id, + user_id=str(request_context.chat.chat_id), + query_tags=['submitter'], + ) + scored_documents = meta_search_response.collector_outputs[0].top_docs.scored_documents + if len(scored_documents) == 1: + scimag_pb = scimag_pb2.Scimag(**json.loads(scored_documents[0].document)) + if not fuzzy_compare(scimag_pb.title, pdf_title): + request_context.statbox( + action='mismatched_title', + doi=request.doi_hint, + pdf_title=pdf_title, + title=scimag_pb.title, + ) + # ToDo: add trust mechanics + + if not scimag_pb: request_context.statbox(action='unavailable_metadata') - request_context.error_log(UnavailableMetadataError(doi=processed_document['doi'])) - await self.telegram_clients[request_context.bot_name].send_message( + request_context.error_log(UnavailableMetadataError(doi=pdf_doi)) + await self.application.telegram_clients[request_context.bot_name].send_message( request_context.chat.chat_id, t( 'UNAVAILABLE_METADATA_ERROR', language=request_context.chat.language - ).format(doi=processed_document['doi']), - buttons=[close_button()], + ).format(doi=pdf_doi or request.doi_hint), + buttons=buttons, + reply_to=request.reply_to, ) - return SubmitResponsePb() + return submitter_service_pb2.SubmitResponse() - document_view = ScimagView(search_response_pb.scored_documents[0].typed_document.scimag) + request_context.add_default_fields(doi=scimag_pb.doi, document_id=scimag_pb.id) + try: + file_data = clean_metadata(file_data, doi=scimag_pb.doi) + request_context.statbox( + action='cleaned', + len=len(file_data), + ) + except ValueError as e: + request_context.error_log(e) uploaded_message = await self.send_file( - document_view=document_view, - file=file, + document_holder=ScimagHolder(scimag_pb), + file=file_data, request_context=request_context, session_id=session_id, voting=False, ) + + if processed_document: + sharience_pb = sharience_pb2.Sharience( + abstract=processed_document.get('abstract', ''), + content=processed_document.get('body', ''), + parent_id=scimag_pb.id, + uploader_id=request.uploader_id or request_context.chat.chat_id, + updated_at=int(time.time()), + md5=hashlib.md5(file_data).hexdigest(), + filesize=file.size, + ipfs_multihashes=await self.get_ipfs_hashes(file=file_data), + ) + update_sharience_pb = operation_pb2.DocumentOperation( + update_document=operation_pb2.UpdateDocument( + full_text_index=True, + typed_document=typed_document_pb2.TypedDocument(sharience=sharience_pb), + ), + ) + await operation_log(update_sharience_pb) + + new_fields = self.set_fields_from_processed(scimag_pb, processed_document) + if new_fields: + update_scimag_pb = operation_pb2.DocumentOperation( + update_document=operation_pb2.UpdateDocument( + full_text_index=True, + typed_document=typed_document_pb2.TypedDocument(scimag=scimag_pb), + fields=new_fields + ), + ) + await operation_log(update_scimag_pb) + store_telegram_file_id_operation_pb = operation_pb2.DocumentOperation( + store_telegram_file_id=operation_pb2.StoreTelegramFileId( + document_id=scimag_pb.id, + telegram_file_id=uploaded_message.file.id, + bot_name=request_context.bot_name, + ), + ) + await operation_log(store_telegram_file_id_operation_pb) + request_context.statbox(action='successfully_stored') + + if file.message_id: + async with safe_execution(error_log=request_context.error_log, level=logging.DEBUG): + await self.application.telegram_clients[request_context.bot_name].delete_messages( + request_context.chat.chat_id, + file.message_id, + ) + await self.item_found(bot_name=request_context.bot_name, doi=scimag_pb.doi) finally: await processing_message.delete() - - update_document_operation_pb = DocumentOperationPb( - update_document=UpdateDocumentPb( - typed_document=TypedDocumentPb(sharience=ShariencePb( - parent_id=document_view.id, - uploader_id=request_context.chat.chat_id, - updated_at=int(time.time()), - md5=hashlib.md5(file).hexdigest(), - filesize=document.size, - ipfs_multihashes=await self.get_ipfs_hashes(file=file), - )), - ), - ) - store_telegram_file_id_operation_pb = DocumentOperationPb( - store_telegram_file_id=StoreTelegramFileIdPb( - document_id=document_view.id, - telegram_file_id=uploaded_message.file.id, - bot_name=request_context.bot_name, - ), - ) - request_context.statbox( - action='success', - document_id=document_view.id, - schema='scimag', - ) - await asyncio.gather( - operation_log(update_document_operation_pb), - operation_log(store_telegram_file_id_operation_pb), - ) - return SubmitResponsePb() + return submitter_service_pb2.SubmitResponse() diff --git a/nexus/ingest/BUILD.bazel b/nexus/ingest/BUILD.bazel index 050b738..a90c356 100644 --- a/nexus/ingest/BUILD.bazel +++ b/nexus/ingest/BUILD.bazel @@ -22,6 +22,7 @@ py3_image( visibility = ["//visibility:public"], deps = [ requirement("aiokafka"), + requirement("aiosumma"), requirement("aiocrossref"), requirement("aiokit"), requirement("aiolibgen"), @@ -29,7 +30,6 @@ py3_image( "//library/configurator", "//library/jobber", "//nexus/actions", - "//summa:aiosumma", ], ) diff --git a/nexus/ingest/README.md b/nexus/ingest/README.md index 96565c9..8bb9308 100644 --- a/nexus/ingest/README.md +++ b/nexus/ingest/README.md @@ -13,30 +13,37 @@ jobs: class: nexus.ingest.jobs.CrossrefApiJob kwargs: actions: - - class: nexus.actions.crossref_api.CrossrefApiToThinScimagPbAction - - class: nexus.actions.scimag.ScimagPbToDocumentOperationBytesAction + - class: nexus.actions.postgres.ToScimagPbAction + - class: nexus.actions.scimag_pb.ToDocumentOperationBytesAction + kwargs: + full_text_index: true + should_fill_from_external_source: true base_url: https://api.crossref.org/ max_retries: 60 retry_delay: 10 sinks: - class: nexus.ingest.sinks.KafkaSink kwargs: - kafka_hosts: - - kafka-0.example.net - topic_name: operations_binary + kafka: + bootstrap_servers: + - kafka-0.example.net + topic_name: operations_binary libgen-api: class: nexus.ingest.jobs.LibgenApiJob kwargs: actions: - - class: nexus.actions.libgen_api.LibgenApiToScitechPbAction - - class: nexus.actions.scitech.ScitechPbToDocumentOperationBytesAction + - class: nexus.actions.libgen_api.ToScitechPbAction + - class: nexus.actions.scitech_pb.ToDocumentOperationBytesAction + kwargs: + full_text_index: true + should_fill_from_external_source: false base_url: libgen.example.net max_retries: 60 retry_delay: 10 sinks: - class: nexus.ingest.sinks.KafkaSink kwargs: - kafka_hosts: + bootstrap_servers: - kafka-0.example.net topic_name: operations_binary log_path: '/var/log/nexus-ingest/{{ ENV_TYPE }}' diff --git a/nexus/ingest/jobs/base.py b/nexus/ingest/jobs/base.py index f478175..3a010b2 100644 --- a/nexus/ingest/jobs/base.py +++ b/nexus/ingest/jobs/base.py @@ -29,8 +29,8 @@ class BaseJob(AioRootThing): real_actions.append(import_object(action['class'])(**action.get('kwargs', {}))) self.actions = real_actions - self.waits.extend(self.sinks) - self.waits.extend(self.actions) + self.starts.extend(self.sinks) + self.starts.extend(self.actions) async def iterator(self) -> AsyncIterable[Any]: raise NotImplementedError() diff --git a/nexus/ingest/jobs/crossref_api.py b/nexus/ingest/jobs/crossref_api.py index 305b0af..1950e89 100644 --- a/nexus/ingest/jobs/crossref_api.py +++ b/nexus/ingest/jobs/crossref_api.py @@ -1,3 +1,4 @@ +import logging from datetime import ( datetime, timedelta, @@ -28,13 +29,25 @@ class CrossrefApiJob(BaseJob): super().__init__(actions=actions, sinks=sinks) self.crossref_client = CrossrefClient(base_url=base_url, max_retries=max_retries, retry_delay=retry_delay) self.from_date = from_date or str(datetime.date(datetime.now()) - timedelta(days=1)) - self.waits.append(self.crossref_client) + self.starts.append(self.crossref_client) async def iterator(self) -> AsyncIterable[Any]: + logging.getLogger('statbox').info({ + 'action': 'start', + 'mode': 'ingest', + 'target_date': self.from_date, + }) + count = 0 async for chunk in self.crossref_client.works_cursor( filter=f'from-index-date:{self.from_date}', - rows=1000, - select='DOI', + rows=500, ): for item in chunk['items']: yield item + count += 1 + logging.getLogger('statbox').info({ + 'action': 'done', + 'mode': 'ingest', + 'items': count, + 'target_date': self.from_date, + }) \ No newline at end of file diff --git a/nexus/ingest/jobs/libgen_api.py b/nexus/ingest/jobs/libgen_api.py index 63707cd..51b6432 100644 --- a/nexus/ingest/jobs/libgen_api.py +++ b/nexus/ingest/jobs/libgen_api.py @@ -26,9 +26,14 @@ class LibgenApiJob(BaseJob): from_date: Optional[str] = None, ): super().__init__(sinks=sinks, actions=actions) - self.libgen_client = LibgenClient(base_url=base_url, max_retries=max_retries, retry_delay=retry_delay) + self.libgen_client = LibgenClient( + base_url=base_url, + max_retries=max_retries, + retry_delay=retry_delay, + proxy_url='socks5://127.0.0.1:9050', + ) self.from_date = from_date or str(datetime.date(datetime.now()) - timedelta(days=1)) - self.waits.append(self.libgen_client) + self.starts.append(self.libgen_client) async def iterator(self) -> AsyncIterable[Any]: async for item in self.libgen_client.newer(timenewer=f'{self.from_date} 00:00:00'): diff --git a/nexus/ingest/jobs/postgres.py b/nexus/ingest/jobs/postgres.py index f98d994..be3feae 100644 --- a/nexus/ingest/jobs/postgres.py +++ b/nexus/ingest/jobs/postgres.py @@ -5,14 +5,13 @@ from typing import ( ) import yaml -from grpc import StatusCode -from grpc.aio import AioRpcError +from aiosumma import SummaClient from izihawa_utils.random import generate_request_id from library.aiopostgres.pool_holder import AioPostgresPoolHolder from nexus.ingest.jobs.base import BaseJob from nexus.ingest.sinks.kafka import KafkaSink from psycopg.rows import dict_row -from summa.aiosumma.client import SummaClient +from summa.proto.utils_pb2 import Desc class PostgresJob(BaseJob): @@ -20,13 +19,15 @@ class PostgresJob(BaseJob): def __init__( self, + batch_size: int, database: dict, sql: str, summa: dict, actions: Iterable[dict], ): - kafka_sink = KafkaSink(kafka_hosts=summa['kafka_hosts'], topic_name=summa['name']) + kafka_sink = KafkaSink(kafka=summa['kafka'], topic_name=summa['name']) super().__init__(actions=actions, sinks=[kafka_sink]) + self.batch_size = batch_size self.sql = sql self.pool_holder = AioPostgresPoolHolder( conninfo=f'dbname={database["database"]} ' @@ -36,45 +37,66 @@ class PostgresJob(BaseJob): ) self.summa_client = SummaClient(endpoint=summa['endpoint']) self.summa_config = summa - self.waits.extend([self.pool_holder, self.summa_client]) + self.starts.extend([self.pool_holder, self.summa_client]) async def init_tables(self, session_id): - try: - await self.summa_client.delete_index(self.summa_config['name'], session_id=session_id, cascade=True) - except AioRpcError as e: - if e.code() != StatusCode.NOT_FOUND: - raise schema = yaml.dump(self.summa_config['index_config']['schema'], default_flow_style=False) + try: + await self.summa_client.delete_index(self.summa_config['name'], cascade=True) + except Exception: + pass await self.summa_client.create_index( self.summa_config['name'], schema=schema, - primary_key=self.summa_config['index_config']['key_field'], + compression='Zstd', + primary_key=self.summa_config['index_config']['primary_key'], default_fields=self.summa_config['index_config']['default_fields'], - writer_heap_size_bytes=1073741824, - writer_threads=4, + multi_fields=self.summa_config['index_config']['multi_fields'], + stop_words=self.summa_config['index_config']['stop_words'], + writer_heap_size_bytes=512 * 1024 * 1024, + writer_threads=1, autocommit_interval_ms=1800 * 1000, session_id=session_id, + sort_by_field=('issued_at', Desc) ) await self.summa_client.create_consumer( - f"{self.summa_config['name']}_consumer", - index_name=self.summa_config['name'], + index_alias=self.summa_config['name'], + consumer_name=f"{self.summa_config['name']}_consumer", topics=[self.summa_config['name']], - bootstrap_servers=self.summa_config['kafka_hosts'], + bootstrap_servers=self.summa_config['kafka']['bootstrap_servers'], group_id='summa', session_id=session_id, - threads=4, + threads=1, ) async def iterator(self) -> AsyncIterable[Any]: session_id = generate_request_id() await self.init_tables(session_id) - async for row in self.pool_holder.iterate( - self.sql, - row_factory=dict_row, - # Mandatory for server side cursor - cursor_name='nexus_ingest_cursor', - itersize=10_000, - ): - yield row + if self.batch_size: + loaded = True + current = 0 + while loaded: + loaded = False + sql = self.sql.format(left=current, right=current + self.batch_size) + async for row in self.pool_holder.iterate( + sql, + row_factory=dict_row, + # Mandatory for server side cursor + cursor_name='nexus_ingest_cursor', + itersize=50_000, + ): + loaded = True + yield row + current += self.batch_size + else: + async for row in self.pool_holder.iterate( + self.sql, + row_factory=dict_row, + # Mandatory for server side cursor + cursor_name='nexus_ingest_cursor', + itersize=50_000, + ): + yield row + await self.summa_client.commit_index(self.summa_config['name'], session_id=session_id) - await self.summa_client.set_index_alias(self.summa_config['alias'], self.summa_config['name'], session_id=session_id) + await self.summa_client.set_index_alias(self.summa_config['index_alias'], self.summa_config['name'], session_id=session_id) diff --git a/nexus/ingest/jobs/self_feed.py b/nexus/ingest/jobs/self_feed.py index 9dc8e29..69e3c04 100644 --- a/nexus/ingest/jobs/self_feed.py +++ b/nexus/ingest/jobs/self_feed.py @@ -6,6 +6,7 @@ from typing import ( from library.aiopostgres.pool_holder import AioPostgresPoolHolder from nexus.ingest.jobs.base import BaseJob +from psycopg.rows import dict_row class SelfFeedJob(BaseJob): @@ -26,8 +27,8 @@ class SelfFeedJob(BaseJob): f'password={database["password"]} ' f'host={database["host"]}', ) - self.waits.append(self.pool_holder) + self.starts.append(self.pool_holder) async def iterator(self) -> AsyncIterable[Any]: - async for row in self.pool_holder.iterate(self.sql): + async for row in self.pool_holder.iterate(self.sql, row_factory=dict_row): yield row diff --git a/nexus/ingest/sinks/kafka.py b/nexus/ingest/sinks/kafka.py index 80b987c..e7296a8 100644 --- a/nexus/ingest/sinks/kafka.py +++ b/nexus/ingest/sinks/kafka.py @@ -1,5 +1,4 @@ import asyncio -from typing import Iterable from aiokafka import AIOKafkaProducer @@ -7,13 +6,15 @@ from .base import BaseSink class KafkaSink(BaseSink): - def __init__(self, kafka_hosts: Iterable[str], topic_name: str): + def __init__(self, kafka, topic_name): super().__init__() + self.kafka = kafka + self.topic_name = topic_name self.producer = AIOKafkaProducer( loop=asyncio.get_event_loop(), - bootstrap_servers=kafka_hosts, + bootstrap_servers=kafka['bootstrap_servers'], + max_request_size=kafka['max_request_size'], ) - self.topic_name = topic_name self.starts.append(self.producer) async def send(self, data: bytes): diff --git a/nexus/meta_api/BUILD.bazel b/nexus/meta_api/BUILD.bazel index 7c5a3b2..6f2a18b 100644 --- a/nexus/meta_api/BUILD.bazel +++ b/nexus/meta_api/BUILD.bazel @@ -13,7 +13,9 @@ alias( DEPS = [ requirement("aiochclient"), requirement("aiohttp"), + requirement("aiosumma"), requirement("cachetools"), + requirement("en_core_web_sm"), requirement("grpcio"), requirement("lightgbm"), requirement("numpy"), @@ -21,15 +23,14 @@ DEPS = [ requirement("recordclass"), requirement("uvloop"), "//library/aiogrpctools", + requirement("aiokit"), "//library/aiopostgres", "//library/configurator", "//library/logging", "//nexus/meta_api/proto:grpc_py", - "//nexus/meta_api/query_extensions", "//nexus/models/proto:proto_py", - "//nexus/nlptools", "//nexus/views/telegram", - requirement("aiosumma"), + requirement("izihawa_nlptools"), ] py_layer( diff --git a/nexus/meta_api/aioclient/aioclient.py b/nexus/meta_api/aioclient/aioclient.py index 1e6b551..b7bc468 100644 --- a/nexus/meta_api/aioclient/aioclient.py +++ b/nexus/meta_api/aioclient/aioclient.py @@ -1,50 +1,47 @@ from typing import ( + Dict, List, Optional, Tuple, Union, ) -from aiogrpcclient import BaseGrpcClient -from nexus.meta_api.proto.documents_service_pb2 import \ - RollRequest as RollRequestPb -from nexus.meta_api.proto.documents_service_pb2 import \ - RollResponse as RollResponsePb -from nexus.meta_api.proto.documents_service_pb2 import \ - TopMissedRequest as TopMissedRequestPb -from nexus.meta_api.proto.documents_service_pb2 import \ - TopMissedResponse as TopMissedResponsePb -from nexus.meta_api.proto.documents_service_pb2 import \ - TypedDocumentRequest as TypedDocumentRequestPb -from nexus.meta_api.proto.documents_service_pb2_grpc import DocumentsStub -from nexus.meta_api.proto.search_service_pb2 import \ - SearchRequest as SearchRequestPb -from nexus.meta_api.proto.search_service_pb2 import \ - SearchResponse as SearchResponsePb -from nexus.meta_api.proto.search_service_pb2_grpc import SearchStub -from nexus.models.proto.typed_document_pb2 import \ - TypedDocument as TypedDocumentPb +from aiogrpcclient import ( + BaseGrpcClient, + expose, +) +from izihawa_utils.pb_to_json import ParseDict +from nexus.meta_api.proto import ( + documents_service_pb2, + documents_service_pb2_grpc, + search_service_pb2, + search_service_pb2_grpc, +) +from nexus.models.proto import typed_document_pb2 class MetaApiGrpcClient(BaseGrpcClient): stub_clses = { - 'documents': DocumentsStub, - 'search': SearchStub, + 'documents': documents_service_pb2_grpc.DocumentsStub, + 'search': search_service_pb2_grpc.SearchStub, } + @expose async def get( self, index_alias: str, document_id: int, + mode: str, user_id: str, position: Optional[int] = None, request_id: Optional[str] = None, session_id: Optional[str] = None, - ) -> TypedDocumentPb: + ) -> typed_document_pb2.TypedDocument: return await self.stubs['documents'].get( - TypedDocumentRequestPb( + documents_service_pb2.TypedDocumentRequest( index_alias=index_alias, document_id=document_id, + mode=mode, position=position, ), metadata=( @@ -54,24 +51,7 @@ class MetaApiGrpcClient(BaseGrpcClient): ), ) - async def roll( - self, - user_id: str, - language: Optional[str] = None, - request_id: Optional[str] = None, - session_id: Optional[str] = None, - ) -> RollResponsePb: - return await self.stubs['documents'].roll( - RollRequestPb( - language=language, - ), - metadata=( - ('request-id', request_id), - ('session-id', session_id), - ('user-id', user_id), - ), - ) - + @expose(with_from_file=True) async def search( self, index_aliases: Union[List[str], Tuple[str]], @@ -82,9 +62,9 @@ class MetaApiGrpcClient(BaseGrpcClient): language: Optional[str] = None, request_id: Optional[str] = None, session_id: Optional[str] = None, - ) -> SearchResponsePb: + ) -> search_service_pb2.SearchResponse: return await self.stubs['search'].search( - SearchRequestPb( + search_service_pb2.SearchRequest( index_aliases=index_aliases, query=query, page=page, @@ -98,18 +78,27 @@ class MetaApiGrpcClient(BaseGrpcClient): ), ) - async def top_missed( + @expose(with_from_file=True) + async def search( self, - page: int, - page_size: int, + index_aliases: Union[List[str], Tuple[str]], + query: str, user_id: str, + query_tags: Optional[List] = None, + page: Optional[int] = None, + page_size: Optional[int] = None, + language: Optional[str] = None, request_id: Optional[str] = None, session_id: Optional[str] = None, - ) -> TopMissedResponsePb: - return await self.stubs['documents'].top_missed( - TopMissedRequestPb( + ) -> search_service_pb2.SearchResponse: + return await self.stubs['search'].search( + search_service_pb2.SearchRequest( + index_aliases=index_aliases, + query=query, + query_tags=query_tags, page=page, page_size=page_size, + language=language, ), metadata=( ('request-id', request_id), @@ -117,3 +106,34 @@ class MetaApiGrpcClient(BaseGrpcClient): ('user-id', user_id), ), ) + + @expose(with_from_file=True) + async def meta_search( + self, + index_aliases: Union[List[str], Tuple[str]], + query: str, + collectors: List, + languages: Optional[Dict[str, float]] = None, + query_tags: Optional[List] = None, + user_id: Optional[str] = None, + request_id: Optional[str] = None, + session_id: Optional[str] = None, + skip_cache_loading: Optional[bool] = False, + skip_cache_saving: Optional[bool] = False, + ) -> search_service_pb2.MetaSearchResponse: + return await self.stubs['search'].meta_search( + ParseDict({ + 'index_aliases': index_aliases, + 'query': query, + 'languages': languages, + 'collectors': collectors, + 'query_tags': query_tags, + }, search_service_pb2.MetaSearchRequest()), + metadata=( + ('request-id', request_id), + ('session-id', session_id), + ('user-id', user_id), + ('skip-cache-loading', str(int(skip_cache_loading))), + ('skip-cache-saving', str(int(skip_cache_saving))), + ), + ) diff --git a/nexus/meta_api/cli.py b/nexus/meta_api/cli.py index b627246..9caec11 100644 --- a/nexus/meta_api/cli.py +++ b/nexus/meta_api/cli.py @@ -1,16 +1,11 @@ import fire -from aiokit.utils import sync_fu from nexus.meta_api.aioclient import MetaApiGrpcClient -async def search(endpoint, index_alias, query): +async def client(endpoint): client = MetaApiGrpcClient(endpoint) - try: - await client.start() - print(await client.search(index_aliases=(index_alias,), query=query, language='ru')) - finally: - await client.stop() + return client.get_interface() if __name__ == '__main__': - fire.Fire(sync_fu(search)) + fire.Fire(client) diff --git a/nexus/meta_api/configs/__init__.py b/nexus/meta_api/configs/__init__.py index 836e54c..0952810 100644 --- a/nexus/meta_api/configs/__init__.py +++ b/nexus/meta_api/configs/__init__.py @@ -5,7 +5,6 @@ from library.configurator import Configurator def get_config(): return Configurator([ 'nexus/meta_api/configs/base.yaml', - 'nexus/meta_api/configs/metrics.yaml?', 'nexus/meta_api/configs/%s.yaml?' % env.type, 'nexus/meta_api/configs/logging.yaml', ], env_prefix='NEXUS_META_API') diff --git a/nexus/meta_api/configs/base.yaml b/nexus/meta_api/configs/base.yaml index fb5f660..38f7f21 100644 --- a/nexus/meta_api/configs/base.yaml +++ b/nexus/meta_api/configs/base.yaml @@ -6,18 +6,14 @@ application: request_id_length: 12 session_id_length: 8 threads: 4 -data_provider: - enabled: false grpc: host: 0.0.0.0 port: 82 log_path: '/var/log/nexus-meta-api' -metrics: - enabled: false stat_provider: enabled: false summa: - endpoint: summa:82 connection_timeout: 5 + endpoint: summa:82 ttl_dns_cache: 10 use_dns_cache: true diff --git a/nexus/meta_api/configs/logging.yaml b/nexus/meta_api/configs/logging.yaml index 93cb3de..c3da722 100644 --- a/nexus/meta_api/configs/logging.yaml +++ b/nexus/meta_api/configs/logging.yaml @@ -12,9 +12,14 @@ logging: traceback: class: library.logging.formatters.TracebackFormatter handlers: + console: + class: logging.StreamHandler + level: WARNING + stream: 'ext://sys.stderr' debug: class: library.logging.handlers.BaseFileHandler filename: '{{ log_path }}/debug.log' + formatter: default level: DEBUG error: class: library.logging.handlers.BaseFileHandler @@ -40,7 +45,7 @@ logging: class: library.logging.handlers.BaseFileHandler filename: '{{ log_path }}/statbox.log' formatter: default - level: DEBUG + level: INFO traceback: class: library.logging.handlers.BaseFileHandler filename: '{{ log_path }}/traceback.log' @@ -71,6 +76,7 @@ logging: propagate: false error: handlers: + - console - error - traceback - warning @@ -79,10 +85,6 @@ logging: handlers: - learn propagate: false - metrics: - handlers: - - error - propagate: false operation: handlers: - operation @@ -98,9 +100,11 @@ logging: telethon: handlers: - error + - warning propagate: false root: handlers: + - console - debug level: DEBUG version: 1 diff --git a/nexus/meta_api/js/client/BUILD.bazel b/nexus/meta_api/js/client/BUILD.bazel deleted file mode 100644 index 1da4bfa..0000000 --- a/nexus/meta_api/js/client/BUILD.bazel +++ /dev/null @@ -1,11 +0,0 @@ -load("@build_bazel_rules_nodejs//:index.bzl", "js_library") - -js_library( - name = "client", - package_name = "nexus-meta-api-js-client", - srcs = glob(["*.js"]), - visibility = ["//visibility:public"], - deps = [ - "//nexus/meta_api/proto:grpc_web_js", - ], -) diff --git a/nexus/meta_api/js/client/index.js b/nexus/meta_api/js/client/index.js deleted file mode 100644 index 2c1c3f7..0000000 --- a/nexus/meta_api/js/client/index.js +++ /dev/null @@ -1,48 +0,0 @@ -import documentsProto from 'meta-api-grpc-web-js/meta-api-grpc-web-js_pb/nexus/meta_api/proto/documents_service_grpc_web_pb' -import searchProto from 'meta-api-grpc-web-js/meta-api-grpc-web-js_pb/nexus/meta_api/proto/search_service_grpc_web_pb' - -export default class MetaApi { - constructor (url, hostname) { - this.metadata = {} - if (hostname) { - this.metadata['X-Forwarded-Host'] = hostname - } - this.documentsClient = new documentsProto.DocumentsPromiseClient(url) - this.searchClient = new searchProto.SearchPromiseClient(url) - } - - generateId (length) { - const result = [] - const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' - const charactersLength = characters.length - for (let i = 0; i < length; i++) { - result.push(characters.charAt(Math.floor(Math.random() * charactersLength))) - } - return result.join('') - } - - prepareMetadata () { - return Object.assign({ - 'request-id': this.generateId(12), - 'session-id': this.generateId(8) - }, this.metadata) - } - - async get (indexName, documentId) { - const request = new documentsProto.TypedDocumentRequest() - request.setIndexName(indexName) - request.setDocumentId(documentId) - const response = await this.documentsClient.get(request, this.prepareMetadata()) - return response.toObject() - } - - async search (names, query, page, pageSize = 5) { - const request = new searchProto.SearchRequest() - request.setPage(page) - request.setPageSize(pageSize) - names.forEach((name) => request.addNames(name)) - request.setQuery(query) - const response = await this.searchClient.search(request, this.prepareMetadata()) - return response.toObject() - } -} diff --git a/nexus/meta_api/main.py b/nexus/meta_api/main.py index a9ad30d..a40f28f 100644 --- a/nexus/meta_api/main.py +++ b/nexus/meta_api/main.py @@ -2,15 +2,105 @@ import asyncio import logging import uvloop +from aiosumma import ( + QueryProcessor, + SummaClient, +) +from aiosumma.parser.elements import ( + Range, + SearchField, +) +from aiosumma.text_transformers import ( + CleanTextTransformer, + DespaceTextTransformer, + LowerTextTransformer, + UnmatchedParenthesesTextTransformer, +) +from aiosumma.tree_transformers import ( + DoiTreeTransformer, + DoiWildcardWordTreeTransformer, + ExactMatchTreeTransformer, + FieldTreeTransformer, + MorphyTreeTransformer, + OptimizingTreeTransformer, + OrderByTreeTransformer, + SynonymTreeTransformer, + TantivyTreeTransformer, + ValuesWordTreeTransformer, +) from library.aiogrpctools import AioGrpcServer -from library.configurator import Configurator from library.logging import configure_logging from nexus.meta_api.configs import get_config -from nexus.meta_api.providers.data import DataProvider from nexus.meta_api.providers.stat import StatProvider from nexus.meta_api.services.documents import DocumentsService from nexus.meta_api.services.search import SearchService -from summa.aiosumma import SummaClient +from nexus.meta_api.word_transformers import ( + EditionWordTransformer, + IsbnWordTransformer, + LanguageWordTransformer, + YearWordTransformer, + explain_word_transformer, + scimag_word_transformer, + scitech_word_transformer, +) + + +def create_query_transformer(valid_fields, invalid_fields): + return QueryProcessor( + tree_transformers=[ + OrderByTreeTransformer( + field_aliases={ + 'date': 'issued_at', + 'page': 'pages', + 'pr': 'page_rank', + 'refc': 'referenced_by_count', + }, + valid_fields=frozenset([ + 'id', + 'referenced_by_count', + 'issued_at', + 'page_rank', + 'pages', + 'updated_at' + ]) + ), + FieldTreeTransformer( + field_aliases={ + 'author': 'authors', + 'body': 'content', + 'date': 'issued_at', + 'ipfs': 'ipfs_multihashes', + 'isbn': 'isbns', + 'issn': 'issns', + 'format': 'extension', + 'journal': 'container_title', + 'lang': 'language', + 'page': 'pages', + 'pr': 'page_rank', + 'refc': 'referenced_by_count', + 'refs': 'references', + }, + valid_fields=frozenset(valid_fields), + invalid_fields=frozenset(invalid_fields), + ), + ValuesWordTreeTransformer( + word_transformers=[ + YearWordTransformer(), + EditionWordTransformer(), + LanguageWordTransformer(), + DoiWildcardWordTreeTransformer(), + IsbnWordTransformer(), + ], + ignore_nodes=(Range, SearchField), + ), + DoiTreeTransformer(score='3.0'), + ExactMatchTreeTransformer('title'), + MorphyTreeTransformer(ignore_nodes=(SearchField,)), + SynonymTreeTransformer.drugs(), + TantivyTreeTransformer(), + OptimizingTreeTransformer(), + ] + ) class GrpcServer(AioGrpcServer): @@ -19,48 +109,92 @@ class GrpcServer(AioGrpcServer): super().__init__(address=config['grpc']['host'], port=config['grpc']['port']) self.config = config + self.stat_provider = StatProvider(stat_provider_config=self.config['stat_provider']) + + self.query_preprocessor = QueryProcessor( + text_transformers=[ + DespaceTextTransformer(), + LowerTextTransformer(), + CleanTextTransformer(), + UnmatchedParenthesesTextTransformer(), + ], + tree_transformers=[ + ValuesWordTreeTransformer( + word_transformers=[ + explain_word_transformer, + scimag_word_transformer, + scitech_word_transformer, + ], + ignore_nodes=(Range, SearchField), + ) + ], + ) + + scimag_fields = { + 'id', 'abstract', 'authors', 'container_title', 'content', + 'doi', 'ipfs_multihashes', 'issns', 'isbns', 'issued_at', 'language', 'original_id', + 'page_rank', 'referenced_by_count', 'references', 'tags', 'title', 'year', + } + scitech_fields = { + 'id', 'authors', 'doi', 'description', 'extension', + 'ipfs_multihashes', 'isbns', 'issued_at', 'language', 'original_id', 'pages', + 'tags', 'title', 'updated_at', 'year', + } + + self.query_transformers = { + 'scimag': create_query_transformer( + valid_fields=scimag_fields, + invalid_fields=scitech_fields.difference(scimag_fields), + ), + 'scitech': create_query_transformer( + valid_fields=scitech_fields, + invalid_fields=scimag_fields.difference(scitech_fields), + ) + } self.summa_client = SummaClient( endpoint=config['summa']['endpoint'], connection_timeout=config['summa']['connection_timeout'], ) - self.data_provider = DataProvider(data_provider_config=self.config['data_provider']) - self.stat_provider = StatProvider(stat_provider_config=self.config['stat_provider']) learn_logger = logging.getLogger('learn') if self.config['application']['learn_log'] else None self.search_service = SearchService( - server=self.server, + application=self, + query_preprocessor=self.query_preprocessor, + query_transformers=self.query_transformers, summa_client=self.summa_client, stat_provider=self.stat_provider, learn_logger=learn_logger, ) self.documents_service = DocumentsService( - server=self.server, + application=self, + query_preprocessor=self.query_preprocessor, + query_transformers=self.query_transformers, summa_client=self.summa_client, - data_provider=self.data_provider, stat_provider=self.stat_provider, learn_logger=learn_logger, ) - self.waits.extend([self.summa_client, self.data_provider, self.stat_provider, - self.search_service, self.documents_service]) - - -async def create_app(config: Configurator): - try: - await GrpcServer(config).start_and_wait() - except asyncio.CancelledError: - pass + self.starts.extend([ + self.summa_client, + self.stat_provider, + self.search_service, + self.documents_service, + ]) def main(): config = get_config() configure_logging(config) - if config['metrics']['enabled']: - from library.metrics_server import MetricsServer - MetricsServer(config['metrics']).fork_process() - asyncio.set_event_loop(uvloop.new_event_loop()) - asyncio.get_event_loop().run_until_complete(create_app(config)) + loop = uvloop.new_event_loop() + asyncio.set_event_loop(loop) + grpc_server = GrpcServer(config) + return loop.run_until_complete(grpc_server.start_and_wait()) if __name__ == '__main__': - main() + result = main() + logging.getLogger('debug').debug({ + 'action': 'exit', + 'mode': 'main', + 'result': str(result) + }) diff --git a/nexus/meta_api/mergers/__init__.py b/nexus/meta_api/mergers/__init__.py new file mode 100644 index 0000000..c4a42e5 --- /dev/null +++ b/nexus/meta_api/mergers/__init__.py @@ -0,0 +1,6 @@ +from .aggregation import AggregationMerger +from .count import CountMerger +from .reservoir_sampling import ReservoirSamplingMerger +from .top_docs import TopDocsMerger + +__all__ = ['AggregationMerger', 'CountMerger', 'TopDocsMerger', 'ReservoirSamplingMerger'] diff --git a/nexus/meta_api/mergers/aggregation.py b/nexus/meta_api/mergers/aggregation.py new file mode 100644 index 0000000..cb3a9bb --- /dev/null +++ b/nexus/meta_api/mergers/aggregation.py @@ -0,0 +1,13 @@ +from typing import List + +from summa.proto import search_service_pb2 + + +class AggregationMerger: + def __init__(self, aggregation_collectors: List[search_service_pb2.AggregationCollectorOutput]): + self.aggregation_collectors = aggregation_collectors + + def merge(self) -> search_service_pb2.CollectorOutput: + return search_service_pb2.CollectorOutput( + aggregation=self.aggregation_collectors[0] + ) diff --git a/nexus/meta_api/mergers/count.py b/nexus/meta_api/mergers/count.py new file mode 100644 index 0000000..12d84d0 --- /dev/null +++ b/nexus/meta_api/mergers/count.py @@ -0,0 +1,16 @@ +from typing import List + +from summa.proto import search_service_pb2 + + +class CountMerger: + def __init__(self, count_collectors: List[search_service_pb2.CountCollectorOutput]): + self.count_collectors = count_collectors + + def merge(self) -> search_service_pb2.CollectorOutput: + return search_service_pb2.CollectorOutput( + count=search_service_pb2.CountCollectorOutput( + count=sum([count_collector.count for count_collector in self.count_collectors]) + ) + ) + diff --git a/nexus/meta_api/mergers/reservoir_sampling.py b/nexus/meta_api/mergers/reservoir_sampling.py new file mode 100644 index 0000000..943d491 --- /dev/null +++ b/nexus/meta_api/mergers/reservoir_sampling.py @@ -0,0 +1,21 @@ +import random +import sys +from typing import List + +from summa.proto import search_service_pb2 + + +class ReservoirSamplingMerger: + def __init__(self, reservoir_sampling_collectors: List[search_service_pb2.ReservoirSamplingCollectorOutput]): + self.reservoir_sampling_collectors = reservoir_sampling_collectors + + def merge(self) -> search_service_pb2.ReservoirSamplingCollectorOutput: + random_documents = [] + for reservoir_sampling_collector in self.reservoir_sampling_collectors: + random_documents += reservoir_sampling_collector.random_documents + random.shuffle(random_documents) + return search_service_pb2.CollectorOutput( + reservoir_sampling=search_service_pb2.ReservoirSamplingCollectorOutput( + random_documents=random_documents + ) + ) diff --git a/nexus/meta_api/mergers/top_docs.py b/nexus/meta_api/mergers/top_docs.py new file mode 100644 index 0000000..2706d33 --- /dev/null +++ b/nexus/meta_api/mergers/top_docs.py @@ -0,0 +1,67 @@ +import heapq +from typing import List + +from summa.proto import search_service_pb2 + + +class TopDocsIterator: + def __init__(self, top_docs_collector: search_service_pb2.TopDocsCollectorOutput): + self.top_docs_collector = top_docs_collector + self._current = 0 + + def __lt__(self, other: 'TopDocsIterator'): + self_score = self.current().score + other_score = other.current().score + self_score = getattr(self_score, self_score.WhichOneof('score')) + other_score = getattr(other_score, other_score.WhichOneof('score')) + return self_score > other_score + + def __iter__(self): + return self + + def __next__(self) -> search_service_pb2.ScoredDocument: + if self.has_any(): + item = self.current() + self._current += 1 + return item + raise StopIteration + + def current(self): + return self.top_docs_collector.scored_documents[self._current] + + def has_next(self) -> bool: + return self.top_docs_collector.has_next + + def has_any(self) -> bool: + return self._current < len(self.top_docs_collector.scored_documents) + + +class TopDocsMerger: + def __init__(self, top_docs_collectors: List[search_service_pb2.TopDocsCollectorOutput]): + self.top_docs_heap = [] + for top_docs_collector in top_docs_collectors: + top_docs_iterator = TopDocsIterator(top_docs_collector) + if top_docs_iterator.has_any(): + self.top_docs_heap.append(top_docs_iterator) + heapq.heapify(self.top_docs_heap) + + def merge(self) -> search_service_pb2.CollectorOutput: + scored_documents = [] + has_next = any([top_docs_iterator for top_docs_iterator in self.top_docs_heap]) + + position = 0 + while self.top_docs_heap: + largest_top_docs_iterator = heapq.heappop(self.top_docs_heap) + largest_item = next(largest_top_docs_iterator) + largest_item.position = position + scored_documents.append(largest_item) + position += 1 + if largest_top_docs_iterator.has_any(): + heapq.heappush(self.top_docs_heap, largest_top_docs_iterator) + + return search_service_pb2.CollectorOutput( + top_docs=search_service_pb2.TopDocsCollectorOutput( + has_next=has_next, + scored_documents=scored_documents, + ) + ) diff --git a/nexus/meta_api/models/classic.txt b/nexus/meta_api/models/classic.txt deleted file mode 100644 index 7f41af4..0000000 --- a/nexus/meta_api/models/classic.txt +++ /dev/null @@ -1,1760 +0,0 @@ -tree -version=v3 -num_class=1 -num_tree_per_iteration=1 -label_index=0 -max_feature_idx=12 -objective=lambdarank -feature_names=Column_0 Column_1 Column_2 Column_3 Column_4 Column_5 Column_6 Column_7 Column_8 Column_9 Column_10 Column_11 Column_12 -feature_infos=[-8.5666110465730601:503.83307000000002] [1:2] [-115719580800:61125494400] [0:587] [0:7216] [0:1] [0:1] [0:257] [0:17] [1:1024] [0:17] [0:3] [0:2] -tree_sizes=3510 3518 3512 3512 3550 3527 3524 3531 3534 3538 3533 3542 3543 3537 3548 3539 3538 3547 3546 3535 3551 3559 3539 3533 3550 3544 3545 3528 3545 3555 3539 3553 3551 3536 3538 3542 3542 3553 3539 3546 3549 3550 3549 3550 3540 3550 3534 3543 3558 3557 3547 3548 3523 3544 3538 3542 3541 3524 3506 3524 3562 3541 3531 3546 3555 3532 3550 3540 3527 3516 3533 3536 3554 3536 3538 3535 3553 3523 3515 3541 3550 3559 3542 3550 3517 3533 3497 3536 3516 3508 - -Tree=0 -num_leaves=31 -num_cat=0 -split_feature=1 8 11 7 0 12 11 10 7 6 11 0 2 12 7 2 0 0 0 11 2 8 4 3 8 0 11 2 4 12 -split_gain=44707.9 12315.2 3862.22 5112.42 1991.96 1684.84 898.039 855.163 535.862 413.493 379.851 646.923 376.153 327.292 297.819 289.769 280.259 251.789 196.433 167.181 128.254 125.285 123.492 97.972 91.5784 84.6041 79.4613 76.9616 72.3464 74.0098 -threshold=1.5000000000000002 3.5000000000000004 0.34313725490196084 1.0000000180025095e-35 30.880862000000004 0.21980676328502416 0.18898809523809526 4.5000000000000009 2.5000000000000004 1.0000000180025095e-35 0.51666666666666672 24.035689000000001 189345600.00000003 0.43650793650793657 6.5000000000000009 216043200.00000003 37.701621500000009 33.642312000000004 26.127514000000005 0.24068965517241384 153316800.00000003 7.5000000000000009 4.5000000000000009 1.0000000180025095e-35 4.5000000000000009 43.939336500000003 0.24068965517241384 315144000.00000006 1.5000000000000002 0.46410256410256417 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 5 3 9 8 17 14 24 15 27 11 12 -4 16 -6 -5 -7 23 -17 -19 26 -9 -15 -1 28 -21 -10 -2 -3 -30 -right_child=2 7 10 4 6 13 -8 21 20 -11 -12 -13 -14 22 -16 18 -18 19 -20 25 -22 -23 -24 -25 -26 -27 -28 -29 29 -31 -leaf_value=-0.2274937302934858 0.1118382078662199 -0.025921162033357655 0.14972224031273024 0.086736463656595708 0.12186214875254504 -0.18219168131579974 0.18028981744304431 0.13974486131202679 -0.15221325705478431 0.23807601178851934 0.23259398527438968 0.21060347453329503 -0.089400074829792148 -0.070885082722041443 -0.123708028782279 -0.16007388985361157 -0.072228824670056938 -0.21197457700615938 0.12903649165529726 -0.16692545282821764 -0.21160460871448286 0.21820766354507332 0.057540223763106496 -0.13228611513612737 0.084431592704786895 -0.093099842278928618 0.012674083103098623 -0.044437029886033673 -0.088531874883678557 0.14456249806630225 -leaf_weight=7096.7487530381695 121.58636014187141 390.06699677743018 189.00813293276588 186.23506322478352 96.661857770741335 939.97287162258363 594.07649903796846 464.25386266499117 142.3424870345043 1775.1284394819595 6275.5819181182887 1154.955603962655 189.85499169850664 1018.848712812327 268.84739652089775 203.47615957513335 517.5925173653377 1117.4162464804394 40.568101734330412 794.39967936337052 724.75510516639042 795.79307004620205 120.55789764776273 159.27565907576354 272.9676862447086 311.25265652008238 59.742715272383066 72.369447509474412 26.114172565139597 78.578568838362116 -leaf_count=3170933 52511 30801 143579 224221 53287 263664 149604 9504 126967 18094 442469 261492 524935 148023 117584 605160 30268 168354 44697 79126 972537 2297 10172 34369 10200 16591 66320 75667 3700 2404 -internal_value=0 -0.145167 0.169275 0.0777392 -0.043091 -0.191116 0.0892359 0.128475 -0.136656 0.219899 0.219509 0.165969 0.0298962 -0.10548 -0.0587604 -0.0259846 -0.143145 -0.214578 -0.112004 -0.179237 -0.188032 0.189303 -0.0572955 -0.225404 0.0286381 -0.146146 -0.103473 0.0535304 -0.00214739 0.0864116 -internal_weight=0 14103.8 12095.2 4285.79 2316.71 12076.1 959.586 2027.77 1357.12 1969.08 7809.4 1533.82 378.863 2596.97 365.509 430.279 1457.57 9479.09 244.044 2223.07 926.84 1260.05 1139.41 7256.02 767.727 1105.65 202.085 193.956 494.76 104.693 -internal_count=7859530 3980406 3879124 2506649 2360377 3921500 320475 58906 2039902 146272 1372475 930006 668514 452127 170871 874078 293932 3469373 649857 264071 1165824 11801 158195 3205302 47105 95717 193287 128178 36905 6104 -shrinkage=0.12 - - -Tree=1 -num_leaves=31 -num_cat=0 -split_feature=3 12 7 0 3 0 0 0 7 12 11 6 11 0 0 7 11 0 2 1 0 0 7 7 12 0 11 6 2 2 -split_gain=38047.4 21416.2 8436.69 8011.82 6159.91 5956.19 4592.04 3756.33 1924.38 4385.1 1908.47 1726.65 1589.07 1503.47 1136.99 1252.59 998.567 702.655 628.994 649.125 607.926 595.385 594.308 575.382 975.313 503.822 502.031 469.186 457.235 431.587 -threshold=1.0000000180025095e-35 0.43650793650793657 1.0000000180025095e-35 35.053196000000007 4.5000000000000009 22.795642500000003 30.077133500000006 23.223223000000001 1.0000000180025095e-35 0.40833333333333338 0.2752525252525253 1.0000000180025095e-35 0.82575757575757591 38.267659000000002 28.355377000000004 2.5000000000000004 0.82575757575757591 46.836120500000007 63892800.000000007 1.5000000000000002 45.25187300000001 21.515842500000002 2.5000000000000004 1.0000000180025095e-35 0.43650793650793657 28.355377000000004 0.78888888888888908 1.0000000180025095e-35 63201600.000000007 347371200.00000006 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 5 14 7 28 16 12 27 13 -5 29 -2 22 18 -16 -3 -8 19 -4 -12 26 25 -23 -25 -10 -6 -9 -1 -7 -right_child=4 6 3 10 21 11 17 8 9 -11 20 -13 -14 -15 15 -17 -18 -19 -20 -21 -22 23 -24 24 -26 -27 -28 -29 -30 -31 -leaf_value=0.040985929373495031 -0.12083398763546463 -0.11505530640911858 -0.19086370627979615 -0.10306460220505854 -0.01864346575709749 0.080538821593413676 0.091991818923339949 0.093556687231399441 -0.092439416389612339 0.13136439739798528 -0.0035593440541226281 0.21291216143216427 0.053026799205209342 0.072207383838174599 -0.039332971934029813 -0.16381324890449389 0.0095188549546858046 0.16428504380928802 -0.19211706821948227 -0.060094742136109179 0.094508305857402941 0.21226392945131631 -0.11769630978361487 0.091549688603238547 0.17572791757175302 0.036833405955821005 0.14792845705306418 0.21869617459113458 -0.11596333012310242 -0.07578529129306702 -leaf_weight=296.53384848252608 2173.0804308796505 1303.1526287957531 1063.9548815733215 2247.8528510682809 469.20999279989337 666.35601240235701 4150.5227100433403 590.85760818631388 749.47750186992198 6023.9766124599337 2217.8344449146389 1801.2801281953143 1161.6672427780577 1712.1475508258736 1786.7201331897013 3340.2207694367316 3206.3138268269831 3628.8409352825838 16656.154008991667 1124.2121757573768 1543.8782966555736 3158.2952285067877 1638.7111724903953 2685.3791142870468 7568.3352529148106 1031.7290578271422 585.84192936238833 1599.6914868383901 2709.1220633993216 411.25128232211864 -leaf_count=46796 319918 47113 449576 282656 37122 53399 97802 10645 53554 36026 138429 9006 24548 44590 193692 521789 135525 16784 4436175 101879 37857 5779 152207 62425 21531 33276 3699 2274 448519 34939 -internal_value=0 -0.0668499 -0.113694 -0.139479 0.103347 0.0176758 0.0698656 0.0536507 0.0821145 0.061923 -0.0155849 0.141033 -0.0602692 -0.0195871 -0.170539 -0.120433 -0.0264813 0.125715 -0.184171 -0.12368 0.0366899 0.16065 -0.0655433 0.167478 0.153683 -0.0175613 0.073851 0.184944 -0.100479 0.0208798 -internal_weight=0 48154.2 35865.4 29980.8 31148.4 5884.54 12288.8 16681.3 13346.6 11156 6009.57 2878.89 3334.75 5132.07 23971.3 5126.94 4509.47 7779.36 18844.3 2188.17 3761.71 14467.1 3419.92 13412 10253.7 1781.21 1055.05 2190.55 3005.66 1077.61 -internal_count=7859530 7051936 6754712 6162053 807594 592659 297224 677038 332572 319653 458942 97344 344466 283627 5703111 715481 182638 114586 4987630 551455 176286 130556 239037 89735 83956 86830 40821 12919 495315 88338 -shrinkage=0.12 - - -Tree=2 -num_leaves=31 -num_cat=0 -split_feature=12 7 0 0 11 6 3 0 1 2 0 0 11 1 11 2 1 1 2 7 0 11 2 1 0 11 2 11 2 7 -split_gain=31419.9 18735.3 10218.9 6033.9 3752.34 1725.34 1696.27 1631.91 1144 1024.91 763.942 753.349 654.826 644.868 617.86 663.704 620.753 579.625 511.802 492.933 462.747 434.635 427.321 393.794 342.107 320.518 310.099 308.274 301.938 233.781 -threshold=0.35504201680672276 1.0000000180025095e-35 29.087282000000002 21.669163500000003 0.28991596638655465 1.0000000180025095e-35 2.5000000000000004 39.539316000000007 1.5000000000000002 249480000.00000003 46.836120500000007 40.27922800000001 0.4188596491228071 1.5000000000000002 0.4188596491228071 63892800.000000007 1.5000000000000002 1.5000000000000002 94392000.000000015 3.5000000000000004 25.452091500000005 0.76388888888888895 284040000.00000006 1.5000000000000002 28.072161000000005 0.15075757575757578 347112000.00000006 0.88194444444444453 252763200.00000003 3.5000000000000004 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 6 17 10 23 14 8 24 27 19 13 -8 -6 -3 16 -16 -1 -19 -4 -17 -11 -15 -5 -2 -12 -25 -10 -9 -13 -right_child=7 2 4 5 11 -7 12 28 9 21 25 29 -14 22 15 20 -18 18 -20 -21 -22 -23 -24 26 -26 -27 -28 -29 -30 -31 -leaf_value=-0.14320927090608193 -0.072091058887277584 -0.16957548971600384 -0.039181310920053773 -0.11649340622121562 -0.087962844131142012 0.18096592552381058 -0.11687993459149576 0.15349516131628946 0.07554857696702337 -0.0004589829580780309 -0.09123586966091296 0.11140391656458243 0.042870622002823926 0.065585887985825833 -0.16365765302354005 -0.15880503508817079 0.027435070775036759 0.093117447922713412 -0.050458035693942131 -0.13722946369475933 -0.071445828592650668 0.07445146719886836 -0.01326622162617134 0.097282096801208098 0.032495616952632117 0.04479945404147094 -0.011043860133798777 0.14610229607454098 0.11615460236024867 0.04360739558802789 -leaf_weight=789.17348965875863 785.17924647394102 15016.773781782671 948.54051859193714 182.32358292493154 835.04237600088527 5124.3871840444044 640.01101943215326 6508.0698572492693 1149.3367794610385 1378.5058399908157 384.96755231490533 1822.916708288074 874.07917573541636 2079.33122596264 376.59956361563673 4606.1790542205345 699.27645522163948 434.78448408975964 2011.2969106509408 3332.7790390473892 1077.4662972562073 5841.9408727447153 1888.4848286401248 1407.5980872867221 1056.1200257237069 708.15074800420552 521.51955960009946 3981.2306509983027 5988.2886931000103 1224.4104147370235 -leaf_count=265760 116437 3800182 121603 78650 204658 17573 85232 31755 17208 37036 55421 43856 33632 68478 146916 1308626 34577 13343 224425 518969 179720 77929 105088 25741 82715 35223 27771 24141 37961 38904 -internal_value=0 -0.0590613 -0.0996389 0.0824419 -0.0153939 0.143353 -0.147474 0.103979 0.0761346 0.0892892 -0.0926464 0.0374953 -0.0246575 0.00788441 -0.156014 -0.125885 -0.0394577 -0.0537882 -0.024937 -0.115507 -0.142245 0.0601498 0.0280564 0.0520652 -0.0121034 -0.0031098 0.0679974 0.130298 0.135602 0.0841641 -internal_weight=0 46986.1 36515 10471.1 13224.6 7235.83 23290.4 26688.7 14192.3 12351 5374.44 7850.19 1514.09 4802.86 21776.3 6759.52 1075.88 3235.25 2446.08 4281.32 5683.65 7220.45 3967.82 2111.44 1841.3 1093.12 1929.12 5130.57 12496.4 3047.33 -internal_count=7859530 7434348 6781085 653263 1192200 149735 5588885 425182 355466 156314 731216 460984 118864 378224 5470021 1669839 181493 503528 237768 640572 1488346 114965 173566 132162 199152 90644 53512 41349 69716 82760 -shrinkage=0.12 - - -Tree=3 -num_leaves=31 -num_cat=0 -split_feature=12 7 0 0 0 7 6 3 0 3 12 11 1 3 1 1 2 2 1 11 1 0 0 1 7 2 7 1 2 0 -split_gain=25841.7 16426.7 6406.11 4723.15 2188.82 1963.5 1412.22 1382.56 1104.84 985.417 854.523 811.364 626.452 540.098 507.873 445.82 421.531 419.336 702.726 402.365 379.949 329.856 296.923 270.36 266.836 239.082 214.168 214.057 224.539 213.88 -threshold=0.30384615384615393 1.0000000180025095e-35 29.394558500000006 20.684114500000003 28.355377000000004 3.5000000000000004 1.0000000180025095e-35 1.0000000180025095e-35 43.939336500000003 1.5000000000000002 0.60769230769230786 0.70714285714285718 1.5000000000000002 1.0000000180025095e-35 1.5000000000000002 1.5000000000000002 157896000.00000003 63892800.000000007 1.5000000000000002 0.1408730158730159 1.5000000000000002 63.388565000000007 35.82988550000001 1.5000000000000002 1.5000000000000002 252417600.00000003 1.5000000000000002 1.5000000000000002 59054400.000000007 55.906434000000004 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 9 13 7 12 15 11 -7 17 14 -2 -4 27 21 -5 24 18 -3 -10 -13 -6 -14 -8 -11 -16 -20 -1 -29 -21 -right_child=4 2 5 6 10 8 23 -9 19 16 -12 20 22 -15 25 -17 -18 -19 26 29 -22 -23 -24 -25 -26 -27 -28 28 -30 -31 -leaf_value=-0.13825761497657585 -0.099849709475641174 -0.16173792070663182 -0.068179685616512761 -0.12095393297374317 -0.0069615761752684392 -0.1115681448157148 -0.10324898218244892 0.084086862105599749 -0.10577153525040682 0.065441673019399335 0.12780648523382546 -0.063964228199294926 0.01500904737835263 0.037024334256410149 0.11128087495649008 0.065453962551974804 -0.11663705445591525 -0.15512688253825213 0.0087499149510147835 -0.010195627018708945 0.041573227303612778 0.14205892958960994 0.079550861720927318 0.16676778666289871 -0.06499135520492795 0.07190978156726463 -0.088151318507495274 0.08775700007806489 -0.073154824327400531 0.080991662358518235 -leaf_weight=712.67053942117491 1214.2553186160658 1475.9816960695607 794.97305443894584 202.93616651021875 1310.5888172820123 3807.0205411768111 53.986559803335695 3655.0475899399316 408.17408716573846 473.6445844382979 11466.211863098812 635.50178245615098 1996.4153082372504 697.10769321370753 4414.6390841838438 2059.2200776076061 791.59811108571012 16854.237566445197 638.375530989666 874.09649465097755 2163.2166135365842 255.57805047841975 2112.5453334706835 4747.3904909509001 431.66540386585984 4470.4110703208717 676.45460567928967 137.5709023923846 1350.7616805781727 642.72188599329093 -leaf_count=243447 183099 460376 177187 97148 129769 574256 10695 43161 65453 17529 58869 96050 113262 36592 35673 64352 130266 4686563 36822 51379 52483 1542 58093 9754 48758 81085 86377 3163 188112 18215 -internal_value=0 -0.0605815 -0.102498 0.0739745 0.0858787 -0.0264158 0.126901 0.0306962 -0.0741056 -0.140414 0.105185 -0.0179328 0.0293271 -0.0550238 0.0803659 0.0487301 -0.0526782 -0.147992 -0.104905 -1.61541e-05 0.0176085 0.0173589 0.0481924 0.163731 0.00324915 0.0914721 -0.0411048 -0.0841776 -0.0582798 0.028444 -internal_weight=0 41939.5 31977.9 9961.64 29585.5 10635.9 7063.53 7668.02 5732.01 21342 21917.4 4012.97 4903.93 2898.11 10451.2 2262.16 1696.91 19645 2790.81 1924.99 2798.72 1566.17 4108.96 4801.38 905.31 8885.05 1314.83 2201 1488.33 1516.82 -internal_count=7859530 7177799 6524536 653263 681731 1057845 181949 374793 709303 5466691 306938 331632 348542 471314 248069 161500 196553 5270138 583575 135047 148533 131311 171355 20449 66287 116758 123199 434722 191275 69594 -shrinkage=0.12 - - -Tree=4 -num_leaves=31 -num_cat=0 -split_feature=12 7 0 0 0 11 3 3 6 11 11 3 3 3 0 1 1 1 0 11 0 1 7 0 1 2 2 0 7 2 -split_gain=20724.8 13307.5 5502.53 3724.27 1810.49 1551.5 1454.68 1183.36 1123.54 844.1 598.849 571.047 500.188 351.087 344.693 320.245 305.005 297.679 273.69 265.76 257.013 253.399 251.765 242.122 242.094 536.868 240.655 211.127 256.079 194.694 -threshold=0.28991596638655465 1.0000000180025095e-35 30.880862000000004 23.117341500000006 33.642312000000004 0.23303167420814483 1.0000000180025095e-35 1.0000000180025095e-35 1.0000000180025095e-35 0.78888888888888908 0.36931818181818188 1.0000000180025095e-35 1.0000000180025095e-35 1.0000000180025095e-35 55.906434000000004 1.5000000000000002 1.5000000000000002 1.5000000000000002 38.267659000000002 0.96666666666666679 25.784979000000003 1.5000000000000002 2.5000000000000004 22.741666500000004 1.5000000000000002 93960000.000000015 315316800.00000006 25.866490500000001 1.5000000000000002 157896000.00000003 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 7 11 6 17 9 24 -5 21 -9 16 18 14 -6 -11 -1 -4 22 -8 29 -2 -7 -23 -3 -26 -18 -27 -29 -12 -right_child=4 2 5 8 13 12 19 10 -10 15 20 -13 -14 -15 -16 -17 26 -19 -20 -21 -22 23 -24 -25 25 27 -28 28 -30 -31 -leaf_value=-0.12926268388299422 -0.11269924259016413 -0.15477609461745218 -0.13323432323487092 0.04217544967880768 0.06398972953491526 0.010735845968267309 0.041745363750637032 -0.10740396029483094 0.15576889065559368 -0.02520856618239975 0.0026094224458770424 0.043372990616356848 0.063594866778914752 0.11675055968694531 0.11732788842593028 0.056103500860233121 0.0086489912745384805 -0.056279144547145644 0.025048304225877588 0.098241782426251742 0.053726648611858628 -0.088810953937304385 -0.078402640631396639 0.0088278150241380294 -0.04910303472885548 -0.14653274083008075 -0.084985387168096796 -0.014690839064283454 -0.12602396862671686 -0.11157928757423492 -leaf_weight=757.32938669855503 792.64946748375951 8547.2838232024224 1170.2408571190754 1754.1964274955681 5056.9720570598438 797.32032957155025 1660.1533526923158 1905.0182950385279 4396.1783184347441 942.36093290772988 488.79294310635305 957.5355279132491 2277.1433923231962 9619.1626635353314 2663.805460542324 2683.9482770386385 816.76348893198883 1897.6146809479033 1830.7790591324301 4316.7112343962654 613.69749132421566 598.79394304211019 1066.6630496551588 939.50620271867956 1125.0067408232717 6810.1666713906016 765.88258893697639 399.07951825941564 1168.8766314064414 383.84863556965138 -leaf_count=291619 166358 2784734 243173 93498 122958 77518 35831 371036 13948 114537 32773 42486 65841 48607 10527 54502 80349 213846 102346 25099 27054 56698 149446 50248 105939 1968454 131363 50095 243544 85103 -internal_value=0 -0.0562286 -0.094797 0.0682039 0.076695 -0.0162741 0.0407227 -0.127902 0.12337 -0.00124187 -0.0628632 -0.0346903 0.0193579 0.101453 0.0823927 0.0349731 -0.0666346 -0.0856349 -0.00790644 0.0825494 -0.00577504 -0.057582 -0.040274 -0.0291797 -0.140121 -0.12694 -0.0366638 -0.137392 -0.097688 -0.0476208 -internal_weight=0 39929.4 30481.5 9447.89 29274.1 9039.76 11934.1 21441.8 6150.37 5957.26 3391.36 3297.51 5971.91 17339.9 7720.78 3626.31 2339.98 3067.86 3694.76 5976.86 1486.34 2330.95 1863.98 1538.3 18050.4 9503.13 1582.65 8378.12 1567.96 872.642 -internal_count=7859530 7174165 6520902 653263 685365 852170 503273 5668732 107446 442343 515966 545817 395151 182092 133485 169039 503331 457019 329310 60930 144930 273304 226964 106946 5152766 2368032 211712 2262093 293639 117876 -shrinkage=0.12 - - -Tree=5 -num_leaves=31 -num_cat=0 -split_feature=12 3 7 0 7 0 0 11 0 6 6 1 3 11 11 11 0 12 2 1 1 1 1 0 3 0 3 3 2 2 -split_gain=17354.6 10065.9 2953.96 3339.07 2678.63 1596.22 1418.53 959.93 921.308 796.831 671.259 522.398 412.104 408.271 403.753 396.925 441.878 359.805 321.97 294.714 243.399 225.278 223.869 220.627 206.958 201.812 195.437 191.651 193.64 188.482 -threshold=0.36602870813397131 1.0000000180025095e-35 1.0000000180025095e-35 31.309764500000004 1.0000000180025095e-35 27.145081500000003 21.920927000000002 0.267948717948718 28.208573500000004 1.0000000180025095e-35 1.0000000180025095e-35 1.5000000000000002 11.500000000000002 0.26201372997711675 0.4188596491228071 0.4188596491228071 25.525596500000002 0.51666666666666672 187272000.00000003 1.5000000000000002 1.5000000000000002 1.5000000000000002 1.5000000000000002 43.939336500000003 2.5000000000000004 18.046731000000005 12.500000000000002 27.500000000000004 32097600.000000004 158155200.00000003 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 6 15 9 14 21 23 11 25 -8 -2 17 -7 -6 -4 29 22 -13 -9 -18 -1 -10 -5 -20 -3 -15 28 -16 -17 -right_child=8 4 3 7 5 13 10 19 12 -11 -12 18 -14 26 27 16 20 -19 24 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.12278015366668645 -0.053066934956220911 -0.023733885423421683 -0.14065658046662521 -0.10576797994402805 -0.1140434185762973 -0.022275980557405817 0.0007879390163752952 -0.041315496181955902 0.0041962851882882098 0.14941347250831938 0.13630967116745393 0.096239874524633562 0.12544114818560761 0.044685953096759101 0.092888435976043779 -0.086173566318018355 -0.11105875793297434 0.09623787517162849 0.011589500572358124 0.031653032424322637 -0.0033539977694666315 -0.03718888798684522 0.068738448334492552 -0.032771852484711712 0.072015872655677465 0.070913168960043862 0.11092031079579509 0.10595491698319366 -0.057277422227240554 -0.1404373728413576 -leaf_weight=659.49817736638943 792.05328471053508 424.02332854375709 12756.291829364127 1909.4211155406374 1551.9623272627141 1158.3594851874514 956.76028198409767 1136.9992867840629 935.15133468760177 3027.5625634873868 1169.7554271378613 1606.7963625655975 4054.2960167028941 2915.8278625634557 139.65783603279851 1419.1542664409353 467.7897735505976 9653.1952303443395 2438.3904927688054 2665.7593478995623 853.15857966481417 1347.768471640913 4487.22066109968 867.00292690610513 1226.8286328420509 1380.7115303330065 822.46558889886364 144.84853263467085 1077.5452280262107 2630.9467317926974 -leaf_count=269057 117840 25617 3746709 345645 330833 105841 109561 176208 75469 9640 11307 15367 10063 92336 3298 374042 165009 67194 67295 117361 81083 202734 63999 103097 6643 25347 8607 2424 128043 1001861 -internal_value=0 -0.0477102 -0.086848 -0.102557 0.0415683 -0.00187745 0.00704117 -0.0293302 0.0785576 0.111791 0.0753367 0.0377996 0.0914776 0.039971 -0.0721984 -0.129134 -0.101767 0.0823435 0.0514514 0.00983578 -0.0414973 -0.0653118 0.0576075 -0.0829738 0.0318159 0.0486758 0.059259 -0.0245174 -0.040046 -0.121424 -internal_weight=0 41483.3 28840.3 24706.5 12643 7810.67 4133.78 6579.18 25193.9 4832.3 2126.52 6064.07 19129.9 4896.65 2914.01 18127.3 5371.05 15075.6 5272.02 3802.76 1320.95 2007.27 5422.37 2776.42 3665.22 1804.73 3738.29 1362.05 1217.2 4050.1 -internal_count=7859530 7435660 6703674 6111015 731986 671382 592659 742311 423870 60604 120868 207145 216725 206784 464598 5368704 1621995 206662 89305 293569 246092 471791 139468 448742 73938 50964 100943 133765 131341 1375903 -shrinkage=0.12 - - -Tree=6 -num_leaves=31 -num_cat=0 -split_feature=12 7 0 6 0 11 3 0 11 3 1 1 1 2 1 1 1 11 2 0 2 0 11 0 2 0 2 2 7 0 -split_gain=14614.1 9316.84 4285.61 2705.22 1373.84 1248.23 1214.06 714.422 706.402 704.134 657.472 406.449 343.852 325.549 522.227 320.213 314.587 275.468 253.618 244.405 234.824 223.238 218.506 197.551 195.329 176.731 172.405 168.634 167.005 158.502 -threshold=0.31009615384615391 1.0000000180025095e-35 28.927267500000003 1.0000000180025095e-35 35.82988550000001 0.26201372997711675 1.5000000000000002 18.046731000000005 0.70714285714285718 2.5000000000000004 1.5000000000000002 1.5000000000000002 1.5000000000000002 63892800.000000007 1.5000000000000002 1.5000000000000002 1.5000000000000002 0.76388888888888895 647179200.00000012 41.01957500000001 315576000.00000006 20.185810000000004 0.39230769230769241 46.836120500000007 378475200.00000006 55.906434000000004 32097600.000000004 378734400.00000006 4.5000000000000009 24.831658500000003 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 9 7 6 12 8 26 29 13 -5 25 -4 14 -3 -9 -10 23 -12 28 -13 -18 -11 -6 -17 -7 -1 -19 -14 -2 -right_child=4 2 5 10 17 11 -8 15 16 22 18 20 19 -15 -16 24 21 27 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=0.053346996261430552 -0.089209064994170501 -0.14250083073741082 -0.11529214678200513 -0.11817039738486823 0.039176255232463722 -0.064416676282825033 0.083772817573618735 -0.080515454037468362 -0.021536678250769225 -0.085304272341770598 0.021374273678274561 0.05231910805926044 -0.030855279797860652 -0.13330443951725815 -0.032462845369753274 0.066472543260221825 -0.015933809490094972 0.11252963767615311 0.14696236536150967 0.004254512455723415 -0.0019602643501363147 0.056608524705528504 0.023197725042663153 0.08777781784291401 -0.018009779947108326 0.081060048385749928 -0.077721611776716187 0.079133497979455555 -0.10424825077795732 -0.023709646510033894 -leaf_weight=159.11569604617398 861.49902003237366 1212.9867844963883 1605.913962170358 148.37184506332414 2105.6947339392791 1084.2686485598024 4945.3849274989916 313.99897339203744 1312.6402905966097 489.44764745698194 246.99494968046201 2724.1248766189819 811.74030335241696 13936.497786475295 1272.7195723130862 1851.9190380310756 726.01438061788213 6713.0225661852746 3705.7478236270254 939.49134437319299 1983.313399652543 3851.1982864523306 588.72239334968617 2813.626334217377 500.61082807253115 135.22450947132893 1572.9221892607166 3223.0032680509612 992.20840170946758 1391.0434916436789 -leaf_count=10703 139671 452543 380622 50505 54209 221805 36330 153156 144501 81881 16244 90937 89380 4696085 129203 50407 20297 38183 14705 76049 109965 66739 31071 21884 47238 3981 310305 27092 161674 132165 -internal_value=0 -0.0502411 -0.0838818 0.0596954 0.065224 -0.0223706 0.036876 -0.00567438 0.00839247 -0.120001 0.129806 0.0134562 -0.0711922 -0.126169 -0.0861608 0.0333025 0.0302507 0.0901989 0.139115 -0.0453766 0.0294505 0.0451022 -0.026059 0.0669745 0.048495 -0.0482838 -0.0656801 0.101697 -0.071224 -0.0487612 -internal_weight=0 36276.3 27776.7 8499.68 27943.1 10276.3 13087.8 4398.57 8142.4 17500.4 4101.11 5926.93 4349.35 16422.2 2485.71 2666.53 5889.85 14855.3 3952.74 2743.44 4707.44 4577.21 1078.17 4919.32 2352.53 1219.49 1732.04 9936.03 1803.95 2252.54 -internal_count=7859530 7178459 6525196 653263 681071 1134413 539703 571809 503373 5390783 81454 426688 707725 5277831 581746 250801 231537 141368 30949 327103 200902 87036 112952 76093 97645 225786 321008 65275 251054 271836 -shrinkage=0.12 - - -Tree=7 -num_leaves=31 -num_cat=0 -split_feature=12 3 1 0 7 7 0 0 0 11 3 6 0 6 7 2 11 2 1 0 2 3 11 11 0 0 11 2 0 0 -split_gain=12627.5 7485.69 2273 2203.84 1963.13 1365.28 1225.05 747.843 747.251 737.421 700.386 676.041 577.583 471.29 337.57 316.332 310.533 306.368 272.691 257.613 246.761 214.563 211.829 197.829 187.908 181.135 170.303 169.999 164.221 150.359 -threshold=0.43650793650793657 1.0000000180025095e-35 1.5000000000000002 23.223223000000001 1.0000000180025095e-35 2.5000000000000004 26.917887500000003 42.837928000000005 35.82988550000001 0.96666666666666679 1.0000000180025095e-35 1.0000000180025095e-35 32.751201500000008 1.0000000180025095e-35 1.0000000180025095e-35 63892800.000000007 0.28991596638655465 93960000.000000015 1.5000000000000002 33.981020000000008 307368000.00000006 15.500000000000002 0.18465909090909094 0.15587044534412958 30.664758000000003 43.939336500000003 0.27888888888888896 315144000.00000006 51.783302000000013 51.783302000000013 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 7 9 11 13 15 24 26 17 12 -3 18 19 -15 -6 -8 -4 -2 27 -12 -17 -9 -10 -1 -18 -7 -5 -25 -14 -right_child=10 4 3 5 6 8 16 22 23 -11 20 -13 29 14 -16 21 25 -19 -20 -21 -22 -23 -24 28 -26 -27 -28 -29 -30 -31 -leaf_value=-0.13754400774646117 -0.037918368671344925 0.043723096574910095 -0.045151956020297604 0.016519652583174758 0.011504518071789189 -0.12056684970985512 -0.017579939850211959 -0.11257793674947505 -0.081809232202719295 0.010072381415701647 0.1042011605041584 0.14061728106611787 0.055070845705457734 0.13786410976412306 0.015983888401538981 -0.10025989320887152 0.033562679454886848 -0.12351105172421913 0.032148094434359613 0.061260229766686734 0.069494072098461729 0.024518142399003247 0.017610687859985524 -0.0111066179755905 -0.093621441939769207 0.088289692370591616 -0.055706591156286754 -0.053716626532991571 0.066720524774533704 0.093229868867078 -leaf_weight=7979.4124997828585 1110.5446091938938 1740.6459331298829 829.11300840608601 1162.8275107360532 605.14872033183201 1691.5743058629305 1275.4931813221483 244.74623888474889 373.88353659718996 789.27828079654137 7613.4848337266594 2564.8205871459795 3473.6715195580909 923.15108896652237 506.93369273957796 1869.0973802824374 2868.232315664558 5387.8077941552037 2858.8605856822687 988.34497420204571 4816.2528039332246 222.00531755090924 679.7395297754847 1200.0390784282936 1702.0762253722096 1250.6322140928241 889.59301472417428 865.6012993214099 578.65020679973532 2600.1222136386787 -leaf_count=3233594 141190 50964 79096 109525 46298 425763 114991 52800 60737 102920 30191 9640 74931 3213 45588 402602 90840 1810190 71111 38449 37565 12560 48031 70942 405020 11943 103273 154292 11279 9992 -internal_value=0 -0.0411226 -0.0767964 -0.048504 0.0359824 -0.00982303 0.00114592 -0.119976 -0.0546748 -0.0991896 0.0717105 0.101445 0.0481427 0.0379223 0.0946615 -0.0649014 0.0341584 -0.113061 0.012545 0.0110247 0.0907531 -0.0870125 -0.0168577 -0.00246606 -0.129822 0.0501802 -0.0982138 -0.013453 0.0142131 0.0714067 -internal_weight=0 39188.8 26792.8 16186.8 12396.1 9180.6 8090.61 10606 4733.74 7006.2 22472.9 4305.47 10043.2 4446.86 1430.08 2696.25 5394.36 6216.92 3969.41 3016.77 12429.7 2091.1 924.486 2152.57 9681.49 4118.86 2581.17 2028.43 1778.69 6073.79 -internal_count=7859530 7494550 6754712 3015267 739838 1023061 679234 3739445 671994 1992206 364980 60604 297224 351067 48801 461460 217774 1889286 212301 302266 67756 415162 100831 142958 3638614 102783 529036 263817 82221 84923 -shrinkage=0.12 - - -Tree=8 -num_leaves=31 -num_cat=0 -split_feature=11 7 0 6 0 1 3 11 2 0 11 3 0 11 2 7 0 0 1 12 0 3 2 1 2 2 0 4 1 2 -split_gain=10959.9 5805.08 4357.1 2357.17 1605.06 1021.16 1015.82 783.197 535.46 426.144 378.116 376.491 353.255 348.604 326.492 273.748 270.749 267.923 274.752 167.058 166.472 154.297 151.975 147.745 283.387 139.261 128.584 126.537 120.177 117.067 -threshold=0.51666666666666672 1.0000000180025095e-35 33.981020000000008 1.0000000180025095e-35 30.077133500000006 1.5000000000000002 1.0000000180025095e-35 0.18465909090909094 221140800.00000003 51.783302000000013 0.4188596491228071 8.5000000000000018 26.819955000000004 0.44949494949494956 647179200.00000012 3.5000000000000004 20.842892000000003 48.846755000000009 1.5000000000000002 0.46410256410256417 21.763782500000001 13.500000000000002 284212800.00000006 1.5000000000000002 63374400.000000007 63201600.000000007 27.946536000000005 6.5000000000000009 1.5000000000000002 63892800.000000007 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 6 -1 5 19 12 28 21 15 26 17 23 -14 -5 -9 -10 18 27 -2 -12 25 -20 -3 -25 -7 29 -6 -4 -8 -right_child=4 2 7 14 11 8 10 9 16 -11 20 -13 13 -15 -16 -17 -18 -19 22 -21 -22 -23 -24 24 -26 -27 -28 -29 -30 -31 -leaf_value=-0.071418029805711047 -0.11674789652513004 -0.13913555071705994 -0.12082793700583513 -0.066127389183755492 -0.005766003733959895 0.094915381576960917 -0.029812186363929565 0.034626183648326585 -0.035197680419173295 0.075017148350407376 -0.062381253936281932 0.10886327151263593 -0.10384708750512703 -0.021177634730937703 0.14137195472470462 -0.025199080763810663 0.025289036316216106 0.090112240147224881 0.082906058015524281 -0.037164182183758158 0.022795610774124925 0.11328215059840661 0.04723505324725593 -0.046179355499017381 -0.12167396896492105 0.039226561772605563 -0.038570118919932839 0.092873719515136649 -0.047405671248634415 -0.11550927312628612 -leaf_weight=1080.8357679889268 681.8330543305201 5238.7597912437632 504.94023706781445 113.24470513478445 1308.3905851836025 883.7598482798785 286.43731987595675 2268.3873770409846 1518.9085345592466 1789.0747582365875 459.88484688252356 4110.5051425902639 2769.7709068007207 999.63221230394265 3041.1485836131469 2140.8274086363454 3570.7625339035876 4726.0689429509221 3354.8366659334861 857.5541908472369 1173.4250167770588 787.98348313942552 3529.5398561550537 822.22088715806603 5544.5544840171715 2410.0597553228145 802.54332827100006 218.52527575136628 881.42655416614434 1156.1558853916067 -leaf_count=240954 321244 2381858 132345 17427 96045 10645 35557 124936 127736 31736 76365 12915 751255 168626 14386 179274 104500 23120 31632 117893 66799 2538 62351 86209 2060529 75539 70602 6709 119438 308367 -internal_value=0 -0.0490463 -0.0696505 0.0815189 0.05451 0.0180241 -0.0999977 0.00738488 0.0332041 0.0256219 -0.0451173 0.0771675 -0.113842 -0.0819238 0.133922 0.00557896 0.00723791 0.0672501 0.0544043 -0.0724154 -0.00118802 0.0655815 0.0646182 -0.124208 -0.111925 0.0541691 -0.0770748 0.00835241 -0.0741494 -0.0984945 -internal_weight=0 31073.3 26838 4235.23 27958.7 10710.9 19253.4 7584.66 9171.47 6198.29 3878.45 17247.9 15374.9 3769.4 3154.39 4409.21 5089.67 13137.4 8411.29 1539.39 1633.31 4081.8 6884.38 11605.5 6366.78 3293.82 2245.14 1526.92 1386.37 1442.59 -internal_count=7859530 6866663 6593896 272767 992867 760095 6006167 587729 320958 335946 557690 232772 5448477 919881 31813 304210 232236 219857 196737 439137 143164 88722 93983 4528596 2146738 86184 414526 102754 251783 343924 -shrinkage=0.12 - - -Tree=9 -num_leaves=31 -num_cat=0 -split_feature=12 3 1 7 0 7 0 3 6 0 11 0 0 7 1 11 2 6 0 3 2 0 11 11 11 3 11 0 2 2 -split_gain=9541.52 5354.78 1773.47 1684.26 1603.16 1061.18 822.237 752.487 583.925 572.307 543.024 504.197 488.669 404.099 291.361 272.03 259.805 234.66 227.194 213.717 185.694 185.615 172.098 163.715 156.947 151.46 150.21 142.517 137.785 130.825 -threshold=0.36602870813397131 1.0000000180025095e-35 1.5000000000000002 1.0000000180025095e-35 23.223223000000001 2.5000000000000004 25.784979000000003 1.0000000180025095e-35 1.0000000180025095e-35 37.179385000000003 0.96666666666666679 35.82988550000001 39.539316000000007 1.0000000180025095e-35 1.5000000000000002 0.26201372997711675 157464000.00000003 1.0000000180025095e-35 38.267659000000002 32.500000000000007 157896000.00000003 45.25187300000001 0.76388888888888895 0.88194444444444453 0.18465909090909094 12.500000000000002 0.27888888888888896 39.539316000000007 220708800.00000003 315316800.00000006 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 11 8 10 13 20 9 -3 14 16 -1 26 17 -2 -8 -4 -6 28 21 -5 23 -16 -9 -13 27 -7 -17 -15 -12 -right_child=7 3 4 6 5 12 15 19 -10 -11 29 24 -14 18 22 25 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.12717638920721494 -0.035031642170437374 0.040231163135759723 -0.06082307114311454 -0.029884139128199941 0.029089807788138619 -0.10746761518272339 -0.028242988970367297 0.027476225639536007 0.13516304079080965 0.06549152408291363 0.044441172764243961 -0.11357481955922859 0.0034671288328198295 0.025404136455720365 -0.020372131959316118 0.005621386120586107 -0.1211368001101273 0.13117611963988973 0.065734820560470864 0.11554968062008095 -0.099151673000401314 0.096761044503159949 0.04114810562207067 0.072296765050294545 -0.021632118947590036 0.083927789117000037 -0.04643877522454605 0.060494728588623231 -0.037947801006072819 -0.051659480765406419 -leaf_weight=7504.6802695461665 1526.0144555116713 1658.1659933302435 1377.3045057611744 1078.5327843982159 578.20851381850662 1683.3572414329319 1179.6984234178381 1521.182620647829 2133.6263468578691 5124.8928665777785 431.25973999951384 369.86630474227422 1317.6714692442329 796.51231116376584 846.75973398429051 1905.4177416174498 4061.3356767492587 738.22662502981257 683.56885600328678 2123.2913548739161 1153.2741748199041 3328.847110136121 2887.9216638178332 5135.7530494129169 964.44946644094307 805.41362720541656 886.74151209682896 1061.0975046196691 1303.0970765066013 387.01823607020197 -leaf_count=3472924 186722 50964 249587 125797 27584 461334 125284 19205 9640 62477 37288 105942 88584 77645 36509 90123 1634022 3213 19763 4581 301784 12162 62554 39660 128818 9506 108476 18888 222862 65632 -internal_value=0 -0.0400579 -0.0728672 0.0289472 -0.0466656 -0.0110346 -0.00520641 0.0606505 0.0936496 0.0369513 -0.0921507 -0.115091 -0.0559498 0.0315597 0.00914759 0.02205 -0.105863 0.0863392 0.00564849 0.0809765 -0.0656786 0.0736248 0.0271996 0.062055 -0.0471202 0.0377796 -0.0864121 0.0252495 -0.0139145 -0.00101146 -internal_weight=0 34058.5 23083.3 10975.2 14244.3 7987.38 7183.43 22494.7 3791.79 10385.6 6256.92 8839 3887.77 4099.61 5260.7 4951.63 5438.64 1316.44 2783.18 12109.1 2231.81 9985.78 3734.68 6656.94 1334.32 3771.93 2570.1 2966.52 2099.61 818.278 -internal_count=7859530 7435660 6703674 731986 2995990 1009461 671382 423870 60604 348262 1986529 3707684 658394 351067 285785 243801 1883609 30797 320270 75608 427581 71027 99063 58865 234760 118517 569810 109011 300507 102920 -shrinkage=0.12 - - -Tree=10 -num_leaves=31 -num_cat=0 -split_feature=11 7 0 0 0 11 1 3 0 3 2 12 11 6 0 7 1 7 1 2 11 11 0 3 3 3 0 2 2 1 -split_gain=8374.72 4167.78 3604.41 1866.66 1340.84 847.317 689.984 513.554 455.054 444.39 376.428 321.666 262.143 238.402 235.189 210.906 204.671 200.851 183.938 274.066 195.941 175.408 154.207 141.254 126.184 124.333 122.173 111.266 109.01 99.3424 -threshold=0.51666666666666672 1.0000000180025095e-35 28.927267500000003 23.062892000000002 28.208573500000004 0.2752525252525253 1.5000000000000002 1.0000000180025095e-35 42.837928000000005 6.5000000000000009 252072000.00000003 0.63961038961038974 0.36931818181818188 1.0000000180025095e-35 51.783302000000013 1.5000000000000002 1.5000000000000002 4.5000000000000009 1.5000000000000002 189086400.00000003 0.36931818181818188 0.82575757575757591 1.0000000180025095e-35 33.500000000000007 6.5000000000000009 2.5000000000000004 20.132072500000003 157896000.00000003 94737600.000000015 1.5000000000000002 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 7 22 6 14 -2 18 15 11 24 16 -9 -5 17 -7 -6 29 -3 20 -20 -12 -1 -14 28 -17 -23 -18 -8 -4 -right_child=4 2 5 13 9 8 10 12 -10 -11 21 -13 23 -15 -16 25 27 -19 19 -21 -22 26 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=0.1276746945642693 -0.073377167706924873 -0.13318019573923484 -0.087847965165195052 -0.023193757316095766 -0.009036645784574077 0.031168122739461956 0.069215989702467742 -0.092332104189478528 0.054079910485594643 0.100099370699372 -0.048268987566794576 0.075639397779103973 -0.030016616788146488 0.13856526013531145 0.011675850210144893 -0.038457183895147885 0.07566360484261897 -0.093691020435302946 -0.095389115833510382 -0.11944692268823966 -0.01805290541426384 -0.023533006988354917 -0.073114117096830161 0.10046762315675392 0.091271306463814428 0.025217458311258729 0.027532554162184343 0.037116188493030618 0.018945533659847937 -0.011233894653999923 -leaf_weight=58.371026258857455 1222.606211157763 4893.6307784850142 333.84183734872931 138.7176882775675 1112.6561119701219 1265.7412521262013 1040.7180700434255 1359.1712990328233 2544.6825054211513 4519.9225411148509 883.76911983601167 6391.4243350492034 1070.7541869417764 2418.483939290687 607.17181438916305 2489.9750557690713 1469.5724821147742 1959.4829652378976 1212.3762744151245 4182.5933113381689 772.28379541161121 966.25995443706051 969.16446256041672 134.44025007123128 905.69333865912631 536.75726809579646 2235.3324469496729 4050.1609121319489 1540.8154059021617 902.55777436491917 -leaf_count=2300 406419 2647031 119692 21261 117131 92678 19782 347809 59194 16788 70762 51197 137138 8529 52958 293327 15674 442971 322257 1841204 122094 84475 240677 2098 4144 14803 59222 84977 62296 98642 -internal_value=0 -0.045877 -0.0637195 0.0748998 0.0485093 -0.0113833 0.01027 -0.10459 0.0138723 0.0676798 0.0237752 0.0564283 -0.056204 0.12979 -0.0567878 -0.00996399 0.037915 -0.0697949 -0.115807 -0.102021 -0.0652963 -0.000943498 -0.0617045 -0.0154589 0.0527335 -0.0271651 0.0121206 0.0473794 0.0392121 -0.0319222 -internal_weight=0 27850.2 24265.5 3584.74 26338.9 10640.2 8795.19 13625.2 6837.16 17543.7 7572.59 13023.8 2564.37 2557.2 3803.05 4292.47 6632.39 3195.88 11060.9 6167.25 1984.66 4085.36 1027.54 1205.19 3487.23 3026.73 3201.59 5519.73 2581.53 1236.4 -internal_count=7859530 6866663 6593896 272767 992867 1174265 707100 5419631 460002 285767 300681 268979 487045 29790 714263 400808 217782 661305 4932586 2285555 444351 214459 242977 139236 86222 308130 143697 100651 82078 218334 -shrinkage=0.12 - - -Tree=11 -num_leaves=31 -num_cat=0 -split_feature=12 3 0 1 7 7 7 3 0 0 0 0 8 6 0 6 1 2 1 2 3 2 11 11 11 0 1 2 0 11 -split_gain=7351.91 4038.16 1811.08 1274.29 946.967 841.13 771.26 591.371 515.516 481.522 449.564 424.164 299.204 289.773 268.094 227.325 207.114 179.776 191.718 164.34 162.987 155.354 152.549 149.34 144.04 141.099 139.75 134.208 118.861 114.678 -threshold=0.44949494949494956 1.5000000000000002 24.035689000000001 1.5000000000000002 1.0000000180025095e-35 1.0000000180025095e-35 2.5000000000000004 1.5000000000000002 35.82988550000001 40.27922800000001 43.939336500000003 24.035689000000001 1.0000000180025095e-35 1.0000000180025095e-35 17.801955500000002 1.0000000180025095e-35 1.5000000000000002 63892800.000000007 1.5000000000000002 93960000.000000015 9.5000000000000018 346766400.00000006 0.11651583710407241 0.27888888888888896 0.27888888888888896 24.357912500000001 1.5000000000000002 283608000.00000006 30.464548000000004 0.17752100840336138 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 4 10 14 13 12 9 23 16 24 -7 15 -3 26 -5 -2 18 -6 -18 -13 -14 -10 -8 -4 -21 -1 -9 -26 -12 -right_child=7 5 3 6 17 11 8 27 22 -11 29 20 21 -15 -16 -17 19 -19 -20 25 -22 -23 -24 -25 28 -27 -28 -29 -30 -31 -leaf_value=-0.12580832341608619 -0.018140891300474898 0.051718346859977934 -0.12499581454308437 -0.0067264855313367055 -0.13294761928068663 -0.058611588082792487 -0.10357918438462617 0.096109244601698937 -0.08235478553978319 0.0688350852182677 -0.096822990647750212 0.014170301498757676 0.034212587346012728 0.13589061321697499 0.020463983238399919 0.1267544588888152 0.094415118871694029 -0.12062709997135088 -0.041478838081932701 -0.0070571977487528335 0.067631233159731186 -0.015347856763073165 0.0093308591234666644 -0.042170594010823723 -0.10789295097723642 0.038272963971576056 -0.039619691832069169 0.064921964018593709 -0.046941917460174939 0.01560210197786264 -leaf_weight=358.17239281826551 1606.8064876288699 980.68141531065339 1784.531950544515 251.78393802921346 513.06593258304929 903.28947797710862 1398.2325875696697 4584.9532377828145 294.72360372607363 4927.3039976216387 159.77472265415417 2276.0158808193592 2328.773054802441 1474.6238910853863 977.63332721361076 679.64564966247417 531.52501801098697 7152.9053361021142 924.69667743443279 1447.1002634160686 1284.6971529617149 1495.7431225890468 2303.6552427359857 963.14856791325292 913.85119740166192 3122.1897838333971 1111.7727428788785 3507.1720522205578 929.29880414044601 716.17021181312157 -leaf_count=169318 172207 22808 805030 43808 307189 148131 421459 15911 51899 41591 46680 114185 138059 6103 205730 7282 4434 3581620 96224 44677 24681 154334 118137 108374 508332 58781 175223 25725 197747 43851 -internal_value=0 -0.0353623 -0.0576126 -0.0293008 -0.0940832 0.0458581 -0.00484288 0.0576795 -0.0379507 0.0403521 -0.0820638 0.0148285 0.0296838 0.102272 -0.0282346 0.0906729 0.0194288 -0.112844 -0.0741216 0.0312636 0.0334593 0.0148299 -0.0010695 -0.078533 -0.100694 0.0239169 -0.0606229 0.0825928 -0.0771633 -0.00490715 -internal_weight=0 32176.9 25257.6 14219.3 11038.2 6919.31 9715.71 19727.1 4959.76 11634.9 4503.63 4464 4755.95 2455.31 2447.58 931.43 6707.62 8590.67 1437.76 5100.82 3560.71 3824.52 2598.38 2361.38 3627.68 4569.29 1469.95 8092.13 1843.15 875.945 -internal_count=7859530 7496204 7180296 2644992 4535304 315908 1043352 363326 699869 321690 1601640 286997 343483 28911 550271 51090 280099 3985033 403413 107892 138866 292393 170036 529833 1511109 103458 344541 41636 706079 90531 -shrinkage=0.12 - - -Tree=12 -num_leaves=31 -num_cat=0 -split_feature=11 0 7 0 0 11 1 11 3 3 0 2 2 2 1 1 7 8 1 1 7 2 0 11 0 0 3 12 0 0 -split_gain=6463.06 2998.18 3152.11 1329.3 1062.55 669.921 604.347 439.568 331.424 293.282 274.137 231.451 218.935 211.779 210.922 202.112 183.403 176.437 275.158 175.536 164.519 162.748 161.206 153.33 143.013 136.531 132.902 118.239 113.728 100.13 -threshold=0.51666666666666672 23.223223000000001 1.0000000180025095e-35 33.981020000000008 30.464548000000004 0.4188596491228071 1.5000000000000002 0.17752100840336138 5.5000000000000009 1.0000000180025095e-35 55.906434000000004 63892800.000000007 94737600.000000015 647179200.00000012 1.5000000000000002 1.5000000000000002 3.5000000000000004 5.5000000000000009 1.5000000000000002 1.5000000000000002 1.0000000180025095e-35 187272000.00000003 1.0000000180025095e-35 0.82575757575757591 27.946536000000005 11.867569500000002 39.500000000000007 0.46410256410256417 20.132072500000003 18.203359500000005 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 11 13 5 6 14 27 -5 12 17 16 15 -8 -3 -4 -1 -9 18 -6 -7 22 -21 -13 -14 -16 -22 -11 -2 -25 -24 -right_child=4 2 3 7 9 19 8 10 -10 26 -12 20 23 -15 24 -17 -18 -19 -20 21 25 -23 29 28 -26 -27 -28 -29 -30 -31 -leaf_value=-0.12830758783616722 -0.10525057777902537 -0.027945930589351419 -0.12280524204832233 -0.06432601710691889 -0.018945570904424676 -0.077550456271263377 0.060106340524879252 0.028453281202146866 0.068317863160343495 0.07260240954141578 0.066790817610451803 0.13280299148997274 -0.033406193359617795 0.13516636831323148 -0.10199211329132339 -0.032395055735466811 -0.020072139205996712 0.075325579769783352 0.048799895843566532 0.04087158993855159 -0.0588368881213088 -0.029360023152165349 -0.095991776942523199 -0.018261485264212462 -0.049341212753474951 -0.12337097334810293 0.116248586706585 -0.032953243481012841 0.02601886652812593 0.016829282296615792 -leaf_weight=442.41638263759887 531.51622452609081 121.82881471395376 2050.7931626183126 1108.8859196180274 1141.6116481170466 544.84896076206496 1126.4934504627163 2236.1546400626248 1947.9504716404481 7073.7851688305382 1294.9564582567546 57.842793018789962 1331.3623056270881 1935.3641321413161 1343.9229095286319 1110.4453792080458 2250.1586887911399 1939.6487077479833 3541.7287683335016 805.17141112708487 516.33476372596851 1159.0444319291273 610.70175014848064 1166.1804914733075 1661.3573940424903 5517.9633708791298 1171.010972574586 841.4576599267748 2943.0032130968248 139.06308069097577 -leaf_count=272935 323924 16615 1111952 243569 96051 304703 21295 127649 11822 52980 21103 2095 101368 12079 485396 108494 195408 8408 62608 39593 204188 157313 176724 105313 269012 3075783 2696 121449 84953 42052 -internal_value=0 -0.0431578 -0.0134721 -0.033251 0.0434219 -0.0679794 0.0129368 0.00487966 0.0248495 0.0636962 0.018154 -0.101549 0.0119554 0.125506 -0.0931348 -0.0597229 0.00411486 0.0448913 0.0322862 -0.0172876 -0.111042 -0.000570494 -0.0601739 0.00198525 -0.0728868 -0.117849 0.0788019 -0.0609432 0.0134521 -0.0750664 -internal_weight=0 24907.3 16512.5 14455.3 24755.7 7565.14 9887.96 6890.16 8514.99 14867.8 5781.27 8394.77 6567.04 2057.19 5056.07 1552.86 4486.31 6622.99 4683.34 2509.06 6841.91 1964.22 807.608 5440.55 3005.28 6034.3 8244.8 1372.97 4109.18 749.765 -internal_count=7859530 6866663 2984392 2955698 992867 2367969 770124 587729 324751 222743 344160 3882271 312929 28694 1866360 381429 323057 167067 158659 501609 3500842 196906 220871 291634 754408 3279971 55676 445373 190266 218776 -shrinkage=0.12 - - -Tree=13 -num_leaves=31 -num_cat=0 -split_feature=11 3 0 12 7 0 1 7 7 11 0 2 11 0 2 1 0 0 3 2 0 1 6 1 4 6 2 0 0 2 -split_gain=5599.48 2627.57 1626.17 909.974 827.078 791.485 648.702 594.581 488.811 449.026 393.566 367.029 280.917 200.257 198.648 189.859 181.284 171.296 170.831 167.178 159.434 150.106 136.17 128.485 115.507 115.278 110.459 130.141 107.827 106.745 -threshold=0.51666666666666672 2.5000000000000004 24.554782000000003 0.51666666666666672 1.0000000180025095e-35 35.82988550000001 1.5000000000000002 1.0000000180025095e-35 1.0000000180025095e-35 0.31414473684210531 23.062892000000002 346766400.00000006 0.17752100840336138 23.799446500000005 378475200.00000006 1.5000000000000002 21.669163500000003 63.388565000000007 9.5000000000000018 63892800.000000007 24.357912500000001 1.5000000000000002 1.0000000180025095e-35 1.5000000000000002 1.5000000000000002 1.0000000180025095e-35 62510400.000000007 24.763925500000003 11.867569500000002 315748800.00000006 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 8 6 25 9 20 22 10 -6 -1 18 -7 -9 15 24 -13 -14 26 21 -2 -10 -3 -11 -5 -4 -8 -28 -21 -25 -right_child=3 7 4 14 5 12 11 13 19 23 -12 16 17 -15 -16 -17 -18 -19 -20 28 -22 -23 -24 29 -26 -27 27 -29 -30 -31 -leaf_value=-0.063016667447461469 -0.10060666515142343 -0.020457692372518266 -0.027550401186408006 0.012111715469552397 -0.1031479025906943 -0.064725170852630465 0.085269181663283886 -0.052097258243077198 -0.1303923431524969 -0.074473309792202097 0.10831486450168665 -0.048464670310022093 0.0018263769600849471 0.035619077788220634 0.044975728903848489 0.086036950131983522 0.013519099737757213 0.070965729823569149 0.082297269426907071 -0.062801866221439559 -0.023241219299069329 -0.045495108041550894 0.13739160491965505 -0.00063375075143032994 0.10707789388325745 0.12831018896074919 0.0037673008663844116 0.04456248811448682 -0.12252399264957001 -0.05319530628063774 -leaf_weight=816.64922948710591 605.78939050416011 85.255278990371153 78.6021255289088 878.6462386889034 2631.4179166053327 821.49523785223573 586.45938639102678 456.33874970987381 435.09996527346811 917.09812639166557 252.80827442824375 868.08549809604301 3411.5216138864052 2096.6892971333218 4330.9795636412164 5990.4060104204109 3126.6032411462002 607.93869707759586 1451.7276278140489 472.14807399885103 1045.6571349754886 965.16189102287171 1021.8419408658519 1405.6494929780165 233.40190260420786 522.56948638166068 1739.0783018560032 3194.4724824298028 5597.4408771468952 920.85256191011285 -leaf_count=236108 299600 6617 13162 29332 1102932 192539 6476 80689 323128 455394 9677 100903 238173 83485 54296 27478 108049 9047 8255 197142 193618 104906 4450 131148 3042 2753 102908 58910 3528332 146981 -internal_value=0 -0.0416371 -0.0588585 0.0407114 -0.0290281 -0.0367119 0.0184924 0.05179 -0.0983923 -0.0663156 -0.0225138 0.0290512 -0.000784477 0.0199399 0.0652319 0.0775836 4.91487e-05 0.0122841 0.0456687 -0.109256 -0.051622 -0.0718772 0.125236 -0.0364342 0.032046 0.107931 0.0360353 0.0301823 -0.117879 -0.0214386 -internal_weight=0 23516.6 19856.5 24051.3 11317.1 10716 12617.9 3660.13 8539.31 5875.02 1069.46 10966.4 4840.96 2553.03 11433.4 7102.45 3994.69 4019.46 6971.74 7469.85 1651.45 1400.26 1107.1 3243.6 1112.05 601.172 5520.01 4933.55 6069.59 2326.5 -internal_count=7859530 6866663 6691422 992867 2292129 2276214 878719 175241 4399293 1836455 245785 385501 439759 164174 114148 59852 208952 247220 176549 4153508 493218 428034 11067 733523 32374 15915 168294 161818 3725474 278129 -shrinkage=0.12 - - -Tree=14 -num_leaves=31 -num_cat=0 -split_feature=12 3 0 7 7 0 3 6 1 6 11 11 0 1 11 3 2 1 0 0 3 2 2 0 2 0 1 2 0 11 -split_gain=5007.1 2713.63 1126.24 1148.82 893.676 480.64 466.293 401.02 362.647 369.116 318.649 308.572 308.024 267.424 220.582 152.304 151.62 148.699 146.731 126.357 110.395 110.274 105.757 103.712 97.9935 96.3648 95.7365 94.6095 89.4763 82.4649 -threshold=0.44949494949494956 1.0000000180025095e-35 30.464548000000004 1.0000000180025095e-35 1.0000000180025095e-35 34.326487000000007 1.0000000180025095e-35 1.0000000180025095e-35 1.5000000000000002 1.0000000180025095e-35 0.36931818181818188 0.28991596638655465 40.27922800000001 1.5000000000000002 0.27888888888888896 27.500000000000004 189345600.00000003 1.5000000000000002 40.27922800000001 46.836120500000007 14.500000000000002 378907200.00000006 62856000.000000007 25.135713500000005 323524800.00000006 63.388565000000007 1.5000000000000002 252158400.00000003 21.763782500000001 0.82575757575757591 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 3 8 7 14 12 24 -1 21 -5 25 17 -12 -6 28 -15 -2 20 26 29 -10 -19 -18 -3 -4 -13 -7 -16 -8 -right_child=6 4 11 10 5 27 18 -9 9 -11 13 19 -14 16 15 -17 23 22 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.097076720449161366 -0.024023473647521977 0.051578819507870917 -0.060121349431836578 -0.11713902427804691 -0.077782658130060231 0.054409826936815772 0.0043666680282648867 0.12607789262334068 0.0074781207247667661 0.10156128235857993 -0.11905423972599755 -0.044286046267018674 0.056047373882016888 -0.013451433940339453 -0.061071070482237096 0.068428925661425957 -0.099328453822759968 0.098083324686865148 0.084342913635518643 0.039096848674967301 0.082408938347620808 -0.060798409323414036 0.016742899737549746 -0.031771981892273801 -0.021689698185016593 0.028570497241676637 0.0036353426940725912 0.010539895864435444 -0.0095557058298800547 0.05154422628373663 -leaf_weight=535.60424750690981 1379.2203699078382 1144.5967098633701 2107.3184376823992 5851.0684523428317 1059.8324363671418 1511.316937977841 641.09735899057705 1296.6491804398247 990.79841455162386 516.05377946890076 1158.6600727161476 839.22844202128181 3490.2593005764938 1009.7179634155036 658.05029017862398 292.50614776631119 887.07926318988029 247.77083452744409 4233.652264265751 1014.1824154554633 1461.3783501175931 519.07314095571928 3236.4608095804579 518.55457610133453 341.20212272761273 192.50470098282676 2108.5507163053917 1331.5997383405847 1851.4861035338981 3180.049065935018 -leaf_count=345379 169547 28476 516139 3572361 291323 41085 10245 9640 106838 21687 975675 188526 35849 149523 143515 5547 527197 1898 17905 27822 6332 110730 88444 78705 22488 15708 119908 53819 144113 33106 -internal_value=0 -0.0319159 -0.0589801 -0.080527 0.0201411 -0.00358486 0.0495363 0.0773123 -0.00926568 0.0139505 -0.0998941 -0.0177337 0.028847 -0.0716615 -0.0311513 -0.013513 -0.0489257 0.00932644 0.067698 0.00256197 0.0543577 -0.0159952 0.022528 -0.0744073 0.0347532 -0.0526972 -0.0100081 0.0338618 -0.0230646 0.0436291 -internal_weight=0 27735.6 18248.4 11986.6 9487.24 6704.79 17869.9 2782.45 2561.53 2025.93 9425.08 6261.78 8353.71 3574.01 3861.87 2802.04 2415.35 4863.45 9516.18 3961.96 5282.52 1509.87 3484.23 1405.63 1485.8 2299.82 2947.78 2842.92 2509.54 3821.15 -internal_count=7859530 7496204 6756198 5888095 740006 679402 363326 60604 584634 239255 5303461 868103 295738 1731100 584498 293175 755425 259889 67588 336256 49683 217568 90342 605902 50964 531847 308434 94904 287628 43351 -shrinkage=0.12 - - -Tree=15 -num_leaves=31 -num_cat=0 -split_feature=11 0 7 0 0 11 3 11 1 1 11 1 2 6 2 0 3 11 0 7 0 1 0 0 2 1 4 2 0 6 -split_gain=4438.53 2055.89 2045.97 910.838 806.845 599.26 393.139 293.402 248.793 235.016 217.837 217.6 229.555 200.866 169.445 168.693 150.912 142.989 133.893 126.085 115.948 144.885 115.632 111.513 106.587 105.689 105.053 101.091 92.8012 91.4611 -threshold=0.51666666666666672 23.223223000000001 1.0000000180025095e-35 39.539316000000007 30.077133500000006 0.31414473684210531 2.5000000000000004 0.80909090909090919 1.5000000000000002 1.5000000000000002 0.14907407407407411 1.5000000000000002 157896000.00000003 1.0000000180025095e-35 157550400.00000003 29.895107000000003 6.5000000000000009 0.82575757575757591 5.2224168000000004 3.5000000000000004 63.388565000000007 1.5000000000000002 46.836120500000007 55.906434000000004 249480000.00000003 1.5000000000000002 1.5000000000000002 284212800.00000006 27.250207500000005 1.0000000180025095e-35 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 11 13 5 6 15 9 22 28 -2 -5 -1 -13 -3 -10 -4 20 -11 29 -17 21 26 -6 25 -19 -12 -9 -23 -7 -14 -right_child=4 2 3 10 7 8 -8 16 14 17 23 12 18 -15 -16 19 -18 24 -20 -21 -22 27 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.12685651388014549 -0.056359664760450845 -0.031490932387174195 -0.11478568154545109 -0.060500585214194047 0.014129086213931006 -0.12057165590718887 0.05041804209709376 -0.0097255514849969651 0.026646358375856445 -0.030697755495696172 -0.034233626545220289 -0.046156844408333321 -0.081138968983733128 0.13191038051197959 -0.027406493638565517 -0.010332958144321626 0.091786741341560132 0.038325392290193383 -0.10647764801273231 -0.082743213547963948 0.093732193022825219 0.078641052425553637 0.053329455418787156 0.05486981490912466 -0.0014218189777372994 0.024496378378496757 0.083372573811186554 0.042787675656769504 -0.048975827323083171 0.096778959328666939 -leaf_weight=2014.1940621075719 1132.5252511940562 117.55535471296753 1831.0017519381145 473.74958096849878 2673.9890339416306 406.29311920038162 2371.572618777398 812.56039767111361 1204.8029492160422 1300.8593567378848 570.09125877835322 1811.6855582167918 86.69328142892482 1379.1821618090908 2721.6102155583976 481.55821375354572 2616.6388320105616 1662.724834148612 2819.8215821344274 1232.7235264054962 1081.1525124430191 2181.870758745179 1821.8366510075284 1265.807364852546 2336.9727405289887 1951.8300671217658 222.25151583558181 2354.7724014066043 727.63754875242375 79.945258746476611 -leaf_count=1700446 438868 20302 1120740 114613 98070 388690 22952 45862 71282 103448 77707 384008 27328 8392 361643 88455 10649 51123 1762454 364452 2723 17024 15482 24651 143704 75719 5838 37124 267746 8035 -internal_value=0 -0.0394613 -0.0137116 -0.0291581 0.0370248 -0.0516253 0.00865558 0.0551707 -0.0251198 -0.00674042 0.0162122 -0.0937542 -0.0798576 0.119076 -0.0108205 -0.0894574 0.067372 0.00386156 -0.100301 -0.062403 0.0577687 0.0507895 0.0300144 0.0258075 0.0151018 0.01122 0.0102714 0.0600315 -0.0746315 0.00421966 -internal_weight=0 21176.2 14363.8 12867.1 22569.7 8605.63 8804.65 13765.1 5060.34 6433.08 4261.48 6812.34 4798.15 1496.74 3926.41 3545.28 9269.25 5300.56 2986.46 1714.28 6652.61 5571.46 4495.83 3787.73 3999.7 2521.92 1034.81 4536.64 1133.93 166.639 -internal_count=7859530 6866663 2984392 2955698 992867 2663008 760095 232772 1089361 737143 292690 3882271 2181825 28694 432925 1573647 119220 298275 1797817 452907 108571 105848 113552 178077 194827 153426 51700 54148 656436 35363 -shrinkage=0.12 - - -Tree=16 -num_leaves=31 -num_cat=0 -split_feature=12 3 0 7 7 0 0 6 11 1 6 3 11 1 0 1 8 2 1 7 2 2 2 0 0 2 5 0 0 3 -split_gain=3914.71 2077.44 902.22 909.662 681.161 410.316 396.074 345.948 298.623 269.658 273.478 255.621 224.708 220.903 162.608 136.626 174.286 135.365 118.636 112.984 110.5 98.8258 90.0423 86.3404 86.2738 80.9141 73.2175 72.6196 70.2792 70.0213 -threshold=0.44949494949494956 1.0000000180025095e-35 30.880862000000004 1.0000000180025095e-35 1.0000000180025095e-35 35.82988550000001 26.917887500000003 1.0000000180025095e-35 0.39230769230769241 1.5000000000000002 1.0000000180025095e-35 1.0000000180025095e-35 0.17752100840336138 1.5000000000000002 40.27922800000001 1.5000000000000002 6.5000000000000009 158155200.00000003 1.5000000000000002 2.5000000000000004 220708800.00000003 315144000.00000006 378907200.00000006 24.486205000000002 25.135713500000005 662385600.00000012 1.0000000180025095e-35 20.514205000000004 55.906434000000004 12.500000000000002 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 3 9 7 11 17 27 -5 -1 22 23 -4 -10 19 16 -7 -6 28 -8 -15 -17 -11 -2 -22 -9 -12 -3 -14 -13 -right_child=5 4 12 8 6 15 14 25 13 10 26 29 18 20 -16 21 -18 -19 -20 -21 24 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.090165195072213308 -0.019782274245595508 -0.0064409314105374708 -0.06994694780273962 -0.11275383826989162 -0.020139201810595066 -0.010418963299194497 0.020875094606261156 0.032429541898126031 -0.11389284351194402 0.0067188703996546376 0.11097304900482277 0.036338273132161626 -0.045710344426135113 -0.018199162329348758 0.04420309262954817 0.08194876638888722 0.071320433652520193 -0.08409339188603418 0.0066476118432833653 -0.028902497726583581 -0.097111545492787416 0.054128283203244178 -0.056258934293016274 0.017077224377210466 -0.032029085049759577 0.13443355210460362 -0.049796183864142758 0.050860861490831535 0.021206473118734782 0.071688016180294523 -leaf_weight=483.3055663428986 1468.6055315160193 476.36155897763092 954.86967022804492 5021.4099293376585 1048.464156334634 766.8175296234258 1378.6022237474681 127.26336665742565 982.59304207944842 967.45472431935195 387.1917282261129 2783.4688735188683 1262.8650533489199 1090.0693225197538 1770.0359386069322 4043.7556845906656 736.28652065430651 873.73169750824673 3284.5160613421685 1253.7307957420308 725.36973810044947 3372.3809060130734 493.72849840446725 2428.0389998330065 492.45859398998437 934.00405633461196 45.577647456259001 960.83817316876957 275.2480044249096 1136.3722956411075 -leaf_count=345993 103860 32263 310329 3612837 148883 32493 56850 4105 981566 107033 11425 34583 299845 184146 44286 19456 2918 312600 198517 116783 497024 33230 110989 131786 76632 5535 10270 18701 9592 5000 -internal_value=0 -0.0297938 -0.0549694 -0.0756199 0.0171921 0.045022 -0.00376447 0.0702405 -0.0943412 -0.0101619 0.0102547 0.0249505 -0.0167628 -0.0662422 0.0160787 0.0626117 0.0296212 -0.0492104 -0.0062321 -0.0028331 -0.0459536 0.0692981 -0.0145618 0.00318521 -0.0707953 0.122203 0.0940392 0.0318684 -0.0337353 0.0465867 -internal_weight=0 25289.7 16466.7 10689.2 8823.03 16735.7 6324.56 2498.47 8311.9 2377.26 1893.95 7816.49 5777.5 3290.49 4402.37 8919.24 1503.1 1922.2 4822.63 2632.33 2307.9 7416.14 1461.18 3896.64 1217.83 1061.27 432.769 1437.2 1538.11 3919.84 -internal_count=7859530 7496204 6756198 5937915 740006 363326 679402 60604 5352205 585710 239717 275229 818283 1739368 217919 88097 35411 461483 507954 173633 757802 52686 218022 235646 573656 9640 21695 50964 309437 39583 -shrinkage=0.12 - - -Tree=17 -num_leaves=31 -num_cat=0 -split_feature=11 0 7 0 0 11 3 1 2 11 1 2 0 3 3 11 12 0 0 1 7 1 11 2 0 7 1 7 0 7 -split_gain=3533.25 1601.76 1508.66 703.002 653.366 431.345 384.487 204.244 201.988 197.875 184.472 178.001 156.545 149.924 149.777 137.505 125.229 122.8 118.824 117.61 116.074 114.569 100.898 99.6832 98.4607 96.6469 91.5375 84.1494 93.0518 83.9748 -threshold=0.51666666666666672 23.223223000000001 1.0000000180025095e-35 35.82988550000001 35.449802500000011 0.31414473684210531 1.5000000000000002 1.5000000000000002 94824000.000000015 0.14907407407407411 1.5000000000000002 662385600.00000012 51.783302000000013 3.5000000000000004 14.500000000000002 0.82575757575757591 0.72077922077922085 20.077880000000004 11.867569500000002 1.5000000000000002 3.5000000000000004 1.5000000000000002 0.96666666666666679 283867200.00000006 22.481851500000001 1.0000000180025095e-35 1.5000000000000002 1.5000000000000002 28.355377000000004 2.5000000000000004 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 7 11 5 6 19 10 -1 -9 -5 24 -3 20 16 21 -12 26 -17 -10 -4 -11 -7 -8 -23 -2 -20 -6 -21 -29 -18 -right_child=4 2 3 9 13 14 22 8 18 12 15 -13 -14 -15 -16 17 29 -19 25 27 -22 23 -24 -25 -26 -27 -28 28 -30 -31 -leaf_value=-0.12451605774030372 -0.088592764246107195 -0.017166110179526902 -0.12256300951878424 -0.059374345390445962 -0.0054206178188282309 -0.072704186701433013 0.0074250571793031345 -0.033468181856828608 -0.047833550357014615 0.022066582251277833 -0.021730557813701982 0.13041381262428975 0.044311598927915856 0.078715029695740832 0.064340903034898714 -0.015344605579488822 -0.033191612094440909 0.030707974292624 -0.014680944242960785 0.031312097645943553 -0.02370643523632518 -0.0035047713988735412 0.054460566210237718 -0.048799057049097733 -0.020161288344392053 -0.11055103225008828 0.041721665324178418 -0.11448654672545297 -0.052663729233505353 0.071580340998890532 -leaf_weight=1673.7886951151395 411.14008260600895 132.23862811826257 1039.6524593866652 606.04218464143196 722.53509720307193 858.30913633625823 830.0028242514818 1206.8829210704134 699.57693102491976 1526.2947953788098 1627.3416603605729 1069.037534145551 1580.1017948925291 3039.152268813632 235.9368643448106 1115.5676174654363 115.21035941771697 3300.7281839630887 162.44385841405892 108.84545338834869 1671.2924682271223 1649.0188823910576 3146.1475578943209 1215.3248575830676 1148.5431626796562 2233.3388331436508 3311.155930683075 595.45203565658812 852.70444995216349 2504.7560239427839 -leaf_count=1700446 245178 17393 854614 166030 43759 627013 16316 181526 245317 88193 116912 11301 38237 16610 4944 106088 4232 99812 49250 30009 171887 160461 30246 233576 252186 1705732 49107 364478 216256 12421 -internal_value=0 -0.0374407 -0.0140155 -0.0269133 0.033646 -0.0533022 0.0144047 -0.0889485 -0.0751102 0.00521804 -0.00140805 0.114168 0.0134118 0.0566324 -0.0283711 0.00808739 0.0465456 0.0190749 -0.0913459 -0.0913089 -0.00185774 -0.0342475 0.0446423 -0.0227232 -0.0382015 -0.104051 0.0332773 -0.0704377 -0.0780858 0.0669728 -internal_weight=0 19116.3 13140.3 11939 21272.3 6555.24 11579.5 5976.03 4302.24 5383.73 7603.32 1201.28 4777.69 9692.81 3958.59 6043.64 6653.66 4416.3 3095.36 2596.65 3197.59 3722.65 3976.15 2864.34 1559.68 2395.78 4033.69 1557 1448.16 2619.97 -internal_count=7859530 6866663 2984392 2955698 992867 2491351 866738 3882271 2181825 464347 820176 28694 298317 126129 1025994 322812 109519 205900 2000299 1465357 260080 1021050 46562 394037 497364 1754982 92866 610743 580734 16653 -shrinkage=0.12 - - -Tree=18 -num_leaves=31 -num_cat=0 -split_feature=11 0 7 0 0 1 12 7 1 1 6 7 2 0 3 11 11 2 2 0 9 7 11 1 0 0 2 11 8 0 -split_gain=3115.13 1418.69 1280.39 627.352 590.839 446.851 268.717 243.791 232.122 194.064 183.469 178.303 171.631 150.731 140.225 129.021 123.099 122.53 91.5704 123.007 90.3236 87.5543 87.5088 85.4589 81.0774 79.6007 70.2788 68.4929 67.5684 61.8724 -threshold=0.51666666666666672 23.223223000000001 1.0000000180025095e-35 41.01957500000001 27.026261500000004 1.5000000000000002 0.60769230769230786 1.5000000000000002 1.5000000000000002 1.5000000000000002 1.0000000180025095e-35 1.5000000000000002 158068800.00000003 28.355377000000004 2.5000000000000004 0.28991596638655465 0.82575757575757591 378907200.00000006 94392000.000000015 1.0000000180025095e-35 2.5000000000000004 9.5000000000000018 0.27888888888888896 1.5000000000000002 45.25187300000001 27.250207500000005 283608000.00000006 0.27888888888888896 6.5000000000000009 17.967157500000003 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 9 10 5 8 22 14 26 -2 -1 -3 18 -10 27 24 -5 -14 23 -11 -20 -13 -15 -4 28 -6 -24 -7 -9 -8 -18 -right_child=4 2 3 15 6 7 17 13 12 11 -12 20 16 21 -16 -17 29 -19 19 -21 -22 -23 25 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.12328627681338711 -0.06021788878292697 -0.034429931405184043 -0.11618707301085397 -0.014119621306775305 0.0087108450200481229 0.029323975373240493 0.00090645667148221188 -0.11271974207906706 0.040142533070359733 -0.0080733584941785567 0.12766693021202502 -0.047242235438370125 -0.047315648206920517 -0.023275782628166129 0.054061736003229624 0.033256443043259129 -0.025902639078706689 0.040700808429919265 0.10153427585598541 -0.071626754840771995 -0.11050018646768522 -0.099924324925231928 -0.11732076505936954 0.080550456876584187 0.043922051307280434 -0.045799804112902381 -0.01993371964476234 -0.052932662482909759 0.072938501507921583 0.01551503473565756 -leaf_weight=1514.4418758056127 773.68235794029169 112.16642790414517 1053.8474856446746 1300.0234905290345 3703.3479167590122 1069.1545733999146 381.68796283518896 523.34709946267776 1823.1487613474455 593.32073072254025 969.80137156018463 405.51743413462191 775.24844853652758 2729.9873221139587 2199.2042078501836 2278.518734804471 667.68078423682891 2576.9985358144913 61.713781353915692 1368.1073544629617 1639.0848577825718 232.88504055386147 320.97722810646155 3868.5656202491373 1262.746022092877 742.43364319737248 683.86420342796919 583.82374477599114 368.60332914427272 2338.0388112221262 -leaf_count=1700446 380985 20302 893660 174638 221906 75776 16003 355971 48622 49133 8392 184459 78314 338927 21893 69532 72487 28780 7632 848000 1092601 66839 399132 16636 19011 297847 124745 158631 1705 86525 -internal_value=0 -0.0362562 -0.0139464 -0.0256699 0.0317879 -0.0444702 0.0452857 -0.0273045 0.0013943 -0.0866164 0.110862 -0.0729632 0.00990052 -0.0434186 0.0288358 0.0160456 -0.00468211 0.0616655 -0.0477055 -0.0641508 -0.0979548 -0.0293014 -0.0916797 0.073362 0.0176643 -0.0673902 0.0101082 -0.0811956 0.0362959 0.00631448 -internal_weight=0 18183 12600.8 11518.9 20739 7940.32 14361.2 5823.06 6377.8 5582.19 1081.97 4067.74 5604.12 4070.04 7165.3 3578.54 3780.97 7195.86 2023.14 1429.82 2044.6 2962.87 2117.26 4618.86 4966.09 1063.41 1753.02 1107.17 750.291 3005.72 -internal_count=7859530 6866663 2984392 2955698 992867 2711528 325934 1120889 666933 3882271 28694 2181825 285948 920368 262810 244170 237326 63124 904765 855632 1277060 405766 1590639 34344 240917 696979 200521 514602 17708 159012 -shrinkage=0.12 - - -Tree=19 -num_leaves=31 -num_cat=0 -split_feature=11 0 7 0 0 11 1 3 2 11 6 3 3 0 0 0 1 2 0 0 1 2 0 7 7 7 1 11 2 6 -split_gain=2776.01 1486.73 991.159 713.779 467.647 422.78 215.768 199.692 183.32 175.225 166.602 165.527 153.357 128.83 126.571 122.094 105.19 110.454 102.874 102.086 98.048 89.6543 78.8242 75.9444 73.3316 64.6358 63.1293 62.111 57.5307 56.2481 -threshold=0.67948717948717963 23.223223000000001 1.0000000180025095e-35 38.267659000000002 30.077133500000006 0.31414473684210531 1.5000000000000002 4.5000000000000009 157896000.00000003 0.29705882352941182 1.0000000180025095e-35 2.5000000000000004 24.500000000000004 48.846755000000009 5.2224168000000004 29.895107000000003 1.5000000000000002 63028800.000000007 55.906434000000004 26.418316500000003 1.5000000000000002 221054400.00000003 20.514205000000004 3.5000000000000004 2.5000000000000004 1.5000000000000002 1.5000000000000002 0.11651583710407241 59054400.000000007 1.0000000180025095e-35 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 6 10 5 7 15 -1 16 28 27 -3 19 13 20 29 25 -2 -18 24 26 -6 -22 -19 -17 -11 -4 -7 -5 -8 -10 -right_child=4 2 3 9 12 11 8 -9 14 18 -12 -13 -14 -15 -16 23 17 22 -20 -21 21 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.12162460616967062 -0.038193884680002232 -0.032346274368158602 -0.014322435483087094 -0.066175789963838688 0.0004822057853577834 -0.113924449817011 0.0033359826824606096 0.050902118706901471 -0.053135518324417305 0.03939861488345605 0.1252551848781201 0.01941673215280176 0.093660520845520803 0.067489421612928382 -0.095720741737854775 -0.010768397600557355 0.063758215577764787 -0.022389292843803622 0.056099959090339213 -0.022374393087938302 0.065563413495696624 0.031277170704255203 0.013622076997169535 -0.073592975592804741 0.00053082415422627254 -0.11435156643280808 -0.047088779401877799 -0.007311733402291215 -0.049481666671758621 0.086391309454236009 -leaf_weight=1432.6707155472686 818.49092253931303 108.72428216824665 100.94354039755672 325.90367476117535 896.60869689987157 280.01784896385288 377.67351012225026 1503.6958739652764 88.574234217810044 1123.7306659323804 864.47282233368605 1123.3485382188665 1183.5196969859535 3049.3273581183021 2360.0886218162905 398.48770590412823 467.93448980170069 1283.3082761285914 1263.2182665521395 3561.4929090636178 1726.3599351736193 3018.6475538300292 2752.6269041180494 909.45249786254317 1849.260537850656 1186.6309746100687 744.92960766562464 1240.770953311825 1389.5266422191689 78.408902352268342 -leaf_count=1745486 334791 20302 76709 97618 60478 366665 34738 10540 27805 46046 8392 39895 4196 16858 1811079 84388 6331 119924 14118 614374 14466 49382 92141 337556 75724 1044031 199363 138769 359030 8335 -internal_value=0 -0.0292463 -0.00948021 -0.01756 0.03644 -0.0401217 -0.0812983 0.0122883 -0.0678437 0.0147311 0.107648 -0.0218673 0.0531356 0.0476167 -0.0885773 -0.0802782 0.0013787 0.00857045 0.0274122 -0.0319789 0.0368751 0.0437518 0.00217144 -0.054453 0.0152223 -0.10651 -0.0653512 -0.0195578 -0.038194 0.0123847 -internal_weight=0 20808.3 15081.4 14108.2 16700.5 8305.3 5726.94 6826.06 4294.27 5802.88 973.197 5709.79 9874.46 8690.94 2527.07 2595.51 5322.36 4503.87 4236.21 4586.44 5641.62 4745.01 4035.94 1307.94 2972.99 1287.57 1024.95 1566.67 1767.2 166.983 -internal_count=7859530 7150423 3163950 3135256 709107 2762981 3986473 563727 2240987 372275 28694 1220297 145380 141184 1847219 1542684 553187 218396 135888 1180402 124326 63848 212065 421944 121770 1120740 566028 236387 393768 36140 -shrinkage=0.12 - - -Tree=20 -num_leaves=31 -num_cat=0 -split_feature=12 3 1 0 3 0 0 7 7 0 3 7 0 6 2 3 8 11 2 12 7 0 6 0 1 11 2 2 11 3 -split_gain=2465.76 1239.17 617.137 444.013 406.697 326.873 302.833 225.826 222.451 223.929 182.429 180.809 162.587 140.447 107.465 95.1046 85.4411 81.4537 80.9619 78.3877 77.0276 97.834 77.1926 72.3779 83.2754 67.3175 67.064 64.8038 63.2649 60.8261 -threshold=0.44949494949494956 1.0000000180025095e-35 1.5000000000000002 22.741666500000004 9.5000000000000018 30.664758000000003 40.27922800000001 1.0000000180025095e-35 1.0000000180025095e-35 33.642312000000004 1.0000000180025095e-35 2.5000000000000004 36.697481500000002 1.0000000180025095e-35 157982400.00000003 3.5000000000000004 1.0000000180025095e-35 0.18465909090909094 59054400.000000007 0.63068181818181823 1.0000000180025095e-35 38.267659000000002 1.0000000180025095e-35 63.388565000000007 1.5000000000000002 0.24068965517241384 599486400.00000012 126273600.00000001 0.27888888888888896 29.500000000000004 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 5 7 8 -1 10 -4 13 18 19 20 25 -3 -9 23 -6 -7 -10 -2 22 -22 -5 24 -8 -13 -15 -12 -20 -29 -right_child=6 4 3 11 16 17 15 14 9 -11 27 12 -14 26 -16 -17 -18 -19 28 -21 21 -23 -24 -25 -26 -27 -28 29 -30 -31 -leaf_value=-0.11306945339064406 -0.0081402450592583525 0.015524599495144179 -0.019003554471095703 0.018200592737198724 0.11511138365647436 -0.09930884998300836 -0.00013306475754342123 -0.05418262794182073 0.029515772918962513 0.014281527612634839 0.067309294686639931 -0.092572042316221334 -0.0047357490465232549 -0.0063578039896441067 -0.10690751265026867 0.079100927527858911 0.04950793344720783 -0.032743584171347755 -0.079222410043151698 0.025188150013053998 -0.015531307454135682 0.042568312093767692 0.10281587753524879 0.0712443310860877 0.047855912421779188 -0.039947248845882417 0.12403389777964827 0.025162819769857382 -0.034222807429429659 0.069659381112920915 -leaf_weight=2537.9137001681493 2554.3884337335767 1004.0905347922962 1040.8573405745956 530.44125561551482 357.39502538270608 326.57357705202503 667.23855141708918 916.46264919359055 221.66542111926537 1988.0486976467164 979.55682861251989 573.60352971159682 1546.1542440092162 69.193986078433227 1418.3616938657415 1994.4997142681095 1428.7256948623781 1397.3231319325459 617.89508604672483 1687.5229779624788 1715.584406996988 551.49314024928026 219.47743528911087 1289.9704560253303 2371.1048537887982 898.22372957434618 317.02068585343659 2800.7172125327052 1654.8276636319606 525.35908730584197 -leaf_count=3233806 203043 46666 209135 30792 10391 192856 19616 277129 19586 90584 7186 366213 129666 3371 1421936 8257 40853 313834 262044 56846 337363 19763 3363 4620 21261 220342 3686 40196 262825 2301 -internal_value=0 -0.0261483 -0.0477952 -0.0306383 0.0124954 -0.0856796 0.0375094 -0.06549 -0.00275468 -0.0157617 0.0227809 -0.0111437 -0.0319109 0.0391801 -0.086213 0.0574201 0.0626366 -0.0453552 -0.0397062 0.00511859 0.00963048 -0.00139752 0.0429679 0.0474291 0.0373173 -0.0604578 0.100674 0.0401816 -0.0464579 0.0321917 -internal_weight=0 21331.3 13672.5 9410.66 7658.86 4261.81 14870.4 3375.68 5872.74 4482.44 8547.54 6034.98 3017.98 1390.31 2334.82 6322.81 1786.12 1723.9 2494.39 4241.91 3017 2267.08 749.919 4328.31 3038.34 1471.83 386.215 4305.63 2272.72 3326.08 -internal_count=7859530 7496204 6756198 3015702 740006 3740496 363326 1908200 688762 635039 309572 1107502 716221 53723 1699065 53754 51244 506690 544455 259889 391281 357126 34155 45497 40877 586555 7057 49683 524869 42497 -shrinkage=0.12 - - -Tree=21 -num_leaves=31 -num_cat=0 -split_feature=11 0 7 0 0 11 3 0 1 0 7 7 6 1 1 11 11 2 2 9 2 4 7 6 2 0 3 0 1 11 -split_gain=2218.24 986.112 815.457 464.459 443.755 267.61 262.942 192.716 164.209 158.775 166.437 154.724 149.515 147.314 129.705 116.587 114.687 108.392 97.0713 90.3359 89.6142 89.0815 82.5232 68.5529 99.4955 73.9111 68.4913 67.9012 60.3367 57.4715 -threshold=0.51666666666666672 23.223223000000001 1.0000000180025095e-35 24.096014000000004 33.324993000000006 0.31414473684210531 8.5000000000000018 55.906434000000004 1.5000000000000002 48.846755000000009 3.5000000000000004 1.5000000000000002 1.0000000180025095e-35 1.5000000000000002 1.5000000000000002 0.82575757575757591 0.82575757575757591 378907200.00000006 220708800.00000003 2.5000000000000004 221054400.00000003 6.5000000000000009 1.5000000000000002 1.0000000180025095e-35 220708800.00000003 1.0000000180025095e-35 53.500000000000007 27.577402000000003 1.5000000000000002 0.097619047619047633 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 8 12 14 5 22 7 13 -1 10 -6 23 -3 21 -2 -15 -16 -18 28 -13 -17 -5 -4 24 -10 -25 -8 -20 -7 -11 -right_child=3 2 4 6 9 18 26 -9 11 29 -12 19 -14 15 16 20 17 -19 27 -21 -22 -23 -24 25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.11923704260745896 -0.066020379189799666 -0.031285412924853026 7.496101367373176e-05 -0.019216444613515491 0.011222578799350616 -0.055459247180955219 0.060159282235141727 0.062880427415535262 -0.025880123052024088 -0.062245822668143137 -0.038435592858016607 -0.038946569561306807 0.12298586785573143 0.0089137997246983361 -0.04285799857601013 0.059913568148314854 0.026191938559870453 -0.023284400603227996 -0.084035303158402241 -0.10708473096918457 0.027887714425530709 0.060209120569291799 -0.097452693849378436 0.14904959257054046 -0.088866853088987618 -0.015579286345874757 0.10579838161049568 -0.030898935507021396 0.0044833279768183246 0.032134679960078308 -leaf_weight=1142.6285152662513 489.94012725718676 103.99476912561477 136.16780364541773 1547.0802824334878 1855.2815967770002 303.09329677185406 2403.9085187389283 2052.1049031256116 827.55515957285888 97.858385598708992 2041.2352358655771 354.30329030836765 694.70866787133855 2701.0938167227869 729.06129710515961 1963.054353440355 1989.1620698789411 938.40155030765163 557.53494239342808 1340.1213712220565 3504.111848496279 234.08393313193301 1514.4248449508968 45.579857151431497 640.76588586201797 282.48416810577328 589.72397975274362 914.12820347131947 1195.4345114730531 1826.8360845326533 -leaf_count=1700446 303836 20302 83888 226998 154205 289838 14266 10943 205832 27451 387807 184459 8392 81072 76647 22826 82884 80952 383600 1092601 74502 15749 1271082 843 600621 97469 2192 179956 107576 70295 -internal_value=0 -0.0331664 -0.013964 0.0275047 -0.022903 -0.0506687 0.0373343 0.0293979 -0.079751 -0.000862916 -0.0147915 -0.0668253 0.102899 0.0224918 -0.00804164 0.0293103 -0.000272767 0.0103327 -0.0291403 -0.092838 0.0393873 -0.00877735 -0.0894072 -0.042288 -0.0533684 0.00730511 0.0691508 -0.0510308 -0.00764157 0.0273351 -internal_weight=0 15874.1 11240.7 19141.7 10442 4620.78 14995.2 12001.5 4633.44 5821.21 3896.52 3490.81 798.703 9949.42 4146.57 8168.26 3656.62 2927.56 2970.19 1694.42 5467.17 1781.16 1650.59 1796.39 1468.32 328.064 2993.63 1471.66 1498.53 1924.69 -internal_count=7859530 6866663 2984392 992867 2955698 2315940 448548 432090 3882271 639758 542012 2181825 28694 421147 544319 178400 240483 163836 960970 1277060 97328 242747 1354970 904765 806453 98312 16458 563556 397414 97746 -shrinkage=0.12 - - -Tree=22 -num_leaves=31 -num_cat=0 -split_feature=11 0 7 0 0 1 1 11 3 2 2 3 11 0 0 3 2 0 7 0 1 0 2 7 2 2 6 0 4 2 -split_gain=1989.61 1030.57 641.294 524.17 380.308 368.269 181.399 179.041 161.115 139.05 137.369 136.68 116.507 103.876 101.95 91.5629 78.579 80.5256 77.6324 72.3042 67.4775 64.6579 63.8632 63.2228 59.4751 58.2967 56.6645 50.6107 46.3382 45.6856 -threshold=0.67948717948717963 23.223223000000001 1.0000000180025095e-35 45.25187300000001 30.077133500000006 1.5000000000000002 1.5000000000000002 0.47213622291021679 4.5000000000000009 220708800.00000003 662385600.00000012 8.5000000000000018 0.36038961038961043 5.2224168000000004 27.946536000000005 3.5000000000000004 33998400.000000007 21.372305500000003 4.5000000000000009 48.846755000000009 1.5000000000000002 63.388565000000007 315662400.00000006 5.5000000000000009 315835200.00000006 189345600.00000003 1.0000000180025095e-35 26.917887500000003 39.500000000000007 59054400.000000007 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 6 10 5 8 12 28 14 16 29 -3 19 -4 -11 25 21 -2 -18 -16 20 -6 23 -9 -5 -22 -7 -12 -14 -1 -8 -right_child=4 2 3 15 11 7 9 22 -10 13 26 -13 27 -15 18 -17 17 -19 -20 -21 24 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.12187870289089017 0.051215544914132723 -0.021115660167176593 -0.097818836050019647 0.023942627260656747 0.00011550767098052023 -0.037813963681080802 -0.0011698424862211134 0.012564348276784782 0.045805744309525775 0.014962972370639968 -0.070586904499270797 0.0752660028655837 -0.10422044388316 -0.094297387068368418 -0.0091928776461838151 0.067433112725982541 -0.025802006871942805 0.0070553969192642119 -0.050146111821225844 0.056428270479506028 0.051764382269356993 0.044970353106288878 -0.019123160732246746 -0.019080384318884397 0.021599191318434983 -0.10558106407744143 0.12972221587332911 -0.029856324601551056 0.01550885601393817 -0.048345710458283911 -leaf_weight=1056.6167360248974 388.38980958933371 113.23713395487903 1232.4504849956284 1068.4977108708772 839.02598186633622 320.76775611077619 363.33189013044694 2383.6769116071155 1370.024644633173 135.64293212425855 21.046269634985947 1999.5985728717933 157.65660929908881 1642.0627615785274 1587.1228571562606 598.56620097097766 1694.6879022766825 2932.7401836767376 1149.1474578084571 2442.6526116718887 2023.2021151454246 777.8570279981941 1487.3233659975085 911.32815962016321 1760.0606984927872 425.1068793793479 588.48445774248103 802.75673052366983 36.568520061039635 1585.6304999010481 -leaf_count=1713237 28675 17393 1229907 41545 60474 126773 34738 137443 10540 32126 4362 10010 252165 1594809 190324 6816 301867 222645 259415 15696 22882 23666 160911 86153 36318 360657 6939 259481 32249 579314 -internal_value=0 -0.0266089 -0.00973826 -0.0159002 0.0317661 -0.0302418 -0.0742995 -0.0173704 0.00933533 -0.06169 0.100255 0.0475682 -0.0734017 -0.0859605 -0.0371131 0.0248911 -0.000626441 -0.00497795 -0.0263923 0.0397286 0.0309033 0.0156565 0.000389257 0.00413883 0.0377311 -0.0764401 0.122803 -0.0420664 -0.117283 -0.0395512 -internal_weight=0 18444.9 13625 12902.3 15450.4 9546.01 4819.85 7353.15 6385.84 3726.67 722.768 9064.54 2192.86 1777.71 3482.14 3356.25 5015.82 4627.43 2736.27 7064.94 4622.29 2757.68 3871 1979.83 3783.26 745.875 609.531 960.413 1093.19 1948.96 -internal_count=7859530 7150423 3163950 3135256 709107 2977076 3986473 1235523 563727 2240987 28694 145380 1741553 1626935 937169 158180 553187 524512 449739 135370 119674 151364 298354 127698 59200 487430 11301 511646 1745486 614052 -shrinkage=0.12 - - -Tree=23 -num_leaves=31 -num_cat=0 -split_feature=12 3 0 7 3 0 11 3 7 0 1 0 1 0 1 7 7 11 11 11 4 3 6 2 0 6 11 1 2 6 -split_gain=1789.06 869.689 491.209 447.619 289.181 239.667 190.767 147.393 145.61 154.37 131.344 109.505 106.544 85.0122 84.762 97.6488 79.5687 69.9316 69.4176 66.2982 64.2142 63.6901 61.9564 58.9371 54.6904 54.6257 54.493 52.3808 58.4936 52.8758 -threshold=0.44949494949494956 1.0000000180025095e-35 29.394558500000006 1.0000000180025095e-35 8.5000000000000018 39.539316000000007 0.36931818181818188 1.0000000180025095e-35 1.0000000180025095e-35 33.981020000000008 1.5000000000000002 17.719184000000002 1.5000000000000002 23.117341500000006 1.5000000000000002 4.5000000000000009 1.0000000180025095e-35 0.76388888888888895 0.14907407407407411 0.43303571428571436 1.5000000000000002 61.500000000000007 1.0000000180025095e-35 220708800.00000003 46.836120500000007 1.0000000180025095e-35 0.4188596491228071 1.5000000000000002 62856000.000000007 1.0000000180025095e-35 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 3 11 8 7 -5 17 13 26 18 -1 -8 -3 15 -7 25 -2 -4 24 -17 -16 -15 -14 -12 -6 -10 29 -29 -19 -right_child=5 4 10 6 16 14 12 -9 9 -11 19 -13 23 22 21 20 -18 27 -20 -21 -22 -23 -24 -25 -26 -27 -28 28 -30 -31 -leaf_value=-0.044937843928854734 -0.02996780089288004 -0.0049344478813905688 -0.10475514769742246 -0.10442419031717187 0.056673409664417043 -0.044099920668481896 -0.1051719720641018 0.035908346249828804 -0.055724873821940774 0.011463156824123962 -0.030585200944995637 0.013456785797362309 -0.021017528318619579 0.035954513454385821 0.054319156407765412 0.01986417551149431 0.034041816194937818 -0.044321848375147251 -0.034090376138832694 0.014277573199955285 0.098896094212773539 0.11594909497120841 0.11309066858813042 -0.066336401398407019 0.012737815681731391 0.13004970635399399 -0.018299664981020414 0.091378308396540611 0.014772999460851841 0.016337744619131109 -leaf_weight=882.01175734277331 759.18866665812675 504.74365154219777 232.30709592416451 2758.9611063531847 337.96947242936585 259.59710168850143 503.6869108364408 3800.8078084446461 1046.1212942888178 1798.7784726893697 1441.277814011557 972.03988071702588 885.67291046969967 490.20606207221863 4741.0671986662055 545.8092570725712 1111.5933438194406 432.34840165006244 1447.0243788086605 1673.2771254089603 203.12427628226578 254.41973210172728 216.02376158641709 774.71020284133465 591.90521653727046 257.43407579197083 1206.2789990560286 153.67262900670175 2169.8589864297683 396.83459115598816 -leaf_count=324908 59400 38303 178851 3467157 4839 16762 948819 48443 388076 86302 276038 256429 180174 11613 33649 5664 50001 90167 437794 86773 935 945 3095 561534 37721 2754 155023 1364 65652 40345 -internal_value=0 -0.0237126 -0.0430792 -0.0645772 0.010087 0.0330742 -0.0835031 0.0190789 -0.0038354 -0.0147491 -0.0160275 -0.0143231 -0.0568299 0.0326746 0.0510522 0.0193189 0.0530047 0.00272725 -0.0438673 -0.00341346 0.0413022 0.0574586 0.059553 -0.0421635 -0.0179729 0.088404 -0.0356822 0.0106006 0.0198406 -0.0152915 -internal_weight=0 19132 12162.9 6777.08 6969.15 13716.7 4923.03 7712.71 5262.15 4051.18 5385.79 1854.05 2164.07 1210.97 6004.02 1008.53 1707 3911.9 1679.33 3706.46 748.934 4995.49 706.23 1660.38 2033.18 595.404 2252.4 3152.71 2323.53 829.183 -internal_count=7859530 7496204 6756198 5739021 740006 363326 5157684 305371 682412 629401 1017177 581337 1690527 53011 57955 23361 57594 256928 616645 400532 6599 34594 14708 741708 313759 7593 543099 197528 67016 130512 -shrinkage=0.12 - - -Tree=24 -num_leaves=31 -num_cat=0 -split_feature=11 0 1 7 0 0 7 12 1 0 2 11 3 1 2 0 0 2 0 0 2 2 0 0 11 2 2 2 7 0 -split_gain=1614.84 925.027 412.313 324.946 296.089 280.924 238.821 179.062 165.564 156.044 143.503 142.099 133.29 104.878 92.8554 80.3337 76.5994 76.598 76.3513 67.8562 64.5707 58.1752 57.2282 56.0364 55.4241 51.5302 51.3683 49.3764 48.1712 47.748 -threshold=0.76388888888888895 24.035689000000001 1.5000000000000002 1.0000000180025095e-35 28.208573500000004 43.939336500000003 1.0000000180025095e-35 0.22902097902097904 1.5000000000000002 18.203359500000005 220881600.00000003 0.47213622291021679 11.500000000000002 1.5000000000000002 315316800.00000006 30.464548000000004 45.25187300000001 189518400.00000003 1.0000000180025095e-35 28.355377000000004 662385600.00000012 378302400.00000006 63.388565000000007 21.515842500000002 0.39230769230769241 284212800.00000006 121867200.00000001 688910400.00000012 8.5000000000000018 11.867569500000002 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 6 7 20 13 11 9 15 -8 18 -10 17 16 -2 -15 -3 25 -5 -1 -19 -4 -7 -9 -16 -12 -6 -13 -25 -21 -26 -right_child=4 2 3 5 12 21 8 22 10 -11 24 26 -14 14 23 -17 -18 19 -20 28 -22 -23 -24 27 29 -27 -28 -29 -30 -31 -leaf_value=0.11121580986298407 -0.040370579404558238 -0.11150854913251282 0.0039742359085117212 -0.0078196325690613536 0.04225462596211501 0.043263235176263182 -0.12172310553978127 -0.025710162487311596 -0.042807041757177512 0.075503958028038873 -0.11380488754870248 0.028734931769233803 0.076976074400845598 0.030372093189842221 -0.030675936885308057 -0.054131190101372913 0.054518887589625059 -0.099092903369457142 -0.054974762651466343 -0.029749892820200727 0.12337803390223678 0.0094816957038895335 0.042260107741618619 -0.0027162604115142084 0.0097157136834222137 0.015593710426684282 -0.0051875414444766416 0.053524413547317372 -0.093131139162097865 -0.080336261146024698 -leaf_weight=43.378058188826799 557.87636056836891 556.1377565834382 78.627323459571926 1111.6448683167982 1991.9098341486442 1895.8762140288964 940.72113492275184 1111.2695246022454 1892.419487339587 240.86098760429286 808.94648452174329 800.83128534213756 1585.3071830450208 2455.5116125419372 741.50058761306718 954.64948858731304 2596.4453379047045 307.28643540576968 480.17040575646843 1406.0415652824827 382.41358003157802 1197.9225586381654 212.45253232232062 904.63205403677421 98.400890894475651 2193.6316284166787 3257.1678225491141 299.08935289499641 196.83250631240662 612.55243414704546 -leaf_count=2300 301487 932498 5282 223224 56659 51773 1883240 238263 652809 55431 1080865 26342 8221 78618 82954 431797 19711 287683 193495 233046 6328 42560 2653 31049 35160 71195 242983 9103 67421 505380 -internal_value=0 -0.0228567 -0.00635544 0.00448391 0.0318798 1.84034e-05 -0.0662877 -0.0470227 -0.0771508 -0.00442549 -0.064862 -0.0131634 0.0456497 0.00864404 0.0148578 -0.0752542 0.0383268 -0.0328642 -0.0411996 -0.0474389 0.103016 0.0301832 -0.0148005 -0.00472651 -0.0923212 0.0282819 0.0015071 0.0112589 -0.0375347 -0.0678726 -internal_weight=0 18586.6 13469.2 10634.6 13325.9 10173.6 5117.45 2834.51 4353.04 764.409 3412.32 7079.8 8367.29 4958.61 4400.73 1510.79 6781.99 3021.81 523.548 1910.16 461.041 3093.8 1323.72 1945.22 1519.9 4185.54 4058 1203.72 1602.87 710.953 -internal_count=7859530 7200533 2791853 1186642 658997 1175032 4408680 1605211 4157454 251226 2274214 1080699 155786 503211 201724 1364295 147565 811374 195795 588150 11610 94333 240916 123106 1621405 127854 269325 40152 300467 540540 -shrinkage=0.12 - - -Tree=25 -num_leaves=31 -num_cat=0 -split_feature=11 0 3 0 0 7 7 1 7 3 2 6 3 11 12 2 7 1 7 2 1 1 2 3 6 12 11 0 4 2 -split_gain=1460.44 737.882 317.953 290.559 244.829 220.329 181.611 165.08 136.08 131.742 122.147 119.947 109.496 106.167 102.895 93.3399 92.3753 74.3372 97.7198 73.9199 71.1979 64.7043 69.1101 58.3811 54.5352 53.9188 51.576 48.7241 46.6021 45.7387 -threshold=0.67948717948717963 24.035689000000001 2.5000000000000004 30.077133500000006 38.267659000000002 1.0000000180025095e-35 2.5000000000000004 1.5000000000000002 1.0000000180025095e-35 4.5000000000000009 220708800.00000003 1.0000000180025095e-35 39.500000000000007 0.28991596638655465 0.23303167420814483 662385600.00000012 1.0000000180025095e-35 1.5000000000000002 3.5000000000000004 157896000.00000003 1.5000000000000002 1.5000000000000002 63028800.000000007 27.500000000000004 1.0000000180025095e-35 0.62019230769230782 0.39230769230769241 26.418316500000003 60.500000000000007 694180800.00000012 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 5 4 9 6 11 16 -7 -4 21 -9 -1 17 -6 20 -13 24 18 -5 -19 -8 28 -23 -10 -3 -21 -12 -18 -2 -17 -right_child=3 2 8 12 13 7 14 10 23 -11 26 15 -14 -15 -16 29 27 19 -20 25 -22 22 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.036992575294270379 -0.040182075952172498 -0.029876125312185857 0.12334390636940019 -0.02975206225724979 -0.025952597641608274 -0.12426781233506229 -0.10804829130712294 -0.042678658771641134 0.011847398339618511 0.042135082409304671 -0.11160458520744108 -0.054498312824631245 0.094522465484945944 0.016562814396555298 -0.026645050803749497 0.13048850519205743 -0.052834439370762196 0.066273555481846921 0.038564281020996238 0.021343850717382037 -0.056765319201024483 0.050430832112831087 -0.00088654316193046952 0.060707867835338547 0.099269061855706678 0.046763975517904552 -0.063999535528719342 -0.011022539889043842 0.1295980858927919 -0.1774151091862238 -leaf_weight=510.27979260734628 697.7353923312894 67.03278931103705 208.92693422880166 491.9819411682729 1199.243001479972 818.41253086203324 594.05067816739074 1740.3958266065106 1709.3554184256382 1265.8755863092956 755.02238124052337 64.058105160594096 540.60772830079077 2869.4439254942408 1041.6363470403808 154.36622199089106 502.36750920918621 1598.6689545037225 778.66224364152004 1996.9772578694974 1134.4209438415528 422.18848621187499 3600.0836532675312 443.48801826448471 158.10341933294694 3016.970499833842 579.36252093045823 1995.2113425678808 24.055482780624516 7.2493717380257285 -leaf_count=225280 331860 15224 2787 54482 227572 1876290 780124 626214 83467 10540 1097548 17254 2231 123552 188691 4442 367532 10852 11574 44641 536637 6331 212065 7827 3364 21600 540423 421945 2931 4250 -internal_value=0 -0.0243275 -0.00854056 0.0278983 -0.0182797 -0.0649896 -0.034806 -0.076372 0.0308876 0.00774114 -0.0636225 -0.00477579 0.0422792 0.00403132 -0.0564384 0.0680661 -0.0127968 0.0386962 0.0121127 0.0438043 -0.0743921 -0.00143654 0.0045002 0.0219134 0.0608181 0.0366397 -0.0909374 -0.0194332 -0.0345186 0.116647 -internal_weight=0 16552.4 11923.3 14433.8 9561.51 4629.15 5492.82 3893.19 2361.77 6009.94 3074.78 735.953 8423.87 4068.69 2770.11 225.674 2722.72 7883.26 1270.64 6612.62 1728.47 4744.06 4022.27 2152.84 225.136 5013.95 1334.38 2497.58 721.791 161.616 -internal_count=7859530 7150423 2758722 709107 2664641 4391701 2313517 4140475 94081 563727 2264185 251226 145380 351124 1505452 25946 808065 143149 66056 77093 1316761 553187 218396 91294 18588 66241 1637971 789477 334791 8692 -shrinkage=0.12 - - -Tree=26 -num_leaves=31 -num_cat=0 -split_feature=11 0 7 0 0 3 11 1 11 6 7 0 11 9 12 1 3 7 2 2 2 7 11 2 3 8 1 0 0 2 -split_gain=1321.36 554.239 397.463 320 297.146 205.024 160.062 121.736 117.907 112.902 108.964 106.082 94.008 86.5075 84.7092 94.4343 79.1336 77.5682 75.399 72.6729 64.8776 60.2976 58.7745 57.841 56.8274 46.4292 86.1275 46.3627 45.075 64.9283 -threshold=0.51666666666666672 23.062892000000002 1.0000000180025095e-35 40.27922800000001 31.309764500000004 1.0000000180025095e-35 0.29705882352941182 1.5000000000000002 0.43303571428571436 1.0000000180025095e-35 1.5000000000000002 63.388565000000007 0.88194444444444453 2.5000000000000004 0.63068181818181823 1.5000000000000002 3.5000000000000004 4.5000000000000009 346766400.00000006 221140800.00000003 158155200.00000003 1.5000000000000002 0.097619047619047633 662385600.00000012 65.500000000000014 8.5000000000000018 1.5000000000000002 25.784979000000003 -1.0000000180025095e-35 283867200.00000006 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 7 9 5 6 14 21 -1 11 -3 28 17 -7 -12 15 -2 25 -6 24 -17 -8 -4 -19 -11 -14 26 -5 -22 -9 -30 -right_child=3 2 4 16 8 12 20 10 -10 23 13 -13 18 -15 -16 19 -18 22 -20 -21 27 -23 -24 -25 -26 -27 -28 -29 29 -31 -leaf_value=-0.11324203347804607 -0.046967658552448263 -0.026113417764724693 -0.0012103221442659714 -0.01235714961927498 -0.0032302214566891068 -0.0016749824681369741 -0.0075521242378290684 0.070954832797332182 0.020930666249830841 -0.041590248509543584 -0.025835970685449641 0.038646430058637875 0.043618712347286204 -0.1006396415221625 0.01955645381986371 0.016304937446402972 0.066209861520475949 -0.092292991820163928 0.013741711440683861 -0.019045501086441975 -0.091674856340874369 -0.099167747425770822 -0.030389251124145922 0.12765951170865936 0.11888876155896869 0.064956551345136018 0.038663437927070485 -0.036106476305416982 -0.022030578583227437 -0.075511856689711609 -leaf_weight=724.14894800988077 955.30750962888487 100.96703671700016 100.62447348313879 572.96163321913627 1675.9277858940163 1240.2387941983689 941.59333975559957 54.456520401799935 1878.6282422494442 31.393420186606818 287.22891061650967 464.77319968104712 2513.258493057685 990.11189306002075 1485.4689256732527 1434.6371583356449 1753.9824173303932 253.32339897951715 1423.5892078962643 2011.5885401434825 288.35926455757044 898.24791215971811 1722.7427185973652 391.78636120906958 153.22659837594256 655.08019665640313 2827.9920714459149 864.21633719069177 961.3787267335324 495.28998697112866 -leaf_count=1649075 477873 21261 84681 26644 230996 40448 308929 8040 125673 1501 180003 21902 36029 1074055 56139 70169 9535 114782 33057 209198 327269 1187920 344536 7028 692 1887 31196 290108 332872 556032 -internal_value=0 -0.0286121 -0.0137056 0.0220551 -0.0195657 0.0102157 -0.0497745 -0.0694045 -0.00398065 0.0878993 -0.0580191 -0.0153486 0.0272651 -0.0838199 -0.00522148 -0.0135838 0.0449131 -0.0222206 0.0360406 -0.00432937 -0.0309207 -0.0893 -0.0383263 0.115102 0.0479453 0.0357031 0.0300679 -0.050011 -0.0362086 -0.0402162 -internal_weight=0 13125.2 9612.58 17027.3 9088.44 11217.3 3093.04 3512.61 5995.4 524.147 2788.47 4116.77 5330.31 1277.34 5887 4401.53 5810.02 3651.99 4090.07 3446.23 2094.17 998.872 1976.07 423.18 2666.49 4056.03 3400.95 1152.58 1511.13 1456.67 -internal_count=7859530 6866663 3066586 992867 3036796 923605 2198907 3800077 837889 29790 2151002 712216 110226 1254058 813379 757240 69262 690314 69778 279367 926306 1272601 459318 8529 36721 59727 57840 617377 896944 888904 -shrinkage=0.12 - - -Tree=27 -num_leaves=31 -num_cat=0 -split_feature=12 1 3 0 0 3 7 7 9 0 0 0 0 7 2 7 11 8 0 0 2 0 2 2 0 1 4 2 2 11 -split_gain=1220.23 565.22 388.2 259.918 255.696 179.839 173.178 163.234 139.649 133.262 82.5038 77.1711 73.0993 101.774 70.0016 68.4655 66.2371 58.7342 58.3483 55.9739 51.3184 50.9312 49.7405 48.3467 47.9954 47.3298 47.1769 46.386 46.3171 44.6767 -threshold=0.44949494949494956 1.5000000000000002 5.5000000000000009 22.323515500000003 28.927267500000003 2.5000000000000004 1.0000000180025095e-35 2.5000000000000004 6.5000000000000009 51.783302000000013 51.783302000000013 24.554782000000003 38.267659000000002 1.0000000180025095e-35 157982400.00000003 1.0000000180025095e-35 0.14907407407407411 1.0000000180025095e-35 12.226027000000002 20.573342000000004 434980800.00000006 43.939336500000003 63028800.000000007 662385600.00000012 40.27922800000001 1.5000000000000002 6.5000000000000009 157896000.00000003 59054400.000000007 0.82575757575757591 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 4 3 6 -1 9 28 12 10 11 -9 -2 13 17 -8 19 -6 23 -16 -4 -19 29 -15 -5 -17 26 -13 -27 -3 -7 -right_child=5 2 15 7 16 21 14 8 -10 -11 -12 25 -14 22 18 24 -18 20 -20 -21 -22 -23 -24 -25 -26 27 -28 -29 -30 -31 -leaf_value=-0.10447762755920345 -0.013322682739800536 0.051185019493973499 0.0058937945000193757 0.0049269957254268913 -0.10040320100992592 0.00095577826836464768 -0.044719862905836308 -0.024369671051096962 -0.068968714101518377 0.046531785994237171 0.021719478038431932 -0.012681200001796419 0.039626074018468023 0.036017846206155536 -0.03483520316179483 0.0070386062259459739 -0.02670757830695622 0.030749233284516515 -0.10186279479295798 0.092969113126818298 -0.038294563047792461 0.067863709496853192 -0.018993933116088015 0.11067859408499875 0.054717072422673256 0.048659802308515014 0.055625735417131991 0.017086700592665538 -0.019804647226411055 0.046022049916396669 -leaf_weight=1431.9171071398612 1503.2169939965461 149.4340032217674 137.9652783992351 91.083297744917218 199.24890819484244 370.93556862673722 1053.9198898641637 2353.267981473301 825.94408412143184 1913.9562144832016 733.63003602434765 1041.4233731330896 870.66094596403127 265.54419655768288 236.91297221109085 847.37340622092233 1479.8987975824532 664.12261077390576 888.71502184561314 463.29604198702145 202.19164222902327 1412.9869256892125 2175.469115707685 196.65860474414148 474.13174779650581 858.63967731902085 169.2343609966847 3050.8941859623737 1155.6584335768102 2169.1968602901034 -leaf_count=3108210 114468 4201 5347 7726 193173 4898 337164 440418 485320 12580 24569 116925 28672 14525 174285 70047 484820 19575 1374458 5320 16117 7283 453191 6718 7500 10875 7169 69114 234848 20014 -internal_value=0 -0.0210235 -0.0105973 -0.0187042 -0.0672239 0.0284404 -0.0462466 -0.00724921 -0.0251428 0.0186422 -0.0134161 0.0105828 0.00842914 0.000873537 -0.0669471 0.0394205 -0.035454 0.0302372 -0.0877567 0.0729901 0.0146341 0.0496008 -0.0130091 0.0772074 0.0241456 0.0176011 -0.00313163 0.0240213 -0.0116753 0.0394411 -internal_weight=0 16897 13786 11863.2 3111.06 12490.5 3484.64 8378.57 3912.84 8537.36 3086.9 6623.41 4465.73 3595.07 2179.55 1922.77 1679.15 1154.06 1125.63 601.261 866.314 3953.12 2441.01 287.742 1321.51 5120.19 1210.66 3909.53 1305.09 2540.13 -internal_count=7859530 7496204 3710001 3621787 3786203 363326 2124956 1496831 950307 331131 464987 318551 546524 517852 1885907 88214 677993 50136 1548743 10667 35692 32195 467716 14444 77547 204083 124094 79989 239049 24912 -shrinkage=0.12 - - -Tree=28 -num_leaves=31 -num_cat=0 -split_feature=11 0 7 0 0 1 6 1 11 7 2 3 11 0 11 3 0 2 2 3 2 12 2 0 1 2 0 2 11 0 -split_gain=1120.59 609.346 290.226 227.33 222.798 178.816 173.73 171.162 114.126 113.316 107.708 99.8592 92.438 89.855 76.6325 74.8461 64.4823 64.1886 54.0794 49.5669 45.9693 41.9152 41.0728 40.6294 38.9513 36.7028 35.9171 35.5703 35.3689 34.0696 -threshold=0.76388888888888895 25.452091500000005 1.0000000180025095e-35 46.836120500000007 31.097620000000003 1.5000000000000002 1.0000000180025095e-35 1.5000000000000002 0.36931818181818188 1.5000000000000002 662385600.00000012 1.5000000000000002 0.23303167420814483 25.525596500000002 0.17752100840336138 39.500000000000007 20.020142500000002 216043200.00000003 284385600.00000006 3.5000000000000004 346766400.00000006 0.26969696969696971 220968000.00000003 19.963219000000006 1.5000000000000002 694180800.00000012 31.309764500000004 284299200.00000006 0.267948717948718 11.867569500000002 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 6 5 11 12 -1 -4 17 13 -8 16 -3 -7 -11 18 24 -9 -6 28 -16 -22 23 -10 -2 -12 -15 -13 -5 -24 -right_child=4 3 7 19 15 9 10 8 22 14 25 27 -14 26 20 -17 -18 -19 -20 -21 21 -23 29 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.033093333267483385 -0.084468050268733386 -0.10598312174567998 -0.11719980218319657 -0.01160159210657417 0.050298427130226066 0.11328575381835876 -0.050023389651474945 -0.0573286943494501 -0.047468795782808076 -0.055396452831731863 0.12751733703040424 0.045816188970493742 -0.036145252666222608 -0.0061196110569585512 0.0002096084261464328 0.090383222289957529 0.0088045645905245242 -0.10658638970539316 0.027775587684225656 0.05441298166972889 -0.04317143842698612 -0.0071570679853433143 0.0076681531101218687 -0.0024580235084172264 -0.016988994624247942 -0.17846097463840999 0.032700159132750657 0.011735514694213285 0.023096291039013412 -0.068408320369129819 -leaf_weight=490.62713973771315 141.45672227218984 346.47078080378969 811.15070661181744 541.64155656661751 3079.7318433305991 141.35271033866957 69.077026290134881 815.01024718818212 518.19253830863181 601.35352689948286 232.88695302597989 1151.5480829394364 1285.4769485857501 703.54891363592378 2692.5305379735551 438.57779909297824 2707.8328417453386 715.52913731719491 3061.1850481044512 582.25532549619675 887.98619793134958 977.73921352763864 97.54311784221818 652.26038568734111 952.35504440850491 5.7602872501558968 670.05286872221768 714.72285342710529 1931.6218437894422 646.87762256401516 -leaf_count=230931 145864 502225 2238023 84050 50353 4427 17705 450275 121548 287276 7037 12354 676690 86235 241073 1957 269747 1238987 60207 6397 187417 48082 34680 102903 106014 4300 40154 12501 45061 545057 -internal_value=0 -0.0204932 -0.0551538 -0.00507274 0.0274699 -0.0153675 0.0112392 -0.0676063 -0.0559297 -0.00666141 0.0819181 0.0100317 -0.0509739 0.0221935 -0.0151338 0.042492 -0.00112835 -0.0803584 0.0390712 0.0229136 -0.00982179 -0.0242984 -0.0364031 -0.0223863 -0.0257178 0.12011 0.0128173 0.0327648 0.0154974 -0.0584399 -internal_weight=0 16416.9 5054.92 11362 12247.4 8306.51 798.351 4256.56 3445.41 6674.56 307.724 5667.92 1631.95 1514.95 5159.61 6579.49 3801.64 1530.54 6140.92 3055.52 4558.26 1865.73 1914.87 1170.45 1093.81 238.647 1373.6 1866.27 2473.26 744.421 -internal_count=7859530 7200533 4991446 2209087 658997 2073579 259973 4731473 2493450 894664 29042 546480 1178915 130816 763848 112517 521625 1689262 110560 135508 476572 235499 804188 224451 251878 11337 126389 24855 129111 579737 -shrinkage=0.12 - - -Tree=29 -num_leaves=31 -num_cat=0 -split_feature=11 0 1 7 0 6 11 3 0 7 12 1 2 7 3 0 0 0 12 2 2 1 2 12 2 0 2 11 2 3 -split_gain=1028.87 503.075 304.785 273.911 229.461 220.356 158.263 144.762 97.5466 88.1408 87.2004 78.1314 70.2355 69.8026 68.7544 62.867 57.5134 64.6295 57.2098 56.1232 55.9288 55.5789 60.511 54.2739 49.5614 45.2069 41.6945 38.4544 34.4808 34.0386 -threshold=0.67948717948717963 33.324993000000006 1.5000000000000002 1.0000000180025095e-35 23.441297500000001 1.0000000180025095e-35 0.27888888888888896 6.5000000000000009 55.906434000000004 4.5000000000000009 0.73205741626794263 1.5000000000000002 662385600.00000012 1.5000000000000002 14.500000000000002 27.360587500000005 19.963219000000006 12.226027000000002 0.17519181585677754 368884800.00000006 59054400.000000007 1.5000000000000002 94737600.000000015 0.93725490196078443 378907200.00000006 27.699832000000004 63028800.000000007 0.27888888888888896 860241600.00000012 60.500000000000007 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 15 5 21 26 13 10 9 24 11 -6 -7 -5 16 -1 17 -8 -11 -13 -18 -2 -23 -12 -3 -15 -4 -17 -21 -9 -right_child=4 8 3 6 7 12 14 29 -10 18 23 19 -14 25 -16 27 20 -19 -20 28 -22 22 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.10853070518439044 -0.054025210463867025 0.018077522444577936 0.062445020279115547 -0.021969701126770075 -0.017874208909432435 -0.017779685430788814 0.0057046524378649962 0.05234480353331223 0.030861576990751767 -0.045585000065530151 0.048306407245994956 0.032685212955370531 0.12281258175794744 -0.099853861977961561 0.031960633853895713 -0.10726862128056154 0.031365756169229923 -0.073124321310071044 -0.0048391936511497802 -0.0036450622825213463 -0.028474588089473417 0.035989418473390704 -0.0099051910862511684 -0.0046190626680399881 -0.01412467927921514 -0.050468991747350374 -0.041414006249440603 -0.035775889335992621 0.036286587484965903 0.093756298707315458 -leaf_weight=983.25446612955693 312.17789535798875 2127.1790033380862 65.971007170776829 317.44082995082636 840.73728633691644 60.789814649906475 186.64055823646845 2092.4154550759049 1403.3002868385665 964.81465465676001 2391.5843441854813 2755.5228068945144 323.00091421009711 882.15194634881129 260.23456374281523 153.86806924765187 244.7504610713263 757.99805458336209 1021.6429636441499 1380.6949913539502 2771.375244145228 522.67462035693461 1983.4973961490759 315.85661039879778 1017.371708385801 382.86880240057724 355.33666661377538 366.15494069634224 402.03774163970957 331.08766229881439 -leaf_count=2691503 233081 173692 3977 250649 149745 8157 71784 14156 51234 305937 24118 50906 9922 1121623 10943 284140 13213 624887 66080 46400 797725 11412 156503 10711 102687 191214 123731 247325 10461 1614 -internal_value=0 -0.0219536 -0.0419143 -0.0308201 0.0241243 0.0347711 -0.0399195 0.0322778 0.0028261 -0.00484158 0.0245677 0.0157268 0.100544 -0.0722838 -0.0277857 -0.0906838 -0.0317114 -0.0575497 -0.0246297 0.0219516 -0.0236184 -0.00628108 -0.000333326 0.042132 0.00765895 -0.0849087 -0.0251478 -0.0569346 0.00536069 0.0580033 -internal_weight=0 14646.1 8111.84 6608.56 13328.3 805.098 5803.46 10509.9 6534.31 5131.01 8086.43 5378.99 383.791 1582.46 4221 1503.28 3960.76 944.639 1986.46 4538.26 3016.13 2818.35 2506.17 2707.44 3144.55 1265.02 421.308 520.023 1782.73 2423.5 -internal_count=7859530 7150423 6450793 3227825 709107 145787 3082038 308111 699630 648396 292341 257512 18079 1563486 1518552 3222968 1507609 696671 372017 107767 810938 400996 167915 34829 276379 1312837 127708 531465 56861 15770 -shrinkage=0.12 - - -Tree=30 -num_leaves=31 -num_cat=0 -split_feature=11 0 7 0 3 3 1 6 0 7 2 2 11 11 1 0 4 2 0 7 3 0 2 2 8 1 1 12 12 2 -split_gain=946.777 401.244 255.396 251.002 157.596 141.781 137.666 129.766 124.611 122.024 107.238 88.7767 84.3299 78.184 73.0843 71.1006 64.5062 62.9374 46.3093 41.7815 41.2685 39.3606 40.5264 37.551 38.1519 37.3389 36.1364 34.3189 32.9276 32.641 -threshold=0.60769230769230786 25.452091500000005 1.0000000180025095e-35 33.981020000000008 7.5000000000000009 12.500000000000002 1.5000000000000002 1.0000000180025095e-35 46.836120500000007 1.5000000000000002 189086400.00000003 662385600.00000012 0.17752100840336138 0.82575757575757591 1.5000000000000002 20.077880000000004 1.5000000000000002 378734400.00000006 11.867569500000002 3.5000000000000004 140.00000000000003 25.525596500000002 315576000.00000006 378475200.00000006 1.5000000000000002 1.5000000000000002 1.5000000000000002 0.19615384615384621 0.62019230769230782 663076800.00000012 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 7 5 8 13 -4 -1 9 21 -8 -9 26 -2 16 25 19 20 -12 -5 28 -3 -23 -17 -25 -15 -11 -20 -16 -13 -right_child=3 4 6 14 -6 -7 10 11 -10 12 18 29 -14 15 17 23 -18 -19 27 -21 -22 22 -24 24 -26 -27 -28 -29 -30 -31 -leaf_value=-0.029834300865293577 -0.024263771453593899 0.093632572691242241 -0.12160605868610802 -0.045480062626379512 0.041601114625993516 0.049443243081695711 -0.036454533831021985 -0.044929639146436412 0.01097403371839805 -0.11688446673997238 -0.032675280320919042 0.1234569050625146 -0.026604203307537776 -0.079454473325254391 0.036928873901030286 0.022739235770409136 0.063718205555378937 0.025596678881748623 -0.10459866768440845 0.011835928626540551 0.13594284324667935 0.017533125608170993 -0.025668751124042058 -0.041331809734886746 0.0079236670194047457 -0.011510513325108163 -0.055687316244931881 -0.040437718806939055 0.059502547599228059 -0.162988058206919 -leaf_weight=473.37808834283771 1523.8611823771298 70.697133991483952 610.99903222810053 289.07028240562067 783.9931309041076 938.56590649398277 1449.6359695181163 66.694200779635139 1980.8479594272758 188.7265540795994 202.69721482695547 193.4947205059616 3483.5262121193018 129.82874284322679 1703.6658136125625 2631.9185970811095 224.60244261052867 2192.228631044025 856.53693529302495 499.68867295455129 80.771665844134986 858.4465887742773 491.77278532713569 274.89105189192469 1284.3226101966902 1130.0430750388859 527.09490585392848 139.67495963103636 2050.9847261064278 5.8784066210649817 -leaf_count=230931 241386 6923 2166936 39479 26250 6862 515924 17705 122943 338956 154293 6839 1018958 146792 29235 173525 6561 38909 1661513 9208 352 141119 131790 53786 75195 112902 282380 86453 10927 4498 -internal_value=0 -0.0245397 -0.0558171 0.0203219 -0.00962292 0.00565727 -0.070261 0.00785323 -0.0149064 -0.0240279 -0.0584149 0.0749014 -0.0343132 -0.000234932 0.0368034 0.00648257 0.00698596 0.0418163 -0.0849662 -0.0091706 0.0510867 0.00636912 0.00179805 0.0139967 -0.000760755 -0.0185138 -0.0718262 -0.0956044 0.0492602 0.114988 -internal_weight=0 12384.1 3998.99 14954.4 8385.11 7913.43 3259.54 739.445 7601.11 5620.26 2648.55 266.067 4199.35 6974.87 7041.01 5451 1013.36 6027.65 1198.91 788.759 3835.42 1420.92 1350.22 4191.13 1559.21 1259.87 715.821 996.212 3754.65 199.373 -internal_count=7859530 6914411 4845092 945119 2069319 810448 4585119 259973 2043069 1920126 2418183 29042 1640294 803586 134671 562200 55248 79423 1902259 48687 40514 279832 272909 302506 128981 259694 621336 1747966 40162 11337 -shrinkage=0.12 - - -Tree=31 -num_leaves=31 -num_cat=0 -split_feature=11 0 1 0 7 6 11 3 0 11 3 2 7 0 2 1 8 1 1 3 0 2 0 2 2 0 0 11 2 2 -split_gain=868.443 417.984 244.843 211.617 203.122 170.901 134.365 97.3354 83.2829 79.2237 75.4048 63.3247 61.4896 56.1737 54.8863 47.7775 45.9723 45.8518 44.0866 42.5258 42.2323 41.6977 40.4236 38.5607 37.702 37.2933 40.8549 37.2676 36.5737 35.8342 -threshold=0.67948717948717963 33.324993000000006 1.5000000000000002 30.264538000000005 1.0000000180025095e-35 1.0000000180025095e-35 0.27888888888888896 1.0000000180025095e-35 63.388565000000007 0.31414473684210531 1.0000000180025095e-35 662385600.00000012 1.5000000000000002 26.917887500000003 346766400.00000006 1.5000000000000002 3.5000000000000004 1.5000000000000002 1.5000000000000002 38.500000000000007 28.355377000000004 110808000.00000001 27.699832000000004 220881600.00000003 63028800.000000007 20.998939000000004 11.482149000000001 0.31414473684210531 63028800.000000007 347371200.00000006 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 13 10 5 28 12 16 9 -3 17 -7 -6 -1 25 -11 18 -2 -5 -9 -16 -12 -14 -20 -19 26 -8 -15 -4 -17 -right_child=3 8 4 7 6 11 14 19 -10 15 21 -13 22 27 20 29 -18 24 23 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.10617438917743771 -0.037787777729620102 -0.026368025776080741 0.058373537829045086 -0.034282728296926378 -0.021379202813148149 -0.018499598081486348 0.030915615922289922 0.044152590588687909 0.037974725896265091 -0.021439296363524617 0.048919170833509142 0.11805701268696611 -0.096907908030925929 -0.10461105682250756 -0.06679874112579115 0.022030697791777319 0.033180358319352343 0.042709378980292825 0.04638252744956705 0.083600546710186935 -0.02127990500079532 0.011738214602677597 -0.048488628929507879 0.0002637343952582903 -0.0058921795470226598 -0.0086622494019074799 -0.049630288177642541 -0.034569613390439867 -0.038484549612371043 -0.0039940406288024389 -leaf_weight=813.61517312028309 599.68762443778178 1543.6603665338771 67.117252738925345 321.51236958455593 308.54228825491305 59.669887436801218 104.14686246959445 3518.1959826450766 807.09042907084222 758.36025374644305 561.59962945259758 270.71536082662897 790.50378900035605 156.53175507903484 706.85027205072583 1984.3230361135102 1914.7480271902314 257.21125531752477 395.11033097634208 443.105786082946 501.98507076774331 1916.6198335608751 362.13371303640872 769.41270943135896 2157.7455495542745 2024.2950064817878 700.41354748644335 363.25799117313886 342.4400568628007 1236.6948880543641 -leaf_count=2624293 332676 410389 3977 46829 250649 8157 23284 37243 24976 127079 7951 9922 1121623 333477 703544 69443 23743 4743 6363 2287 64402 46218 191214 25823 175231 341912 385410 265198 123731 67743 -internal_value=0 -0.0207884 -0.0398128 0.0224822 -0.0298368 0.0291886 -0.0377796 0.0357812 0.00196897 -0.00329278 0.00465749 0.0933945 -0.0689612 -0.0864872 -0.026495 0.00565858 0.0208892 -0.00809022 0.00505172 0.0485658 -0.0478974 0.0201644 -0.0816973 0.0159121 -0.000715278 -0.0173488 -0.0392032 -0.055667 -0.0226086 0.0120387 -internal_weight=0 13902.3 7572.22 12854.9 6238.81 739.943 5498.87 7362.09 6330.13 5523.04 5492.86 330.385 1461.18 1333.4 4037.69 3979.38 3400.78 3014.64 1486.04 3961.3 1208.84 2478.22 1152.64 1164.52 2414.96 2828.86 804.56 519.79 409.557 3221.02 -internal_count=7859530 7150423 6450793 709107 3227825 145787 3082038 142288 699630 674654 566819 18079 1563486 3222968 1518552 264265 102758 512650 79015 39530 767946 54169 1312837 32186 179974 750606 408694 598675 127708 137186 -shrinkage=0.12 - - -Tree=32 -num_leaves=31 -num_cat=0 -split_feature=12 3 0 7 0 3 11 7 0 11 1 1 4 0 3 6 1 3 2 1 1 8 2 8 0 0 2 0 7 11 -split_gain=802.925 336.811 200.998 197.971 138.676 123.904 117.725 78.5802 86.4369 73.3534 64.6684 63.0129 65.785 61.7542 51.6692 45.1316 44.788 43.9317 41.6943 40.4031 40.3668 37.7183 35.9124 33.2857 33.2038 31.6158 29.4213 30.2642 38.9951 29.3304 -threshold=0.44949494949494956 1.0000000180025095e-35 29.394558500000006 1.0000000180025095e-35 35.82988550000001 32.500000000000007 0.36931818181818188 1.0000000180025095e-35 34.326487000000007 0.82575757575757591 1.5000000000000002 1.5000000000000002 1.5000000000000002 20.514205000000004 1.5000000000000002 1.0000000180025095e-35 1.5000000000000002 61.500000000000007 59054400.000000007 1.5000000000000002 1.5000000000000002 11.500000000000002 252072000.00000003 6.5000000000000009 18.841907500000001 51.783302000000013 126360000.00000001 45.25187300000001 6.5000000000000009 0.14907407407407411 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 3 16 9 7 19 13 18 -2 23 12 21 -3 -11 -15 -1 25 -9 -5 -8 -6 -21 29 -18 -13 -12 28 -28 -4 -right_child=4 5 10 6 11 -7 20 8 -10 14 26 17 -14 15 -16 -17 24 -19 -20 22 -22 -23 -24 -25 -26 -27 27 -29 -30 -31 -leaf_value=-0.059735294985534371 -0.018677722819548895 -0.013446849398476447 -0.092237814754665137 -0.11817164368145845 -0.021335771800089554 0.062546399348392345 -0.086344698288589483 0.028428380150132548 0.010280498657792887 0.0069635212996330652 0.019177588298078342 0.031746294752525155 0.065054741506332114 0.03038280399357093 0.034074271834958973 0.099758263104890443 -0.023498791434409624 0.10153209514229593 -0.031050763585850127 -0.056781352405525932 -0.034958781363345702 0.059143675992535227 -0.099731508002568386 0.066170865702476489 0.014920531173882813 0.051427167900632308 -0.012074597590941099 0.0094548369435550807 -0.064240893881755343 -0.033631355613793955 -leaf_weight=261.40404468517409 1029.1966150933849 385.16482441673816 137.6752339011914 488.83917517721898 602.50070830820187 491.33918865515989 263.57806760360995 186.55626959315191 1805.0442003849439 2749.3568228927752 594.23111496483943 2834.8052082404174 220.26919624523725 649.86761458027831 1602.2374984965645 170.43390025559347 683.75037050590754 172.50250051438343 1877.1137829991296 600.12255803133235 1335.7687570592166 97.386786329952884 526.37013086297588 44.034151258412749 615.49609121180401 2008.2225768910794 1583.964629921812 773.99905347584536 237.22582219058495 1150.1288613056699 -leaf_count=343624 72087 34850 178842 1831408 30876 13569 948819 20142 92237 185283 53958 40264 4162 18296 17859 4992 172021 1094 555920 507439 741708 373 1128310 534 65692 11328 207750 45548 93276 437269 -internal_value=0 -0.0183384 -0.0323157 -0.0494846 0.0240841 0.00500926 -0.0665086 -0.000562472 -0.00889832 0.0101319 -0.0141818 0.0367318 0.0078654 0.0261894 0.0169457 0.0448001 -0.0144173 0.0420276 -0.0256735 -0.0893587 -0.0434288 -0.0101353 -0.0768526 -0.0363904 -0.00529836 0.0399075 -0.00490768 -0.0104227 -0.0188707 -0.0398988 -internal_weight=0 14862.1 9296.59 4775.33 11316.5 5565.52 3214.68 5074.18 3868.71 5380.79 4521.26 5935.69 920.157 1205.47 4351.59 820.302 1560.65 5015.53 2063.67 1615.33 1599.35 699.887 1126.49 1331.84 1299.25 4843.03 3189.42 2595.19 1821.19 1287.8 -internal_count=7859530 7496204 6756198 5739021 363326 740006 5157684 726437 668299 275229 1017177 88097 35411 58138 203142 23288 581337 52686 576062 3467157 1690527 31249 1635749 616645 237713 51592 400532 346574 301026 616111 -shrinkage=0.12 - - -Tree=33 -num_leaves=31 -num_cat=0 -split_feature=11 0 1 3 7 6 0 11 11 2 2 12 0 0 7 3 0 5 0 2 11 1 4 2 4 0 2 3 2 1 -split_gain=732.433 394.185 178.849 166.116 146.78 145.456 128.26 122.206 88.5326 64.4049 58.1066 55.8972 51.4443 49.9089 43.4332 42.7664 42.7662 41.4525 40.339 39.0342 37.1542 36.1632 35.2968 34.8579 33.4431 32.6289 36.3287 31.4986 30.7155 30.445 -threshold=0.76388888888888895 32.495975500000007 1.5000000000000002 8.5000000000000018 1.0000000180025095e-35 1.0000000180025095e-35 30.077133500000006 0.4188596491228071 0.43303571428571436 252072000.00000003 662385600.00000012 0.24500000000000002 21.815195000000006 63.388565000000007 4.5000000000000009 1.5000000000000002 20.077880000000004 1.0000000180025095e-35 28.355377000000004 126532800.00000001 0.087595907928388769 1.5000000000000002 36.500000000000007 252590400.00000003 7.5000000000000009 12.226027000000002 157550400.00000003 54.500000000000007 688910400.00000012 1.5000000000000002 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 11 6 5 -4 16 9 13 -6 -7 22 25 14 -3 -10 29 21 -11 -19 -16 24 -1 -5 -8 -9 -27 -14 -12 -2 -right_child=3 8 4 23 7 10 17 12 15 18 28 -13 27 -15 20 -17 -18 19 -20 -21 -22 -23 -24 -25 -26 26 -28 -29 -30 -31 -leaf_value=-0.099755690492499216 -0.07569671007598551 -0.0018581727342851016 -0.023820911993887011 0.068235144894173289 -0.039693495354362403 -0.022073463617194054 -0.037143541312027739 0.0046700964437913772 0.0060909413386195672 -0.09911680045930224 0.12000209694023214 -0.035841805329105803 -0.012434241119371407 0.025874069921891167 -0.086660440374354261 0.033554732143351342 0.0081785413131323283 0.058586573702061655 -0.04749844144092525 0.028923935530225976 -0.02525669239084823 0.022018521852032243 0.021640040090468597 0.03699855056534835 0.08902806838132743 -0.029244138879056827 -0.079466375628605243 0.079779417462667812 -0.23073949888366815 -0.012279644610578648 -leaf_weight=861.81786887710268 121.33538353454333 1313.9400373008784 398.95235933292133 1105.3176055151271 1279.7640819153298 55.597008747281507 289.4311802656448 171.4957598367422 2650.6411735944976 617.2420851164801 228.52897932941323 310.71930670545157 2086.5888785990887 430.23492575764249 157.79453830176362 1179.9126934045635 2962.7986321022618 825.71245924728282 337.19952102769469 2823.1381475086046 1407.0221694523721 1035.7267248846183 35.91746762767275 962.59722586068528 33.753246666077757 442.11514468863925 390.74770285681518 54.710932635643985 3.6261530956253401 1071.0059580552334 -leaf_count=2875879 146975 185142 127575 6672 734296 8151 24918 51130 160803 1298708 8358 260741 319755 21902 88521 22827 266960 17503 125317 57611 315681 16520 59316 8246 455 78261 455771 835 1564 113137 -internal_value=0 -0.0179005 -0.0375589 0.022975 -0.0291611 0.0230831 0.0160417 -0.0358298 0.00213097 -0.05729 0.0881085 -0.0797148 -0.0205873 -0.0122464 -0.0179437 0.0145507 0.000455508 0.0289741 -0.0808824 0.0356368 -0.0314501 0.0110835 -0.0948982 0.0536955 -0.0239592 -0.0429941 -0.0528085 -0.0100771 0.114495 -0.0187349 -internal_weight=0 14414.6 7275.02 11230.8 6066.57 686.705 9162.9 5379.86 7139.55 2234.21 287.752 1208.45 3145.66 3308.99 2878.76 3830.55 4155.14 5007.76 954.442 3648.85 1564.82 1358.91 897.735 2067.91 323.184 1004.36 832.863 2141.3 232.155 1192.34 -internal_count=7859530 7200533 6405657 658997 3209721 145648 644079 3064073 794876 2158321 18073 3195936 905752 611246 589344 183630 527072 117007 1424025 75114 404202 41893 2935195 14918 25373 585162 534032 320590 9922 260112 -shrinkage=0.12 - - -Tree=34 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 7 3 3 0 7 6 2 9 11 11 3 0 2 8 1 6 2 4 7 3 1 0 1 2 1 3 11 -split_gain=680.583 267.01 196.549 159.213 114.848 99.9445 90.7139 104.788 76.1288 73.0599 69.1926 60.7151 55.6747 54.6752 54.3845 51.877 40.6902 38.1015 49.193 41.3372 34.4842 34.1389 32.3715 30.9307 30.7106 34.964 28.3586 28.2964 27.2629 26.4145 -threshold=0.51666666666666672 25.295506000000003 40.27922800000001 1.5000000000000002 4.5000000000000009 8.5000000000000018 46.836120500000007 1.5000000000000002 1.0000000180025095e-35 662385600.00000012 2.5000000000000004 0.86190476190476206 0.17752100840336138 3.5000000000000004 20.077880000000004 221227200.00000003 1.0000000180025095e-35 1.5000000000000002 1.0000000180025095e-35 94737600.000000015 39.500000000000007 1.5000000000000002 29.500000000000004 1.5000000000000002 63.388565000000007 1.5000000000000002 284212800.00000006 1.5000000000000002 140.00000000000003 0.29705882352941182 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 4 8 11 6 7 -3 15 -10 -5 -2 27 24 -13 23 -11 18 -16 -19 -17 -21 -6 -1 25 -4 -12 -9 -15 -8 -right_child=2 5 13 10 22 -7 29 12 9 16 26 14 -14 28 17 20 -18 19 -20 21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.092581212471498822 -0.017110482580828409 0.0055265616726309363 -0.0076319425843407399 -0.036875143996167918 0.022526960847649505 0.036991155316658413 -0.009415144473792084 -0.11300190449870165 -0.029287233470402227 0.096249442515699599 -0.082897781057917827 -0.017088714010043009 -0.02674052197326891 0.051866144334267721 -0.03920826853846842 -0.076836741647967804 -0.048306750455288205 0.047171781952812963 0.022345505446701195 0.002387259855961517 0.091313699037407922 0.028255802520696691 0.056044575311553539 -0.017232391457062981 0.047366562603534744 0.028061644818384555 -0.12407165982095653 -0.052258913717287338 0.12693067584313014 0.021850432797545373 -leaf_weight=86.532793461803749 2141.0051577799277 1357.8912114097584 484.70598114584573 370.64214533926247 1437.8557123164646 589.99622053397616 632.91104367791559 143.84254659207704 231.17155878164471 158.82170363845131 701.35463592104202 1110.8336417488372 2902.5198602398486 1380.5595601427121 421.85143733494078 519.9852485804704 34.031172441805438 575.1529901791655 335.73526911463887 1943.4522645508932 18.152122445482746 1181.0564694177883 583.26493140967796 837.4970213610186 880.66595383420645 2139.4828583358467 367.24064632465888 475.77931565247695 73.364473622757941 1010.0483697025629 -leaf_count=353219 309464 292977 25850 457407 22197 22520 90196 348355 180148 26142 1147613 257680 1019131 9150 163392 1065534 48289 8716 42309 98592 14506 17070 4185 262547 4827 29050 1219337 289511 385 29231 -internal_value=0 -0.0234275 0.0166483 -0.0514965 0.00673884 -0.0103046 -0.0145826 -0.0227936 -0.0285597 0.0162072 -0.0815552 6.34026e-05 -0.0337118 0.0360926 0.00666706 -0.0415421 0.0707372 0.0125875 -0.01193 0.0176081 -0.07116 0.0121657 0.0322003 -0.0242914 0.0279765 0.0214688 -0.097051 -0.0663649 0.0556564 0.00980616 -internal_weight=0 10438.4 14689 3325.43 9730.21 7112.99 6522.99 4880.03 1886.19 424.024 1439.24 7709.09 3522.14 4958.78 5568.08 1462.17 192.853 4457.25 757.587 3699.66 538.137 3124.51 2021.12 924.03 3504.85 2624.19 1068.6 619.622 1453.92 1642.96 -internal_count=7859530 6866663 992867 4774742 923605 2091921 2069401 1949974 1950385 254579 2824357 897223 1656997 69262 587759 1695806 74431 330079 205701 124378 1080040 115662 26382 615766 59727 54900 2366950 637866 9535 119427 -shrinkage=0.12 - - -Tree=35 -num_leaves=31 -num_cat=0 -split_feature=12 1 3 0 0 7 0 9 3 0 0 7 2 7 9 7 3 8 1 3 11 0 0 2 0 2 7 6 2 2 -split_gain=625.505 252.689 172.212 133.596 125.979 150.449 120.577 87.5987 71.6867 58.913 53.8037 49.5772 44.3153 44.008 42.9109 42.817 42.6208 40.5634 51.1174 37.0436 36.0879 35.4339 30.6881 30.1521 30.0182 28.5754 35.5964 34.8452 43.97 27.7724 -threshold=0.44949494949494956 1.5000000000000002 5.5000000000000009 27.577402000000003 33.981020000000008 1.5000000000000002 45.25187300000001 2.5000000000000004 1.0000000180025095e-35 19.963219000000006 26.418316500000003 2.5000000000000004 688910400.00000012 1.0000000180025095e-35 6.5000000000000009 1.0000000180025095e-35 3.5000000000000004 4.5000000000000009 1.5000000000000002 105.00000000000001 0.14907407407407411 20.573342000000004 55.906434000000004 284212800.00000006 23.853462000000004 62510400.000000007 1.0000000180025095e-35 1.0000000180025095e-35 402926400.00000006 59054400.000000007 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 4 13 5 9 8 -7 17 29 23 -6 25 -1 -13 21 -8 18 -2 22 -5 -4 -17 -9 -10 -11 27 28 -27 -3 -right_child=6 2 15 20 11 7 16 10 24 12 -12 14 -14 -15 -16 19 -18 -19 -20 -21 -22 -23 -24 -25 -26 26 -28 -29 -30 -31 -leaf_value=-0.051279855060071385 -0.03051582664218444 0.01360571188178079 0.00058901758880844498 -0.09089760855845129 0.022080208164776932 -0.026036797975584135 0.031727145522723724 -0.072115066499340463 0.0010508133372127677 0.048976188536737242 -0.038840816850798536 -0.0010200172955603984 -0.059571632219115336 -0.11190245205118228 -0.049708776497043063 0.0026805986869573224 0.061247975865864279 0.028799910663781795 0.0047753782945201169 0.11195572503823568 -0.025925676822382053 0.078607818223477191 0.067001670717620226 -0.12203390289944815 0.030152558653871665 0.022505646909140281 -0.01463487584087173 0.073646070524377591 -0.047443142955817946 -0.033586456806093498 -leaf_weight=251.3493558415671 789.74171177951575 206.78892841706852 112.15517964662286 135.64045376775834 1265.0808169182656 1484.2694560295713 2402.6613425896721 548.12593425818523 615.42610954411794 214.58022512550792 533.66638824456379 1875.2772638882195 152.16353376291136 549.76051904379369 302.70918760263726 944.83819009170111 996.34779193373106 651.38910419977765 2348.4093228209094 53.830633332232537 1329.8766135256537 331.85668240772793 120.39796152480994 255.60693841397358 2990.7884216741222 682.05323454004974 890.17754033628103 141.21019795257871 159.67840033130233 1363.5264728732448 -leaf_count=340784 168659 11277 5347 234594 61304 492509 25752 590523 12946 7411 255007 154761 65018 2598697 78189 74755 5553 15818 91789 1278 612128 5320 1514 762141 42809 34905 330868 6621 22431 748822 -internal_value=0 -0.016826 -0.00968676 -0.0534816 -0.0154365 -0.0251051 0.0216733 -0.0461078 0.0130754 -0.00955102 -0.0683818 0.00318674 0.00294288 -0.0928847 -0.00778765 0.0273728 0.040381 0.0015503 -0.00410615 0.0148617 -0.0319409 0.058902 0.00995215 -0.0879945 0.0251862 0.00750009 0.00274797 0.0184903 0.00923498 -0.0273718 -internal_weight=0 13904.6 11638 2266.63 10074.9 6631.85 10794.8 2821.67 7395.75 3810.18 1337.4 3443.07 2239.86 801.11 2177.99 1563.08 3399.01 3789.54 3138.15 1119.07 1465.52 444.012 1065.24 803.733 3606.21 2087.7 1873.12 982.942 841.732 1570.32 -internal_count=7859530 7496204 3710001 3786203 3621787 3327533 363326 2100180 332021 1227353 1607671 294254 467254 2939481 232950 88214 31305 276266 260448 77547 846722 10667 76269 1352664 55755 402236 394825 63957 57336 760099 -shrinkage=0.12 - - -Tree=36 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 3 1 0 2 7 0 1 7 3 3 2 2 7 9 2 3 2 0 5 11 7 0 11 2 4 2 8 -split_gain=583.604 313.697 144.581 135.903 101.212 80.7882 76.3316 76.232 66.3123 61.2091 54.1009 49.9453 46.9268 46.5148 45.6972 41.279 40.558 57.5696 41.7596 40.4769 36.4357 34.7152 32.5504 32.2035 30.4608 28.9365 28.7771 28.5254 28.2495 27.4954 -threshold=0.76388888888888895 36.697481500000002 31.995413000000003 9.5000000000000018 1.5000000000000002 22.323515500000003 378475200.00000006 1.0000000180025095e-35 28.640210000000003 1.5000000000000002 9.5000000000000018 6.5000000000000009 11.500000000000002 220708800.00000003 59054400.000000007 1.0000000180025095e-35 1.5000000000000002 663076800.00000012 11.500000000000002 59054400.000000007 11.867569500000002 1.0000000180025095e-35 0.27888888888888896 1.0000000180025095e-35 28.355377000000004 0.31414473684210531 157464000.00000003 83.500000000000014 315144000.00000006 11.500000000000002 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 6 4 8 19 12 -7 27 29 14 21 -2 -11 -9 -5 17 -8 -19 -6 -21 -4 -15 -22 28 -10 -23 -1 -16 -3 -right_child=2 9 11 15 5 7 16 10 25 13 -12 -13 -14 22 24 -17 -18 18 -20 20 23 26 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.092938708602067821 0.01217411062347239 -0.021854693548591549 0.0094711501706805489 0.099939732285427255 -0.0039479945887543255 0.054418369750189564 -0.019501580472652151 0.028873241664629134 -0.082166296222331056 0.029543354269696682 -0.10923577005328844 0.054854934932681725 0.053671143560771205 -0.02412575213773991 -0.02542921519777229 0.011354390900102687 -0.039497990948073956 0.019141965074715106 0.13015777707023343 -0.026875289650054458 0.0013123143813496903 0.055862395350476789 0.0096986775275199194 -0.069417119837751826 -0.015436185521276586 -0.022114531719541017 0.028191555917465749 0.064583908017986968 -0.061799324170822151 0.13290434062368972 -leaf_weight=722.65636482426908 2928.4507347251097 1045.4060880573834 1067.441224577713 89.927200876103598 265.28785450247005 193.13818781502914 893.63287429293678 252.19286041014129 151.82122798568309 1526.4166860691003 101.53322822876589 1328.6872539441938 453.11714296840364 505.9658785586671 873.70878600557342 479.59834837637482 555.06186792499921 452.86970768290121 54.656242894008756 517.40362519290625 99.994428991718223 705.60754659082886 2152.586470695147 1269.9445933498882 2257.043792156182 483.4622160758463 2323.4197370714337 16.9223785713815 474.60420512643543 16.767553550889716 -leaf_count=2856708 299491 232197 33230 4713 31439 15139 49117 22487 276865 68608 88257 10179 3259 86162 368053 36630 167225 37781 190 260198 49479 14698 77873 1695009 348838 218984 43827 20201 442648 45 -internal_value=0 -0.016621 0.0208422 -0.0312119 -0.0354063 -0.028973 0.00682057 -0.0191923 -0.0649069 0.00631791 -0.0227836 0.0346379 0.017735 0.0128474 -0.0205073 0.0253464 -0.0120463 -0.00117087 0.0311044 -0.0478386 -0.0540078 0.0280802 0.00326114 -0.0642545 -0.0239617 -0.036469 0.0346379 -0.0893319 -0.0382325 -0.019408 -internal_weight=0 13496.4 10762.9 8249.24 7679.71 6304.85 5337.79 4152.22 1374.86 5247.14 3959.08 5425.16 3381.57 4184.97 3857.55 569.526 1956.22 1401.16 507.526 2152.63 1887.34 4096.47 2658.55 1369.94 3605.36 635.283 3029.03 739.579 1348.31 1062.17 -internal_count=7859530 7200533 658997 6735648 6694305 3321547 557063 1285422 3372758 464885 1270283 101934 302750 232643 1182026 41343 254313 87088 37971 2036125 2004686 91755 164035 1744488 1159539 495849 58525 2876909 810701 232242 -shrinkage=0.12 - - -Tree=37 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 3 0 3 7 1 2 1 1 7 2 7 2 12 1 11 2 11 0 7 6 3 12 4 6 2 2 12 -split_gain=539.453 279.776 139.03 124.808 79.9562 78.346 67.2473 63.8112 62.0178 54.0492 47.2613 47.2562 44.4673 43.9261 43.2982 41.3498 39.6434 38.3105 38.2288 36.0625 33.1338 32.5407 27.5243 26.0051 25.7802 25.4796 24.9178 24.6004 23.6463 23.1779 -threshold=0.76388888888888895 36.697481500000002 24.763925500000003 1.0000000180025095e-35 25.060102500000003 1.0000000180025095e-35 1.0000000180025095e-35 1.5000000000000002 662385600.00000012 1.5000000000000002 1.5000000000000002 2.5000000000000004 220881600.00000003 3.5000000000000004 284212800.00000006 0.26969696969696971 1.5000000000000002 0.28991596638655465 94392000.000000015 0.36931818181818188 46.836120500000007 1.0000000180025095e-35 1.0000000180025095e-35 185.50000000000003 0.63961038961038974 7.5000000000000009 1.0000000180025095e-35 249480000.00000003 1073131200.0000001 0.17519181585677754 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 10 4 7 11 8 -1 -5 -3 25 16 -9 -6 24 -15 -4 29 -12 -8 -19 26 -10 -21 -7 -2 -14 -18 -16 -11 -right_child=2 9 5 6 13 14 19 12 22 17 18 -13 21 15 28 -17 27 20 -20 23 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.096307093670260357 -0.057057227735031885 -0.018876776639640828 -0.032006523599509805 -0.010946595634095722 -0.016668863882800949 0.037230680047862702 -0.035995272143581211 -0.031498549374455502 -0.021848821962898217 -0.016944711842426238 0.035181564146256374 0.02948225312820411 -0.051579535873979121 -0.067868760893165334 0.022170019909151736 -0.015211724585140763 0.031044982200281443 0.0055141489354237332 -0.0035800786403252624 -0.0077278406368127914 0.029796762347127474 -0.079917405852474435 0.12169342796875848 0.12310078479018774 0.063292334777614312 0.066122366857233564 0.049476348521183454 -0.0013845392484022436 0.066065251416913023 0.043128135729608115 -leaf_weight=482.13123866067394 283.34169070199641 1041.2317402016088 388.59065775059935 146.10476599974118 1845.0275634973327 1007.9065996786921 877.80096142418824 1089.197306311994 22.752316895507192 805.63320502701572 442.01879580769946 1784.7561667407717 113.90400939101346 589.41998817287549 1716.5536303462104 337.84994130733821 552.12339028995484 1596.9730095441701 2140.8260386704396 1666.6094088175664 1640.316384632446 674.97435872868414 124.15033638098703 22.139488610439003 1194.6011811292265 26.412268195035722 50.775039116309927 863.78849228115723 196.98705078504281 104.45210124776713 -leaf_count=2247148 238756 232242 98842 19265 831603 14146 417373 567541 4169 129898 9283 29259 78741 786386 26775 64692 12670 72274 163835 199678 25813 1506064 5076 86 7231 15246 7826 40578 2376 4658 -internal_value=0 -0.0161588 0.0201741 -0.0301741 -0.0412771 0.0285953 -0.0100482 -0.057259 0.0444124 0.00556637 -0.00225831 0.0156373 -0.0474973 -0.0273777 0.0398947 -0.0486843 0.00194355 0.0117031 0.00305378 -0.0162661 0.0178182 -0.0682491 0.0994616 -0.00601052 0.0513667 -0.0465485 -0.0204179 0.0112615 0.0266897 -0.0100489 -internal_weight=0 13231.4 10597.9 8042.84 5183.28 7705.31 2859.56 2410.98 293.007 5188.61 2892.6 3589.26 1928.85 2772.3 4116.05 927.27 1804.5 4147.37 2582.84 2566.55 3237.29 839.653 146.903 1688.75 2202.51 309.754 164.679 1415.91 1913.54 910.085 -internal_count=7859530 7200533 658997 6735648 6090001 231877 645647 4407320 28510 464885 427120 181349 2160172 1682681 50528 851078 152090 232643 173118 617137 98087 1592631 9245 199764 21377 254002 86567 53248 29151 134556 -shrinkage=0.12 - - -Tree=38 -num_leaves=31 -num_cat=0 -split_feature=12 3 0 7 11 0 7 1 3 0 2 3 0 7 0 6 2 0 0 3 2 2 1 4 12 12 0 8 2 11 -split_gain=493.816 196.448 147.374 159.172 109.725 103.721 68.4372 65.3926 64.6733 49.9914 44.0465 42.5087 38.3549 37.417 40.6695 35.0066 38.2003 31.9378 29.4221 35.7185 28.7993 28.4132 27.735 33.1395 26.8734 26.171 25.8261 25.5569 23.8022 23.5899 -threshold=0.44949494949494956 4.5000000000000009 30.264538000000005 1.5000000000000002 0.27888888888888896 48.846755000000009 2.5000000000000004 1.5000000000000002 4.5000000000000009 51.783302000000013 63201600.000000007 131.50000000000003 24.619961000000007 1.0000000180025095e-35 40.27922800000001 1.0000000180025095e-35 402926400.00000006 21.618966000000004 22.583849000000004 52.500000000000007 599832000.00000012 284385600.00000006 1.5000000000000002 55.500000000000007 0.21980676328502416 0.16954022988505749 42.837928000000005 1.0000000180025095e-35 252417600.00000003 0.96666666666666679 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 3 7 -5 8 21 -1 12 -8 -9 13 -2 17 -15 16 29 -3 19 -10 -7 -4 23 -14 28 -11 -23 -17 -6 -12 -right_child=5 11 6 4 24 20 9 10 18 25 15 -13 22 14 -16 27 -18 -19 -20 -21 -22 26 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.063862514579250185 -0.011328306077161168 -0.0016509726874048465 0.0217009190716329 -0.092415456683968292 -0.039204724457710172 0.046389034326855517 -0.026591635320533297 0.015667099004464728 0.016358586370948884 -0.022110544085834724 -0.029074329144383106 0.11675140728897229 -0.011040473605123927 -0.0095471895132065651 0.037060758764341437 0.047338560263633332 -0.0483909349682239 0.069058656023337092 0.037698606985425598 -0.10273364411758094 0.015931599082416429 -0.0177257577152178 0.016691244501037216 0.096428632679051343 -0.023688045541466793 0.020153502408493222 0.028764543848770419 -0.01486876089681452 -0.08687053257577923 0.0014085806147905349 -leaf_weight=404.56107497713583 1357.9141548922116 129.47263167540314 1229.3249311844788 870.19821563215964 414.55153554465892 2113.530651849378 2460.1205076121182 633.79660489843354 163.73252617527032 318.36314233997837 763.66744644462688 66.849103089771233 926.52972500804299 728.2682953055164 428.01597683789078 176.35301223115857 710.44951795953239 317.63463079987196 1617.1082315292042 46.550627747084945 567.02938270202139 692.34535589533607 3491.5207354350641 43.216832903348404 795.3565490872187 625.35431881270779 228.94067297690162 206.35033628159817 237.22577565232984 701.25504890247066 -leaf_count=1308851 117342 6651 110466 2326815 506691 16557 727398 39224 1929 50624 483395 885 120576 85513 8759 41765 491836 5646 17094 236 5397 98984 83227 968 376760 16900 10169 79379 658725 60768 -internal_value=0 -0.0154335 -0.0210334 -0.0342169 -0.0587426 0.0196349 -0.00699689 -0.0184136 0.0125145 -0.0175846 -0.0126525 0.0230157 0.00633001 0.0191055 0.00770596 -0.0196692 -0.0255571 0.0485839 0.0322079 -0.0100159 0.0399465 0.00976057 0.0117049 -0.00624827 -0.0384927 0.00589547 -0.0061723 0.0137984 -0.0565567 -0.0144825 -internal_weight=0 13138.5 11468.2 5913.77 2317.33 10327.1 5554.45 3596.43 7646.57 3403.84 3191.87 1670.24 5819.18 1603.39 1156.28 2558.08 2175.37 447.107 1827.39 210.283 2680.56 2150.61 4461.27 969.747 1447.13 943.717 921.286 382.703 651.777 1464.92 -internal_count=7859530 7496204 7388750 6374209 3868991 363326 1014541 2505218 341372 794922 1196367 107454 322113 106569 94272 1157143 1035999 12297 19259 2165 21954 219619 204771 121544 1542176 67524 109153 121144 1165416 544163 -shrinkage=0.12 - - -Tree=39 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 1 7 6 0 11 3 11 2 0 3 2 2 1 7 2 11 5 1 12 11 6 7 0 0 2 3 6 -split_gain=470.827 253.642 113.596 109.259 86.8106 84.3246 78.9354 69.175 68.7679 61.4465 40.7918 40.1115 39.9155 36.372 34.3926 33.2484 30.3262 28.5933 27.4161 27.1404 28.3794 26.4784 26.0477 25.6706 24.4703 44.4249 40.0398 24.4184 23.3297 23.2601 -threshold=0.76388888888888895 29.394558500000006 35.82988550000001 1.5000000000000002 1.0000000180025095e-35 1.0000000180025095e-35 46.836120500000007 0.36931818181818188 13.500000000000002 0.47213622291021679 189086400.00000003 17.967157500000003 61.500000000000007 662385600.00000012 688910400.00000012 1.5000000000000002 4.5000000000000009 347112000.00000006 0.097619047619047633 1.0000000180025095e-35 1.5000000000000002 0.24500000000000002 0.10762548262548265 1.0000000180025095e-35 1.0000000180025095e-35 17.276548500000001 18.277001000000002 94737600.000000015 3.5000000000000004 1.0000000180025095e-35 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 8 21 5 -5 9 10 11 16 -6 -2 19 -7 -15 23 -3 -9 -8 20 -4 24 -18 -13 25 -1 -27 -17 -20 -22 -right_child=2 6 12 4 7 13 18 17 -10 -11 -12 15 -14 14 -16 27 22 -19 28 -21 29 -23 -24 -25 -26 26 -28 -29 -30 -31 -leaf_value=-0.11371463653655295 -0.021223761018889821 -0.012537386837913146 -0.0267547603436664 -0.021765980910691415 -0.03874793469059111 -0.015302699386491789 -0.05219518641494672 -0.016008338182043023 0.044295326169701874 0.0014475069879773157 -0.081080458366444036 -0.036321061601485127 0.10261536407009994 0.11025262732425831 -0.23976520802375148 0.033917649775957619 -0.08603771989954713 -0.046185197515613972 0.011749621257135273 0.038510640802551586 0.0067832923141704134 -0.037637914355485115 -0.032091268897864712 0.0097673149191023004 -0.10613652211549209 0.15604853688680512 -0.071751468779923236 0.0084314462879286432 0.041365176783600056 0.043876693638379302 -leaf_weight=53.122174613872801 770.94272152938538 1337.0746994857982 181.77517604727473 354.84379958055979 708.46043162160652 50.422022385770106 84.520286931861847 1718.4203189188643 692.03889092609461 2839.9673146291943 610.16664283727812 388.95739169366607 119.73084096354432 158.50122535446053 4.1209006677963762 647.33622456289595 149.75481001730975 613.59491314320985 2054.0625804234414 2904.4110370856251 498.68321499181911 155.65028335271745 924.54466168631745 314.89469422728416 433.951762326508 23.552515397124409 20.984275363194286 3305.4691068861075 470.81095654865203 475.59102404132136 -leaf_count=70923 185515 324957 12519 126571 440208 8130 33196 459965 5639 260076 1530991 194339 952 8353 1560 11001 135012 452769 96485 41617 8717 215051 358619 54827 2617557 12864 41419 140907 5827 2964 -internal_value=0 -0.0153993 0.0190872 -0.03681 -0.0295813 0.0140637 -0.00203704 -0.0363707 0.00867159 -0.0105136 -0.0583378 0.00412922 0.0343352 0.0737358 0.10134 0.00832669 -0.0246005 -0.0239489 0.0150217 0.0323211 0.01677 -0.0811778 -0.0396135 -0.0157022 -0.093923 -0.0396357 0.0487406 0.0126055 0.0172724 0.0248912 -internal_weight=0 12766.5 10299.8 4905.79 4218.53 567.888 7860.74 3650.64 6119.64 5251.34 1318.63 5427.6 4180.19 213.044 162.622 4656.66 2411.37 2332.02 2609.39 4060.46 1156.05 687.261 1074.3 703.852 531.611 97.659 44.5368 3952.81 2524.87 974.274 -internal_count=7859530 7200533 658997 5986361 3028547 144614 1214172 2883933 592228 1078664 1971199 586589 66769 18043 9913 401074 818588 912734 135508 65817 24200 2957814 493631 249166 2742763 125206 54283 151908 102312 11681 -shrinkage=0.12 - - -Tree=40 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 1 3 3 12 7 9 0 0 1 0 7 0 2 1 12 12 7 2 11 2 0 7 2 7 0 4 4 -split_gain=438.455 204.864 126.619 100.294 83.8423 76.1886 55.1779 53.9383 73.703 54.9703 51.1156 47.6721 40.9887 43.6132 39.3222 35.1219 37.4061 34.5006 34.3586 34.3354 32.136 29.6078 29.5172 27.0611 26.9628 24.7869 23.5886 29.927 27.8773 21.2375 -threshold=0.67948717948717963 36.697481500000002 22.074370000000005 1.5000000000000002 6.5000000000000009 9.5000000000000018 0.73205741626794263 2.5000000000000004 5.5000000000000009 20.790802500000002 26.917887500000003 1.5000000000000002 63.388565000000007 2.5000000000000004 27.699832000000004 315316800.00000006 1.5000000000000002 0.22902097902097904 0.93725490196078443 1.0000000180025095e-35 93960000.000000015 0.31414473684210531 94392000.000000015 26.619919000000003 1.5000000000000002 473083200.00000006 1.0000000180025095e-35 17.276548500000001 3.5000000000000004 55.500000000000007 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 15 10 6 7 11 9 -9 -5 26 29 13 -3 -10 16 -2 -15 25 -11 -21 -12 -13 -22 -7 -8 27 -1 -29 -4 -right_child=2 12 4 5 -6 24 18 8 14 19 21 22 -14 17 -16 -17 -18 -19 -20 20 23 -23 -24 -25 -26 -27 -28 28 -30 -31 -leaf_value=-0.10111451936155676 -0.0733867835888148 0.018747337702988073 -0.021754871446317207 -0.038694181002306122 0.044377593867042452 0.055488365145812027 0.047612699818621901 -0.026828730411704201 -0.10367540519357921 0.042310190872992356 -0.085782733425344274 0.041160789412311882 0.03007199083418078 -0.02437951751348964 -0.042765098774746227 -0.029747744862600498 0.0092381653312836719 0.0030492123649632549 -0.007902660682547016 0.017607271737809172 -0.04311751405987152 -0.025246269344770051 0.010834883900211671 -0.0096162805095795049 -0.0024592994446973101 0.02019223574293515 -0.10564165829467742 -0.050291256247970949 0.15108772727313757 0.079692564079549361 -leaf_weight=47.182094011589356 85.450360033848938 1092.7691278087436 746.38982137405583 1259.6500576073122 2001.0792685932793 207.87719030262815 1275.3152303155621 1242.0807494968062 354.11829053814677 183.23690733092235 154.73844074963756 527.85260360188113 707.07299361207697 1236.9861010874888 268.32836762228385 830.34036172614969 1025.0787508786052 1416.5385891817969 273.44577053247849 426.81545114631513 486.8709319039308 468.76214823818884 3713.7045715742534 1210.2562420815136 260.49692195328407 756.30471706701792 380.75369873670286 22.06674637024247 17.905862657322416 30.918630073392706 -leaf_count=70923 98892 68879 181923 1151693 16546 13779 14740 532724 787329 19950 408856 7108 24976 294132 151668 190789 58010 67421 11309 33832 463287 318293 117329 162329 26982 10776 2501122 45912 6336 1685 -internal_value=0 -0.016543 0.0168053 -0.029357 0.0226092 -0.0231749 0.0166614 -0.0271795 -0.0437193 -0.0185331 -0.0627736 0.00960252 0.00357314 -0.00142843 -0.0774211 -0.0110797 0.00287873 -0.00973729 0.0320306 -0.00752544 -0.0118254 -0.0402734 0.0146091 -0.0192277 0.0232614 0.0374054 -0.0927512 -0.0364194 0.0399628 -0.0177167 -internal_weight=0 11444.5 11265.9 6991.14 9325.01 5899.73 7323.93 5431.36 1864.53 3566.83 1091.41 5018.87 4453.37 3746.29 622.447 1940.87 1110.53 2653.52 2305.07 2307.18 2123.94 623.501 4241.56 1697.13 468.374 2031.62 467.908 87.1547 39.9726 777.308 -internal_count=7859530 7150423 709107 6695015 361416 3343573 344870 3302812 1471721 1831091 3351442 308045 455408 430432 938997 347691 156902 361553 36825 679398 659448 727149 124437 625616 40761 25516 2624293 123171 52248 183608 -shrinkage=0.12 - - -Tree=41 -num_leaves=31 -num_cat=0 -split_feature=11 0 3 1 0 7 8 1 0 0 7 1 2 0 2 2 0 6 3 11 8 2 7 3 9 7 2 4 2 7 -split_gain=413.036 187.445 120.72 91.7064 67.2197 76.3928 64.7418 58.266 49.5442 49.5442 43.6014 37.8584 36.4256 36.2908 32.837 31.2919 34.6185 29.5854 28.5532 26.3957 26.2434 26.0006 25.8016 28.9614 27.7703 24.592 24.2925 23.1 22.423 22.2226 -threshold=0.67948717948717963 38.267659000000002 1.0000000180025095e-35 1.5000000000000002 22.227638000000002 1.0000000180025095e-35 4.5000000000000009 1.5000000000000002 26.917887500000003 45.25187300000001 8.5000000000000018 1.5000000000000002 189518400.00000003 17.967157500000003 662385600.00000012 59054400.000000007 11.867569500000002 1.0000000180025095e-35 14.500000000000002 0.27888888888888896 10.500000000000002 221140800.00000003 2.5000000000000004 12.500000000000002 6.5000000000000009 1.0000000180025095e-35 157982400.00000003 55.500000000000007 252244800.00000003 1.0000000180025095e-35 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 6 8 15 14 7 27 29 18 22 20 -13 -9 -6 -5 -17 -16 -4 -10 -3 -15 23 -7 -24 -18 -27 -2 -20 -1 -right_child=2 11 9 4 5 10 -8 13 19 -11 -12 12 -14 21 17 16 25 -19 28 -21 -22 -23 24 -25 -26 26 -28 -29 -30 -31 -leaf_value=-0.034190854262842858 -0.034764480382252119 -0.021059261830984291 0.016582494107136584 -0.00023883028049449313 0.0022880113579598553 -0.010555294629831955 0.02710077301374101 -0.025579294592709887 -0.083176943597972661 0.048171985729245644 -0.082481622009423036 0.028786096955217354 0.0015035086015253384 0.023054513584879702 -0.048483125335393062 -0.020209370766892457 0.00020227617740811677 0.11956440911391986 0.057266772157492332 -0.026628054451238909 0.13166239195901816 -7.4144626844701363e-05 -0.017807994358004394 0.04039785154905471 -0.055196313812159996 -0.045836289499711594 -0.082135922376122356 0.085009691035205601 0.020773697475137274 -0.10379576954257459 -leaf_weight=81.204684414746225 819.96824553317083 817.47818993050078 3071.5738804426419 241.24890529620143 95.100809793694225 2102.5121999389803 1339.8442079550732 515.49698830667512 152.65845857642853 1440.9927862414734 142.3391574051102 1064.1421416602007 2086.0990577928696 1146.4847644136789 17.541762032771658 503.699714517026 96.259128013163945 107.10572969238729 517.37561827270838 536.81861788101332 16.500532309990376 1796.8237250795464 1221.1914070701714 173.89304661638744 373.57487949560664 557.3301750912907 507.24654349744594 23.834129006827879 456.3601642701251 354.81456073944673 -leaf_count=123171 378827 187332 75083 31114 8345 487794 18714 75476 412760 10139 125615 49732 135336 34842 2643 263567 49981 6882 3914 355019 53 103999 316952 6772 406587 289434 1390212 3550 4563 2501122 -internal_value=0 -0.0162158 0.0163907 -0.0276876 -0.0219145 -0.0134891 0.00406661 -0.00310643 -0.0591761 0.0290655 -0.0172613 0.00470106 0.0107197 0.00379096 0.0553983 -0.0406289 -0.0464827 0.0959089 0.0222592 -0.0391517 -0.018033 0.00893513 -0.0148626 -0.00666254 -0.0265671 -0.0578822 -0.0631341 -0.0313784 0.0401648 -0.0908357 -internal_weight=0 11248.8 11128.8 7264.54 6139.04 4233.26 5642.45 4302.61 1125.5 5486.3 4013.51 3984.22 3150.24 3458.81 219.748 1905.78 1664.54 124.647 4045.31 689.477 833.979 2943.31 3871.17 2276.41 1594.77 1160.84 1064.58 843.802 973.736 436.019 -internal_count=7859530 7150423 709107 6777970 3385898 1361590 615408 596694 3392072 93699 1343720 372453 185068 214317 17870 2024308 1993194 9525 83560 767779 187385 138841 1218105 494566 723539 1729627 1679646 382377 8477 2624293 -shrinkage=0.12 - - -Tree=42 -num_leaves=31 -num_cat=0 -split_feature=11 0 3 0 7 0 7 9 11 6 2 1 1 2 4 0 0 11 0 3 12 2 0 3 2 2 2 1 11 11 -split_gain=388.737 142.074 121.31 90.5471 89.225 61.4836 83.4735 48.9538 38.1309 36.3938 36.0216 33.7935 32.3074 33.4985 29.5628 28.0021 34.4074 27.5926 27.5243 27.1066 26.8809 26.1617 25.1736 27.397 24.4948 24.277 21.2312 21.0736 20.6911 19.8976 -threshold=0.51666666666666672 25.060102500000003 4.5000000000000009 33.324993000000006 1.5000000000000002 48.846755000000009 1.5000000000000002 5.5000000000000009 0.84523809523809534 1.0000000180025095e-35 94564800.000000015 1.5000000000000002 1.5000000000000002 157896000.00000003 1.0000000180025095e-35 1.0000000180025095e-35 23.117341500000006 0.18465909090909094 20.077880000000004 7.5000000000000009 0.68333333333333346 662385600.00000012 27.826315500000003 61.500000000000007 315748800.00000006 93960000.000000015 38923200.000000007 1.5000000000000002 0.88194444444444453 0.29705882352941182 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 4 3 8 9 6 19 -6 -2 10 -1 17 14 -14 26 -11 -17 -8 27 -3 -15 -18 -4 28 -13 -9 -5 -10 -24 -7 -right_child=2 5 22 12 7 29 11 25 18 15 -12 24 13 20 -16 16 21 -19 -20 -21 -22 -23 23 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.0081814955758426362 -0.022665009865049473 0.0026303725749382565 0.016363943516948882 0.037082761679802227 -0.034608196677680746 -0.0063185019195811836 -0.10456649302000257 -0.054719933106233035 -0.067811886364839799 0.13818116841810382 -0.050949731027509493 -0.010537852095735038 0.043143180402309265 0.0089888849882431045 0.033790525258205216 -0.02409027655033873 -0.024931502844715316 -0.039130115420847961 0.0072618104799221277 0.055339180801230195 0.032631918614713006 0.11262643305035075 0.01824137728573386 0.082609798752203367 -0.033728275410521424 -0.10431875629747082 -0.022926764524509022 -0.0098132033220235566 0.045220766074500249 0.023245503482104201 -leaf_weight=459.47109818511456 1210.7395459925083 1255.4857735001933 790.93963478853402 99.188372274475114 359.57333953409466 518.45124225000836 108.40055464445413 203.30926292885147 100.02113292700324 22.882044585041001 740.83663691651884 1635.2916949061309 941.25195055988661 1983.4086703521643 251.82349641477049 225.0162332046803 30.588617616507634 644.21105094766199 3064.5884529367295 158.1727537754341 1063.9088747301612 56.946642027794098 590.74268655034939 209.7526167537726 1095.0946544868289 472.95163528657008 588.25057124742852 917.54592546086315 1333.4238590419645 891.48682858623943 -leaf_count=241879 266531 313205 11935 7952 672006 73998 375897 287393 146770 1705 1436350 376385 10843 54522 12165 221696 17705 635305 290772 5718 8925 11096 7708 1632 372662 1799898 48773 110920 13419 23765 -internal_value=0 -0.0193995 0.0131019 0.00693519 -0.0431718 -0.00970596 -0.0160638 -0.0703884 -0.00396311 -0.0248136 -0.0345789 -0.0260454 0.0186408 0.0233559 -0.0013817 0.0101301 0.000743108 -0.0485589 0.00158387 0.00852895 0.0172436 0.0645656 0.0346508 0.0414285 -0.0198393 -0.0894106 -0.0142669 -0.015516 0.0369382 0.0123746 -internal_weight=0 8878.17 13145.6 10220.7 2571.58 6306.59 4896.66 1035.83 5292.9 1535.74 1200.31 3483 4927.83 3988.57 939.262 335.434 312.551 752.612 4082.16 1413.66 3047.32 87.5353 2924.86 2133.92 2730.39 676.261 687.439 1017.57 1924.17 1409.94 -internal_count=7859530 6866663 992867 958173 4689728 2176935 2079172 2759297 814993 1930431 1678229 1760249 143180 74290 68890 252202 250497 1011202 548462 318923 63447 28801 34694 22759 749047 2087291 56725 257690 21127 97763 -shrinkage=0.12 - - -Tree=43 -num_leaves=31 -num_cat=0 -split_feature=12 3 0 1 0 0 3 3 7 9 7 0 12 2 7 2 0 7 6 7 2 0 11 3 10 5 1 8 4 3 -split_gain=369.245 136.885 80.6914 80.1216 61.6525 58.9626 57.3502 55.92 52.3263 51.4077 42.9849 37.9605 37.4094 29.1546 28.6274 26.7643 26.1048 25.7467 35.5562 24.6379 22.9952 23.3837 21.8262 21.084 20.8888 20.3554 19.1183 28.2048 20.0776 19.7878 -threshold=0.44949494949494956 1.0000000180025095e-35 48.846755000000009 1.5000000000000002 26.917887500000003 35.053196000000007 26.500000000000004 1.5000000000000002 2.5000000000000004 5.5000000000000009 2.5000000000000004 29.729864000000003 0.20344827586206901 378907200.00000006 1.0000000180025095e-35 32097600.000000004 26.917887500000003 1.0000000180025095e-35 1.0000000180025095e-35 1.0000000180025095e-35 32097600.000000004 21.372305500000003 0.82575757575757591 140.00000000000003 3.5000000000000004 1.0000000180025095e-35 1.5000000000000002 6.5000000000000009 3.5000000000000004 101.00000000000001 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 7 4 14 8 10 20 13 25 11 15 -12 19 -1 -3 -11 18 -17 -5 -2 -22 -9 26 -6 -10 27 -4 -29 -28 -right_child=2 6 23 5 24 -7 -8 22 9 16 12 -13 -14 -15 -16 17 -18 -19 -20 -21 21 -23 -24 -25 -26 -27 29 28 -30 -31 -leaf_value=-0.046671616120130419 0.038410134139653364 0.041338965778951249 -0.032479714691512368 0.0062801720936029627 -0.037857212913558945 0.00056181734999075333 0.042625412212776874 -0.00010413120285620259 0.010073596270168451 -0.11268356758980684 -0.034932160768809957 0.024959523739353305 0.0029677963717009244 -0.035489487506097088 -0.10592463418082769 -0.0069152855818570003 -0.045579694681706015 -0.026958268853622055 0.061434800014519828 -0.020313191820141817 -0.022804380984805916 0.004349720982927136 0.030196369828121718 0.13273894442593903 0.012846803578652167 -0.041168953760985401 0.040176054431694058 0.017722292785533268 0.10483686652705117 -0.13194955720633408 -leaf_weight=193.06125198485091 251.78951764604426 163.61990037737496 140.89047834646772 822.35967320055602 1052.0258898733637 1826.4228386674795 458.41690232166093 407.76708454560867 147.05645482052734 213.73268659956125 847.04500968981392 1043.7272199203962 672.97439742693678 925.6207051415663 299.93891442031514 598.69002487311991 137.07763439779762 669.31374597015224 134.12474223156937 1286.3972724640741 518.44585345008409 3831.0254740754322 2133.039705975325 32.087486225413159 131.62661821167967 463.21719875934292 2070.4370775227617 188.03268627276702 47.753064583986998 9.6341067579342035 -leaf_count=334754 14373 8835 5440 118599 926665 192268 16973 7560 100294 636279 312968 45420 42451 782593 2470408 44549 128144 260640 8170 754465 54054 237569 27816 153 8669 303060 14642 1405 199 115 -internal_value=0 -0.0139675 0.0175287 -0.0239566 -0.0470706 -0.0172998 0.00235892 0.0110446 -0.0254647 -0.0498657 -0.00211136 0.00723275 -0.0181526 -0.0177358 -0.0827251 -0.00458416 -0.0864692 -0.00994388 0.00559661 -0.00994254 0.0031541 0.00111289 0.0253336 0.0361356 -0.0322186 -0.0288212 0.0348722 0.00999525 0.0353765 0.0393769 -internal_weight=0 12086.4 9630.9 7498.54 1676.65 5821.88 4587.91 7142.07 3995.46 961.084 4129.5 2609.48 1520.02 3034.38 493 1565.75 350.81 1402.13 732.815 2108.76 4601.26 4349.47 2540.81 2488.83 1183.65 610.274 2456.75 376.676 235.786 2080.07 -internal_count=7859530 7496204 363326 6756198 3740496 3015702 740006 341372 2823434 1167777 723033 367614 355419 1655657 2805162 322194 764423 313359 52719 873064 305996 291623 35376 21954 935334 403354 21801 7044 1604 14757 -shrinkage=0.12 - - -Tree=44 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 1 7 9 3 3 0 7 3 0 0 1 2 2 12 6 2 7 2 7 1 6 5 4 2 0 3 5 -split_gain=343.538 181.861 89.733 58.5511 48.9998 69.5496 47.2491 44.3892 41.6714 40.1951 36.7193 32.2376 31.6084 36.718 30.6962 30.355 30.3087 27.7672 27.2665 28.6515 27.1807 23.019 22.6305 28.118 20.5814 19.2039 19.027 18.7197 18.6341 18.2715 -threshold=0.76388888888888895 31.763350000000006 31.097620000000003 1.5000000000000002 2.5000000000000004 5.5000000000000009 1.5000000000000002 1.5000000000000002 20.790802500000002 1.0000000180025095e-35 39.500000000000007 51.783302000000013 55.906434000000004 1.5000000000000002 94824000.000000015 662385600.00000012 0.24500000000000002 1.0000000180025095e-35 315921600.00000006 1.5000000000000002 157464000.00000003 1.5000000000000002 1.5000000000000002 1.0000000180025095e-35 1.0000000180025095e-35 39.500000000000007 662472000.00000012 26.619919000000003 35.500000000000007 1.0000000180025095e-35 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 7 16 8 24 11 22 -5 15 12 18 13 -4 -11 -10 21 -17 19 -3 -15 25 23 -2 -6 -1 28 -16 -14 -19 -right_child=2 6 10 4 5 -7 -8 -9 9 14 -12 -13 26 20 27 17 -18 29 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.061107304966294608 -0.048813521832413824 0.031268187258992414 -0.0097630828504235729 -0.033360738790708812 -0.0005819984806681211 -0.084228348947172377 0.017373610421375134 0.022270020982390809 -0.0042878092368544051 0.013494053440534377 0.070497289912030414 0.0099815890520624888 0.051637727066754915 0.046700849396521388 -0.041361345790808746 -0.054772706512662167 -0.025307948787303282 0.12407812265504922 -0.02428522893454239 -0.0090256960073093872 0.019092942169788858 -0.10288820073269798 0.0011506724160104678 0.0079988579864107377 -0.036958007389240211 0.067376286015203735 0.0090703013220422742 -0.0093646514130331406 -0.11129000305109378 -0.37215930999841867 -leaf_weight=209.83234810548501 314.44338066626733 299.31666348004137 518.9993425700668 1235.3784683818335 306.52734186300154 421.39137943875676 1633.6408191916034 1405.2168762865022 88.66994841797441 506.41351477653825 272.16284759889822 1287.4893918380913 927.7109404783987 642.92225916113421 440.414108691965 15.812212373713917 220.84272867084184 86.231926229901546 1524.5716133119199 1681.7457989627128 2551.4295536197842 264.65243531295147 2661.0656403397843 208.68782969558561 831.67511477205312 18.18032282750417 199.7222882869537 654.72066088159443 10.192591418744994 1.0535965492890671 -leaf_count=1078758 257943 29234 46249 1161858 133460 892530 68322 24855 11222 53261 1957 72875 5744 6608 451501 3595 250898 6845 317492 388412 50312 1801258 195125 68557 346074 19520 1595 113335 52 83 -internal_value=0 -0.0138226 0.0166917 -0.0302743 -0.0253011 -0.0425822 -0.000250548 0.00450509 -0.016402 -0.00471911 0.0276086 -0.00625746 0.0252019 0.0198401 -0.010936 0.047195 -0.0622528 0.0914616 -0.0122215 -0.00293735 0.0246499 -0.0788112 -0.00333488 -0.0261507 -0.0271619 -0.0508553 0.0427023 -0.0222331 0.0498636 0.117962 -internal_weight=0 11728.6 9712.55 5301.8 4588.29 1559.59 6426.76 4589.41 3028.69 1793.32 5123.14 4793.12 4850.98 3713.35 1601.55 191.768 713.508 103.098 3505.63 1981.06 3194.35 492.665 3184.2 523.131 1138.2 228.013 1137.63 1095.13 937.904 87.2855 -internal_count=7859530 7200533 658997 6324198 3173764 1372064 876335 546480 1801700 639842 112517 808013 110560 103169 618097 21745 3150434 10523 735138 417646 56920 2899536 521625 326500 479534 1098278 7391 564836 5796 6928 -shrinkage=0.12 - - -Tree=45 -num_leaves=31 -num_cat=0 -split_feature=12 3 3 0 7 11 8 3 1 7 0 1 4 2 2 12 0 7 9 2 0 2 2 7 12 7 0 2 11 9 -split_gain=323.382 105.179 70.5182 68.7796 67.047 69.1222 55.5451 49.2429 47.84 36.4261 39.0986 31.7855 30.4466 29.917 27.5745 25.6558 24.2866 22.6426 27.8017 22.5013 24.5928 21.1287 20.2516 20.0425 25.6075 19.7317 18.7227 18.3742 17.8884 17.4364 -threshold=0.44949494949494956 1.0000000180025095e-35 8.5000000000000018 30.880862000000004 1.5000000000000002 0.27888888888888896 4.5000000000000009 29.500000000000004 1.5000000000000002 1.0000000180025095e-35 28.355377000000004 1.5000000000000002 20.500000000000004 378907200.00000006 94392000.000000015 0.62019230769230782 18.841907500000001 1.5000000000000002 5.5000000000000009 756993600.00000012 37.701621500000009 252763200.00000003 32097600.000000004 4.5000000000000009 0.18898809523809526 8.5000000000000018 51.783302000000013 38923200.000000007 0.96666666666666679 2.5000000000000004 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 6 4 13 -6 8 9 12 16 22 27 -2 -1 -10 19 -3 -13 -19 20 -16 -8 -11 -12 -25 -20 -4 -5 -17 -7 -right_child=2 7 26 11 5 29 21 -9 14 10 23 17 -14 -15 15 28 -18 18 25 -21 -22 -23 -24 24 -26 -27 -28 -29 -30 -31 -leaf_value=-0.011720510769257267 -0.027587058799506594 -0.013871225351342963 0.031743953974363158 0.01266843240084198 -0.088518931024142961 -0.023560148216311756 0.043362366942941245 0.041235505855587849 0.035649363182055555 0.014857197147932964 0.0070851358373977052 0.021456959531867905 0.054486473409429706 -0.040741509991383713 -0.01379828235894099 -0.037267059877384434 0.02914395713866998 -0.00079554328581609855 -0.027419428610599813 0.028632150987462936 0.012129730687251461 0.018845617890405234 -0.036527991582156027 -0.039640545508854326 0.0090567782015484426 -0.11859378740171882 0.061388301396409196 -0.034881853480545767 0.022071319190631006 -0.059508164122251954 -leaf_weight=1637.0527403873944 781.01550458564088 258.13735840930531 1271.9708395377893 136.10733261081282 520.6842275338812 667.26511854156138 814.11105240164034 402.20977566410147 540.54744193129045 127.82703630710603 1550.5685111670464 459.70267221833433 70.976359111667989 743.97097197714584 1483.13520142364 76.963698593724985 705.62600465833975 1576.4253882453149 379.65389653810394 336.50978726197354 816.91135362584828 1338.4485085226988 811.51689019982905 354.39632783802517 277.02395772078853 37.537731280447133 404.36832000184768 833.89513441309896 1469.8097047832271 274.13588765389193 -leaf_count=1315965 175026 30065 12375 59354 2164519 608473 10045 15121 7613 12841 101377 34087 4002 1023475 74840 4007 27777 175764 86613 12877 16891 18079 472787 69524 10514 30701 2265 431764 25306 825483 -internal_value=0 -0.0132703 0.0165848 -0.0221908 -0.0332096 -0.0534361 0.0117453 0.00117492 0.0054243 -0.00276963 -0.00906617 -0.00982075 -0.0207481 -0.0207888 0.0101448 0.00684903 0.0176226 -0.00254986 -0.00808576 -0.000348934 -0.00458935 0.0281185 -0.0295352 -0.000254001 -0.0182761 -0.035631 0.0388958 -0.0282096 0.0191181 -0.0340298 -internal_weight=0 11753.7 9404.77 7266.43 3843.11 1462.09 7728.43 4487.31 5575.87 4085.1 3121.33 3423.32 851.992 2381.02 4723.88 4183.33 963.763 2453.32 1993.62 2636.56 2300.05 2152.56 939.344 2181.99 631.42 417.192 1676.34 970.002 1546.77 941.401 -internal_count=7859530 7496204 363326 6756198 5937915 3598475 348686 740006 320562 724885 667043 818283 179028 2339440 141534 133921 57842 327165 293078 104608 91731 28124 485628 181415 80038 117314 14640 491118 29313 1433956 -shrinkage=0.12 - - -Tree=46 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 7 0 3 0 11 9 0 3 3 2 11 3 2 7 10 7 2 2 2 0 8 0 2 2 2 11 12 -split_gain=300.422 110.332 97.7617 91.3 67.9383 61.5961 56.5216 38.5849 37.1558 34.5728 31.0892 26.2308 25.6499 24.5336 24.1558 23.6424 23.0906 22.0162 25.0789 20.4443 19.5931 18.7226 18.7127 18.1117 17.9284 36.7666 17.9577 17.7305 17.5962 17.5113 -threshold=0.51666666666666672 41.01957500000001 40.27922800000001 1.5000000000000002 27.250207500000005 8.5000000000000018 20.998939000000004 0.86190476190476206 7.5000000000000009 20.077880000000004 61.500000000000007 12.500000000000002 284040000.00000006 0.89444444444444449 3.5000000000000004 346766400.00000006 8.5000000000000018 3.5000000000000004 24.500000000000004 346766400.00000006 1685620800.0000002 662904000.00000012 11.867569500000002 1.5000000000000002 -1.0000000180025095e-35 662385600.00000012 63201600.000000007 63892800.000000007 0.23303167420814483 0.93725490196078443 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 5 6 8 7 24 -2 -5 -9 13 -8 22 -4 17 -11 -6 18 -3 -7 -19 -17 -10 -23 25 -1 -26 -24 -18 -15 -right_child=2 14 10 4 16 19 11 9 12 15 -12 -13 -14 29 -16 21 28 20 -20 -21 -22 23 27 -25 26 -27 -28 -29 -30 -31 -leaf_value=-0.11669249613291899 -0.014795875134836205 -0.0041789094639972822 0.014261309845231508 -0.037817057978753059 -0.023161029517189555 0.040469918000623419 -8.3660424503770157e-05 -0.014620380834486165 0.0038562936241788009 0.017720317977248653 0.08918739830332216 0.056535150660539199 -0.11759647056387981 0.036039850942152445 0.034589377832752857 -0.01024919698956453 -0.088425308526663235 0.031726538812834118 -0.1297208588734528 0.0070075297604644442 -0.22914953467953197 -0.03444686392524865 -0.045859284622802428 0.021997280013328811 -0.0071298834209346327 0.14880584640033231 -0.0438532279911555 -0.096176042624906199 -0.01307307405000032 -0.0024197397571063682 -leaf_weight=11.548656155857314 1875.1565475146563 1606.5380053963981 1769.6136109882809 485.97402093437017 2033.329838570568 799.28349717681704 1509.1907889997215 1017.9380378688911 49.308035811525087 2438.0361189976334 111.30490266653942 127.77783599203212 198.6771635318907 2151.4039625491678 334.74467781299609 1095.500000800318 143.99736698670313 318.56888657140735 23.21516292153683 391.81242262927117 4.1707090224954291 94.105817573437434 178.05873854080221 627.95551342692488 258.53311215960707 21.360170320696852 742.38940459719129 232.82659380089098 64.677899614336638 185.14677795102762 -leaf_count=9433 313466 215114 34949 933950 910958 9458 902891 259085 35119 178339 984 6399 1210733 29196 8809 89852 180799 8639 11586 5742 101 24466 246111 43197 102679 3597 1215758 844720 19267 4133 -internal_value=0 -0.0176477 0.0117277 -0.0261263 -0.0392086 0.0041982 -0.00953629 -1.14444e-05 -0.0629925 0.00524564 0.0266168 0.00433682 -0.081559 0.0249201 0.00480749 0.00999765 -0.027063 -0.000298913 -0.00596956 0.0294629 0.0283343 -0.000361475 -0.065994 0.0146398 -0.0315025 0.0556134 -0.0343683 -0.074376 -0.0650755 0.0329923 -internal_weight=0 8344.89 12557.3 6057.65 3386.85 8339.79 2670.8 7148.69 1144.84 5273.54 4217.47 1636.97 658.871 4106.16 2287.24 4255.6 2242.01 1952.49 1629.75 1191.1 322.74 1817.56 460.193 722.061 1033.83 32.9088 1000.92 410.885 208.675 2336.55 -internal_count=7859530 6866663 992867 6622414 4381657 923605 2240757 908405 3270633 594939 69262 909290 2336683 68278 244249 335854 1111024 235440 226700 15200 8740 157515 1125950 67663 1331467 13030 1318437 1090831 200066 33329 -shrinkage=0.12 - - -Tree=47 -num_leaves=31 -num_cat=0 -split_feature=12 1 0 7 0 0 0 1 3 2 7 0 4 0 7 2 8 2 0 12 9 6 11 11 2 0 12 3 2 2 -split_gain=282.659 102.79 64.5655 73.7138 64.1476 63.576 55.8682 51.3129 42.7169 40.4589 38.862 31.595 27.6764 26.9268 26.5902 25.2967 25.332 24.2583 30.9909 23.5043 23.0614 22.2754 21.9488 21.5862 20.4576 21.2983 20.0681 19.7083 34.6147 27.277 -threshold=0.44949494949494956 1.5000000000000002 20.353565500000006 2.5000000000000004 33.642312000000004 25.373452000000004 27.360587500000005 1.5000000000000002 5.5000000000000009 347284800.00000006 1.0000000180025095e-35 38.267659000000002 6.5000000000000009 63.388565000000007 1.0000000180025095e-35 434980800.00000006 1.0000000180025095e-35 1198843200.0000002 48.846755000000009 0.62019230769230782 6.5000000000000009 1.0000000180025095e-35 1.0333333333333334 0.14907407407407411 59054400.000000007 1.0000000180025095e-35 0.93725490196078443 12.500000000000002 688910400.00000012 631368000.00000012 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 6 10 8 -5 27 14 12 11 19 24 15 22 20 -1 -4 21 18 -11 -9 -6 -17 -7 -8 -3 -26 -21 -2 29 -29 -right_child=5 2 3 4 13 7 23 9 -10 17 -12 -13 -14 -15 -16 16 -18 -19 -20 26 -22 -23 -24 -25 25 -27 -28 28 -30 -31 -leaf_value=-0.041184842452721464 -0.0098071372995422249 0.037902667410059217 0.003303807535210054 -0.040922276072179541 -0.0050531739718101092 -0.0083123887067852315 -0.081371508970274814 0.022435802852307295 0.035401623261160475 -0.00018956871957697121 -0.042637000846900981 0.025214897194865884 0.041874043084315575 0.026426366058550959 -0.09950042790555437 -0.026170065837959333 -0.031279957362975203 0.043683809083976732 0.029664552461441465 0.045046978570589577 -0.042346129818720844 0.079456465196257736 -0.17829895826411415 -0.021743458676458324 0.072106992910838122 -0.019898452821952895 -0.0022499848886966063 0.033953582462021417 0.13429546664385644 -0.089544064615924651 -leaf_weight=191.51142871358081 1515.3189907055275 115.17408843488465 2296.2447745495056 1050.536371574688 1637.952580650315 997.05633807055528 94.931855801939719 1683.3099426582994 660.65837916708097 1607.9357386357806 1070.1020818926302 704.89524199702282 172.19778329505425 334.06528628706292 273.43888658312824 54.25081382239398 642.36115829669211 333.94739627580566 727.11625400816229 1840.011368964786 279.49897716596956 61.107187338807421 11.029576803019152 1102.494881065684 37.847314214439393 834.06316460986977 138.93314846488647 110.60900809435407 37.716016568243504 33.537525163032115 -leaf_count=339873 132058 3771 467354 965351 159807 111747 242675 34325 26803 45866 1417258 28672 7062 11342 2560711 47676 269793 6211 6221 13842 83707 9937 1856 642944 2737 215793 2534 1172 137 295 -internal_value=0 -0.0125956 -0.00790584 -0.00287283 -0.0164371 0.0156491 -0.040182 0.0203885 0.00726177 0.0246708 -0.0267967 0.00231566 -0.00258254 -0.00501214 -0.0754846 -0.00296998 -0.0219819 0.0134337 0.00910702 0.03286 -0.0104898 0.0297883 -0.0101775 -0.0264727 -0.0096234 -0.0159024 0.0417265 -0.00532715 0.0319966 0.00520763 -internal_weight=0 11441.1 9778.76 7721.57 3302.05 9208.72 1662.38 7511.54 4419.52 6331.25 2057.19 3758.86 1180.28 2251.52 464.95 3053.96 757.719 2669 2335.05 3662.25 1917.45 115.358 1008.09 1197.43 987.085 871.91 1978.94 1697.18 181.863 144.147 -internal_count=7859530 7496204 3710001 2070442 1220207 363326 3786203 229664 850235 108999 1639559 823432 120665 254856 2900584 794760 327406 58298 52087 50701 243514 57613 113603 885619 222301 218530 16376 133662 1604 1467 -shrinkage=0.12 - - -Tree=48 -num_leaves=31 -num_cat=0 -split_feature=11 0 3 7 7 11 0 1 0 0 8 3 1 2 1 2 6 3 2 0 7 2 12 2 2 2 2 7 9 5 -split_gain=275.086 152.407 80.9402 49.9844 41.8643 86.2551 41.3588 39.5956 32.3819 29.4162 26.4826 26.0585 25.7615 27.2805 23.313 22.7171 28.016 21.8762 21.112 20.6517 22.413 20.49 20.0401 19.9515 19.2881 19.1069 17.5816 17.4956 16.7472 17.4137 -threshold=0.80909090909090919 33.981020000000008 1.0000000180025095e-35 2.5000000000000004 1.5000000000000002 0.27888888888888896 46.836120500000007 1.5000000000000002 20.998939000000004 27.946536000000005 1.0000000180025095e-35 38.500000000000007 1.5000000000000002 315144000.00000006 1.5000000000000002 662385600.00000012 1.0000000180025095e-35 23.500000000000004 94910400.000000015 27.699832000000004 8.5000000000000018 59054400.000000007 0.24500000000000002 221227200.00000003 126273600.00000001 249480000.00000003 284212800.00000006 1.5000000000000002 5.5000000000000009 1.0000000180025095e-35 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 4 3 7 8 14 12 -2 -1 24 15 26 -3 -14 -6 -10 -17 -8 -12 21 -21 -16 23 -7 -4 -9 27 -11 29 -23 -right_child=2 6 9 -5 5 22 17 25 10 11 18 -13 13 -15 19 16 -18 -19 -20 20 -22 28 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.029441330647204719 -0.032870358028412143 -0.030595050498800083 0.036492828440886263 0.02326913458359962 -0.10944470603810902 -0.024053853590120973 0.010526044817239719 0.014874921558840759 0.0050027213820494371 0.024600149784534051 0.013504279010237263 0.068517006608456013 0.0091763955455888366 -0.015355049956458417 -0.00081843518578159687 -0.015346511769745943 0.11459386071013829 0.060030906902493922 -0.022948967752194037 -0.019629506071418609 -0.11489052324399263 0.032729679490664146 -0.01627230972922632 -0.062105713044415325 0.0056680722334050988 -0.0064685169630651152 0.020724574266419247 0.052495848740292547 -0.098561942176912262 -0.076793923877541762 -leaf_weight=1002.7283824179606 562.26032565119203 565.65628952149473 397.55832237160939 1401.1330994353339 152.72864810280453 515.82575998839934 2390.1497762949721 1032.4043386574108 183.47328805911849 570.12727079114484 354.3867435825473 292.02112189178297 1388.3610569567813 1232.0365091901017 48.015989005183428 34.820915557262282 76.063137937384312 135.81830997241195 645.3740894744351 249.97592128353909 41.439402049343244 31.447163612952764 1820.8912617867554 322.49858147050713 1104.0593130876732 1455.3727446466796 1285.3372871694937 749.45355863720761 283.89302920047152 62.242389936027038 -leaf_count=1331467 345761 264909 7839 26696 1244497 515567 135573 46873 151009 9748 132915 2208 112727 145559 20117 43992 11161 1488 538712 155285 49493 49499 511121 747528 35957 142473 22422 4927 913901 138106 -internal_value=0 -0.0122078 0.0159158 0.0045076 -0.0258642 -0.0340708 0.00172075 -0.00411125 -0.0132549 0.0274604 -0.000712618 0.0345257 -0.00737119 -0.00235764 -0.0668747 0.0309218 0.0737956 0.0131885 -0.0100273 -0.0578028 -0.0331861 -0.0746548 -0.0233411 -0.0386939 0.0138296 0.00238888 0.0307144 0.0404443 -0.0840436 -0.0400333 -internal_weight=0 11537.8 8849.73 4451.17 5825.8 3528.96 5712.02 3050.04 2296.85 4398.56 1294.12 2896.94 3186.05 2620.4 869.743 294.357 110.884 2525.97 999.761 717.014 291.415 425.599 2659.22 838.324 1501.62 2487.78 2604.92 1319.58 377.583 93.6896 -internal_count=7859530 7214626 644904 561803 6554370 4345114 660256 535107 2209256 83101 877789 39305 523195 258286 2570898 206162 55153 137061 671627 1326401 204778 1121623 1774216 1263095 43796 189346 37097 14675 1101506 187605 -shrinkage=0.12 - - -Tree=49 -num_leaves=31 -num_cat=0 -split_feature=12 1 3 3 0 7 8 0 7 1 11 9 7 7 2 6 2 0 7 9 4 10 2 0 0 0 2 2 2 11 -split_gain=258.456 85.1766 60.4971 57.2308 51.7934 66.6205 48.8582 48.2174 43.0641 37.9668 31.0796 30.0056 24.7186 23.7801 21.2909 22.3891 22.4483 19.3613 19.8397 19.5997 18.5349 18.3332 18.2813 19.9374 18.227 19.8097 17.2887 17.135 16.7302 16.5376 -threshold=0.44949494949494956 1.5000000000000002 4.5000000000000009 9.5000000000000018 30.264538000000005 1.0000000180025095e-35 4.5000000000000009 27.360587500000005 1.5000000000000002 1.5000000000000002 0.27888888888888896 6.5000000000000009 1.0000000180025095e-35 1.5000000000000002 63201600.000000007 1.0000000180025095e-35 441979200.00000006 55.906434000000004 5.5000000000000009 1.5000000000000002 20.500000000000004 4.5000000000000009 62856000.000000007 21.372305500000003 -1.0000000180025095e-35 18.909438000000005 1373025600.0000002 59054400.000000007 599486400.00000012 0.90454545454545465 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 7 6 4 5 14 9 12 -6 20 13 17 -1 -7 -3 16 -16 18 19 -10 -2 -9 -11 -24 -17 -26 -5 -15 -18 -8 -right_child=2 3 -4 26 8 10 29 21 11 22 -12 -13 -14 27 15 24 28 -19 -20 -21 -22 -23 23 -25 25 -27 -28 -29 -30 -31 -leaf_value=-0.039123390978767887 -0.025960982321807304 0.028490856365033408 0.032728039912998878 0.023061543064310047 0.022740212966114427 -0.019863289638289209 0.012282566955862197 -0.029134863589721591 -0.0058037501404431431 0.039906034032778252 -0.023999984297858407 -0.030344082998491693 -0.096863665850661224 -0.0029491158701268338 -0.0023762710829641031 0.15967622858631447 -0.091746262584521052 0.019849752480721686 -0.025561563860594421 0.029545590979196183 0.03927375495082782 0.031053117111273683 -0.01698407546433138 0.0092017752878452621 -0.029174441821479258 0.053527424957307571 -0.18681109433502366 -0.076500127219131298 -0.025587613102695906 0.035014418992266504 -leaf_weight=188.06571776208017 741.37489608129181 286.53330074887253 2144.3745060654437 851.54591974159848 864.30197886325959 209.41627374368306 770.31804415764418 1084.5031585139118 1260.9244822127803 242.98027267682482 2118.5083854797949 655.09313519807029 247.13716602942981 51.190071396225846 907.56556609921245 14.683453099190954 65.949797302331831 491.06342873262474 577.49584998152113 275.12143615470904 68.487860801365969 78.101259427327932 477.47601037025743 3399.5217247214641 69.312378987997477 104.63276383794107 5.6602228408682995 418.65901920220102 332.31132524675411 1147.3086890862305 -leaf_count=339873 174954 10032 23102 50631 54640 246120 13197 882777 91982 3059 1429790 167219 2560711 22500 135807 280 22712 17790 118715 29370 3999 2842 29836 101393 18707 8311 598 1193693 91104 13786 -internal_value=0 -0.0122004 0.0151393 -0.00791405 -0.010828 -0.0196136 0.00963098 -0.0378461 -0.0010735 0.00330898 -0.0311623 -0.00738781 -0.0719166 -0.0534982 -0.00147151 -0.00721668 -0.0127992 -0.00161371 -0.00660078 0.00052813 -0.020443 -0.0250909 0.00797802 0.00597672 0.0314255 0.0205736 0.0216692 -0.0684874 -0.0365492 0.0258833 -internal_weight=0 11157.8 8991.84 9559.97 8702.76 4578.76 6847.47 1597.81 4124 4929.84 2797.77 3259.7 435.203 679.265 1780.99 1494.46 1305.83 2604.61 2113.54 1536.05 809.863 1162.6 4119.98 3877 188.629 173.945 857.206 469.849 398.261 1917.63 -internal_count=7859530 7496204 363326 3710001 3658772 3179056 340224 3786203 479716 313241 2892103 425076 2900584 1462313 286953 276921 249623 257857 240067 121352 178953 885619 134288 131229 27298 27018 51229 1216193 113816 26983 -shrinkage=0.12 - - -Tree=50 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 3 1 11 0 7 0 7 2 1 0 11 7 9 2 0 2 5 10 2 2 12 7 0 3 3 7 11 -split_gain=247.646 131.04 68.0822 44.7399 40.1626 35.0579 34.3932 36.7304 31.273 29.3085 26.4412 26.0033 23.6391 25.2837 21.7554 23.7266 21.4317 22.6721 20.0297 20.3356 19.3971 18.6432 18.2215 17.9373 17.1463 30.2493 16.9391 17.1472 15.9858 16.9644 -threshold=0.76388888888888895 35.82988550000001 24.424139000000004 2.5000000000000004 1.5000000000000002 0.28991596638655465 22.323515500000003 1.0000000180025095e-35 55.906434000000004 9.5000000000000018 662385600.00000012 1.5000000000000002 25.373452000000004 0.27888888888888896 1.5000000000000002 5.5000000000000009 347371200.00000006 46.836120500000007 94824000.000000015 1.0000000180025095e-35 1.5000000000000002 94392000.000000015 284040000.00000006 0.16333333333333336 1.0000000180025095e-35 17.276548500000001 65.500000000000014 87.500000000000014 5.5000000000000009 0.05634920634920635 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 4 11 8 12 23 14 10 -4 18 -8 -2 24 -14 -6 -16 17 26 -9 20 -20 -13 -17 28 25 -1 -7 -28 -3 -30 -right_child=2 5 3 -5 6 16 7 9 -10 -11 -12 21 13 -15 15 22 -18 -19 19 -21 -22 -23 -24 -25 -26 -27 27 -29 29 -31 -leaf_value=-0.094164820526237494 -0.040255323732536166 -0.002502594288715472 0.0094971063554422988 0.034905163408121428 -0.021570551143874399 0.005719115747868141 -0.0030614857655450801 0.0032156214972290978 0.036110053556205751 -0.10031630548704112 0.093622701546454065 0.025592236152272883 -0.087414204728480244 -0.021552972314492467 -0.030348237849241858 -0.055782676078989984 -0.0031731733267345808 0.028036366982009047 -0.012376537656996565 -0.02628847604663085 0.036229101310746206 -0.0037599870769589364 -0.11883236154856114 0.018896782056189273 -0.092826788136332092 0.060567044348503449 -0.1836095078199344 0.061760826783469426 -0.097108122772110311 -0.0282863777633338 -leaf_weight=41.172301767300311 240.00903831696542 345.9100688584831 3772.5673223993635 2178.3229905231974 958.29202690318414 1112.1209403374887 86.586473971928058 726.8684081339411 764.708295288714 58.082542978112542 76.879800189723596 377.72980517902738 102.87855649470237 455.45062613191271 450.12633800785881 252.36331077309512 1422.0948775405595 1090.7582352912868 586.15041607280705 1790.1713973402598 148.07037480529857 1779.2271223123082 89.422308495808409 176.40958288441152 217.43307199273136 32.552423443675778 13.260120916413145 5.9137944709509602 57.28246568397708 516.05779704298402 -leaf_count=70923 248077 76430 210748 24986 855038 93892 8047 111576 5510 84745 9417 9064 534488 470692 285109 384347 84185 26924 310711 747743 9534 160612 530007 18046 2220416 49468 258 115 34284 184138 -internal_value=0 -0.0122817 0.0145726 0.0207694 -0.023953 0.00267122 -0.020017 -0.0131039 0.0139826 -0.0158469 0.0424189 -0.00278896 -0.0481514 -0.0336927 -0.0337338 -0.0484511 0.00833014 0.0156921 -0.0143369 -0.019391 -0.00257315 0.00138051 -0.0722875 -0.01615 -0.0758713 -0.0258476 0.00378973 -0.107952 -0.0228761 -0.0351671 -internal_weight=0 10812.3 9112.56 6715.6 6072.5 4739.81 5223.01 3472.81 4537.28 3309.34 163.466 2396.97 849.487 558.329 1750.2 791.912 3644.15 2222.05 3251.26 2524.39 734.221 2156.96 341.786 1095.66 291.158 73.7247 1131.29 19.1739 919.25 573.34 -internal_count=7859530 7200533 658997 241244 6682261 518272 3336274 1281773 216258 1264309 17464 417753 3345987 1005180 2054501 1199463 205374 121189 1179564 1067988 320245 169676 914354 312898 2340807 120391 94265 373 294852 218422 -shrinkage=0.12 - - -Tree=51 -num_leaves=31 -num_cat=0 -split_feature=12 1 3 7 0 9 0 1 0 0 0 0 2 7 0 4 2 11 2 7 2 7 11 7 2 3 0 11 0 0 -split_gain=232.224 74.7595 58.3995 54.943 64.8374 59.6893 47.0754 38.6836 35.3086 32.9996 32.8501 28.5152 30.2028 31.0196 27.7984 26.5314 25.9314 23.8928 23.5787 22.811 21.5562 20.7923 20.6775 20.2029 28.0368 19.7543 17.4627 15.5276 15.4242 15.2648 -threshold=0.36602870813397131 1.5000000000000002 11.500000000000002 2.5000000000000004 20.132072500000003 5.5000000000000009 63.388565000000007 1.5000000000000002 27.360587500000005 25.135713500000005 27.699832000000004 45.25187300000001 688910400.00000012 1.0000000180025095e-35 63.388565000000007 6.5000000000000009 1609156800.0000002 0.88194444444444453 410011200.00000006 1.0000000180025095e-35 94824000.000000015 1.0000000180025095e-35 0.82575757575757591 1.5000000000000002 1198843200.0000002 3.5000000000000004 21.420474500000001 0.14907407407407411 34.326487000000007 12.563074500000001 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 8 6 4 19 14 7 15 21 22 -7 12 13 25 18 26 -8 -11 -5 -3 -19 -1 -9 24 -22 -6 -2 -10 -15 -21 -right_child=2 3 -4 5 11 10 16 9 27 17 -12 -13 -14 28 -16 -17 -18 20 -20 29 23 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.039020040956455185 -0.08903620265508215 -0.0091974653315993887 0.036720415376637061 -0.0084336107082541908 0.013057142117722343 -0.089711518549949035 0.038269765326381988 -0.038841932180767626 -0.075638507044897732 0.0032722975594704599 -0.034096967217701529 0.038977999716352282 -0.036314663343952912 -0.0080462953680205049 0.025151115702780984 0.030127999839834736 -0.1231555795134654 0.047152219537617619 -0.036974653247062644 -0.013872076729583557 -0.0006140437139290193 -0.093965787722994867 0.0006571865922846891 0.025997887741115368 0.072593886808673014 0.049085863941281227 -0.016189784193425039 -0.021694226280886981 0.012666006448372465 -0.049521006488143234 -leaf_weight=184.99053478267834 49.610138852100363 941.02484001988114 1345.675075160234 1340.5090072236862 923.77725187104033 232.82407904173459 882.55553396257164 236.43129853597293 83.885187623162892 1608.0896308858501 445.8451049228118 346.50139453625525 261.68967755718677 1728.8288599836596 250.62135296777706 180.75797698801262 14.537950804689897 403.86552340906928 604.88862937528484 265.23495989777507 1011.1789230164613 213.93061290692762 989.33000048319445 1603.9152391236075 81.36485906985763 287.28201654980467 1044.9335762511075 912.02281770957438 739.03213668111857 497.33604357835225 -leaf_count=339873 28188 219441 12836 372651 63695 795521 6117 26500 242675 44348 211967 9242 119633 641735 8348 12796 197 4614 248122 186002 41957 2548275 39694 19373 2777 7112 184473 621890 44400 755078 -internal_value=0 -0.0125012 0.0135698 -0.00843815 -0.0018941 -0.0220755 0.00972676 0.00650096 -0.038325 0.0105759 -0.0531792 0.00597558 0.00307337 0.0058754 -0.0124624 -0.0124601 0.0356497 0.0151417 -0.0173084 -0.0216979 0.0212981 -0.0684908 -0.00696238 0.0174253 0.0048398 0.0216047 -0.0194939 -0.0262401 -0.00184366 -0.0371227 -internal_weight=0 10260.2 9452.25 8865.4 5990.71 2874.69 8106.57 7209.48 1394.83 5934.18 678.669 4287.11 3940.61 3678.92 2196.02 1275.3 897.093 4708.41 1945.4 1703.6 3100.32 398.921 1225.76 2696.46 1092.54 1211.06 1094.54 995.908 2467.86 762.571 -internal_count=7859530 7435660 423870 3682947 2046338 1636609 411034 404720 3752713 179263 1007488 885817 876575 756942 629121 225457 6314 113069 620773 1160521 68721 2888148 66194 64107 44734 70807 212661 864565 686135 941080 -shrinkage=0.12 - - -Tree=52 -num_leaves=31 -num_cat=0 -split_feature=11 0 3 11 7 0 2 8 0 1 0 3 3 0 0 2 0 6 3 0 11 1 2 7 11 0 3 4 0 0 -split_gain=220.927 114.306 63.9847 42.4453 54.1983 43.7519 38.5283 37.1141 32.0437 28.5995 25.414 25.2898 21.4341 20.11 19.8589 18.4662 17.6965 22.6992 17.195 16.98 17.6404 16.9732 15.8801 15.5579 15.0218 14.6961 14.4421 13.4897 13.2269 20.2077 -threshold=0.76388888888888895 41.01957500000001 1.0000000180025095e-35 0.4188596491228071 1.5000000000000002 27.946536000000005 284385600.00000006 4.5000000000000009 28.781668500000006 1.5000000000000002 22.227638000000002 140.00000000000003 26.500000000000004 48.846755000000009 17.801955500000002 158155200.00000003 -1.0000000180025095e-35 1.0000000180025095e-35 3.5000000000000004 63.388565000000007 0.28991596638655465 1.5000000000000002 32097600.000000004 4.5000000000000009 1.2250000000000003 23.735786000000001 26.500000000000004 128.50000000000003 9.2699195000000021 22.021408500000003 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 7 4 10 6 21 9 15 27 16 13 19 22 -11 26 17 -1 -12 20 -3 -6 -4 -7 -9 -24 -5 -2 -17 -30 -right_child=2 12 11 8 5 23 -8 24 -10 14 18 -13 -14 -15 -16 28 -18 -19 -20 -21 -22 -23 25 -25 -26 -27 -28 -29 29 -31 -leaf_value=-0.1206967653557572 -0.026946668800435079 -0.018769080819751746 0.053412742541496611 -0.014863359496195971 -0.10314972602190416 -0.017736734502493023 -0.10262656511660653 0.025019140142772255 -0.0015595403082281449 -0.020516963775461826 0.010475313801419778 0.093444994708190066 0.052092071046421225 0.039459941303791934 0.0073464657615923412 0.022638845904413632 -0.02293448027118089 0.15755668677162532 0.084288958304035017 0.021479451265643924 0.005560840383763031 -0.039066713487265085 0.0018168666650661405 -0.042458971968272592 -0.10881146172783421 0.02123290907925076 0.053005564849333747 0.12251705405701108 -0.063835963654892858 -0.025566088989553142 -leaf_weight=5.6469920225254127 637.57457905850333 553.99616791667631 182.075344436671 939.6619923025462 66.37102112819025 946.97865037145016 233.49282101316874 1051.2894436591723 2074.5340225217583 435.19204354674866 215.78899246148944 74.546906198957004 143.83957851486775 854.53605602917287 2396.8958206234615 53.795474991002493 538.14779568178346 16.483470867720825 57.543632969559667 681.8000744391793 1903.5404431269308 575.45197504806822 717.35836582635056 598.09736354346478 12.188703423249533 2581.4988430293224 47.398989242035896 8.7865851822880341 301.76199578603018 581.78338558540145 -leaf_count=3749 358546 155978 2525 488628 848253 390527 1625075 14595 267772 71630 149089 477 1944 6299 126378 17699 606319 595 4742 25471 88282 776763 30534 498504 1089 46032 1498 892 788205 461440 -internal_value=0 -0.0117771 0.0138612 -0.0201865 -0.0303631 -0.0394517 -0.0608869 0.0038644 -0.0119055 -0.00213359 -0.00397368 0.024157 0.00680027 0.022965 0.00306467 -0.0230584 -0.018608 0.086488 0.0260226 0.00472459 7.60466e-05 -0.0456981 0.0189153 -0.0273073 0.0234823 0.0170108 -0.0116028 -0.0249093 -0.0351209 -0.0386383 -internal_weight=0 10536.1 8951.94 7252.94 3254 2420.39 875.316 4541.93 3998.94 3478.45 833.611 4410.02 3283.18 4335.47 2832.09 1924.4 560.278 22.1305 273.333 3139.34 2457.54 641.823 3480.93 1545.08 1063.48 3298.86 987.061 646.361 937.341 883.545 -internal_count=7859530 7200533 658997 6928858 4903616 4139122 3250091 573130 2025242 557446 764494 85867 271675 85390 198008 1757470 610663 4344 153831 269731 244260 1625016 79091 889031 15684 76566 490126 359438 1267344 1249645 -shrinkage=0.12 - - -Tree=53 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 0 7 7 1 3 2 3 1 7 2 7 0 0 2 6 11 2 9 12 5 3 12 2 11 0 0 0 -split_gain=209.681 116.871 62.2987 38.0223 33.6246 32.8568 34.0626 29.9966 26.5436 23.9407 23.3518 22.3161 22.1212 22.2306 20.5523 22.9564 27.121 20.1401 17.0539 16.6593 16.0003 15.5568 15.5191 17.1134 16.0075 14.5774 14.5255 14.2594 13.474 19.4514 -threshold=0.80909090909090919 40.27922800000001 31.309764500000004 25.373452000000004 8.5000000000000018 1.0000000180025095e-35 1.5000000000000002 1.0000000180025095e-35 347112000.00000006 38.500000000000007 1.5000000000000002 1.5000000000000002 473083200.00000006 2.5000000000000004 12.843794500000001 -1.0000000180025095e-35 126100800.00000001 1.0000000180025095e-35 0.11651583710407241 220708800.00000003 3.5000000000000004 0.31414473684210531 1.0000000180025095e-35 33.500000000000007 0.93725490196078443 315316800.00000006 0.36931818181818188 11.867569500000002 27.026261500000004 26.516527000000004 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 7 5 11 14 -7 -2 26 12 -3 -5 13 22 15 17 -17 -1 -12 -20 -13 27 23 24 -4 28 -8 -10 29 -9 -right_child=2 10 9 4 -6 6 8 25 21 -11 18 20 -14 -15 -16 16 -18 -19 19 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.12145616359433525 -0.0054468737959523358 -0.013348612712025545 0.008080863790884428 0.0036512225703277039 -0.065052864659110199 -0.085452756126656385 -0.040323161077918536 0.018754088240847604 -0.03278447395951805 0.062448119809927545 -0.034192634857601857 -0.011441159612106976 0.0094723549949224731 0.039469284801317527 0.027863355906464157 0.017247904620459879 -0.066011651303577348 0.16495008753200022 0.02506050893904133 0.0059567074570828138 -0.031120720412982569 -0.026916107246703919 0.026456987139341116 -0.12859050763773111 -0.11780633027502732 0.0015280390835786461 -0.016296998342611727 -0.090285284683722905 0.044057834189659632 -0.081051228251170254 -leaf_weight=4.5604178389776289 2304.2762681845361 697.94780457173192 419.22046606240065 1090.621695698148 173.62399950015151 193.92312387069342 578.77903368274451 794.64465048345755 86.982551564031695 224.55516579851974 115.25902172493898 2468.3915687921699 1325.459962614756 1332.0454849572534 192.09374677802259 91.009080212456297 147.80831028594662 15.424621492598817 1031.5149334064645 1812.0061283109849 783.84060408036294 152.61962566951155 959.96761904428058 14.520055945031343 15.038123730802907 710.57353150838389 969.10329616190006 217.51499710546315 325.59778487481162 29.121638088079635 -leaf_count=1970 489555 152154 18755 281867 227267 2222070 886202 20184 97466 1891 38530 686245 36047 12461 147224 19132 91055 330 31952 78524 750808 45364 33003 76 1221 26189 403265 1053201 4820 702 -internal_value=0 -0.0110614 0.0141594 -0.019969 -0.0132737 -0.0313805 -0.0374313 0.00370335 -0.0327855 0.0243069 0.00639521 -0.0112032 0.0222001 0.0283552 -0.00187148 -0.0239426 -0.0342847 0.0995105 0.0110527 0.012887 -0.0161845 -0.0581924 0.0178456 -0.000575331 0.00371363 0.0150395 -0.0252814 -0.0738645 0.0233924 0.015223 -internal_weight=0 10823 8455.02 7166.3 4516.48 2649.82 2198.92 4164.21 2005 4290.81 3656.73 4342.85 4066.25 2740.79 450.896 258.802 238.817 19.985 2958.78 2843.52 3252.23 457.117 1408.75 448.779 434.259 1859.94 1547.88 304.498 1149.36 823.766 -internal_count=7859530 7214626 644904 6913466 1946187 4967279 4707568 541450 2485498 103454 301160 1718920 101563 65516 259711 112487 110187 2300 149006 110476 1437053 1196031 53055 20052 19976 51895 1289467 1150667 25706 20886 -shrinkage=0.12 - - -Tree=54 -num_leaves=31 -num_cat=0 -split_feature=12 1 0 3 0 7 7 0 1 0 11 3 2 11 2 2 12 5 4 3 2 9 7 3 11 7 5 2 7 2 -split_gain=199.902 63.5485 48.248 47.1539 39.5037 55.6297 33.5942 32.6548 27.5562 24.2407 24.1869 23.4868 22.0956 20.9272 17.8987 17.385 16.7948 16.0441 15.9544 15.5829 15.3293 15.2858 14.8783 14.7186 14.6489 14.1224 14.815 13.9379 13.8276 13.4356 -threshold=0.44949494949494956 1.5000000000000002 35.82988550000001 12.500000000000002 30.264538000000005 1.0000000180025095e-35 1.5000000000000002 43.939336500000003 1.5000000000000002 51.783302000000013 0.27888888888888896 13.500000000000002 220881600.00000003 0.84523809523809534 2092867200.0000002 59054400.000000007 0.72077922077922085 1.0000000180025095e-35 1.0000000180025095e-35 152.50000000000003 59054400.000000007 6.5000000000000009 1.5000000000000002 444.50000000000006 0.4045454545454546 6.5000000000000009 1.0000000180025095e-35 915192000.00000012 3.5000000000000004 63028800.000000007 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 7 11 4 5 14 -6 24 18 21 15 13 19 27 29 -7 -14 -12 -4 -10 -5 25 -17 -13 -1 -8 -27 -2 -22 -3 -right_child=2 3 8 20 6 10 9 -9 12 -11 17 23 16 -15 -16 22 -18 -19 -20 -21 28 -23 -24 -25 -26 26 -28 -29 -30 -31 -leaf_value=-0.05997175393668816 -0.02322121225896262 0.025400426544046124 -0.013213492295683325 0.1224270156902542 0.019942345756232348 0.0048098758348699734 -0.0026172723100494166 -0.006064491010761763 0.036620883361256573 0.01180784476398789 -0.0051836380134857186 0.032377531991362396 0.01112090626639738 0.0055476085973389308 -0.1419681398817467 -0.028255341520358183 0.030844384122968013 -0.028976684199058182 0.029557717494846189 0.12676948476891972 0.029572278177959561 -0.030299547173883796 -0.070615758323615385 -0.16850250795781568 -0.031499130491728103 0.018307199247407292 -0.043291705196911653 0.027154407670261716 -0.012274888816745762 -0.0043695282626988107 -leaf_weight=519.78704794275154 648.48244532081026 256.45715573223492 448.88757356664792 21.728403063666519 853.21326715300347 74.892987040704156 1504.5820341844083 419.63612299331635 1290.8266779703563 757.19077116918561 567.70194116642847 444.96638725593948 1477.5582261162299 2900.5283745588622 12.842195712174997 176.93190089098823 1073.2983307120167 1451.8304102289276 174.33385705723776 28.190848927304614 497.87128855998071 554.03573118677605 367.5304587911445 5.2858044989407054 521.27752991996613 71.71875609814515 259.9538066691639 90.04924904453037 147.3376371649174 1466.3806116030225 -leaf_count=2449524 64513 8769 29546 212 55207 25900 140052 91026 12344 35351 461619 4683 30724 197175 3326 243194 9444 971846 5865 174 25702 159907 1197027 31 1245653 16455 76502 8827 12776 276156 -internal_value=0 -0.0111017 0.0135859 -0.00734998 -0.00979538 -0.0176767 -0.00117747 -0.0343254 0.0221695 -0.00690272 -0.0286513 0.00415473 0.0259407 0.000955724 -0.000990996 -0.0493962 0.01942 -0.0222885 -0.00124825 0.0385504 0.0233579 -0.0128299 -0.0568524 0.0300082 -0.0457164 -0.00755852 -0.0299715 -0.0170781 0.0200161 6.2315e-05 -internal_weight=0 10502.9 8582.41 9042.2 8375.26 4374.57 4000.69 1460.7 4493.1 3147.48 2638.89 4089.31 3869.87 3639.06 1735.68 619.355 2550.86 2019.53 623.221 1319.02 666.937 2390.29 544.462 450.252 1041.06 1836.25 331.673 738.532 645.209 1722.84 -internal_count=7859530 7496204 363326 3710001 3671311 3187837 483474 3786203 88097 428267 2899586 275229 52686 270515 288251 1466121 40168 1433465 35411 12518 38690 392916 1440221 4714 3695177 233009 92957 73340 38478 284925 -shrinkage=0.12 - - -Tree=55 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 1 1 7 9 0 2 3 0 3 0 2 1 4 11 2 7 2 6 0 8 7 0 4 5 0 11 2 -split_gain=187.868 83.2415 61.6791 39.8061 31.0527 30.3142 38.4151 31.5457 26.2027 22.1969 21.4728 21.2627 19.0834 18.2124 16.662 16.3904 15.6515 18.2378 15.5205 23.6685 22.493 20.7516 15.3044 15.0582 20.4059 15.7983 13.8242 13.7067 13.4212 13.1104 -threshold=0.67948717948717963 43.939336500000003 30.264538000000005 1.5000000000000002 1.5000000000000002 2.5000000000000004 5.5000000000000009 20.242299000000006 378734400.00000006 29.500000000000004 27.699832000000004 15.500000000000002 25.373452000000004 121867200.00000001 1.5000000000000002 60.500000000000007 0.23303167420814483 62856000.000000007 1.0000000180025095e-35 662385600.00000012 1.0000000180025095e-35 26.619919000000003 10.500000000000002 1.0000000180025095e-35 17.276548500000001 3.5000000000000004 1.0000000180025095e-35 17.967157500000003 1.1714285714285715 11793600.000000002 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 11 12 -4 7 -7 -5 28 22 -8 14 23 -9 15 -2 -14 -18 19 -15 -21 -20 29 24 -1 -26 -22 -16 -6 -3 -right_child=2 9 4 5 8 6 10 13 -10 -11 -12 -13 16 18 27 -17 17 -19 21 20 26 -23 -24 -25 25 -27 -28 -29 -30 -31 -leaf_value=-0.088753719479481685 -0.027391439803293772 -0.16554606462026505 -0.0026161877732133738 -0.026539294569084455 0.031813100262881269 -0.017369094541747798 -0.084734470561369971 0.014424780815799424 0.012221952264701418 0.064719620046278847 -0.035239784256645347 0.028106873734263356 -0.075488485034572214 -0.021434496188062799 -0.014632480110394114 0.085264114060985011 0.010917832291393804 -0.03644847920679891 -0.035186203300771331 -0.035187408203090235 0.12299880408378613 -0.0040188437364057248 0.12916688208197463 -0.093412652685082392 -0.034346090420581378 0.13330152485563848 -0.5118447234173692 0.0048563106365266699 -0.02804163106589061 0.0046429976221103383 -leaf_weight=35.081727472843752 459.4688585721251 6.5070730386210007 746.22106139786592 1017.269477576815 2879.7517198456262 1681.5072097217953 205.60790181943196 731.35053974689822 1775.1071714104628 93.084850584098604 327.04737891041111 373.28051391873669 104.02534975628373 65.336398518850388 643.64560397641662 19.352879015528742 152.75214045882723 500.72529114065327 391.1885937569773 18.762778116173649 53.684269626634091 1439.6310852432148 14.159326278837396 151.88830622393175 17.492971457218019 15.019941900176631 0.4695606326131373 2697.3484768173789 54.953918324259575 2235.0295398969124 -leaf_count=70923 333858 1648 64146 1079936 38538 609835 795521 77992 38334 1197 191225 3531 494033 11426 87391 2941 124233 536063 517273 4313 6846 185009 73 2211354 43499 5969 115 139098 1270 181940 -internal_value=0 -0.0122122 0.0117167 -0.0188468 0.0201274 -0.0151501 -0.0262658 -0.00852967 0.0237309 0.00730341 -0.0543487 0.000772611 -0.0412908 -0.00174509 -0.00189875 -0.0228331 -0.0322609 -0.0253765 -0.00775101 0.0310141 0.0779998 -0.0106788 0.00493321 -0.072447 -0.0253157 0.0431533 0.117214 0.00110168 0.030692 0.00414674 -internal_weight=0 9257.62 9649.13 6908.84 5456.03 5931.86 2214.16 3717.69 4709.81 2348.78 532.655 4193.1 976.986 2700.42 3819.82 478.822 757.503 653.477 1969.07 138.253 72.9166 1830.82 2255.7 219.483 67.5946 32.5129 54.1538 3340.99 2934.71 2241.54 -internal_count=7859530 7150423 709107 6965565 142288 3479491 1596581 1882910 78142 184858 986746 566819 3486074 802974 563288 336799 1154329 660296 724982 22700 11274 702282 183661 2331745 120391 49468 6961 226489 39808 183588 -shrinkage=0.12 - - -Tree=56 -num_leaves=31 -num_cat=0 -split_feature=12 3 3 1 8 0 7 0 7 1 0 0 3 2 2 12 3 0 2 2 11 4 2 7 9 0 7 0 0 2 -split_gain=179.318 59.1959 46.4077 35.8645 34.8479 27.0221 25.5678 29.4437 25.4919 23.9296 23.5884 19.0982 18.6874 17.8964 16.4471 14.2469 13.7251 13.6121 13.9278 13.5427 13.6578 13.395 12.8642 12.7067 28.7959 14.8458 12.64 12.1143 11.648 11.5259 -threshold=0.44949494949494956 1.0000000180025095e-35 4.5000000000000009 1.5000000000000002 4.5000000000000009 20.020142500000002 1.5000000000000002 39.539316000000007 1.0000000180025095e-35 1.5000000000000002 43.939336500000003 30.264538000000005 65.500000000000014 347371200.00000006 62856000.000000007 0.2817460317460318 152.50000000000003 21.372305500000003 728740800.00000012 50846400.000000007 0.19615384615384621 59.500000000000007 725803200.00000012 1.5000000000000002 5.5000000000000009 26.721363000000004 16.500000000000004 39.539316000000007 15.465850500000002 221054400.00000003 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 4 10 9 8 11 15 -5 21 -1 12 22 23 -11 -8 -4 -16 27 -9 -21 -2 -3 -7 -25 -26 -15 -19 -10 -6 -right_child=2 6 16 5 29 13 7 19 28 14 -12 -13 -14 26 17 -17 -18 18 -20 20 -22 -23 -24 24 25 -27 -28 -29 -30 -31 -leaf_value=-0.046108256567831088 -0.020533943990404691 0.0029832700371614745 0.02728712346194509 -0.01138152587601933 0.036017134663423801 0.0085106967100141064 -0.028563033966257381 0.072082831243786158 -0.029348919523581742 0.037559211304738174 -0.010380488871297789 0.032340249727210162 0.063478209260136892 -0.017710496165061675 -0.015220961768487775 -0.0014963911152613338 0.088506996285088443 -0.0019476748957892775 0.027197034331841945 -0.040504461934592027 0.0099677279729019699 0.059232097905220049 -0.062529054635603654 0.00038818051914059305 -0.078684311519012701 -0.023818097155402927 -0.10980936867303687 0.014486089792616478 -0.062550815153391962 0.015516760734359283 -leaf_weight=912.46194536503253 715.05099504627105 1156.5416031308514 1941.7379044447853 602.19824444240885 586.22189331540358 972.39329018822468 848.5376623687157 45.725292187424202 299.8946127769787 228.08801797624983 375.68128948195726 472.77019143158577 71.97110141608573 1379.5205026109493 449.08131452354064 417.97593141167727 54.183316368551459 1788.0723575217417 429.46381744393511 85.32746989284442 808.2337695813585 31.629432763067598 44.804784380123692 1110.2092023019823 97.388175648628589 262.2093212935871 21.769029996628433 1011.1969335886379 309.03939869472691 1210.3890355811327 -leaf_count=3652093 177773 185578 22699 184721 8260 198335 433776 1916 389422 3059 88403 20077 1639 805476 29836 36243 403 71119 12809 15686 27448 1180 17643 263883 297302 121213 13785 17465 741565 18723 -internal_value=0 -0.0106318 0.0129603 -0.0178144 0.00801147 -0.0132591 0.00089629 -0.00769135 -0.028889 0.00252995 -0.0356889 0.0117448 0.00409738 -0.00833367 0.00629275 -0.0196307 0.0289504 0.0043534 0.0070761 0.00840757 0.00514687 -0.0171528 0.000538456 -0.00213098 -0.00917133 -0.0386826 -0.0191436 0.00398888 -0.0462014 0.0222064 -internal_weight=0 10294.7 8445.12 6342.77 6449.19 5054.62 3951.89 2205.8 1211.13 4652.58 1288.14 1746.09 1273.32 3843.49 3905.9 1266.51 1995.92 3677.81 3228.73 939.287 893.561 746.68 1201.35 2442.2 1469.81 359.597 1401.29 2799.27 608.934 1796.61 -internal_count=7859530 7496204 363326 6756198 340224 3015702 740006 515069 1315708 313241 3740496 224937 204860 1699994 134288 470019 23102 131229 101393 45050 43134 178953 203221 880733 682398 418515 819261 88584 1130987 26983 -shrinkage=0.12 - - -Tree=57 -num_leaves=31 -num_cat=0 -split_feature=11 0 3 12 7 11 11 1 2 10 7 3 11 2 0 0 2 12 0 3 9 0 2 2 11 2 2 0 2 2 -split_gain=170.921 93.9949 48.7484 33.4359 28.6036 47.1336 25.8305 21.8488 26.8209 18.9477 19.1975 18.0698 17.9802 17.6843 16.2967 16.0708 14.8628 14.5959 15.5229 14.5725 13.588 13.2773 22.9258 14.9959 13.2315 17.1371 12.842 12.3113 12.3638 12.2653 -threshold=0.76388888888888895 33.981020000000008 8.5000000000000018 0.63961038961038974 1.5000000000000002 0.27888888888888896 0.43303571428571436 1.5000000000000002 94392000.000000015 3.5000000000000004 4.5000000000000009 29.500000000000004 0.060915275200989494 158155200.00000003 55.906434000000004 20.998939000000004 599832000.00000012 0.93725490196078443 20.514205000000004 152.50000000000003 9.5000000000000018 -1.0000000180025095e-35 599486400.00000012 348580800.00000006 1.8333333333333337 756993600.00000012 410616000.00000006 22.583849000000004 378907200.00000006 378907200.00000006 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 4 3 7 15 13 9 -2 -9 10 20 29 -12 -6 17 21 -16 26 -19 27 -3 22 -1 -23 25 -20 -5 28 -4 -8 -right_child=2 6 19 14 5 -7 11 8 -10 -11 12 -13 -14 -15 16 -17 -18 18 24 -21 -22 23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.1033916454043344 -0.023392343258407871 0.014043119270501836 0.012865935051981204 0.022667142417709965 -0.03706860289441332 -0.021466115709597368 0.012988120440065783 0.028973676139990242 -0.00029197932295167006 0.024981171941453658 -0.085871560241843808 0.054248722466992652 -0.018960861998336392 -0.075533500082121563 0.041360733696927249 -0.0022518438043519985 -0.0011941532571473389 -0.1948615332981079 -0.054934175383492712 0.091030830740511326 -0.015899220900304857 -0.016774172282033074 0.12006343930274047 -0.052317886382180358 0.049780237228103548 0.068877286688346293 0.0044583779428951876 0.033918774277081468 -0.079212397544577609 -0.0041676258208261227 -leaf_weight=9.4187221588190386 469.38319063076506 501.21962398880464 134.61035336949863 1345.2599895017283 327.27533469945826 2250.3219767957221 1658.1002989650742 532.43321372221999 2945.3166537638681 219.02764227641183 61.1342501950719 120.8163167398161 1062.5471756311438 363.27098687349456 598.15535357781482 1176.5367940245112 147.28337445601937 7.1620330430960157 95.725118981312335 58.466588618524838 386.52129052228861 637.78742555079032 22.008009411626063 233.50255866939176 35.357582325887051 19.324898760431097 952.77357663188195 1244.8825568695047 24.849323281967372 940.44561932512534 -leaf_count=9117 334035 62118 1774 33383 789059 1764895 91121 12385 219209 9268 47473 1649 306660 1781839 3790 877789 1269 1195 7429 404 80603 695451 3913 622986 1602 1583 28199 12091 649 56592 -internal_value=0 -0.0106961 0.0123841 0.00829958 -0.0222658 -0.0298822 0.00103804 0.000908694 0.00418872 -0.00853363 -0.0121834 0.00888883 -0.0226034 -0.057306 0.017413 -0.011493 0.0329531 0.0126952 -0.0226331 0.0323429 0.00100616 -0.0235368 0.0530583 -0.0263012 -0.0143948 -0.0341251 0.0151179 0.0298977 -0.00149525 0.00677927 -internal_weight=0 9969.93 8610.98 7148.17 5020.12 2940.87 4949.81 3947.13 3477.75 2230.45 2011.42 2719.36 1123.68 690.546 3201.04 2079.25 745.439 2455.6 157.57 1462.81 887.741 902.717 31.4267 871.29 150.408 115.05 2298.03 1404.34 159.46 2598.55 -internal_count=7859530 7200533 658997 644079 6545049 4335793 655484 565629 231594 506122 496854 149362 354133 2570898 78450 2209256 5059 73391 11809 14918 142721 1331467 13030 1318437 10614 9012 61582 14514 2423 147713 -shrinkage=0.12 - - -Tree=58 -num_leaves=31 -num_cat=0 -split_feature=12 7 0 3 0 8 3 11 7 0 1 2 0 1 0 0 0 0 3 12 2 3 2 2 12 2 3 3 0 3 -split_gain=163.912 53.2679 50.3205 48.1498 47.7477 27.0375 26.9137 26.532 23.3783 22.8237 21.456 21.4107 21.0536 20.8606 15.693 15.2845 13.654 12.6611 12.5363 12.0812 11.946 11.8852 11.7643 13.0763 15.2529 14.5537 13.2588 13.2228 13.0243 12.5153 -threshold=0.36602870813397131 2.5000000000000004 31.995413000000003 1.0000000180025095e-35 21.973876500000003 8.5000000000000018 5.5000000000000009 0.24068965517241384 1.0000000180025095e-35 48.846755000000009 1.5000000000000002 378907200.00000006 55.906434000000004 1.5000000000000002 45.25187300000001 1.0000000180025095e-35 25.373452000000004 22.481851500000001 140.00000000000003 0.16954022988505749 157982400.00000003 26.500000000000004 662990400.00000012 346766400.00000006 0.63961038961038974 93960000.000000015 444.50000000000006 26.500000000000004 25.135713500000005 32.500000000000007 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 4 7 5 8 10 11 -3 -1 15 17 14 21 -10 -6 -5 -12 -2 -11 -14 -9 -4 23 24 25 -17 27 -27 -26 -24 -right_child=3 2 12 9 6 -7 -8 20 13 18 16 -13 19 -15 -16 22 -18 -19 -20 -21 -22 -23 29 -25 28 26 -28 -29 -30 -31 -leaf_value=-0.0080346698909328114 -0.06150786979419251 -0.073566600456722711 -0.021795785265724104 -0.21682581017024002 0.00250662355543245 0.036604104799923876 0.028469554285893477 -0.013883928645704861 -0.099249199606906133 0.033390351147803296 -0.0086570194653059797 -0.015334667067055592 -0.01577525055680578 -0.02840517172606255 0.036942288215513285 0.03758508359408539 0.0099715776573797259 -0.010322864729379403 0.12406830251579661 0.020865107774976386 -0.046732192935833208 0.03234421612141037 0.027195251931454362 0.0010530389349645214 -0.004445913341975547 -0.0030499739037562036 -0.23274284737939965 0.039686932785572039 0.038222372962285249 0.092297409510605014 -leaf_weight=1222.1721718358285 74.66528096943523 333.22311783417354 1725.5256018281384 4.0426871228555674 2355.2687582813001 324.63808410039201 528.65135408546075 291.584518932957 64.337203493071456 1156.3278799694608 737.06676223805789 1010.225625602267 209.37321844267535 854.66551695551266 207.31607163721355 210.04813468472639 2449.2246377726751 1018.6095551659281 22.354400023119524 339.94151151711776 351.81127470740381 60.408305148041109 336.16288798425376 886.10424560990486 122.16872243626858 710.06274881294667 3.4131609797477713 122.16046653944068 656.883676725447 48.660501964855939 -leaf_count=513029 41848 1490126 587900 100 926542 1924 23338 350362 903121 9819 52818 599046 34150 1191749 8928 3604 72098 179574 160 9759 795219 2391 7778 23637 2327 19669 23 1446 6750 295 -internal_value=0 -0.0109095 -0.0232109 0.0117347 -0.00438324 0.003218 0.00319959 -0.0460835 -0.0189081 0.0209 0.000685169 -0.000539696 -0.013645 -0.0333679 0.00529291 0.015495 0.00566229 -0.0138201 0.0351132 0.00689941 -0.0318468 -0.019964 0.0158005 0.013013 0.0188208 0.00935058 0.00225237 0.0032245 0.0315313 0.0354339 -internal_weight=0 9554.5 3311.87 8882.59 6242.64 4604.2 4101.46 976.619 2141.17 4278.39 4279.57 3572.81 2335.25 919.003 2562.58 3099.71 3186.29 1093.27 1178.68 549.315 643.396 1785.93 3095.66 2710.84 1824.74 1045.68 835.636 832.223 779.052 384.823 -internal_count=7859530 7435660 3269907 423870 4165753 348262 1557854 2635707 2607899 75608 346338 1534516 634200 2094870 935470 65629 124916 221422 9979 43909 1145581 590291 65529 57456 33819 24742 21138 21115 9077 8073 -shrinkage=0.12 - - -Tree=59 -num_leaves=31 -num_cat=0 -split_feature=12 1 3 0 7 7 8 0 11 0 2 1 7 6 2 7 0 0 2 2 0 11 2 2 0 2 0 0 10 9 -split_gain=154.25 49.3126 41.3543 33.5658 54.2639 31.1624 28.9668 23.3711 21.8083 21.481 20.9467 17.3076 17.2674 17.2022 28.5753 16.0523 15.131 19.0967 15.4632 15.2043 14.8945 14.1234 13.9144 13.5832 13.5695 14.0105 13.9504 12.9095 15.7623 12.8601 -threshold=0.45804195804195807 1.5000000000000002 4.5000000000000009 30.077133500000006 1.0000000180025095e-35 1.5000000000000002 4.5000000000000009 26.619919000000003 0.4188596491228071 45.25187300000001 220708800.00000003 1.5000000000000002 3.5000000000000004 1.0000000180025095e-35 441806400.00000006 1.5000000000000002 1.0000000180025095e-35 17.719184000000002 662385600.00000012 694180800.00000012 21.049638000000005 0.14907407407407411 62510400.000000007 307368000.00000006 39.539316000000007 1198843200.0000002 17.541070000000005 45.25187300000001 7.5000000000000009 2.5000000000000004 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 7 6 4 13 29 11 15 10 23 -6 -2 -11 14 -3 -1 -15 -18 20 -20 -19 -9 -13 -7 25 -24 -27 28 -4 -5 -right_child=2 3 27 5 8 9 -8 21 -10 12 -12 22 -14 16 -16 -17 17 18 19 -21 -22 -23 24 -25 -26 26 -28 -29 -30 -31 -leaf_value=-0.042521923539047171 -0.014622943286431989 0.0062069136785218139 0.021054350430361916 0.068159308589525402 -0.025598140819923693 -0.0031832327542628534 0.020672453461118838 -0.073125003966943866 -0.016138875152299947 0.029221580105474119 -0.061005840824282571 0.037270531782316089 -0.0014046904586598736 0.15177002861566813 -0.031580749375333575 -0.10213903220167309 -0.022834957417372972 0.11155859095385708 0.11045823828003573 -0.22039810748675429 -0.018821949457096948 -0.018692862668489508 -0.0034690427611985524 -0.022858973762106886 0.014873974062581723 -0.13475221818962385 0.037433348319459228 0.040854691484307391 -0.22356239333592401 0.016224141373124171 -leaf_weight=225.75667097724426 718.42766379339446 1266.8484472574637 1227.5217871795608 74.593140312772903 656.60333488192714 1121.0359751818642 1740.2968386447892 73.820469006747544 1567.5653636343322 380.98315035755513 379.78554799375411 190.68174303567866 871.33905435366091 14.550614413736126 372.99350354178 91.3786099402476 74.778172506747069 16.873930709145498 56.486388944574003 2.0463480831349434 49.728907513526792 974.29944742129805 2313.8849162630368 919.77661361388232 1138.895096483282 7.0153301788086528 177.68295274925367 684.6329099138934 3.7751912996172896 859.45379713285047 -leaf_count=1227259 178886 146356 18247 3116 601197 169067 26711 270644 851443 11864 1457092 2259 60741 332 116144 1554132 18565 1944 7369 574 1954 734395 104839 206489 20334 591 6222 4828 21 55915 -internal_value=0 -0.00996558 0.0122106 -0.00663301 -0.013897 0.0010281 0.00750687 -0.0311661 -0.0250688 -0.00445913 -0.0385747 0.00246738 0.00791295 0.00179148 -0.00238857 -0.0597079 0.0337489 0.0251373 0.0538031 0.0987843 0.0142455 -0.0225286 0.0056748 -0.0120511 0.00401821 -0.000930137 0.0308725 0.0276448 0.0202989 0.0203737 -internal_weight=0 10050.7 8202.81 8685.44 4458.26 4227.18 6286.88 1365.26 2603.95 3293.13 1036.39 4546.59 1252.32 1854.31 1639.84 317.135 214.464 199.914 125.136 58.5327 66.6028 1048.12 3828.16 2040.81 3637.48 2498.58 184.698 1915.93 1231.3 934.047 -internal_count=7859530 7496592 362938 3710162 3202970 507192 339842 3786430 2909732 448161 2058289 313131 72605 293238 262500 2781391 30738 30406 11841 7943 3898 1005039 134245 375556 131986 111652 6813 23096 18268 59031 -shrinkage=0.12 - - -Tree=60 -num_leaves=31 -num_cat=0 -split_feature=11 0 3 2 1 10 0 3 5 7 11 1 0 0 6 1 7 12 0 2 11 3 2 2 12 0 2 0 0 9 -split_gain=152.077 76.2813 44.7295 26.3048 23.8896 23.6542 20.4476 19.958 18.8648 18.6568 19.5065 18.4528 18.3209 17.5452 16.3009 22.0441 15.4403 26.1329 15.3285 14.9172 18.8938 14.7763 14.7123 14.6856 15.8221 13.9364 13.82 12.381 11.7144 11.6113 -threshold=0.76388888888888895 32.495975500000007 1.0000000180025095e-35 41428800.000000007 1.5000000000000002 7.5000000000000009 63.388565000000007 2.5000000000000004 1.0000000180025095e-35 3.5000000000000004 0.29705882352941182 1.5000000000000002 24.907383000000003 26.819955000000004 1.0000000180025095e-35 1.5000000000000002 3.5000000000000004 0.31009615384615391 17.801955500000002 662385600.00000012 0.13188405797101452 152.50000000000003 688910400.00000012 249480000.00000003 0.63961038961038974 22.481851500000001 126532800.00000001 17.366282500000004 7.7104752000000003 3.5000000000000004 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 5 -1 -3 11 16 8 14 13 27 25 -4 -10 29 -16 22 -18 -13 26 -21 -14 -6 -20 -25 28 -9 -11 -2 -5 -right_child=2 4 12 7 6 -7 -8 19 9 10 -12 18 21 -15 15 -17 17 -19 23 20 -22 -23 -24 24 -26 -27 -28 -29 -30 -31 -leaf_value=0.004834438951595404 0.12828693461377841 -0.01729766906599137 0.006137382949562919 -0.0031019428295925538 0.010675964292793608 0.036887918446872253 0.025564971226562448 0.0052359062587717022 -0.039320074880880775 0.017412857967386831 -0.036851164419705852 -0.016518579607358266 0.024171870619447498 -0.014653195812165502 -0.054678131691096588 0.01519992208624759 -0.021296663228691379 0.0089360047167663607 0.019437807089728251 0.1056307447881914 -0.0023213363176371416 0.096945154745802148 -0.023377446498328042 -0.0098478961528982601 0.013043065500270677 -0.008304613264845594 -0.032761663609495409 -0.098866947795859042 -0.057782136944883503 -0.037306910482039567 -leaf_weight=475.62513306150277 5.0371356518193968 984.37513755980217 953.80991907523048 200.27132986927444 1846.1685362855528 280.9022545341868 527.24110751524859 277.55417154240928 1080.3140656681694 14.384760202055245 257.07680957682578 415.47811582124314 3129.4621583660942 674.55439048517587 79.840698624798165 349.34374084406011 951.84102599797689 725.51097133388976 1044.4269779399372 36.393643959519466 65.022630806218615 40.673741573555162 202.72804468843879 881.99260752783925 857.52292482885423 684.0999901185844 273.76549009063427 157.10388905511087 128.21176355987043 498.97931929913494 -leaf_count=381309 3300 409079 35803 240304 111832 1788 13368 42491 2357172 31455 174325 71730 49698 253274 407569 308789 219855 22553 33387 7520 13992 366 18189 81316 16604 166215 82255 801936 198790 1303266 -internal_value=0 -0.0102607 0.0117916 -0.0218317 -0.000451803 0.00322473 0.00344689 -0.0250307 -0.0288105 -0.0353214 -0.0577678 0.000870327 0.0207193 -0.0298388 -0.0162119 0.00219767 0.000317138 -0.00822009 0.00498129 -0.00585224 0.0364375 0.0251065 0.00730626 0.0081901 0.00143661 -0.0152212 -0.0136331 -0.0891119 -0.050721 -0.0275109 -internal_weight=0 9678.09 8421.62 4440.23 5237.86 4297.67 4253.49 3964.6 3311.87 2183.43 428.565 4016.77 4123.95 1754.87 1128.44 429.184 3726.25 1677.35 3199.42 652.736 101.416 3170.14 2048.9 2783.94 1739.52 817.349 551.32 171.489 133.249 699.251 -internal_count=7859530 7200533 658997 6405657 794876 573130 385797 6024348 5878090 3618162 1007716 571342 85867 2610446 2259928 716358 372429 242408 203037 146258 21512 50064 130021 131307 97920 368305 124746 833391 202090 1543570 -shrinkage=0.12 - - -Tree=61 -num_leaves=31 -num_cat=0 -split_feature=12 1 3 0 7 0 0 2 0 7 7 11 0 7 7 2 11 2 0 12 2 2 1 0 0 2 2 0 12 3 -split_gain=142.497 41.6871 35.8173 29.942 49.018 26.4826 23.5478 23.2523 21.6718 20.2332 19.0523 18.5624 16.5555 14.7456 12.7207 12.1658 12.1615 12.1703 12.7083 11.6691 17.8952 18.7305 14.727 11.3588 11.0522 13.5776 13.7222 11.0513 15.3479 11.0501 -threshold=0.45804195804195807 1.5000000000000002 7.5000000000000009 39.539316000000007 1.0000000180025095e-35 46.836120500000007 25.866490500000001 158068800.00000003 26.619919000000003 6.5000000000000009 2.5000000000000004 0.86190476190476206 20.684114500000003 1.5000000000000002 2.5000000000000004 59054400.000000007 0.14907407407407411 62856000.000000007 55.906434000000004 0.63961038961038974 221140800.00000003 775656000.00000012 1.5000000000000002 22.583849000000004 1.0000000180025095e-35 688910400.00000012 599486400.00000012 12.226027000000002 0.2817460317460318 29.500000000000004 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 8 5 4 12 11 7 -6 13 -8 -5 14 15 -1 -2 -3 -10 -18 -19 20 -13 -22 -23 -4 25 26 -17 -9 -29 -12 -right_child=2 3 23 10 6 -7 9 27 16 -11 29 19 -14 -15 -16 24 17 18 -20 -21 21 22 -24 -25 -26 -27 -28 28 -30 -31 -leaf_value=-0.041487481010204087 -0.084311316777368472 0.03010271190584668 -0.011918163403960529 0.023235227630644475 -0.017234836115094042 0.020371780930396269 -0.0077722876423152974 -0.017916462113522942 -0.069460031317165452 -0.0463437653826674 -0.0040662192396504829 0.01451227429511958 0.014363922917164405 -0.10103420099058871 -0.0077454550933761749 -0.017644701733097016 0.005783119979474863 -0.032756929827782735 0.009593193192015334 0.014313062098685943 -0.018018433919529755 -0.034262701928705723 0.039705162755402083 0.031435266568048612 -0.01496391396033693 -0.21646138596692674 0.14899007389594884 -0.065808685046520293 -0.018671348660475182 0.046945500164060898 -leaf_weight=220.35582663557867 32.108585996674719 111.0629554827126 92.849516691577719 638.85932656805767 1013.5846508733007 1816.6493558918883 2497.4518855627639 157.92573846722644 69.834536029668243 212.47215057096128 1345.0519020566378 770.32809146115142 1135.8719843297467 82.249498236496351 1126.4203655330411 12.161229180783272 240.06265921988836 591.05200651049256 123.30610974130104 1832.490246351877 810.59801917785444 50.945134137138666 161.77559542394738 1384.0364867757767 794.66026235183949 2.3822213064413509 17.10501091372862 399.47459166691232 132.48309987653812 64.031127770176681 -leaf_count=1227259 5228 3854 1403 24898 493268 23347 555568 175251 270644 170742 126658 61323 73608 1554132 85079 1701 142799 582220 9376 63169 80636 20275 7874 14604 219815 318 718 1798127 64391 1245 -internal_value=0 -0.00967973 0.0118165 -0.00660334 -0.0105971 0.00803697 -0.0177467 -0.0288022 -0.029467 -0.010797 0.00604633 0.00335357 0.00462274 -0.057681 -0.0098696 -0.00718133 -0.02113 -0.0175916 -0.0254467 0.00757835 0.000697658 -0.00970175 0.021988 0.0287095 -0.0121935 0.057316 0.0797999 -0.0457957 -0.0540709 -0.00174721 -internal_weight=0 9861.44 8078.2 8534.58 6486.64 6601.32 4413.39 1703.47 1326.86 2709.92 2047.94 4784.67 2073.24 302.605 1158.53 937.372 1024.26 954.421 714.358 3626.14 1793.65 1023.32 212.721 1476.89 826.309 31.6485 29.2662 689.883 531.958 1409.08 -internal_count=7859530 7496592 362938 3710162 3557361 346931 3257347 2531037 3786430 726310 152801 323584 300014 2781391 90307 226406 1005039 734395 591596 233277 170108 108785 28149 16007 222552 2737 2419 2037769 1862518 127903 -shrinkage=0.12 - - -Tree=62 -num_leaves=31 -num_cat=0 -split_feature=11 0 3 7 0 0 0 9 11 3 5 6 2 2 3 3 0 7 0 11 2 10 3 0 7 0 8 2 7 2 -split_gain=135.697 53.6373 47.9557 40.2695 27.0733 22.5672 20.865 20.0485 19.7378 17.5712 16.7392 19.2595 15.9096 15.5862 14.3213 13.7316 13.921 13.095 12.2522 12.2097 11.9982 11.9037 11.457 10.7283 10.5589 10.4983 9.4996 9.69876 9.44116 11.7591 -threshold=0.60769230769230786 35.82988550000001 1.0000000180025095e-35 1.5000000000000002 32.751201500000008 26.222069500000003 42.837928000000005 7.5000000000000009 0.14907407407407411 14.500000000000002 1.0000000180025095e-35 1.0000000180025095e-35 284040000.00000006 53438400.000000007 13.500000000000002 7.5000000000000009 55.906434000000004 13.500000000000002 11.867569500000002 1.0333333333333334 63892800.000000007 8.5000000000000018 39.500000000000007 16.872643500000006 1.5000000000000002 20.945663500000006 1.5000000000000002 157896000.00000003 2.5000000000000004 221054400.00000003 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 4 9 23 7 14 -5 -3 13 11 -6 18 -1 -4 16 28 -7 -9 -12 -20 -16 26 -2 -24 -15 -8 -28 29 -10 -right_child=2 8 6 5 10 17 22 12 15 -11 19 -13 -14 25 21 -17 -18 -19 20 -21 -22 -23 24 -25 -26 -27 27 -29 -30 -31 -leaf_value=0.014561999159262994 -0.023677264024180831 -0.032164429618189737 0.0080079595267585693 -0.028900450732279093 -0.02771558631742739 -0.022419716900378039 0.140310551570729 0.0062576482717515043 0.029943924357401681 0.039572334128966331 0.016761425158616113 0.014564839322110416 -0.1103477899266226 -0.027649196131575647 0.027165957812568465 0.027815368190915474 0.01407092176076437 -0.13703653846539285 -0.037689692890503237 -0.070512954327376601 -0.088571157575836251 -0.23907126900550668 0.13046213434066312 -0.0037142516005306482 0.045724129235323985 -0.0085129682442360091 0.043303964809610532 0.019460858022717891 -0.010652417550004765 -0.0073870328359873687 -leaf_weight=274.89486604303761 460.72434011752648 262.22253822207313 2678.993005815355 362.51665833240713 316.64002728205901 1340.2149975536454 10.345284101262221 41.426770898214386 211.98397813164047 100.0163727658437 1880.029341129509 304.1215128964086 96.258641182907809 690.7933661417519 792.00747366141513 273.20447553889244 697.93457111592943 14.480653547471773 129.78549423611832 23.340958665125072 137.51030761173422 2.395982605405151 26.722016704035923 2443.4181546878081 101.93347447655105 1025.9803599272293 320.78669763156267 1049.3997504711324 1431.6376329074596 284.60425721086312 -leaf_count=159682 153662 166356 99439 858211 28604 1101599 83 35119 16593 9209 67439 13435 1153321 1241340 10617 9307 25296 40740 229387 1263 797125 10 202 555293 950 811676 3200 10922 230738 28712 -internal_value=0 -0.0124529 0.00882213 -0.0213169 0.00101924 -0.032963 0.0173229 -0.0494033 -0.000638557 -0.00950062 0.0101094 -0.00700199 -0.0677528 -0.0119655 0.0122041 0.00221299 -0.000450763 -0.0236479 -0.0544623 0.0156901 -0.0638727 0.026354 0.0291035 -0.00688147 0.0633507 -0.0162133 0.0259106 0.0250438 -0.00570712 0.00854968 -internal_weight=0 7375.47 10410.9 4213.88 5428.27 2122.19 4982.58 767.498 3161.59 2091.68 2524.13 620.762 404.981 1991.67 3473.4 2899.36 2626.16 1354.7 308.723 1903.37 267.296 794.403 1509.19 2904.14 128.655 1716.77 1380.53 1370.19 1928.23 496.588 -internal_count=7859530 6914411 945119 6437409 819696 4215502 125423 3073163 477002 2221907 110741 42039 2214952 2212698 110066 310646 301339 1142339 1061631 68702 1026512 10627 15357 708955 1152 2053016 14205 14122 276043 45305 -shrinkage=0.12 - - -Tree=63 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 3 11 7 9 0 7 0 1 2 2 10 6 12 4 1 5 1 2 6 2 5 2 0 0 0 2 12 -split_gain=130.522 72.0547 40.6451 27.336 25.2772 20.566 33.5871 23.0048 19.117 17.2304 16.0331 15.6063 14.8552 13.6036 13.5289 13.4589 13.0935 16.5268 13.0354 12.7044 12.2749 11.8281 14.8969 19.9436 16.3484 13.2732 12.0336 23.4579 11.7636 15.5491 -threshold=0.84523809523809534 35.449802500000011 24.424139000000004 4.5000000000000009 0.28991596638655465 1.5000000000000002 2.5000000000000004 26.319303500000004 3.5000000000000004 55.906434000000004 1.5000000000000002 284299200.00000006 94824000.000000015 4.5000000000000009 1.0000000180025095e-35 0.16954022988505749 2.5000000000000004 1.5000000000000002 1.0000000180025095e-35 1.5000000000000002 220708800.00000003 1.0000000180025095e-35 662385600.00000012 1.0000000180025095e-35 1230465600.0000002 27.145081500000003 22.955643000000006 6.6416175000000015 126273600.00000001 0.78888888888888908 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 5 10 8 15 12 18 11 13 20 14 -8 -1 19 -2 -3 17 -10 -7 -4 -6 25 -23 24 26 -14 27 -24 29 -12 -right_child=2 4 3 -5 9 6 7 -9 16 -11 28 -13 21 -15 -16 -17 -18 -19 -20 -21 -22 22 23 -25 -26 -27 -28 -29 -30 -31 -leaf_value=0.0048485260512454728 -0.057314022514814954 -0.021099195931864913 -0.012022558623938794 0.031610359959220527 0.011375673786797916 -0.0015980199162361167 -0.051173345715708723 -0.02648918877388114 -0.0048614097269855929 0.020032974810296665 0.018706564598172968 -0.10508813038861894 -0.033211673993039058 -0.22438743864153834 0.0080934258323651243 0.019276316519365923 0.086455262718971304 0.030982465536762697 -0.022151565038386133 0.010686360216346733 -0.0050145062138809973 -0.020237109248901278 0.11649147028805992 -0.069397218555722548 -0.095969336780304643 -0.0059461551639539327 0.10854672524023574 -0.056215156725824299 -0.0044706658815833362 -0.21002658673249089 -leaf_weight=702.46516860652264 130.73263050276682 841.70318543613917 411.47881343277959 1415.8915927229782 1083.8776929350629 615.34405674738946 349.30300542623525 549.39230282052222 239.02726706616522 968.18839554628903 504.61874954213818 99.322980383712661 648.40600953980697 3.6157826836570157 69.859340801087001 138.41651891040078 48.823590656451415 822.94278957556571 1598.9186182427889 2572.1792722912969 1674.4153047262939 153.20823469145023 21.275990292063391 21.930581829623264 9.2958961484572296 426.04691286559091 53.928729470837538 24.14730761228298 1432.7918798474766 4.2864442511927328 -leaf_count=346971 198500 311817 112966 16990 81967 436748 1262656 659906 6466 17029 17988 1294087 1518702 319 48010 15240 550 6281 795497 84064 123364 158641 978 27806 19392 108434 15220 23659 149117 165 -internal_value=0 -0.00904225 0.0117862 0.017236 0.00175047 -0.0186757 -0.0246781 -0.0429549 0.0122694 0.00626054 -0.00224097 -0.063116 -0.00931868 0.00727147 -0.034537 -0.0153968 0.02571 0.0229148 -0.0164398 0.00755446 0.00142611 -0.0166457 0.00514338 0.0349202 0.05599 -0.0224007 0.0702328 0.024703 0.00109594 0.0167677 -internal_weight=0 9979.59 7656.25 5513.96 4706.6 5272.99 3212.28 998.018 4098.07 3726.48 2142.29 448.626 2060.7 2987.27 200.592 980.12 1110.79 1061.97 2214.26 2983.66 2758.29 1358.24 283.787 130.579 108.648 1074.45 99.352 45.4233 1941.7 508.905 -internal_count=7859530 7218114 641416 227636 549417 6668697 4448894 3216649 210646 222360 413780 2556743 2219803 197349 246510 327057 13297 12747 1232245 197030 205331 1872832 245696 87055 59249 1627136 39857 24637 167270 18153 -shrinkage=0.12 - - -Tree=64 -num_leaves=31 -num_cat=0 -split_feature=12 2 3 11 2 0 3 0 0 1 0 7 12 2 0 11 0 2 3 3 0 2 2 5 10 7 11 12 7 11 -split_gain=127.62 39.2922 31.7292 31.4212 22.2836 20.2362 19.3853 19.077 28.9155 16.2831 15.1052 16.9295 14.2902 22.5076 14.9341 13.5428 12.4817 16.2902 12.977 12.9598 12.4597 11.917 11.8921 11.4684 10.9007 11.1957 13.5476 10.8283 13.6105 10.5728 -threshold=0.44949494949494956 378907200.00000006 1.5000000000000002 0.43303571428571436 615038400.00000012 32.751201500000008 8.5000000000000018 19.963219000000006 13.142298500000003 1.5000000000000002 30.664758000000003 1.5000000000000002 0.2817460317460318 663076800.00000012 42.837928000000005 0.24068965517241384 28.502720500000006 946900800.00000012 59.500000000000007 152.50000000000003 29.394558500000006 33998400.000000007 221140800.00000003 1.0000000180025095e-35 5.5000000000000009 4.5000000000000009 0.060915275200989494 0.72077922077922085 2.5000000000000004 1.0333333333333334 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 5 10 20 -2 7 8 -5 29 11 -1 13 -6 -15 -13 17 18 -4 -18 -3 -10 -11 -23 25 -12 -27 -24 -29 -7 -right_child=2 4 16 6 12 9 -8 -9 21 22 24 15 -14 14 -16 -17 19 -19 -20 -21 -22 23 27 -25 -26 26 -28 28 -30 -31 -leaf_value=-0.0058900888259199062 -0.0033623463055673214 -0.058855148050794864 0.0063003848523371505 0.017305429711353876 -0.0067895053105148286 -0.0028146952719513688 0.025721546761156015 0.0037978477412085646 0.00063814907928288252 0.02867426367817142 0.0020938175744741822 -0.059981227930098358 0.0054068339863534041 -0.045621935025427128 -0.0016513719746955164 -0.024739302076356873 0.024663108043947828 0.080426905650242672 -0.068886402133586253 0.095457123235688709 -0.027581475506885497 -0.018301302585425776 0.0026218304530031609 -0.061860588777107609 0.055680003880033906 -0.085247165387106083 -0.014436128167386045 -0.053417643223663935 0.027596519895501631 -0.1375271394725843 -leaf_weight=440.98691572242842 2107.9011039898946 270.82136251932434 569.09791755070728 222.59814170370089 854.21384501986051 660.53491653081164 456.15954464947754 2843.6681210618799 104.52627428870142 790.83031673677579 781.02000104583499 227.20596517940027 417.25887703694616 521.9515541315028 141.35191508358048 508.43063448951415 2122.7344560624624 40.604298475023825 35.064622836944181 37.875419593241531 568.86572911896496 140.67203991318871 948.65999273424313 228.38908930606232 39.37247877167465 40.907465728792431 785.03432678317813 31.510901652189204 561.71744358857586 8.4674446830758807 -leaf_count=418571 226480 847139 11052 65214 707059 49368 14399 855449 29668 10160 168691 1027244 89348 1170079 24000 1170818 29238 548 434 364 164669 169460 28331 244118 862 39031 290385 1664 4428 1259 -internal_value=0 -0.00930583 0.0112792 -0.00440713 -0.0213455 0.00564942 0.00243943 -0.00056099 -0.0183647 0.0119777 -0.0140986 -0.0244817 -0.0142603 -0.019668 -0.0362522 -0.035626 0.0215329 0.00688011 0.00193346 0.0259054 -0.0376698 -0.0351306 0.0167108 -0.0452603 -0.00667761 -0.00820646 -0.0179462 0.0105743 0.0232908 -0.00452582 -internal_weight=0 9593.43 7915 6818.97 2774.46 5109.62 3996.01 3539.85 696.186 3001.72 2822.96 1176.62 1934.78 1517.52 663.303 735.637 2805.38 644.767 604.163 2160.61 839.687 473.587 2332.72 369.061 1646.33 1606.96 825.942 1541.89 593.228 669.002 -internal_count=7859530 7496204 363326 4493910 3002294 321690 1378308 1363909 508460 95210 3115602 2616633 1990486 1901138 1194079 2198062 41636 12034 11486 29602 1011808 443246 44583 413578 498969 498107 329416 34423 6092 50627 -shrinkage=0.12 - - -Tree=65 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 1 1 7 11 2 2 0 0 0 11 3 6 4 0 0 0 4 2 12 2 12 2 7 2 2 3 3 -split_gain=122.347 62.891 35.3342 22.319 19.6869 19.0517 33.3536 19.0311 14.3757 13.2199 13.0245 12.6302 12.5014 11.9783 11.1501 10.616 10.5007 10.4041 11.5545 10.3369 11.8813 11.6254 16.9803 10.2518 11.5005 12.2894 10.5906 9.64858 9.32777 16.4035 -threshold=0.76388888888888895 36.697481500000002 30.077133500000006 1.5000000000000002 1.5000000000000002 1.5000000000000002 0.24068965517241384 221140800.00000003 33998400.000000007 19.621536000000003 22.227638000000002 17.886976000000004 0.43303571428571436 16.500000000000004 1.0000000180025095e-35 339.50000000000006 63.388565000000007 11.867569500000002 1.0000000180025095e-35 4.5000000000000009 19656000.000000004 0.78888888888888908 221227200.00000003 0.15587044534412958 74174400.000000015 18.500000000000004 757512000.00000012 283780800.00000006 152.50000000000003 103.50000000000001 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 5 8 19 23 9 14 -5 -2 -1 17 -10 -6 27 -7 28 -9 18 -8 20 -4 22 -21 -3 -25 26 -26 -11 29 -13 -right_child=2 4 3 7 12 6 10 16 11 13 -12 15 -14 -15 -16 -17 -18 -19 -20 21 -22 -23 -24 24 25 -27 -28 -29 -30 -31 -leaf_value=-0.021704699519493886 0.02701742673055418 -0.039449425989049568 0.061491688661697894 0.032130491516623935 -0.0025663132829123868 -0.070283850849561055 -0.06589325581008118 0.011725711032941675 -0.016752195124754631 0.0032556372288675248 -0.014575046805182715 0.0025199744145914869 0.012597006823440964 0.046951148361575469 -0.034134483770881019 0.19351255856123822 0.034640801829008923 -0.042249900587723259 0.044013442090382299 0.098281322941012314 -0.015602400745651569 0.080669974802932365 -0.046038922154959715 0.021646902103456548 -0.035170751595803143 0.054472464808335432 0.013857816332527667 -0.018673653674378812 0.074662834685741947 -0.16005598413915462 -leaf_weight=753.38268407105647 299.73816463207913 192.54709303217555 30.649036039183954 1430.8059691537483 1364.1217136337536 249.4919363437248 20.049329166112557 2165.4036818055961 565.39819380326571 819.87564126796087 2229.8057911427586 2678.5509159570365 1837.6690183740502 68.742651755195766 242.28118960739718 4.1736462498702158 332.1165090254799 448.34410855043598 43.837466555649598 16.632376404781098 466.66853439208541 40.830345941591077 39.705653746335884 145.37502581338049 280.15984225843795 31.126335686321909 81.994953901854615 446.09882608531211 25.637061754241586 8.9368205443024618 -leaf_count=1061973 27688 153576 2379 17555 174395 1048241 14050 50818 176945 542117 1417397 327727 58248 5062 876402 140 1806 1128749 24634 950 49839 496 2453 21316 47803 1375 8172 617023 93 108 -internal_value=0 -0.00942754 0.0107647 0.0178162 0.00207945 -0.0179314 -0.0237008 0.0210955 0.00186224 -0.00899617 -0.0185393 -0.000434872 0.00613672 -0.00182251 -0.0524774 0.00296048 0.0147733 -0.0357944 0.00950714 -0.00385304 -0.0108478 0.031939 -0.00340239 -0.015686 -0.00718984 -0.0178501 -0.02407 -0.00447197 0.00266521 0.00197757 -internal_weight=0 9254.9 8105.25 4522.81 3932.99 5321.91 3233.81 3928.33 3582.43 2088.1 2742.04 3282.7 3201.79 1334.72 491.773 2717.3 2497.52 512.231 63.8868 594.486 497.318 97.1684 56.338 731.203 538.656 393.281 362.155 1265.97 2713.12 2687.49 -internal_count=7859530 7200533 658997 126296 464885 6735648 4509473 70179 532701 2226175 2584830 505013 232643 1164202 1924643 328068 52624 1167433 38684 56117 52218 3899 3403 232242 78666 57350 55975 1159140 327928 327835 -shrinkage=0.12 - - -Tree=66 -num_leaves=31 -num_cat=0 -split_feature=12 1 3 0 3 0 7 7 2 0 0 0 7 10 11 12 0 6 9 7 8 0 5 2 0 0 0 9 9 2 -split_gain=114.484 40.0663 30.4109 24.9325 23.8055 24.5903 31.4243 22.2473 19.5018 19.0035 15.6969 15.3134 13.6925 12.4235 12.3098 15.2723 14.4445 14.093 11.3418 11.1617 11.1084 12.9347 10.4219 10.2403 13.8108 11.8971 14.8459 10.0889 13.6868 13.5601 -threshold=0.45804195804195807 1.5000000000000002 11.500000000000002 26.041718000000003 25.500000000000004 30.264538000000005 1.0000000180025095e-35 1.5000000000000002 378734400.00000006 43.939336500000003 51.783302000000013 63.388565000000007 2.5000000000000004 1.5000000000000002 0.96666666666666679 0.93725490196078443 36.279123500000004 1.0000000180025095e-35 10.500000000000002 3.5000000000000004 2.5000000000000004 51.783302000000013 1.0000000180025095e-35 315316800.00000006 1.0000000180025095e-35 25.452091500000005 24.096014000000004 3.5000000000000004 21.500000000000004 378907200.00000006 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 9 3 -2 5 6 23 -7 11 -1 -9 14 27 -13 20 17 -17 -16 22 -12 21 -5 -14 25 -25 26 -3 -8 -29 -30 -right_child=2 4 -4 8 -6 7 12 10 -10 -11 19 13 18 -15 15 16 -18 -19 -20 -21 -22 -23 -24 24 -26 -27 -28 28 29 -31 -leaf_value=-0.038369911706969302 -0.0064269210118750057 0.0061776821907061604 0.029315367574456155 -0.037373344536044517 0.025101516786450215 0.016816910787048691 -0.00012075991402050159 -0.010127889407340504 0.0028089622269022122 -0.0061966856616757129 0.037703514343455806 -0.13845038305848331 0.00029968648467034798 0.040730993654927009 0.013920158203298059 0.031775530566555216 -0.070639781333859814 0.036183902575988212 -0.062728811347209548 0.0021129637973562052 0.0052867758840185915 -0.27744861716468583 -0.039247706371634813 0.08892082158777527 -0.016488618217328561 -0.021752720231229743 0.054165371031607977 -0.064372679592844942 -0.012333738326479283 -0.044381066040098081 -leaf_weight=886.57208818324261 1412.8187353858721 753.00357787320763 1093.7077763719244 41.209057096173638 343.56046695759778 851.58260299576978 391.93574656587225 2248.1408558866742 2178.0946129756467 376.70639057021663 164.21906437876169 5.6163468003505832 136.66716087137206 432.02411566134469 1134.3961773383007 32.526528665574006 50.719320106014493 640.66608049661818 184.0806682878947 557.86136916208852 770.30650520387508 3.4783661535475394 322.0938270987142 18.422510448676803 596.93837539244714 181.04116255504778 105.8611744065156 101.51921593767065 984.99411074734337 235.58702524172338 -leaf_count=3695340 142891 103360 11924 4005 17852 56345 157211 398066 91086 91090 4752 192 127362 2975 57356 1852 2703 16515 827582 31096 31260 179 331995 1662 174670 7157 3713 86119 763184 618036 -internal_value=0 -0.00888688 0.0107624 0.00773455 -0.00581422 -0.00717013 -0.0137318 -0.000281582 0.0115174 -0.0287763 -0.00518396 0.0176145 -0.0226318 0.0384222 0.0142077 0.0196002 -0.0306262 0.0219562 -0.0375669 0.0102084 0.00191156 -0.0562338 -0.0274671 -0.00105934 -0.0133287 0.0062012 0.0120942 -0.0170299 -0.0220424 -0.0185202 -internal_weight=0 9440.79 7795.56 6701.86 8177.51 7833.95 4012.14 3821.8 5289.04 1263.28 2970.22 3110.94 2356.88 437.64 2673.3 1858.31 83.2458 1775.06 642.842 722.08 814.994 44.6874 458.761 1655.27 615.361 1039.91 858.865 1714.04 1322.1 1220.58 -internal_count=7859530 7496592 362938 351014 3710162 3692310 3202051 490259 208123 3786430 433914 117037 2911489 3167 113870 78426 4555 73871 1286939 35848 35444 4184 459357 290562 176332 114230 107073 1624550 1467339 1381220 -shrinkage=0.12 - - -Tree=67 -num_leaves=31 -num_cat=0 -split_feature=11 0 3 0 12 7 2 1 11 0 12 11 6 12 2 0 0 1 2 2 0 0 6 2 3 0 7 4 2 4 -split_gain=110.925 59.076 36.2028 25.8228 24.3845 20.9157 22.8329 20.7588 18.5334 17.4337 13.6093 12.8127 11.428 10.9222 10.6942 10.6232 10.6975 10.5341 12.3323 10.1619 10.1321 10.0162 17.3367 10.7148 9.90033 9.84754 9.8849 9.76295 9.75949 11.0773 -threshold=0.80909090909090919 46.836120500000007 4.5000000000000009 28.355377000000004 0.72077922077922085 1.0000000180025095e-35 189086400.00000003 1.5000000000000002 0.47213622291021679 11.047593000000001 0.31414473684210531 0.29705882352941182 1.0000000180025095e-35 0.93725490196078443 31752000.000000004 27.826315500000003 27.446542000000004 1.5000000000000002 126446400.00000001 315921600.00000006 20.573342000000004 1.0000000180025095e-35 1.0000000180025095e-35 126360000.00000001 61.500000000000007 33.324993000000006 3.5000000000000004 4.5000000000000009 220708800.00000003 8.5000000000000018 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 4 5 7 9 -7 12 17 21 19 -3 27 -6 -9 16 -4 -5 -19 -8 -15 22 -1 -23 -17 26 -20 -2 29 -13 -right_child=2 11 15 8 13 6 10 14 -10 -11 -12 28 -14 20 -16 24 -18 18 25 -21 -22 23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.12713030536392969 -0.041451346148049739 -0.0087517589773670312 0.014509097731600256 -0.036393334886396886 0.022023867767209774 -0.016497546194044758 -0.033607071782332999 0.031376386013221777 -0.0013379242098521343 0.022759393256166147 -0.022301597977473053 0.022842038301705617 0.0030810067290045736 -0.17632379314835867 0.0030940494833453106 0.028974772200345524 -0.089943366568960029 0.0063392810025514482 -0.018690358824911601 -0.062694176506489202 -0.0032756034475529498 0.0016920250563805879 0.15923513458221503 -0.057022047694032754 0.06911514039403005 -0.011600861120021217 -0.060122682711313213 0.014479570618940556 0.0063347319958403569 0.13522214033424054 -leaf_weight=4.3599567924787239 302.42198249337605 468.41000462060629 497.98817808693684 335.84211267785122 1490.3151586470021 1409.7938161734787 312.95482830212251 203.82137589317381 2553.8300262342673 247.72856060851908 416.90595412404195 649.83520950437514 193.86937077005041 4.9635165416075315 3464.2612309108104 1119.5204285395389 14.50146099925041 363.49739797700749 197.11852876178443 386.99504327132485 200.66549633121394 76.854511329928073 9.9215023899996595 107.13124595970262 96.066482638329035 767.91256456312658 143.14899308648285 52.768224658127224 1023.188153646026 12.852339526070862 -leaf_count=1970 256726 91111 7803 531265 26153 1728764 1158625 3123 313796 180119 167967 18327 68371 1168 232177 13907 208 72783 60403 2472711 10741 17015 330 69229 1207 173614 128974 23320 27331 292 -internal_value=0 -0.00866584 0.0107606 -0.0137977 0.00629532 -0.0224225 -0.0266515 0.00140845 -0.007919 0.00153557 -0.0394678 0.00880482 -0.0203521 0.0184468 0.00466583 0.0260396 0.0115484 -0.0172172 -0.0128404 -0.049691 -0.00747779 -0.0249824 0.071728 -0.0324997 0.0321486 -0.0191316 -0.0361245 -0.0331415 0.0136829 0.0250276 -internal_weight=0 9488.28 7641.16 7334 5913.09 2972.65 2526.65 4217.14 4361.35 445.996 1116.86 2154.29 549.06 1695.94 3668.08 1728.08 512.49 1807.52 1471.68 699.95 205.629 198.267 14.2815 183.986 1215.59 1108.18 340.268 355.19 1685.88 662.688 -internal_count=7859530 7214626 644904 7077565 621779 5796730 5528067 583717 1280835 268663 3799303 137061 348417 38062 235300 23125 8011 967039 435774 3631336 11909 88544 2300 86244 15114 362991 189377 280046 45950 18619 -shrinkage=0.12 - - -Tree=68 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 7 9 3 0 1 2 0 3 2 3 0 2 5 6 2 0 4 1 2 0 11 4 2 12 10 1 4 -split_gain=103.751 46.2557 39.7399 23.8851 26.4473 20.3287 19.5906 17.473 17.5234 14.9839 14.6289 11.9601 11.9191 11.798 11.3964 10.8224 10.7299 13.651 20.2786 10.6347 10.333 10.1444 11.1729 9.99261 9.97329 9.62701 10.171 10.8385 9.33593 12.7835 -threshold=0.67948717948717963 41.01957500000001 35.449802500000011 2.5000000000000004 5.5000000000000009 1.0000000180025095e-35 22.323515500000003 1.5000000000000002 441806400.00000006 27.699832000000004 29.500000000000004 63374400.000000007 26.500000000000004 55.906434000000004 93960000.000000015 1.0000000180025095e-35 1.0000000180025095e-35 662385600.00000012 25.525596500000002 41.500000000000007 1.5000000000000002 94910400.000000015 20.514205000000004 0.12250000000000001 419.50000000000006 315576000.00000006 0.93725490196078443 3.5000000000000004 1.5000000000000002 2.5000000000000004 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 5 6 23 20 28 -4 15 14 -10 -8 13 -3 -6 25 -13 -18 -19 -15 24 -7 -23 -5 -2 26 -9 -28 29 -1 -right_child=2 12 7 4 9 21 11 8 10 -11 -12 16 -14 19 -16 -17 17 18 -20 -21 -22 22 -24 -25 -26 -27 27 -29 -30 -31 -leaf_value=-0.076736306991757722 -0.020210745860080898 -0.0042680708578493294 -0.003590794886493655 -0.079354011996169427 -0.03971645113862729 0.026499366335484206 0.014881096430473605 0.023866045781849907 0.0058183119503226917 -0.034182846702028202 0.068906750289608881 -0.011904517664209482 0.043680701382472223 0.011398791337626245 -0.10196608602988723 0.033223830541325071 -0.003967170885451809 0.10439724401458327 0.0020527588223941862 0.11941369447755781 -0.00092154424365654887 -0.015788319781089966 0.010520867352290497 -0.017162279428202917 0.17388316148623234 -0.020255191380411371 -0.2431250813065409 -0.014808630162796889 -0.01890769112808972 0.020104939046260178 -leaf_weight=87.970514863828697 573.67701605669117 1565.9677878760149 449.8382218164179 38.069199706495738 68.626593903770271 461.78012576804758 420.39022680113976 500.48062334860174 1015.7639064905998 294.71469156740363 55.806715917307884 1561.1498327928307 102.95743155177479 880.82756240712661 110.82346762464161 1546.7923633784837 282.43251563915055 48.149964173673951 66.165800800875942 13.29464236302192 2242.0729760628633 273.14810047667515 1558.7965899875453 1586.1364794215783 3.8080045081333074 97.200480710482225 4.0390408679377279 11.349508546059949 1070.9755952645874 25.249920332524113 -leaf_count=951734 364203 213013 31628 92274 207207 8992 170881 6160 20492 366045 475 928931 1764 49938 1224258 19255 148923 38089 25685 758 196514 19072 39594 1236212 145 2214 233 130 1361563 133148 -internal_value=0 -0.00968912 0.00906043 -0.0157448 -0.0259011 0.00221598 -0.00976233 0.0185673 0.0216518 -0.0508342 0.00910575 -0.00348297 0.00368566 0.00201131 -0.0781707 0.0278761 -0.00742618 0.010195 0.0451765 0.0130088 -0.00460843 0.0106048 0.0065979 -0.0186214 -0.0189219 0.0143826 0.0209099 -0.0750914 -0.0223731 -0.0551396 -internal_weight=0 8223.9 8794.55 5660.85 2098.37 5113.28 3562.48 3681.27 3231.43 474.165 1071.57 2378.29 2563.05 2460.09 179.45 2159.86 1957.9 396.748 114.316 894.122 2819.56 2293.72 1831.94 1624.21 577.485 613.07 515.869 15.3885 1184.2 113.22 -internal_count=7859530 7150423 709107 6884950 3125996 628520 3758954 80587 48959 1797510 20967 1312509 265473 263709 1431465 27992 1141628 212697 63774 50696 560862 67658 58666 1328486 364348 8737 6523 363 2446445 1084882 -shrinkage=0.12 - - -Tree=69 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 3 11 0 7 9 2 1 2 5 1 0 0 9 3 3 7 1 0 7 2 2 4 2 7 4 0 0 -split_gain=99.8789 54.6055 35.5443 19.6734 17.6691 16.2211 15.8333 21.6257 15.3756 14.0867 13.5402 12.6372 12.1318 12.9507 11.112 11.0458 10.7755 10.4768 11.5811 9.48079 12.6722 13.0107 10.3974 12.4449 11.0455 9.39927 9.00656 8.90568 8.72135 10.7924 -threshold=0.84523809523809534 35.82988550000001 35.82988550000001 9.5000000000000018 0.14907407407407411 21.469912000000004 1.5000000000000002 2.5000000000000004 284385600.00000006 1.5000000000000002 473342400.00000006 1.0000000180025095e-35 1.5000000000000002 63.388565000000007 28.355377000000004 3.5000000000000004 28.500000000000004 13.500000000000002 4.5000000000000009 1.5000000000000002 63.388565000000007 5.5000000000000009 195220800.00000003 421156800.00000006 4.5000000000000009 315316800.00000006 18.500000000000004 474.00000000000006 26.319303500000004 11.867569500000002 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 3 5 6 -3 9 15 27 28 11 19 -2 26 -14 -10 -1 -12 -7 -19 20 22 -22 24 -24 -4 -11 -6 -8 29 -9 -right_child=2 4 10 -5 12 17 7 8 14 25 16 -13 13 -15 -16 -17 -18 18 -20 -21 21 -23 23 -25 -26 -27 -28 -29 -30 -31 -leaf_value=0.032643821159259546 -0.019248668986263769 -0.029539190954574957 -0.0043001892605073434 0.011540001829404305 -0.013250517235253261 0.0059537210329307522 -0.017536730671780867 0.013898881468823333 -0.095745251607412318 0.0048224202532483676 0.0056795338623752021 -0.1094349245234798 0.003308357475054704 0.023440682829686289 -0.044956670100150642 -0.011928565239064812 0.070371105520088517 0.029474760356490454 -0.14575493711781309 0.02981457887361268 -0.12681663759316336 0.072462136828598658 -0.083289456760940309 0.062979248494980822 0.13037533891060643 -0.017402741598715459 0.046038043724815493 0.16926657984082283 -0.015303385410706092 -0.052370052416862746 -leaf_weight=83.793163805641143 62.657520893254514 247.06134865934837 93.35548850240275 335.01281862573342 721.92150533037511 2968.3005918676508 2006.0474361245963 40.730753370500906 98.740538923046046 694.32768498614496 810.99184774331479 34.784011381786513 2872.4369089754091 547.85110054188408 167.09202666979198 1785.282591321316 38.82395197430742 380.30484681535927 5.480648022145032 1704.1069856974896 5.1965329406084484 48.667305469225539 45.060924557827093 10.263912388036259 9.6484079282963631 452.60108757292346 38.854163741224511 3.6520262023639125 314.87040243378158 269.20846272431641 -leaf_count=94230 92335 166356 12081 40659 171397 264336 1235902 38142 1401174 50568 20139 86898 175101 8281 186081 2114025 387 4279 106 22736 335 353 4282 707 167 81707 2719 369 358924 1224754 -internal_value=0 -0.00810924 0.0104964 -0.0165684 0.00164197 0.00403059 -0.0185429 -0.0240933 -0.0396584 -0.00767041 0.0212452 -0.0514665 0.00348468 0.00653327 -0.0638302 -0.00992983 0.00863736 0.00837171 0.0269742 0.0268362 0.00291606 0.0531768 -0.0141896 -0.0561341 0.0083492 -0.0039483 -0.0102208 -0.0171948 -0.0293716 -0.0436608 -internal_weight=0 9532.56 7364.57 5104.43 4428.13 4598.46 4769.42 2900.34 890.642 1244.37 2766.12 97.4415 4181.06 3420.29 265.833 1869.08 849.816 3354.09 385.785 1916.3 212.193 53.8638 158.329 55.3248 103.004 1146.93 760.776 2009.7 624.81 309.939 -internal_count=7859530 7218114 641416 6694260 523854 580229 6653601 4445346 3209075 311508 61187 179233 357498 183382 1587255 2208255 20526 268721 4385 40661 17925 688 17237 4989 12248 132275 174116 1236271 1621820 1262896 -shrinkage=0.12 - - -Tree=70 -num_leaves=31 -num_cat=0 -split_feature=12 1 3 8 2 7 0 7 0 0 1 0 12 0 2 0 0 7 7 3 0 0 10 0 8 11 11 2 3 5 -split_gain=96.8591 36.7714 27.01 20.4706 20.3256 19.2043 31.8156 16.6358 15.9544 14.4576 13.2548 12.8092 11.9211 12.4886 11.6653 10.9032 14.4287 11.2831 10.5818 9.60345 9.39271 9.14895 11.7762 9.12876 9.09547 8.86355 8.77232 9.61384 9.14616 9.38494 -threshold=0.45804195804195807 1.5000000000000002 4.5000000000000009 3.5000000000000004 378907200.00000006 1.0000000180025095e-35 33.981020000000008 4.5000000000000009 27.577402000000003 30.077133500000006 1.5000000000000002 55.906434000000004 0.25543478260869573 -1.0000000180025095e-35 31752000.000000004 25.373452000000004 25.525596500000002 1.5000000000000002 1.0000000180025095e-35 103.50000000000001 5.2224168000000004 45.25187300000001 7.5000000000000009 55.906434000000004 7.5000000000000009 0.060915275200989494 0.73863636363636376 647179200.00000012 1.5000000000000002 1.0000000180025095e-35 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 8 3 10 5 9 -7 19 18 -3 23 -5 13 -6 -12 17 -17 -15 -1 -8 -20 22 -4 -2 -10 -9 27 28 29 -16 -right_child=2 4 21 11 12 6 7 25 24 -11 14 -13 -14 15 26 16 -18 -19 20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.029974815893788295 -0.01498977250209545 0.0056912268500452414 0.017285149753535654 0.0083665170318746977 0.067631452378365667 -0.01473812936732851 0.013358266126416671 -0.07943675634407639 -0.02141885142298109 0.040736052322577786 0.039120136216423088 0.026583356647969531 0.0012793312554627483 -0.028011242346734338 -0.17348081681786667 0.065478675078318407 -0.016509930888489462 -0.07857789614018415 0.094663791554561935 0.13795133343849419 -0.080937817820497887 0.034641920952713311 -0.1961487600527406 -0.10601658694270173 0.077183747434006994 -0.0067827598547896342 0.0028665894186188628 0.029074414863434355 0.015429741584288316 -0.053113063955782774 -leaf_weight=152.3813339686414 496.26103332872253 1242.8532341001301 1115.9271738923192 1760.7340148495218 23.284036584700971 2388.4489696676187 1227.2441907006503 25.155362255771252 903.72196936945988 196.26180917828606 123.67791230697276 812.23432327378578 506.27422371510329 476.2395894085634 11.43507773539204 31.729087114079675 1155.6444188947823 73.314218354062234 4.505216330719775 8.9439862946746853 138.85980898955026 631.05324203753457 3.7052058246918014 16.359972523205215 13.646455457754199 605.86429959517295 2539.8551539360833 28.143672414779758 21.46895836800104 50.344922709233288 -leaf_count=340784 156879 148158 18247 60435 11286 1773051 74985 14114 846726 3816 1418 5960 70174 518701 620 10624 359918 636866 16466 142 2582244 4828 21 1065 210 88327 107342 1907 566 3650 -internal_value=0 -0.00830274 0.0100079 0.00610078 -0.00533711 -0.00151192 -0.00556426 0.00617058 -0.0277645 0.0104713 -0.000173472 0.0141174 -0.0149481 -0.0196155 0.00310153 -0.0207862 -0.0143174 -0.0347611 -0.0520008 0.014263 -0.0754009 0.023087 0.0165736 -0.0179009 -0.0199496 -0.00968272 0.00142087 -0.0315347 -0.0520277 -0.0754657 -internal_weight=0 9174.37 7611.2 5860.52 7961.26 5694.77 4255.66 1867.21 1213.11 1439.12 3287.55 2572.97 2266.49 1760.21 2774.93 1736.93 1187.37 549.554 295.746 1236.19 143.365 1750.69 1119.63 512.621 917.368 631.02 2651.25 111.393 83.249 61.78 -internal_count=7859530 7496592 362938 339842 3710162 2102593 1950619 177568 3786430 151974 273447 66395 1607569 1537395 115503 1526109 370542 1155567 2939494 75127 2598710 23096 18268 157944 846936 102441 114085 6743 4836 4270 -shrinkage=0.12 - - -Tree=71 -num_leaves=31 -num_cat=0 -split_feature=12 7 0 9 3 0 3 0 0 1 7 1 0 2 4 2 4 11 0 2 2 2 11 12 11 2 2 2 2 0 -split_gain=92.5081 33.5405 30.0298 27.2295 27.0992 21.2009 17.2479 17.1814 17.064 15.4377 14.359 15.9234 13.5745 12.6538 12.5946 15.9818 12.1496 11.5865 11.4004 11.1467 10.4456 10.8016 10.1002 10.0508 10.009 9.9255 9.91379 9.42199 9.3167 9.40435 -threshold=0.36602870813397131 2.5000000000000004 22.323515500000003 5.5000000000000009 8.5000000000000018 25.525596500000002 5.5000000000000009 55.906434000000004 27.946536000000005 1.5000000000000002 1.0000000180025095e-35 1.5000000000000002 45.25187300000001 284212800.00000006 1.0000000180025095e-35 221227200.00000003 1.0000000180025095e-35 1.0333333333333334 51.783302000000013 284299200.00000006 56203200.000000007 662385600.00000012 0.96666666666666679 0.72077922077922085 0.066120218579234988 1230465600.0000002 662731200.00000012 24494400.000000004 33998400.000000007 38.913780500000009 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 10 7 5 -2 12 16 -5 14 -1 -12 19 -11 17 -16 28 27 -17 -4 -8 -22 -14 26 -9 -23 -15 -7 29 -3 -right_child=4 3 6 8 -6 9 20 24 -10 13 11 -13 22 23 15 18 -18 -19 -20 -21 21 25 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.0065182794537129796 -0.0078003758326891069 -0.015170467735509098 0.0031316261558129044 -0.07465943537585279 0.024948476666455579 0.036047809921924627 0.11299966184883882 -0.126647042131075 -0.029319787766033129 0.019602149448875485 -0.091998604105535273 -0.022947184341211145 0.020568219165300258 -0.005735957073089379 0.056650838469978877 -0.021116662407991871 -0.067834189517766846 -0.16866146989175107 0.050716381578443749 -0.012211863990396707 0.01398742911445788 0.081423651308505957 0.14278568555169011 0.017450903614672827 0.0094770319070743882 -0.16365893857451125 0.013667616865300396 -0.014195289767772481 -0.018968717820769525 0.051120500670951446 -leaf_weight=1151.9685244361644 1274.0265333642683 67.445965991677554 1870.3870570527715 167.24299558635181 1318.9638351985586 58.199272057827784 18.470132824419352 7.8816365092752667 419.11014936452278 1979.2289584886248 51.208108918470543 783.87327478128987 277.28758539508181 1048.2784105643434 99.467064430220944 131.17580619055116 69.202467428292266 6.6846537477613301 41.969155450235121 1072.8706139893984 393.47644185032641 53.136434307221634 10.062668811093316 835.16001613283674 461.79200363299969 2.4637279913295052 594.00876580863951 698.37534467002934 1659.4111502449562 56.696365334490451 -leaf_count=523585 152068 67999 709063 1449675 15817 6803 277 5161 406699 37986 974776 1232214 13792 41667 9829 16203 173987 1636 733 689464 17347 4749 138 11701 29674 348 20520 108907 1125551 11161 -internal_value=0 -0.00866834 -0.003306 -0.0191489 0.00921343 0.00614621 0.00308689 -0.0133147 -0.042255 0.00938122 -0.0152038 -0.0271846 -3.08459e-05 0.0124483 -0.00381458 0.0183244 -0.0185113 -0.0117223 -0.00369905 -0.00246142 0.0246281 0.0209862 0.0248626 0.006733 0.00718478 0.0704813 0.00128236 -0.0103291 -0.0165965 0.01511 -internal_weight=0 8593.99 5685.2 2908.78 8085.54 6766.57 3698.15 2322.43 586.353 5492.55 1987.05 835.081 3230.61 4456.68 1035.87 272.612 1852.76 763.259 173.145 2943.26 467.547 449.077 287.35 2477.45 469.674 55.6002 1642.29 756.575 1783.55 124.142 -internal_count=7859530 7435660 4165753 3269907 423870 408053 1435178 1413533 1856374 255985 2730575 2206990 1412457 111874 144111 26765 1378698 117346 16936 1398527 22721 22444 13930 73888 34835 5097 62187 115710 1204711 79160 -shrinkage=0.12 - - -Tree=72 -num_leaves=31 -num_cat=0 -split_feature=11 0 3 11 7 11 7 1 0 12 7 9 0 2 3 2 0 0 0 11 3 2 2 6 6 2 8 5 2 7 -split_gain=89.9736 49.4697 29.7959 22.1792 17.2182 17.9812 16.2187 13.4707 13.1771 12.7589 15.1003 26.5103 12.6018 11.7717 9.60121 10.1751 9.52927 9.16204 9.07962 9.93528 9.00315 8.85329 8.8137 13.1537 8.71808 10.6855 12.5426 11.1008 9.80483 8.5037 -threshold=0.80909090909090919 29.087282000000002 1.0000000180025095e-35 0.4188596491228071 1.5000000000000002 0.24068965517241384 3.5000000000000004 1.5000000000000002 40.27922800000001 0.22902097902097904 3.5000000000000004 2.5000000000000004 46.836120500000007 125755200.00000001 22.500000000000004 46440000.000000007 46.836120500000007 16.872643500000006 31.763350000000006 0.060915275200989494 13.500000000000002 63028800.000000007 121867200.00000001 1.0000000180025095e-35 1.0000000180025095e-35 662385600.00000012 1.0000000180025095e-35 1.0000000180025095e-35 410443200.00000006 8.5000000000000018 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 4 6 9 14 -6 7 -2 13 10 11 16 -5 20 15 -1 -3 -9 -12 29 -4 -19 -16 -24 28 -26 27 -27 -17 -20 -right_child=2 3 8 12 5 -7 -8 17 -10 -11 18 -13 -14 -15 22 24 -18 21 19 -21 -22 -23 23 -25 25 26 -28 -29 -30 -31 -leaf_value=0.0093558460297079385 -0.019524623682521586 0.026642090051488269 0.020082061742706232 -0.00081606743372362144 -0.061272505922987323 -0.024158264200325411 0.016783203521638791 -0.016656180579353932 0.028004642159914949 0.01018886620977528 -0.05534298887911316 -0.011749874484007775 0.014131488323677308 0.0083255453967309885 0.079917903887474537 -0.016462856465917126 0.096556027716322754 0.028780411907250697 -0.0094446580085187203 -0.016607429181618116 0.058042715911337195 0.0022629393075899598 -0.090905954362110644 0.089047937512482203 -0.016577758473718833 0.084926250123410346 -0.030191006582867549 -0.066325055584072548 -0.045588456886194527 -0.10183060569282738 -leaf_weight=238.68044080749905 514.11745679990008 117.39977837148695 387.85706718549386 2421.9801671875603 219.75954432416052 1299.4706825715696 868.59355317179234 331.65584855973793 1180.2961074022628 365.04037755091304 109.40946022798244 676.22735092479093 1221.9259399298426 1942.9683121983792 31.060534652544447 752.55547775781827 36.883223669123254 200.59872426468064 23.257421941143022 1109.0459845896351 117.1373363751627 1882.1639189117323 14.164431020551092 9.9192970772710396 158.29341731866708 54.092229590932774 28.955083137891734 8.0006830246594074 213.6991580862092 37.445034100886303 -leaf_count=131236 353694 20951 8954 291307 1591169 2209516 14241 62352 12686 35208 194575 195392 28268 60587 1192 987709 1177 3741 18515 446494 874 127775 2954 1696 178967 20097 55306 7887 750051 44959 -internal_value=0 -0.00796629 0.00981359 -0.00175752 -0.0205094 -0.029528 0.00238299 -0.00188819 0.0175899 -0.0105244 -0.0141086 -0.00150886 0.00419643 0.0125682 -0.0114317 -0.0132956 0.0433714 0.00186744 -0.0222889 -0.0191959 0.0288903 0.00481731 0.0377041 -0.0167703 -0.0177433 0.00226179 0.0350104 0.0654149 -0.0229056 -0.0664562 -internal_weight=0 9147.27 7425.39 6118.61 3028.65 1519.23 3797.13 2928.54 3628.26 2474.71 2109.67 830.51 3643.91 2447.96 1509.42 1454.28 154.283 2414.42 1279.16 1169.75 504.994 2082.76 55.1443 24.0837 1215.6 249.341 91.048 62.0929 966.255 60.7025 -internal_count=7859530 7214626 644904 1276846 5937780 3800685 561803 547562 83101 957271 922063 217520 319575 70415 2137095 2131253 22128 193868 704543 509968 9828 131516 5842 4650 2000017 262257 83290 27984 1737760 63474 -shrinkage=0.12 - - -Tree=73 -num_leaves=31 -num_cat=0 -split_feature=12 1 3 0 7 0 0 0 7 0 7 3 7 0 0 4 2 3 2 1 0 0 11 4 0 2 3 7 3 2 -split_gain=88.1224 31.3377 24.1411 18.6908 23.3493 15.7896 15.5225 14.2057 13.9988 13.6856 12.0629 10.9362 9.89878 9.29229 8.91878 8.8858 8.7688 8.50932 8.33985 9.0158 9.60529 9.33067 8.13449 11.4112 10.5512 9.10343 8.04697 8.03657 8.01815 9.3103 -threshold=0.44949494949494956 1.5000000000000002 1.5000000000000002 20.298305500000001 2.5000000000000004 33.324993000000006 46.836120500000007 38.267659000000002 1.0000000180025095e-35 48.846755000000009 1.0000000180025095e-35 23.500000000000004 8.5000000000000018 13.142298500000003 42.837928000000005 339.50000000000006 4133851200.0000005 140.00000000000003 11793600.000000002 1.5000000000000002 22.481851500000001 22.534071000000004 0.29705882352941182 36.500000000000007 17.276548500000001 62856000.000000007 310.50000000000006 3.5000000000000004 8.5000000000000018 315748800.00000006 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 9 6 8 7 12 15 10 -3 22 11 -5 -6 -10 -4 18 -8 -16 -2 20 -20 -22 23 -1 -25 -24 -12 -26 -7 -30 -right_child=2 3 14 4 5 28 16 -9 13 -11 26 -13 -14 -15 17 -17 -18 -19 19 -21 21 -23 25 24 27 -27 -28 -29 29 -31 -leaf_value=-0.056770408259986124 0.071619151210850079 -0.0059925614022538695 0.013300399206874095 0.0071421835011209363 -0.023008487441145396 -0.0079093078174858056 0.016272350085751841 0.019142928408039786 -0.010675804659100343 -0.00092702623357738883 -0.0053473867375370679 0.056455206352667771 -0.085471476387871462 -0.038173186150958653 0.026125151741121403 0.12606348240490409 -0.19531352858830098 0.10647332890518359 -0.056715012381664341 0.0029309450765594943 0.13682698460033391 -0.0091004571351995783 -0.001480103939505445 -0.17919112982036672 0.12612648552053057 -0.033872429057492319 -0.24138423412021584 -0.097212104978448635 0.036131183299524486 -0.023510606666513514 -leaf_weight=254.45392136851513 23.369216353383763 831.48503051701255 1599.9634268179175 1012.8671375812678 661.57839109341808 1651.6797423660973 1300.2417150811398 706.08105194944801 274.23902276532272 243.49769698312844 1877.5969559907589 69.154536197412654 38.645497701878185 499.08207085193953 1004.1785536297471 8.067594864376586 2.7968208210659204 19.319749333313666 62.912103383759813 2759.8047207320997 6.337685023229823 692.5839909636004 167.15993700146009 2.572473383423115 11.920459811759699 494.59171404547885 2.0521888323128215 2.8553872424137987 128.48349345065799 53.306227474688058 -leaf_count=1760353 2851 221559 31868 76461 860766 254396 19453 31375 265053 51224 749641 1801 103023 1136887 9542 138 73 226 38609 117539 775 142252 321869 3075 17253 1613240 12 19189 5788 3239 -internal_value=0 -0.00801108 0.00962166 -0.00525887 -0.00227182 -0.011131 0.00461072 0.00384814 -0.0168015 -0.0262632 0.000201614 0.0102954 -0.0264593 -0.0284227 0.0188969 0.000502088 0.0158137 0.0276449 0.000215276 -0.000259159 -0.0118152 -0.0077714 -0.0328714 -0.0503499 0.0437577 -0.0256905 -0.00560894 0.0828575 -0.00527652 0.0186414 -internal_weight=0 8983.3 7479.58 7806.25 6201.45 2533.69 4856.11 3667.75 1604.81 1177.05 2961.67 1082.02 700.224 773.321 2623.46 3553.08 1303.04 1023.5 3545.01 3521.64 761.834 698.922 933.554 271.802 17.3483 661.752 1879.65 14.7758 1833.47 181.79 -internal_count=7859530 7496204 363326 3710001 2086502 1227212 321690 859290 1623499 3786203 827915 78262 963789 1401940 41636 302164 19526 9768 302026 299175 181636 143027 3734979 1799870 39517 1935109 749653 36442 263423 9027 -shrinkage=0.12 - - -Tree=74 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 3 0 7 7 7 2 1 1 1 0 2 0 6 2 0 11 10 1 2 0 12 11 0 3 2 2 0 -split_gain=83.6257 43.9696 27.3654 19.8886 14.99 18.2377 14.761 14.5458 14.206 13.6516 11.6588 11.5053 10.8851 10.8106 10.4467 14.0705 10.2375 10.2158 10.6446 10.0499 9.28706 9.12254 8.56311 8.45642 8.44678 8.85933 8.19187 8.15559 8.10941 7.92187 -threshold=0.84523809523809534 40.27922800000001 22.481851500000001 4.5000000000000009 24.907383000000003 8.5000000000000018 3.5000000000000004 1.0000000180025095e-35 32097600.000000004 1.5000000000000002 1.5000000000000002 1.5000000000000002 11.047593000000001 1573992000.0000002 1.0000000180025095e-35 1.0000000180025095e-35 148651200.00000003 63.388565000000007 0.30217391304347835 4.5000000000000009 1.5000000000000002 315316800.00000006 32.495975500000007 0.93725490196078443 0.62019230769230782 5.2224168000000004 19.500000000000004 126360000.00000001 220881600.00000003 22.534071000000004 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 4 11 6 7 8 19 12 -6 24 -3 -2 14 -11 15 -1 22 18 26 29 -10 23 -7 -13 25 -9 -12 -16 -28 -4 -right_child=2 10 3 -5 5 16 -8 9 20 13 17 21 -14 -15 27 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 28 -29 -30 -31 -leaf_value=-0.11329041961198266 -0.040976100398398517 -0.011676769046631763 0.08277473567872802 0.025946797314353138 0.020418357062541283 -0.096852724499171219 0.02192281913685306 0.075736199209233385 -0.024150046035835728 -0.022661079404958137 -0.017809236726721609 0.0072158848841539216 0.01993589964082753 -0.10489706905672024 0.0009257679528557306 0.16091353473633446 -0.077251144307111136 0.021402273918398617 0.0073755594871195238 -0.20587834790023121 -0.0071544201964691516 -0.013758827448322833 0.024042679137900012 -0.14943822594766873 -0.011985584487386132 -0.095235889671066928 0.10235891303454171 -0.051382170510683257 -0.20412915851719093 0.0052311267702056961 -leaf_weight=3.7572219665514099 116.53934520300663 581.16966795911139 19.053821035016426 1397.051458993059 239.8625847007529 11.262520203359342 1036.8793272935818 4.5923051443049152 546.22828308150838 1509.8153326711013 383.14251756202543 818.27037795311298 185.51916335735717 23.3481200085007 75.57924029644893 9.3446250409278946 86.970591923289675 565.04004750116292 1686.5642889408844 3.2064608507353105 3037.4662707292096 544.07059476588347 33.33236470672756 4.9624179909005752 30.029882461816584 80.663082532030145 13.235581584805912 99.303331466808103 1.343809814112318 3223.7875163932681 -leaf_count=1970 203064 152479 2034 18423 106841 39720 14021 16106 1016528 2322609 79932 55661 169283 95713 17015 330 165253 13843 55434 358 768061 89496 30076 322 67759 2029313 455 69229 165 258037 -internal_value=0 -0.00756497 0.00972316 0.0135139 -0.0136614 -0.00936448 0.0094583 -0.0220662 -0.0078527 -0.0269109 0.00371464 -0.0047875 -0.000683815 -0.0239155 -0.0210331 0.0822008 -0.0532882 0.00709107 0.00321112 0.00547662 -0.00974508 -0.00170221 -0.00653426 0.00626617 -0.0667309 -0.086003 -0.0144477 -0.0287799 0.0737482 0.00568751 -internal_weight=0 9207.57 7163.82 5679.98 5977.07 3955.12 4282.93 2021.95 3823.56 1648.45 3230.5 1483.84 373.504 1533.16 187.984 13.1018 131.565 2649.33 2084.29 3246.05 3583.69 1367.3 44.5949 823.233 115.285 85.2554 397.722 174.883 14.5794 3242.84 -internal_count=7859530 7218114 641416 292873 6915806 2126479 274450 4789327 1891430 4531500 302308 348543 257827 2418322 88544 2300 235049 149829 135986 260429 1784589 145479 69796 55983 2113178 2045419 80552 86244 620 260071 -shrinkage=0.12 - - -Tree=75 -num_leaves=31 -num_cat=0 -split_feature=12 1 1 0 3 4 7 9 0 0 3 2 12 5 0 2 2 11 2 2 0 7 2 2 3 7 2 0 2 4 -split_gain=81.4254 25.8158 21.3715 19.8686 17.5443 15.8801 13.1191 17.7488 17.5715 12.2497 11.9789 11.9215 11.5165 11.419 14.3487 14.6009 11.064 9.87781 13.2086 18.5535 9.99871 11.7596 9.8693 9.31544 8.96007 8.86806 23.5549 8.56048 9.36865 8.31474 -threshold=0.44949494949494956 1.5000000000000002 1.5000000000000002 51.783302000000013 2.5000000000000004 339.50000000000006 2.5000000000000004 7.5000000000000009 38.267659000000002 42.837928000000005 14.500000000000002 662904000.00000012 0.89444444444444449 1.0000000180025095e-35 33.981020000000008 158068800.00000003 441547200.00000006 0.88194444444444453 728740800.00000012 378734400.00000006 28.502720500000006 2.5000000000000004 662299200.00000012 536241600.00000006 101.00000000000001 1.5000000000000002 94392000.000000015 37.701621500000009 346766400.00000006 1.0000000180025095e-35 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 9 5 10 6 29 8 13 16 -1 17 -10 -12 -8 15 -15 -3 20 19 25 21 -4 -18 -5 -6 26 -19 28 -14 -2 -right_child=2 4 3 23 24 -7 7 -9 11 -11 12 -13 27 14 -16 -17 22 18 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.033049290572353208 -0.014167439656009051 -0.0033168954398596442 -0.20013070887763421 0.030504867814626808 0.0046162586484885179 0.12482598345671801 0.0064583093493430299 -0.039511765739857645 0.023473737530608337 -0.0064174332575967375 0.025994009552551201 -0.028572058275561866 0.14161706063034901 -0.010585995135160687 -0.0083981024716971719 -0.058433614591141339 -0.041212981996266836 0.03892341212701534 0.029188967273334459 -0.0077696268071659608 0.0027483549983359527 -0.020757167663508398 -0.011614486662358372 0.0081187020856447484 0.057926762124398692 0.021760302442870812 -0.0041161447423008115 -0.22219694934101467 -0.091158242189170638 0.010796409711454843 -leaf_weight=780.52052768355816 793.28721613897073 2667.0337600867906 5.3436839271639647 1021.7176875027671 1483.0241785236367 13.069571096275466 423.88000373500427 373.17363960622993 456.75886063192411 365.03032013233724 641.57153027167533 73.55901546712812 3.4631004552356925 171.21103370035692 954.12055645930934 198.10894602349444 214.57848703491948 235.87450676081812 418.61095883966118 911.01943749319275 758.00255411622857 256.89933307370347 664.73687108838328 362.72762339417022 46.803275843598385 894.83766895512008 818.14123925792228 4.2327396410983047 8.6425703887362015 253.5017187902256 -leaf_count=3682044 161868 1105634 1127 7906 191438 163 161459 931684 21234 104159 7931 5202 60 79391 115354 280088 235277 3935 12918 40644 20380 21829 581424 3839 1816 13009 35290 147 108 32172 -internal_value=0 -0.00775247 0.00929395 0.0119303 -0.0052601 -0.00647887 -0.00810109 -0.0157565 -0.00411902 -0.0245634 0.00838018 0.0162534 0.0234592 -0.0106825 -0.0161725 -0.0362549 -0.00716561 0.00607223 0.00928112 0.00636685 -0.00423927 -0.0244347 -0.0188385 0.0246399 0.00624833 0.0129752 0.00551636 -0.0759427 -0.0243821 -0.00812179 -internal_weight=0 8872.54 7400.94 6341.08 7726.99 1059.86 6197.16 2120.49 4076.67 1145.55 4956.64 530.318 657.91 1747.32 1323.44 369.32 3546.35 4298.73 3278.48 2859.87 1020.25 262.243 879.315 1384.45 1529.83 1948.85 1054.02 16.3384 12.1057 1046.79 -internal_count=7859530 7496204 363326 169123 3710001 194203 3516747 1567976 1948771 3786203 157378 26436 8246 636292 474833 359479 1922335 149132 105796 92878 43336 22956 816701 11745 193254 52234 39225 315 168 194040 -shrinkage=0.12 - - -Tree=76 -num_leaves=31 -num_cat=0 -split_feature=11 0 3 11 7 2 6 12 2 2 12 12 0 3 3 6 2 2 7 2 0 11 7 9 10 1 0 7 0 9 -split_gain=76.8483 38.0222 24.0796 19.6504 14.9301 16.1788 14.3875 13.3228 12.1554 11.8009 11.908 11.7014 11.5487 11.5189 10.4255 10.4237 12.7078 13.8325 10.2693 10.1443 10.0199 9.58574 9.15176 20.7697 9.10469 8.95319 9.70403 8.46775 10.1815 11.3056 -threshold=0.76388888888888895 28.355377000000004 1.0000000180025095e-35 0.43303571428571436 1.0000000180025095e-35 284385600.00000006 1.0000000180025095e-35 0.24500000000000002 126273600.00000001 221140800.00000003 0.93725490196078443 0.31009615384615391 28.502720500000006 1.5000000000000002 63.500000000000007 1.0000000180025095e-35 662385600.00000012 663076800.00000012 1.5000000000000002 252072000.00000003 27.026261500000004 0.96666666666666679 3.5000000000000004 2.5000000000000004 5.5000000000000009 1.5000000000000002 31.547599000000002 3.5000000000000004 17.366282500000004 5.5000000000000009 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 4 6 11 15 27 25 18 14 10 20 22 -10 -5 -4 -1 -17 -18 -7 -11 -8 -14 23 -3 -24 26 -2 -6 -29 -30 -right_child=2 3 8 13 5 7 9 -9 12 19 -12 -13 21 -15 -16 16 17 -19 -20 -21 -22 -23 24 -25 -26 -27 -28 28 29 -31 -leaf_value=-0.0097682475891977694 -0.036997028497767218 0.036970718780776277 0.025407479204925722 -0.00069474327698902921 -0.013696593135620284 -0.040260786974608304 0.0007137225403181088 -0.020153634994822055 0.0012083118922405613 -0.10624459588059683 -0.063334824094824077 0.017339025037941623 -0.0050993907895920424 0.015056398664922824 0.08290143201209671 -0.0068107301455841204 0.09100415168021779 -0.18054054532944172 -0.083712039016335948 0.0054694325218366362 0.041560440532951243 0.020513519947016039 -0.01952864973927573 -0.011626302590916363 0.054168752330868757 -8.3416896924640179e-05 0.00065730188262062329 0.021086530977703539 -0.033058690297390156 -0.099816469601118563 -leaf_weight=311.98183228058895 214.65516516893558 155.1567394870209 740.7110367952032 2363.3810338792246 1428.8844709576515 218.02993262029975 115.66491146112878 269.18664411250609 940.90420073629889 11.829991032901033 19.97445565435919 203.19574442107296 239.71359179207047 932.28719649242339 48.361787593647023 54.435764349974171 49.166386731376349 2.8309264563257193 122.31844407523408 895.83967012398875 342.70962276040984 1720.7003201601067 1470.6293919949696 688.43374895571617 24.513964876345199 2134.7669881251054 182.19747977336101 36.599387009171522 171.31479799429917 46.4231668522348 -leaf_count=237033 257262 25053 13617 302594 1992153 990232 27270 196053 37758 2467 1461 14391 2814 32547 520 18208 8883 4539 1645398 68280 12099 31158 804940 229689 598 174486 29805 39376 262592 396254 -internal_value=0 -0.00780736 0.00877275 -0.0023534 -0.0195505 -0.0233546 0.00222041 -0.0401056 0.0157285 0.0120485 0.0273005 -0.0102809 0.0121366 0.00376108 0.0289343 0.0012948 0.033717 0.0761247 -0.0558828 0.00400996 0.031254 0.0173816 -0.0126808 -0.00268714 -0.0183193 -0.0031604 -0.019711 -0.017288 -0.0374609 -0.0473037 -internal_weight=0 8548.77 7608.03 5837.6 2711.17 2292.76 3917.64 609.535 3690.39 1386.02 478.349 2541.93 2901.32 3295.67 789.073 418.415 106.433 51.9973 340.348 907.67 458.375 1960.41 2338.73 843.59 1495.14 2531.62 396.853 1683.22 254.337 217.738 -internal_count=7859530 7200533 658997 1409812 5790721 5522058 573130 2831683 85867 111577 40830 1074671 71730 335141 14137 268663 31630 13422 2635630 70747 39369 33972 1060280 254742 805538 461553 287067 2690375 698222 658846 -shrinkage=0.12 - - -Tree=77 -num_leaves=31 -num_cat=0 -split_feature=12 1 1 0 0 7 0 0 7 3 3 0 4 2 2 0 2 2 0 3 2 0 12 2 11 2 2 2 12 12 -split_gain=75.3151 23.3165 20.1283 18.0082 17.3953 20.6179 14.3939 12.8101 12.5496 11.9851 11.5737 11.5299 10.5368 9.80107 9.71774 9.51324 9.32598 11.1855 9.26587 9.17755 8.44133 8.41256 8.37541 12.8778 12.8366 12.686 10.0995 11.6372 9.66991 8.96978 -threshold=0.44949494949494956 1.5000000000000002 1.5000000000000002 48.846755000000009 19.795837500000005 2.5000000000000004 45.25187300000001 55.906434000000004 1.0000000180025095e-35 38.500000000000007 27.500000000000004 43.939336500000003 339.50000000000006 688910400.00000012 883483200.00000012 25.373452000000004 1035979200.0000001 252417600.00000003 13.142298500000003 74.500000000000014 93960000.000000015 21.420474500000001 0.63961038961038974 62856000.000000007 0.70714285714285718 1198843200.0000002 434980800.00000006 662990400.00000012 0.93725490196078443 1.2250000000000003 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 11 12 9 8 7 -7 10 -3 22 13 -1 21 -6 -15 -16 17 -11 -10 -19 -20 -2 23 24 -4 -25 28 -28 -24 -30 -right_child=2 4 3 -5 5 6 -8 -9 18 16 -12 -13 -14 14 15 -17 -18 19 20 -21 -22 -23 26 25 -26 -27 27 -29 29 -31 -leaf_value=-0.03161408807955176 -0.063501636587390373 -0.0063583482314153112 -0.17839299974451728 0.022515237585009704 0.0027530257292261652 -0.017707908391468165 0.001296058543939233 0.05734414349447034 -0.011097002548930261 0.055326102468790488 0.035733400737906214 -0.0052058422997925888 0.10414746559558133 -0.062142366323241625 -0.078682446592919328 0.0047905682759368318 0.13964390725764614 0.018352738404003185 -0.019614633148595673 -0.078058715008542792 -0.053838012878079086 -0.0056469686556144512 0.021887364942072603 -0.0028503833949654269 0.039729238053034743 0.03322192227132087 -0.010345975256215039 0.019441159791755366 -0.043712457514796993 0.068120220619578772 -leaf_weight=786.0053152617686 37.532638617095699 776.88726363677347 3.9532268969928728 1608.6616045287574 3237.9083891200612 1574.0109710080353 903.26147631901517 62.261463518058008 268.83265579848933 107.36385260684074 144.46125370859727 341.52671007457934 12.230814450216711 65.280534850458309 22.928581034375952 136.85005249638158 11.862460029311476 61.343487190788437 178.31191989618213 18.474651219439693 248.4455125387064 992.30165226497297 1132.0761506767899 2148.6735887480181 159.05366394623525 150.17503566046526 467.17582204957762 316.98790854937579 58.131020994358551 12.52968784731638 -leaf_count=3695177 27548 214879 239 14910 807221 1217740 66481 1847 265053 1495 5715 91026 163 40811 59634 27747 66 691 48897 342 953976 166492 17158 103909 2219 6444 12365 6443 2500 342 -internal_value=0 -0.00750989 0.00900028 0.0115722 -0.0051265 -0.00232019 -0.0107788 0.00338993 -0.0168414 0.00778449 0.00245825 -0.0236154 -0.00644089 0.00106985 -0.0231431 -0.00720051 0.0365909 0.0300387 -0.0285488 -0.00398353 -0.0395409 -0.00775729 0.00649541 0.00181778 0.0344075 -0.000493514 0.0122911 0.00169537 0.0191991 -0.0238616 -internal_weight=0 8746.97 7298.53 6256.46 7619.44 6146.96 2477.27 3669.69 1472.48 4647.8 3607.43 1127.53 1042.07 3462.97 225.059 159.779 199.044 187.182 695.59 79.8181 426.757 1029.83 4448.76 2461.86 163.007 2298.85 1986.9 784.164 1202.74 70.6607 -internal_count=7859530 7496204 363326 169123 3710001 2227196 1284221 942975 1482805 154213 941128 3786203 194203 935413 128192 87381 2594 2528 1267926 1033 1002873 194040 151619 112811 2458 110353 38808 18808 20000 2842 -shrinkage=0.12 - - -Tree=78 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 11 0 7 9 5 3 2 3 0 12 7 9 8 2 2 1 8 4 0 6 3 11 1 3 4 11 7 -split_gain=74.6695 39.9265 25.0653 16.8645 12.8388 11.8227 13.3307 11.2289 10.7769 9.97207 9.33632 9.05644 8.90675 10.6421 12.9454 9.29809 8.49422 9.15113 8.15889 7.64008 7.57954 8.43223 7.53838 8.33036 8.54843 8.17831 7.67882 7.65775 7.49937 8.05018 -threshold=0.84523809523809534 30.264538000000005 35.82988550000001 0.4188596491228071 17.967157500000003 2.5000000000000004 7.5000000000000009 1.0000000180025095e-35 36.500000000000007 63028800.000000007 19.500000000000004 42.837928000000005 0.22902097902097904 3.5000000000000004 6.5000000000000009 1.0000000180025095e-35 473342400.00000006 3305664000.0000005 1.5000000000000002 11.500000000000002 50.500000000000007 17.276548500000001 1.0000000180025095e-35 11.500000000000002 0.86190476190476206 1.5000000000000002 12.500000000000002 72.500000000000014 0.060915275200989494 8.5000000000000018 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 5 4 12 -2 18 -7 22 16 -10 -6 -5 13 14 -3 -16 -9 -18 20 -13 -1 -22 23 27 -25 -24 -26 -4 29 -15 -right_child=2 3 7 11 10 6 -8 8 9 -11 -12 19 -14 28 15 -17 17 -19 -20 -21 21 -23 25 24 26 -27 -28 -29 -30 -31 -leaf_value=-0.043476815561799512 -0.012712512473887999 0.020915342288576722 -0.016534831172730736 -0.0017426116434807869 0.0045008208366693571 -0.022171068090604162 -0.057883780405042586 0.027168620606229519 -0.1434162596626678 0.070336943841587632 0.025998799569068053 0.0098782353956897995 0.0083609960981267835 -0.010702801791613049 0.019549979314556189 -0.021381352517404216 0.0071118108003761053 0.099055618749209484 -0.010726736992584833 0.10970668632623228 -0.17633101290814041 0.12189175846489017 -0.024628079504426855 -0.24970251352746176 0.14234713777038702 0.026460923892530634 0.019982503311764127 0.38889250478275861 -0.017293090029508188 -0.097760514772520166 -leaf_weight=167.15297661649774 591.01173982660612 251.59368358331557 290.17586852608679 1831.9042160843194 3467.0278890664617 864.03672779427143 182.25734619759032 1203.498120926766 3.2278405813849522 91.142399205527909 317.51566154853208 1615.3444315481167 348.1977961548705 26.984409986437385 101.38564929982635 377.04962812020727 575.27114885438641 15.992542943160514 2017.3018335531665 11.085856616322415 1.6376157534016762 7.548746159501758 53.229740835358825 1.5560378005029623 8.1190527273574826 295.37825240817619 78.951077638062998 0.64246760308742423 1117.6305948123879 35.303185588045409 -leaf_count=1767617 185625 40070 14865 225460 390943 1038749 1528045 23699 26 883 3661 47713 32702 25130 35115 92647 13541 158 1776047 87 2856 21465 4096 15 77 2721 1097 9 534998 49413 -internal_value=0 -0.00725505 0.00929237 -0.0012232 0.00373591 -0.0178974 -0.0283935 0.0185818 0.0234614 0.0629825 0.00630465 0.00404358 -0.00928918 -0.012507 -0.00111909 -0.0127069 0.0213823 0.00960361 -0.0128908 0.0105607 -0.0376417 0.0683279 0.00592007 -0.00578376 0.0264189 0.0186586 0.0314378 -0.0155992 -0.0195527 -0.0600684 -internal_weight=0 8956.41 6992.74 5716.48 4375.56 3239.94 1046.29 2617.18 1889.13 94.3702 3784.54 3458.33 2258.14 1909.95 730.029 478.435 1794.76 591.264 2193.64 1626.43 176.339 9.18636 728.052 379.445 88.6262 348.608 87.0701 290.818 1179.92 62.2876 -internal_count=7859530 7218114 641416 1083335 580229 6134779 2566794 61187 38307 909 394604 273260 810075 777373 167832 127762 37398 13699 3567985 47800 1791938 24321 22880 16063 1189 6817 1174 14874 609541 74543 -shrinkage=0.12 - - -Tree=79 -num_leaves=31 -num_cat=0 -split_feature=11 0 3 0 7 11 0 3 6 11 11 0 2 2 2 2 0 0 2 0 0 0 9 2 2 8 3 2 12 2 -split_gain=70.5463 33.1521 24.1424 16.8566 13.0873 19.5582 10.5918 10.4964 9.80476 9.64896 9.55099 8.94968 8.62934 11.9225 10.5428 9.25394 8.43758 7.58595 7.52443 7.15535 7.26676 7.12574 11.5516 10.1949 9.77477 7.05467 6.78267 6.5038 8.11497 7.67799 -threshold=0.76388888888888895 36.697481500000002 1.5000000000000002 55.906434000000004 1.5000000000000002 0.24068965517241384 20.077880000000004 3.5000000000000004 1.0000000180025095e-35 0.14907407407407411 1.2250000000000003 19.621536000000003 249480000.00000003 220708800.00000003 252158400.00000003 220968000.00000003 21.763782500000001 24.096014000000004 126273600.00000001 11.482149000000001 -1.0000000180025095e-35 5.2224168000000004 6.5000000000000009 62856000.000000007 252590400.00000003 12.500000000000002 12.500000000000002 189604800.00000003 0.78888888888888908 180360000.00000003 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 4 3 6 11 8 -2 9 -6 -3 -5 -1 13 -8 -14 -15 19 18 -4 20 -7 22 -22 -23 -25 27 -13 28 29 -11 -right_child=2 7 17 10 5 16 12 -9 -10 25 -12 26 14 15 -16 -17 -18 -19 -20 -21 21 23 -24 24 -26 -27 -28 -29 -30 -31 -leaf_value=-0.017363378542992181 -0.012269344622142193 -0.027600042351274261 0.026707574884946995 0.02488705783701917 -0.06205795227195407 -0.053754261804666782 0.0071391775758897057 0.015723874083085013 -0.024858832319017747 0.0037678089768294347 -0.12475837015694301 -0.0025299274891187732 -0.070898767011981237 0.07743197680887684 -8.1219036458422459e-05 0.017419105218461774 -0.011987289821554619 0.020968190683790414 -0.0069866179949833367 -0.03673754240424533 0.13339067432038848 -0.23425909781335738 -0.19277206189328167 0.063091848348220597 -0.15308987332405607 0.15139839421636017 0.034933497588158391 -0.0044670305132361709 -0.18137101828371638 0.033188866364547077 -leaf_weight=688.24758242614507 716.70366993327389 194.10774816740195 139.52621394220137 551.52060098850416 204.90880072098849 18.046779225157678 1307.3257443941234 594.64884406011151 203.32739753034951 840.93521296771769 6.1815342863555989 1155.8255036212522 30.671596728758686 63.840118492775247 2162.0034172081478 88.003902708465802 2045.1423867230712 2104.4239695226647 301.87625887570107 366.54757368806179 14.589162635584358 2.4655591532585133 1.7243393134810396 16.212627527467252 3.6679578580731507 4.3986394868697962 74.018442630957452 1806.6167334131974 3.2311431489797533 150.57799643922135 -leaf_count=1061973 253660 149475 2654 4790 1048241 14050 136974 21182 876402 105101 290 1157589 2062 2138 203401 8403 1524123 32921 11704 1026964 667 810 795 5314 12107 35 6613 180263 248 8581 -internal_value=0 -0.00755279 0.00847985 0.0035763 -0.0140843 -0.0192036 0.00106816 0.00115959 -0.0435336 -0.00172754 0.0232218 -0.00640642 0.00368583 0.0108364 -0.00107279 0.0426608 -0.0151793 0.0179682 0.00366512 -0.0306011 0.00906329 0.0384062 0.0986247 -0.00562876 0.0230359 6.26458e-05 -0.000274385 -0.000176597 0.00761542 0.00823676 -internal_weight=0 8389.24 7472.08 4926.25 4794.72 2876.63 4368.55 3594.52 408.236 2999.87 557.702 1918.09 3651.84 1459.17 2192.68 151.844 2468.4 2545.83 441.402 423.254 56.7064 38.6596 16.3135 22.3461 19.8806 2805.76 1229.84 2801.36 994.744 991.513 -internal_count=7859530 7200533 658997 611718 6735648 4509473 606638 464885 1924643 443703 5080 2226175 352978 147515 205463 10541 2584830 47279 14358 1060707 33743 19693 1462 18231 17421 294228 1164202 294193 113930 113682 -shrinkage=0.12 - - -Tree=80 -num_leaves=31 -num_cat=0 -split_feature=12 1 3 3 8 0 7 0 0 1 0 0 2 0 0 7 0 2 7 2 11 4 2 0 4 7 2 5 0 2 -split_gain=66.1602 22.388 19.618 14.5761 14.3321 13.6144 16.359 11.3716 11.0823 10.5357 9.68755 10.9054 13.3413 11.8417 9.66252 8.90378 12.3695 8.26601 7.56686 7.91124 7.4943 9.15208 7.46451 9.16017 7.45124 7.33951 8.01908 7.30552 7.19458 6.87433 -threshold=0.44949494949494956 1.5000000000000002 8.5000000000000018 26.500000000000004 4.5000000000000009 19.795837500000005 2.5000000000000004 63.388565000000007 38.267659000000002 1.5000000000000002 13.142298500000003 9.9585325000000022 315835200.00000006 8.5645465000000005 48.846755000000009 7.5000000000000009 32.247026500000011 260366400.00000003 1.0000000180025095e-35 59054400.000000007 0.29705882352941182 36.500000000000007 126446400.00000001 21.263607000000004 6.5000000000000009 1.0000000180025095e-35 662558400.00000012 1.0000000180025095e-35 26.819955000000004 31406400.000000004 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 14 4 5 9 10 8 15 18 24 11 13 -13 -3 20 -8 -17 -6 -7 -20 21 -1 -11 -24 -2 26 -10 -26 -21 -4 -right_child=2 3 29 -5 17 6 7 -9 25 22 -12 12 -14 -15 -16 16 -18 -19 19 28 -22 -23 23 -25 27 -27 -28 -29 -30 -31 -leaf_value=-0.052294530482034828 -0.017584298142389435 -0.0068637761923670644 0.14312527513385609 0.021734913968255026 0.026640972700196539 0.0068820247924178653 -0.010271524915524416 0.012767296818923314 0.086612265175320002 0.015220896608397875 -0.025834725525294616 0.03008337400625619 -0.023082255416314128 -0.056426677506169379 -0.0013994578811183567 -0.088130685947525683 -0.022429272092450013 0.0088345060065097448 0.017539889759253659 -0.020391932444803508 -0.02187343561282238 0.047305205221444289 -0.017011068421613325 0.0042092865464235006 0.066660195089519328 0.013016723584989372 -0.12755279218483534 -0.0049948794004896421 -0.0031988888901052052 0.021924183008007438 -leaf_weight=232.2862116232744 538.21857740787141 263.85257967695998 6.7485762682622399 287.7760871860437 593.59806909104577 1033.0316971814582 1702.3473077492395 257.50532917231976 31.909438448798028 755.69255552783216 741.7010295925005 191.36693223523821 105.36639262865447 94.174668509325215 233.70599720585824 47.151917510278281 329.34046085494288 1021.3615542954483 184.28077251935838 515.64107664261996 622.54676364432817 14.068312288741849 329.16552300041258 2658.8570047181456 31.132242975203553 621.08637797839947 2.706798580067697 59.809559726574889 1094.1202878137935 1178.2806956648042 -leaf_count=1760353 169634 122995 49 16970 10111 83231 1020485 11161 552 16355 1095481 81043 125456 53264 51224 135352 110840 18013 12764 637531 1935109 39517 26841 98338 1610 30089 137 7784 172650 14591 -internal_value=0 -0.00709395 0.00851128 -0.00474766 0.00571937 -0.00580394 -0.00325044 -0.0110186 0.00196075 0.00215154 -0.0164442 -0.00580614 0.0112045 -0.0199043 -0.0230601 -0.0139651 -0.0306641 0.0153799 -0.0012993 -0.00601024 -0.0288859 -0.0466017 0.00456624 0.00187147 -0.0122162 0.0160159 0.0697698 0.0195488 -0.00870647 0.022618 -internal_weight=0 8605.97 7172.86 7503.36 5987.84 7215.58 5819.12 2336.35 3482.78 4372.88 1396.46 654.761 296.733 358.027 1102.61 2078.84 376.492 1614.96 2827.07 1794.04 868.901 246.355 3743.72 2988.02 629.16 655.703 34.6162 90.9418 1609.76 1185.03 -internal_count=7859530 7496204 363326 3710001 348686 3693031 2214792 1277838 936954 320562 1478239 382758 206499 176259 3786203 1266677 246192 28124 906176 822945 3734979 1799870 141534 125179 179028 30778 689 9394 810181 14640 -shrinkage=0.12 - - -Tree=81 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 1 2 5 6 1 0 12 7 3 12 10 7 5 11 2 0 4 7 2 7 3 0 11 2 11 3 0 -split_gain=64.2666 33.1865 22.2215 12.9964 11.2877 13.5486 11.9492 13.7416 11.2926 11.1852 12.2842 10.9793 10.5889 11.8465 12.8215 10.4358 8.93929 8.93288 11.4215 8.77171 8.6655 17.0623 8.46487 8.43255 8.13339 7.84093 7.79768 7.45335 7.38186 7.47759 -threshold=0.84523809523809534 34.326487000000007 35.449802500000011 1.5000000000000002 94824000.000000015 1.0000000180025095e-35 1.0000000180025095e-35 1.5000000000000002 28.640210000000003 0.21980676328502416 2.5000000000000004 1.0000000180025095e-35 0.93725490196078443 4.5000000000000009 7.5000000000000009 1.0000000180025095e-35 0.05634920634920635 315144000.00000006 63.388565000000007 352.50000000000006 1.0000000180025095e-35 662385600.00000012 1.5000000000000002 36.500000000000007 45.25187300000001 1.5833333333333337 284385600.00000006 0.14907407407407411 21.500000000000004 29.087282000000002 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 4 11 27 28 6 9 8 -8 10 -6 25 13 14 17 26 -16 18 22 -7 21 -9 -5 -17 -19 -2 -4 -3 29 -1 -right_child=2 3 15 12 5 19 7 20 -10 -11 -12 -13 -14 -15 16 23 -18 24 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.011719676163558934 -0.002657988091754643 -0.067284006919081277 0.015656049480002331 0.029571668789124268 -0.019047845673002477 -0.024663439630508384 -0.1057469654614718 -0.022551766754157005 0.00018227230102989969 0.0073319037294867235 -0.071002854420259331 0.010035156212861121 -0.17321481001746381 0.028224048763441048 -0.090612577468582492 0.020258994763000079 -0.013901129229789134 -0.010508567745975644 0.045618116826148497 0.14686597142860747 0.0073314617524465444 0.10051631468624479 0.0038547885009217299 0.057709059141513641 0.0074068948738441297 0.10477705538875338 -0.0095148152549864255 -0.011032713873730619 0.041989128281906395 0.010637067505482474 -leaf_weight=935.05442483194031 2322.9412180501768 35.492287363580317 425.05936899512631 217.01021246257005 395.2633058322308 1942.0449857807089 25.920870444260274 25.998764014942907 32.819326724811461 182.02656703646352 78.537268069317918 1926.6182213840912 4.8518190947361282 262.11378462209177 23.176810146773903 1806.3866324656567 381.61409850259525 794.58088451336437 124.47489833574946 4.2732008825721541 319.38439391668152 43.06839878655623 1222.2317436801663 90.91979931689275 674.74776252976687 9.7936145376625046 303.92407031297444 752.55890602594513 46.789492281122421 279.89462127113472 -leaf_count=981111 515225 102478 12839 10877 879445 3346820 295355 4778 56841 88619 464852 60831 136 3110 18094 39435 81562 98515 2031 2175 315078 8563 76778 913 24658 1321 10852 215538 3363 137337 -internal_value=0 -0.00679206 0.00868427 0.000424923 -0.0143133 -0.0182631 -0.0076375 0.00748764 -0.0465923 -0.0179508 -0.0276639 0.00333125 0.00340159 0.00363459 0.00175957 0.0173657 -0.0182997 0.00443684 0.0107495 -0.0242846 0.0156684 0.0542005 0.00773294 0.0220545 -0.00228141 -0.0022056 0.00516198 -0.0135686 -0.00476744 -0.00656909 -internal_weight=0 8803.93 6885.64 4492.85 4311.08 3049.34 1103.02 447.192 58.7402 655.827 473.801 4259.35 3704.8 3699.95 3437.84 2626.29 404.791 3033.05 1563.72 1946.32 388.452 69.0672 1439.24 1897.31 1469.33 2332.73 728.983 788.051 1261.74 1214.95 -internal_count=7859530 7218114 641416 633777 6584337 5462526 2113531 680615 352196 1432916 1344297 577377 315761 315625 312515 64039 99656 212859 89686 3348995 328419 13341 87655 40348 123173 516546 23691 318016 1121811 1118448 -shrinkage=0.12 - - -Tree=82 -num_leaves=31 -num_cat=0 -split_feature=12 1 1 0 2 7 0 12 0 4 2 2 7 2 2 11 11 2 0 3 7 7 7 0 0 0 0 0 2 0 -split_gain=60.8163 20.3824 18.6561 15.0984 13.2907 14.2464 17.9023 11.7011 11.3369 10.3377 9.38306 12.9093 13.1101 12.4599 14.4036 10.4461 9.85697 9.61119 9.36386 9.3582 9.33142 9.04639 7.95808 10.0168 7.79405 7.7876 8.96451 7.77763 7.67795 7.44511 -threshold=0.45804195804195807 1.5000000000000002 1.5000000000000002 48.846755000000009 347112000.00000006 1.0000000180025095e-35 27.946536000000005 0.25543478260869573 30.077133500000006 339.50000000000006 221140800.00000003 662990400.00000012 1.5000000000000002 252158400.00000003 434980800.00000006 0.96666666666666679 0.82575757575757591 220708800.00000003 25.373452000000004 10.500000000000002 2.5000000000000004 1.0000000180025095e-35 4.5000000000000009 48.846755000000009 22.481851500000001 26.127514000000005 24.985583500000004 5.2224168000000004 126100800.00000001 22.372344000000002 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 18 9 10 5 8 20 -6 -3 24 16 12 -12 -14 25 -13 -4 -18 21 -17 -7 -1 23 28 -2 26 -15 -23 -8 -21 -right_child=2 4 3 -5 7 6 22 -9 -10 -11 11 15 13 14 -16 19 17 -19 -20 29 -22 27 -24 -25 -26 -27 -28 -29 -30 -31 -leaf_value=-0.025365924225103417 -0.050335290245314114 0.005217710470552619 -0.0043283069249798476 0.020858620739162788 -0.016657906874846959 -0.010163054334007505 0.014476320919812595 0.0035272148385459778 0.037799738688980448 0.10428830706389249 -0.014026877952940232 -0.011469168639210086 -0.066732497763545853 0.0067617660726844728 -0.0062298271283038392 0.019678371153816453 0.015647278231241749 0.049808699010176885 -0.016707776989633522 -0.13601522814992451 -0.033178976808420226 0.068237126458045888 -0.0099431772047191471 0.027623273438679468 -0.0055447472527068425 0.024218700843075862 -0.071707958972630409 -0.086100811412305703 -0.0040967282331729289 0.078449644420429399 -leaf_weight=130.8125537727656 59.460168193403206 1132.1583947002218 322.62643615950583 1569.6111064094621 1812.6543471958207 1084.1556720474246 474.47580646612096 535.77254706151098 177.92336228778004 11.871768796059767 766.85415633147772 139.70617568981288 33.654920188403139 130.53428977246813 637.20637346862418 466.52851324642688 1177.71664002129 131.85631416816614 876.58527661413575 2.4018477955833069 331.12785141472295 4.9924054337757999 635.66362729505499 256.88705333415055 938.75610694091165 615.20133893405728 24.944903637369862 75.477005020283073 987.55650012026581 58.021338208898669 -leaf_count=325245 39265 133593 11600 14858 1714917 796680 40244 79021 3415 163 47732 6471 1085 7213 21810 16892 24802 2805 1255159 51 635376 16466 171931 6543 154548 12009 1069 2189560 128442 565 -internal_value=0 -0.00683423 0.00821254 0.0107227 -0.00458758 -0.00113638 -0.00488258 -0.0120529 0.00964347 -0.00688887 0.00719284 0.00306742 -0.0013506 0.00539293 0.00711844 0.0177021 0.0144594 0.0190879 -0.0221746 0.0254363 -0.0155486 -0.0448505 0.00152862 0.00577103 -0.00821419 0.0181547 -0.00583923 -0.0765037 0.00193099 0.0698613 -internal_weight=0 8516.24 7086.95 6076.86 7428.38 5079.95 3769.87 2348.43 1310.08 1010.09 4507.25 2875.05 2208.4 1441.54 1407.89 666.658 1632.2 1309.57 1087.87 526.952 1415.28 211.282 2354.58 1718.92 998.216 770.681 155.479 80.4694 1462.03 60.4232 -internal_count=7859530 7496592 362938 168962 3710162 1916224 1779216 1793938 137008 193976 154104 114897 90918 43186 42101 23979 39207 27607 3786430 17508 1432056 2531271 347160 175229 193813 20291 8282 2206026 168686 616 -shrinkage=0.12 - - -Tree=83 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 7 9 0 3 0 2 2 2 7 10 9 0 0 3 8 2 6 2 9 9 3 4 11 7 0 2 0 -split_gain=58.6668 24.0472 24.0084 14.4008 17.624 15.0954 12.1693 12.0929 10.7726 10.2311 9.78831 8.85911 8.53901 8.5162 8.44728 9.34669 8.05616 8.95235 7.95889 6.93752 9.29246 10.4108 18.8591 7.74439 6.87851 8.11236 6.78146 11.9885 8.25889 9.37947 -threshold=0.70714285714285718 30.264538000000005 45.25187300000001 1.5000000000000002 7.5000000000000009 26.619919000000003 3.5000000000000004 30.880862000000004 95083200.000000015 284040000.00000006 33998400.000000007 8.5000000000000018 4.5000000000000009 21.500000000000004 17.967157500000003 18.129539500000003 32.500000000000007 4.5000000000000009 284212800.00000006 1.0000000180025095e-35 71496000.000000015 3.5000000000000004 26.500000000000004 33.500000000000007 1.0000000180025095e-35 0.36931818181818188 1.0000000180025095e-35 26.418316500000003 662385600.00000012 21.263607000000004 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=2 10 3 7 12 9 18 19 -9 -6 -2 13 24 -7 -12 -16 -4 -18 -3 20 23 -22 -23 -1 -5 -26 27 28 -21 -30 -right_child=1 6 16 4 5 11 -8 8 -10 -11 14 -13 -14 -15 15 -17 17 -19 -20 26 21 22 -24 -25 25 -27 -28 -29 29 -31 -leaf_value=-0.00058863102598219182 0.020661952436687843 0.015408162209957228 0.0029722641710409627 -0.011096666155336854 -0.041993932137339207 -0.09493875160684527 0.022873750819387095 0.044547689585246672 0.0030602525847953591 -0.098922024618786408 -0.015651093225726897 -0.082950867038544956 0.035401860610141923 -0.013625154872704544 0.066914704517854348 -0.00018161944126915687 0.066692544535327011 -0.085042736156195217 0.0035129372271935568 0.0051968467096522924 0.043440157011412066 -0.11466885260439101 -0.019178825856764212 0.11182366358743459 -0.10928231938571857 -0.02390773224220331 -0.0054686988094401947 -0.33145671496149731 0.0055782502194714877 0.11636272515573577 -leaf_weight=410.69510237626196 293.52892579611125 1506.5820832677293 1746.2542647412129 2547.1902426075953 243.34558774665365 19.160054488420769 1266.768230983821 115.63181192328148 408.24403967811372 55.911319016794579 558.1941157091992 30.244472946440851 55.365507957974842 554.85512785236017 30.207896584252921 2649.2311937400059 49.135791058113682 6.2928714717418179 1751.7626644765094 53.125521097666272 35.583369796839293 30.951392230320948 771.04608438091145 8.9889471711940114 21.650033013357152 61.564554330102546 192.84473716507404 1.2542168807576661 17.730712083765532 28.994301087121499 -leaf_count=215514 29179 57242 157397 1651282 1088993 24826 17774 13196 60353 1177769 182719 81162 4200 481788 6129 348770 955 33 66992 18029 65915 100911 1506454 337 157275 78016 252644 286 6236 7154 -internal_value=0 0.00710194 -0.00766337 -0.0115011 -0.0161017 -0.0305991 0.0128934 -0.00354341 0.0122195 -0.0526389 -0.000319754 -0.0196819 -0.0112244 -0.0163441 -0.00222216 0.000575563 0.00440231 0.0494292 0.0090131 -0.00886701 -0.0127473 -0.0200497 -0.0228682 0.00182688 -0.0122062 -0.0461511 0.0077292 0.0328967 0.0375715 0.074354 -internal_weight=0 8056.28 7466.06 5664.38 3589.29 903.517 4525.11 2075.09 523.876 299.257 3531.16 604.26 2685.77 574.015 3237.63 2679.44 1801.68 55.4287 3258.34 1551.21 1257.26 837.581 801.997 419.684 2630.4 83.2146 293.949 101.105 99.8505 46.725 -internal_count=7859530 708805 7150725 6992340 4745311 2854538 142008 2247029 73549 2266762 566797 587776 1890773 506614 537618 354899 158385 988 124234 2173480 1889131 1673280 1607365 215851 1886573 235291 284349 31705 31419 13390 -shrinkage=0.12 - - -Tree=84 -num_leaves=31 -num_cat=0 -split_feature=11 0 3 11 0 7 11 3 0 7 2 3 2 0 0 11 1 4 0 3 1 5 6 0 2 3 3 0 0 2 -split_gain=56.7825 26.3785 20.0484 16.1 15.6353 11.7601 10.8664 8.82235 8.1652 8.30674 7.71521 7.6442 7.56889 8.52566 7.65268 7.40057 7.37402 8.23485 9.51931 7.28956 7.19698 7.05726 7.68604 7.04535 6.83974 6.44492 6.3361 6.32393 7.06361 6.31715 -threshold=0.76388888888888895 28.781668500000006 8.5000000000000018 0.43303571428571436 35.82988550000001 1.5000000000000002 0.24068965517241384 1.0000000180025095e-35 63.388565000000007 4.5000000000000009 7905600.0000000009 14.500000000000002 125755200.00000001 28.502720500000006 33.324993000000006 0.070197044334975381 1.5000000000000002 7.5000000000000009 33.981020000000008 21.500000000000004 1.5000000000000002 1.0000000180025095e-35 1.0000000180025095e-35 63.388565000000007 1041768000.0000001 24.500000000000004 125.00000000000001 26.619919000000003 27.699832000000004 473083200.00000006 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 5 4 8 16 -1 29 20 9 11 -6 -3 26 -14 -15 -11 17 27 -19 -13 24 22 -12 -16 -5 -21 -4 -2 -29 -7 -right_child=2 3 12 7 10 6 -8 -9 -10 15 21 19 13 14 23 -17 -18 18 -20 25 -22 -23 -24 -25 -26 -27 -28 28 -30 -31 -leaf_value=-0.0090424468372374486 -0.033720337995548404 -0.0073159914331062791 0.035946601875305087 -0.020765474029274394 0.12353686647191478 -0.042892942772073332 -0.020508050777776107 0.010964388542922547 0.0094714206765032071 -0.063804108849466315 -0.012500216727103223 0.093601762458044982 -0.0015246517144379271 0.050397176671582611 0.013196256599385952 -0.017616622598212305 0.0023787596470264852 0.042629179746852222 -0.15084959889739705 -0.17256281308900895 0.0024563427448476933 0.016269223703686844 0.015587709401494456 0.050112939089091715 0.023796206645474851 0.019337966017751861 0.10385672938148525 0.048302708950678584 -0.012924131380678898 -0.10608787403961169 -leaf_weight=1373.9289024200441 208.94536591806343 1046.64577894537 168.60599824221208 391.49479704324852 9.001845841019529 156.20892399870837 1087.5889318518359 1324.4253190392967 286.07400697210051 52.707622315928802 297.10854669370156 21.101627401769747 245.90575887543855 132.49289741458324 514.44379546634173 948.76837959510544 3332.2053824908294 54.423202598507316 3.8966711800894691 2.6884340990327464 1332.4294017026057 1695.2621349626856 265.73849254280867 87.01641899124661 56.769109873337186 34.525310214798083 22.399684150390385 30.7357993762474 229.80917342209838 26.663774977474247 -leaf_count=2129220 264843 380153 1840 142812 233 1043036 2178059 56093 21902 88053 15423 1149 4265 1590 6487 517585 233732 20200 252 328 101207 38044 6605 534 14073 1680 202 13215 51532 525183 -internal_value=0 -0.00688969 0.00768649 -0.00215252 0.00493699 -0.016738 -0.0250599 0.00354773 -0.00955055 -0.012134 0.0128467 -0.00495966 0.0220741 0.0178133 0.0242922 -0.0200493 0.000291298 -0.0128868 0.0296309 0.0373138 -0.00196865 0.0124038 0.000761136 0.0185394 -0.0151209 0.00534664 0.0439256 -0.0181699 -0.00569663 -0.052123 -internal_weight=0 8142.02 7297.99 5497.63 6127.13 2644.39 1270.46 3105.12 2392.51 2106.44 2267.11 1104.96 1170.86 979.859 733.953 1001.48 3860.02 527.81 58.3199 58.3154 1780.69 2258.11 562.847 601.46 448.264 37.2137 191.006 469.49 260.545 182.873 -internal_count=7859530 7200533 658997 1325035 644079 5875498 3746278 314185 1010850 988948 60305 383310 14918 12876 8611 605638 583774 350042 20452 3157 258092 60072 22028 7021 156885 2008 2042 329590 64747 1568219 -shrinkage=0.12 - - -Tree=85 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 3 7 0 7 12 3 5 1 11 7 2 0 3 0 0 0 2 0 2 3 2 11 4 3 2 2 2 -split_gain=54.7078 29.9131 20.3438 13.2121 12.897 11.5658 11.5089 18.407 10.7681 10.2615 9.67515 9.02388 8.23889 10.2189 13.3435 8.06886 9.00466 9.99108 8.05882 8.78592 11.8559 8.02821 7.60742 7.4405 7.12848 7.08518 7.06927 7.06847 7.05477 7.0385 -threshold=0.90454545454545465 43.939336500000003 24.763925500000003 2.5000000000000004 3.5000000000000004 21.973876500000003 3.5000000000000004 0.23303167420814483 12.500000000000002 1.0000000180025095e-35 1.5000000000000002 0.29705882352941182 1.0000000180025095e-35 157982400.00000003 12.226027000000002 34.500000000000007 23.675172500000002 22.795642500000003 12.843794500000001 126360000.00000001 1.0000000180025095e-35 662385600.00000012 45.500000000000007 599486400.00000012 0.31414473684210531 1.0000000180025095e-35 1.0000000180025095e-35 252590400.00000003 307368000.00000006 220708800.00000003 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 5 15 4 -4 12 8 10 25 -9 -8 -3 18 -14 24 -2 17 23 19 -1 -21 -10 28 -17 -15 -7 -27 -5 -12 -13 -right_child=2 11 3 27 -6 6 7 9 21 -11 22 29 13 14 -16 16 -18 -19 -20 20 -22 -23 -24 -25 -26 26 -28 -29 -30 -31 -leaf_value=0.013232532615200536 -0.0034411999241077797 -0.0097153374693075816 0.003900241337403897 0.031219422922080416 0.021691461981082061 -0.0047819863047386946 -0.061020395535272644 0.017433201965535224 0.0120499846800257 -0.011927249085764735 -0.012463147301792864 0.017328847358966778 -0.015288330212087038 -0.042360968197663898 -0.054046514311983263 0.041424106154800085 0.099272893162686629 -0.21805958034642026 0.026210780160843074 0.089054367991758546 -0.048368609300802869 0.07530713676651106 -0.1615208197664135 -0.079742538335875052 0.011309662480544295 -0.05975751357373011 0.068716756874999119 0.014406697034029 -0.038384759096531426 0.002773190663645112 -leaf_weight=85.081796444740363 1911.3883827260015 491.73706368040325 2388.4651058171467 663.80163398863624 777.7811273638381 2972.0341618548919 120.68231687964203 228.67037636550992 177.45583744590601 684.32119550053801 382.16221018998658 781.16290980699887 593.69123739603765 59.083792325642094 296.59076554799651 43.518509522080421 22.832629853626713 2.6118700054939827 93.496084940975322 9.8176172816299623 110.55152036749 34.483520050011634 5.7086190957434146 8.7384301461279374 89.70155381639006 55.718670798187446 6.9093706675369893 787.20144604172947 250.17459532178145 1234.1999218996782 -leaf_count=20578 421899 125548 182916 8132 10404 1797352 834041 39369 10413 103900 315862 27427 759615 125279 2112449 601 124 63 122902 1891 90018 2919 1484 139 70812 263105 3474 14590 351626 40598 -internal_value=0 -0.00621605 0.0082457 0.0126164 0.00827078 -0.0106542 -0.00796298 -0.0160524 -0.00379751 -0.00457322 -0.0298648 0.00485904 -0.0205462 -0.0255968 -0.0393362 -0.00189997 0.0359995 0.00962965 -0.00299041 -0.0162811 -0.0371406 0.0223514 -0.0239694 0.0211284 -0.0100076 -0.00562394 -0.0455576 0.0220986 -0.02272 0.0084152 -internal_weight=0 8763.44 6606.34 4617.25 3166.25 6256.34 4918.32 1671.72 3246.6 912.992 758.728 2507.1 1338.01 1039.07 445.376 1989.09 77.7014 54.8688 298.947 205.451 120.369 211.939 638.045 52.2569 148.785 3034.66 62.628 1451 632.337 2015.36 -internal_count=7859530 7220662 638868 216042 193320 7027089 3723545 1646282 2077263 143269 1503013 193573 3303544 3068155 2308540 422826 927 803 235389 112487 91909 13332 668972 740 196091 2063931 266579 22722 667488 68025 -shrinkage=0.12 - - -Tree=86 -num_leaves=31 -num_cat=0 -split_feature=11 0 3 0 7 11 1 1 2 6 0 11 7 2 11 8 7 2 12 2 10 0 0 3 2 11 2 5 0 2 -split_gain=52.7484 26.0227 17.8432 13.8479 11.4169 13.806 8.7711 8.62771 8.99559 8.27706 7.42197 6.65437 6.30666 6.17513 5.89228 6.07223 5.81053 8.45554 8.75385 8.43542 6.66995 13.1331 11.9214 12.5519 6.48172 6.05597 6.14772 7.64405 5.72771 9.08361 -threshold=0.76388888888888895 36.697481500000002 8.5000000000000018 32.751201500000008 1.5000000000000002 0.24068965517241384 1.5000000000000002 1.5000000000000002 157464000.00000003 1.0000000180025095e-35 19.501774000000001 0.43303571428571436 11.500000000000002 31752000.000000004 1.5833333333333337 5.5000000000000009 1.5000000000000002 2303899200.0000005 0.70294117647058829 1514548800.0000002 1.5000000000000002 63.388565000000007 45.25187300000001 5.5000000000000009 189604800.00000003 0.90454545454545465 158068800.00000003 1.0000000180025095e-35 41.85668350000001 284212800.00000006 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 4 3 14 10 9 -3 -5 -9 -6 -1 -8 -11 -4 -2 -16 19 25 -19 20 21 22 28 -24 -22 26 27 -18 -10 -30 -right_child=2 6 13 7 5 -7 11 8 16 12 -12 -13 -14 -15 15 -17 17 18 -20 -21 24 -23 23 -25 -26 -27 -28 -29 29 -31 -leaf_value=-0.01553178632915898 -0.0006580019144813759 -0.011823091478029717 0.076997698882207796 -0.0048105203846519982 -0.056775767917201417 -0.01410838874845609 -0.0027845895747887392 0.02882368226114497 -0.0033528468169715161 -0.013034998459755207 0.00036328868377749759 0.0089560030896528829 -0.07919124565764786 0.019783039301034276 0.091999360536179714 -0.19261792701960107 -0.22710572513839145 -0.15099425605963671 0.019986765119684544 0.05724656697764894 -0.18834867334033734 -0.19848861979391819 0.038438045931519803 -0.20026666964669607 -0.034295811210107816 0.020401728146476561 0.0040665057153883351 -0.015280669494314765 -0.11100853919655448 -0.006417308497941491 -leaf_weight=657.07744338974203 3342.2143350942561 614.69561079545747 27.814622452075582 411.5234378394739 186.71882157283818 2370.0973550993017 1206.0159627835474 472.1725721538694 308.50599024869939 167.33298936954796 1187.4231454452695 1641.0891846717104 23.660868635385583 1118.2406359434503 15.087174203137694 1.1346233028234554 3.7011273461683896 8.9239893192861945 8.3049940355122072 34.924716419598553 4.4850500726606688 4.7256710225337875 129.57511671327848 3.2222863803617647 30.69646254874533 974.0585317010167 276.72173478202808 7.1764464792795479 19.509678042551968 30.823492199226166 -leaf_count=1038091 556723 232242 181 37855 1048241 2584830 174395 5514 18408 805667 1188084 58248 70735 14737 1580 24 41 155 139 1388 171 216 2818 110 1993 11075 3785 124 538 1422 -internal_value=0 -0.00668007 0.00743785 0.00485181 -0.0126023 -0.0175044 0.00117613 0.0112009 0.0140441 -0.0388108 -0.00529927 0.00398278 -0.0212418 0.0211736 -0.000307509 0.0717732 0.010262 0.0147434 -0.0686837 0.000144395 -0.00361048 -3.03089e-05 0.00188929 0.032602 -0.0540787 0.0158843 0.000583851 -0.0877812 -0.0094785 -0.047 -internal_weight=0 8054.11 7233.54 6087.49 4592.31 2747.81 3461.8 2729.05 2317.53 377.713 1844.5 2847.11 190.994 1146.06 3358.44 16.2218 1845.36 1278.89 17.229 566.468 531.544 496.362 491.637 132.797 35.1815 1261.66 287.599 10.8776 358.839 50.3332 -internal_count=7859530 7200533 658997 644079 6735648 4509473 464885 85752 47897 1924643 2226175 232643 876402 14918 558327 1604 42383 15319 294 27064 25676 23512 23296 2928 2164 15025 3950 165 20368 1960 -shrinkage=0.12 - - -Tree=87 -num_leaves=31 -num_cat=0 -split_feature=12 3 1 2 0 7 0 0 1 3 0 9 7 3 12 4 3 2 2 0 3 4 2 11 0 2 0 4 11 0 -split_gain=51.3241 25.3471 19.9698 14.9897 15.8289 13.5843 14.2822 12.2755 11.4853 10.2589 9.59236 9.22261 9.05597 11.995 10.7313 8.69393 8.61428 8.55579 8.84696 8.95856 8.50142 8.43959 8.34915 7.86258 7.77129 10.268 7.4139 7.16247 7.07673 7.06983 -threshold=0.51666666666666672 26.500000000000004 1.5000000000000002 59054400.000000007 45.25187300000001 1.5000000000000002 24.163214500000006 24.357912500000001 1.5000000000000002 4.5000000000000009 25.135713500000005 5.5000000000000009 3.5000000000000004 17.500000000000004 0.17519181585677754 1.0000000180025095e-35 1.0000000180025095e-35 252244800.00000003 567691200.00000012 23.009312500000004 11.500000000000002 339.50000000000006 315144000.00000006 1.0333333333333334 17.719184000000002 3660379200.0000005 24.290553500000005 10.500000000000002 0.55050505050505061 17.456895000000003 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 2 7 9 5 24 11 21 15 -4 26 -7 -6 14 -14 23 27 -3 -19 -20 -16 -1 -12 -2 29 -26 -10 -9 -8 -5 -right_child=8 17 3 4 12 6 28 16 10 -11 22 -13 13 -15 20 -17 -18 18 19 -21 -22 -23 -24 -25 25 -27 -28 -29 -30 -31 -leaf_value=-0.044819382776132552 -0.01004142607194544 0.035951175355030916 0.010030564233251662 -0.011459580968949992 0.016875787372390479 -0.019612030176508873 -0.014137323983933454 -0.019661634297496823 0.0029796665609950349 0.07187817932580326 0.023520209286993842 -0.052431127980858652 -0.021017559480029153 -0.12543041430961563 0.0066420676508895824 0.021691203486932667 0.018007803478022045 -0.022611262114178802 -0.076050259094435177 0.055093437957287522 0.09546645226472035 0.14646727453896499 0.010866678849380522 -0.15499242356031004 -0.00050692868047749209 0.094664367789010953 -0.046188904621165504 0.016065041158595545 -0.00060274698716726528 -0.095263562163465307 -leaf_weight=253.03061360383217 452.21501174912646 291.81319118356458 649.46052140443726 827.4903151300739 677.39667039281017 368.78523781196839 1529.947638078957 974.20479724579047 331.71338402402762 41.033826375914487 1372.6239654526289 185.25110914280947 245.48682409866592 11.15455754312279 515.60722690909461 147.94023704275332 114.01241308815088 91.885073739586801 8.7285466742923159 52.313250513093408 15.968092710249037 3.3370264689853277 1657.9879086392393 5.4239024524649713 3363.9110718872125 16.373957518744646 50.911879862242131 88.091509258730298 874.13046114812005 14.72498649565682 -leaf_count=2322534 46320 12425 64795 520966 20186 365967 809471 1476846 13524 1186 15361 1086377 44595 342 14365 9598 28467 4333 545 2124 183 1858 27947 2698 779608 2499 1604 92082 67945 22779 -internal_value=0 -0.00416981 -0.0053292 -0.00330499 -0.00466378 -0.00698342 -0.0132192 -0.0185206 0.0116354 0.0137089 0.0143375 -0.0305879 0.00670097 -0.00204361 -0.000267646 -0.00359447 -0.0133344 0.0239033 0.000911133 0.0363127 0.00931552 -0.0423126 0.0165979 -0.0117694 -0.0026148 -4.50869e-05 -0.00356578 -0.0166986 -0.00921618 -0.0129281 -internal_weight=0 11214.1 10769.4 9336.72 8646.23 7180.61 2958.11 1432.68 4018.82 690.494 3413.24 554.036 1465.61 788.217 777.062 605.579 1176.31 444.74 152.927 61.0418 531.575 256.368 3030.61 457.639 4222.5 3380.29 382.625 1062.3 2404.08 842.215 -internal_count=7859530 7742478 7723051 3801264 3735283 3655612 2329760 3921787 117052 65981 58436 1452344 79671 59485 59143 58616 1597395 19427 7002 2669 14548 2324392 43308 49018 1325852 782107 15128 1568928 877416 543745 -shrinkage=0.12 - - -Tree=88 -num_leaves=31 -num_cat=0 -split_feature=11 0 0 1 0 7 1 7 12 11 5 11 2 3 0 0 7 6 2 0 0 2 2 2 0 0 10 2 0 2 -split_gain=51.4684 19.9126 19.7058 12.1798 11.1703 12.7486 11.0276 8.3619 8.0813 8.03335 7.78998 7.98773 7.74335 8.36467 8.37417 8.24335 7.1 9.56481 7.11736 8.81709 7.44353 7.09713 8.42806 7.05027 6.93269 16.4209 6.85661 6.71177 9.63933 7.29694 -threshold=0.70714285714285718 30.264538000000005 55.906434000000004 1.5000000000000002 28.355377000000004 2.5000000000000004 1.5000000000000002 4.5000000000000009 0.63961038961038974 0.4188596491228071 1.0000000180025095e-35 1.1714285714285715 189172800.00000003 5.5000000000000009 63.388565000000007 30.880862000000004 1.0000000180025095e-35 1.0000000180025095e-35 220622400.00000003 23.117341500000006 12.843794500000001 688910400.00000012 662385600.00000012 33998400.000000007 23.117341500000006 1.0000000180025095e-35 3.5000000000000004 860241600.00000012 40.27922800000001 820324800.00000012 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=2 23 3 9 5 8 -3 -6 16 -1 11 -8 -12 27 15 -15 17 18 -5 20 -20 22 -19 -2 25 -24 -9 28 -14 -30 -right_child=1 6 -4 4 7 -7 10 26 -10 -11 12 -13 13 14 -16 -17 -18 21 19 -21 -22 -23 24 -25 -26 -27 -28 -29 29 -31 -leaf_value=-0.033715768415343517 0.017886968603154616 -0.0035797624908090932 0.010038711043984001 0.012666250124592221 0.00047045424932427388 -0.0322696970125134 0.0064499627213019288 -0.016863353425421376 -0.18816295483446735 -0.011044115207392121 0.028063390960059116 -0.095219220307436458 -0.0053564714970675683 0.11407091869461834 0.068543188666299215 0.018660778898766179 -0.013009952802534532 0.007750506587895693 -0.038487891867401917 -0.11381464396970033 0.031282671857256562 -0.21562506453002125 0.16141448193312996 -0.0017407688685925687 0.12239691014754644 -0.086197089101189936 0.013909767638593612 0.029357434965632603 0.016458733896746142 -0.083423776267297217 -leaf_weight=454.17806931704803 287.40659051001148 566.84486227443267 836.69905155315791 142.41622550836817 2476.6740630804547 446.79161732232114 1004.2630638555638 807.3828010767354 3.6062648850638643 446.18002829197354 746.47230281783141 11.222512887063202 580.80028492347208 13.397858005977353 61.401346306316555 453.22315909537849 1336.1333854708382 41.276922727318365 64.284415200330287 14.833146396904338 33.455037038212666 1.4893442984375713 6.7786822585910604 3168.2842978350127 25.883125248331922 8.8666887936633412 119.69951940607075 210.62857169193012 765.37118031739749 10.649985548807306 -leaf_count=2508014 29179 63978 51358 30820 318433 1200391 21484 289319 1117 1046594 10029 626 22697 117 380 6563 1586801 8125 59663 4362 31148 1560 198 537618 6821 1333 4668 4628 11378 128 -internal_value=0 0.00671734 -0.00728432 -0.00953853 -0.00743098 -0.0142556 0.0120486 -0.00316856 -0.00946156 -0.0224814 0.0143451 0.0053236 0.0175686 0.0138297 0.0268922 0.0214074 -0.00907355 0.00642818 -0.0051573 -0.0277033 -0.014604 0.0414632 0.0461637 -0.000108207 0.084311 0.0211894 -0.0128898 0.009429 0.00633479 0.0150848 -internal_weight=0 7879.97 7266.63 6429.93 5529.57 2125.81 4424.28 3403.76 1679.02 900.358 3857.43 1015.49 2841.94 2095.47 528.022 466.621 1675.42 339.284 254.989 112.573 97.7395 84.2948 82.8054 3455.69 41.5285 15.6454 927.082 1567.45 1356.82 776.021 -internal_count=7859530 708805 7150725 7099367 3544759 2932339 142008 612420 1731948 3554608 78030 22110 55920 45891 7060 6680 1730831 144030 125993 95173 90811 18037 16477 566797 8352 1531 293987 38831 34203 11506 -shrinkage=0.12 - - -Tree=89 -num_leaves=31 -num_cat=0 -split_feature=12 1 3 2 7 0 2 2 10 0 0 0 0 0 7 1 3 2 3 0 3 9 7 0 7 0 7 0 2 3 -split_gain=50.5262 15.2936 13.6322 12.2217 11.9056 17.6424 10.8148 12.2427 10.7197 10.4104 13.0279 9.48102 10.0766 13.2972 9.20108 8.45929 8.12087 12.7922 12.2465 7.88639 7.69195 7.97147 7.59368 7.40948 7.34151 7.07508 7.17952 7.00958 9.41519 7.077 -threshold=0.45804195804195807 1.5000000000000002 1.0000000180025095e-35 410011200.00000006 1.0000000180025095e-35 34.326487000000007 630763200.00000012 536241600.00000006 11.500000000000002 14.586804000000003 10.546794500000003 29.729864000000003 25.452091500000005 24.763925500000003 4.5000000000000009 1.5000000000000002 3.5000000000000004 189086400.00000003 78.500000000000014 25.373452000000004 1.5000000000000002 6.5000000000000009 6.5000000000000009 63.388565000000007 1.0000000180025095e-35 55.906434000000004 2.5000000000000004 48.846755000000009 410184000.00000006 19.500000000000004 -decision_type=2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -left_child=1 19 8 4 11 -6 7 22 9 10 -2 12 13 -3 -7 -11 20 18 -18 24 -14 -22 27 -4 -1 -8 -27 28 -5 -29 -right_child=2 3 23 6 5 14 25 -9 -10 15 -12 -13 16 -15 -16 -17 17 -19 -20 -21 21 -23 -24 -25 -26 26 -28 29 -30 -31 -leaf_value=-0.024039501752680055 0.0056600820948953948 0.0051800755683082235 0.011320726805269578 -0.1057818276150601 -0.011798338638578317 0.010913594667893494 -0.0094655221112530507 -0.052562574215521962 0.041982627476958433 -0.0082064751031307118 -0.11964778784926063 0.033101230363778468 -0.022593056930848687 0.059066555209587188 -0.0078776942825447491 0.0055900860220714343 -0.13408894576746522 0.083837335865981674 0.14257879530984044 -0.014871280369823625 0.081323986410648752 -0.12821802124702977 -0.057416297042297067 0.030489763396140474 -0.07208183386389673 0.091085580451341894 0.008717926599248518 0.046390586164367024 -0.0093546765947546927 -0.20845154708038865 -leaf_weight=126.2495522538478 25.019865638886586 899.09618916358863 2951.3086282370214 15.387346436321989 2189.3047559944243 1109.5964175555871 1295.0810700818893 177.72963919228806 96.288514039311849 850.50725783196185 22.832622917369008 191.93236142855676 122.97936994073052 71.131984182913357 566.90438099464632 2584.8686525838198 9.4948037511676358 22.602495638653636 3.0120061915367833 841.75583012488653 3.0089439270377651 19.031939467116899 51.095926698399524 322.04164793128803 71.898174626444884 17.765576504301862 106.11460300795625 42.240178510963233 269.0560302443256 1.6003445091191668 -leaf_count=325245 1801 139774 64992 18186 1809240 73013 1081740 162916 615 187678 3214 4285 7092 2326 100743 102075 271 291 21 1255159 50 756 36096 2563 2206026 567 5506 1813 265361 115 -internal_value=0 -0.00634126 0.00761008 -0.00437242 -0.00132365 -0.00470445 -0.0124076 -0.026575 0.00249191 0.0013999 -0.0541676 0.00841299 0.0042931 0.00913245 0.00455934 0.00217438 -0.0217701 0.029995 -0.0672775 -0.0199425 -0.0343061 -0.0995404 -0.0143973 0.0132069 -0.04148 -0.00684474 0.0205494 -0.00769689 -0.0145816 0.0369517 -internal_weight=0 8224.07 6852.87 7184.17 5208.1 3865.81 1976.07 557.109 3579.52 3483.23 47.8525 1342.29 1150.36 970.228 1676.5 3435.38 180.13 35.1093 12.5068 1039.9 145.02 22.0409 379.38 3273.35 198.148 1418.96 123.88 328.284 284.443 43.8405 -internal_count=7859530 7496592 362938 3710162 2137862 1982996 1572300 484487 295383 294768 5015 154866 150581 142100 173756 289753 8481 583 292 3786430 7898 806 321571 67555 2531271 1087813 6073 285475 283547 1928 -shrinkage=0.12 - - -end of trees - -feature_importances: -Column_0=686 -Column_2=486 -Column_7=301 -Column_11=283 -Column_3=281 -Column_1=243 -Column_12=125 -Column_6=87 -Column_4=62 -Column_9=51 -Column_8=42 -Column_5=32 -Column_10=21 - -parameters: -[boosting: gbdt] -[objective: lambdarank] -[metric: ndcg] -[tree_learner: serial] -[device_type: cpu] -[data: ] -[valid: ] -[num_iterations: 120] -[learning_rate: 0.12] -[num_leaves: 31] -[num_threads: 16] -[deterministic: 0] -[force_col_wise: 0] -[force_row_wise: 0] -[histogram_pool_size: -1] -[max_depth: -1] -[min_data_in_leaf: 20] -[min_sum_hessian_in_leaf: 0.001] -[bagging_fraction: 1] -[pos_bagging_fraction: 1] -[neg_bagging_fraction: 1] -[bagging_freq: 0] -[bagging_seed: 3] -[feature_fraction: 1] -[feature_fraction_bynode: 1] -[feature_fraction_seed: 2] -[extra_trees: 0] -[extra_seed: 6] -[early_stopping_round: 200] -[first_metric_only: 0] -[max_delta_step: 0] -[lambda_l1: 0] -[lambda_l2: 0.03] -[min_gain_to_split: 0] -[drop_rate: 0.1] -[max_drop: 50] -[skip_drop: 0.5] -[xgboost_dart_mode: 0] -[uniform_drop: 0] -[drop_seed: 4] -[top_rate: 0.2] -[other_rate: 0.1] -[min_data_per_group: 100] -[max_cat_threshold: 32] -[cat_l2: 10] -[cat_smooth: 10] -[max_cat_to_onehot: 4] -[top_k: 20] -[monotone_constraints: ] -[monotone_constraints_method: basic] -[monotone_penalty: 0] -[feature_contri: ] -[forcedsplits_filename: ] -[refit_decay_rate: 0.9] -[cegb_tradeoff: 1] -[cegb_penalty_split: 0] -[cegb_penalty_feature_lazy: ] -[cegb_penalty_feature_coupled: ] -[path_smooth: 0] -[interaction_constraints: ] -[verbosity: -1] -[saved_feature_importance_type: 0] -[max_bin: 255] -[max_bin_by_feature: ] -[min_data_in_bin: 3] -[bin_construct_sample_cnt: 200000] -[data_random_seed: 1] -[is_enable_sparse: 1] -[enable_bundle: 1] -[use_missing: 1] -[zero_as_missing: 0] -[feature_pre_filter: 1] -[pre_partition: 0] -[two_round: 0] -[header: 0] -[label_column: ] -[weight_column: ] -[group_column: ] -[ignore_column: ] -[categorical_feature: ] -[forcedbins_filename: ] -[objective_seed: 5] -[num_class: 1] -[is_unbalance: 0] -[scale_pos_weight: 1] -[sigmoid: 1] -[boost_from_average: 1] -[reg_sqrt: 0] -[alpha: 0.9] -[fair_c: 1] -[poisson_max_delta_step: 0.7] -[tweedie_variance_power: 1.5] -[lambdarank_truncation_level: 30] -[lambdarank_norm: 1] -[label_gain: ] -[eval_at: 1,5,10,20] -[multi_error_top_k: 1] -[auc_mu_weights: ] -[num_machines: 1] -[local_listen_port: 12400] -[time_out: 120] -[machine_list_filename: ] -[machines: ] -[gpu_platform_id: -1] -[gpu_device_id: -1] -[gpu_use_dp: 0] -[num_gpu: 1] - -end of parameters - -pandas_categorical:null diff --git a/nexus/meta_api/proto/BUILD.bazel b/nexus/meta_api/proto/BUILD.bazel index 2e357f8..3026f57 100644 --- a/nexus/meta_api/proto/BUILD.bazel +++ b/nexus/meta_api/proto/BUILD.bazel @@ -1,6 +1,5 @@ load("@com_github_grpc_grpc//bazel:python_rules.bzl", "py_grpc_library", "py_proto_library") load("@rules_proto//proto:defs.bzl", "proto_library") -load("@rules_proto_grpc//js:defs.bzl", "js_grpc_web_library") package(default_visibility = ["//visibility:public"]) @@ -12,6 +11,7 @@ proto_library( deps = [ "//nexus/models/proto", "@com_google_protobuf//:wrappers_proto", + "@org_izihawa_summa//summa/proto", ], ) @@ -25,13 +25,3 @@ py_grpc_library( srcs = [":proto"], deps = [":proto_py"], ) - -js_grpc_web_library( - name = "grpc_web_js", - protos = [ - ":proto", - "//nexus/models/proto", - ], - visibility = ["//visibility:public"], - deps = ["//nexus/models/proto:proto_js"], -) diff --git a/nexus/meta_api/proto/documents_service.proto b/nexus/meta_api/proto/documents_service.proto index 828e539..e4c3510 100644 --- a/nexus/meta_api/proto/documents_service.proto +++ b/nexus/meta_api/proto/documents_service.proto @@ -3,32 +3,13 @@ package nexus.meta_api.proto; import "nexus/models/proto/typed_document.proto"; -message RollRequest { - string language = 1; -} - -message RollResponse { - uint64 document_id = 1; -} - -message TopMissedRequest { - uint32 page = 1; - uint32 page_size = 2; -} - -message TopMissedResponse { - repeated nexus.models.proto.TypedDocument typed_documents = 1; - bool has_next = 2; +service Documents { + rpc get (TypedDocumentRequest) returns (nexus.models.proto.TypedDocument) {} } message TypedDocumentRequest { string index_alias = 1; uint64 document_id = 2; uint32 position = 3; -} - -service Documents { - rpc get (TypedDocumentRequest) returns (nexus.models.proto.TypedDocument) {} - rpc roll (RollRequest) returns (RollResponse) {} - rpc top_missed (TopMissedRequest) returns (TopMissedResponse) {} + string mode = 4; } diff --git a/nexus/meta_api/proto/documents_service_pb2.py b/nexus/meta_api/proto/documents_service_pb2.py new file mode 100644 index 0000000..0d05535 --- /dev/null +++ b/nexus/meta_api/proto/documents_service_pb2.py @@ -0,0 +1,79 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: nexus/meta_api/proto/documents_service.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from nexus.models.proto import \ + typed_document_pb2 as nexus_dot_models_dot_proto_dot_typed__document__pb2 + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n,nexus/meta_api/proto/documents_service.proto\x12\x14nexus.meta_api.proto\x1a\'nexus/models/proto/typed_document.proto\"`\n\x0bRollRequest\x12\x1f\n\x0bindex_alias\x18\x01 \x01(\tR\nindexAlias\x12\x14\n\x05query\x18\x02 \x01(\tR\x05query\x12\x1a\n\x08language\x18\x03 \x01(\tR\x08language\"X\n\x0cRollResponse\x12H\n\x0etyped_document\x18\x01 \x01(\x0b\x32!.nexus.models.proto.TypedDocumentR\rtypedDocument\"b\n\x10TopMissedRequest\x12\x12\n\x04page\x18\x01 \x01(\rR\x04page\x12\x1b\n\tpage_size\x18\x02 \x01(\rR\x08pageSize\x12\x1d\n\ndoi_prefix\x18\x03 \x01(\tR\tdoiPrefix\"z\n\x11TopMissedResponse\x12J\n\x0ftyped_documents\x18\x01 \x03(\x0b\x32!.nexus.models.proto.TypedDocumentR\x0etypedDocuments\x12\x19\n\x08has_next\x18\x02 \x01(\x08R\x07hasNext\"\x88\x01\n\x14TypedDocumentRequest\x12\x1f\n\x0bindex_alias\x18\x01 \x01(\tR\nindexAlias\x12\x1f\n\x0b\x64ocument_id\x18\x02 \x01(\x04R\ndocumentId\x12\x1a\n\x08position\x18\x03 \x01(\rR\x08position\x12\x12\n\x04mode\x18\x04 \x01(\tR\x04mode2\x95\x02\n\tDocuments\x12V\n\x03get\x12*.nexus.meta_api.proto.TypedDocumentRequest\x1a!.nexus.models.proto.TypedDocument\"\x00\x12O\n\x04roll\x12!.nexus.meta_api.proto.RollRequest\x1a\".nexus.meta_api.proto.RollResponse\"\x00\x12_\n\ntop_missed\x12&.nexus.meta_api.proto.TopMissedRequest\x1a\'.nexus.meta_api.proto.TopMissedResponse\"\x00\x62\x06proto3') + + + +_ROLLREQUEST = DESCRIPTOR.message_types_by_name['RollRequest'] +_ROLLRESPONSE = DESCRIPTOR.message_types_by_name['RollResponse'] +_TOPMISSEDREQUEST = DESCRIPTOR.message_types_by_name['TopMissedRequest'] +_TOPMISSEDRESPONSE = DESCRIPTOR.message_types_by_name['TopMissedResponse'] +_TYPEDDOCUMENTREQUEST = DESCRIPTOR.message_types_by_name['TypedDocumentRequest'] +RollRequest = _reflection.GeneratedProtocolMessageType('RollRequest', (_message.Message,), { + 'DESCRIPTOR' : _ROLLREQUEST, + '__module__' : 'nexus.meta_api.proto.documents_service_pb2' + # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.RollRequest) + }) +_sym_db.RegisterMessage(RollRequest) + +RollResponse = _reflection.GeneratedProtocolMessageType('RollResponse', (_message.Message,), { + 'DESCRIPTOR' : _ROLLRESPONSE, + '__module__' : 'nexus.meta_api.proto.documents_service_pb2' + # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.RollResponse) + }) +_sym_db.RegisterMessage(RollResponse) + +TopMissedRequest = _reflection.GeneratedProtocolMessageType('TopMissedRequest', (_message.Message,), { + 'DESCRIPTOR' : _TOPMISSEDREQUEST, + '__module__' : 'nexus.meta_api.proto.documents_service_pb2' + # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.TopMissedRequest) + }) +_sym_db.RegisterMessage(TopMissedRequest) + +TopMissedResponse = _reflection.GeneratedProtocolMessageType('TopMissedResponse', (_message.Message,), { + 'DESCRIPTOR' : _TOPMISSEDRESPONSE, + '__module__' : 'nexus.meta_api.proto.documents_service_pb2' + # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.TopMissedResponse) + }) +_sym_db.RegisterMessage(TopMissedResponse) + +TypedDocumentRequest = _reflection.GeneratedProtocolMessageType('TypedDocumentRequest', (_message.Message,), { + 'DESCRIPTOR' : _TYPEDDOCUMENTREQUEST, + '__module__' : 'nexus.meta_api.proto.documents_service_pb2' + # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.TypedDocumentRequest) + }) +_sym_db.RegisterMessage(TypedDocumentRequest) + +_DOCUMENTS = DESCRIPTOR.services_by_name['Documents'] +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _ROLLREQUEST._serialized_start=111 + _ROLLREQUEST._serialized_end=207 + _ROLLRESPONSE._serialized_start=209 + _ROLLRESPONSE._serialized_end=297 + _TOPMISSEDREQUEST._serialized_start=299 + _TOPMISSEDREQUEST._serialized_end=397 + _TOPMISSEDRESPONSE._serialized_start=399 + _TOPMISSEDRESPONSE._serialized_end=521 + _TYPEDDOCUMENTREQUEST._serialized_start=524 + _TYPEDDOCUMENTREQUEST._serialized_end=660 + _DOCUMENTS._serialized_start=663 + _DOCUMENTS._serialized_end=940 +# @@protoc_insertion_point(module_scope) diff --git a/nexus/meta_api/proto/documents_service_pb2_grpc.py b/nexus/meta_api/proto/documents_service_pb2_grpc.py new file mode 100644 index 0000000..8935f94 --- /dev/null +++ b/nexus/meta_api/proto/documents_service_pb2_grpc.py @@ -0,0 +1,135 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc +from nexus.meta_api.proto import \ + documents_service_pb2 as \ + nexus_dot_meta__api_dot_proto_dot_documents__service__pb2 +from nexus.models.proto import \ + typed_document_pb2 as nexus_dot_models_dot_proto_dot_typed__document__pb2 + + +class DocumentsStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.get = channel.unary_unary( + '/nexus.meta_api.proto.Documents/get', + request_serializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TypedDocumentRequest.SerializeToString, + response_deserializer=nexus_dot_models_dot_proto_dot_typed__document__pb2.TypedDocument.FromString, + ) + self.roll = channel.unary_unary( + '/nexus.meta_api.proto.Documents/roll', + request_serializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.RollRequest.SerializeToString, + response_deserializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.RollResponse.FromString, + ) + self.top_missed = channel.unary_unary( + '/nexus.meta_api.proto.Documents/top_missed', + request_serializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TopMissedRequest.SerializeToString, + response_deserializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TopMissedResponse.FromString, + ) + + +class DocumentsServicer(object): + """Missing associated documentation comment in .proto file.""" + + def get(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def roll(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def top_missed(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_DocumentsServicer_to_server(servicer, server): + rpc_method_handlers = { + 'get': grpc.unary_unary_rpc_method_handler( + servicer.get, + request_deserializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TypedDocumentRequest.FromString, + response_serializer=nexus_dot_models_dot_proto_dot_typed__document__pb2.TypedDocument.SerializeToString, + ), + 'roll': grpc.unary_unary_rpc_method_handler( + servicer.roll, + request_deserializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.RollRequest.FromString, + response_serializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.RollResponse.SerializeToString, + ), + 'top_missed': grpc.unary_unary_rpc_method_handler( + servicer.top_missed, + request_deserializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TopMissedRequest.FromString, + response_serializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TopMissedResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'nexus.meta_api.proto.Documents', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class Documents(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def get(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/nexus.meta_api.proto.Documents/get', + nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TypedDocumentRequest.SerializeToString, + nexus_dot_models_dot_proto_dot_typed__document__pb2.TypedDocument.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def roll(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/nexus.meta_api.proto.Documents/roll', + nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.RollRequest.SerializeToString, + nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.RollResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def top_missed(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/nexus.meta_api.proto.Documents/top_missed', + nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TopMissedRequest.SerializeToString, + nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TopMissedResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/nexus/meta_api/proto/search_service.proto b/nexus/meta_api/proto/search_service.proto index 6c13d53..7a527b8 100644 --- a/nexus/meta_api/proto/search_service.proto +++ b/nexus/meta_api/proto/search_service.proto @@ -2,11 +2,30 @@ syntax = "proto3"; package nexus.meta_api.proto; import "nexus/models/proto/typed_document.proto"; +import "summa/proto/search_service.proto"; + +service Search { + rpc search (SearchRequest) returns (SearchResponse) {} + rpc meta_search (MetaSearchRequest) returns (MetaSearchResponse) {} +} message ScoredDocument { nexus.models.proto.TypedDocument typed_document = 1; - float score = 2; + double score = 2; uint32 position = 3; + map snippets = 4; +} + +message MetaSearchRequest { + repeated string index_aliases = 1; + string query = 2; + map languages = 3; + repeated summa.proto.Collector collectors = 4; + repeated string query_tags = 5; +} + +message MetaSearchResponse { + repeated summa.proto.CollectorOutput collector_outputs = 1; } message SearchRequest { @@ -15,13 +34,12 @@ message SearchRequest { uint32 page = 3; uint32 page_size = 4; string language = 5; + repeated string query_tags = 6; } message SearchResponse { repeated ScoredDocument scored_documents = 1; bool has_next = 2; -} - -service Search { - rpc search (SearchRequest) returns (SearchResponse) {} + uint32 count = 3; + string query_language = 4; } diff --git a/nexus/meta_api/proto/search_service_pb2.py b/nexus/meta_api/proto/search_service_pb2.py new file mode 100644 index 0000000..0259016 --- /dev/null +++ b/nexus/meta_api/proto/search_service_pb2.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: nexus/meta_api/proto/search_service.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from nexus.models.proto import \ + typed_document_pb2 as nexus_dot_models_dot_proto_dot_typed__document__pb2 + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)nexus/meta_api/proto/search_service.proto\x12\x14nexus.meta_api.proto\x1a\'nexus/models/proto/typed_document.proto\"\x8c\x01\n\x0eScoredDocument\x12H\n\x0etyped_document\x18\x01 \x01(\x0b\x32!.nexus.models.proto.TypedDocumentR\rtypedDocument\x12\x14\n\x05score\x18\x02 \x01(\x01R\x05score\x12\x1a\n\x08position\x18\x03 \x01(\rR\x08position\"\xc1\x01\n\rSearchRequest\x12#\n\rindex_aliases\x18\x01 \x03(\tR\x0cindexAliases\x12\x14\n\x05query\x18\x02 \x01(\tR\x05query\x12\x12\n\x04page\x18\x03 \x01(\rR\x04page\x12\x1b\n\tpage_size\x18\x04 \x01(\rR\x08pageSize\x12\x1a\n\x08language\x18\x05 \x01(\tR\x08language\x12(\n\x10with_user_intent\x18\x06 \x01(\x08R\x0ewithUserIntent\"\x92\x01\n\x0eSearchResponse\x12O\n\x10scored_documents\x18\x01 \x03(\x0b\x32$.nexus.meta_api.proto.ScoredDocumentR\x0fscoredDocuments\x12\x19\n\x08has_next\x18\x02 \x01(\x08R\x07hasNext\x12\x14\n\x05\x63ount\x18\x03 \x01(\rR\x05\x63ount2_\n\x06Search\x12U\n\x06search\x12#.nexus.meta_api.proto.SearchRequest\x1a$.nexus.meta_api.proto.SearchResponse\"\x00\x62\x06proto3') + + + +_SCOREDDOCUMENT = DESCRIPTOR.message_types_by_name['ScoredDocument'] +_SEARCHREQUEST = DESCRIPTOR.message_types_by_name['SearchRequest'] +_SEARCHRESPONSE = DESCRIPTOR.message_types_by_name['SearchResponse'] +ScoredDocument = _reflection.GeneratedProtocolMessageType('ScoredDocument', (_message.Message,), { + 'DESCRIPTOR' : _SCOREDDOCUMENT, + '__module__' : 'nexus.meta_api.proto.search_service_pb2' + # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.ScoredDocument) + }) +_sym_db.RegisterMessage(ScoredDocument) + +SearchRequest = _reflection.GeneratedProtocolMessageType('SearchRequest', (_message.Message,), { + 'DESCRIPTOR' : _SEARCHREQUEST, + '__module__' : 'nexus.meta_api.proto.search_service_pb2' + # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.SearchRequest) + }) +_sym_db.RegisterMessage(SearchRequest) + +SearchResponse = _reflection.GeneratedProtocolMessageType('SearchResponse', (_message.Message,), { + 'DESCRIPTOR' : _SEARCHRESPONSE, + '__module__' : 'nexus.meta_api.proto.search_service_pb2' + # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.SearchResponse) + }) +_sym_db.RegisterMessage(SearchResponse) + +_SEARCH = DESCRIPTOR.services_by_name['Search'] +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _SCOREDDOCUMENT._serialized_start=109 + _SCOREDDOCUMENT._serialized_end=249 + _SEARCHREQUEST._serialized_start=252 + _SEARCHREQUEST._serialized_end=445 + _SEARCHRESPONSE._serialized_start=448 + _SEARCHRESPONSE._serialized_end=594 + _SEARCH._serialized_start=596 + _SEARCH._serialized_end=691 +# @@protoc_insertion_point(module_scope) diff --git a/nexus/meta_api/proto/search_service_pb2_grpc.py b/nexus/meta_api/proto/search_service_pb2_grpc.py new file mode 100644 index 0000000..5aa394a --- /dev/null +++ b/nexus/meta_api/proto/search_service_pb2_grpc.py @@ -0,0 +1,67 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc +from nexus.meta_api.proto import \ + search_service_pb2 as \ + nexus_dot_meta__api_dot_proto_dot_search__service__pb2 + + +class SearchStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.search = channel.unary_unary( + '/nexus.meta_api.proto.Search/search', + request_serializer=nexus_dot_meta__api_dot_proto_dot_search__service__pb2.SearchRequest.SerializeToString, + response_deserializer=nexus_dot_meta__api_dot_proto_dot_search__service__pb2.SearchResponse.FromString, + ) + + +class SearchServicer(object): + """Missing associated documentation comment in .proto file.""" + + def search(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_SearchServicer_to_server(servicer, server): + rpc_method_handlers = { + 'search': grpc.unary_unary_rpc_method_handler( + servicer.search, + request_deserializer=nexus_dot_meta__api_dot_proto_dot_search__service__pb2.SearchRequest.FromString, + response_serializer=nexus_dot_meta__api_dot_proto_dot_search__service__pb2.SearchResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'nexus.meta_api.proto.Search', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class Search(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def search(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/nexus.meta_api.proto.Search/search', + nexus_dot_meta__api_dot_proto_dot_search__service__pb2.SearchRequest.SerializeToString, + nexus_dot_meta__api_dot_proto_dot_search__service__pb2.SearchResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/nexus/meta_api/providers/data.py b/nexus/meta_api/providers/data.py deleted file mode 100644 index 4781938..0000000 --- a/nexus/meta_api/providers/data.py +++ /dev/null @@ -1,60 +0,0 @@ -from typing import List - -from aiokit import AioThing -from library.aiopostgres.pool_holder import AioPostgresPoolHolder -from recordclass import dataobject - - -class DocumentData(dataobject): - ipfs_multihashes: List[str] - - -class DataProvider(AioThing): - def __init__(self, data_provider_config: dict): - super().__init__() - self.pool_holder = None - if data_provider_config['enabled']: - self.pool_holder = AioPostgresPoolHolder( - conninfo=f'dbname={data_provider_config["database"]} ' - f'user={data_provider_config["username"]} ' - f'password={data_provider_config["password"]} ' - f'host={data_provider_config["host"]}', - ) - self.waits.append(self.pool_holder) - - async def get(self, document_id): - if not self.pool_holder: - return - pg_data = self.pool_holder.iterate(''' - select id, ipfs_multihashes - from scimag - where id = %s - union all - select id, ipfs_multihashes - from scitech - where id = %s - ''', (document_id, document_id)) - async for _, ipfs_multihashes in pg_data: - return DocumentData(ipfs_multihashes=ipfs_multihashes or []) - - async def random_id(self, language): - if not self.pool_holder: - return - pg_data = self.pool_holder.iterate(''' - select id from scitech - where - (language = %s or language = 'en') - and original_id is null - and is_deleted = false - offset floor( - random() * ( - select count(*) from scitech where - (language = %s or language = 'en') - and original_id is null - and is_deleted = false - ) - ) - limit 1; - ''', (language, language)) - async for (id_,) in pg_data: - return id_ diff --git a/nexus/meta_api/providers/stat.py b/nexus/meta_api/providers/stat.py index 8ac8983..c228350 100644 --- a/nexus/meta_api/providers/stat.py +++ b/nexus/meta_api/providers/stat.py @@ -5,6 +5,7 @@ from contextlib import asynccontextmanager from aiochclient import ChClient from aiohttp import ClientSession from aiokit import AioThing +from library.logging import error_log from recordclass import dataobject @@ -19,7 +20,6 @@ class StatProvider(AioThing): self.clickhouse_session = None self.clickhouse_client = None self.download_stats = {} - self.top_missed_stats = [] self.current_task = None if stat_provider_config['enabled']: @@ -36,68 +36,39 @@ class StatProvider(AioThing): try: yield except asyncio.CancelledError as e: - logging.getLogger('error').warning(e) + error_log(e, level=logging.WARNING) except Exception as e: - logging.getLogger('error').error(e) + error_log(e) raise async def load_download_stats(self): async with self._safe_execution(): - download_stats = {} - logging.getLogger('statbox').info({ - 'action': 'start_loading', - 'stats': 'download_stats', - }) - async for row in self.clickhouse_client.iterate(''' - select id, count(distinct user_id) as c - from query_log where mode = 'get' and id != 0 - group by id - '''): - download_stats[row['id']] = DocumentStat(downloads_count=row['c']) - self.download_stats = download_stats - logging.getLogger('statbox').info({ - 'action': 'loaded', - 'stats': 'download_stats', - 'items': len(download_stats), - }) - await asyncio.sleep(self.stat_provider_config['download_stats']['refresh_time_secs']) - - async def load_top_missed_stats(self): - async with self._safe_execution(): - top_missed_stats = [] - logging.getLogger('statbox').info({ - 'action': 'start_loading', - 'stats': 'top_missing', - }) - async for row in self.clickhouse_client.iterate(''' - select - document_id, - count(distinct chat_id) as c from telegram_statbox_log - where action = 'missed' and - (mode = 'start_delivery' or mode = 'delivery') and - index_alias = 'scimag' - group by document_id - order by count(distinct chat_id) desc, document_id desc limit 1000 - '''): - top_missed_stats.append(row['document_id']) - self.top_missed_stats = top_missed_stats - logging.getLogger('statbox').info({ - 'action': 'loaded', - 'stats': 'top_missing', - 'items': len(top_missed_stats), - }) - await asyncio.sleep(self.stat_provider_config['top_missed_stats']['refresh_time_secs']) + while True: + download_stats = {} + logging.getLogger('statbox').info({ + 'action': 'start_loading', + 'stats': 'download_stats', + }) + async for row in self.clickhouse_client.iterate(''' + select id, count(distinct user_id) as c + from query_log where mode = 'get' and id != 0 + group by id + '''): + download_stats[row['id']] = DocumentStat(downloads_count=row['c']) + self.download_stats = download_stats + logging.getLogger('statbox').info({ + 'action': 'loaded', + 'stats': 'download_stats', + 'items': len(download_stats), + }) + await asyncio.sleep(self.stat_provider_config['download_stats']['refresh_time_secs']) def get_download_stats(self, document_id, default=None): return self.download_stats.get(document_id, default) - def get_top_missed_stats(self): - return self.top_missed_stats - async def all_tasks(self): return await asyncio.gather( self.load_download_stats(), - self.load_top_missed_stats(), ) async def start(self): diff --git a/nexus/meta_api/query_extensions/BUILD.bazel b/nexus/meta_api/query_extensions/BUILD.bazel deleted file mode 100644 index 4878c2e..0000000 --- a/nexus/meta_api/query_extensions/BUILD.bazel +++ /dev/null @@ -1,16 +0,0 @@ -load("@pip_modules//:requirements.bzl", "requirement") -load("@rules_python//python:defs.bzl", "py_library") - -py_library( - name = "query_extensions", - srcs = glob(["**/*.py"]), - srcs_version = "PY3", - visibility = ["//visibility:public"], - deps = [ - requirement("en_core_web_sm"), - requirement("ply"), - requirement("izihawa_types"), - "//nexus/nlptools", - requirement("izihawa_utils"), - ], -) diff --git a/nexus/meta_api/query_extensions/__init__.py b/nexus/meta_api/query_extensions/__init__.py deleted file mode 100644 index 1070ba1..0000000 --- a/nexus/meta_api/query_extensions/__init__.py +++ /dev/null @@ -1,31 +0,0 @@ -from nexus.meta_api.query_extensions.grammar import ( - FieldResolver, - MorphyResolver, - OrOperation, - UnknownOperationResolver, - parser, -) - -from . import checks -from .checks import QueryClass - - -class QueryProcessor: - checks = tuple() - - def process(self, query, language): - raise NotImplementedError() - - -class ClassicQueryProcessor(QueryProcessor): - checks = (checks.check_doi, checks.check_isbn, checks.check_nid, checks.check_url) - - def process(self, query, language): - uor = UnknownOperationResolver(OrOperation) - fr = FieldResolver() - morphy = MorphyResolver(language) - for c in self.checks: - r = c(query) - if r: - return r - return {'query': str(uor.visit(fr.visit(morphy.visit(parser.parse(query))))), 'class': QueryClass.Default} diff --git a/nexus/meta_api/query_extensions/checks.py b/nexus/meta_api/query_extensions/checks.py deleted file mode 100644 index 06bd294..0000000 --- a/nexus/meta_api/query_extensions/checks.py +++ /dev/null @@ -1,61 +0,0 @@ -import re -from enum import Enum - -from nexus.nlptools.regex import ( - DOI_REGEX, - ISBN_REGEX, - NID_REGEX, - ONLY_DOI_REGEX, - URL_REGEX, -) - -# ToDo: redo all, code is logically incorrect now - - -class QueryClass(Enum): - Default = 'default' - DOI = 'doi' - ISBN = 'isbn' - NID = 'nid' - URL = 'url' - - -def check_doi(query) -> (QueryClass, str): - if ( - ((r := re.search(DOI_REGEX, query)) and re.search(URL_REGEX, query)) - or re.search(ONLY_DOI_REGEX, query) - ): - doi = (r[1] + '/' + r[2]).lower() - return { - 'doi': doi, - 'query': f'doi:"{doi}"', - 'class': QueryClass.DOI, - } - - -def check_isbn(query: str) -> (QueryClass, str): - if r := re.search(ISBN_REGEX, query): - isbn = r[1].replace('-', '') - return { - 'isbn': isbn, - 'query': 'isbns:' + isbn, - 'class': QueryClass.ISBN - } - - -def check_nid(query: str) -> (QueryClass, str): - if r := re.search(NID_REGEX, query): - return { - 'id': r[1], - 'query': 'id:' + r[1], - 'class': QueryClass.NID, - } - - -def check_url(query: str) -> (QueryClass, str): - if r := re.search(URL_REGEX, query): - return { - 'url': r[0], - 'query': r[0], - 'class': QueryClass.URL, - } diff --git a/nexus/meta_api/query_extensions/grammar/__init__.py b/nexus/meta_api/query_extensions/grammar/__init__.py deleted file mode 100644 index d13fd45..0000000 --- a/nexus/meta_api/query_extensions/grammar/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -from .parser import parser -from .tree import OrOperation -from .tree_transformer import ( - FieldResolver, - MorphyResolver, - UnknownOperationResolver, -) - -__all__ = ['parser', 'FieldResolver', 'MorphyResolver', 'OrOperation', 'UnknownOperationResolver'] diff --git a/nexus/meta_api/query_extensions/grammar/parser.py b/nexus/meta_api/query_extensions/grammar/parser.py deleted file mode 100644 index 17aa03a..0000000 --- a/nexus/meta_api/query_extensions/grammar/parser.py +++ /dev/null @@ -1,330 +0,0 @@ -# -*- coding: utf-8 -*- -"""The Lucene Query DSL parser based on PLY -""" - -import logging -# TODO : add reserved chars and escaping, regex -# see : https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html -# https://lucene.apache.org/core/3_6_0/queryparsersyntax.html -import re - -import ply.lex as lex -import ply.yacc as yacc -from izihawa_utils.exceptions import BaseError - -from .tree import ( - QUOTES, - AndOperation, - Boost, - Fuzzy, - Group, - Not, - OrOperation, - Phrase, - Plus, - Prohibit, - Proximity, - Range, - Regex, - SearchField, - UnknownOperation, - Word, - create_operation, - group_to_fieldgroup, -) - - -class ParseError(BaseError): - code = 'parse_error' - level = logging.WARNING - - -reserved = { - 'AND': 'AND_OP', - 'OR': 'OR_OP', - 'NOT': 'NOT', - 'TO': 'TO', - 'to': 'TO', -} - - -# tokens of our grammar -tokens = ( - ['TERM', - 'PHRASE', - 'REGEX', - 'APPROX', - 'BOOST', - 'MINUS', - 'PLUS', - 'COLUMN', - 'LPAREN', - 'RPAREN', - 'LBRACKET', - 'RBRACKET' - ] + sorted(set(reserved.values())) -) - - -# text of some simple tokens -t_PLUS = r'\+(?=\S)' -t_MINUS = r'\-(?=\S)' -t_NOT = 'NOT' -t_AND_OP = r'AND' -t_OR_OP = r'OR' -t_COLUMN = r'(?<=\S):(?=\S)' -t_LPAREN = r'\(' -t_RPAREN = r'\)' -t_LBRACKET = r'(\[|\{)' -t_RBRACKET = r'(\]|\})' - -# precedence rules -precedence = ( - ('left', 'OR_OP',), - ('left', 'AND_OP'), - ('nonassoc', 'MINUS',), - ('nonassoc', 'PLUS',), - ('nonassoc', 'APPROX'), - ('nonassoc', 'BOOST'), - ('nonassoc', 'LPAREN', 'RPAREN'), - ('nonassoc', 'LBRACKET', 'TO', 'RBRACKET'), - ('nonassoc', 'REGEX'), - ('nonassoc', 'PHRASE'), - ('nonassoc', 'TERM'), -) - -# term - -# the case of : which is used in date is problematic because it is also a delimiter -# lets catch those expressions appart -# Note : we must use positive look behind, because regexp engine is eager, -# and it's only arrived at ':' that it will try this rule -TIME_RE = r''' -(?<=T\d{2}): # look behind for T and two digits: hours -\d{2} # minutes -(:\d{2})? # seconds -''' -# this is a wide catching expression, to also include date math. -# Inspired by the original lucene parser: -# https://github.com/apache/lucene-solr/blob/master/lucene/queryparser/src/java/org/apache/lucene/queryparser/surround/parser/QueryParser.jj#L189 -# We do allow the wildcards operators ('*' and '?') as our parser doesn't deal with them. - -TERM_RE = fr''' -(?P # group term - (?: - [^\s:^~(){{}}[\]/,{QUOTES}+\-\\] # first char is not a space neither some char which have meanings - # note: escape of "-" and "]" - # and doubling of "{{}}" (because we use format) - | # but - \\. # we can start with an escaped character - ) - ([^\s:^\\~(){{}}[\]{QUOTES}] # following chars - | # OR - \\. # an escaped char - | # OR - {TIME_RE} # a time expression - )* -) -''' -# phrase -PHRASE_RE = fr''' -(?P # phrase - [{QUOTES}] # opening quote - (?: # repeating - [^\\{QUOTES}] # - a char which is not escape or end of phrase - | # OR - \\. # - an escaped char - )* - [{QUOTES}] # closing quote -)''' -# r'(?P"(?:[^\\"]|\\"|\\[^"])*")' # this is quite complicated to handle \" -# modifiers after term or phrase -APPROX_RE = r'~(?P[0-9.]+)?' -BOOST_RE = r'\^(?P[0-9.]+)?' - -# regex -REGEX_RE = r''' -(?P # regex - / # open slash - (?: # repeating - [^\\/] # - a char which is not escape or end of regex - | # OR - \\. # an escaped char - )* - / # closing slash -)''' - - -def t_IGNORE_HANGING_SIGNS(t): - r"""\s+[\+-]\s+""" - pass - - -def t_IGNORE_MAD_COLUMNS(t): - r"""\s+:|:\s+|\s+:\s+""" - pass - - -def t_SEPARATOR(t): - r'\s+' - pass # discard separators - - -@lex.TOKEN(TERM_RE) -def t_TERM(t): - # check if it is not a reserved term (an operation) - t.type = reserved.get(t.value, 'TERM') - # it's not, make it a Word - if t.type == 'TERM': - m = re.match(TERM_RE, t.value, re.VERBOSE) - value = m.group("term") - t.value = Word(value) - return t - - -@lex.TOKEN(PHRASE_RE) -def t_PHRASE(t): - m = re.match(PHRASE_RE, t.value, re.VERBOSE) - value = m.group("phrase") - t.value = Phrase(value) - return t - - -@lex.TOKEN(REGEX_RE) -def t_REGEX(t): - m = re.match(REGEX_RE, t.value, re.VERBOSE) - value = m.group("regex") - t.value = Regex(value) - return t - - -@lex.TOKEN(APPROX_RE) -def t_APPROX(t): - m = re.match(APPROX_RE, t.value) - t.value = m.group("degree") - return t - - -@lex.TOKEN(BOOST_RE) -def t_BOOST(t): - m = re.match(BOOST_RE, t.value) - t.value = m.group("force") - return t - - -# Error handling rule FIXME -def t_error(t): # pragma: no cover - t.lexer.skip(1) - - -lexer = lex.lex() - - -def p_expression_or(p): - 'expression : expression OR_OP expression' - p[0] = create_operation(OrOperation, p[1], p[3]) - - -def p_expression_and(p): - '''expression : expression AND_OP expression''' - p[0] = create_operation(AndOperation, p[1], p[len(p) - 1]) - - -def p_expression_implicit(p): - '''expression : expression expression''' - p[0] = create_operation(UnknownOperation, p[1], p[2]) - - -def p_expression_plus(p): - '''unary_expression : PLUS unary_expression''' - p[0] = Plus(p[2]) - - -def p_expression_minus(p): - '''unary_expression : MINUS unary_expression''' - p[0] = Prohibit(p[2]) - - -def p_expression_not(p): - '''unary_expression : NOT unary_expression''' - p[0] = Not(p[2]) - - -def p_expression_unary(p): - '''expression : unary_expression''' - p[0] = p[1] - - -def p_grouping(p): - 'unary_expression : LPAREN expression RPAREN' - p[0] = Group(p[2]) # Will p_field_search will transform as FieldGroup if necessary - - -def p_range(p): - '''unary_expression : LBRACKET phrase_or_term TO phrase_or_term RBRACKET''' - include_low = p[1] == "[" - include_high = p[5] == "]" - p[0] = Range(p[2], p[4], include_low, include_high) - - -def p_field_search(p): - '''unary_expression : TERM COLUMN unary_expression''' - if isinstance(p[3], Group): - p[3] = group_to_fieldgroup(p[3]) - # for field name we take p[1].value for it was captured as a word expression - p[0] = SearchField(p[1].value, p[3]) - - -def p_quoting(p): - 'unary_expression : PHRASE' - p[0] = p[1] - - -def p_proximity(p): - '''unary_expression : PHRASE APPROX''' - p[0] = Proximity(p[1], p[2]) - - -def p_boosting(p): - '''expression : expression BOOST''' - p[0] = Boost(p[1], p[2]) - - -def p_terms(p): - '''unary_expression : TERM''' - p[0] = p[1] - - -def p_fuzzy(p): - '''unary_expression : TERM APPROX''' - p[0] = Fuzzy(p[1], p[2]) - - -def p_regex(p): - '''unary_expression : REGEX''' - p[0] = p[1] - - -# handling a special case, TO is reserved only in range -def p_to_as_term(p): - '''unary_expression : TO''' - p[0] = Word(p[1]) - - -def p_phrase_or_term(p): - '''phrase_or_term : TERM - | PHRASE''' - p[0] = p[1] - - -# Error rule for syntax errors -# TODO : should report better -def p_error(p): - if p is None: - p = "(probably at end of input, may be unmatch parenthesis or so)" - raise ParseError(error="Syntax error in input at %r!" % p) - - -parser = yacc.yacc() -"""This is the parser generated by PLY -""" diff --git a/nexus/meta_api/query_extensions/grammar/tree.py b/nexus/meta_api/query_extensions/grammar/tree.py deleted file mode 100644 index 2ca4358..0000000 --- a/nexus/meta_api/query_extensions/grammar/tree.py +++ /dev/null @@ -1,370 +0,0 @@ -# -*- coding: utf-8 -*- -"""Elements that will constitute the parse tree of a query. -You may use these items to build a tree representing a query, -or get a tree as the result of parsing a query string. -""" -import re -from decimal import Decimal - -_MARKER = object() -NON_DEFAULT_QUOTES = r''''“”‘«»„`''' -QUOTES = NON_DEFAULT_QUOTES + '"' -QUOTE_RE = re.compile(f'[{QUOTES}]') -NON_DEFAULT_QUOTE_RE = re.compile(f'[{NON_DEFAULT_QUOTES}]') - - -class Item(object): - """Base class for all items that compose the parse tree. - An item is a part of a request. - """ - - # /!\ Note on Item (and subclasses) __magic__ methods: /!\ - # - # Since we're dealing with recursive structures, we must avoid using - # the builtin helper methods when dealing with nested objects in - # __magic__ methods. - # - # As the helper usually calls the relevant method, we end up with two - # function calls instead of one, and end up hitting python's max recursion - # limit twice as fast! - # - # This is why we're calling c.__repr__ instead of repr(c) in the __repr__ - # method. Same thing applies for all magic methods (__str__, __eq__, and any - # other we might add in the future). - - _equality_attrs = [] - - @property - def children(self): - """As base of a tree structure, an item may have children""" - # empty by default - return [] - - def __repr__(self): - children = ", ".join(c.__repr__() for c in self.children) - return "%s(%s)" % (self.__class__.__name__, children) - - def __eq__(self, other): - """a basic equal operation - """ - return (self.__class__ == other.__class__ - and len(self.children) == len(other.children) - and all( - getattr(self, a, _MARKER) == getattr(other, a, _MARKER) - for a in self._equality_attrs - ) - and all(c.__eq__(d) for c, d in zip(self.children, other.children))) - - -class SearchField(Item): - """Indicate wich field the search expression operates on - eg: *desc* in ``desc:(this OR that)`` - :param str name: name of the field - :param expr: the searched expression - """ - _equality_attrs = ['name'] - - def __init__(self, name, expr): - self.name = name - self.expr = expr - - def __str__(self): - return self.name + ":" + self.expr.__str__() - - def __repr__(self): - return "SearchField(%r, %s)" % (self.name, self.expr.__repr__()) - - @property - def children(self): - """the only child is the expression""" - return [self.expr] - - -class BaseGroup(Item): - """Base class for group of expressions or field values - :param expr: the expression inside parenthesis - """ - def __init__(self, expr): - self.expr = expr - - def __str__(self): - return "(%s)" % self.expr.__str__() - - @property - def children(self): - """the only child is the expression""" - return [self.expr] - - -class Group(BaseGroup): - """Group sub expressions - """ - - -class FieldGroup(BaseGroup): - """Group values for a query on a field - """ - - -def group_to_fieldgroup(g): # FIXME: no use ! - return FieldGroup(g.expr) - - -class Range(Item): - """A Range - :param low: lower bound - :param high: higher bound - :param bool include_low: wether lower bound is included - :param bool include_high: wether higher bound is included - """ - - LOW_CHAR = {True: '[', False: '{'} - HIGH_CHAR = {True: ']', False: '}'} - - def __init__(self, low, high, include_low=True, include_high=True): - self.low = low - self.high = high - self.include_low = include_low - self.include_high = include_high - - @property - def children(self): - """children are lower and higher bound expressions""" - return [self.low, self.high] - - def __str__(self): - return "%s%s TO %s%s" % ( - self.LOW_CHAR[self.include_low], - self.low.__str__(), - self.high.__str__(), - self.HIGH_CHAR[self.include_high]) - - -class Term(Item): - """Base for terms - :param str value: the value - """ - WILDCARDS_PATTERN = re.compile(r"((?<=[^\\])[?*]|^[?*])") # non escaped * and ? - # see - # https://lucene.apache.org/core/3_6_0/queryparsersyntax.html#Escaping%20Special%20Characters - WORD_ESCAPED_CHARS = re.compile(r'\\([+\-&|!(){}[\]^"~*?:\\])') - - _equality_attrs = ['value'] - - def __init__(self, value): - self.value = value - - @property - def unescaped_value(self): - # remove '\' that escape characters - return self.WORD_ESCAPED_CHARS.sub(r'\1', self.value) - - def is_wildcard(self): - """:return bool: True if value is the wildcard ``*`` - """ - return self.value == "*" - - def iter_wildcards(self): - """list wildcards contained in value and their positions - """ - for matched in self.WILDCARDS_PATTERN.finditer(self.value): - yield matched.span(), matched.group() - - def split_wildcards(self): - """split term on wildcards - """ - return self.WILDCARDS_PATTERN.split(self.value) - - def has_wildcard(self): - """:return bool: True if value contains a wildcards - """ - return any(self.iter_wildcards()) - - def __str__(self): - return self.value - - def __repr__(self): - return "%s(%r)" % (self.__class__.__name__, str(self)) - - -class Word(Term): - """A single word term - :param str value: the value - """ - def __init__(self, value, final=False): - super().__init__(value) - self.final = final - - -class Phrase(Term): - """A phrase term, that is a sequence of words enclose in quotes - :param str value: the value, including the quotes. Eg. ``'"my phrase"'`` - """ - def __init__(self, value): - value = QUOTE_RE.sub('"', value) - super(Phrase, self).__init__(value) - assert self.value.endswith('"') and self.value.startswith('"'), ( - "Phrase value must contain the quotes") - - -class Regex(Term): - """A regex term, that is a sequence of words enclose in slashes - :param str value: the value, including the slashes. Eg. ``'/my regex/'`` - """ - def __init__(self, value): - super(Regex, self).__init__(value) - assert value.endswith('/') and value.startswith('/'), ( - "Regex value must contain the slashes") - - -class BaseApprox(Item): - """Base for approximations, that is fuzziness and proximity - """ - _equality_attrs = ['term', 'degree'] - - def __repr__(self): # pragma: no cover - return "%s(%s, %s)" % (self.__class__.__name__, self.term.__repr__(), self.degree) - - @property - def children(self): - return [self.term] - - -class Fuzzy(BaseApprox): - """Fuzzy search on word - :param Word term: the approximated term - :param degree: the degree which will be converted to :py:class:`decimal.Decimal`. - """ - def __init__(self, term, degree=None): - self.term = term - if degree is None: - degree = 0.5 - self.degree = Decimal(degree).normalize() - - def __str__(self): - return "%s~%s" % (self.term, self.degree) - - -class Proximity(BaseApprox): - """Proximity search on phrase - :param Phrase term: the approximated phrase - :param degree: the degree which will be converted to :py:func:`int`. - """ - def __init__(self, term, degree=None): - self.term = term - if degree is None: - degree = 1 - self.degree = int(degree) - - def __str__(self): - return "%s~" % self.term + ("%d" % self.degree if self.degree is not None else "") - - -class Boost(Item): - """A term for boosting a value or a group there of - :param expr: the boosted expression - :param force: boosting force, will be converted to :py:class:`decimal.Decimal` - """ - def __init__(self, expr, force): - self.expr = expr - if force is None: - force = 1.0 - self.force = Decimal(force).normalize() - - @property - def children(self): - """The only child is the boosted expression - """ - return [self.expr] - - def __str__(self): - return "%s^%s" % (self.expr.__str__(), self.force) - - -class BaseOperation(Item): - """ - Parent class for binary operations are binary operation used to join expressions, - like OR and AND - :param operands: expressions to apply operation on - """ - def __init__(self, *operands): - self.operands = operands - - def __str__(self): - return (" %s " % self.op).join(str(o) for o in self.operands) - - @property - def children(self): - """children are left and right expressions - """ - return self.operands - - -class UnknownOperation(BaseOperation): - """Unknown Boolean operator. - .. warning:: - This is used to represent implicit operations (ie: term:foo term:bar), - as we cannot know for sure which operator should be used. - Lucene seem to use whatever operator was used before reaching that one, - defaulting to AND, but we cannot know anything about this at parsing - time... - .. seealso:: - the :py:class:`.utils.UnknownOperationResolver` to resolve those nodes to OR and AND - """ - op = '' - - def __str__(self): - return " ".join(str(o) for o in self.operands) - - -class OrOperation(BaseOperation): - """OR expression - """ - op = 'OR' - - -class AndOperation(BaseOperation): - """AND expression - """ - op = 'AND' - - -def create_operation(cls, a, b): - """Create operation between a and b, merging if a or b is already an operation of same class - """ - operands = [] - operands.extend(a.operands if isinstance(a, cls) else [a]) - operands.extend(b.operands if isinstance(b, cls) else [b]) - return cls(*operands) - - -class Unary(Item): - """Parent class for unary operations - :param a: the expression the operator applies on - """ - - def __init__(self, a): - self.a = a - - def __str__(self): - return "%s%s" % (self.op, self.a.__str__()) - - @property - def children(self): - return [self.a] - - -class Plus(Unary): - """plus, unary operation - """ - op = "+" - - -class Not(Unary): - op = 'NOT ' - - -class Prohibit(Unary): - """The negation - """ - op = "-" diff --git a/nexus/meta_api/query_extensions/grammar/tree_transformer.py b/nexus/meta_api/query_extensions/grammar/tree_transformer.py deleted file mode 100644 index 97e6069..0000000 --- a/nexus/meta_api/query_extensions/grammar/tree_transformer.py +++ /dev/null @@ -1,207 +0,0 @@ -from izihawa_utils.text import camel_to_snake -from nexus.nlptools.morph import EnglishMorphology - -from .tree import ( - AndOperation, - BaseOperation, - Group, - OrOperation, - Unary, - Word, -) - - -class TreeVisitor: - visitor_method_prefix = 'visit_' - generic_visitor_method_name = 'generic_visit' - - _get_method_cache = None - - def _get_method(self, node): - if self._get_method_cache is None: - self._get_method_cache = {} - try: - meth = self._get_method_cache[type(node)] - except KeyError: - for cls in node.__class__.mro(): - try: - method_name = "{}{}".format( - self.visitor_method_prefix, - camel_to_snake(cls.__name__) - ) - meth = getattr(self, method_name) - break - except AttributeError: - continue - else: - meth = getattr(self, self.generic_visitor_method_name) - self._get_method_cache[type(node)] = meth - return meth - - def visit(self, node, parents=None): - """ Basic, recursive traversal of the tree. """ - parents = parents or [] - method = self._get_method(node) - yield from method(node, parents) - for child in node.children: - yield from self.visit(child, parents + [node]) - - def generic_visit(self, node, parents=None): - """ - Default visitor function, called if nothing matches the current node. - """ - return iter([]) # No-op - - -class TreeTransformer(TreeVisitor): - def replace_node(self, old_node, new_node, parent): - for k, v in parent.__dict__.items(): # pragma: no branch - if v == old_node: - parent.__dict__[k] = new_node - break - elif isinstance(v, list): - try: - i = v.index(old_node) - if new_node is None: - del v[i] - else: - v[i] = new_node - break - except ValueError: - pass # this was not the attribute containing old_node - elif isinstance(v, tuple): - try: - i = v.index(old_node) - v = list(v) - if new_node is None: - del v[i] - else: - v[i] = new_node - parent.__dict__[k] = tuple(v) - break - except ValueError: - pass # this was not the attribute containing old_node - - def generic_visit(self, node, parent=None): - return node - - def visit(self, node, parents=None): - """ - Recursively traverses the tree and replace nodes with the appropriate - visitor method's return values. - """ - parents = parents or [] - method = self._get_method(node) - new_node = method(node, parents) - if parents: - self.replace_node(node, new_node, parents[-1]) - node = new_node - if node is not None: - for child in node.children: - self.visit(child, parents + [node]) - return node - - -class UnknownOperationResolver(TreeTransformer): - VALID_OPERATIONS = frozenset([None, AndOperation, OrOperation]) - DEFAULT_OPERATION = OrOperation - - def __init__(self, resolve_to=None): - if resolve_to not in self.VALID_OPERATIONS: - raise ValueError("%r is not a valid value for resolve_to" % resolve_to) - self.resolve_to = resolve_to - self.last_operation = {} - - def _first_nonop_parent(self, parents): - for parent in parents: - if not isinstance(parent, BaseOperation): - return id(parent) # use id() because parent might not be hashable - return None - - def visit_or_operation(self, node, parents=None): - if self.resolve_to is None: - # memorize last op - parent = self._first_nonop_parent(parents) - self.last_operation[parent] = OrOperation - return node - - def visit_and_operation(self, node, parents=None): - if self.resolve_to is None: - # memorize last op - parent = self._first_nonop_parent(parents) - self.last_operation[parent] = AndOperation - return node - - def visit_unknown_operation(self, node, parents=None): - # resolve - if any(map(lambda x: isinstance(x, Unary), node.operands)): - operation = AndOperation - elif self.resolve_to is not None: - operation = self.resolve_to - else: - parent = self._first_nonop_parent(parents) - operation = self.last_operation.get(parent, None) - if operation is None: - operation = self.DEFAULT_OPERATION - return operation(*node.operands) - - -class FieldResolver(TreeTransformer): - FIELD_ALIASES = { - 'author': 'authors', - 'isbn': 'isbns', - 'journal': 'container_title', - 'lang': 'language', - } - VALID_FIELDS = frozenset([ - 'id', 'abstract', 'authors', 'container_title', - 'doi', 'description', 'isbns', 'issued_at', 'language', 'original_id', - 'references', 'tags', 'title', 'year', - ]) - - def visit_search_field(self, node, parents=None): - if node.name in self.FIELD_ALIASES: - node.name = self.FIELD_ALIASES[node.name] - - if node.name not in self.VALID_FIELDS: - return OrOperation(Word(node.name), node.expr) - - return node - - -class MorphyResolver(TreeTransformer): - morphology = { - 'en': EnglishMorphology('en_core_web_sm'), - } - - def __init__(self, language, is_morph=False, is_accent=True): - super().__init__() - self.language = language - self.is_morph = is_morph - self.is_accent = is_accent - - def has_morphy_condition(self, node): - return ( - (isinstance(node, BaseOperation) - and len(node.operands) <= 2 - and all(map(lambda x: isinstance(x, Word), node.operands))) - or isinstance(node, Word) - ) - - def morph(self, node, parents=None): - if self.has_morphy_condition(node): - return self.visit(node, parents) - return node - - def visit_word(self, node, parents=None): - node.value = node.value.lower() - if node.final or self.language not in self.morphology: - return node - if self.is_morph: - forms = [Word(w, final=True) for w in self.morphology[self.language].derive_forms(node.value)] - return Group(OrOperation(*forms)) - if self.is_accent: - if 'ё' in node.value: - forms = [Word(node.value, final=True), Word(node.value.replace('ё', 'е'), final=True)] - return Group(OrOperation(*forms)) - return node diff --git a/nexus/meta_api/query_extensions/tests/BUILD.bazel b/nexus/meta_api/query_extensions/tests/BUILD.bazel deleted file mode 100644 index 606b282..0000000 --- a/nexus/meta_api/query_extensions/tests/BUILD.bazel +++ /dev/null @@ -1,12 +0,0 @@ -load("@pip_modules//:requirements.bzl", "requirement") -load("@rules_python//python:defs.bzl", "py_test") - -py_test( - name = "tests", - srcs = glob(["**/*.py"]), - main = "test.py", - deps = [ - "//nexus/meta_api/query_extensions", - requirement("pytest"), - ], -) diff --git a/nexus/meta_api/query_extensions/tests/__init__.py b/nexus/meta_api/query_extensions/tests/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/nexus/meta_api/query_extensions/tests/test.py b/nexus/meta_api/query_extensions/tests/test.py deleted file mode 100644 index 48a72bb..0000000 --- a/nexus/meta_api/query_extensions/tests/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import os -import sys - -import pytest - -if __name__ == '__main__': - sys.exit(pytest.main([os.path.dirname(__file__), '-vvv', '-W', 'ignore::DeprecationWarning'])) diff --git a/nexus/meta_api/query_extensions/tests/test_grammar.py b/nexus/meta_api/query_extensions/tests/test_grammar.py deleted file mode 100644 index d1e135d..0000000 --- a/nexus/meta_api/query_extensions/tests/test_grammar.py +++ /dev/null @@ -1,41 +0,0 @@ -from nexus.meta_api.query_extensions.grammar import ( - FieldResolver, - UnknownOperationResolver, - parser, -) - - -def test_parser(): - assert ( - str(parser.parse( - '(hemoglobin- er OR hemoglobins-a) ' - 'AND -fetal AND (human to monkey - is cool) ' - 'AND year:[1992 to 1994]' - )) == '(hemoglobin- er OR hemoglobins-a) AND -fetal AND (human to monkey is cool) AND year:[1992 TO 1994]' - ) - assert (str(parser.parse("bek OR 'kek'")) == 'bek OR "kek"') - assert (str(parser.parse("bek OR 'kek")) == 'bek OR kek') - assert (str(parser.parse("bek OR a'kek")) == 'bek OR a kek') - assert (str(parser.parse("bek' OR 'kek mek'")) == 'bek " OR " kek mek') - - assert (str(parser.parse("field:test")) == 'field:test') - assert (str(parser.parse("field: test")) == 'field test') - assert (str(parser.parse("field : test")) == 'field test') - assert (str(parser.parse("field :test")) == 'field test') - - -def test_resolvers(): - def resolver(query): - tree = parser.parse(query) - return UnknownOperationResolver().visit(FieldResolver().visit(tree)) - - assert str(resolver('kek -bek')) == 'kek AND -bek' - assert str(resolver("Glass s OR Guide OR to OR Commercial OR Vehicles OR 1989")) == \ - 'Glass OR s OR Guide OR to OR Commercial OR Vehicles OR 1989' - assert str(resolver('bek OR kek')) == 'bek OR kek' - assert str(resolver('bek kek')) == 'bek OR kek' - assert str(resolver('title:(hemoglobin OR -fetal) OR abstract:"alpha-hemoglobin"')) == \ - 'title:(hemoglobin OR -fetal) OR abstract:"alpha-hemoglobin"' - # assert str(resolver('lumbar spinal [with]')) == '' - # assert str(resolver('lumbar spinal [with consumer]')) == '' - # assert str(resolver('lumbar spinal [with consumer summary]')) == '' diff --git a/nexus/meta_api/query_extensions/tests/test_query_extensionner.py b/nexus/meta_api/query_extensions/tests/test_query_extensionner.py deleted file mode 100644 index 6687510..0000000 --- a/nexus/meta_api/query_extensions/tests/test_query_extensionner.py +++ /dev/null @@ -1,70 +0,0 @@ -from nexus.meta_api.query_extensions import ClassicQueryProcessor -from nexus.meta_api.query_extensions.checks import QueryClass - - -def classic_query_processor(query): - result = ClassicQueryProcessor().process(query, 'en') - return result['query'], result['class'] - - -def test_doi_query(): - assert classic_query_processor('10.1001/azeroth1021.azerty') == ('doi:"10.1001/azeroth1021.azerty"', QueryClass.DOI) - assert classic_query_processor('https://doi.org/10.1001/azeroth1021.azerty') == ( - 'doi:"10.1001/azeroth1021.azerty"', QueryClass.DOI - ) - assert classic_query_processor('Gimme https://doi.org/10.1001/azeroth1021.azerty please') == ( - 'doi:"10.1001/azeroth1021.azerty"', QueryClass.DOI - ) - assert classic_query_processor('Gimme https://doi.org/10.1001/azeroth1021.azerty not 10.6666/kek please') == ( - 'doi:"10.1001/azeroth1021.azerty"', QueryClass.DOI - ) - assert classic_query_processor('10.1001 / test') == ('doi:"10.1001/test"', QueryClass.DOI) - assert classic_query_processor('kek 10.1001 / test') == ('kek OR 10.1001 OR test', QueryClass.Default) - - -def test_isbn_query(): - assert classic_query_processor('ISBN: 9784567890123') == ('isbns:9784567890123', QueryClass.ISBN) - assert classic_query_processor('ISBN:9784567890123') == ('isbns:9784567890123', QueryClass.ISBN) - assert classic_query_processor('ISBN: 978-4567890123') == ('isbns:9784567890123', QueryClass.ISBN) - assert classic_query_processor('9784567890123') == ('isbns:9784567890123', QueryClass.ISBN) - assert classic_query_processor('978-4567890123') == ('isbns:9784567890123', QueryClass.ISBN) - - -def test_url(): - assert classic_query_processor('https://www.google.com/lelkek') == ( - 'https://www.google.com/lelkek', - QueryClass.URL, - ) - - -def test_default(): - assert classic_query_processor('“Gay niggas in the space”') == ( - '"Gay niggas in the space"', - QueryClass.Default, - ) - assert classic_query_processor('“Gay niggas” in the space”') == ( - '"Gay niggas" OR in OR the OR space', - QueryClass.Default, - ) - assert classic_query_processor('Search “Gay niggas in the space”') == ( - 'search OR "Gay niggas in the space"', - QueryClass.Default, - ) - assert classic_query_processor( - 'hemoglobin OR blood OR issued_at:978307200^0.65 OR ' - 'issued_at:[1262304000 TO 1577836800]^0.65 ' - 'wrong_field : 123 spaced_1: 123 spaced :2' - ) == ( - 'hemoglobin OR blood OR issued_at:978307200^0.65 OR ' - 'issued_at:[1262304000 TO 1577836800]^0.65 ' - 'OR wrong_field OR 123 OR spaced_1 OR 123 OR spaced OR 2', - QueryClass.Default, - ) - assert classic_query_processor('Gay Niggas: In the Space') == ( - 'gay OR niggas OR in OR the OR space', - QueryClass.Default, - ) - assert classic_query_processor("Glass's Guide to Commercial Vehicles 1989") == ( - 'glass OR s OR guide OR to OR commercial OR vehicles OR 1989', - QueryClass.Default, - ) diff --git a/nexus/meta_api/rescorers/__init__.py b/nexus/meta_api/rescorers/__init__.py deleted file mode 100644 index e011648..0000000 --- a/nexus/meta_api/rescorers/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .classic_rescorer import ClassicRescorer - -__all__ = ['ClassicRescorer'] diff --git a/nexus/meta_api/rescorers/base.py b/nexus/meta_api/rescorers/base.py deleted file mode 100644 index 9342c30..0000000 --- a/nexus/meta_api/rescorers/base.py +++ /dev/null @@ -1,11 +0,0 @@ -from aiokit import AioThing - - -class Rescorer(AioThing): - def __init__(self, learn_logger=None, executor=None): - super().__init__() - self.learn_logger = learn_logger - self.executor = executor - - async def rescore(self, document_pbs, query, session_id, language): - raise NotImplementedError() diff --git a/nexus/meta_api/rescorers/classic_rescorer.py b/nexus/meta_api/rescorers/classic_rescorer.py deleted file mode 100644 index d107156..0000000 --- a/nexus/meta_api/rescorers/classic_rescorer.py +++ /dev/null @@ -1,236 +0,0 @@ -import asyncio -import base64 -import datetime -import io -import time - -import lightgbm as lgbm -import numpy as np -from nexus.nlptools.language_detect import detect_language - -from .base import Rescorer - -# ToDo: deduplicate code - - -def convert_scoring_to_vec_current_version( - original_score, - index_id, - document_age, - downloads_count, - ref_by_count, - same_language, - same_query_language, - query_tokens_count, - query_documents_similarity_vector, -): - return np.array([ - original_score, - index_id, - document_age, - downloads_count, - ref_by_count, - same_language, - same_query_language, - query_tokens_count, - ] + query_documents_similarity_vector) - - -def convert_scoring_to_vec_future_version( - document_id, - original_score, - index_id, - document_age, - downloads_count, - ref_by_count, - same_language, - same_query_language, - query_tokens_count, - query_documents_similarity_vector, -): - return np.array([ - document_id, - original_score, - index_id, - document_age, - downloads_count, - ref_by_count, - same_language, - same_query_language, - query_tokens_count, - ] + query_documents_similarity_vector) - - -def index_alias_to_id(name): - return 1 if name == 'scimag' else 2 - - -def query_document_similarity_measures(query_tokens, query_tokens_set, query_tokens_count, document_tokens): - max_longest_sequence_not_ordered = 0 - min_sequence_not_ordered = 1024 - current_longest_sequence_not_ordered = 0 - two_grams_not_ordered = 0 - last_token = -1 - for token_ix, token in enumerate(document_tokens): - if token in query_tokens_set: - if last_token != -1: - min_sequence_not_ordered = min(min_sequence_not_ordered, token_ix - last_token) - if token_ix - last_token == 1: - two_grams_not_ordered += 1 - last_token = token_ix - current_longest_sequence_not_ordered += 1 - else: - current_longest_sequence_not_ordered = 0 - max_longest_sequence_not_ordered = max( - max_longest_sequence_not_ordered, - current_longest_sequence_not_ordered, - ) - return [ - max_longest_sequence_not_ordered, - min_sequence_not_ordered, - two_grams_not_ordered, - float(max_longest_sequence_not_ordered) / (float(query_tokens_count) + 1.0), - float(two_grams_not_ordered) / (float(query_tokens_count) + 1.0), - ] - - -def cast_issued_at(document): - if document.HasField('issued_at'): - try: - return datetime.date.fromtimestamp(document.issued_at) - except ValueError: - return datetime.date(2000, 1, 1) - else: - return datetime.date(2000, 1, 1) - - -def calculate_title_tokens(document): - # ToDo: should we add tags? - title_tokens = list(document.authors) - if document.title: - title_tokens.append(document.title) - return (' '.join(title_tokens)).lower().split() - - -class ClassicRescorer(Rescorer): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.lgbm_ranker = lgbm.Booster(model_file='nexus/meta_api/models/classic.txt') - - def write_to_log_future_version(self, session_id, scored_documents, query, now, language): - future_scoring_vecs = [] - - query_language = detect_language(query) - query_tokens_count = query.count(' ') - query_tokens = query.lower().strip('"\'”`').split() - query_tokens_set = set(query_tokens) - - for scored_document in scored_documents: - document = getattr(scored_document.typed_document, scored_document.typed_document.WhichOneof('document')) - original_id = document.original_id or document.id - - title_tokens = calculate_title_tokens(document) - - query_documents_similarity_vector = query_document_similarity_measures( - query_tokens, - query_tokens_set, - query_tokens_count, - title_tokens, - ) - future_scoring_vecs.append(convert_scoring_to_vec_future_version( - document_id=original_id, - original_score=scored_document.score, - index_id=index_alias_to_id(scored_document.typed_document.WhichOneof('document')), - document_age=(now - cast_issued_at(document)).total_seconds(), - downloads_count=scored_document.document.downloads_count, - ref_by_count=getattr(document, 'ref_by_count', 0), - same_language=int(language == document.language), - same_query_language=int(query_language == document.language), - query_tokens_count=query_tokens_count, - query_documents_similarity_vector=query_documents_similarity_vector - )) - - data = io.BytesIO() - np.savez_compressed(data, future_scoring_vecs, allow_pickle=True) - data = base64.b64encode(data.getvalue()).decode() - - log_entry = { - 'action': 'search', - 'scorings': data, - 'session_id': session_id, - 'unixtime': time.time(), - 'version': 4, - 'vertical': 'classic', - } - - self.learn_logger.info(log_entry) - - def _rescore(self, session_id, scored_documents, query, now, language): - current_scoring_vecs = [] - - query_language = detect_language(query) - query_tokens_count = query.count(' ') - query_tokens = query.lower().strip('"\'”`').split() - query_tokens_set = set(query_tokens) - - for scored_document in scored_documents: - # ToDo: Use shared wrappers - document = getattr(scored_document.typed_document, scored_document.typed_document.WhichOneof('document')) - - title_tokens = calculate_title_tokens(document) - query_documents_similarity_vector = query_document_similarity_measures( - query_tokens, - query_tokens_set, - query_tokens_count, - title_tokens, - ) - current_scoring_vecs.append(convert_scoring_to_vec_current_version( - original_score=scored_document.score, - index_id=index_alias_to_id(scored_document.typed_document.WhichOneof('document')), - document_age=(now - cast_issued_at(document)).total_seconds(), - downloads_count=document.downloads_count, - ref_by_count=getattr(document, 'ref_by_count', 0), - same_language=int(language == document.language), - same_query_language=int(query_language == document.language), - query_tokens_count=query_tokens_count, - query_documents_similarity_vector=query_documents_similarity_vector, - )) - - scores = self.lgbm_ranker.predict(current_scoring_vecs) - for score, scored_document in zip(scores, scored_documents): - scored_document.score = score - - scored_documents = sorted(scored_documents, key=lambda x: x.score, reverse=True) - for position, scored_document in enumerate(scored_documents): - scored_document.position = position - return scored_documents - - async def rescore(self, scored_documents, query, session_id, language): - if not scored_documents: - return scored_documents - - now = datetime.date.today() - - if self.learn_logger: - # Needed due to bug in uvloop - async def nested(): - await asyncio.get_running_loop().run_in_executor( - self.executor, - self.write_to_log_future_version, - session_id, - scored_documents, - query, - now, - language, - ) - asyncio.create_task(nested()) - - return await asyncio.get_running_loop().run_in_executor( - self.executor, - self._rescore, - session_id, - scored_documents, - query, - now, - language, - ) diff --git a/nexus/meta_api/services/base.py b/nexus/meta_api/services/base.py new file mode 100644 index 0000000..c4f507a --- /dev/null +++ b/nexus/meta_api/services/base.py @@ -0,0 +1,68 @@ +import logging + +import orjson as json +from library.aiogrpctools.base import BaseService as LibraryBaseService +from nexus.meta_api.proto import \ + search_service_pb2 as nexus_meta_api_search_service_pb +from nexus.models.proto import ( + scimag_pb2, + scitech_pb2, + typed_document_pb2, +) +from nexus.models.proto.scimag_pb2 import Scimag as ScimagPb +from nexus.models.proto.scitech_pb2 import Scitech as ScitechPb +from nexus.models.proto.typed_document_pb2 import \ + TypedDocument as TypedDocumentPb + + +class BaseService(LibraryBaseService): + pb_registry = { + 'scimag': ScimagPb, + 'scitech': ScitechPb, + } + + def __init__(self, application, stat_provider, summa_client): + super().__init__(application=application, service_name='meta_api') + self.stat_provider = stat_provider + self.summa_client = summa_client + self.operation_logger = logging.getLogger('operation') + + def cast_top_docs_collector(self, scored_documents): + new_scored_documents = [] + for scored_document in scored_documents: + document = json.loads(scored_document.document) + document = self.enrich_document_with_stat_provider(document) + new_scored_documents.append(nexus_meta_api_search_service_pb.ScoredDocument( + typed_document=typed_document_pb2.TypedDocument( + **{scored_document.index_alias: self.pb_registry[scored_document.index_alias](**document)}, + ), + position=scored_document.position, + score=float(getattr(scored_document.score, scored_document.score.WhichOneof('score'))), + snippets=scored_document.snippets, + )) + return new_scored_documents + + def cast_reservoir_sampling_collector(self, index_alias, documents): + new_scored_documents = [] + for position, document in enumerate(documents): + document = json.loads(document) + document = self.enrich_document_with_stat_provider(document) + new_scored_documents.append(nexus_meta_api_search_service_pb.ScoredDocument( + typed_document=TypedDocumentPb( + **{index_alias: self.pb_registry[index_alias](**document)}, + ), + position=position, + score=1.0, + )) + return new_scored_documents + + def enrich_document_with_stat_provider(self, document): + if self.stat_provider: + original_id = ( + document.get('original_id') + or document['id'] + ) + download_stats = self.stat_provider.get_download_stats(original_id) + if download_stats and download_stats.downloads_count: + document['downloads_count'] = download_stats.downloads_count + return document diff --git a/nexus/meta_api/services/documents.py b/nexus/meta_api/services/documents.py index a5aacf6..c731247 100644 --- a/nexus/meta_api/services/documents.py +++ b/nexus/meta_api/services/documents.py @@ -1,91 +1,79 @@ -import json import logging -import time from grpc import StatusCode -from library.aiogrpctools.base import ( - BaseService, - aiogrpc_request_wrapper, -) -from nexus.meta_api.proto.documents_service_pb2 import \ - RollResponse as RollResponsePb -from nexus.meta_api.proto.documents_service_pb2 import \ - TopMissedResponse as TopMissedResponsePb +from library.aiogrpctools.base import aiogrpc_request_wrapper from nexus.meta_api.proto.documents_service_pb2_grpc import ( DocumentsServicer, add_DocumentsServicer_to_server, ) -from nexus.models.proto.scimag_pb2 import Scimag as ScimagPb +from nexus.meta_api.services.base import BaseService from nexus.models.proto.typed_document_pb2 import \ TypedDocument as TypedDocumentPb -from nexus.views.telegram.registry import pb_registry +from summa.proto import search_service_pb2 class DocumentsService(DocumentsServicer, BaseService): - def __init__(self, server, summa_client, data_provider, stat_provider, learn_logger=None): - super().__init__(service_name='meta_api') - self.server = server - self.summa_client = summa_client + def __init__(self, application, query_preprocessor, query_transformers, summa_client, stat_provider, learn_logger=None): + super().__init__( + application=application, + stat_provider=stat_provider, + summa_client=summa_client, + ) self.stat_provider = stat_provider - self.data_provider = data_provider + self.query_preprocessor = query_preprocessor + self.query_transformers = query_transformers self.learn_logger = learn_logger - async def get_document(self, index_alias, document_id, request_id, context): + async def start(self): + add_DocumentsServicer_to_server(self, self.application.server) + + async def get_document(self, index_alias, document_id, context, request_id, session_id): search_response = await self.summa_client.search( index_alias=index_alias, - query=f'id:{document_id}', - offset=0, - limit=1, + query={'term': {'field': 'id', 'value': str(document_id)}}, + collectors=search_service_pb2.Collector( + top_docs=search_service_pb2.TopDocsCollector(limit=1) + ), request_id=request_id, + session_id=session_id, + ) + scored_documents = self.cast_top_docs_collector( + scored_documents=search_response.collector_outputs[0].top_docs.scored_documents, + ) + if scored_documents: + return scored_documents[0].typed_document + else: + return await context.abort(StatusCode.NOT_FOUND, 'not_found') + + @aiogrpc_request_wrapper(log=False) + async def get(self, request, context, metadata) -> TypedDocumentPb: + typed_document_pb = await self.get_document( + index_alias=request.index_alias, + document_id=request.document_id, + context=context, + request_id=metadata['request-id'], + session_id=metadata['session-id'], ) - if len(search_response.scored_documents) == 0: - await context.abort(StatusCode.NOT_FOUND, 'not_found') + document_pb = getattr(typed_document_pb, typed_document_pb.WhichOneof('document')) - loaded = json.loads(search_response.scored_documents[0].document) - for field in loaded: - if field in {'authors', 'ipfs_multihashes', 'isbns', 'issns', 'references', 'tags'}: - continue - loaded[field] = loaded[field][0] - return loaded - - def copy_document(self, source, target): - for key in source: - target[key] = source[key] - - async def start(self): - add_DocumentsServicer_to_server(self, self.server) - - @aiogrpc_request_wrapper() - async def get(self, request, context, metadata) -> TypedDocumentPb: - document = await self.get_document(request.index_alias, request.document_id, metadata['request-id'], context) - if document.get('original_id'): - original_document = await self.get_document( + if hasattr(document_pb, 'original_id') and document_pb.original_id: + original_document_pb = await self.get_document( index_alias=request.index_alias, - document_id=document['original_id'], - request_id=metadata['request-id'], + document_id=document_pb.original_id, context=context, + request_id=metadata['request-id'], + session_id=metadata['session-id'], ) for to_remove in ('doi', 'fiction_id', 'filesize', 'libgen_id',): - original_document.pop(to_remove, None) - document = {**original_document, **document} - - document_data = await self.data_provider.get(request.document_id) - download_stats = self.stat_provider.get_download_stats(request.document_id) - - if self.learn_logger: - self.learn_logger.info({ - 'action': 'get', - 'document_id': document['id'], - 'index_alias': request.index_alias, - 'session_id': metadata['session-id'], - 'unixtime': time.time(), - }) + original_document_pb.ClearField(to_remove) + original_document_pb.MergeFrom(document_pb) + document_pb = original_document_pb logging.getLogger('query').info({ 'action': 'get', 'cache_hit': False, - 'id': document['id'], + 'id': document_pb.id, 'index_alias': request.index_alias, 'mode': 'get', 'position': request.position, @@ -94,55 +82,4 @@ class DocumentsService(DocumentsServicer, BaseService): 'user_id': metadata['user-id'], }) - document_pb = pb_registry[request.index_alias](**document) - if document_data: - del document_pb.ipfs_multihashes[:] - document_pb.ipfs_multihashes.extend(document_data.ipfs_multihashes) - if download_stats and download_stats.downloads_count: - document_pb.downloads_count = download_stats.downloads_count - - return TypedDocumentPb( - **{request.index_alias: document_pb}, - ) - - @aiogrpc_request_wrapper() - async def roll(self, request, context, metadata): - random_id = await self.data_provider.random_id(request.language) - - logging.getLogger('query').info({ - 'action': 'roll', - 'cache_hit': False, - 'id': random_id, - 'mode': 'roll', - 'request_id': metadata['request-id'], - 'session_id': metadata['session-id'], - 'user_id': metadata['user-id'], - }) - - return RollResponsePb(document_id=random_id) - - @aiogrpc_request_wrapper() - async def top_missed(self, request, context, metadata): - document_ids = self.stat_provider.get_top_missed_stats() - offset = request.page * request.page_size - limit = request.page_size - document_ids = document_ids[offset:offset + limit] - document_ids = map(lambda document_id: f'id:{document_id}', document_ids) - document_ids = ' OR '.join(document_ids) - - search_response = await self.summa_client.search( - index_alias='scimag', - query=document_ids, - limit=limit, - request_id=metadata['request-id'], - ) - - if len(search_response.scored_documents) == 0: - await context.abort(StatusCode.NOT_FOUND, 'not_found') - - documents = list(map( - lambda document: TypedDocumentPb(scimag=ScimagPb(**json.loads(document.typed_document.scimag))), - search_response.scored_documents, - )) - - return TopMissedResponsePb(typed_documents=documents) + return typed_document_pb diff --git a/nexus/meta_api/services/search.py b/nexus/meta_api/services/search.py index e7a636a..01eee7b 100644 --- a/nexus/meta_api/services/search.py +++ b/nexus/meta_api/services/search.py @@ -1,40 +1,44 @@ import asyncio -import json +import dataclasses import logging +import sys from contextlib import suppress +from datetime import timedelta from timeit import default_timer +from typing import ( + Dict, + List, + Optional, + Union, +) -from aiokit import AioThing +import orjson as json +from aiosumma.eval_scorer_builder import EvalScorerBuilder +from aiosumma.parser.errors import ParseError +from aiosumma.processor import ProcessedQuery from cachetools import TTLCache from grpc import StatusCode from izihawa_utils.exceptions import NeedRetryError from izihawa_utils.pb_to_json import MessageToDict -from izihawa_utils.text import camel_to_snake -from library.aiogrpctools.base import ( - BaseService, - aiogrpc_request_wrapper, +from library.aiogrpctools.base import aiogrpc_request_wrapper +from nexus.meta_api.mergers import ( + AggregationMerger, + CountMerger, + ReservoirSamplingMerger, + TopDocsMerger, ) -from nexus.meta_api.proto.search_service_pb2 import \ - ScoredDocument as ScoredDocumentPb -from nexus.meta_api.proto.search_service_pb2 import \ - SearchResponse as SearchResponsePb +from nexus.meta_api.proto import search_service_pb2 as meta_search_service_pb2 from nexus.meta_api.proto.search_service_pb2_grpc import ( SearchServicer, add_SearchServicer_to_server, ) -from nexus.meta_api.query_extensions import ( - ClassicQueryProcessor, - QueryClass, +from nexus.meta_api.services.base import BaseService +from nexus.models.proto import ( + operation_pb2, + scimag_pb2, + typed_document_pb2, ) -from nexus.meta_api.rescorers import ClassicRescorer -from nexus.models.proto.operation_pb2 import \ - DocumentOperation as DocumentOperationPb -from nexus.models.proto.operation_pb2 import UpdateDocument as UpdateDocumentPb -from nexus.models.proto.scimag_pb2 import Scimag as ScimagPb -from nexus.models.proto.typed_document_pb2 import \ - TypedDocument as TypedDocumentPb -from nexus.nlptools.utils import despace_full -from nexus.views.telegram.registry import pb_registry +from summa.proto import search_service_pb2 from tenacity import ( AsyncRetrying, RetryError, @@ -44,194 +48,303 @@ from tenacity import ( ) -class ClassicSearcher(BaseService): - page_sizes = { - 'scimag': 100, - 'scitech': 100, +def to_bool(b: Union[str, None, bool, int]): + if isinstance(b, str): + return b == '1' + if b is None: + return False + return bool(b) + + +@dataclasses.dataclass +class SearchRequest: + index_alias: str + query: ProcessedQuery + collectors: List[Dict] + + def cache_key(self): + return ( + self.index_alias, + str(self.query), + json.dumps( + [MessageToDict(collector, preserving_proto_field_name=True) for collector in self.collectors], + option=json.OPT_SORT_KEYS, + ), + ) + + +class SearchService(SearchServicer, BaseService): + snippets = { + 'scimag': { + 'title': 1024, + 'abstract': 100, + }, + 'scitech': { + 'title': 1024, + 'description': 100, + } } - def __init__(self, summa_client, query_processor, rescorer, stat_provider): - super().__init__(service_name='meta_api') - self.summa_client = summa_client - - self.operation_logger = logging.getLogger('operation') - self.class_name = camel_to_snake(self.__class__.__name__) - + def __init__(self, application, stat_provider, summa_client, query_preprocessor, query_transformers, learn_logger=None): + super().__init__( + application=application, + stat_provider=stat_provider, + summa_client=summa_client, + ) self.query_cache = TTLCache(maxsize=1024 * 4, ttl=300) - self.query_processor = query_processor - self.rescorer = rescorer - self.stat_provider = stat_provider + self.query_preprocessor = query_preprocessor + self.query_transformers = query_transformers + self.learn_logger = learn_logger - async def processed_query_hook(self, processed_query, context): - if processed_query['class'] == QueryClass.URL: - await context.abort(StatusCode.INVALID_ARGUMENT, 'url_query_error') - return processed_query + async def start(self): + add_SearchServicer_to_server(self, self.application.server) - def merge_search_responses(self, search_responses): - if not search_responses: - return - elif len(search_responses) == 1: - return search_responses[0] - return SearchResponsePb( - scored_documents=[ - scored_document - for search_response in search_responses - for scored_document in search_response.scored_documents - ], - has_next=any([search_response.has_next for search_response in search_responses]), - ) + def merge_search_responses(self, search_responses, collector_descriptors: List[str]): + collector_outputs = [] + for i, collector_descriptor in enumerate(collector_descriptors): + match collector_descriptor: + case 'aggregation': + merger = AggregationMerger([ + search_response.collector_outputs[i].aggregation + for search_response in search_responses if search_response.collector_outputs + ]) + case 'count': + merger = CountMerger([ + search_response.collector_outputs[i].count + for search_response in search_responses if search_response.collector_outputs + ]) + case 'top_docs': + merger = TopDocsMerger([ + search_response.collector_outputs[i].top_docs + for search_response in search_responses if search_response.collector_outputs + ]) + case 'reservoir_sampling': + merger = ReservoirSamplingMerger([ + search_response.collector_outputs[i].reservoir_sampling + for search_response in search_responses if search_response.collector_outputs + ]) + case _: + raise RuntimeError("Unsupported collector") + collector_outputs.append(merger.merge()) + return meta_search_service_pb2.MetaSearchResponse(collector_outputs=collector_outputs) - def cast_search_response(self, name, search_response): - scored_documents_pb = [] - for scored_document in search_response['scored_documents']: - document = json.loads(scored_document['document']) - for field in document: - if field in {'authors', 'ipfs_multihashes', 'isbns', 'issns', 'references', 'tags'}: - continue - document[field] = document[field][0] + async def check_if_need_new_documents_by_dois(self, requested_dois, scored_documents, should_request): + if requested_dois: + found_dois = set([ + getattr( + scored_document.typed_document, + scored_document.typed_document.WhichOneof('document') + ).doi + for scored_document in scored_documents + ]) + if len(found_dois) < len(requested_dois): + if should_request: + for doi in requested_dois: + if doi not in found_dois: + await self.request_doi_delivery(doi=doi) + raise NeedRetryError() - original_id = ( - document.get('original_id') - or document['id'] + def resolve_index_aliases(self, request_index_aliases, processed_query): + """ + Derives requested indices through request and query + """ + index_aliases = set([index_alias for index_alias in request_index_aliases]) + index_aliases_from_query = processed_query.context.index_aliases or index_aliases + return tuple(sorted([index_alias for index_alias in index_aliases_from_query if index_alias in index_aliases])) + + def scorer(self, processed_query, index_alias): + if processed_query.context.order_by: + return search_service_pb2.Scorer(order_by=processed_query.context.order_by[0]) + + if processed_query.is_empty(): + return None + + eval_scorer_builder = EvalScorerBuilder() + if index_alias == 'scimag': + eval_scorer_builder.add_exp_decay( + field_name='issued_at', + origin=( + processed_query.context.query_point_of_time + - processed_query.context.query_point_of_time % 86400 + ), + scale=timedelta(days=365.25 * 14), + offset=timedelta(days=30), + decay=0.85, ) - download_stats = self.stat_provider.get_download_stats(original_id) - if download_stats and download_stats.downloads_count: - document['downloads_count'] = download_stats.downloads_count + eval_scorer_builder.add_fastsigm('page_rank + 1', 0.45) + elif index_alias == 'scitech': + eval_scorer_builder.ops.append('0.7235') + return eval_scorer_builder.build() - scored_documents_pb.append(ScoredDocumentPb( - position=scored_document['position'], - score=scored_document['score'], - typed_document=TypedDocumentPb( - **{name: pb_registry[name](**document)}, - ) - )) - return SearchResponsePb( - scored_documents=scored_documents_pb, - has_next=search_response['has_next'], - ) + async def process_query(self, query, languages, context): + try: + return self.query_preprocessor.process(query, languages) + except ParseError: + return await context.abort(StatusCode.INVALID_ARGUMENT, 'parse_error') - @aiogrpc_request_wrapper() - async def search(self, request, context, metadata): + async def base_search( + self, + search_requests: List[SearchRequest], + collector_descriptors: List[str], + request_id: str, + session_id: str, + user_id: Optional[str] = None, + skip_cache_loading: Optional[Union[bool, str]] = None, + skip_cache_saving: Optional[Union[bool, str]] = None, + original_query: Optional[str] = None, + query_tags: Optional[List[str]] = None, + ): start = default_timer() - processed_query = None - cache_hit = True - page_size = request.page_size or 5 - index_aliases = tuple(sorted([index_alias for index_alias in request.index_aliases])) - user_id = metadata['user-id'] - if ( - (user_id, request.language, index_aliases, request.query) not in self.query_cache - or len(self.query_cache[(user_id, request.language, index_aliases, request.query)].scored_documents) == 0 - ): - cache_hit = False - query = despace_full(request.query) - processed_query = self.query_processor.process(query, request.language) - processed_query = await self.processed_query_hook(processed_query, context) + skip_cache_saving = to_bool(skip_cache_saving) + skip_cache_loading = to_bool(skip_cache_loading) - with suppress(RetryError): - async for attempt in AsyncRetrying( - retry=retry_if_exception_type(NeedRetryError), - wait=wait_fixed(15), - stop=stop_after_attempt(2) - ): - with attempt: - requests = [] - for index_alias in index_aliases: - requests.append( - self.summa_client.search( - index_alias=index_alias, - query=processed_query['query'], - offset=0, - limit=self.page_sizes[index_alias], - request_id=metadata['request-id'], - ) - ) - search_responses = [ - MessageToDict( - search_response, - preserving_proto_field_name=True, - including_default_value_fields=True, - ) for search_response in await asyncio.gather(*requests) - ] - search_responses_pb = [ - self.cast_search_response(name, search_response) - for (name, search_response) in zip(index_aliases, search_responses) - ] - search_response_pb = self.merge_search_responses(search_responses_pb) + cache_key = tuple(search_request.cache_key() for search_request in search_requests) + meta_search_response = self.query_cache.get(cache_key) + cache_hit = bool(meta_search_response) - if len(search_response_pb.scored_documents) == 0 and processed_query['class'] == QueryClass.DOI: - if attempt.retry_state.attempt_number == 1: - await self.request_doi_delivery(doi=processed_query['doi']) - raise NeedRetryError() - - rescored_documents = await self.rescorer.rescore( - scored_documents=search_response_pb.scored_documents, - query=query, - session_id=metadata['session-id'], - language=request.language, - ) - search_response_pb = SearchResponsePb( - scored_documents=rescored_documents, - has_next=search_response_pb.has_next, - ) - self.query_cache[(user_id, request.language, index_aliases, request.query)] = search_response_pb + if not cache_hit or skip_cache_loading: + requests = [] + for search_request in search_requests: + requests.append( + self.summa_client.search( + index_alias=search_request.index_alias, + query=search_request.query, + collectors=search_request.collectors, + request_id=request_id, + session_id=session_id, + ignore_not_found=True, + ) + ) + search_responses = await asyncio.gather(*requests) + meta_search_response = self.merge_search_responses(search_responses, collector_descriptors) + if not skip_cache_saving: + self.query_cache[cache_key] = meta_search_response logging.getLogger('query').info({ 'action': 'request', 'cache_hit': cache_hit, 'duration': default_timer() - start, - 'index_aliases': index_aliases, 'mode': 'search', - 'page': request.page, - 'page_size': page_size, - 'processed_query': processed_query['query'] if processed_query else None, - 'query': request.query, - 'query_class': processed_query['class'].value if processed_query else None, - 'request_id': metadata['request-id'], - 'session_id': metadata['session-id'], + 'query': original_query, + 'request_id': request_id, + 'session_id': session_id, + 'query_tags': query_tags, 'user_id': user_id, }) - scored_documents = self.query_cache[(user_id, request.language, index_aliases, request.query)].scored_documents + return meta_search_response + + @aiogrpc_request_wrapper(log=False) + async def meta_search(self, request, context, metadata): + processed_query = await self.process_query( + query=request.query, + languages=dict(request.languages), + context=context, + ) + index_aliases = self.resolve_index_aliases( + request_index_aliases=request.index_aliases, + processed_query=processed_query, + ) + search_requests = [ + SearchRequest( + index_alias=index_alias, + query=self.query_transformers[index_alias].apply_tree_transformers(processed_query).to_summa_query(), + collectors=request.collectors, + ) for index_alias in index_aliases + ] + collector_descriptors = [collector.WhichOneof('collector') for collector in request.collectors] + + return await self.base_search( + search_requests=search_requests, + collector_descriptors=collector_descriptors, + request_id=metadata['request-id'], + session_id=metadata['session-id'], + user_id=metadata.get('user-id'), + skip_cache_loading=metadata.get('skip-cache-loading'), + skip_cache_saving=metadata.get('skip-cache-saving'), + original_query=request.query, + query_tags=[tag for tag in request.query_tags], + ) + + @aiogrpc_request_wrapper(log=False) + async def search(self, request, context, metadata): + preprocessed_query = await self.process_query(query=request.query, languages=request.language, context=context) + index_aliases = self.resolve_index_aliases( + request_index_aliases=request.index_aliases, + processed_query=preprocessed_query, + ) + + page_size = request.page_size or 5 left_offset = request.page * page_size right_offset = left_offset + page_size - has_next = len(scored_documents) > right_offset - search_response_pb = SearchResponsePb( - scored_documents=scored_documents[left_offset:right_offset], + search_requests = [] + for index_alias in index_aliases: + processed_query = self.query_transformers[index_alias].apply_tree_transformers(preprocessed_query) + search_requests.append( + SearchRequest( + index_alias=index_alias, + query=processed_query.to_summa_query(), + collectors=[ + search_service_pb2.Collector( + top_docs=search_service_pb2.TopDocsCollector( + limit=50, + scorer=self.scorer(processed_query, index_alias), + snippets=self.snippets[index_alias], + explain=processed_query.context.explain, + ) + ), + search_service_pb2.Collector(count=search_service_pb2.CountCollector()) + ], + ) + ) + + with suppress(RetryError): + async for attempt in AsyncRetrying( + retry=retry_if_exception_type(NeedRetryError), + wait=wait_fixed(5), + stop=stop_after_attempt(6) + ): + with attempt: + meta_search_response = await self.base_search( + search_requests=search_requests, + collector_descriptors=['top_docs', 'count'], + request_id=metadata['request-id'], + session_id=metadata['session-id'], + user_id=metadata.get('user-id'), + skip_cache_loading=attempt.retry_state.attempt_number > 1 or metadata.get('skip-cache-loading'), + skip_cache_saving=metadata.get('skip-cache-saving'), + original_query=request.query, + query_tags=[tag for tag in request.query_tags], + ) + new_scored_documents = self.cast_top_docs_collector( + meta_search_response.collector_outputs[0].top_docs.scored_documents, + ) + has_next = len(new_scored_documents) > right_offset + if 'scimag' in index_aliases: + await self.check_if_need_new_documents_by_dois( + requested_dois=processed_query.context.dois, + scored_documents=new_scored_documents, + should_request=attempt.retry_state.attempt_number == 1 + ) + + search_response_pb = meta_search_service_pb2.SearchResponse( + scored_documents=new_scored_documents[left_offset:right_offset], has_next=has_next, + count=meta_search_response.collector_outputs[1].count.count, + query_language=processed_query.context.query_language, ) return search_response_pb async def request_doi_delivery(self, doi): - document_operation = DocumentOperationPb( - update_document=UpdateDocumentPb( - commit=True, - reindex=True, + document_operation = operation_pb2.DocumentOperation( + update_document=operation_pb2.UpdateDocument( should_fill_from_external_source=True, - typed_document=TypedDocumentPb(scimag=ScimagPb(doi=doi)), + full_text_index=True, + full_text_index_commit=True, + typed_document=typed_document_pb2.TypedDocument(scimag=scimag_pb2.Scimag(doi=doi)), ), ) self.operation_logger.info(MessageToDict(document_operation, preserving_proto_field_name=True)) - - -class SearchService(SearchServicer, AioThing): - def __init__(self, server, summa_client, stat_provider, learn_logger=None): - super().__init__() - self.server = server - self.searcher = ClassicSearcher( - summa_client=summa_client, - query_processor=ClassicQueryProcessor(), - rescorer=ClassicRescorer( - learn_logger=learn_logger, - ), - stat_provider=stat_provider, - ) - self.starts.append(self.searcher) - - async def start(self): - add_SearchServicer_to_server(self, self.server) - - async def search(self, request, context): - return await self.searcher.search(request, context) diff --git a/nexus/meta_api/word_transformers.py b/nexus/meta_api/word_transformers.py new file mode 100644 index 0000000..7f14905 --- /dev/null +++ b/nexus/meta_api/word_transformers.py @@ -0,0 +1,104 @@ +import re + +from aiosumma.parser.elements import ( + Group, + Minus, + Plus, + Range, + SearchField, + Word, +) +from aiosumma.tree_transformers import ( + ContextWordTreeTransformer, + ValuePredicateWordTreeTransformer, + ValueWordTreeTransformer, +) +from aiosumma.tree_transformers.base import TreeTransformer +from izihawa_nlptools.regex import ISBN_REGEX + +scimag_word_transformer = ContextWordTreeTransformer( + node_value={'🔬', '⚗️'}, + context_transform=lambda context: context.index_aliases.append('scimag'), +) + +scitech_word_transformer = ContextWordTreeTransformer( + node_value={'📚', '📕', '📖'}, + context_transform=lambda context: context.index_aliases.append('scitech'), +) + + +class ExplainWordTransformer(ValueWordTreeTransformer): + def __init__(self): + super().__init__(node_value='🔑') + + def transform(self, node, context, parents, predicate_result): + context.explain = True + return None + + +explain_word_transformer = ExplainWordTransformer() + + +class YearWordTransformer(ValuePredicateWordTreeTransformer): + def node_predicate(self, node): + return re.match(r'^\d{4}$', node.value) + + def is_single_member_of_group(self, parents): + return parents and isinstance(parents[-1], Group) and len(parents[-1]) == 1 + + def transform(self, node, context, parents, predicate_result): + year = int(node.value) + if not parents or self.is_single_member_of_group(parents): + return node + if 1800 < year < 2100: + context.set_query_point_of_time(year=year) + return node + + +class EditionWordTransformer(ValuePredicateWordTreeTransformer): + def node_predicate(self, node): + return re.match(r'^(\d+)(st|nd|rd|th)$', node.value) + + def transform(self, node, context, parents, predicate_result): + edition = predicate_result.group(1) + if 1 <= int(edition) < 50: + return SearchField('edition', Word(edition)) + return node + + +class IsbnWordTransformer(ValuePredicateWordTreeTransformer): + def node_predicate(self, node): + return re.match(ISBN_REGEX, node.value) + + def transform(self, node, context, parents, predicate_result): + isbn = predicate_result[0].replace('-', '') + context.is_exploration = False + return SearchField('isbns', Word(isbn)) + + +class LanguageWordTransformer(ValuePredicateWordTreeTransformer): + languages = { + '🇪🇹': 'am', + '🇦🇪': 'ar', + '🇩🇪': 'de', + '🇬🇧': 'en', + '🏴󠁧󠁢󠁥󠁮󠁧󠁿': 'en', + '🇪🇸': 'es', + '🇮🇷': 'fa', + '🇮🇳': 'hi', + '🇮🇩': 'id', + '🇮🇹': 'it', + '🇯🇵': 'ja', + '🇲🇾': 'ms', + '🇧🇷': 'pb', + '🇷🇺': 'ru', + '🇹🇯': 'tg', + '🇺🇦': 'uk', + '🇺🇿': 'uz', + } + + def node_predicate(self, node): + return node.value in self.languages + + def transform(self, node, context, parents, predicate_result): + return SearchField('language', Word(self.languages[node.value])) diff --git a/nexus/models/proto/operation.proto b/nexus/models/proto/operation.proto index a2d1594..cf38a43 100644 --- a/nexus/models/proto/operation.proto +++ b/nexus/models/proto/operation.proto @@ -28,8 +28,8 @@ message Vote { message UpdateDocument { repeated string fields = 1; bool should_fill_from_external_source = 2; - bool commit = 3; - bool reindex = 4; + bool full_text_index_commit = 3; + bool full_text_index = 4; TypedDocument typed_document = 5; } diff --git a/nexus/models/proto/operation_pb2.py b/nexus/models/proto/operation_pb2.py deleted file mode 100644 index 45e7526..0000000 --- a/nexus/models/proto/operation_pb2.py +++ /dev/null @@ -1,342 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: nexus/models/proto/operation.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from nexus.models.proto import \ - typed_document_pb2 as nexus_dot_models_dot_proto_dot_typed__document__pb2 - -DESCRIPTOR = _descriptor.FileDescriptor( - name='nexus/models/proto/operation.proto', - package='nexus.models.proto', - syntax='proto3', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\"nexus/models/proto/operation.proto\x12\x12nexus.models.proto\x1a\'nexus/models/proto/typed_document.proto\"k\n\x17\x43rossReferenceOperation\x12\x0e\n\x06source\x18\x01 \x01(\t\x12\x0e\n\x06target\x18\x02 \x01(\t\x12\x1b\n\x13last_retry_unixtime\x18\x03 \x01(\r\x12\x13\n\x0bretry_count\x18\x04 \x01(\r\"\xd4\x01\n\x11\x44ocumentOperation\x12(\n\x04vote\x18\x01 \x01(\x0b\x32\x18.nexus.models.proto.VoteH\x00\x12I\n\x16store_telegram_file_id\x18\x02 \x01(\x0b\x32\'.nexus.models.proto.StoreTelegramFileIdH\x00\x12=\n\x0fupdate_document\x18\x03 \x01(\x0b\x32\".nexus.models.proto.UpdateDocumentH\x00\x42\x0b\n\toperation\"<\n\x04Vote\x12\x13\n\x0b\x64ocument_id\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x05\x12\x10\n\x08voter_id\x18\x03 \x01(\x03\"\xa6\x01\n\x0eUpdateDocument\x12\x0e\n\x06\x66ields\x18\x01 \x03(\t\x12(\n should_fill_from_external_source\x18\x02 \x01(\x08\x12\x0e\n\x06\x63ommit\x18\x03 \x01(\x08\x12\x0f\n\x07reindex\x18\x04 \x01(\x08\x12\x39\n\x0etyped_document\x18\x05 \x01(\x0b\x32!.nexus.models.proto.TypedDocument\"Q\n\x13StoreTelegramFileId\x12\x10\n\x08\x62ot_name\x18\x01 \x01(\t\x12\x18\n\x10telegram_file_id\x18\x02 \x01(\t\x12\x0e\n\x06\x64oc_id\x18\x03 \x01(\x03\x62\x06proto3' - , - dependencies=[nexus_dot_models_dot_proto_dot_typed__document__pb2.DESCRIPTOR,]) - - - - -_CROSSREFERENCEOPERATION = _descriptor.Descriptor( - name='CrossReferenceOperation', - full_name='nexus.models.proto.CrossReferenceOperation', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='source', full_name='nexus.models.proto.CrossReferenceOperation.source', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='target', full_name='nexus.models.proto.CrossReferenceOperation.target', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_retry_unixtime', full_name='nexus.models.proto.CrossReferenceOperation.last_retry_unixtime', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='retry_count', full_name='nexus.models.proto.CrossReferenceOperation.retry_count', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=99, - serialized_end=206, -) - - -_DOCUMENTOPERATION = _descriptor.Descriptor( - name='DocumentOperation', - full_name='nexus.models.proto.DocumentOperation', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='vote', full_name='nexus.models.proto.DocumentOperation.vote', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='store_telegram_file_id', full_name='nexus.models.proto.DocumentOperation.store_telegram_file_id', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='update_document', full_name='nexus.models.proto.DocumentOperation.update_document', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name='operation', full_name='nexus.models.proto.DocumentOperation.operation', - index=0, containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[]), - ], - serialized_start=209, - serialized_end=421, -) - - -_VOTE = _descriptor.Descriptor( - name='Vote', - full_name='nexus.models.proto.Vote', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='document_id', full_name='nexus.models.proto.Vote.document_id', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value', full_name='nexus.models.proto.Vote.value', index=1, - number=2, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='voter_id', full_name='nexus.models.proto.Vote.voter_id', index=2, - number=3, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=423, - serialized_end=483, -) - - -_UPDATEDOCUMENT = _descriptor.Descriptor( - name='UpdateDocument', - full_name='nexus.models.proto.UpdateDocument', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='fields', full_name='nexus.models.proto.UpdateDocument.fields', index=0, - number=1, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='should_fill_from_external_source', full_name='nexus.models.proto.UpdateDocument.should_fill_from_external_source', index=1, - number=2, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='commit', full_name='nexus.models.proto.UpdateDocument.commit', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reindex', full_name='nexus.models.proto.UpdateDocument.reindex', index=3, - number=4, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='typed_document', full_name='nexus.models.proto.UpdateDocument.typed_document', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=486, - serialized_end=652, -) - - -_STORETELEGRAMFILEID = _descriptor.Descriptor( - name='StoreTelegramFileId', - full_name='nexus.models.proto.StoreTelegramFileId', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='bot_name', full_name='nexus.models.proto.StoreTelegramFileId.bot_name', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='telegram_file_id', full_name='nexus.models.proto.StoreTelegramFileId.telegram_file_id', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='document_id', full_name='nexus.models.proto.StoreTelegramFileId.document_id', index=2, - number=3, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=654, - serialized_end=735, -) - -_DOCUMENTOPERATION.fields_by_name['vote'].message_type = _VOTE -_DOCUMENTOPERATION.fields_by_name['store_telegram_file_id'].message_type = _STORETELEGRAMFILEID -_DOCUMENTOPERATION.fields_by_name['update_document'].message_type = _UPDATEDOCUMENT -_DOCUMENTOPERATION.oneofs_by_name['operation'].fields.append( - _DOCUMENTOPERATION.fields_by_name['vote']) -_DOCUMENTOPERATION.fields_by_name['vote'].containing_oneof = _DOCUMENTOPERATION.oneofs_by_name['operation'] -_DOCUMENTOPERATION.oneofs_by_name['operation'].fields.append( - _DOCUMENTOPERATION.fields_by_name['store_telegram_file_id']) -_DOCUMENTOPERATION.fields_by_name['store_telegram_file_id'].containing_oneof = _DOCUMENTOPERATION.oneofs_by_name['operation'] -_DOCUMENTOPERATION.oneofs_by_name['operation'].fields.append( - _DOCUMENTOPERATION.fields_by_name['update_document']) -_DOCUMENTOPERATION.fields_by_name['update_document'].containing_oneof = _DOCUMENTOPERATION.oneofs_by_name['operation'] -_UPDATEDOCUMENT.fields_by_name['typed_document'].message_type = nexus_dot_models_dot_proto_dot_typed__document__pb2._TYPEDDOCUMENT -DESCRIPTOR.message_types_by_name['CrossReferenceOperation'] = _CROSSREFERENCEOPERATION -DESCRIPTOR.message_types_by_name['DocumentOperation'] = _DOCUMENTOPERATION -DESCRIPTOR.message_types_by_name['Vote'] = _VOTE -DESCRIPTOR.message_types_by_name['UpdateDocument'] = _UPDATEDOCUMENT -DESCRIPTOR.message_types_by_name['StoreTelegramFileId'] = _STORETELEGRAMFILEID -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -CrossReferenceOperation = _reflection.GeneratedProtocolMessageType('CrossReferenceOperation', (_message.Message,), { - 'DESCRIPTOR' : _CROSSREFERENCEOPERATION, - '__module__' : 'nexus.models.proto.operation_pb2' - # @@protoc_insertion_point(class_scope:nexus.models.proto.CrossReferenceOperation) - }) -_sym_db.RegisterMessage(CrossReferenceOperation) - -DocumentOperation = _reflection.GeneratedProtocolMessageType('DocumentOperation', (_message.Message,), { - 'DESCRIPTOR' : _DOCUMENTOPERATION, - '__module__' : 'nexus.models.proto.operation_pb2' - # @@protoc_insertion_point(class_scope:nexus.models.proto.DocumentOperation) - }) -_sym_db.RegisterMessage(DocumentOperation) - -Vote = _reflection.GeneratedProtocolMessageType('Vote', (_message.Message,), { - 'DESCRIPTOR' : _VOTE, - '__module__' : 'nexus.models.proto.operation_pb2' - # @@protoc_insertion_point(class_scope:nexus.models.proto.Vote) - }) -_sym_db.RegisterMessage(Vote) - -UpdateDocument = _reflection.GeneratedProtocolMessageType('UpdateDocument', (_message.Message,), { - 'DESCRIPTOR' : _UPDATEDOCUMENT, - '__module__' : 'nexus.models.proto.operation_pb2' - # @@protoc_insertion_point(class_scope:nexus.models.proto.UpdateDocument) - }) -_sym_db.RegisterMessage(UpdateDocument) - -StoreTelegramFileId = _reflection.GeneratedProtocolMessageType('StoreTelegramFileId', (_message.Message,), { - 'DESCRIPTOR' : _STORETELEGRAMFILEID, - '__module__' : 'nexus.models.proto.operation_pb2' - # @@protoc_insertion_point(class_scope:nexus.models.proto.StoreTelegramFileId) - }) -_sym_db.RegisterMessage(StoreTelegramFileId) - - -# @@protoc_insertion_point(module_scope) diff --git a/nexus/models/proto/scimag.proto b/nexus/models/proto/scimag.proto index e89d621..66e3019 100644 --- a/nexus/models/proto/scimag.proto +++ b/nexus/models/proto/scimag.proto @@ -5,6 +5,7 @@ message Scimag { int64 id = 1; string abstract = 2; repeated string authors = 3; + string content = 32; string container_title = 11; string doi = 4; uint32 downloads_count = 27; @@ -14,6 +15,7 @@ message Scimag { repeated string ipfs_multihashes = 31; bool is_deleted = 7; repeated string issns = 25; + repeated string isbns = 33; string issue = 10; optional int64 issued_at = 26; uint32 journal_id = 12; @@ -21,15 +23,14 @@ message Scimag { uint32 last_page = 14; string meta_language = 15; string md5 = 16; - int32 ref_by_count = 23; + int32 referenced_by_count = 23; repeated string references = 28; - oneof optional_scimag_bulk_id { - int32 scimag_bulk_id = 24; - } + optional int32 scimag_bulk_id = 24; repeated string tags = 17; string title = 19; string type = 29; int32 updated_at = 20; string volume = 21; int32 year = 30; + float page_rank = 34; } diff --git a/nexus/models/proto/scimag_pb2.py b/nexus/models/proto/scimag_pb2.py deleted file mode 100644 index bbb3aff..0000000 --- a/nexus/models/proto/scimag_pb2.py +++ /dev/null @@ -1,276 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: nexus/models/proto/scimag.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='nexus/models/proto/scimag.proto', - package='nexus.models.proto', - syntax='proto3', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x1fnexus/models/proto/scimag.proto\x12\x12nexus.models.proto\"\xbf\x04\n\x06Scimag\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x10\n\x08\x61\x62stract\x18\x02 \x01(\t\x12\x0f\n\x07\x61uthors\x18\x03 \x03(\t\x12\x17\n\x0f\x63ontainer_title\x18\x0b \x01(\t\x12\x0b\n\x03\x64oi\x18\x04 \x01(\t\x12\x17\n\x0f\x64ownloads_count\x18\x1b \x01(\r\x12\x11\n\tembedding\x18\x16 \x01(\x0c\x12\x10\n\x08\x66ilesize\x18\x05 \x01(\r\x12\x12\n\nfirst_page\x18\x06 \x01(\r\x12\x18\n\x10ipfs_multihashes\x18\x1f \x03(\t\x12\x12\n\nis_deleted\x18\x07 \x01(\x08\x12\r\n\x05issns\x18\x19 \x03(\t\x12\r\n\x05issue\x18\n \x01(\t\x12\x13\n\tissued_at\x18\x1a \x01(\x03H\x00\x12\x12\n\njournal_id\x18\x0c \x01(\r\x12\x10\n\x08language\x18\r \x01(\t\x12\x11\n\tlast_page\x18\x0e \x01(\r\x12\x15\n\rmeta_language\x18\x0f \x01(\t\x12\x0b\n\x03md5\x18\x10 \x01(\t\x12\x14\n\x0cref_by_count\x18\x17 \x01(\x05\x12\x12\n\nreferences\x18\x1c \x03(\t\x12\x18\n\x0escimag_bulk_id\x18\x18 \x01(\x05H\x01\x12\x0c\n\x04tags\x18\x11 \x03(\t\x12\r\n\x05title\x18\x13 \x01(\t\x12\x0c\n\x04type\x18\x1d \x01(\t\x12\x12\n\nupdated_at\x18\x14 \x01(\x05\x12\x0e\n\x06volume\x18\x15 \x01(\t\x12\x0c\n\x04year\x18\x1e \x01(\tB\x14\n\x12optional_issued_atB\x19\n\x17optional_scimag_bulk_idb\x06proto3' -) - - - - -_SCIMAG = _descriptor.Descriptor( - name='Scimag', - full_name='nexus.models.proto.Scimag', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='id', full_name='nexus.models.proto.Scimag.id', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='abstract', full_name='nexus.models.proto.Scimag.abstract', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='authors', full_name='nexus.models.proto.Scimag.authors', index=2, - number=3, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='container_title', full_name='nexus.models.proto.Scimag.container_title', index=3, - number=11, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='doi', full_name='nexus.models.proto.Scimag.doi', index=4, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='downloads_count', full_name='nexus.models.proto.Scimag.downloads_count', index=5, - number=27, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='embedding', full_name='nexus.models.proto.Scimag.embedding', index=6, - number=22, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='filesize', full_name='nexus.models.proto.Scimag.filesize', index=7, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='first_page', full_name='nexus.models.proto.Scimag.first_page', index=8, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ipfs_multihashes', full_name='nexus.models.proto.Scimag.ipfs_multihashes', index=9, - number=31, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_deleted', full_name='nexus.models.proto.Scimag.is_deleted', index=10, - number=7, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='issns', full_name='nexus.models.proto.Scimag.issns', index=11, - number=25, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='issue', full_name='nexus.models.proto.Scimag.issue', index=12, - number=10, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='issued_at', full_name='nexus.models.proto.Scimag.issued_at', index=13, - number=26, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='journal_id', full_name='nexus.models.proto.Scimag.journal_id', index=14, - number=12, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='language', full_name='nexus.models.proto.Scimag.language', index=15, - number=13, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_page', full_name='nexus.models.proto.Scimag.last_page', index=16, - number=14, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='meta_language', full_name='nexus.models.proto.Scimag.meta_language', index=17, - number=15, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='md5', full_name='nexus.models.proto.Scimag.md5', index=18, - number=16, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ref_by_count', full_name='nexus.models.proto.Scimag.ref_by_count', index=19, - number=23, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='references', full_name='nexus.models.proto.Scimag.references', index=20, - number=28, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='scimag_bulk_id', full_name='nexus.models.proto.Scimag.scimag_bulk_id', index=21, - number=24, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='tags', full_name='nexus.models.proto.Scimag.tags', index=22, - number=17, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='title', full_name='nexus.models.proto.Scimag.title', index=23, - number=19, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='type', full_name='nexus.models.proto.Scimag.type', index=24, - number=29, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='updated_at', full_name='nexus.models.proto.Scimag.updated_at', index=25, - number=20, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='volume', full_name='nexus.models.proto.Scimag.volume', index=26, - number=21, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='year', full_name='nexus.models.proto.Scimag.year', index=27, - number=30, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name='optional_issued_at', full_name='nexus.models.proto.Scimag.optional_issued_at', - index=0, containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[]), - _descriptor.OneofDescriptor( - name='optional_scimag_bulk_id', full_name='nexus.models.proto.Scimag.optional_scimag_bulk_id', - index=1, containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[]), - ], - serialized_start=56, - serialized_end=631, -) - -_SCIMAG.oneofs_by_name['optional_issued_at'].fields.append( - _SCIMAG.fields_by_name['issued_at']) -_SCIMAG.fields_by_name['issued_at'].containing_oneof = _SCIMAG.oneofs_by_name['optional_issued_at'] -_SCIMAG.oneofs_by_name['optional_scimag_bulk_id'].fields.append( - _SCIMAG.fields_by_name['scimag_bulk_id']) -_SCIMAG.fields_by_name['scimag_bulk_id'].containing_oneof = _SCIMAG.oneofs_by_name['optional_scimag_bulk_id'] -DESCRIPTOR.message_types_by_name['Scimag'] = _SCIMAG -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Scimag = _reflection.GeneratedProtocolMessageType('Scimag', (_message.Message,), { - 'DESCRIPTOR' : _SCIMAG, - '__module__' : 'nexus.models.proto.scimag_pb2' - # @@protoc_insertion_point(class_scope:nexus.models.proto.Scimag) - }) -_sym_db.RegisterMessage(Scimag) - - -# @@protoc_insertion_point(module_scope) diff --git a/nexus/models/proto/scitech.proto b/nexus/models/proto/scitech.proto index e4d82a3..a6ae83f 100644 --- a/nexus/models/proto/scitech.proto +++ b/nexus/models/proto/scitech.proto @@ -30,4 +30,5 @@ message Scitech { int32 updated_at = 22; string volume = 24; int32 year = 29; + string periodical = 32; } diff --git a/nexus/models/proto/scitech_pb2.py b/nexus/models/proto/scitech_pb2.py deleted file mode 100644 index 952e2df..0000000 --- a/nexus/models/proto/scitech_pb2.py +++ /dev/null @@ -1,268 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: nexus/models/proto/scitech.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='nexus/models/proto/scitech.proto', - package='nexus.models.proto', - syntax='proto3', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n nexus/models/proto/scitech.proto\x12\x12nexus.models.proto\"\x93\x04\n\x07Scitech\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x0f\n\x07\x61uthors\x18\x02 \x03(\t\x12\n\n\x02\x63u\x18\x03 \x01(\t\x12\x0e\n\x06\x63u_suf\x18\x04 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\x12\x0b\n\x03\x64oi\x18\x06 \x01(\t\x12\x17\n\x0f\x64ownloads_count\x18\x1c \x01(\r\x12\x0f\n\x07\x65\x64ition\x18\x07 \x01(\t\x12\x11\n\textension\x18\x08 \x01(\t\x12\x12\n\nfiction_id\x18\t \x01(\x03\x12\x10\n\x08\x66ilesize\x18\n \x01(\x04\x12\x18\n\x10ipfs_multihashes\x18\x1e \x03(\t\x12\x12\n\nis_deleted\x18\x0b \x01(\x08\x12\r\n\x05isbns\x18\x0c \x03(\t\x12\x16\n\x0ehas_duplicates\x18\x1f \x01(\x08\x12\x13\n\tissued_at\x18\x19 \x01(\x03H\x00\x12\x10\n\x08language\x18\r \x01(\t\x12\x11\n\tlibgen_id\x18\x0e \x01(\x03\x12\x15\n\rmeta_language\x18\x0f \x01(\t\x12\x0b\n\x03md5\x18\x10 \x01(\t\x12\x13\n\x0boriginal_id\x18\x17 \x01(\x03\x12\r\n\x05pages\x18\x11 \x01(\r\x12\x0e\n\x06series\x18\x12 \x01(\t\x12\x0c\n\x04tags\x18\x13 \x03(\t\x12\r\n\x05title\x18\x15 \x01(\t\x12\x12\n\nupdated_at\x18\x16 \x01(\x05\x12\x0e\n\x06volume\x18\x18 \x01(\t\x12\x0c\n\x04year\x18\x1d \x01(\tB\x14\n\x12optional_issued_atb\x06proto3' -) - - - - -_SCITECH = _descriptor.Descriptor( - name='Scitech', - full_name='nexus.models.proto.Scitech', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='id', full_name='nexus.models.proto.Scitech.id', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='authors', full_name='nexus.models.proto.Scitech.authors', index=1, - number=2, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cu', full_name='nexus.models.proto.Scitech.cu', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cu_suf', full_name='nexus.models.proto.Scitech.cu_suf', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='description', full_name='nexus.models.proto.Scitech.description', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='doi', full_name='nexus.models.proto.Scitech.doi', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='downloads_count', full_name='nexus.models.proto.Scitech.downloads_count', index=6, - number=28, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='edition', full_name='nexus.models.proto.Scitech.edition', index=7, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='nexus.models.proto.Scitech.extension', index=8, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='fiction_id', full_name='nexus.models.proto.Scitech.fiction_id', index=9, - number=9, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='filesize', full_name='nexus.models.proto.Scitech.filesize', index=10, - number=10, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ipfs_multihashes', full_name='nexus.models.proto.Scitech.ipfs_multihashes', index=11, - number=30, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_deleted', full_name='nexus.models.proto.Scitech.is_deleted', index=12, - number=11, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='isbns', full_name='nexus.models.proto.Scitech.isbns', index=13, - number=12, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='has_duplicates', full_name='nexus.models.proto.Scitech.has_duplicates', index=14, - number=31, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='issued_at', full_name='nexus.models.proto.Scitech.issued_at', index=15, - number=25, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='language', full_name='nexus.models.proto.Scitech.language', index=16, - number=13, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='libgen_id', full_name='nexus.models.proto.Scitech.libgen_id', index=17, - number=14, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='meta_language', full_name='nexus.models.proto.Scitech.meta_language', index=18, - number=15, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='md5', full_name='nexus.models.proto.Scitech.md5', index=19, - number=16, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='original_id', full_name='nexus.models.proto.Scitech.original_id', index=20, - number=23, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pages', full_name='nexus.models.proto.Scitech.pages', index=21, - number=17, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='series', full_name='nexus.models.proto.Scitech.series', index=22, - number=18, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='tags', full_name='nexus.models.proto.Scitech.tags', index=23, - number=19, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='title', full_name='nexus.models.proto.Scitech.title', index=24, - number=21, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='updated_at', full_name='nexus.models.proto.Scitech.updated_at', index=25, - number=22, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='volume', full_name='nexus.models.proto.Scitech.volume', index=26, - number=24, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='year', full_name='nexus.models.proto.Scitech.year', index=27, - number=29, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name='optional_issued_at', full_name='nexus.models.proto.Scitech.optional_issued_at', - index=0, containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[]), - ], - serialized_start=57, - serialized_end=588, -) - -_SCITECH.oneofs_by_name['optional_issued_at'].fields.append( - _SCITECH.fields_by_name['issued_at']) -_SCITECH.fields_by_name['issued_at'].containing_oneof = _SCITECH.oneofs_by_name['optional_issued_at'] -DESCRIPTOR.message_types_by_name['Scitech'] = _SCITECH -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Scitech = _reflection.GeneratedProtocolMessageType('Scitech', (_message.Message,), { - 'DESCRIPTOR' : _SCITECH, - '__module__' : 'nexus.models.proto.scitech_pb2' - # @@protoc_insertion_point(class_scope:nexus.models.proto.Scitech) - }) -_sym_db.RegisterMessage(Scitech) - - -# @@protoc_insertion_point(module_scope) diff --git a/nexus/models/proto/sharience.proto b/nexus/models/proto/sharience.proto index 207a6e4..cd7aa4c 100644 --- a/nexus/models/proto/sharience.proto +++ b/nexus/models/proto/sharience.proto @@ -9,4 +9,6 @@ message Sharience { string md5 = 5; uint32 filesize = 6; repeated string ipfs_multihashes = 7; + string abstract = 8; + string content = 9; } diff --git a/nexus/models/proto/sharience_pb2.py b/nexus/models/proto/sharience_pb2.py deleted file mode 100644 index 9fcb00b..0000000 --- a/nexus/models/proto/sharience_pb2.py +++ /dev/null @@ -1,120 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: nexus/models/proto/sharience.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='nexus/models/proto/sharience.proto', - package='nexus.models.proto', - syntax='proto3', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\"nexus/models/proto/sharience.proto\x12\x12nexus.models.proto\"\xa6\x01\n\tSharience\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x11\n\tparent_id\x18\x02 \x01(\x03\x12\x13\n\x0buploader_id\x18\x03 \x01(\x03\x12\x12\n\nupdated_at\x18\x04 \x01(\r\x12\x0b\n\x03md5\x18\x05 \x01(\t\x12\x10\n\x08\x66ilesize\x18\x06 \x01(\r\x12\x18\n\x10ipfs_multihashes\x18\x07 \x03(\t\x12\x18\n\x10telegram_file_id\x18\x08 \x01(\tb\x06proto3' -) - - - - -_SHARIENCE = _descriptor.Descriptor( - name='Sharience', - full_name='nexus.models.proto.Sharience', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='id', full_name='nexus.models.proto.Sharience.id', index=0, - number=1, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='parent_id', full_name='nexus.models.proto.Sharience.parent_id', index=1, - number=2, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='uploader_id', full_name='nexus.models.proto.Sharience.uploader_id', index=2, - number=3, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='updated_at', full_name='nexus.models.proto.Sharience.updated_at', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='md5', full_name='nexus.models.proto.Sharience.md5', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='filesize', full_name='nexus.models.proto.Sharience.filesize', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ipfs_multihashes', full_name='nexus.models.proto.Sharience.ipfs_multihashes', index=6, - number=7, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='telegram_file_id', full_name='nexus.models.proto.Sharience.telegram_file_id', index=7, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=59, - serialized_end=225, -) - -DESCRIPTOR.message_types_by_name['Sharience'] = _SHARIENCE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Sharience = _reflection.GeneratedProtocolMessageType('Sharience', (_message.Message,), { - 'DESCRIPTOR' : _SHARIENCE, - '__module__' : 'nexus.models.proto.sharience_pb2' - # @@protoc_insertion_point(class_scope:nexus.models.proto.Sharience) - }) -_sym_db.RegisterMessage(Sharience) - - -# @@protoc_insertion_point(module_scope) diff --git a/nexus/models/proto/typed_document_pb2.py b/nexus/models/proto/typed_document_pb2.py deleted file mode 100644 index f784e80..0000000 --- a/nexus/models/proto/typed_document_pb2.py +++ /dev/null @@ -1,108 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: nexus/models/proto/typed_document.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from nexus.models.proto import \ - scimag_pb2 as nexus_dot_models_dot_proto_dot_scimag__pb2 -from nexus.models.proto import \ - scitech_pb2 as nexus_dot_models_dot_proto_dot_scitech__pb2 -from nexus.models.proto import \ - sharience_pb2 as nexus_dot_models_dot_proto_dot_sharience__pb2 - -DESCRIPTOR = _descriptor.FileDescriptor( - name='nexus/models/proto/typed_document.proto', - package='nexus.models.proto', - syntax='proto3', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\'nexus/models/proto/typed_document.proto\x12\x12nexus.models.proto\x1a\x1fnexus/models/proto/scimag.proto\x1a nexus/models/proto/scitech.proto\x1a\"nexus/models/proto/sharience.proto\"\xad\x01\n\rTypedDocument\x12,\n\x06scimag\x18\x01 \x01(\x0b\x32\x1a.nexus.models.proto.ScimagH\x00\x12.\n\x07scitech\x18\x02 \x01(\x0b\x32\x1b.nexus.models.proto.ScitechH\x00\x12\x32\n\tsharience\x18\x03 \x01(\x0b\x32\x1d.nexus.models.proto.SharienceH\x00\x42\n\n\x08\x64ocumentb\x06proto3' - , - dependencies=[nexus_dot_models_dot_proto_dot_scimag__pb2.DESCRIPTOR,nexus_dot_models_dot_proto_dot_scitech__pb2.DESCRIPTOR,nexus_dot_models_dot_proto_dot_sharience__pb2.DESCRIPTOR,]) - - - - -_TYPEDDOCUMENT = _descriptor.Descriptor( - name='TypedDocument', - full_name='nexus.models.proto.TypedDocument', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='scimag', full_name='nexus.models.proto.TypedDocument.scimag', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='scitech', full_name='nexus.models.proto.TypedDocument.scitech', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sharience', full_name='nexus.models.proto.TypedDocument.sharience', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name='document', full_name='nexus.models.proto.TypedDocument.document', - index=0, containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[]), - ], - serialized_start=167, - serialized_end=340, -) - -_TYPEDDOCUMENT.fields_by_name['scimag'].message_type = nexus_dot_models_dot_proto_dot_scimag__pb2._SCIMAG -_TYPEDDOCUMENT.fields_by_name['scitech'].message_type = nexus_dot_models_dot_proto_dot_scitech__pb2._SCITECH -_TYPEDDOCUMENT.fields_by_name['sharience'].message_type = nexus_dot_models_dot_proto_dot_sharience__pb2._SHARIENCE -_TYPEDDOCUMENT.oneofs_by_name['document'].fields.append( - _TYPEDDOCUMENT.fields_by_name['scimag']) -_TYPEDDOCUMENT.fields_by_name['scimag'].containing_oneof = _TYPEDDOCUMENT.oneofs_by_name['document'] -_TYPEDDOCUMENT.oneofs_by_name['document'].fields.append( - _TYPEDDOCUMENT.fields_by_name['scitech']) -_TYPEDDOCUMENT.fields_by_name['scitech'].containing_oneof = _TYPEDDOCUMENT.oneofs_by_name['document'] -_TYPEDDOCUMENT.oneofs_by_name['document'].fields.append( - _TYPEDDOCUMENT.fields_by_name['sharience']) -_TYPEDDOCUMENT.fields_by_name['sharience'].containing_oneof = _TYPEDDOCUMENT.oneofs_by_name['document'] -DESCRIPTOR.message_types_by_name['TypedDocument'] = _TYPEDDOCUMENT -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -TypedDocument = _reflection.GeneratedProtocolMessageType('TypedDocument', (_message.Message,), { - 'DESCRIPTOR' : _TYPEDDOCUMENT, - '__module__' : 'nexus.models.proto.typed_document_pb2' - # @@protoc_insertion_point(class_scope:nexus.models.proto.TypedDocument) - }) -_sym_db.RegisterMessage(TypedDocument) - - -# @@protoc_insertion_point(module_scope) diff --git a/nexus/nlptools/BUILD.bazel b/nexus/nlptools/BUILD.bazel deleted file mode 100644 index 245969b..0000000 --- a/nexus/nlptools/BUILD.bazel +++ /dev/null @@ -1,18 +0,0 @@ -load("@pip_modules//:requirements.bzl", "requirement") -load("@rules_python//python:defs.bzl", "py_library") - -py_library( - name = "nlptools", - srcs = glob( - ["**/*.py"], - exclude = ["tests/**"], - ), - srcs_version = "PY3", - visibility = ["//visibility:public"], - deps = [ - requirement("emoji"), - requirement("lemminflect"), - requirement("pycld3"), - requirement("spacy"), - ], -) diff --git a/nexus/nlptools/__init__.py b/nexus/nlptools/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/nexus/nlptools/language_detect.py b/nexus/nlptools/language_detect.py deleted file mode 100644 index 42cc4af..0000000 --- a/nexus/nlptools/language_detect.py +++ /dev/null @@ -1,7 +0,0 @@ -import cld3 - - -def detect_language(text: str) -> str: - prediction = cld3.get_language(text) - if prediction and prediction.is_reliable: - return prediction.language diff --git a/nexus/nlptools/languages.py b/nexus/nlptools/languages.py deleted file mode 100644 index c2b8ee7..0000000 --- a/nexus/nlptools/languages.py +++ /dev/null @@ -1,24 +0,0 @@ -import enum - - -class Language(enum.IntEnum): - unknown_language = 0 - am = 1 - ar = 2 - bn = 3 - de = 4 - en = 5 - es = 6 - fa = 7 - fr = 8 - hi = 9 - id = 10 - it = 11 - ja = 12 - ms = 13 - pt = 14 - ru = 15 - tg = 16 - uk = 17 - uz = 18 - zh = 19 diff --git a/nexus/nlptools/morph.py b/nexus/nlptools/morph.py deleted file mode 100644 index 81cbf13..0000000 --- a/nexus/nlptools/morph.py +++ /dev/null @@ -1,29 +0,0 @@ -import lemminflect # noqa -import spacy - - -class EnglishMorphology: - VERBS = {'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ'} - ADJS = {'JJ', 'JJR', 'JJS'} - NOUNS = {'NN', 'NNP', 'NNPS', 'NNS'} - ADVERBS = {'RB', 'RBR', 'RBS'} - - WORD_KINDS = [VERBS, ADJS, NOUNS, ADVERBS] - - def __init__(self, name): - self.nlp = spacy.load(name) - - def derive_forms(self, word): - forms = set() - word = self.nlp(word)[0] - inflected = False - for kind in self.WORD_KINDS: - if word.tag_ in kind: - for w in kind: - inflection = word._.inflect(w) - if inflection: - inflected = True - forms.add(word._.inflect(w)) - if not inflected and word: - forms.add(str(word)) - return list(sorted(forms)) diff --git a/nexus/nlptools/regex.py b/nexus/nlptools/regex.py deleted file mode 100644 index 732b82b..0000000 --- a/nexus/nlptools/regex.py +++ /dev/null @@ -1,33 +0,0 @@ -import re - -from emoji import get_emoji_regexp - -NON_ALNUMWHITESPACE_REGEX = re.compile(r'([^\s\w])+') -EMAIL_REGEX = re.compile(r'([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})') -EMOJI_REGEX = get_emoji_regexp() -HASHTAG_REGEX = re.compile(r'([#@]+)([A-Za-z0-9_]+)') -MULTIWHITESPACE_REGEX = re.compile(r"\s+") -STICKER_REGEX = re.compile( - '^[\U0001F1E0-\U0001F1FF' - '\U0001F300-\U0001F5FF' - '\U0001F600-\U0001F64F' - '\U0001F680-\U0001F6FF' - '\U0001F700-\U0001F77F' - '\U0001F780-\U0001F7FF' - '\U0001F800-\U0001F8FF' - '\U0001F900-\U0001F9FF' - '\U0001FA00-\U0001FA6F' - '\U0001FA70-\U0001FAFF' - '\U00002702-\U000027B0]$', - flags=re.UNICODE, -) -URL_REGEX = re.compile(r'^(https?|ftp)?:\/\/[^\s\/$.?#]+\.[^\s]*$') -HIDDEN_CHAR = '‌' -TELEGRAM_LINK_REGEX = re.compile('(?:https?://)?t\\.me/(?!joinchat/)([A-Za-z0-9_]+)') - -DOI_REGEX = re.compile(r'(10.\d{4,9})\s?/\s?([-._;()<>/:A-Za-z0-9]+[^.?\s])') -ISBN_REGEX = re.compile(r'^(?:[iI][sS][bB][nN]\:?\s*)?((97(8|9))?\-?\d{9}(\d|X))$') -MD5_REGEX = re.compile(r'([A-Fa-f0-9]{32})') -NID_REGEX = re.compile(r'(?:[Nn][Ii][Dd]\s?:?\s*)([0-9]+)') -ONLY_DOI_REGEX = re.compile(r'^(10.\d{4,9})\s?/\s?([-._;()<>/:A-Za-z0-9]+[^.?\s])$') -PUBMED_ID_REGEX = re.compile(r'(?:(?:https?://)?(?:www.)?ncbi.nlm.nih.gov/pubmed/|[Pp][Mm][Ii][Dd]\s?:?\s*)([0-9]+)') diff --git a/nexus/nlptools/tests/BUILD.bazel b/nexus/nlptools/tests/BUILD.bazel deleted file mode 100644 index 1d4eb81..0000000 --- a/nexus/nlptools/tests/BUILD.bazel +++ /dev/null @@ -1,12 +0,0 @@ -load("@pip_modules//:requirements.bzl", "requirement") -load("@rules_python//python:defs.bzl", "py_test") - -py_test( - name = "tests", - srcs = glob(["**/*.py"]), - main = "test.py", - deps = [ - requirement("pytest"), - "//nexus/nlptools", - ], -) diff --git a/nexus/nlptools/tests/__init__.py b/nexus/nlptools/tests/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/nexus/nlptools/tests/test.py b/nexus/nlptools/tests/test.py deleted file mode 100644 index 48a72bb..0000000 --- a/nexus/nlptools/tests/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import os -import sys - -import pytest - -if __name__ == '__main__': - sys.exit(pytest.main([os.path.dirname(__file__), '-vvv', '-W', 'ignore::DeprecationWarning'])) diff --git a/nexus/nlptools/tests/test_utils.py b/nexus/nlptools/tests/test_utils.py deleted file mode 100644 index b392b62..0000000 --- a/nexus/nlptools/tests/test_utils.py +++ /dev/null @@ -1,20 +0,0 @@ -from nexus.nlptools.utils import ( - cast_string_to_single_string, - despace, - remove_hashtags, -) - - -def test_cast_string_to_single_string(): - assert cast_string_to_single_string('kek kek 123\nkek') == 'kek-kek-123-kek' - - -def test_despace(): - assert despace( - 'ArXiv Papers Related to Computer Science, AI , Deep Learning, Computer Vision, NLP, etc\n\n\n' - 'From: @ai_python' - ) == 'ArXiv Papers Related to Computer Science, AI , Deep Learning, Computer Vision, NLP, etc\nFrom: @ai_python' - - -def test_remove_hashtags(): - assert remove_hashtags('#ny riot') == ' riot' diff --git a/nexus/nlptools/utils.py b/nexus/nlptools/utils.py deleted file mode 100644 index 0f02cc5..0000000 --- a/nexus/nlptools/utils.py +++ /dev/null @@ -1,109 +0,0 @@ -import re -import struct -import unicodedata - -from .regex import ( - EMAIL_REGEX, - EMOJI_REGEX, - HASHTAG_REGEX, - MULTIWHITESPACE_REGEX, - NON_ALNUMWHITESPACE_REGEX, - TELEGRAM_LINK_REGEX, - URL_REGEX, -) - - -def add_surrogate(text): - return ''.join( - # SMP -> Surrogate Pairs (Telegram offsets are calculated with these). - # See https://en.wikipedia.org/wiki/Plane_(Unicode)#Overview for more. - ''.join(chr(y) for y in struct.unpack('\g<2>', text, flags=re.MULTILINE) - return text - - -def normalize_string(string): - string = re.sub('[^a-zA-Z0-9_\\-]+', '', string.lower().strip().replace(' ', '-')) - return unicodedata.normalize('NFKD', string).encode('ascii', 'ignore').decode('utf-8') - - -def remove_emails(text): - return re.sub(EMAIL_REGEX, '', text) - - -def remove_emoji(text): - text = re.sub(EMOJI_REGEX, '', text) - text = re.sub(u'\ufe0f', '', text) - return text - - -def remove_hashtags(text): - return re.sub(HASHTAG_REGEX, '', text) - - -def remove_url(text): - return re.sub(URL_REGEX, '', text) - - -def replace_telegram_link(text): - return re.sub(TELEGRAM_LINK_REGEX, r'@\1', text) - - -def split_at(s, pos): - if len(s) < pos: - return s - pos -= 10 - pos = max(0, pos) - for p in range(pos, min(pos + 20, len(s) - 1)): - if s[p] in [' ', '\n', '.', ',', ':', ';', '-']: - return s[:p] + '...' - return s[:pos] + '...' - - -def unwind_hashtags(text): - return re.sub(HASHTAG_REGEX, r'\2', text) diff --git a/nexus/pipe/BUILD.bazel b/nexus/pipe/BUILD.bazel index 0253461..9f6431c 100644 --- a/nexus/pipe/BUILD.bazel +++ b/nexus/pipe/BUILD.bazel @@ -20,6 +20,7 @@ py3_image( visibility = ["//visibility:public"], deps = [ requirement("aiokafka"), + requirement("aiosumma"), requirement("orjson"), requirement("pypika"), requirement("aiocrossref"), @@ -29,7 +30,6 @@ py3_image( "//library/logging", "//nexus/actions", "//nexus/models/proto:proto_py", - "//summa:aiosumma", requirement("izihawa_utils"), ], ) diff --git a/nexus/pipe/configs/base.yaml b/nexus/pipe/configs/base.yaml index 3c4057c..7900787 100644 --- a/nexus/pipe/configs/base.yaml +++ b/nexus/pipe/configs/base.yaml @@ -2,7 +2,7 @@ log_path: '/var/log/nexus-pipe/{{ ENV_TYPE }}' pipe: - brokers: | + bootstrap_servers: | kafka-0.example.net schema: - consumers: @@ -14,7 +14,7 @@ pipe: processors: - class: nexus.pipe.processors.CrossReferencesProcessor kwargs: - brokers: | + bootstrap_servers: | kafka-0.example.net database: database: nexus @@ -40,9 +40,8 @@ pipe: - class: nexus.actions.document_operations_pb.update_document_scimag_pb.FillFromExternalSourceAction kwargs: crossref: - rps: 50 - user_agent: 'ScienceLegion/1.0 (Linux x86_64; ) ScienceLegion/1.0.0' ttl_dns_cache: 120 + user_agent: 'ScienceLegion/1.0 (Linux x86_64; ) ScienceLegion/1.0.0' - class: nexus.actions.document_operations_pb.update_document_scimag_pb.CleanAction - class: nexus.actions.document_operations_pb.update_document_scimag_pb.ToPostgresAction kwargs: @@ -53,9 +52,11 @@ pipe: username: '{{ DATABASE_USERNAME }}' - class: nexus.actions.document_operations_pb.update_document_scimag_pb.ReferencesToKafkaAction kwargs: - brokers: | - kafka-0.example.net - topic: cross_references + kafka: + bootstrap_servers: | + kafka-0.example.net + max_request_size: 1048576 + topic: cross_references filter: class: nexus.pipe.filters.DocumentOperationFilter kwargs: diff --git a/nexus/pipe/configs/logging.yaml b/nexus/pipe/configs/logging.yaml index f25c43f..6206ff4 100644 --- a/nexus/pipe/configs/logging.yaml +++ b/nexus/pipe/configs/logging.yaml @@ -8,11 +8,15 @@ logging: traceback: class: library.logging.formatters.TracebackFormatter handlers: - debug: + console: class: logging.StreamHandler + level: WARNING + stream: 'ext://sys.stderr' + debug: + class: library.logging.handlers.BaseFileHandler + filename: '{{ log_path }}/debug.log' formatter: default level: DEBUG - stream: 'ext://sys.stderr' error: class: library.logging.handlers.BaseFileHandler filename: '{{ log_path }}/error.log' @@ -48,6 +52,7 @@ logging: propagate: false error: handlers: + - console - error - traceback - warning @@ -58,6 +63,7 @@ logging: propagate: false root: handlers: + - console - debug - error - warning diff --git a/nexus/pipe/consumers/base.py b/nexus/pipe/consumers/base.py index f1b879e..e711074 100644 --- a/nexus/pipe/consumers/base.py +++ b/nexus/pipe/consumers/base.py @@ -15,6 +15,7 @@ from aiokafka.errors import ( ) from aiokit import AioRootThing from google.protobuf.json_format import ParseDict +from library.logging import error_log from nexus.actions.exceptions import ( ConflictError, InterruptProcessing, @@ -23,6 +24,8 @@ from nexus.pipe.processors.base import Processor class BaseConsumer(AioRootThing): + auto_commit = True + def __init__(self, processors: List[Processor], topic_names: Union[str, List[str]], bootstrap_servers: str, group_id: str): super().__init__() @@ -32,7 +35,7 @@ class BaseConsumer(AioRootThing): self.topic_names = topic_names self.bootstrap_servers = bootstrap_servers self.group_id = group_id - self.consumer = None + self.consumer_task = None self.starts.extend(self.processors) def create_consumer(self): @@ -42,27 +45,17 @@ class BaseConsumer(AioRootThing): loop=asyncio.get_event_loop(), bootstrap_servers=self.bootstrap_servers, group_id=self.group_id, - enable_auto_commit=False, + enable_auto_commit=self.auto_commit, + max_poll_interval_ms=600000, + max_poll_records=20, ) def preprocess(self, msg): return msg - async def start(self): - logging.getLogger('statbox').info({ - 'action': 'starting', - 'group_id': self.group_id, - 'topic_names': self.topic_names, - }) - self.consumer = self.create_consumer() - await self.consumer.start() - logging.getLogger('statbox').info({ - 'action': 'started', - 'group_id': self.group_id, - 'topic_names': self.topic_names, - }) + async def consume(self, consumer): try: - async for msg in self.consumer: + async for msg in consumer: preprocessed_msg = self.preprocess(msg) if preprocessed_msg: for processor in self.processors: @@ -72,17 +65,30 @@ class BaseConsumer(AioRootThing): await processor.process(preprocessed_msg) except (ConflictError, InterruptProcessing) as e: logging.getLogger('statbox').info(e) - try: - await self.consumer.commit() - except CommitFailedError as e: - logging.getLogger('error').error(e) - except ConsumerStoppedError: + except (asyncio.CancelledError, ConsumerStoppedError): pass + finally: + await consumer.stop() + + async def start(self): + logging.getLogger('statbox').info({ + 'action': 'start', + 'group_id': self.group_id, + 'topic_names': self.topic_names, + }) + consumer = self.create_consumer() + await consumer.start() + logging.getLogger('statbox').info({ + 'action': 'started', + 'group_id': self.group_id, + 'topic_names': self.topic_names, + }) + self.consumer_task = asyncio.create_task(self.consume(consumer)) async def stop(self): - if not self.consumer: - return - await self.consumer.stop() + if self.consumer_task: + self.consumer_task.cancel() + await self.consumer_task class BasePbConsumer(BaseConsumer): @@ -105,42 +111,49 @@ class BaseJsonConsumer(BaseConsumer): class BaseBulkConsumer(BaseConsumer): + auto_commit = False bulk_size = 20 timeout = 1 + async def consume(self, consumer): + try: + while self.started: + try: + result = await consumer.getmany(timeout_ms=self.timeout * 1000, max_records=self.bulk_size) + except (ConsumerStoppedError, asyncio.CancelledError): + break + collector = [] + for tp, messages in result.items(): + if messages: + for message in messages: + preprocessed_msg = self.preprocess(message) + if preprocessed_msg: + collector.append(preprocessed_msg) + for processor in self.processors: + filtered = filter(processor.filter, collector) + try: + await processor.process_bulk(filtered) + except InterruptProcessing as e: + logging.getLogger('statbox').info(e) + try: + await consumer.commit() + except CommitFailedError as e: + error_log(e) + continue + finally: + await consumer.stop() + async def start(self): logging.getLogger('statbox').info({ - 'action': 'starting', + 'action': 'start', 'group_id': self.group_id, 'topic_names': self.topic_names, }) - self.consumer = self.create_consumer() - await self.consumer.start() + consumer = self.create_consumer() + await consumer.start() logging.getLogger('statbox').info({ 'action': 'started', 'group_id': self.group_id, 'topic_names': self.topic_names, }) - while self.started: - try: - result = await self.consumer.getmany(timeout_ms=self.timeout * 1000, max_records=self.bulk_size) - except ConsumerStoppedError: - break - collector = [] - for tp, messages in result.items(): - if messages: - for message in messages: - preprocessed_msg = self.preprocess(message) - if preprocessed_msg: - collector.append(preprocessed_msg) - for processor in self.processors: - filtered = filter(processor.filter, collector) - try: - await processor.process_bulk(filtered) - except InterruptProcessing as e: - logging.getLogger('statbox').info(e) - try: - await self.consumer.commit() - except CommitFailedError as e: - logging.getLogger('error').error(e) - continue + self.consumer_task = asyncio.create_task(self.consume(consumer)) diff --git a/nexus/pipe/main.py b/nexus/pipe/main.py index 00ca607..d7d19b6 100644 --- a/nexus/pipe/main.py +++ b/nexus/pipe/main.py @@ -1,5 +1,4 @@ import logging -import ssl from functools import partial from aiokit import MultiprocessAsyncExecutor @@ -17,21 +16,13 @@ def create_aiothing(consumer_cls, topic_names, group_id, processors, shard): return consumer_cls( topic_names=topic_names, processors=processors, - bootstrap_servers=config['pipe']['brokers'], + bootstrap_servers=config['pipe']['bootstrap_servers'], group_id=group_id, ) -# OpenSSL issue: https://github.com/psf/requests/issues/4775 -def set_ssl_hack(): - ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) - ssl_context.set_ciphers('HIGH:!DH:!aNULL') - ssl_context.set_ciphers('DEFAULT@SECLEVEL=1') - - def main(): configure_logging(config) - set_ssl_hack() logger = logging.getLogger('statbox') logger.info({ diff --git a/nexus/pipe/processors/base.py b/nexus/pipe/processors/base.py index 8d9389b..a4298a6 100644 --- a/nexus/pipe/processors/base.py +++ b/nexus/pipe/processors/base.py @@ -29,8 +29,8 @@ class ActionProcessor(Processor): super().__init__() self.actions = [instantiate_object(action) for action in actions] self.filter_object = instantiate_object(filter) - self.waits.append(self.filter_object) - self.waits.extend(self.actions) + self.starts.append(self.filter_object) + self.starts.extend(self.actions) def filter(self, message) -> bool: return self.filter_object.filter(message) diff --git a/nexus/pipe/processors/cross_references_processor.py b/nexus/pipe/processors/cross_references_processor.py index 63ebc47..c67c2df 100644 --- a/nexus/pipe/processors/cross_references_processor.py +++ b/nexus/pipe/processors/cross_references_processor.py @@ -34,31 +34,32 @@ class CrossReferencesProcessor(Processor): cross_references_table = Table('cross_references') topic = 'cross_references' - def __init__(self, brokers, database): + def __init__(self, bootstrap_servers, database): super().__init__() self.pool_holder = AioPostgresPoolHolder( conninfo=f'dbname={database["database"]} ' f'user={database["username"]} ' f'password={database["password"]} ' f'host={database["host"]}', - max_size=2, + max_size=1, ) - self.brokers = brokers + self.bootstrap_servers = bootstrap_servers self.producer = None - self.waits.append(self.pool_holder) + self.starts.append(self.pool_holder) async def start(self): self.producer = self.get_producer() await self.producer.start() async def stop(self): - await self.producer.stop() - self.producer = None + if self.producer: + await self.producer.stop() + self.producer = None def get_producer(self): return AIOKafkaProducer( loop=asyncio.get_event_loop(), - bootstrap_servers=self.brokers, + bootstrap_servers=self.bootstrap_servers, ) @retry(retry=retry_if_exception_type(NeedRetryError), wait=wait_fixed(15)) @@ -74,8 +75,7 @@ class CrossReferencesProcessor(Processor): }) continue - now = time.time() - if now - message.last_retry_unixtime < 60: + if time.time() - message.last_retry_unixtime < 60: need_delay = True await self.producer.send_and_wait( 'cross_references', @@ -97,15 +97,14 @@ class CrossReferencesProcessor(Processor): if message.retry_count == 0: document_operation = DocumentOperationPb( update_document=UpdateDocumentPb( - commit=True, - reindex=True, + full_text_index=True, should_fill_from_external_source=True, typed_document=TypedDocumentPb(scimag=ScimagPb(doi=target)), ), ) await self.producer.send_and_wait( - 'operations_binary_hp', + 'operations_binary', document_operation.SerializeToString(), ) new_message = CrossReferenceOperationPb() diff --git a/nexus/pylon/BUILD.bazel b/nexus/pylon/BUILD.bazel index b5be0f8..4c3ab61 100644 --- a/nexus/pylon/BUILD.bazel +++ b/nexus/pylon/BUILD.bazel @@ -4,17 +4,26 @@ load("@pip_modules//:requirements.bzl", "requirement") py_library( name = "pylon", srcs = glob(["**/*.py"]), + data = [ + "configs/pylon.yaml", + ], visibility = ["//visibility:public"], deps = [ requirement("aiodns"), + requirement("aiofiles"), requirement("aiohttp"), requirement("aiohttp_socks"), requirement("brotli"), requirement("cchardet"), + requirement("certifi"), + requirement("jq"), requirement("orjson"), + requirement("pypdf2"), requirement("python-socks"), + requirement("selenium"), requirement("tenacity"), requirement("aiokit"), + "//library/configurator", "//library/logging", "//nexus/pylon/proto:pylon_proto_py", ], diff --git a/nexus/pylon/README.md b/nexus/pylon/README.md index 41e2f9f..57d3fd1 100644 --- a/nexus/pylon/README.md +++ b/nexus/pylon/README.md @@ -13,9 +13,9 @@ Casual download bazel run -c opt cli -- doi 10.1056/NEJMoa2033700 --output article.pdf ``` -Download with proxy +Download with proxies ```bash bazel run -c opt cli -- md5 278C3A72B7B04717361501B8642857DF \ --output file.pdf \ - --proxy socks5://127.0.0.1:9050 + --proxies socks5://127.0.0.1:9050 ``` diff --git a/nexus/pylon/__init__.py b/nexus/pylon/__init__.py index e69de29..03800c0 100644 --- a/nexus/pylon/__init__.py +++ b/nexus/pylon/__init__.py @@ -0,0 +1,7 @@ +from . import ( + drivers, + resolvers, + validators, +) + +__all__ = ['drivers', 'resolvers', 'validators'] diff --git a/nexus/pylon/cli.py b/nexus/pylon/cli.py index 585696e..476d9eb 100644 --- a/nexus/pylon/cli.py +++ b/nexus/pylon/cli.py @@ -1,5 +1,6 @@ +import logging import os -from typing import Optional +import sys import fire from aiokit.utils import sync_fu @@ -7,6 +8,7 @@ from nexus.pylon.client import ( DownloadError, PylonClient, ) +from nexus.pylon.configs import get_config from nexus.pylon.proto.file_pb2 import FileResponse as FileResponsePb @@ -29,51 +31,43 @@ async def fetch( async for resp in iter: if resp.HasField('status'): if resp.status == FileResponsePb.Status.BEGIN_TRANSMISSION: - print(f'Started transmission from {resp.source}...', end='\r') + print(f'Started transmission from {resp.source}...', end='\r', file=sys.stderr) last_len = 0 last_source = resp.source collected = bytes() elif resp.HasField('chunk'): if len(collected) - last_len > 1024 * 100: - print(f'Loaded {len(collected)} bytes from {resp.source}', end='\r') + print(f'Loaded {len(collected)} bytes from {resp.source}', end='\r', file=sys.stderr) last_len = len(collected) last_source = resp.source collected += resp.chunk.content with open(resolve_path(output), 'wb') as f: - print(f'Completed! Loaded {len(collected)} bytes from {last_source}') + print(f'Completed! Loaded {len(collected)} bytes from {last_source}', file=sys.stderr) f.write(collected) except DownloadError: print('File not found') -async def fetch_by_md5( - md5: str, +async def download( output: str, - proxy: Optional[str] = None, - resolve_proxy: Optional[str] = None, + debug: bool = False, + **params, ): - if proxy and not resolve_proxy: - resolve_proxy = proxy - p = PylonClient(proxy=proxy, resolve_proxy=resolve_proxy) - return await fetch(iter=p.by_md5(md5=md5), output=output) - - -async def fetch_by_doi( - doi: str, - output: str, - proxy: Optional[str] = None, - resolve_proxy: Optional[str] = None, -): - if proxy and not resolve_proxy: - resolve_proxy = proxy - p = PylonClient(proxy=proxy, resolve_proxy=resolve_proxy) - return await fetch(iter=p.by_doi(doi=doi), output=output) + if debug: + logging.basicConfig(stream=sys.stderr, level=logging.DEBUG) + c = get_config()['pylon'] + p = PylonClient( + proxies=c['proxies'], + source_configs=c['sources'], + default_driver_proxy_list=c['default_driver_proxy_list'], + downloads_directory=c['downloads_directory'], + ) + return await fetch(iter=p.download(params=params), output=output) def main(): fire.Fire({ - 'doi': sync_fu(fetch_by_doi), - 'md5': sync_fu(fetch_by_md5), + 'download': sync_fu(download), }) diff --git a/nexus/pylon/client.py b/nexus/pylon/client.py index 2d3a1ea..df46d2d 100644 --- a/nexus/pylon/client.py +++ b/nexus/pylon/client.py @@ -1,7 +1,7 @@ from typing import ( AsyncIterable, - Callable, - Iterable, + Dict, + List, Optional, ) @@ -12,74 +12,44 @@ from nexus.pylon.exceptions import ( NotFoundError, ) from nexus.pylon.proto.file_pb2 import FileResponse as FileResponsePb -from nexus.pylon.sources import ( - BaseSource, - LibgenDoiSource, - LibgenMd5Source, - LibraryLolSource, - SciHubMksaTopSource, - SciHubSeSource, -) -from nexus.pylon.sources.specific import get_specific_sources_for_doi +from nexus.pylon.proxy_manager import ProxyManager +from nexus.pylon.source import Source class PylonClient(AioThing): - def __init__(self, proxy: Optional[str] = None, resolve_proxy: Optional[str] = None): + def __init__( + self, + source_configs: Optional[List], + proxies: Optional[List[str]] = None, + downloads_directory: Optional[str] = None, + default_driver_proxy_list: [Optional[List]] = None + ): super().__init__() - self.proxy = proxy - self.resolve_proxy = resolve_proxy + self.proxy_manager = ProxyManager(proxies) + self.downloads_directory = downloads_directory + self.default_driver_proxy_list = default_driver_proxy_list + self.sources = [] + for source_config in source_configs: + source = Source.from_config( + proxy_manager=self.proxy_manager, + source_config=source_config, + downloads_directory=downloads_directory, + default_driver_proxy_list=default_driver_proxy_list, + ) + self.sources.append(source) + self.starts.append(source) - async def by_doi( - self, - doi: str, - md5: Optional[str] = None, - error_log_func: Callable = error_log, - ) -> AsyncIterable[FileResponsePb]: - sources = [] - sources.extend(get_specific_sources_for_doi(doi, proxy=self.proxy, resolve_proxy=self.resolve_proxy)) - sources.extend([ - SciHubMksaTopSource(doi=doi, md5=md5, proxy=self.proxy, resolve_proxy=self.resolve_proxy), - SciHubSeSource(doi=doi, md5=md5, proxy=self.proxy, resolve_proxy=self.resolve_proxy), - LibgenDoiSource(doi=doi, md5=md5, proxy=self.proxy, resolve_proxy=self.resolve_proxy), - ]) - sources = filter(lambda x: x.is_enabled, sources) - async for resp in self.download(sources=sources, error_log_func=error_log_func): - yield resp - - async def by_md5( - self, - md5: str, - error_log_func: Callable = error_log, - ) -> AsyncIterable[FileResponsePb]: - sources = filter(lambda x: x.is_enabled, [ - LibraryLolSource(md5=md5, proxy=self.proxy, resolve_proxy=self.resolve_proxy), - LibgenMd5Source(md5=md5, proxy=self.proxy, resolve_proxy=self.resolve_proxy), - ]) - async for resp in self.download(sources=sources, error_log_func=error_log_func): - yield resp - - async def download_source(self, source, error_log_func: Callable = error_log) -> AsyncIterable[FileResponsePb]: - yield FileResponsePb(status=FileResponsePb.Status.RESOLVING, source=source.base_url) - async for prepared_file_request in source.resolve(error_log_func=error_log_func): + async def download(self, params: Dict) -> AsyncIterable[FileResponsePb]: + for source in self.sources: + if not source.is_match(params): + continue try: - async for resp in source.execute_prepared_file_request(prepared_file_request=prepared_file_request): + async for resp in source.download(params): yield resp return - except DownloadError as e: - error_log_func(e) + except NotFoundError: continue - raise DownloadError(error='not_found', source=source.__class__.__name__) - - async def download(self, sources: Iterable[BaseSource], error_log_func: Callable = error_log) -> AsyncIterable[FileResponsePb]: - for source in sources: - await source.start() - try: - async for resp in self.download_source(source, error_log_func=error_log_func): - yield resp - return except DownloadError as e: - error_log_func(e) + error_log(e) continue - finally: - await source.stop() raise NotFoundError() diff --git a/nexus/pylon/configs/__init__.py b/nexus/pylon/configs/__init__.py new file mode 100644 index 0000000..834248b --- /dev/null +++ b/nexus/pylon/configs/__init__.py @@ -0,0 +1,11 @@ +from izihawa_utils import env +from library.configurator import Configurator + + +def get_config(): + return Configurator([ + 'nexus/pylon/configs/pylon.yaml', + ], env_prefix='NEXUS_PYLON') + + +config = get_config() diff --git a/nexus/pylon/configs/pylon.yaml b/nexus/pylon/configs/pylon.yaml new file mode 100644 index 0000000..a455776 --- /dev/null +++ b/nexus/pylon/configs/pylon.yaml @@ -0,0 +1,618 @@ +--- +pylon: + default_driver_proxy_list: + - [proxy1] + - [proxy2] + - [proxy3] + downloads_directory: /downloads + proxies: + - address: proxy1.net:7890 + name: proxy1 + tags: [proxy1] + - address: proxy2.net:7990 + name: proxy2 + tags: [proxy2] + - address: proxy3.net:8090 + name: proxy3 + tags: [proxy3] + sources: + # LibGen.rocks + - driver: + args: + proxy_list: ~ + validator: + class: nexus.pylon.validators.Md5Validator + class: + nexus.pylon.drivers.DirectDriver + matcher: + md5: ^.*$ + resolver: + args: + extractors: + - producer: + format_string: 'http://libgen.rocks/{matched_group}' + group: 0 + re: 'get\.php\?md5=.*&key=[A-Za-z\d]+' + timeout: 25.0 + type: regex + url: https://libgen.rocks/ads.php?md5={md5} + class: nexus.pylon.resolvers.RequestResolver + # LibGen.rocks + - driver: + args: + proxy_list: ~ + class: + nexus.pylon.drivers.DirectDriver + matcher: + doi: ^.*$ + resolver: + args: + extractors: + - producer: + format_string: 'http://libgen.rocks/{matched_group}' + group: 0 + re: 'get\.php\?md5=[a-fA-F\d]+&key=[A-Za-z\d]+(&doi=[^\"]*)+' + timeout: 25.0 + type: regex + url: 'https://libgen.rocks/ads.php?doi={doi}' + class: nexus.pylon.resolvers.RequestResolver + # Library.lol + - driver: + args: + proxy_list: ~ + validator: + class: nexus.pylon.validators.Md5Validator + class: + nexus.pylon.drivers.DirectDriver + matcher: + md5: ^.*$ + resolver: + args: + extractors: + - producer: + format_string: '{matched_group}' + group: 1 + re: 'GET' + timeout: 45.0 + type: regex + - producer: + format_string: '{matched_group}' + group: 0 + re: 'https://ipfs.io/ipfs/[A-Za-z\d]+' + type: regex + - producer: + format_string: '{matched_group}' + group: 0 + re: 'https://cloudflare-ipfs.com/ipfs/[A-Za-z\d]+' + type: regex + url: http://library.lol/main/{md5} + class: nexus.pylon.resolvers.RequestResolver + # library.lol + - driver: + args: + proxy_list: ~ + class: + nexus.pylon.drivers.DirectDriver + matcher: + doi: ^.*$ + resolver: + args: + extractors: + - producer: + format_string: '{matched_group}' + group: 1 + re: 'GET' + timeout: 45.0 + type: regex + url: 'http://library.lol/scimag/{doi}' + class: nexus.pylon.resolvers.RequestResolver + # jamanetwork.com + - driver: + args: + actions: + - selector: '#pdf-link .toolbar-link-text-extra, .contents-tab-contents > #pdf-link .toolbar-link-text-extra' + timeout: 20 + type: wait_css_selector + - type: click + class: + nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.1001/.*$ + # wires.onlinelibrary.wiley.com + - matcher: + doi: ^10.1002/.*$ + resolver: + args: + format_string: 'https://onlinelibrary.wiley.com/doi/pdf/{doi}' + class: nexus.pylon.resolvers.TemplateResolver + # link.springer.com + - matcher: + doi: ^10.(1007|14283)/.*$ + resolver: + args: + format_string: 'https://link.springer.com/content/pdf/{doi}.pdf' + class: nexus.pylon.resolvers.TemplateResolver + # www.sciencedirect.com + - matcher: + doi: ^10.(1016|1053|4103)/.*$ + resolver: + args: + format_string: 'https://www.sciencedirect.com/science/article/pii/{selected}/pdfft?isDTMRedir=true&download=true' + selector: '(.resource.primary.URL | split("/"))[-1]' + timeout: 40.0 + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # www.clinicalkey.com + - driver: + args: + actions: + - selector: '.x-pdf' + timeout: 30.0 + type: wait_css_selector + - type: click + class: + nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.1016/.*$ + # www.cambridge.org + - matcher: + doi: ^10.1017/.*$ + resolver: + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # pubs.acs.org + - matcher: + doi: ^10.1021/.*$ + resolver: + args: + format_string: 'https://pubs.acs.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # www.nature.com + - driver: + args: + actions: + - selector: '#entitlement-box-right-column span' + timeout: 30 + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.1038/.*$ + # www.nejm.org + - matcher: + doi: ^10.1056/.*$ + resolver: + args: + format_string: 'https://www.nejm.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # ascelibrary.org + - matcher: + doi: ^10.1061/.*$ + resolver: + args: + format_string: 'https://ascelibrary.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # www.pnas.org + - matcher: + doi: ^10.1073/.*$ + resolver: + args: + format_string: 'https://www.pnas.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # www.tandfonline.com + - matcher: + doi: ^10.1080/.*$ + resolver: + args: + format_string: 'https://www.tandfonline.com/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # iopscience.iop.org + - matcher: + doi: ^10.1088/.*$ + resolver: + args: + format_string: 'https://iopscience.iop.org/article/{doi}/pdf' + class: nexus.pylon.resolvers.TemplateResolver + # academic.oup.com + - driver: + args: + actions: + - selector: '.pdf-link-text' + timeout: 30 + type: wait_css_selector + - type: click + proxy_list: + - [proxy2] + - [proxy1] + - [proxy3] + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.1093/.*$ + # journals.lww.com + - driver: + args: + actions: + - selector: '.ejp-article-tools__list-icon-holder > .icon-pdf' + timeout: 30.0 + type: wait_css_selector + - type: click + - selector: '.ejp-article-tools__dropdown-list-button > .icon-pdf' + timeout: 5.0 + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.(1097|1213|5435|14309)/.*$ + resolver: + args: + timeout: 30.0 + class: nexus.pylon.resolvers.TemplateResolver + # journals.aps.org + - matcher: + doi: ^10.1103/.*$ + resolver: + args: + selector: '[.link[] | select(.URL | ascii_downcase | endswith("fulltext"))][0].URL' + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # emerald.com + - matcher: + doi: ^10.1108/.*$ + resolver: + args: + format_string: 'https://www.emerald.com/insight/content/doi/{doi}/full/pdf' + class: nexus.pylon.resolvers.TemplateResolver + # ieeexplore.ieee.org + - matcher: + doi: ^10.1109/.*$ + resolver: + args: + format_string: 'https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber={selected}' + selector: '(.resource.primary.URL | split("/"))[-2]' + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # onlinelibrary.wiley.com + - matcher: + doi: ^10.1111/.*$ + resolver: + args: + format_string: 'https://onlinelibrary.wiley.com/doi/pdfdirect/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # asa.scitation.org + - matcher: + doi: ^10.1121/.*$ + resolver: + args: + format_string: 'https://asa.scitation.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # www.science.org + - matcher: + doi: ^10.1126/.*$ + resolver: + args: + format_string: 'https://www.science.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # ^10.1136/.*$ + - driver: + args: + actions: + - selector: '.article-pdf-download > img' + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.1136/.*$ + # ^10.1136/.*$ + - driver: + args: + actions: + - selector: '.icon' + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.1136/.*$ + resolver: + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # dl.acm.org + - matcher: + doi: ^10.1145/.*$ + resolver: + args: + format_string: 'https://dl.acm.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # www.annualreviews.org + - matcher: + doi: ^10.1146/.*$ + resolver: + args: + format_string: 'https://www.annualreviews.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # journals.physiology.org + - matcher: + doi: ^10.1152/.*$ + resolver: + args: + format_string: 'https://journals.physiology.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # ajp.psychiatryonline.org + - matcher: + doi: ^10.1176/.*$ + resolver: + args: + format_string: 'https://ajp.psychiatryonline.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # journals.sagepub.com + - matcher: + doi: ^10.1177/.*$ + resolver: + args: + format_string: 'https://journals.sagepub.com/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # bmcpsychiatry.biomedcentral.com + - matcher: + doi: ^10.1186/.*$ + resolver: + args: + format_string: 'https://bmcpsychiatry.biomedcentral.com/track/pdf/{doi}.pdf' + class: nexus.pylon.resolvers.TemplateResolver + # journals.plos.org + - driver: + args: + proxy_list: ~ + class: nexus.pylon.drivers.direct.DirectDriver + matcher: + doi: ^10.1371/.*$ + resolver: + args: + format_string: 'https://journals.plos.org/plosone/article/file?id={doi}&type=printable' + class: nexus.pylon.resolvers.TemplateResolver + # bioone.org + - driver: + args: + actions: + - selector: 'DOWNLOAD PAPER' + type: wait_link_text + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.(1638|1654|1667|2108)/.*$ + # jasn.asnjournals.org + - driver: + args: + actions: + - selector: 'View PDF' + type: wait_link_text + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.1681/.*$ + # papers.ssrn.com + - driver: + args: + actions: + - selector: '.abstract-buttons:nth-child(1) .primary > span' + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.2139/.*$ + # www.afghandata.org + - driver: + args: + proxy_list: ~ + class: + nexus.pylon.drivers.DirectDriver + matcher: + doi: ^10.(2458|29171)/.*$ + # www.euppublishing.com + - matcher: + doi: ^10.3366/.*$ + resolver: + args: + format_string: 'https://www.euppublishing.com/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # www.frontiersin.org + - driver: + args: + actions: + - selector: '.paper > .dropdown-toggle' + type: wait_css_selector + - type: click + - selector: '.download-files-pdf' + type: wait_css_selector + - type: click + class: + nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.3389/.*$ + resolver: + args: + selector: '[.link[] | select(.URL | ascii_downcase | endswith("full"))][0].URL' + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # bjgp.org + - driver: + args: + actions: + - selector: 'PDF' + type: wait_link_text + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.3399/.*$ + # www.wjgnet.com + - driver: + args: + actions: + - selector: 'Full Article (PDF)' + type: wait_link_text + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.3748/.*$ + resolver: + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # journals.vilniustech.lt + - driver: + args: + actions: + - selector: '.label' + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.3846/.*$ + resolver: + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # isegoria.revistas.csic.es + - matcher: + doi: ^10.3989/.*$ + resolver: + args: + selector: '[.link[] | select(."intended-application" == "similarity-checking")][0].URL' + class: nexus.pylon.resolvers.DoiOrgRequestResolver + # www.psychiatrist.com + - driver: + args: + actions: + - selector: '.article-dwndpdf > img' + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.4088/.*$ + # www.scirp.org + - driver: + args: + actions: + - selector: 'PDF' + type: wait_link_text + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.4236/.*$ + # jsbr.be + - driver: + args: + actions: + - selector: 'h4 > .fa-download' + type: wait_css_selector + - type: click + - selector: 'PDF (EN)' + type: wait_link_text + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.5334/.*$ + # hess.copernicus.org + - driver: + args: + proxy_list: ~ + class: nexus.pylon.drivers.DirectDriver + matcher: + doi: ^10.5194/.*$ + # ProQuest + - driver: + args: + actions: + - selector: '#searchTerm' + type: wait_css_selector + - type: click + - selector: '#searchTerm' + text: '{doi}' + type: type + - selector: '.uxf-search' + type: wait_css_selector + - type: click + - selector: '.uxf-download' + type: wait_css_selector + - type: click + proxy_list: ~ + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.5585/.* + resolver: + args: + format_string: 'https://www.proquest.com/' + class: nexus.pylon.resolvers.TemplateResolver + # jcsm.aasm.org + - matcher: + doi: ^10.5664/.*$ + resolver: + args: + format_string: 'https://jcsm.aasm.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver + # journal.permsc.ru + - driver: + args: + actions: + - selector: '.obj_galley_link' + type: wait_css_selector + - type: click + - selector: '.label' + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.7242/.*$ + # amjcaserep.com + - driver: + args: + actions: + - selector: "//input[@value='Download PDF version']" + type: wait_xpath + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.12659/.*$ + # medcraveonline.com + - driver: + args: + actions: + - selector: 'Download PDF' + type: wait_link_text + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.15406/.*$ + # www.researchsquare.com + - driver: + args: + actions: + - selector: '.hidden > .text-blue-600 > .antialiased' + type: wait_css_selector + - type: native_click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.21203/.*$ + # www.ukm.my/ + - driver: + args: + proxy_list: ~ + class: nexus.pylon.drivers.DirectDriver + matcher: + doi: ^10.24035/.*$ + # journals.library.ryerson.ca + - driver: + args: + actions: + - selector: '#a11y-1-tab-tab-download' + type: wait_css_selector + - type: click + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.32920/.*$ + # papers.cumincad.org + - driver: + args: + actions: + - selector: 'file.pdf' + type: wait_link_text + - type: click + proxy_list: ~ + class: nexus.pylon.drivers.BrowserDriver + matcher: + doi: ^10.52842/.*$ + # ^.*$ + - matcher: + doi: ^.*$ + resolver: + args: + selector: '[(.link | if . == null then [] else . end)[] | select((."content-type" == "application/pdf") or (.URL | ascii_downcase | contains("pdf")))][0].URL' + class: nexus.pylon.resolvers.DoiOrgRequestResolver diff --git a/nexus/pylon/consts.py b/nexus/pylon/consts.py new file mode 100644 index 0000000..c519ccc --- /dev/null +++ b/nexus/pylon/consts.py @@ -0,0 +1 @@ +DEFAULT_USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36' diff --git a/nexus/pylon/drivers/__init__.py b/nexus/pylon/drivers/__init__.py new file mode 100644 index 0000000..bc6a6db --- /dev/null +++ b/nexus/pylon/drivers/__init__.py @@ -0,0 +1,4 @@ +from .browser import BrowserDriver +from .direct import DirectDriver + +__all__ = ['BrowserDriver', 'DirectDriver'] diff --git a/nexus/pylon/drivers/base.py b/nexus/pylon/drivers/base.py new file mode 100644 index 0000000..d59863c --- /dev/null +++ b/nexus/pylon/drivers/base.py @@ -0,0 +1,40 @@ +from typing import ( + Dict, + List, + Optional, +) + +from nexus.pylon.network_agent import NetworkAgent +from nexus.pylon.prepared_request import PreparedRequest +from nexus.pylon.proxy_manager import ProxyManager +from nexus.pylon.validators.base import BaseValidator +from utils.izihawa_utils.importlib import import_object + + +class BaseDriver(NetworkAgent): + def __init__( + self, + validator=None, + downloads_directory: str = '/downloads', + proxy_list: Optional[List] = None, + proxy_manager: Optional[ProxyManager] = None, + ): + super().__init__(proxy_list=proxy_list, proxy_manager=proxy_manager) + + validator_cls = 'nexus.pylon.validators.PdfValidator' + if validator and 'class' in validator: + validator_cls = validator['class'] + validator_cls = import_object(validator_cls) + + self.validator = validator_cls or BaseValidator + self.downloads_directory = downloads_directory + + def __str__(self): + return self.__class__.__name__ + + async def execute_prepared_file_request( + self, + prepared_file_request: PreparedRequest, + params: Dict, + ): + raise NotImplementedError() diff --git a/nexus/pylon/drivers/browser.py b/nexus/pylon/drivers/browser.py new file mode 100644 index 0000000..8f86458 --- /dev/null +++ b/nexus/pylon/drivers/browser.py @@ -0,0 +1,309 @@ +import asyncio +import json +import logging +import os.path +import shutil +import sys +import time +from pathlib import Path +from typing import ( + Dict, + List, + Optional, + Tuple, +) + +import aiofiles +from izihawa_utils.random import random_string +from nexus.pylon.consts import DEFAULT_USER_AGENT +from nexus.pylon.drivers.base import BaseDriver +from nexus.pylon.exceptions import NotFoundError +from nexus.pylon.prepared_request import PreparedRequest +from nexus.pylon.proto.file_pb2 import Chunk as ChunkPb +from nexus.pylon.proto.file_pb2 import FileResponse as FileResponsePb +from nexus.pylon.proxy_manager import ProxyManager +from selenium import webdriver +from selenium.common.exceptions import WebDriverException +from selenium.webdriver.common.by import By +from selenium.webdriver.common.desired_capabilities import DesiredCapabilities +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.support.ui import WebDriverWait + + +class BrowserDriver(BaseDriver): + def __init__( + self, + validator=None, + proxy_list: Optional[List] = None, + proxy_manager: Optional[ProxyManager] = None, + actions: Optional[List] = None, + downloads_directory='/downloads', + window_size: Tuple[int, int] = (1279, 833), + erase_webdrive_property: bool = True, + webdrive_hub_endpoint: str = "http://127.0.0.1:4444/wd/hub", + ): + super().__init__(validator=validator, proxy_list=proxy_list, proxy_manager=proxy_manager) + self.actions = actions + self.downloads_directory = Path(downloads_directory) + self.window_size = window_size + self.erase_webdrive_property = erase_webdrive_property + self.webdrive_hub_endpoint = webdrive_hub_endpoint + + async def get_chrome_sessions(self): + proxies = list( + self.proxy_manager.get_proxies(self.proxy_list) + if self.proxy_manager and self.proxy_list + else [None] + ) + for proxy in proxies: + downloads_folder = self.downloads_directory / random_string(16) + os.mkdir(downloads_folder) + os.chmod(downloads_folder, 0o777) + chrome = await asyncio.get_running_loop().run_in_executor(None, lambda: self.setup_chrome(proxy, downloads_folder)) + try: + yield chrome, downloads_folder + finally: + shutil.rmtree(downloads_folder) + chrome.quit() + + def setup_chrome(self, proxy, downloads_folder): + options = webdriver.ChromeOptions() + options.add_experimental_option("prefs", { + 'download.default_directory': str(downloads_folder), + 'download.prompt_for_download': False, + 'safebrowsing.enabled': True, + 'plugins.always_open_pdf_externally': True, + 'profile.default_content_setting_values.automatic_downloads': True, + }) + + options.add_argument('user-agent=' + DEFAULT_USER_AGENT) + + if proxy: + options.add_argument('--proxy-server=%s' % proxy.get_address()) + + options.add_argument('--headless') + options.add_argument('--enable-javascript') + options.add_argument('--disable-dev-shm-usage') + options.add_argument("--disable-popup-blocking") + chrome = webdriver.Remote( + self.webdrive_hub_endpoint, + DesiredCapabilities.CHROME, + options=options, + ) + chrome.set_window_size(self.window_size[0], self.window_size[1]) + + if self.erase_webdrive_property: + resource = "/session/%s/chromium/send_command_and_get_result" % chrome.session_id + url = chrome.command_executor._url + resource + body = json.dumps({'cmd': "Page.addScriptToEvaluateOnNewDocument", 'params': { + "source": """ + Object.defineProperty(navigator, 'webdriver', { + get: () => undefined + }) + """ + }}) + chrome.command_executor._request('POST', url, body) + + logging.getLogger('debug').debug({ + 'action': 'start_chrome', + 'mode': 'pylon', + 'proxy': str(proxy) if proxy is not None else None, + 'downloads_folder': str(downloads_folder), + }) + return chrome + + async def wait_for_file(self, path, timeout): + start_time = time.time() + while time.time() - timeout < start_time: + file = self.get_first_file(path) + if file: + return file + await asyncio.sleep(0.1) + + def get_first_file(self, path): + files = os.listdir(path) + if files: + return str(Path(path) / files[0]) + + async def produce_downloaded_file(self, downloads_folder, timeout=10.0, download_timeout=1200.0): + filename = await self.wait_for_file(downloads_folder, timeout) + if not filename: + raise NotFoundError() + + current_offset = 0 + try: + file = await aiofiles.open(filename, 'rb') + except FileNotFoundError: + file = await aiofiles.open(self.get_first_file(downloads_folder), 'rb') + + try: + start_time = time.time() + while time.time() - download_timeout < start_time: + current_file = self.get_first_file(downloads_folder) + + await file.seek(0, os.SEEK_END) + downloaded_offset = await file.tell() + + if ( + not current_file.endswith('.crdownload') + and downloaded_offset == current_offset + and current_offset > 0 + ): + logging.getLogger('debug').debug({ + 'action': 'sent', + 'mode': 'pylon', + 'filename': filename, + }) + return + + logging.getLogger('debug').debug({ + 'action': 'send_part', + 'mode': 'pylon', + 'current_offset': current_offset, + 'downloaded_offset': downloaded_offset, + 'filename': filename, + }) + await file.seek(current_offset) + yield await file.read(downloaded_offset - current_offset) + current_offset = downloaded_offset + + await asyncio.sleep(0.5) + raise NotFoundError() + finally: + await file.close() + + def get(self, chrome, url, params): + logging.getLogger('debug').debug({ + 'action': 'get', + 'mode': 'pylon', + 'url': url, + }) + try: + chrome.get(url) + if not self.actions: + return True + last_element = None + previous_window = None + current_window = chrome.window_handles[0] + for action in self.actions: + match action['type']: + case 'click': + if not last_element: + raise RuntimeError('Nothing to click') + chrome.execute_script("arguments[0].click();", last_element) + logging.getLogger('debug').debug({ + 'action': 'clicked', + 'mode': 'pylon', + 'element': str(last_element), + }) + case 'close_window': + current_window = previous_window + previous_window = None + chrome.close() + chrome.switch_to.window(current_window) + case 'native_click': + if not last_element: + raise RuntimeError('Nothing to click') + last_element.click() + logging.getLogger('debug').debug({ + 'action': 'native_clicked', + 'mode': 'pylon', + 'element': str(last_element), + }) + case 'switch_to_new_window': + previous_window = current_window + current_window = chrome.window_handles[-1] + chrome.switch_to.window(current_window) + case 'type': + if not last_element: + raise RuntimeError('Nothing to type') + last_element.clear() + last_element.send_keys(action['text'].format(**params)) + case 'wait': + time.sleep(action['timeout']) + case 'wait_css_selector': + last_element = WebDriverWait(chrome, action.get('timeout', 15.0)).until( + EC.presence_of_element_located(( + By.CSS_SELECTOR, + action['selector'], + )) + ) + logging.getLogger('debug').debug({ + 'action': 'waited_css_selector', + 'mode': 'pylon', + 'element': str(last_element), + 'step': action + }) + case 'wait_link_text': + last_element = WebDriverWait(chrome, action.get('timeout', 15.0)).until( + EC.presence_of_element_located(( + By.LINK_TEXT, + action['selector'], + )) + ) + logging.getLogger('debug').debug({ + 'action': 'waited_link_text', + 'mode': 'pylon', + 'element': str(last_element), + 'step': action + }) + case 'wait_xpath': + last_element = WebDriverWait(chrome, action.get('timeout', 15.0)).until( + EC.presence_of_element_located(( + By.XPATH, + action['selector'], + )) + ) + logging.getLogger('debug').debug({ + 'action': 'waited_xpath', + 'mode': 'pylon', + 'element': str(last_element), + 'step': action + }) + case _: + raise NotImplementedError('Not implemented action type') + except WebDriverException as e: + logging.getLogger('debug').debug({ + 'action': 'error', + 'mode': 'pylon', + 'error': str(e), + }) + return False + return True + + async def execute_prepared_file_request(self, prepared_file_request: PreparedRequest, params: Dict): + async for chrome, downloads_folder in self.get_chrome_sessions(): + try: + result = await asyncio.get_running_loop().run_in_executor( + None, + lambda: self.get(chrome, prepared_file_request.url, params), + ) + + if not result: + continue + + file_validator = self.validator(params) + yield FileResponsePb(status=FileResponsePb.Status.BEGIN_TRANSMISSION, source=chrome.current_url) + async for content in self.produce_downloaded_file( + downloads_folder, + timeout=prepared_file_request.timeout, + download_timeout=1200.0, + ): + file_validator.update(content) + yield FileResponsePb( + chunk=ChunkPb(content=content), + source=chrome.current_url, + ) + file_validator.validate() + logging.getLogger('debug').debug({ + 'action': 'validated', + 'mode': 'pylon', + 'url': prepared_file_request.url, + }) + return + except NotFoundError: + logging.getLogger('debug').debug({ + 'action': 'no_response', + 'mode': 'pylon', + }) + raise NotFoundError(params=params, url=prepared_file_request.url, driver=str(self)) diff --git a/nexus/pylon/drivers/direct.py b/nexus/pylon/drivers/direct.py new file mode 100644 index 0000000..61db9fa --- /dev/null +++ b/nexus/pylon/drivers/direct.py @@ -0,0 +1,54 @@ +from typing import Dict + +import aiohttp.client_exceptions +from aiohttp_socks import ProxyError +from nexus.pylon.drivers.base import BaseDriver +from nexus.pylon.exceptions import ( + BadResponseError, + NotFoundError, +) +from nexus.pylon.prepared_request import PreparedRequest +from nexus.pylon.proto.file_pb2 import Chunk as ChunkPb +from nexus.pylon.proto.file_pb2 import FileResponse as FileResponsePb +from python_socks import ProxyTimeoutError +from tenacity import ( + retry, + retry_if_exception_type, + stop_after_attempt, + wait_random, +) + + +class DirectDriver(BaseDriver): + allowed_content_type = None + + @retry( + reraise=True, + wait=wait_random(min=1, max=2), + stop=stop_after_attempt(7), + retry=retry_if_exception_type((ProxyError, aiohttp.client_exceptions.ClientPayloadError, ProxyTimeoutError)), + ) + async def execute_prepared_file_request(self, prepared_file_request: PreparedRequest, params: Dict): + async with self.get_session() as session: + async with prepared_file_request.execute_with(session=session) as resp: + if resp.status == 404: + raise NotFoundError(url=prepared_file_request.url) + elif ( + resp.status != 200 + or ( + self.allowed_content_type + and resp.headers.get('Content-Type', '').lower() not in self.allowed_content_type + ) + ): + raise BadResponseError( + request_headers=prepared_file_request.headers, + url=prepared_file_request.url, + status=resp.status, + headers=str(resp.headers), + ) + file_validator = self.validator(params) + yield FileResponsePb(status=FileResponsePb.Status.BEGIN_TRANSMISSION, source=prepared_file_request.url) + async for content, _ in resp.content.iter_chunks(): + file_validator.update(content) + yield FileResponsePb(chunk=ChunkPb(content=content), source=prepared_file_request.url) + file_validator.validate() diff --git a/nexus/pylon/matcher.py b/nexus/pylon/matcher.py new file mode 100644 index 0000000..9797fa4 --- /dev/null +++ b/nexus/pylon/matcher.py @@ -0,0 +1,16 @@ +import re + + +class Matcher: + def __init__(self, param_regexes): + self.param_regexes = param_regexes + for param_regex in self.param_regexes: + self.param_regexes[param_regex] = re.compile(self.param_regexes[param_regex]) + + def is_match(self, params) -> bool: + for param in params: + if params[param]: + if param_regex := self.param_regexes.get(param): + if re.match(param_regex, params[param]): + return True + return False diff --git a/nexus/pylon/network_agent.py b/nexus/pylon/network_agent.py new file mode 100644 index 0000000..3d57c35 --- /dev/null +++ b/nexus/pylon/network_agent.py @@ -0,0 +1,60 @@ +import socket +from random import choice +from sys import platform +from typing import ( + List, + Optional, +) + +import aiohttp +from aiohttp import ClientSession +from aiohttp.client_reqrep import ClientRequest +from aiohttp_socks import ProxyConnector +from library.aiokit.aiokit import AioThing +from nexus.pylon.proxy_manager import ( + AllOf, + AnyOf, + ProxyManager, +) + + +class KeepAliveClientRequest(ClientRequest): + async def send(self, conn): + sock = conn.protocol.transport.get_extra_info('socket') + sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) + if platform != 'darwin': + sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 60) + sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 2) + sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 5) + + return await super().send(conn) + + +class NetworkAgent(AioThing): + def __init__( + self, + proxy_list: Optional[List] = None, + proxy_manager: Optional[ProxyManager] = None, + ): + super().__init__() + self.proxy_list = [] + if proxy_list: + if not isinstance(proxy_list, list): + proxy_list = [proxy_list] + for proxy_tags in proxy_list: + if isinstance(proxy_tags, list): + self.proxy_list.append(AnyOf(set(proxy_tags))) + elif isinstance(proxy_tags, dict) and 'any_of' in proxy_tags: + self.proxy_list.append(AnyOf(set(proxy_tags['any_of']))) + elif isinstance(proxy_tags, dict) and 'all_of' in proxy_tags: + self.proxy_list.append(AllOf(set(proxy_tags['all_of']))) + self.proxy_manager = proxy_manager + + def get_session(self) -> ClientSession: + connector = None + if self.proxy_list and self.proxy_manager: + if proxy := self.proxy_manager.get_proxy(choice(self.proxy_list)): + connector = ProxyConnector.from_url(proxy.get_address()) + if not connector: + connector = aiohttp.TCPConnector() + return aiohttp.ClientSession(request_class=KeepAliveClientRequest, connector=connector) diff --git a/nexus/pylon/pdftools/__init__.py b/nexus/pylon/pdftools/__init__.py index 80a4bea..2be165f 100644 --- a/nexus/pylon/pdftools/__init__.py +++ b/nexus/pylon/pdftools/__init__.py @@ -1,2 +1,34 @@ +import io + +from PyPDF2 import ( + PdfReader, + PdfWriter, +) +from PyPDF2.generic import DictionaryObject + +from .watermarks import ( + base_pdf_processor, + pdf_processors, +) + + def is_pdf(f): return len(f) > 4 and f[:4] == b'%PDF' + + +def clean_metadata(pdf, doi=None): + reader = PdfReader(io.BytesIO(pdf), strict=False) + writer = PdfWriter() + writer._objects = writer._objects[:-1] + writer._info = writer._add_object(DictionaryObject()) + pdf_processor = base_pdf_processor + if doi: + doi_prefix = doi.split('/')[0] + if doi_prefix in pdf_processors: + pdf_processor = pdf_processors[doi_prefix] + pdf_processor.process(reader, writer) + buffer = io.BytesIO() + writer.write_stream(buffer) + buffer.flush() + buffer.seek(0) + return buffer.read() diff --git a/nexus/pylon/pdftools/text_collector.py b/nexus/pylon/pdftools/text_collector.py new file mode 100644 index 0000000..e5a5612 --- /dev/null +++ b/nexus/pylon/pdftools/text_collector.py @@ -0,0 +1,29 @@ +import re + + +class TextCollector: + def __init__(self, inverted=False): + self.text = [] + self.operations = [] + self.inverted = inverted + + def add_piece(self, text, operation): + if self.inverted: + self.text = [text] + self.text + self.operations = [operation] * len(text) + self.operations + else: + self.text.append(text) + self.operations.extend([operation] * len(text)) + + def match(self, pattern): + operations = [] + texts = [] + for match in re.finditer(pattern, ''.join(self.text)): + left, right = match.span() + texts.append(match.group()) + operations.extend(self.operations[left:right]) + return '\n'.join(texts), list(sorted(set(operations))) + + def clear(self): + self.text = [] + self.operations = [] diff --git a/nexus/pylon/pdftools/watermarks.py b/nexus/pylon/pdftools/watermarks.py new file mode 100644 index 0000000..d49a842 --- /dev/null +++ b/nexus/pylon/pdftools/watermarks.py @@ -0,0 +1,439 @@ +import binascii +import logging +import re +from typing import ( + Any, + Dict, + List, + Tuple, + Union, + cast, +) + +from PyPDF2._cmap import ( + _default_fonts_space_width, + compute_space_width, + parse_bfchar, + parse_encoding, + prepare_cm, + unknown_char_map, +) +from PyPDF2.errors import PdfStreamError +from PyPDF2.generic import ( + ContentStream, + DictionaryObject, + NameObject, +) + +from .text_collector import TextCollector + +elsevier_regexp = re.compile( + r'Downloaded for .* at .* from .* ' + r'by .* on \w+ \d{1,2}, \d{4}. ' + r'For personal use only. No other uses without permission. ' + r'Copyright ©\d{4}. Elsevier Inc. All rights reserved.' +) +bmj_regexp = re.compile( + r'^.*: first published as .* on \d{1,2} \w+ \d{4}. Downloaded from .*' + r' on \w+ \d{1,2}, \d{4} at .* Protected by\s*copyright.' +) +downloaded_regexp = re.compile(rb'^[Dd]ownloaded [Ff]rom:? https?://') +terms_of_use_regexp = re.compile(rb'^[Tt]erms [Oo]f [Uu]se:? https?://') + + +def _is_downloaded_from_https_watermark(text): + return bool(re.search(downloaded_regexp, text)) or bool(re.search(terms_of_use_regexp, text)) + + +def _is_1021_watermark(text): + return ( + text.startswith(b'Downloaded via ') + or text.startswith( + b'See https://pubs.acs.org/sharingguidelines for options ' + b'on how to legitimately share published articles.' + ) + ) + + +def _is_1093_watermark(text): + return bool(re.search(rb'^Downloaded from https://(.*) by [\w\s]+ on \d{1,2} \w+ \d{4}$', text)) + + +def process_cm_line( + l: bytes, + process_rg: bool, + process_char: bool, + multiline_rg: Union[None, Tuple[int, int]], + map_dict, + int_entry, +): + if l in (b"", b" ") or l[0] == 37: # 37 = % + return process_rg, process_char, multiline_rg + if b"beginbfrange" in l: + process_rg = True + elif b"endbfrange" in l: + process_rg = False + elif b"beginbfchar" in l: + process_char = True + elif b"endbfchar" in l: + process_char = False + elif process_rg: + multiline_rg = parse_bfrange(l, map_dict, int_entry, multiline_rg) + elif process_char: + parse_bfchar(l, map_dict, int_entry) + return process_rg, process_char, multiline_rg + + +def parse_bfrange( + l: bytes, + map_dict: Dict[Any, Any], + int_entry: List[int], + multiline_rg: Union[None, Tuple[int, int]], +) -> Union[None, Tuple[int, int]]: + lst = [x for x in l.split(b" ") if x] + closure_found = False + nbi = len(lst[0]) + map_dict[-1] = nbi // 2 + fmt = b"%%0%dX" % nbi + if multiline_rg is not None: + a = multiline_rg[0] # a, b not in the current line + b = multiline_rg[1] + for sq in lst[1:]: + if sq == b"]": + closure_found = True + break + map_dict[ + binascii.unhexlify(fmt % a).decode( + "charmap" if map_dict[-1] == 1 else "utf-16-be", + "surrogatepass", + ) + ] = binascii.unhexlify(sq).decode("utf-16-be", "surrogatepass") + int_entry.append(a) + a += 1 + else: + a = int(lst[0], 16) + b = int(lst[1], 16) + if lst[2] == b"[": + for sq in lst[3:]: + if sq == b"]": + closure_found = True + break + map_dict[ + binascii.unhexlify(fmt % a).decode( + "charmap" if map_dict[-1] == 1 else "utf-16-be", + "surrogatepass", + ) + ] = binascii.unhexlify(sq).decode("utf-16-be", "surrogatepass") + int_entry.append(a) + a += 1 + else: # case without list + c = int(lst[2], 16) + fmt2 = b"%%0%dX" % max(4, len(lst[2])) + closure_found = True + while a <= b: + map_dict[ + binascii.unhexlify(fmt % a).decode( + "charmap" if map_dict[-1] == 1 else "utf-16-be", + "surrogatepass", + ) + ] = binascii.unhexlify(fmt2 % c).decode("utf-16-be", "surrogatepass") + int_entry.append(a) + a += 1 + c += 1 + return None if closure_found else (a, b) + + +def parse_to_unicode(ft: DictionaryObject, space_code: int): + # will store all translation code + # and map_dict[-1] we will have the number of bytes to convert + map_dict = {} + + # will provide the list of cmap keys as int to correct encoding + int_entry = [] + + if "/ToUnicode" not in ft: + return {}, space_code, [] + process_rg: bool = False + process_char: bool = False + multiline_rg: Union[ + None, Tuple[int, int] + ] = None + cm = prepare_cm(ft) + for l in cm.split(b"\n"): + process_rg, process_char, multiline_rg = process_cm_line( + l.strip(b" "), process_rg, process_char, multiline_rg, map_dict, int_entry + ) + + for a, value in map_dict.items(): + if value == " ": + space_code = a + return map_dict, space_code, int_entry + + +def build_char_map( + font_name: str, space_width: float, obj: DictionaryObject +): # font_type,space_width /2, encoding, cmap + ft: DictionaryObject = obj["/Resources"]["/Font"][font_name] # type: ignore + font_type: str = cast(str, ft["/Subtype"]) + + space_code = 32 + encoding, space_code = parse_encoding(ft, space_code) + map_dict, space_code, int_entry = parse_to_unicode(ft, space_code) + + if encoding == "": + if -1 not in map_dict or map_dict[-1] == 1: + encoding = "charmap" + else: + encoding = "utf-16-be" + elif isinstance(encoding, dict): + for x in int_entry: + if x <= 255: + encoding[x] = chr(x) + try: + # override space_width with new params + space_width = _default_fonts_space_width[cast(str, ft["/BaseFont"])] + except Exception: + pass + # I conside the space_code is available on one byte + if isinstance(space_code, str): + try: # one byte + sp = space_code.encode("charmap")[0] + except Exception: + sp = space_code.encode("utf-16-be") + sp = sp[0] + 256 * sp[1] + else: + sp = space_code + sp_width = compute_space_width(ft, sp, space_width) + + return ( + font_type, + float(sp_width / 2), + encoding, + # https://github.com/python/mypy/issues/4374 + map_dict, + ) + + +class BasePdfProcessor: + def __init__(self, remove_pages=None): + self.remove_pages = remove_pages or tuple() + + def process_page(self, page, pdf_reader): + return page + + def process(self, pdf_reader, pdf_writer): + for page_num, page in enumerate(pdf_reader.pages): + if page_num in self.remove_pages: + continue + try: + page = self.process_page(page, pdf_reader) + except (PdfStreamError, binascii.Error) as e: + logging.getLogger('warning').warning({ + 'action': 'pdf_stream_error', + 'mode': 'pylon', + 'error': str(e), + }) + pdf_writer.add_page(page) + + +class BaseWatermarkEraser(BasePdfProcessor): + def __init__(self, is_watermark_predicate=_is_downloaded_from_https_watermark, watermark_orientations=None, remove_pages=None): + super().__init__(remove_pages=remove_pages) + self.is_watermark_predicate = is_watermark_predicate + self.watermark_orientations = watermark_orientations if watermark_orientations is not None else (0, 90, 180, 270) + + +class WatermarkEraser1(BaseWatermarkEraser): + def process_page(self, page, pdf_reader): + if '/XObject' in page['/Resources']: + xobj = page['/Resources']['/XObject'] + content = ContentStream(page['/Contents'], pdf_reader, "bytes") + + xobj_death_note = [] + operations_death_note = [] + for op_i, (operands, operation) in enumerate(content.operations): + if operation == b"Do": + nested_op = xobj[operands[0]] + if nested_op["/Subtype"] != "/Image": + text = page.extract_xform_text(nested_op, self.watermark_orientations, 200.0) # type: ignore + if self.is_watermark_predicate(text.encode()): + xobj_death_note.append(operands[0]) + operations_death_note.append(op_i) + logging.getLogger('debug').debug({ + 'action': 'watermark_removal', + 'mode': 'pylon', + 'text': text, + }) + + # Erase dictionary objects with watermarks + for op_i in sorted(xobj_death_note, reverse=True): + del xobj[op_i] + + # Erase operations with watermarks + for op_i in reversed(operations_death_note): + del content.operations[op_i] + + if operations_death_note or xobj_death_note: + page.__setitem__(NameObject('/Contents'), content) + page.compress_content_streams() + + return page + + +class WatermarkEraser2(BaseWatermarkEraser): + def process_page(self, page, pdf_reader): + content = ContentStream(page['/Contents'], pdf_reader, "bytes") + operations_death_note = [] + + for op_i, (operands, operation) in enumerate(content.operations): + if operation == b"Tj": + if isinstance(operands[0], bytes) and self.is_watermark_predicate(operands[0]): + operations_death_note.append(op_i) + logging.getLogger('debug').debug({ + 'action': 'watermark_removal', + 'mode': 'pylon', + 'text': operands[0].decode(), + }) + + # Erase operations with watermarks + for op_i in reversed(operations_death_note): + del content.operations[op_i] + + if operations_death_note: + page.__setitem__(NameObject('/Contents'), content) + page.compress_content_streams() + + return page + + +class WatermarkEraser3(BaseWatermarkEraser): + def process_page(self, page, pdf_reader): + content = ContentStream(page['/Contents'], pdf_reader, "bytes") + operations_death_note = [] + + for op_i, (operands, operation) in enumerate(content.operations): + if operation == b"TJ": + text = b'' + for operand in operands[0]: + if isinstance(operand, bytes): + text += operand + if self.is_watermark_predicate(text): + operations_death_note.append(op_i) + logging.getLogger('debug').debug({ + 'action': 'watermark_removal', + 'mode': 'pylon', + 'text': text.decode(), + }) + + # Erase operations with watermarks + for op_i in reversed(operations_death_note): + del content.operations[op_i] + + if operations_death_note: + page.__setitem__(NameObject('/Contents'), content) + page.compress_content_streams() + + return page + + +class WatermarkEraser4(BaseWatermarkEraser): + def __init__(self, regexp, inverted=False): + super().__init__() + self.regexp = regexp + self.inverted = inverted + + def process_page(self, page, pdf_reader): + content = ContentStream(page['/Contents'], pdf_reader, "bytes") + operations_death_note = [] + + cmaps = {} + space_width = 200.0 + resources_dict = cast(DictionaryObject, page['/Resources']) + tc = TextCollector(self.inverted) + + if "/Font" in resources_dict: + for f in cast(DictionaryObject, resources_dict["/Font"]): + cmaps[f] = build_char_map(f, space_width, page) + + cm_stack = [] + cmap = ("charmap", {}, "NotInitialized") + + for op_i, (operands, operation) in enumerate(content.operations): + if operation == b"q": + cm_stack.append(cmap) + elif operation == b"Q": + try: + cmap = cm_stack.pop() + except Exception: + pass + elif operation == b"Tf": + try: + _space_width = cmaps[operands[0]][1] + cmap = ( + cmaps[operands[0]][2], + cmaps[operands[0]][3], + operands[0], + ) + except KeyError: # font not found + _space_width = unknown_char_map[1] + cmap = ( + unknown_char_map[2], + unknown_char_map[3], + "???" + operands[0], + ) + elif operation == b"Tj": + if isinstance(operands[0], str): + text = operands[0] + else: + if isinstance(cmap[0], str): + try: + t = operands[0].decode(cmap[0], "surrogatepass") + except Exception: + t = operands[0].decode("utf-16-be" if cmap[0] == "charmap" else "charmap", "surrogatepass") + else: + t = "".join( + [ + cmap[0][x] if x in cmap[0] else bytes((x,)).decode() + for x in operands[0] + ] + ) + text = "".join([cmap[1][x] if x in cmap[1] else x for x in t]) + tc.add_piece(text, op_i) + text, matched = tc.match(self.regexp) + if matched: + operations_death_note.extend(matched) + logging.getLogger('debug').debug({ + 'action': 'watermark_removal', + 'mode': 'pylon', + 'matched': text, + }) + tc.clear() + + # Erase operations with watermarks + for op_i in reversed(operations_death_note): + del content.operations[op_i] + + if operations_death_note: + page.__setitem__(NameObject('/Contents'), content) + page.compress_content_streams() + + return page + + +pdf_processors = { + '10.1001': WatermarkEraser1(watermark_orientations=(0,)), + '10.1016': WatermarkEraser4(elsevier_regexp), + '10.1021': WatermarkEraser1(is_watermark_predicate=_is_1021_watermark, watermark_orientations=(90,)), + '10.1073': WatermarkEraser1(watermark_orientations=(90,)), + '10.1088': WatermarkEraser1(is_watermark_predicate=lambda text: False, remove_pages=(0,)), + '10.1093': WatermarkEraser2(is_watermark_predicate=_is_1093_watermark), + '10.1126': WatermarkEraser1(watermark_orientations=(270,)), + '10.1136': WatermarkEraser4(bmj_regexp, inverted=True), + '10.1287': WatermarkEraser1( + watermark_orientations=(90,), + remove_pages=(0,), + ), + '10.2108': WatermarkEraser3(), +} + +base_pdf_processor = BasePdfProcessor() diff --git a/nexus/pylon/prepared_request.py b/nexus/pylon/prepared_request.py new file mode 100644 index 0000000..13f9149 --- /dev/null +++ b/nexus/pylon/prepared_request.py @@ -0,0 +1,81 @@ +import asyncio +from contextlib import asynccontextmanager +from typing import Optional + +import aiohttp +import aiohttp.client_exceptions +from aiohttp import ClientTimeout +from aiohttp_socks import ProxyConnectionError +from nexus.pylon.consts import DEFAULT_USER_AGENT +from nexus.pylon.exceptions import ( + BadResponseError, + DownloadError, +) + + +class PreparedRequest: + def __init__( + self, + method: str, + url: str, + headers: Optional[dict] = None, + params: Optional[dict] = None, + cookies: Optional[dict] = None, + ssl: bool = True, + timeout: Optional[float] = None, + ): + self.method = method + self.url = url + self.headers = { + 'Connection': 'keep-alive', + 'User-Agent': DEFAULT_USER_AGENT, + } + if headers: + self.headers.update(headers) + self.params = params + self.cookies = cookies + self.ssl = ssl + self.timeout = timeout + + def __repr__(self): + r = f'{self.method} {self.url} {self.headers}' + if self.params: + r += f' {self.params}' + return r + + def __str__(self): + return repr(self) + + @asynccontextmanager + async def execute_with(self, session): + try: + async with session.request( + method=self.method, + url=self.url, + timeout=ClientTimeout( + sock_read=self.timeout, + ), + headers=self.headers, + cookies=self.cookies, + params=self.params, + ssl=self.ssl, + ) as resp: + yield resp + except BadResponseError as e: + e.add('url', self.url) + raise e + except ( + aiohttp.client_exceptions.ClientConnectionError, + aiohttp.client_exceptions.ClientResponseError, + aiohttp.client_exceptions.InvalidURL, + aiohttp.client_exceptions.TooManyRedirects, + asyncio.exceptions.IncompleteReadError, + asyncio.TimeoutError, + ConnectionAbortedError, + ConnectionResetError, + ProxyConnectionError, + ) as e: + raise DownloadError( + nested_error=repr(e), + url=self.url, + ) diff --git a/nexus/pylon/proxy_manager.py b/nexus/pylon/proxy_manager.py new file mode 100644 index 0000000..c622a6c --- /dev/null +++ b/nexus/pylon/proxy_manager.py @@ -0,0 +1,74 @@ +import random +from typing import ( + Iterator, + List, + Optional, + Set, + Union, +) + + +class AllOf: + def __init__(self, tags: Set): + self.tags = tags + + def __str__(self): + return f'AllOf({self.tags})' + + def __repr__(self): + return f'AllOf({self.tags})' + + def match(self, target_tags): + return self.tags.issubset(target_tags) + + +class AnyOf: + def __init__(self, tags: Set): + self.tags = tags + + def __str__(self): + return f'AnyOf({self.tags})' + + def __repr__(self): + return f'AnyOf({self.tags})' + + def match(self, target_tags): + return not self.tags.isdisjoint(target_tags) + + +class Proxy: + def __init__(self, proxy_config): + self.address = proxy_config['address'] + self.name = proxy_config['name'] + self.tags = set(proxy_config.get('tags', [])) + + def get_address(self): + return self.address + + def __str__(self): + return self.name + + def __repr__(self): + return self.name + + +class ProxyManager: + def __init__(self, proxies=None): + self.proxies = [Proxy(proxy) for proxy in proxies] + + def get_proxy(self, tags: Optional[Union[AllOf, AnyOf, Set]] = None) -> Proxy: + if tags: + if isinstance(tags, set): + tags = AllOf(tags) + options = list(filter(lambda proxy: tags.match(proxy.tags), self.proxies)) + if options: + return random.choice(options) + else: + return random.choice(self.proxies) + + def get_proxies(self, proxy_list: List[Union[AllOf, AnyOf, Set]]) -> Iterator: + for proxy_tags in proxy_list: + yield self.get_proxy(proxy_tags) + + def __str__(self): + return f'ProxyManager({self.proxies})' diff --git a/nexus/pylon/resolvers/__init__.py b/nexus/pylon/resolvers/__init__.py new file mode 100644 index 0000000..03b54f9 --- /dev/null +++ b/nexus/pylon/resolvers/__init__.py @@ -0,0 +1,5 @@ +from .doi_org_request import DoiOrgRequestResolver +from .request import RequestResolver +from .template import TemplateResolver + +__all__ = ['DoiOrgRequestResolver', 'RequestResolver', 'TemplateResolver'] diff --git a/nexus/pylon/resolvers/base.py b/nexus/pylon/resolvers/base.py new file mode 100644 index 0000000..98a5a62 --- /dev/null +++ b/nexus/pylon/resolvers/base.py @@ -0,0 +1,15 @@ +from typing import ( + AsyncIterable, + Dict, +) + +from nexus.pylon.network_agent import NetworkAgent +from nexus.pylon.prepared_request import PreparedRequest + + +class BaseResolver(NetworkAgent): + def __str__(self): + return self.__class__.__name__ + + async def resolve(self, params: Dict) -> AsyncIterable[PreparedRequest]: + raise NotImplementedError("`resolve` for BaseSource is not implemented") diff --git a/nexus/pylon/resolvers/doi_org_request.py b/nexus/pylon/resolvers/doi_org_request.py new file mode 100644 index 0000000..e0c2b81 --- /dev/null +++ b/nexus/pylon/resolvers/doi_org_request.py @@ -0,0 +1,62 @@ +import json +import logging +from typing import ( + AsyncIterable, + Dict, + List, + Optional, +) + +import jq +from nexus.pylon.prepared_request import PreparedRequest +from nexus.pylon.proxy_manager import ProxyManager +from nexus.pylon.resolvers.base import BaseResolver + + +class DoiOrgRequestResolver(BaseResolver): + def __init__( + self, + selector='.link[0].URL', + format_string='{selected}', + timeout: float = 10.0, + resolve_timeout: float = 10.0, + proxy_list: Optional[List] = None, + proxy_manager: Optional[ProxyManager] = None, + ): + super().__init__(proxy_list=proxy_list, proxy_manager=proxy_manager) + self.selector = jq.compile(selector) + self.format_string = format_string + self.timeout = timeout + self.resolve_timeout = resolve_timeout + + def __str__(self): + return f'{self.__class__.__name__}(selector = {self.selector}, format_string = {self.format_string})' + + async def resolve_through_doi_org(self, params): + async with self.get_session() as session: + doi_url = f'https://doi.org/{params["doi"]}' + async with PreparedRequest( + method='get', + url=doi_url, + timeout=self.resolve_timeout, + headers={'Accept': 'application/json'} + ).execute_with(session=session) as resp: + return await resp.json() + + async def resolve(self, params: Dict) -> AsyncIterable[PreparedRequest]: + body = await self.resolve_through_doi_org(params) + try: + selected = json.loads(self.selector.input(body).text()) + except ValueError as e: + logging.getLogger('error').error({ + 'action': 'error', + 'mode': 'pylon', + 'error': str(e) + }) + return + if selected: + yield PreparedRequest( + method='get', + url=self.format_string.format(selected=selected), + timeout=self.timeout, + ) diff --git a/nexus/pylon/resolvers/request.py b/nexus/pylon/resolvers/request.py new file mode 100644 index 0000000..a4b1289 --- /dev/null +++ b/nexus/pylon/resolvers/request.py @@ -0,0 +1,50 @@ +import re +from typing import ( + AsyncIterable, + List, + Optional, +) + +from nexus.pylon.prepared_request import PreparedRequest +from nexus.pylon.proxy_manager import ProxyManager +from nexus.pylon.resolvers.base import BaseResolver + + +class RequestResolver(BaseResolver): + def __init__( + self, + url: str, + extractors: List, + proxy_list: Optional[List] = None, + proxy_manager: Optional[ProxyManager] = None, + ): + super().__init__(proxy_list=proxy_list, proxy_manager=proxy_manager) + self.url = url + self.extractors = extractors + + def __str__(self): + return f'{self.__class__.__name__}({self.url})' + + async def resolve(self, params) -> AsyncIterable[PreparedRequest]: + async with self.get_session() as session: + url = self.url.format(**params) + async with PreparedRequest( + method='get', + url=url, + timeout=10.0, + ).execute_with(session=session) as resp: + # Sometimes sci-hub returns file + if resp.headers.get('Content-Type') == 'application/pdf': + yield PreparedRequest(method='get', url=url, timeout=10.0) + downloaded_page_bytes = await resp.read() + downloaded_page = downloaded_page_bytes.decode('utf-8', 'backslashreplace') + + for extractor in self.extractors: + match = re.search(extractor['re'], downloaded_page, re.IGNORECASE) + if match: + matched_group = match.group(extractor['producer']['group']) + yield PreparedRequest( + method='get', + url=extractor['producer']['format_string'].format(matched_group=matched_group), + timeout=extractor['producer'].get('timeout', 10.0), + ) diff --git a/nexus/pylon/resolvers/template.py b/nexus/pylon/resolvers/template.py new file mode 100644 index 0000000..397e453 --- /dev/null +++ b/nexus/pylon/resolvers/template.py @@ -0,0 +1,32 @@ +from typing import ( + AsyncIterable, + List, + Optional, +) + +from nexus.pylon.prepared_request import PreparedRequest +from nexus.pylon.proxy_manager import ProxyManager +from nexus.pylon.resolvers.base import BaseResolver + + +class TemplateResolver(BaseResolver): + def __init__( + self, + format_string: str = 'https://doi.org/{doi}', + timeout: float = 10.0, + proxy_list: Optional[List] = None, + proxy_manager: Optional[ProxyManager] = None, + ): + super().__init__(proxy_list=proxy_list, proxy_manager=proxy_manager) + self.format_string = format_string + self.timeout = timeout + + def __str__(self): + return f'{self.__class__.__name__}({self.format_string})' + + async def resolve(self, params) -> AsyncIterable[PreparedRequest]: + yield PreparedRequest( + method='GET', + url=self.format_string.format(**params), + timeout=self.timeout, + ) diff --git a/nexus/pylon/source.py b/nexus/pylon/source.py new file mode 100644 index 0000000..24efe4a --- /dev/null +++ b/nexus/pylon/source.py @@ -0,0 +1,88 @@ +import logging +from typing import ( + AsyncIterable, + Dict, + List, +) + +from aiohttp.client_exceptions import ClientPayloadError +from library.aiokit.aiokit import AioThing +from library.logging import error_log +from nexus.pylon.drivers.base import BaseDriver +from nexus.pylon.exceptions import ( + DownloadError, + NotFoundError, +) +from nexus.pylon.matcher import Matcher +from nexus.pylon.proto.file_pb2 import FileResponse as FileResponsePb +from nexus.pylon.resolvers.base import BaseResolver +from utils.izihawa_utils.importlib import import_object + + +class Source(AioThing): + def __init__(self, matcher: Matcher, resolver: BaseResolver, driver: BaseDriver): + super().__init__() + self.matcher = matcher + self.resolver = resolver + self.driver = driver + + @classmethod + def from_config( + cls, + proxy_manager, + source_config, + downloads_directory: str, + default_driver_proxy_list: List, + ) -> 'Source': + matcher = Matcher(source_config['matcher']) + + resolver_cls = import_object( + source_config.get('resolver', {}).get('class', 'nexus.pylon.resolvers.TemplateResolver') + ) + resolver_args = dict(proxy_manager=proxy_manager) + resolver_args.update(**source_config.get('resolver', {}).get('args', {})) + resolver = resolver_cls(**resolver_args) + + driver_cls = import_object(source_config.get('driver', {}).get('class', 'nexus.pylon.drivers.BrowserDriver')) + driver_args = dict( + proxy_manager=proxy_manager, + downloads_directory=downloads_directory, + proxy_list=default_driver_proxy_list, + ) + driver_args.update(**source_config.get('driver', {}).get('args', {})) + driver = driver_cls(**driver_args) + source = Source(matcher=matcher, resolver=resolver, driver=driver) + return source + + def __str__(self): + return f'Source({self.resolver}, {self.driver})' + + def is_match(self, params): + return self.matcher.is_match(params) + + async def download(self, params: Dict) -> AsyncIterable[FileResponsePb]: + yield FileResponsePb(status=FileResponsePb.Status.RESOLVING) + async for prepared_file_request in self.resolver.resolve(params): + logging.debug({ + 'action': 'download', + 'mode': 'pylon', + 'params': params, + 'source': str(self), + 'url': prepared_file_request.url, + }) + try: + async for resp in self.driver.execute_prepared_file_request( + prepared_file_request=prepared_file_request, + params=params, + ): + yield resp + return + except ClientPayloadError as e: + error_log(e, level=logging.WARNING) + continue + except NotFoundError: + continue + except DownloadError as e: + error_log(e) + continue + raise NotFoundError(params=params, resolver=str(self.resolver), driver=str(self.driver)) diff --git a/nexus/pylon/sources/__init__.py b/nexus/pylon/sources/__init__.py deleted file mode 100644 index af4dd16..0000000 --- a/nexus/pylon/sources/__init__.py +++ /dev/null @@ -1,17 +0,0 @@ -from .base import BaseSource -from .libgen_doi import LibgenDoiSource -from .libgen_md5 import LibgenMd5Source -from .libgen_new import LibraryLolSource -from .scihub import ( - SciHubMksaTopSource, - SciHubSeSource, -) - -__all__ = [ - 'BaseSource', - 'LibgenDoiSource', - 'LibgenMd5Source', - 'LibraryLolSource', - 'SciHubMksaTopSource', - 'SciHubSeSource', -] diff --git a/nexus/pylon/sources/base.py b/nexus/pylon/sources/base.py deleted file mode 100644 index d43d915..0000000 --- a/nexus/pylon/sources/base.py +++ /dev/null @@ -1,252 +0,0 @@ -import asyncio -import hashlib -import socket -from contextlib import asynccontextmanager -from typing import ( - AsyncIterable, - Callable, - Optional, -) - -import aiohttp -import aiohttp.client_exceptions -from aiohttp.client_reqrep import ClientRequest -from aiohttp_socks import ( - ProxyConnectionError, - ProxyConnector, - ProxyError, -) -from aiokit import AioThing -from izihawa_utils.importlib import class_fullname -from library.logging import error_log -from nexus.pylon.exceptions import ( - BadResponseError, - DownloadError, - IncorrectMD5Error, - NotFoundError, -) -from nexus.pylon.pdftools import is_pdf -from nexus.pylon.proto.file_pb2 import Chunk as ChunkPb -from nexus.pylon.proto.file_pb2 import FileResponse as FileResponsePb -from python_socks import ProxyTimeoutError -from tenacity import ( - retry, - retry_if_exception_type, - stop_after_attempt, -) - -DEFAULT_USER_AGENT = 'curl/7.68.0' - - -class KeepAliveClientRequest(ClientRequest): - async def send(self, conn): - sock = conn.protocol.transport.get_extra_info("socket") - sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) - sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 60) - sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 2) - sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 5) - - return await super().send(conn) - - -class PreparedRequest: - def __init__( - self, - method: str, - url: str, - headers: Optional[dict] = None, - params: Optional[dict] = None, - cookies: Optional[dict] = None, - ssl: bool = True, - timeout: Optional[float] = None - ): - self.method = method - self.url = url - self.headers = { - 'Connection': 'keep-alive', - 'User-Agent': DEFAULT_USER_AGENT, - } - if headers: - self.headers.update(headers) - self.params = params - self.cookies = cookies - self.ssl = ssl - self.timeout = timeout - - def __repr__(self): - return f'{self.method} {self.url} {self.headers} {self.params}' - - def __str__(self): - return repr(self) - - @asynccontextmanager - async def execute_with(self, session): - try: - async with session.request( - method=self.method, - url=self.url, - timeout=self.timeout, - headers=self.headers, - cookies=self.cookies, - params=self.params, - ssl=self.ssl, - ) as resp: - yield resp - except BadResponseError as e: - e.add('url', self.url) - raise e - except ( - aiohttp.client_exceptions.ClientConnectionError, - aiohttp.client_exceptions.ClientPayloadError, - aiohttp.client_exceptions.ClientResponseError, - aiohttp.client_exceptions.TooManyRedirects, - asyncio.exceptions.IncompleteReadError, - asyncio.TimeoutError, - ConnectionAbortedError, - ConnectionResetError, - ProxyConnectionError, - ProxyTimeoutError, - ProxyError, - ) as e: - raise DownloadError( - nested_error=repr(e), - nested_error_cls=class_fullname(e), - url=self.url, - ) - - -class BaseValidator: - def update(self, chunk: bytes): - pass - - def validate(self): - pass - - -class Md5Validator(BaseValidator): - def __init__(self, md5: str): - self.md5 = md5 - self.v = hashlib.md5() - - def update(self, chunk: bytes): - self.v.update(chunk) - - def validate(self): - digest = self.v.hexdigest() - if self.md5.lower() != digest.lower(): - raise IncorrectMD5Error(requested_md5=self.md5, downloaded_md5=digest) - - -class DoiValidator(BaseValidator): - def __init__(self, doi: str, md5: Optional[str] = None): - self.doi = doi - self.md5 = md5 - self.file = bytes() - self.v = hashlib.md5() - - def update(self, chunk): - self.file += chunk - self.v.update(chunk) - - def validate(self): - if self.md5 and self.md5.lower() == self.v.hexdigest().lower(): - return - elif not is_pdf(f=self.file): - raise BadResponseError(doi=self.doi, file=str(self.file[:100])) - - -class BaseSource(AioThing): - allowed_content_type = None - base_url = None - is_enabled = True - resolve_timeout = None - ssl = True - timeout = None - use_proxy = None - - def __init__(self, proxy: str = None, resolve_proxy: str = None): - super().__init__() - self.proxy = proxy - self.resolve_proxy = resolve_proxy - - def get_proxy(self): - if self.proxy and self.use_proxy is not False: - return ProxyConnector.from_url(self.proxy, ssl=self.ssl) - return aiohttp.TCPConnector(ssl=self.ssl) - - def get_resolve_proxy(self): - if self.resolve_proxy and self.use_proxy is not False: - return ProxyConnector.from_url(self.resolve_proxy, ssl=self.ssl) - return aiohttp.TCPConnector(ssl=self.ssl) - - def get_session(self): - return aiohttp.ClientSession(request_class=KeepAliveClientRequest, connector=self.get_proxy()) - - def get_resolve_session(self): - return aiohttp.ClientSession(request_class=KeepAliveClientRequest, connector=self.get_resolve_proxy()) - - async def resolve(self, error_log_func: Callable = error_log) -> AsyncIterable[PreparedRequest]: - raise NotImplementedError("`resolve` for BaseSource is not implemented") - - def get_validator(self): - return BaseValidator() - - @retry( - reraise=True, - stop=stop_after_attempt(3), - retry=retry_if_exception_type((ProxyError, aiohttp.client_exceptions.ClientPayloadError, ProxyTimeoutError)), - ) - async def execute_prepared_file_request(self, prepared_file_request: PreparedRequest): - async with self.get_session() as session: - async with prepared_file_request.execute_with(session=session) as resp: - if resp.status == 404: - raise NotFoundError(url=prepared_file_request.url) - elif ( - resp.status != 200 - or ( - self.allowed_content_type - and resp.headers.get('Content-Type', '').lower() not in self.allowed_content_type - ) - ): - raise BadResponseError( - request_headers=prepared_file_request.headers, - url=prepared_file_request.url, - status=resp.status, - headers=str(resp.headers), - ) - file_validator = self.get_validator() - yield FileResponsePb(status=FileResponsePb.Status.BEGIN_TRANSMISSION, source=prepared_file_request.url) - async for content, _ in resp.content.iter_chunks(): - file_validator.update(content) - yield FileResponsePb(chunk=ChunkPb(content=content), source=prepared_file_request.url) - file_validator.validate() - - -class Md5Source(BaseSource): - def __init__( - self, - md5: str, - proxy: Optional[str] = None, - resolve_proxy: Optional[str] = None, - ): - super().__init__(proxy=proxy, resolve_proxy=resolve_proxy) - self.md5 = md5 - - def get_validator(self): - return Md5Validator(self.md5) - - -class DoiSource(BaseSource): - def __init__( - self, - doi: str, - md5: Optional[str] = None, - proxy: Optional[str] = None, - resolve_proxy: Optional[str] = None, - ): - super().__init__(proxy=proxy, resolve_proxy=resolve_proxy) - self.doi = doi - self.md5 = md5 - - def get_validator(self): - return DoiValidator(self.doi, md5=self.md5) diff --git a/nexus/pylon/sources/libgen_doi.py b/nexus/pylon/sources/libgen_doi.py deleted file mode 100644 index 0e05ffc..0000000 --- a/nexus/pylon/sources/libgen_doi.py +++ /dev/null @@ -1,38 +0,0 @@ -import re -from typing import ( - AsyncIterable, - Callable, -) - -from library.logging import error_log -from nexus.pylon.exceptions import RegexNotFoundError - -from .base import ( - DoiSource, - PreparedRequest, -) - - -class LibgenDoiSource(DoiSource): - base_url = 'http://libgen.rocks' - resolve_timeout = 10 - - async def resolve(self, error_log_func: Callable = error_log) -> AsyncIterable[PreparedRequest]: - async with self.get_resolve_session() as session: - url = f'{self.base_url}/ads.php?doi={self.doi}' - async with PreparedRequest( - method='get', - url=url, - timeout=self.resolve_timeout, - ).execute_with(session=session) as resp: - downloaded_page_bytes = await resp.read() - downloaded_page = downloaded_page_bytes.decode('utf-8', 'backslashreplace') - match = re.search( - 'https?://.*/get\\.php\\?md5=[a-fA-F\\d]+&key=[A-Za-z\\d]+&doi=.*', - downloaded_page, - re.IGNORECASE, - ) - if match: - yield PreparedRequest(method='get', url=match.group(), timeout=self.timeout) - else: - error_log_func(RegexNotFoundError(url=url)) diff --git a/nexus/pylon/sources/libgen_md5.py b/nexus/pylon/sources/libgen_md5.py deleted file mode 100644 index 4a249cd..0000000 --- a/nexus/pylon/sources/libgen_md5.py +++ /dev/null @@ -1,43 +0,0 @@ -import re -from typing import ( - AsyncIterable, - Callable, -) - -from library.logging import error_log - -from .base import ( - Md5Source, - PreparedRequest, -) - - -class LibgenMd5Source(Md5Source): - base_url = 'http://libgen.rocks' - resolve_timeout = 10 - - async def resolve_lg(self, session, url): - async with PreparedRequest( - method='get', - url=url, - timeout=self.resolve_timeout - ).execute_with(session=session) as resp: - downloaded_page = await resp.text() - match = re.search( - 'get\\.php\\?md5=.*&key=[A-Za-z0-9]+', - downloaded_page, - re.IGNORECASE, - ) - if match: - return PreparedRequest(method='get', url=f'{self.base_url}/{match.group()}', timeout=self.timeout) - - async def resolve(self, error_log_func: Callable = error_log) -> AsyncIterable[PreparedRequest]: - async with self.get_resolve_session() as session: - url = f'{self.base_url}/ads.php?md5={self.md5}' - result = await self.resolve_lg(session, url) - if result: - yield result - url = f'{self.base_url}/foreignfiction/ads.php?md5={self.md5}' - result = await self.resolve_lg(session, url) - if result: - yield result diff --git a/nexus/pylon/sources/libgen_new.py b/nexus/pylon/sources/libgen_new.py deleted file mode 100644 index 4650a03..0000000 --- a/nexus/pylon/sources/libgen_new.py +++ /dev/null @@ -1,56 +0,0 @@ -import re -from typing import ( - AsyncIterable, - Callable, -) - -from library.logging import error_log -from nexus.pylon.exceptions import RegexNotFoundError - -from .base import ( - Md5Source, - PreparedRequest, -) - - -class LibgenNewSource(Md5Source): - async def resolve(self, error_log_func: Callable = error_log) -> AsyncIterable[PreparedRequest]: - async with self.get_resolve_session() as session: - url = f'{self.base_url}/main/{self.md5.upper()}' - async with PreparedRequest( - method='get', - url=url, - timeout=self.resolve_timeout - ).execute_with(session) as resp: - downloaded_page = await resp.text() - match_ipfs = re.search( - 'https://ipfs.io/ipfs/[A-Za-z\\d]+', - downloaded_page, - re.IGNORECASE, - ) - if match_ipfs: - yield PreparedRequest(method='get', url=match_ipfs.group(), ssl=self.ssl, timeout=self.timeout) - match_cf = re.search( - 'https://cloudflare-ipfs.com/ipfs/[A-Za-z\\d]+', - downloaded_page, - re.IGNORECASE, - ) - if match_cf: - yield PreparedRequest(method='get', url=match_cf.group(), ssl=self.ssl, timeout=self.timeout) - match_infura = re.search( - 'https://ipfs.infura.io/ipfs/[A-Za-z\\d]+', - downloaded_page, - re.IGNORECASE, - ) - if match_infura: - yield PreparedRequest(method='get', url=match_infura.group(), ssl=self.ssl, timeout=self.timeout) - - if not match_cf or not match_infura or not match_ipfs: - error_log_func(RegexNotFoundError(url=url)) - - -class LibraryLolSource(LibgenNewSource): - base_url = 'http://library.lol' - resolve_timeout = 20 - ssl = False - timeout = 120 diff --git a/nexus/pylon/sources/scihub.py b/nexus/pylon/sources/scihub.py deleted file mode 100644 index 4e132d9..0000000 --- a/nexus/pylon/sources/scihub.py +++ /dev/null @@ -1,54 +0,0 @@ -import re -from typing import ( - AsyncIterable, - Callable, -) - -from library.logging import error_log -from nexus.pylon.exceptions import RegexNotFoundError - -from .base import ( - DoiSource, - PreparedRequest, -) - - -class SciHubSource(DoiSource): - allowed_content_type = { - 'application/octet-stream', - 'application/pdf', - 'application/pdf;charset=utf-8', - } - base_url = None - ssl = False - - async def resolve(self, error_log_func: Callable = error_log) -> AsyncIterable[PreparedRequest]: - async with self.get_resolve_session() as session: - url = f'{self.base_url}/{self.doi}' - async with PreparedRequest( - method='get', - url=url, - timeout=self.resolve_timeout - ).execute_with(session=session) as resp: - # Sometimes sci-hub returns file - if resp.headers.get('Content-Type') == 'application/pdf': - yield PreparedRequest(method='get', url=url, timeout=self.timeout) - downloaded_page_bytes = await resp.read() - downloaded_page = downloaded_page_bytes.decode('utf-8', 'backslashreplace') - match = re.search(r'(?:https?:)?\\?/\\?/?.*\.pdf\?download=true', downloaded_page, re.IGNORECASE) - if match: - url = match.group() - url = url.replace(r'\/', '/') - if not url.startswith('http'): - url = self.base_url.rstrip('/') + url - yield PreparedRequest(method='get', url=url, timeout=self.timeout) - else: - error_log_func(RegexNotFoundError(url=url)) - - -class SciHubMksaTopSource(SciHubSource): - base_url = 'https://sci-hub.mksa.top' - - -class SciHubSeSource(SciHubSource): - base_url = 'https://sci-hub.se' diff --git a/nexus/pylon/sources/specific/__init__.py b/nexus/pylon/sources/specific/__init__.py deleted file mode 100644 index c807405..0000000 --- a/nexus/pylon/sources/specific/__init__.py +++ /dev/null @@ -1,24 +0,0 @@ -from typing import Iterable - -from ..base import DoiSource -from .biorxiv import BiorxivSource -from .lancet import LancetSource -from .nature import NatureSource -from .nejm import NejmSource -from .pnas import PnasSource -from .research_square import ResearchSquareSource - -paper_sources = { - '10.1016': [LancetSource], - '10.1038': [NatureSource], - '10.1056': [NejmSource], - '10.1073': [PnasSource], - '10.1101': [BiorxivSource], - '10.21203': [ResearchSquareSource], -} - - -def get_specific_sources_for_doi(doi: str, **kwargs) -> Iterable[DoiSource]: - source_clses = paper_sources.get(doi.split('/')[0], []) - source_clses = list(map(lambda cls: cls(doi, **kwargs), source_clses)) - return source_clses diff --git a/nexus/pylon/sources/specific/biorxiv.py b/nexus/pylon/sources/specific/biorxiv.py deleted file mode 100644 index b652369..0000000 --- a/nexus/pylon/sources/specific/biorxiv.py +++ /dev/null @@ -1,24 +0,0 @@ -from typing import ( - AsyncIterable, - Callable, -) - -from library.logging import error_log -from nexus.pylon.sources.base import ( - DoiSource, - PreparedRequest, -) - - -class BiorxivSource(DoiSource): - base_url = 'https://dx.doi.org' - - async def resolve(self, error_log_func: Callable = error_log) -> AsyncIterable[PreparedRequest]: - async with self.get_resolve_session() as session: - url = f'{self.base_url}/{self.doi}' - async with PreparedRequest( - method='get', - url=url, - timeout=self.resolve_timeout, - ).execute_with(session=session) as resp: - yield PreparedRequest(method='get', url=str(resp.url) + '.full.pdf', timeout=self.timeout) diff --git a/nexus/pylon/sources/specific/lancet.py b/nexus/pylon/sources/specific/lancet.py deleted file mode 100644 index 7924b99..0000000 --- a/nexus/pylon/sources/specific/lancet.py +++ /dev/null @@ -1,34 +0,0 @@ -from typing import ( - AsyncIterable, - Callable, -) - -from library.logging import error_log -from nexus.pylon.sources.base import ( - DoiSource, - PreparedRequest, -) - - -class LancetSource(DoiSource): - base_url = 'https://www.thelancet.com' - resolve_timeout = 10 - use_proxy = False - - async def resolve(self, error_log_func: Callable = error_log) -> AsyncIterable[PreparedRequest]: - async with self.get_resolve_session() as session: - splitted_doi = self.doi.split("/", maxsplit=1) - if len(splitted_doi) < 2: - return - url = f'{self.base_url}/action/showPdf?pii={splitted_doi[1].upper()}' - async with PreparedRequest( - method='get', - url=url, - timeout=self.resolve_timeout, - ).execute_with(session=session) as resp: - yield PreparedRequest( - method='get', - cookies=resp.cookies, - url=str(resp.url), - timeout=self.resolve_timeout, - ) diff --git a/nexus/pylon/sources/specific/nature.py b/nexus/pylon/sources/specific/nature.py deleted file mode 100644 index ded5c39..0000000 --- a/nexus/pylon/sources/specific/nature.py +++ /dev/null @@ -1,27 +0,0 @@ -from typing import ( - AsyncIterable, - Callable, -) - -from library.logging import error_log -from nexus.pylon.sources.base import ( - DoiSource, - PreparedRequest, -) - - -class NatureSource(DoiSource): - base_url = 'https://www.nature.com' - resolve_timeout = 10 - use_proxy = False - - async def resolve(self, error_log_func: Callable = error_log) -> AsyncIterable[PreparedRequest]: - splitted_doi = self.doi.split("/", maxsplit=1) - if len(splitted_doi) < 2: - return - url = f'{self.base_url}/articles/{splitted_doi[1].upper()}.pdf' - yield PreparedRequest( - method='get', - url=url, - timeout=self.timeout, - ) diff --git a/nexus/pylon/sources/specific/nejm.py b/nexus/pylon/sources/specific/nejm.py deleted file mode 100644 index ebc3d83..0000000 --- a/nexus/pylon/sources/specific/nejm.py +++ /dev/null @@ -1,26 +0,0 @@ -from typing import ( - AsyncIterable, - Callable, -) - -from library.logging import error_log -from nexus.pylon.sources.base import ( - DoiSource, - PreparedRequest, -) - - -class NejmSource(DoiSource): - base_url = 'https://www.nejm.org' - resolve_timeout = 10 - use_proxy = False - - async def resolve(self, error_log_func: Callable = error_log) -> AsyncIterable[PreparedRequest]: - async with self.get_resolve_session() as session: - url = f'{self.base_url}/doi/pdf/{self.doi}' - async with PreparedRequest( - method='get', - url=url, - timeout=self.resolve_timeout, - ).execute_with(session=session) as resp: - yield PreparedRequest(method='get', cookies=resp.cookies, url=str(resp.url), timeout=self.timeout) diff --git a/nexus/pylon/sources/specific/pnas.py b/nexus/pylon/sources/specific/pnas.py deleted file mode 100644 index 9538459..0000000 --- a/nexus/pylon/sources/specific/pnas.py +++ /dev/null @@ -1,42 +0,0 @@ -import re -from typing import ( - AsyncIterable, - Callable, -) - -from library.logging import error_log -from nexus.pylon.exceptions import RegexNotFoundError -from nexus.pylon.sources.base import ( - DoiSource, - PreparedRequest, -) - - -class PnasSource(DoiSource): - base_url = 'https://www.pnas.org' - resolve_timeout = 10 - use_proxy = False - - async def resolve(self, error_log_func: Callable = error_log) -> AsyncIterable[PreparedRequest]: - async with self.get_resolve_session() as session: - url = f'{self.base_url}/lookup/doi/{self.doi}' - async with PreparedRequest( - method='get', - url=url, - timeout=self.resolve_timeout, - ).execute_with(session=session) as resp_1: - async with PreparedRequest( - method='get', - cookies=resp_1.cookies, - url=str(resp_1.url), - timeout=self.resolve_timeout, - ).execute_with(session=session) as resp_2: - download_page = await resp_2.text() - match = re.search( - r'\"(https://www\.pnas\.org/content/pnas/[^\"]+\.pdf)\"', - download_page, - re.IGNORECASE, - ) - if not match: - raise RegexNotFoundError(url=url) - yield PreparedRequest(method='get', url=match.group(1), timeout=self.timeout) diff --git a/nexus/pylon/sources/specific/research_square.py b/nexus/pylon/sources/specific/research_square.py deleted file mode 100644 index dadc8a6..0000000 --- a/nexus/pylon/sources/specific/research_square.py +++ /dev/null @@ -1,34 +0,0 @@ -import re -from typing import ( - AsyncIterable, - Callable, -) - -from library.logging import error_log -from nexus.pylon.exceptions import RegexNotFoundError -from nexus.pylon.sources.base import ( - DoiSource, - PreparedRequest, -) - - -class ResearchSquareSource(DoiSource): - base_url = 'https://dx.doi.org' - - async def resolve(self, error_log_func: Callable = error_log) -> AsyncIterable[PreparedRequest]: - async with self.get_resolve_session() as session: - url = f'{self.base_url}/{self.doi}' - async with PreparedRequest( - method='get', - url=url, - timeout=self.resolve_timeout, - ).execute_with(session=session) as resp: - download_page = await resp.text() - match = re.search( - r'\"(https://www\.researchsquare\.com/article/[^\"]+\.pdf)\"', - download_page, - re.IGNORECASE, - ) - if not match: - raise RegexNotFoundError(url=url) - yield PreparedRequest(method='get', url=match.group(1), timeout=self.timeout) diff --git a/nexus/pylon/validators/__init__.py b/nexus/pylon/validators/__init__.py new file mode 100644 index 0000000..33cc2a0 --- /dev/null +++ b/nexus/pylon/validators/__init__.py @@ -0,0 +1,4 @@ +from .md5 import Md5Validator +from .pdf import PdfValidator + +__all__ = ['Md5Validator', 'PdfValidator'] diff --git a/nexus/pylon/validators/base.py b/nexus/pylon/validators/base.py new file mode 100644 index 0000000..cbf6e1c --- /dev/null +++ b/nexus/pylon/validators/base.py @@ -0,0 +1,6 @@ +class BaseValidator: + def update(self, chunk): + pass + + def validate(self): + pass diff --git a/nexus/pylon/validators/md5.py b/nexus/pylon/validators/md5.py new file mode 100644 index 0000000..d57660f --- /dev/null +++ b/nexus/pylon/validators/md5.py @@ -0,0 +1,19 @@ +import hashlib +from typing import Dict + +from nexus.pylon.exceptions import IncorrectMD5Error +from nexus.pylon.validators.base import BaseValidator + + +class Md5Validator(BaseValidator): + def __init__(self, params: Dict): + self.md5 = params['md5'] + self.v = hashlib.md5() + + def update(self, chunk: bytes): + self.v.update(chunk) + + def validate(self): + digest = self.v.hexdigest() + if self.md5.lower() != digest.lower(): + raise IncorrectMD5Error(requested_md5=self.md5, downloaded_md5=digest) diff --git a/nexus/pylon/validators/pdf.py b/nexus/pylon/validators/pdf.py new file mode 100644 index 0000000..d393419 --- /dev/null +++ b/nexus/pylon/validators/pdf.py @@ -0,0 +1,68 @@ +import hashlib +import logging +from io import BytesIO +from typing import Dict + +import PyPDF2 +from nexus.pylon.exceptions import BadResponseError +from nexus.pylon.pdftools import is_pdf +from nexus.pylon.validators.base import BaseValidator +from PyPDF2.errors import PdfReadError + + +class PdfValidator(BaseValidator): + def __init__(self, params: Dict): + self.params = params + self.md5 = params.get('md5') + self.file = bytes() + self.v = hashlib.md5() + + def update(self, chunk): + self.file += chunk + if self.md5: + self.v.update(chunk) + + def validate(self): + if self.md5 and self.md5.lower() == self.v.hexdigest().lower(): + logging.getLogger('debug').debug({ + 'action': 'validation', + 'mode': 'pylon', + 'result': 'md5_ok', + 'params': self.params, + }) + return + elif not is_pdf(f=self.file): + logging.getLogger('debug').debug({ + 'action': 'validation', + 'mode': 'pylon', + 'result': 'not_pdf', + 'params': self.params, + }) + raise BadResponseError(file=str(self.file[:100])) + + try: + logging.getLogger('debug').debug({ + 'action': 'open_pdf', + 'mode': 'pylon', + 'file_len': len(self.file), + 'params': self.params, + }) + PyPDF2.PdfReader(BytesIO(self.file)) + logging.getLogger('debug').debug({ + 'action': 'opened_pdf', + 'mode': 'pylon', + 'file_len': len(self.file), + 'params': self.params, + }) + except PdfReadError: + logging.getLogger('debug').debug({ + 'action': 'validation', + 'mode': 'pylon', + 'result': 'not_opened_as_pdf', + }) + raise BadResponseError(file=str(self.file[:100])) + logging.getLogger('debug').debug({ + 'action': 'validation', + 'mode': 'pylon', + 'result': 'ok', + }) diff --git a/nexus/translations/translations.yaml b/nexus/translations/translations.yaml index 48c91a2..45bc5e8 100644 --- a/nexus/translations/translations.yaml +++ b/nexus/translations/translations.yaml @@ -2,11 +2,46 @@ # yamllint disable rule:line-length en: + ABOUT_US: | + **About us** + Among the most impactful inventions of humanity such as the wheel, semiconductors or the wing were the invention of writing and advent of mass printing. Uwe of printing press made possible wide spread of ideas and knowledge. This burst increased the number of educated people and in its turn people started the Age of Enlightenment and shaped modern civilization. + + Why printing provoked such dramatic changes in society? + Sane beings and knowledge live in a natural symbiosis: knowledge are fruiting and growing while circulated among people and people do the same. We may even note that complexity of human civilization, its achievements and technological progress during all its history have been correlated with the amount of accumulated knowledge and possibility to share and navigate through it. + + Last advances in knowledge management has been brought by modern machines together with AI. It empowered our skills of storing and searching through huge amounts of information to the very high. Today, machines are able to understand all data we've stored in digital form, derive new knowledge, find out inconsistencies in our researches and reveal hidden gems in researches. Today, machines are able to help us to reach the [technological singularity](https://en.wikipedia.org/wiki/Technological_singularity). + + However, there is one remaining issue: knowledge is usurped by large publishers, corporations such as Elsevier, Springer, Wiley, T&F etc. Held by copyright, the knowledge remains out of reach for many researchers and for many enterprises that could launch the new Age of Enlightenment. + + Knowledge is not just usurped, an entire system has been built which is putting in chains researchers, academia and readers: + - Large publishers promote and lobby approaches that encourage evaluation of researchers using the number of published articles in journals having high-impact. Everybody knows who owns journals of high "impact" + - Publishers make authors to pay for publishing tax-funded researches, then readers to pay for access to published tax-funded researches, while peer-reviewing is done for free by other researchers and this activity is considered as "honorable" in academia + - Publishers such as Elsevier repeatedly carried and carry campaigns against open access + + Publishers managed to own knowledge at a time when anything could be owned. Afterwards, they ignored the advent of the Internet that made copying and mass reading free and went on collecting tribute. Since that times, modern publishers like Elsevier, Springer and others did nothing to spread knowledge but have only built paywalls for keeping knowledge away from those who cannot pay. + + The world is obviously lagging behind modern state of the technologies. The copyrights on scientific publications should have been canceled decades ago but publishers' lobbying and mere slowness of political systems made us to live in the world where almost all researchers are using tools to bypass paywalls. + + Why exactly knowledge and information cannot be a subject of property rights? There are three reasons. + + Firstly, unlike material things, knowledge can be spread without costs. Every bit of knowledge increases prosperity of the entire society in a much greater degree than it takes from its author. + + Paywalls built by copyright holders are making access unreasonably expensive and it deals a huge damage to our future: + - Doctors can't learn new medicine protocols that may save lives of our children. + - Engineers can't learn new approaches to build reliable and safe machines. + - Students can't learn how to build fair and modern society. + - Your neighbour will remain an ignorant person denying vaccines and supporting wars + + Finally, what is knowledge? The preexistent order of things, it may be discovered by explorers but not changed or owned. Knowledge has no master. + + Our goals, includes but not limited by: + - Cancelling any restrictions on spread of knowledge + - Making knowledge replicated reliably, available and navigable for every person on our pale blue dot + - Bridging AI and accumulated knowledge + - Promoting continuous education and building the cult of knowledge ABSTRACT: Abstract ACCEPTED: Accepted! - ALREADY_DOWNLOADING: | - I have found this book in the Internet. - Please, be patient, I will send as it will be ready. + ALREADY_DOWNLOADING: Already downloading AUTHORS: Authors BANNED: | You are banned until **{datetime} UTC**. @@ -16,14 +51,7 @@ en: Reason: **{reason}** BAN_MESSAGE_TOO_MANY_REQUESTS: Too many requests CLOSE: Close - CONTACT: | - **Updates and news**: {related_channel} - **Donation details**: /donate - - **LiberaPay**: {libera_pay_url} - **BTC Address:** `{btc_donate_address}` - - You can directly feedback us by /contact + CONNECTOME_OPTION: Connectome COPYRIGHT_DESCRIPTION: | If you wish to make a copyright infringement complaint: @@ -37,28 +65,11 @@ en: COPYRIGHT_INFRINGEMENT_ACCEPTED: | Your claim for copyright infringement has been accepted. COULD_NOT_FIND_ANYTHING: Could not find anything:( + DELETION_FORBIDDEN_DUE_TO_AGE: Telegram doesn't allow me to remove messages older than 2 days :( DESCRIPTION: Description DISABLE_DISCOVERY: If you don't want to get personalized feed, you can disable Nexus Discovery in /settings - DISCOVERY_OPTION: Nexus Discovery + DISCOVERY_OPTION: Discovery DISCOVERY_PROMPT: 🦘 **Look at what I've found for you:** 🦘 - DONATE: | - Thank you for visiting /donate. I appreciate even your intention just to open this message. - - All good teaching must flow from copious sources of knowledge. The shallow fountain cannot emit a vigorous stream. - Donating to us, you are donating to all people who have no access to human knowledge due to paywall restrictions or an excessively high price. - - All donations will be spent for: - - Development of the Nexus Index and making as much knowledge searchable as possible for everybody. - - Maintaining servers. Building and serving the index and using machine learning is a heavy computational task requiring a lot of GPUs, CPUs and disks. - - Every cent will be used for the project. - You can /contact us or subscribe at {related_channel}, if you want to know exactly how donations will be spent. - - **Donation details** - - **LiberaPay**: {libera_pay_url} - **BTC Address**: `{btc_donate_address}` - **Amazon Gift Card**: [Buy]({amazon_gift_card_url}) any card using `{amazon_gift_card_recipient}` as recipient email DOWNLOAD: Download DOWNLOADED: downloaded DOWNLOADING: downloading... @@ -69,73 +80,209 @@ en: EDITION: Edition FILE: File FILE_TOO_BIG_ERROR: File is too big, contact @nexus_search + FOUND_N_ITEMS: '{count} results' HELP: | Hi! I'm **Nexus** bot! I can search books or scientific articles by titles, authors or DOIs. - **Just type your request in plain words.** + Just type your request in plain words. - Example: `Divine Comedy Dante` or `https://doi.org/10.1159/000477855` + **Examples** + - `Divine Comedy Dante` + - `https://doi.org/10.1159/000477855` + - Search in the books only: `📚 JavaScript` + - Restrict search by 2019 year: `hemoglobin +year:2019` + - Find only starting from 2019 year: `hemoglobin +year:[2019 TO *]` + - Search by author: `authors:Jack authors:London` + - Exact match: `"Fetal Hemoglobin"` + - Filter formats (all except pdf): `+JavaScript +format:epub` + - Filter languages: `+JavaScript +🇪🇸` + - Order by date: `JavaScript order_by:date` + - Order by rank: `hemoglobin order_by:pr` - Restrict search by 2019 year: `hemoglobin AND year:2019` - Find only starting from 2019 year: `hemoglobin AND year:[2019 TO *] - Search by author: `authors:Jack authors:London` - Exact match: `"Fetal Hemoglobin"` + **Extended syntax** + `+` sign makes words or filtration by field mandatory: + - `+JavaScript lang:en` returns **all** JavaScript books but books in English will be ranked higher + - `+JavaScript +lang:en` returns JavaScript books **only** in English - Also, I can accept new scientific articles from you. Send me PDF and I will process it. + `-` sign removes documents with the word + - `fetal -hemoglobin` returns all articles about fetal whatever but not hemoglobin + Possible fields to use in queries: `abstract`, `author`, `content`, `date`, `extension`, `journal`, `lang`, `page`, `page_rank`, `refc`, `refs`, `tags`, `title`, `year` + + Possible fields for ordering: `date`, `page`, `page_rank`, `refc` + + `date` - issuing unixtime + `lang` - language, use two-letter code for filter results + `refc` - references counter + `refs` - references DOIs + + **Navigation** + I can help to navigate through references and journals. There are multiple links and buttons + on view screen: + + - Tags are clickable. Tap them. Particular versions of Telegram requires to tap appeared button `Start` after the tap on links. + - 📰 button opens articles from the same journal + - 🔗 button opens articles referring the currently opened one + + **Commands** + /aboutus - tell about us /copyright - make a copyright infringement claim - /donate - tells how to support us - /help - shows this help - /roll - get random book + /help - show this help + /howtohelp - learn how to help us + /profile - your profile + /rank - get importance statistics of articles + /roll - get a random book + /seed - learn how to become a seeder /settings - changes language, notification and personalized feed settings + /trends - plot trends graph What are you going to read today? HELP_FOR_GROUPS: | - Hi! I'm **Nexus** bot for groups! - I can search books or science articles by titles, authors or DOIs. + Hi! I'm **Nexus** bot! + I can search books or scientific articles by titles, authors or DOIs. Just type your request in plain words prepending **with /search**. - Example: `/search Divine Comedy Dante` or `/search https://doi.org/10.1159/000477855` + **Examples** + - `/search Divine Comedy Dante` + - `/search https://doi.org/10.1159/000477855` + - Search in the books only: `/search 📚 JavaScript` + - Restrict search by 2019 year: `/search hemoglobin +year:2019` + - Find only starting from 2019 year: `/search hemoglobin +year:[2019 TO *]` + - Search by author: `/search authors:Jack authors:London` + - Exact match: `/search "Fetal Hemoglobin"` + - Filter formats (all except pdf): `/search +JavaScript +format:epub` + - Filter languages: `/search +JavaScript +🇪🇸` + - Order by date: `/search JavaScript order_by:date` + - Order by rank: `/search hemoglobin order_by:pr` - Restrict search by 2019 year: `/search hemoglobin AND year:2019` - Find only starting from 2019 year: `/search hemoglobin AND year:[2019 TO *] - Search by author: `/search authors:Jack authors:London` - Exact match: `/search "Fetal Hemoglobin"` + **Extended syntax** + `+` sign makes words or filtration by field mandatory: + - `+JavaScript lang:en` returns **all** JavaScript books but books in English will be ranked higher + - `+JavaScript +lang:en` returns JavaScript books **only** in English - /donate - tells how to support us - /help - shows this help - /roll - get random book - /settings - changes language + `-` sign removes documents with the word + - `fetal -hemoglobin` returns all articles about fetal whatever but not hemoglobin + + Possible fields to use in queries: `abstract`, `author`, `content`, `date`, `extension`, `journal`, `lang`, `page`, `page_rank`, `refc`, `refs`, `tags`, `title`, `year` + + Possible fields for ordering: `date`, `page`, `page_rank`, `refc` + + **Navigation** + I can help to navigate through references and journals. There are multiple links and buttons + on view screen: + + - Tags are clickable. Tap them. Particular versions of Telegram requires to tap appeared button `Start` after the tap on links. + - 📰 button opens articles from the same journal + - 🔗 button opens articles referring the currently opened one + + **Commands** + /aboutus - tell about us + /help - show this help + /howtohelp - learn how to help us + /profile - show your profile + /rank - get importance statistics of articles + /roll - get a random book + /trends - plot trends graph What are we going to read today? - INVALID_QUERY_ERROR: | - ```Oops, I do not know what to do with this URL:( - Try to send me DOI, MD5 or just the name of what you are looking for!```[‌]({too_difficult_picture_url}) + HOW_TO_HELP: | + What you can do now to make knowledge free? + + **Subscribe**: [Telegram](https://t.me/{related_channel}) - [Twitter](https://twitter.com/the_superpirate) + + **Donate access** + Contact @the_superpirate or [Nexus community](https://t.me/joinchat/SKgGpCnrzMdkMRxJ) if you wish to share institutional access to libraries. We are looking for persons who are able to provide: + + - VPS (low-grade, located in UK/US/Singapore) in Oracle / Digital Ocean / GitHub + - University VPNs credentials without 2FA + - One computer inside your university network for deploying safe v2ray server + + **Become a seeder** + Books and articles should not be stored in a single place. For these purposes, databases are replicated by torrents and [IPFS](https://en.wikipedia.org/wiki/InterPlanetary_File_System). You can easily become a participant and use your drive and network to replicate data. Every piece you seed increases overall reliability and makes knowledge available for more people. + Just click at /seed to learn how to become a seeder + + **Donate money** + Donations will be spent for: + - Development of the Nexus and making as much knowledge searchable as possible for everybody. + - Maintaining servers. Building and serving the index and using machine learning is a heavy computational task requiring a lot of GPUs, CPUs and disks. + + - BTC: `{btc_donate_address}` + - ETH: `{eth_donate_address}` + - SOL: `{sol_donate_address}` + - XMR: `{xmr_donate_address}` + - XRP: `{xrp_donate_address}` **tag/memo:** `{xrp_donate_tag}` + - Amazon Gift Card: [Buy]({amazon_gift_card_url}) any card using `{amazon_gift_card_recipient}` as recipient email INVALID_SYNTAX_ERROR: | ```Oops, something wrong with your query. Probably it is too clever for me. - Tip: use brackets, add more AND/OR or remove them all.```[‌]({too_difficult_picture_url}) + Try to send me DOI, MD5 or just the name of what you are looking for! + Tip: use brackets, add +/- before words or remove them all.```[‌]({too_difficult_picture_url}) JOURNAL: Journal LEGACY: We've updated and old widgets stopped working:( Please, do search again. + LINKS: Links LOOKING_AT: 'looking at {source}...' MAINTENANCE: | ```Oops! Something goes wrong and we are trying hard to revive. Please, try a little bit later.```[‌]({maintenance_picture_url}) MAINTENANCE_WO_PIC: Oops! Please, try a little bit later. NAMELESS: Without name + NEXUS_CONNECTOME_DESCRIPTION: | + **Nexus Connectome** allows other users to see your profile and find you by your interests and last read articles. NEXUS_DISCOVERY_DESCRIPTION: | - **Nexus Discovery** is a recommendation service. It also notifies you about newly arrived publications you were looking for before. Your personal digest will be sent at every Sunday. + **Nexus Discovery** notifies you about newly arrived publications you were looking for before. PROCESSING_PAPER: '`File {filename} is processed...`' PROMO: | **Nexus Search - Update and News** - {related_channel} + @{related_channel} READ_ONLY_MODE: ⚠️ Reduced service until midnight (UTC). /settings is not working, search in slow mode. REFERENCED_BY: Referenced by REPLY_MESSAGE_HAS_BEEN_DELETED: Search message has been (re-)moved. Do search again. REPORT_BROKEN_FILE: ❌ Broken File REPORT_OK_FILE: ✅ File is OK SEARCHING: '`searching...`' + SEED_GENERATION: '`wait, we are generating file...`' + SEED_HELP: | + Seeding is downloading and consequent distributing for others. You can seed the entire collection of books or parts of it. + + It requires basic skills in using terminal tools. + - Install [IPFS-Desktop](https://docs.ipfs.tech/install/ipfs-desktop/) (optionally) and [IPFS CLI](https://docs.ipfs.tech/install/command-line/) (mandatory) + - Install [jq](https://stedolan.github.io/jq/download/) command-line tool + - Learn [how to launch and use IPFS](https://docs.ipfs.tech/how-to/command-line-quick-start) in terminal + + Then, request from the bot what you want to seed. It can be done by the following commands + + **Seed** + Return books ordered by their update date: + ```/seed + ?``` + + For example + ```/seed 0 500 + javascript``` + returns 500 books of JavaScript + ```/seed 500 500 + javascript``` + returns next 500 books + + **Random Seed** + Return random set of books every time + ```/rseed + ?``` + + For example + ```/rseed 1000``` + returns random 1000 books. Had sent it multiple times you'll get different sets of books that could intersects with each other. + + In response to both commands you'll get a file containing `md5`, `ipfs_multihashes` and `doi` for requested books. + + You need to save this file to any directory, i.e. let it be `/home/reader/javascript-0-1000-1000.cid.txt`. Then you can start seeding by the following command in your terminal: + `cat /home/reader/javascript-0-1000-1000.cid.txt | jq -c -r ".ipfs_multihashes[0]" | xargs -I{} ipfs pin add {}` + + Pinning can take a lot of time, be patient! + Now you have stored files on your PC and made them available for thousands of other people. Thank you! + + Also, the bot now allows you to do a reverse-lookup. You can quest him `ipfs_multihashes:` and it returns you file metadata. Useful if you need to find out what exact file you pinned. SEND_YOUR_LOCATION: Send your location (through the left attach button) SETTINGS_TEMPLATE: | **Bot Version:** {bot_version} @@ -143,20 +290,44 @@ en: **Language:** {language} SETUP_AUTOMATICALLY: Setup automatically SETUP_MANUALLY: Setup manually - SOURCES_UNAVAILABLE: '`{document}` is unavailable right now. Please, try later.' - SUBSCRIBE_TO_CHANNEL: Subscribe to {related_channel} to continue using this bot. - SYSTEM_MESSAGING_OPTION: Bot Update Notifications + SOMEONE_UPLOADED_FILE: '⚡️ Someone uploaded `{document}` on your request.' + SOURCES_UNAVAILABLE: '`{document}` is unavailable right now. I will text you if someone will upload this article.' + SUBSCRIBE_TO_CHANNEL: Subscribe to @{related_channel} to continue using this bot. + SYSTEM_MESSAGING_OPTION: Bot News Notifications TAGS: Tags TANKS_BRUH: Tank ya bruuuh! - THANK_YOU_FOR_CONTACT: Thank you! If you have a question, it is better to ask at {related_channel} user conference. TOO_LONG_QUERY_FOR_SHORTLINK: | Your query is too long (limit is about 35-40 characters). - - Try to use NID-encoded query. Find an item you want to share, copy NID from a view page and - then create a shortlink for query `NID: `. TOO_MANY_DOWNLOADS: Too many active downloads. Please, wait them to complete. + TOO_SHORT_QUERY: Too short query, type more... TRANSMITTED_FROM: 'transmitted from {source}' - UNAVAILABLE_METADATA_ERROR: 'Cannot acquire metadata for {doi} from CrossRef API. Ensure it is resolvable before uploading.' + TRENDS_HELP: | + ```/trends to + + + ... + + ``` + **Dates** + Passed in free form, I'm clear enough to understand various options + + **Queries** + Set as in the search. Remember that all queries by default returns documents that contains at least one word from the query. + If you pass `fetal hemoglobin` documents containing only `fetal` or only `hemoglobin` will be accounted too. It might be not what you meant. + Restrict query to `+fetal +hemoglobin`. This query returns only documents which contain both words. + + **Examples** + Physics of fluids vs. molecular biology + ```/trends 2000 to 2020 + +physics +fluids + "molecular biology" + ``` + Communism vs. memes + ```/trends 2017 to 2022-08 + communism + memes + ``` + UNAVAILABLE_METADATA_ERROR: 'Cannot acquire metadata for {doi} from CrossRef API. Ensure it is resolvable before uploading. If you are sure, you can write DOI in the same message together with file.' UNKNOWN_FILE_FORMAT_ERROR: Only PDF files are supported UNPARSABLE_DOCUMENT_ERROR: Cannot parse `{filename}` UNPARSABLE_DOI_ERROR: DOI cannot be found in `{filename}` @@ -165,11 +336,10 @@ en: UPLOADED_TO_TELEGRAM: uploaded to Telegram... VIEWS_CANNOT_BE_SHARED: Do your own search, commands cannot be shared. YEAR: Year + ZIP_FILES_ARE_NOT_SUPPORTED_IN_GROUP_MODE: Zip files are not supported in groups. Upload them directly to the bot es: ABSTRACT: Resumen - ALREADY_DOWNLOADING: | - Encontré este libro en Internet. - Por favor, ten paciencia, te lo enviaré cuando esté listo. + ALREADY_DOWNLOADING: Ya descargando AUTHORS: Autores BANNED: | Has sido baneado hasta la(s) **{datetime} UTC**. @@ -179,14 +349,6 @@ es: Razón: **{reason}** BAN_MESSAGE_TOO_MANY_REQUESTS: Demasiadas peticiones CLOSE: Cerrar - CONTACT: | - **Actualizaciones y noticias**: {related_channel} - **Detalles sobre donaciones**: /donate - - **LiberaPay**: {libera_pay_url} - **Dirección BTC:** `{btc_donate_address}` - - Puedes enviarnos sus comentarios directamente por /contact COPYRIGHT_DESCRIPTION: | Si deseas presentar una queja por infracción de derechos de autor: @@ -202,26 +364,7 @@ es: COULD_NOT_FIND_ANYTHING: No pude encontrar nada :( DESCRIPTION: Descripción DISABLE_DISCOVERY: Si no deseas obtener un feed personalizado, puedes deshabilitar Nexus Discovery en /settings - DISCOVERY_OPTION: Nexus Discovery DISCOVERY_PROMPT: 🦘 **Mira lo que encontré para ti:** 🦘 - DONATE: | - Gracias por visitar /donate. Agradezco incluso tu intención de abrir este mensaje. - - Toda buena enseñanza debe fluir de abundantes fuentes de conocimiento. Las fuentes poco profundas no pueden emitir un resultado fluido y abundante. - Al donarnos a nosotros, estás donando a todas las personas que no tienen acceso al conocimiento humano debido a restricciones de pago o un precio excesivamente alto. - - Todas las donaciones se gastarán en: - - Desarrollo del Nexus Index y hacer que todo el mundo pueda buscar tanto conocimiento como sea posible. - - Mantenimiento de servidores. Crear y entregar el índice y usar el aprendizaje automático es una tarea computacional pesada que requiere una gran cantidad de GPU, CPU y discos. - - Cada centavo se utilizará para el proyecto. - Puedes contactarnos con /contact o suscribirte en {related_channel}, si deseas saber exactamente cómo se gastarán las donaciones. - - **Detalles sobre donaciones** - - **LiberaPay**: {libera_pay_url} - **Dirección BTC**: `{btc_donate_address}` - **Tarjeta de regalo de Amazon**: [Compre]({amazon_gift_card_url}) cualquier tarjeta que use `{amazon_gift_card_recipient}` como correo electrónico del destinatario DOWNLOAD: Descargar DOWNLOADED: descargado DOWNLOADING: descargando... @@ -231,53 +374,10 @@ es: Por favor, intente descargar `{document}` en un minuto. EDITION: Edición FILE: Archivo - HELP: | - ¡Hola! ¡Soy el bot **Nexus**! - Puedo buscar libros o artículos científicos por títulos, autores o DOI. - - **Simplemente escriba su solicitud en palabras sencillas.** - - Ejemplo: `Cien Años de Soledad` o `https://doi.org/10.1023/A:1026654312961` - - Restringir la búsqueda para el año 2019: `hemoglobina AND year:2019` - Encuentre solo a partir del año 2019: `hemoglobina AND year:[2019 TO *] - Búsqueda por autor: `authors:Jack authors:London` - Coincidencia exacta: `"Hemoglobina Fetal"` - - Además, puedo aceptar nuevos artículos científicos suyos. Envíame PDF y lo procesaré. - - /copyright - hacer un reclamo por infracción de derechos de autor - /donate - explica cómo apoyarnos - /help - muestra esta ayuda - /roll - obtener un libro al azar - /settings - cambia la configuración de idioma, notificaciones y feeds personalizados - - ¿Qué vas a leer hoy? - HELP_FOR_GROUPS: | - ¡Hola! ¡Soy el bot **Nexus** para grupos! - Puedo buscar libros o artículos científicos por títulos, autores o DOI. - - Simplemente escribe tu solicitud en palabras sencillas precedido de **/search**. - - Ejemplo: `Cien Años de Soledad` o `https://doi.org/10.1023/A:1026654312961` - - Restringir la búsqueda para el año 2019: `hemoglobina AND year:2019` - Encuentre solo a partir del año 2019: `hemoglobina AND year:[2019 TO *] - Búsqueda por autor: `authors:Jack authors:London` - Coincidencia exacta: `"Hemoglobina Fetal"` - - /donate - explica cómo apoyarnos - /help - muestra esta ayuda - /roll - obtener un libro al azar - /settings - cambia la configuración de idioma, notificaciones y feeds personalizados - - ¿Qué vas a leer hoy? - INVALID_QUERY_ERROR: | - ```Oops, No sé qué hacer con esta URL :( - ¡Intenta enviarme DOI, MD5 o simplemente el nombre de lo que estás buscando!```[‌]({too_difficult_picture_url}) INVALID_SYNTAX_ERROR: | ```Oops, algo anda mal con tu consulta. Probablemente sea demasiado inteligente para mí. - Tip: usa corchetes, agrega más AND/OR o quítalos todos.```[‌]({too_difficult_picture_url}) + ¡Intenta enviarme DOI, MD5 o simplemente el nombre de lo que estás buscando! + Tip: usa corchetes, agrega más +/- o quítalos todos.```[‌]({too_difficult_picture_url}) JOURNAL: Revista LEGACY: Hemos actualizado y los widgets antiguos dejaron de funcionar :( Por favor, vuelva a buscar. LOOKING_AT: 'buscando en {source}...' @@ -286,11 +386,13 @@ es: Por favor, inténtalo más tarde.```[‌]({maintenance_picture_url}) MAINTENANCE_WO_PIC: ¡Oops! Por favor, intenta más tarde. NAMELESS: Sin nombre + NEXUS_CONNECTOME_DESCRIPTION: | + **Nexus Connectome** permite que otros usuarios vean tu perfil y te encuentren por tus intereses y últimos artículos leídos. NEXUS_DISCOVERY_DESCRIPTION: | - **Nexus Discovery** es un servicio de recomendaciones. También te notifica sobre publicaciones recién llegadas que estabas buscando antes. Tu resumen personal se enviará todos los domingos. + **Nexus Discovery** también te notifica sobre publicaciones recién llegadas que estabas buscando antes. PROMO: | **Nexus Search - Actualizaciones y Noticias** - {related_channel} + @{related_channel} READ_ONLY_MODE: ⚠️ Servicio reducido hasta la medianoche (UTC). /settings no funciona, busque en modo lento. REFERENCED_BY: Referenciado por REPLY_MESSAGE_HAS_BEEN_DELETED: El mensaje de búsqueda ha sido (re)movido. Vuelve a buscar. @@ -303,16 +405,12 @@ es: SETUP_AUTOMATICALLY: Configurar automáticamente SETUP_MANUALLY: Configurar manualmente SOURCES_UNAVAILABLE: '`{document}` no está disponible en este momento. Por favor intenta más tarde.' - SUBSCRIBE_TO_CHANNEL: Suscríbete a {related_channel} para seguir usando este bot. + SUBSCRIBE_TO_CHANNEL: Suscríbete a @{related_channel} para seguir usando este bot. SYSTEM_MESSAGING_OPTION: Notificaciones de actualización de bot TAGS: Tags TANKS_BRUH: Tank ya bruuuh! - THANK_YOU_FOR_CONTACT: ¡Gracias! Si tienes alguna pregunta, es mejor que la hagas en el grupo de usuarios de {related_channel}. TOO_LONG_QUERY_FOR_SHORTLINK: | Su consulta es demasiado larga (el límite es de 35 a 40 caracteres). - - Intente utilizar una consulta codificada con NID. Busque un elemento que desee compartir, copie el NID de una página de visualización y - luego cree un enlace corto para la consulta `NID: `. TOO_MANY_DOWNLOADS: Demasiadas descargas activas. Por favor, espera a que finalicen. TRANSMITTED_FROM: 'transmitido desde {source}' UPGRADE_MAINTENANCE: | @@ -322,9 +420,7 @@ es: YEAR: Año it: ABSTRACT: Sintesi - ALREADY_DOWNLOADING: | - Ho trovato questo libro su Internet. - Sii paziente, lo invierò non appena sarà pronto. + ALREADY_DOWNLOADING: Sto già scaricando AUTHORS: Autori BANNED: | Sei bannato fino a **{datetime} UTC**. @@ -334,14 +430,6 @@ it: Motivo: **{reason}** BAN_MESSAGE_TOO_MANY_REQUESTS: Troppe richieste CLOSE: Chiudi - CONTACT: | - **Aggiornamenti e novità**: {related_channel} - **Info per donazioni**: /donate - - **LiberaPay**: {libera_pay_url} - **Indirizzo BTC:** `{btc_donate_address}` - - Puoi inviarci un feedback direttamente con /contact COPYRIGHT_DESCRIPTION: | Se vuoi fare un reclamo per violazione di copyright: @@ -357,26 +445,7 @@ it: COULD_NOT_FIND_ANYTHING: Non ho trovato niente :( DESCRIPTION: Descrizione DISABLE_DISCOVERY: Se non vuoi ricevere un feed personalizzato, puoi disabilitare Nexus Discovery in /settings - DISCOVERY_OPTION: Nexus Discovery DISCOVERY_PROMPT: 🦘 **Guarda cosa ho trovato per te:** 🦘 - DONATE: | - Grazie per aver visitato /donate. Mi fa piacere anche solo la tua intenzione di aprire questo messaggio. - - Il buon insegnamento deve provenire da numerosi fonti di conoscenza. Una sorgente poco profonda non può generare un flusso vigoroso. - Donando a noi, stai donando a tutte le persone che non hanno accesso alla conoscenza umana a causa di restrizioni per accesso a pagamento o costi troppo alti. - - Tutte le donazioni verranno spese per: - - Sviluppare l'Indice Nexus e rendere ricercabile quanta più conoscenza possibile, per tutti. - - Mantenere i server. Costruire ed esporre l'indice e sfruttare il machine learning sono compiti molto costosi computazionalmente, che richiedono molta GPU, CPU e memoria. - - Ogni centesimo verrà speso per il progetto. - Puoi contattarci (/contact) o iscriverti a {related_channel}, se vuoi sapere esattamente come le donazioni verranno spese. - - **Dettagli per le donazioni** - - **LiberaPay**: {libera_pay_url} - **Indirizzo BTC**: `{btc_donate_address}` - **Buono regalo Amazon**: [Acquista]({amazon_gift_card_url}) qualsiasi carta utilizzando `{amazon_gift_card_recipient}` come indirizzo email del destinatario DOWNLOAD: Scarica DOWNLOADED: scaricato DOWNLOADING: scaricamento in corso... @@ -386,34 +455,10 @@ it: Per favore, prova a scaricare `{document}` tra un minuto. EDITION: Edizione FILE: File - HELP: | - Ciao! Sono il bot **Nexus**! - Posso cercare libri o articoli scientifici per titolo, autore o DOI. - - **Scrivi qui la tua richiesta a parole.** - - Esempio: `Divina Commedia Dante` oppure `https://doi.org/10.1159/000477855` - - Restringi la ricerca all'anno 2019: `emoglobina AND year:2019` - Find only starting from 2019 year: `emoglobina AND year:[2019 TO *] - Ricerca per autore: `authors:Jack authors:London` - Risultato esatto: `"Emoglobina fetale"` - - Inoltre, posso accettare nuovi articoli scientifici da te. Inviami PDF e lo elaborerò. - - /copyright - segnala una violazione di copyright - /donate - info su come sostenerci - /help - mostra questo aiuto - /roll - ottieni un libro a caso - /settings - modifica la lingua, le impostazioni delle notifiche e il feed personalizzato. - - Cosa vuoi leggere oggi? - INVALID_QUERY_ERROR: | - ```Oops, non so cosa fare con questo URL:( - Prova a mandarmi il DOI, MD5 o semplicemente il nome di quello che cerchi!```[‌]({too_difficult_picture_url}) INVALID_SYNTAX_ERROR: | ```Oops, c'è qualcosa di sbagliato nella tua richiesta. Probabilmente è troppo avanzata per me. - Suggerimento: usa le parentesi, aggiungi più AND/OR o toglili.```[‌]({too_difficult_picture_url}) + Prova a mandarmi il DOI, MD5 o semplicemente il nome di quello che cerchi! + Suggerimento: usa le parentesi, aggiungi più +/- o toglili.```[‌]({too_difficult_picture_url}) JOURNAL: Rivista LEGACY: Abbiamo fatto un aggiornamento e i vecchi widget hanno smesso di funzionare :( Per favore, ripeti la ricerca. LOOKING_AT: 'cercando {source}...' @@ -422,11 +467,13 @@ it: Per favore, prova un po' più tardi.```[‌]({maintenance_picture_url}) MAINTENANCE_WO_PIC: Oops! Per favore, prova un po' più tardi. NAMELESS: Senza nome + NEXUS_CONNECTOME_DESCRIPTION: | + **Nexus Connectome** consente ad altri utenti di vedere il tuo profilo e trovarti in base ai tuoi interessi e agli ultimi articoli letti. NEXUS_DISCOVERY_DESCRIPTION: | - **Nexus Discovery** è un servizio di raccomandazione. Ti segnala anche le pubblicazioni appena arrivate che hai provato a cercare precedentemente. Il tuo digest personalizzato viene inviato ogni Domenica. + **Nexus Discovery** è un servizio di raccomandazione. Ti segnala anche le pubblicazioni appena arrivate che hai provato a cercare precedentemente. PROMO: | **Nexus Search - Aggiornamenti e novità** - {related_channel} + @{related_channel} READ_ONLY_MODE: ⚠️ Il servizio è limitato fino a mezzanotte (UTC). /settings non è disponibile, la ricerca è più lenta. REFERENCED_BY: Riferito da REPLY_MESSAGE_HAS_BEEN_DELETED: Il messaggio di ricerca è stato (ri-)mosso. Ripeti la ricerca. @@ -439,16 +486,12 @@ it: SETUP_AUTOMATICALLY: Configura automaticamente SETUP_MANUALLY: Configura manualmente SOURCES_UNAVAILABLE: '`{document}` non è disponibile adesso. Per favore, prova più tardi.' - SUBSCRIBE_TO_CHANNEL: Iscriviti a {related_channel} per continuare ad usare questo bot. + SUBSCRIBE_TO_CHANNEL: Iscriviti a @{related_channel} per continuare ad usare questo bot. SYSTEM_MESSAGING_OPTION: Notifiche Aggiornamento Bot TAGS: Tag TANKS_BRUH: Grazie bro! - THANK_YOU_FOR_CONTACT: Grazie! Se hai una domanda, ti conviene chiedere agli utenti in {related_channel}. TOO_LONG_QUERY_FOR_SHORTLINK: | La tua richiesta è troppo lunga (il limite è circa 35-40 caratteri). - - Prova a fare una richiesta codificata NID. Trova l'elemento che vuoi condividere, copia il NID da una pagina - di visualizzazione e genera un link breve per la richiesta `NID: `. TOO_MANY_DOWNLOADS: Troppi download in corso. Per favore, attendi il completamento. TRANSMITTED_FROM: 'inviato da {source}' UPGRADE_MAINTENANCE: | @@ -458,9 +501,7 @@ it: YEAR: Anno pb: ABSTRACT: Resumo - ALREADY_DOWNLOADING: | - Eu encontrei esse livro na Internet. - Por favor, seja paciente, eu enviarei assim que estiver pronto. + ALREADY_DOWNLOADING: Já baixando AUTHORS: Autores BANNED: | Você está banido até **{datetime} UTC**. @@ -470,14 +511,6 @@ pb: Motivo: **{reason}** BAN_MESSAGE_TOO_MANY_REQUESTS: Muitas solicitações CLOSE: Fechar - CONTACT: | - **Atualizações e notícias**: {related_channel} - **Detalhes para doação**: /donate - - **LiberaPay**: {libera_pay_url} - **Endereço BTC:** `{btc_donate_address}` - - Você pode nos enviar feedback diretamente por /contact COPYRIGHT_DESCRIPTION: | Se você deseja fazer uma reclamação de violação de direitos autorais: @@ -493,26 +526,7 @@ pb: COULD_NOT_FIND_ANYTHING: Não foi possível encontrar nada :( DESCRIPTION: Descrição DISABLE_DISCOVERY: Se você não deseja obter um feed personalizado, pode desativar o Nexus Discovery em /settings - DISCOVERY_OPTION: Nexus Discovery DISCOVERY_PROMPT: 🦘 **Veja o que encontrei para você:** 🦘 - DONATE: | - Obrigado por visitar /donate. Agradeço até mesmo sua intenção de apenas abrir esta mensagem. - - Todo bom ensino deve fluir de fontes abundantes de conhecimento. A fonte rasa não pode emitir um fluxo vigoroso. - Doando para nós, você está doando para todas as pessoas que não têm acesso ao conhecimento humano devido a restrições de acesso pago ou a um preço excessivamente alto. - - Todas as doações serão gastas em: - - Desenvolvimento do Nexus Index e tornando o máximo de conhecimento pesquisável possível para todos. - - Manutenção de servidores. Criar e disponibilizar o índice e usar o aprendizado de máquina é uma tarefa computacional pesada que requer muitas GPUs, CPUs e discos. - - Cada centavo será usado para o projeto. - Você pode entrar em contato conosco em /contact ou se inscrever em {related_channel} se quiser saber exatamente como as doações serão gastas. - - **Detalhes de doação** - - **LiberaPay**: {libera_pay_url} - **Endereço BTC**: `{btc_donate_address}` - **Amazon Gift Card**: [Compre]({amazon_gift_card_url}) qualquer cartão usando `{amazon_gift_card_recipient}` como e-mail do destinatário DOWNLOAD: Baixar DOWNLOADED: Baixado DOWNLOADING: baixando... @@ -522,53 +536,10 @@ pb: Por favor, tente baixar o `{document}` em um minuto. EDITION: Edição FILE: Arquivo - HELP: | - Olá! Eu sou o bot **Nexus**! - Eu posso procurar livros ou artigos científicos por títulos, autores ou DOIs. - - **Basta digitar seu pedido em palavras simples.** - - Exemplo: `Divina Comédia Dante` ou `https://doi.org/10.1159/000477855` - - Restringir a busca pelo ano 2019: `hemoglobina AND year:2019` - Encontre apenas a partir do ano 2019: `hemoglobina AND year:[2019 TO *] - Buscar pelo autor: `authors:Jack authors:London` - Combinação exata: `"Hemoglobina fetal"` - - Além disso, posso aceitar novos artigos científicos seus. Envie-me o PDF e irei processá-lo. - - /copyright - fazer uma reivindicação de violação de direitos autorais - /donate - diz como nos apoiar - /help - mostra esta ajuda - /roll - obtenha um livro aleatório - /settings - altera as configurações de idioma, notificação e feed personalizado - - O que você vai ler hoje? - HELP_FOR_GROUPS: | - Oi! Sou o bot **Nexus** para grupos! - Eu posso procurar livros ou artigos científicos por títulos, autores ou DOIs. - - Basta digitar sua solicitação em palavras simples começando **com /search**. - - Exemplo: `/search Divina Comédia Dante` ou `https://doi.org/10.1159/000477855` - - Restringir a busca pelo ano 2019: `/search hemoglobina AND year:2019` - Encontre apenas a partir do ano 2019: `/search hemoglobina AND year:[2019 TO *] - Buscar pelo autor: `/search authors:Jack authors:London` - Combinação exata: `/search "Hemoglobina fetal"` - - /donate - diz como nos apoiar - /help - mostra esta ajuda - /roll - obtenha um livro aleatório - /settings - altera as configurações de idioma, notificação e feed personalizado - - O que você vai ler hoje? - INVALID_QUERY_ERROR: | - ```Eita, Não sei o que fazer com esta URL :( - Tente me enviar DOI, MD5 ou apenas o nome do que você procura!```[‌]({too_difficult_picture_url}) INVALID_SYNTAX_ERROR: | ```Eita, algo errado com sua consulta. Provavelmente é muito inteligente para mim. - Dica: use colchetes, adicione mais AND/OR ou remova todos eles.```[‌]({too_difficult_picture_url}) + Tente me enviar DOI, MD5 ou apenas o nome do que você procura! + Dica: use colchetes, adicione mais +/- ou remova todos eles.```[‌]({too_difficult_picture_url}) JOURNAL: Revista LEGACY: Atualizamos e os widgets antigos pararam de funcionar :( Por favor, pesquise novamente. LOOKING_AT: 'Buscando em {source}...' @@ -577,11 +548,13 @@ pb: Por favor, tente um pouco mais tarde.```[‌]({maintenance_picture_url}) MAINTENANCE_WO_PIC: Eita! Por favor, tente um pouco mais tarde. NAMELESS: Sem nome + NEXUS_CONNECTOME_DESCRIPTION: | + O **Nexus Connectome** permite que outros usuários vejam seu perfil e encontrem você de acordo com seus interesses e artigos lidos pela última vez. NEXUS_DISCOVERY_DESCRIPTION: | - **Nexus Discovery** é um serviço de recomendação. Também o notifica sobre publicações recém-chegadas que você estava procurando. Seu resumo pessoal será enviado todos os domingos. + **Nexus Discovery** é um serviço de recomendação. Também o notifica sobre publicações recém-chegadas que você estava procurando. PROMO: | **Nexus Search - Atualizações e Notícias** - {related_channel} + @{related_channel} READ_ONLY_MODE: ⚠️ Serviço reduzido até meia-noite (UTC). /settings não está funcionando, pesquisa está no modo lento. REFERENCED_BY: Referenciado por REPLY_MESSAGE_HAS_BEEN_DELETED: A mensagem de pesquisa foi (re)movida. Pesquise novamente. @@ -594,15 +567,12 @@ pb: SETUP_AUTOMATICALLY: Configurar automaticamente SETUP_MANUALLY: Configurar manualmente SOURCES_UNAVAILABLE: '`{document}` está indisponível nesse momento. Por favor, tente mais tarde.' - SUBSCRIBE_TO_CHANNEL: Inscreva-se em {related_channel} para continuar usando este bot. + SUBSCRIBE_TO_CHANNEL: Inscreva-se em @{related_channel} para continuar usando este bot. SYSTEM_MESSAGING_OPTION: Notificações de Atualização do Bot TAGS: Marcadores TANKS_BRUH: Valeuzaum manooo! - THANK_YOU_FOR_CONTACT: Obrigado! Se você tiver alguma dúvida, é melhor perguntar no grupo de usuários {related_channel}. TOO_LONG_QUERY_FOR_SHORTLINK: | Sua consulta é muito longa (o limite é de cerca de 35-40 caracteres). - - Tente usar uma consulta codificada por NID. Encontre um item que deseja compartilhar, copie o NID de uma página de visualização e crie um link curto para a consulta `NID: `. TOO_MANY_DOWNLOADS: Muitos downloads ativos. Por favor, espere que eles terminem. TRANSMITTED_FROM: 'transmitido de {source}' UPGRADE_MAINTENANCE: | @@ -612,9 +582,7 @@ pb: YEAR: Ano ru: ABSTRACT: Аннотация - ALREADY_DOWNLOADING: | - Книга уже поставлена ​​на скачивание. - Я отправлю ее вам как только она будет готова. + ALREADY_DOWNLOADING: Уже качаем! AUTHORS: Авторы BANNED: | Вы заблокированы до **{datetime} UTC**. @@ -624,38 +592,10 @@ ru: Причина: **{reason}** BAN_MESSAGE_TOO_MANY_REQUESTS: Слишком частые запросы CLOSE: Закрыть - CONTACT: | - Новости и обновления: {related_channel} - **Реквизиты для пожертвования**: /donate - - **LiberaPay**: {libera_pay_url} - **BTC Address:** `{btc_donate_address}` - - Можете также оставить нам сообщение: /contact <ваше сообщение> COULD_NOT_FIND_ANYTHING: Ничего не найдено:( DESCRIPTION: Описание DISABLE_DISCOVERY: Если вы не хотите получать персонализированые рекомендации, то вы можете выключить Nexus Discovery в /settings - DISCOVERY_OPTION: Nexus Discovery DISCOVERY_PROMPT: 🦘 **Посмотрите-ка что я нашел для вас:** 🦘 - DONATE: | - Спасибо, что зашли на /donate. Мне приятно, даже если вы просто прочитаете это сообщение. - - Знания должны быть свободными и доступными для всех. Любые ограничения ведут ко сну разума и рождению чудовищ. - Помогая нам, вы помогаете всем тем людям, кто не имеет доступа к знаниям человечества из-за ограничений пейволов и непомерно высокой цены. - - Все пожертвования будут направлены на: - - - Разработку открытой для каждого системы поиска и доступа к книгам и научным статьям. - - Покупку оборудования. Построение индекса для поиска и запуск ML-процедур требует ресурсов процессора, а хранение статей и книг - дисков. - - Каждый потраченый вами доллар пойдет на развитие проекта. - Вы можете связаться с нами через /contact или подписаться на {related_channel}, если хотите понимать на что именно пойдут деньги. - - **Реквизиты для пожертвования** - - **LiberaPay**: {libera_pay_url} - **BTC Address**: `{btc_donate_address}` - **Amazon Gift Card**: [Купите]({amazon_gift_card_url}) любую карту с `{amazon_gift_card_recipient}` в качестве получателя DOWNLOAD: Загрузить DOWNLOADED: загружено DOWNLOADING: загружаем... @@ -666,64 +606,107 @@ ru: FILE: Файл HELP: | Привет! Я бот **Nexus**! - Я могу искать книги и научные статьи по их названиям, авторам или DOI. + Я могу искать книги и публикации по тексту, авторам или DOI. - **Просто наберите запрос как в поисковике.** + Просто напишите мне что вы хотите найти. - Например: `Божественная комедия Данте` или `https://doi.org/10.1159/000477855` + **Примеры** + - `Божественная комедия Данте` + - `https://doi.org/10.1159/000477855` + - Искать только книги: `📚 JavaScript` + - Искать только среди 2019 года: `hemoglobin +year:2019` + - Искать только среди 2019 года или позже: `hemoglobin +year:[2019 TO *]` + - Искать по автору: `authors:Jack authors:London` + - Точное совпадение: `"Fetal Hemoglobin"` + - Отфильтровать по формату (кроме pdf): `+JavaScript +format:epub` + - Отфильтровать по языку: `+JavaScript +🇪🇸` + - Упорядочить по дате: `JavaScript order_by:date` + - Упорядочить по рейтингу: `hemoglobin order_by:pr` - Ограничить поиск 2019 годом: `гемоглобин AND year:2019` - Поиск начиная с 2019 года `гемоглобин AND year:[2019 TO *]` - Поиск по автору: `authors:Jack authors:London` - Точное совпадение: `"Fetal Hemoglobin"` + **Экспертный синтаксис** + `+` помечаются слова или фильтры, которые обязаны быть в результатах: + - `+JavaScript lang:ru` найдет **все** JavaScript книги, но книги на русском будут выше в поиске + - `+JavaScript +lang:ru` найдет JavaScript книги **только** на русском - Также я могу принимать от вас новые научные статьи. Отправьте мне PDF-файл, и я его обработаю. + `-` помечаются слова, которых не должно быть в результатах + - `fetal -hemoglobin` вернет все статьи со словом fetal, но без hemoglobin + Поля для поиска: `abstract`, `author`, `content`, `date`, `extension`, `journal`, `lang`, `page`, `page_rank`, `refc`, `refs`, `tags`, `title`, `year` + + Поля для сортировки: `date`, `page`, `page_rank`, `refc` + + `date` - время выпуска статьи (unixtime) + `lang` - язык, используйте двухбуквенный код языка + `refc` - счетчик ссылок + `refs` - ссылки на статью + + **Навигация** + На экране просмотра статьи есть несколько кнопок для дальнейшей навигации + + - Все ссылки кликабельны. В некоторых версиях Telegram после клика на ссылку нужно нажать появишуюся кнопку Start. + - 📰 открыть статьи из того же журнала + - 🔗 открыть статьи, ссылающиеся на открытую + + **Commands** + /aboutus - про нас /copyright - пожаловаться на нарушение авторских прав - /donate - страница поддержки - /help - помочь разобраться с ботом - /roll - случайная книга - /settings - изменить настройки бота + /help - показать эту страничку + /howtohelp - как помочь нам? + /profile - ваш профиль + /rank - показать подробную статистику по запросу + /roll <запрос> - случайная книга по <запросу> + /seed - как раздавать публикации другим? + /settings - настройки бота + /trends - нарисовать график трендов в науке - Что хотим почитать сегодня? - HELP_FOR_GROUPS: | - Привет! Я бот **Nexus** для групп! - Я могу искать книги и научные статьи по их названиям, авторам или DOI. + Что будем читать сегодня? + HOW_TO_HELP: | + Как вы можете помочь нам? - **Просто наберите запрос как в поисковике с добавлением /search в начало.** + **Подпишитесь**: [Telegram](https://t.me/{related_channel}) - [Twitter](https://twitter.com/the_superpirate) - Например: `/search Божественная комедия Данте` или `/search https://doi.org/10.1159/000477855` + **Поделитесь доступом к статьям** + Напишите @the_superpirate или в [Nexus community](https://t.me/joinchat/SKgGpCnrzMdkMRxJ) если у вас есть возможность и вы хотите поделиться вашим доступом к научным статьям. Нам нужны: - Ограничить поиск 2019 годом: `/search гемоглобин AND year:2019` - Поиск начиная с 2019 года `/search гемоглобин AND year:[2019 TO *]` - Поиск по автору: `/search authors:Jack authors:London` - Точное совпадение: `/search "Fetal Hemoglobin"` + - VPS (небольшие, размещенные в UK/US/Singapore) в Oracle / Digital Ocean / GitHub + - Университетские VPNs профили без 2FA + - Компьютеры внутри вашей университетской сети, к которым вы имеете доступ для размещения v2ray сервера - /donate - страница поддержки - /help - помочь разобраться с ботом - /roll - случайная книга - /settings - изменить настройки бота + **Станьте сидером** + Книги и статьи необходимо хранить распределенно и тогда не будет возможности уничтожить хранилище. Такие технологии как торренты и [IPFS](https://en.wikipedia.org/wiki/InterPlanetary_File_System) позволяют сохранить к себе часть базы данных статей и книг, а затем раздавать их нуждающимся. Все происходит в автоматическом режиме, от вас требуется лишь место на жестком диске и соединение с интернетом. + Кликните на /seed, чтобы узнать как стать сидером. - Что хотим почитать сегодня? - INVALID_QUERY_ERROR: | - ```Ух, я еще не научился работать с URLами:( - Пришли мне DOI, MD5 или просто название того документа, который ты хотел найти!```[‌]({too_difficult_picture_url}) + **Пожертвуйте криптовалюту** + Пожертвования будут потрачены + - Разработку поискового индекса и работу сообщества. Все это вы можете увидеть в боте. + - Поддержку серверов + + - BTC: `{btc_donate_address}` + - ETH: `{eth_donate_address}` + - SOL: `{sol_donate_address}` + - XMR: `{xmr_donate_address}` + - XRP: `{xrp_donate_address}` **tag/memo:** `{xrp_donate_tag}` + - Amazon Gift Card: [Купите]({amazon_gift_card_url}) любую карту используя `{amazon_gift_card_recipient}` как адрес получателя INVALID_SYNTAX_ERROR: | ```Ух, сложноватый запрос для меня, кто-то где-то перемудрил:) - Попробуйте поставить скобки или убрать/добавить больше AND/OR.```[‌]({too_difficult_picture_url}) + Пришли мне DOI, MD5 или просто название того документа, который ты хотел найти! + Попробуйте поставить скобки или убрать/добавить больше +/-.```[‌]({too_difficult_picture_url}) JOURNAL: Журнал LEGACY: Мы обновились, старые виджеты теперь не работают:( Пожалуйста, выполните поиск заново. + LOOKING_AT: 'ищем в {source}...' MAINTENANCE: | ```Упс! Что-то сломалось, но мы уже в курсе и чиним. Загляните к нам чуть позже.```[‌]({maintenance_picture_url}) MAINTENANCE_WO_PIC: Упс! Загляните к нам чуть позже. NAMELESS: Без названия + NEXUS_CONNECTOME_DESCRIPTION: | + **Nexus Connectome** позволяет другим пользователям просматривать ваш профиль и находить вас по вашим интересам и последним прочитанным статьям. NEXUS_DISCOVERY_DESCRIPTION: | - **Nexus Discovery** - сервис рекомендаций и уведомлений о новых статьях, которые вы искали ранее. Дайджест будет присылаться каждое воскресение. + **Nexus Discovery** - сервис рекомендаций и уведомлений о новых статьях, которые вы искали ранее. PROMO: | **Nexus Search - Новости и обновления** - {related_channel} + @{related_channel} REFERENCED_BY: Ссылки REPLY_MESSAGE_HAS_BEEN_DELETED: Сообщение с запросом было удалено/перемещено, выполните поиск заново. SEARCHING: '`ищем...`' @@ -734,29 +717,24 @@ ru: **Язык:** {language} SETUP_AUTOMATICALLY: Установить автоматически SETUP_MANUALLY: Установить вручную - SOURCES_UNAVAILABLE: 'Прямо сейчас `{document}` недоступен. Попробуйте скачать его позже.' - SUBSCRIBE_TO_CHANNEL: Подпишитесь на {related_channel}, чтобы использовать этот бот. + SOMEONE_UPLOADED_FILE: '⚡️ Кто-то загрузил `{document}` для вас. Попробуйте поискать сейчас.' + SOURCES_UNAVAILABLE: 'Прямо сейчас `{document}` недоступен. Если кто-то загрузит статью для вас в бота, я напишу вам об этом.' + SUBSCRIBE_TO_CHANNEL: Подпишитесь на @{related_channel}, чтобы использовать этот бот. SYSTEM_MESSAGING_OPTION: Сообщения об обновлениях TAGS: Теги TANKS_BRUH: И тебе того же, братишка! - THANK_YOU_FOR_CONTACT: Спасибо! Если у вас вопрос, то его лучше задать в конференции пользователей {related_channel} TOO_LONG_QUERY_FOR_SHORTLINK: | Слишком длинный запрос для shortlink (допускается 35-40 символов запроса). - - Попробуйте использовать NID для создания запроса. - Откройте страницу книги или статьи, которыми вы хотите поделиться, скопируйте оттуда NID - и создайте запрос вида `NID: `. Для этого же запроса вы можете создать shortlink. TOO_MANY_DOWNLOADS: Слишком много активных загрузок. Пожалуйста, дождитесь их завершения. + TRANSMITTED_FROM: 'передано из {source}' UPGRADE_MAINTENANCE: | ```Идет большое обновление, загляните к нам на огонек завтра```[‌]({upgrade_maintenance_picture_url}) UPLOADED_TO_TELEGRAM: загружено в Телеграм... VIEWS_CANNOT_BE_SHARED: Выполните поиск сами, команду нельзя передавать другому пользователю. YEAR: Год -ua: +uk: ABSTRACT: Анотація - ALREADY_DOWNLOADING: | - Книга вже поставлена ​​на завантаження. - Я надішлю її вам як тільки вона буде готова. + ALREADY_DOWNLOADING: Вже завантажується AUTHORS: Автори BANNED: | Ви заблоковані до **{datetime} UTC**. @@ -766,38 +744,10 @@ ua: Причина: **{reason}** BAN_MESSAGE_TOO_MANY_REQUESTS: Занадто часті запити CLOSE: Закрити - CONTACT: | - Новини та оновлення: {related_channel} - **Реквізити для пожертвування**: /donate - - **LiberaPay**: {libera_pay_url} - **BTC Address:** `{btc_donate_address}` - - Можете також залишити нам повідомлення: /contact <ваше повідомлення> COULD_NOT_FIND_ANYTHING: Нічого не знайдено:( DESCRIPTION: Опис DISABLE_DISCOVERY: Якщо ви не бажаєте отримувати персональні рекомендації, то ви можете вимкнути Nexus Discovery в /settings - DISCOVERY_OPTION: Nexus Discovery DISCOVERY_PROMPT: 🦘 **Подивіться, що я знайшов для вас:** 🦘 - DONATE: | - Щиро дякую, що зайшли на /donate. Мені приємно, навіть якщо ви просто прочитаєте це повідомлення. - - Знання мають бути безперешкодними та доступними для всіх. Будь-які обмеження ведуть до сну розуму та народження чудовиськ. - Допомагаючи нам, ви допомагаєте всьому тому народові, хто не має доступу до знань людства через обмеження пейволів та непомірно високу ціну. - - Усі пожертвування будуть направлені на: - - - Розробку системи пошуку та доступу до книг та наукових статей, яка відкрита для кожного. - - Придбання обладнання. Побудова індексу для пошуку та запуску ML-процедур потребують багато ресурсів процесора, а зберігання статей та книг - дисків. - - Кожен витрачений вами долар піде на розвиток цього проекту. - Ви можете зв'язатися з нами через /contact або підписатися на {related_channel}, якщо хочете бачити на що саме підуть гроші. - - **Реквізити для пожертвування** - - **LiberaPay**: {libera_pay_url} - **BTC Address**: `{btc_donate_address}` - **Amazon Gift Card**: [Придбайте]({amazon_gift_card_url}) будь-яку карту з `{amazon_gift_card_recipient}` як одержувач DOWNLOAD: завантажити DOWNLOADED: завантажено DOWNLOADING: завантажуємо... @@ -806,52 +756,9 @@ ua: Будь ласка, повторіть спробу завантаження `{document}` через 1 хвилину. EDITION: Редакція FILE: Файл - HELP: | - Вітаю! Я бот **Nexus**! - Я можу шукати книги та наукові статті за їхньою назвою, авторам або DOI. - - **Просто наберіть запит як у пошуковій системі.** - - Наприклад: `Божественна комедія Данте` або `https://doi.org/10.1159/000477855` - - Обмежити пошук 2019 роком: `гемоглобін AND year:2019` - Пошук починаючи з 2019 року `гемоглобін AND year:[2019 TO *]` - Пошук за автором: `authors:Jack authors:London` - Точне співпадіння: `"Fetal Hemoglobin"` - - Також я можу приймати нові наукові статті. Відправте мені PDF-файл, і я його оброблю. - - /copyright - поскаржитися на порушення авторських прав - /donate - підтримати проект - /help - допомогти розібратися з ботом - /roll - випадкова книга - /settings - змінити налаштування бота - - Що бажаємо почитати сьогодні? - HELP_FOR_GROUPS: | - Вітаю! Я бот **Nexus** для груп! - Я можу шукати книги та наукові статті за їхньою назвою, авторам або DOI. - - **Просто наберіть запит як у пошуковій системі з додаванням /search на початку.** - - Наприклад: `/search Божественна комедія Данте` або `/search https://doi.org/10.1159/000477855` - - Обмежити пошук 2019 роком: `/search гемоглобин AND year:2019` - Пошук починаючи з 2019 року `/search гемоглобин AND year:[2019 TO *]` - Пошук за автором: `/search authors:Jack authors:London` - Точне співпадіння: `/search "Fetal Hemoglobin"` - - /donate - підтримати проект - /help - допомогти розібратися з ботом - /roll - випадкова книга - /settings - змінити налаштування бота - - Що бажаємо почитати сьогодні? - INVALID_QUERY_ERROR: | - ```Ух, я ще не навчився працювати з URLами:( - Надішліть мені DOI, MD5 або просто назву того документа, який ви хотіли знайти!```[‌]({too_difficult_picture_url}) INVALID_SYNTAX_ERROR: | ```Ух, важкуватий запит для мене, хтось десь перемудрив:) + Надішліть мені DOI, MD5 або просто назву того документа, який ви хотіли знайти! Спробуйте поставити дужки або прибрати/додати більше AND/OR.```[‌]({too_difficult_picture_url}) JOURNAL: Журнал LEGACY: Ми оновилися, старі віджети тепер не працюють:( Будь ласка, виконайте @@ -861,11 +768,13 @@ ua: Загляньте до нас трохи згодом.```[‌]({maintenance_picture_url}) MAINTENANCE_WO_PIC: Упс! Загляньте до нас трохи згодом. NAMELESS: Без назви + NEXUS_CONNECTOME_DESCRIPTION: | + **Nexus Connectome** дозволяє іншим користувачам бачити ваш профіль і знаходити вас за інтересами та останніми прочитаними статтями. NEXUS_DISCOVERY_DESCRIPTION: | - **Nexus Discovery** - сервіс рекомендацій та повідомлень про нові статті, які ви шукали раніше. Дайджест надсилатиметься щонеділі. + **Nexus Discovery** - сервіс рекомендацій та повідомлень про нові статті, які ви шукали раніше. PROMO: | **Nexus Search - Новини та оновлення** - {related_channel} + @{related_channel} REFERENCED_BY: Посилання REPLY_MESSAGE_HAS_BEEN_DELETED: Повідомлення із запитом було видалено/переміщено, виконайте пошук знову. SEARCHING: '`шукаємо...`' @@ -877,14 +786,12 @@ ua: SETUP_AUTOMATICALLY: Встановити автоматично SETUP_MANUALLY: Встановити вручну SOURCES_UNAVAILABLE: 'Зараз `{document}` недоступний. Спробуйте скачати його пізніше.' - SUBSCRIBE_TO_CHANNEL: Підпишіться на {related_channel}, щоб мати можливість використовувати цього бота. + SUBSCRIBE_TO_CHANNEL: Підпишіться на @{related_channel}, щоб мати можливість використовувати цього бота. SYSTEM_MESSAGING_OPTION: Повідомлення про оновлення TAGS: Теги TANKS_BRUH: І тобі того ж, серденько! - THANK_YOU_FOR_CONTACT: Щиро дякую! Якщо у вас є питання, його краще задати у конференції користувачів {related_channel} TOO_LONG_QUERY_FOR_SHORTLINK: | Занадто довгий запит для shortlink (допускається 35-40 символів запиту). - Спробуйте використати NID для створення запиту. Відкрийте сторінку книги або статті, якими хочете поділитися, скопіюйте звідти NID та створіть запит виду `NID: `. Для цього ж запиту ви можете створити shortlink. @@ -894,4 +801,3 @@ ua: UPLOADED_TO_TELEGRAM: завантажено в Телеграм... VIEWS_CANNOT_BE_SHARED: Виконайте пошук власноруч, цю команду не можна передавати іншому користувачеві. YEAR: Рік - diff --git a/nexus/views/js/BUILD.bazel b/nexus/views/js/BUILD.bazel deleted file mode 100644 index 24001cb..0000000 --- a/nexus/views/js/BUILD.bazel +++ /dev/null @@ -1,11 +0,0 @@ -load("@build_bazel_rules_nodejs//:index.bzl", "js_library") - -js_library( - name = "js", - package_name = "nexus-views-js", - srcs = glob(["*.js"]), - visibility = ["//visibility:public"], - deps = [ - "@npm//dateformat", - ], -) diff --git a/nexus/views/js/base.js b/nexus/views/js/base.js deleted file mode 100644 index b5681d0..0000000 --- a/nexus/views/js/base.js +++ /dev/null @@ -1,131 +0,0 @@ -import { castStringToSingleString, quoteUrl } from './utils' -import { getIssuedDate } from './helpers' - -export class BaseView { - constructor (dataPb) { - Object.assign(this, dataPb) - } - - getFilename () { - const processedAuthor = castStringToSingleString((this.getFirstAuthors()).toLowerCase()) - const processedTitle = castStringToSingleString(this.getRobustTitle()).toLowerCase() - - const parts = [] - if (processedAuthor) { - parts.push(processedAuthor) - } - if (processedTitle) { - parts.push(processedTitle) - } - - let filename = parts.join('-') - - if (!filename) { - if (this.doi) { - filename = quoteUrl(this.doi, '') - } else { - filename = this.md5 - } - } - - const year = getIssuedDate(this.issuedDate) - - if (year) { - filename = `${filename}-${year}` - } - filename = filename.replace(/-+/g, '-') - - return `${filename}.${this.extension}` - } - - getExtension () { - if (this.extension) { - return this.extension - } else { - return 'pdf' - } - } - - getFirstAuthors (etAl = true, firstNAuthors = 1) { - let etAlSuffix = '' - if (etAl) { - etAlSuffix = ' et al' - } - if (this.authorsList) { - if (this.authorsList.length > firstNAuthors) { - return this.authorsList.slice(0, firstNAuthors).join('; ') + etAlSuffix - } else if (this.authorsList.length === 1) { - if (this.authorsList[0].split(';').length - 1 >= 1) { - const commaAuthors = this.authorsList[0].split(';').map(function (el) { - return el.trim() - }) - if (commaAuthors.length > firstNAuthors) { - return (commaAuthors.slice(0, firstNAuthors)).join('; ') + etAlSuffix - } else { - return commaAuthors.join('; ') - } - } - return this.authorsList[0] - } else { - return this.authorsList.join('; ') - } - } else { - return '' - } - } - - getFormattedDatetime () { - if (this.issuedAt) { - const date = new Date(this.issuedAt * 1000) - const today = new Date() - const diffTime = Math.abs(date - today) - const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)) - if (diffDays < 365) { - return `${date.getUTCFullYear()}.${date.getUTCMonth()}` - } else { - return date.getUTCFullYear() - } - } - } - - getFormattedFiledata () { - const parts = [] - if (this.language) { - parts.push(this.language.toUpperCase()) - } - parts.push(this.getExtension().toUpperCase()) - if (this.filesize) { - parts.push(this.getFormattedFilesize()) - } - return parts.join(' | ') - } - - getFormattedFilesize () { - if (this.filesize) { - return (Math.max(1024, this.filesize) / (1024 * 1024)).toFixed(2) + 'Mb' - } - return '' - } - - getIpfsMultihash () { - if (this.ipfsMultihashesList) { - return this.ipfsMultihashesList[0] - } - } - - getTelegramLink () { - return `https://t.me/libgen_scihub_1_bot?start=${Buffer.from('NID: ' + this.id.toString()).toString('base64')}` - } - - getRobustTitle () { - let result = this.title || '' - if (this.volume) { - if (this.title) { - result += ` ${this.volume}` - } else { - result += this.volume - } - } - return result - } -} diff --git a/nexus/views/js/helpers.js b/nexus/views/js/helpers.js deleted file mode 100644 index 66a9eb1..0000000 --- a/nexus/views/js/helpers.js +++ /dev/null @@ -1,42 +0,0 @@ -import dateFormat from 'dateformat' - -export function getMegabytes (bytes) { - try { - if (bytes) { - return (bytes / (1024 * 1024)).toFixed(2) + ' Mb' - } - } catch { - return null - } -} - -export function getIssuedDate (unixtime) { - if (!unixtime) return null - try { - return dateFormat(new Date(unixtime * 1000), 'yyyy') - } catch (e) { - console.error(e) - return null - } -} - -export function getCoverUrl (cu, fictionId, libgenId, cuSuf, md5) { - if (cu) return cu - let r = '' - if (libgenId || fictionId) { - if (libgenId) { - const bulkId = (libgenId - (libgenId % 1000)) - r = `covers/${bulkId}/${md5}` - } else if (fictionId) { - const bulkId = (fictionId - (fictionId % 1000)) - r = `fictioncovers/${bulkId}/${md5}` - } else { - return null - } - } - if (cuSuf) { - r = r + `-${cuSuf}` - return `http://gen.lib.rus.ec/${r}.jpg` - } - return null -} diff --git a/nexus/views/js/index.js b/nexus/views/js/index.js deleted file mode 100644 index ca205dc..0000000 --- a/nexus/views/js/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export { ScimagView } from './scimag' -export { ScitechView } from './scitech' diff --git a/nexus/views/js/scimag.js b/nexus/views/js/scimag.js deleted file mode 100644 index bc25f0c..0000000 --- a/nexus/views/js/scimag.js +++ /dev/null @@ -1,76 +0,0 @@ -import { BaseView } from './base' - -export class ScimagView extends BaseView { - index = 'scimag' - icon = '🔬' - - getFormattedLocator () { - const parts = [] - if (this.authorsList) { - parts.push(this.getFirstAuthors(true, 3)) - } - const journal = this.getRobustJournal() - if (journal) { - parts.push('in', journal) - } - const dt = this.getFormattedDatetime() - if (dt) { - parts.push(`(${dt})`) - } - if (this.getRobustVolume()) { - parts.push(this.getRobustVolume()) - } - if (this.getPages()) { - parts.push(this.getPages()) - } - return parts.join(' ') - } - - getPages () { - if (this.firstPage) { - if (this.lastPage) { - if (this.firstPage === this.lastPage) { - return `p. ${this.firstPage}` - } else { - return `pp. ${this.firstPage}-${this.lastPage}` - } - } else { - return `p. ${this.firstPage}` - } - } else if (this.lastPage) { - return `p. ${this.lastPage}` - } - } - - getRobustJournal () { - if (this.type !== 'chapter' && this.type !== 'book-chapter') { - return this.containerTitle - } - } - - getRobustTitle () { - let result = this.title || this.doi - if (this.volume) { - if (this.type === 'chapter' || this.type === 'book-chapter') { - result += `in ${this.containerTitle} ${this.volume}` - } else { - result = this.volume - } - } - return result - } - - getRobustVolume () { - if (this.volume) { - if (this.issue) { - return `vol. ${this.volume}(${this.issue})` - } else { - if (this.volume === parseInt(this.volume, 10)) { - return `vol. ${this.volume}` - } else { - return this.volume - } - } - } - } -} diff --git a/nexus/views/js/scitech.js b/nexus/views/js/scitech.js deleted file mode 100644 index 9b12c40..0000000 --- a/nexus/views/js/scitech.js +++ /dev/null @@ -1,21 +0,0 @@ -import { BaseView } from './base' - -export class ScitechView extends BaseView { - index = 'scitech' - icon = '📚' - - getFormattedLocator () { - const parts = [] - if (this.authorsList) { - parts.push(this.getFirstAuthors(true, 3)) - } - if (this.issuedAt) { - const date = new Date(this.issuedAt * 1000) - parts.push(`(${date.getUTCFullYear()})`) - } - if (this.pages) { - parts.push(`pp. ${self.pages}`) - } - return parts.join(' ') - } -} diff --git a/nexus/views/js/utils.js b/nexus/views/js/utils.js deleted file mode 100644 index 59172ec..0000000 --- a/nexus/views/js/utils.js +++ /dev/null @@ -1,24 +0,0 @@ -const NON_ALNUMWHITESPACE_REGEX = /([^\s\p{L}\p{Nd}])/gu -const MULTIWHITESPACE_REGEX = /\s+/g - -export function castStringToSingleString (s) { - let processed = s.replace(NON_ALNUMWHITESPACE_REGEX, ' ') - processed = processed.replace(MULTIWHITESPACE_REGEX, '-') - return processed -} - -export function quoteUrl (url, safe) { - if (typeof (safe) !== 'string') { - safe = '/' - } - url = encodeURIComponent(url) - const toUnencode = [] - for (let i = safe.length - 1; i >= 0; --i) { - const encoded = encodeURIComponent(safe[i]) - if (encoded !== safe.charAt(i)) { - toUnencode.push(encoded) - } - } - url = url.replace(new RegExp(toUnencode.join('|'), 'ig'), decodeURIComponent) - return url -} diff --git a/nexus/views/telegram/BUILD.bazel b/nexus/views/telegram/BUILD.bazel index 5df01b4..86f2950 100644 --- a/nexus/views/telegram/BUILD.bazel +++ b/nexus/views/telegram/BUILD.bazel @@ -12,8 +12,8 @@ py_library( deps = [ requirement("telethon"), "//nexus/models/proto:proto_py", - "//nexus/nlptools", "//nexus/translations", + requirement("izihawa_nlptools"), requirement("izihawa_utils"), ], ) diff --git a/nexus/views/telegram/__init__.py b/nexus/views/telegram/__init__.py index 5b8bc31..e69de29 100644 --- a/nexus/views/telegram/__init__.py +++ b/nexus/views/telegram/__init__.py @@ -1,3 +0,0 @@ -from .registry import parse_typed_document_to_view - -__all__ = ['parse_typed_document_to_view'] diff --git a/nexus/views/telegram/base.py b/nexus/views/telegram/base.py deleted file mode 100644 index 845303d..0000000 --- a/nexus/views/telegram/base.py +++ /dev/null @@ -1,117 +0,0 @@ -import datetime -from typing import Optional -from urllib.parse import quote - -import numpy as np -from izihawa_types.datetime import CustomDatetime -from nexus.nlptools.utils import escape_format - -from .common import encode_query_to_deep_link - - -class DoiMixin: - def get_doi_link(self) -> str: - if not self.doi: - return '' - escaped_doi = escape_format(self.doi) - return f'[{escaped_doi}](https://doi.org/{quote(escaped_doi)})' - - -class AuthorMixin: - def get_first_authors(self, et_al=True, first_n_authors=1) -> str: - et_al_suffix = (' et al' if et_al else '') - if self.authors: - if len(self.authors) > first_n_authors: - return '; '.join(self.authors[:first_n_authors]) + et_al_suffix - elif len(self.authors) == 1: - if self.authors[0].count(';') >= 1: - comma_authors = list(map(str.strip, self.authors[0].split(';'))) - if len(comma_authors) > first_n_authors: - return '; '.join(comma_authors[:first_n_authors]) + et_al_suffix - else: - return '; '.join(comma_authors) - return self.authors[0] - else: - return '; '.join(self.authors) - return '' - - -class IssuedAtMixin: - def get_issued_datetime(self) -> Optional[CustomDatetime]: - if not self.has_field('issued_at'): - return None - return CustomDatetime(dt=np.datetime64(self.issued_at, 's')) - - def get_formatted_datetime(self) -> str: - if self.has_field('issued_at'): - dt = self.get_issued_datetime() - try: - ct = datetime.date(dt.year, dt.month, 1) - if datetime.date.today() - datetime.timedelta(days=365) < ct: - return f'{dt.year}.{dt.month:02d}' - except ValueError: - pass - return str(dt.year) - - -class FileMixin: - def get_extension(self) -> str: - return 'pdf' - - def get_formatted_filedata(self, show_format=True, show_language=True, show_filesize=False) -> str: - parts = [] - if self.language and show_language: - parts.append(self.language.upper()) - if show_format: - parts.append(self.get_extension().upper()) - if self.filesize and show_filesize: - parts.append(self.get_formatted_filesize()) - return ' | '.join(parts) - - def get_formatted_filesize(self) -> str: - if self.filesize: - filesize = max(1024, self.filesize) - return '{:.1f}Mb'.format(float(filesize) / (1024 * 1024)) - else: - return '' - - -class BaseView: - index_alias = None - multihash_ix = 0 - - def __getattr__(self, name): - return getattr(self.document_pb, name) - - def get_ipfs_gateway_link(self): - ipfs_link = ( - f'https://ipfs.io/ipfs/{self.ipfs_multihashes[self.multihash_ix]}?' - f'filename={quote(self.get_filename())}' - ) - return f'[IPFS.io]({ipfs_link})' - - def get_ipfs_link(self): - ipfs_link = ( - f'ipfs://{self.ipfs_multihashes[self.multihash_ix]}?' - f'filename={quote(self.get_filename())}' - ) - return f'[IPFS]({ipfs_link})' - - def get_deep_link(self, bot_name, text=None): - if not text: - text = str(self.id) - encoded_query = encode_query_to_deep_link(f'NID: {self.id}', bot_name) - return f'[{text}]({encoded_query})' - - def generate_links(self, bot_name): - links = [ - self.get_deep_link(bot_name=bot_name, text='Nexus Bot') - ] - if self.ipfs_multihashes: - links.append(self.get_ipfs_gateway_link()) - if self.doi: - links.append(self.get_doi_link()) - return links - - def has_field(self, name): - return self.document_pb.HasField(name) diff --git a/nexus/views/telegram/base_holder.py b/nexus/views/telegram/base_holder.py new file mode 100644 index 0000000..a47d525 --- /dev/null +++ b/nexus/views/telegram/base_holder.py @@ -0,0 +1,249 @@ +from urllib.parse import quote + +import orjson as json +from izihawa_nlptools.utils import ( + cast_string_to_single_string, + escape_format, +) +from izihawa_types.safecast import safe_int +from nexus.models.proto import ( + scimag_pb2, + scitech_pb2, + typed_document_pb2, +) + +from .common import ( + TooLongQueryError, + encode_query_to_deep_link, +) +from .scimag import ( + ScimagButtonsBuilder, + ScimagViewBuilder, +) +from .scitech import ( + ScitechButtonsBuilder, + ScitechViewBuilder, +) + + +class BaseHolder: + multihash_ix = 0 + + views_registry = { + 'scimag': ScimagViewBuilder, + 'scitech': ScitechViewBuilder, + } + + def __init__(self, document_pb, snippets=None): + self.document_pb = document_pb + self.snippets = snippets + + def __getattr__(self, name): + return getattr(self.document_pb, name) + + @classmethod + def create(cls, typed_document_pb, snippets=None): + match typed_document_pb.WhichOneof('document'): + case 'scimag': + return ScimagHolder(typed_document_pb.scimag, snippets) + case 'scitech': + return ScitechHolder(typed_document_pb.scitech, snippets) + case _: + raise ValueError('Unknown type') + + @classmethod + def create_from_document(cls, document): + match document.index_alias: + case 'scimag': + return ScimagHolder(scimag_pb2.Scimag(**json.loads(document.document)), getattr(document, 'snippets', None)) + case 'scitech': + return ScitechHolder(scitech_pb2.Scitech(**json.loads(document.document)), getattr(document, 'snippets', None)) + case _: + raise ValueError('Unknown index alias') + + def get_filename(self) -> str: + limit = 55 + filename = cast_string_to_single_string( + self.view_builder().add_authors(et_al=False).add_title(bold=False).add_formatted_datetime().build().lower() + ) + + chars = [] + size = 0 + hit_limit = False + + for c in filename: + current_size = size + len(c.encode()) + if current_size > limit: + hit_limit = True + break + chars.append(c) + size = current_size + + filename = ''.join(chars) + if hit_limit: + glyph = filename.rfind('-') + if glyph != -1: + filename = filename[:glyph] + + if not filename: + if self.doi: + filename = quote(self.doi, safe='') + else: + filename = self.md5 + + return f'{filename}.{self.get_extension()}' + + def get_extension(self) -> str: + return 'pdf' + + def get_formatted_filesize(self) -> str: + if self.filesize: + filesize = max(1024, self.filesize) + return '{:.1f}Mb'.format(float(filesize) / (1024 * 1024)) + else: + return '' + + def get_formatted_filedata(self, show_format=True, show_language=True, show_filesize=False) -> str: + parts = [] + if show_language: + if self.meta_language and self.meta_language != 'en': + parts.append(self.meta_language.upper()) + elif self.language and self.language != 'en': + parts.append(self.language.upper()) + if show_format: + extension = self.get_extension().upper() + if extension != 'PDF': + parts.append(extension) + if self.filesize and show_filesize: + parts.append(self.get_formatted_filesize()) + return ' | '.join(parts) + + def get_ipfs_gateway_link(self): + ipfs_link = ( + f'https://ipfs.io/ipfs/{self.ipfs_multihashes[self.multihash_ix]}?' + f'filename={quote(self.get_filename())}' + ) + return f'[IPFS.io]({ipfs_link})' + + def get_ipfs_link(self): + ipfs_link = ( + f'ipfs://{self.ipfs_multihashes[self.multihash_ix]}?' + f'filename={quote(self.get_filename())}' + ) + return f'[IPFS]({ipfs_link})' + + def get_doi_link(self): + return f'[{self.doi}](https://doi.org/{quote(self.doi)})' + + def encode_link(self, bot_name, text, query): + try: + encoded_query = encode_query_to_deep_link(query, bot_name) + if text: + return f'[{text}]({encoded_query})' + else: + return encoded_query + except TooLongQueryError: + return text + + def get_deep_id_link(self, bot_name, text=None): + query = f'id:{self.id}' + return self.encode_link(bot_name, text, query) + + def get_deep_author_link(self, bot_name, author): + query = f'authors:"{author}"' + return self.encode_link(bot_name, author, query) + + def get_deep_tag_link(self, bot_name, tag): + query = f'tags:"{tag}"' + return self.encode_link(bot_name, tag, query) + + def generate_links(self, bot_name, bot_link_text='Nexus Bot'): + links = [ + self.get_deep_id_link(bot_name=bot_name, text=bot_link_text) + ] + if self.ipfs_multihashes: + links.append(self.get_ipfs_gateway_link()) + if self.doi: + links.append(self.get_doi_link()) + return links + + def generate_tags_links(self, bot_name): + if self.tags: + links = [self.get_deep_tag_link(bot_name=bot_name, tag=escape_format(tag)) for tag in self.tags] + return links + return [] + + def has_field(self, name): + try: + return self.document_pb.HasField(name) + except ValueError: + return hasattr(self.document_pb, name) + + def get_typed_document(self): + return typed_document_pb2.TypedDocument(**{self.index_alias: self.document_pb}) + + +class ScimagHolder(BaseHolder): + index_alias = 'scimag' + + def view_builder(self, user_language=None): + return ScimagViewBuilder(document_holder=self, user_language=user_language) + + def buttons_builder(self, user_language): + return ScimagButtonsBuilder(document_holder=self, user_language=user_language) + + def get_download_command(self, session_id: str, position: int = 0) -> str: + return f'/dla_{session_id}_{self.id}_{position}' + + def get_view_command(self, session_id: str, message_id: int, position: int = 0) -> str: + return f'/va_{session_id}_{message_id}_{self.id}_{position}' + + def get_cover_url(self): + return None + + def get_thumb_url(self): + return 'https://upload.wikimedia.org/wikipedia/commons/thumb/7/75/Science-symbol-2.svg/2048px-Science-symbol-2.svg.png' + + +class ScitechHolder(BaseHolder): + index_alias = 'scitech' + + def view_builder(self, user_language=None): + return ScitechViewBuilder(document_holder=self, user_language=user_language) + + def buttons_builder(self, user_language): + return ScitechButtonsBuilder(document_holder=self, user_language=user_language) + + def get_download_command(self, session_id: str, position: int = 0) -> str: + return f'/dlb_{session_id}_{self.id}_{position}' + + def get_view_command(self, session_id: str, message_id: int, position: int = 0) -> str: + return f'/vb_{session_id}_{message_id}_{self.id}_{position}' + + def get_cover_url(self): + if self.cu: + local_parts = self.cu.split('/') + if len(local_parts) == 2 and safe_int(local_parts[0]) is not None: + return f'http://gen.lib.rus.ec/covers/{self.cu}' + if len(local_parts) == 1: + bulk_id = (self.libgen_id - (self.libgen_id % 1000)) + return f'http://gen.lib.rus.ec/covers/{bulk_id}/{self.cu}' + return self.cu + if self.libgen_id or self.fiction_id: + if self.libgen_id: + bulk_id = (self.libgen_id - (self.libgen_id % 1000)) + r = f'covers/{bulk_id}/{self.md5}' + elif self.fiction_id: + bulk_id = (self.fiction_id - (self.fiction_id % 1000)) + r = f'fictioncovers/{bulk_id}/{self.md5}' + else: + return None + if self.cu_suf: + r += f'-{self.cu_suf}' + return f'http://gen.lib.rus.ec/{r}.jpg' + + def get_thumb_url(self): + return self.get_cover_url() + + def get_extension(self): + return self.document_pb.extension diff --git a/nexus/views/telegram/base_view_builder.py b/nexus/views/telegram/base_view_builder.py new file mode 100644 index 0000000..6f01134 --- /dev/null +++ b/nexus/views/telegram/base_view_builder.py @@ -0,0 +1,389 @@ +import datetime +import math +import re +from typing import Optional +from urllib.parse import quote + +import numpy as np +from izihawa_types.datetime import CustomDatetime +from library.telegram.common import close_button +from nexus.translations import t +from nlptools.izihawa_nlptools.utils import ( + despace_full, + escape_format, +) +from telethon import Button + +from .common import ( + TooLongQueryError, + encode_query_to_deep_link, +) + + +def highlight_markdown(snippet): + markdowned = b'' + start_from = 0 + for highlight in snippet.highlights: + from_ = getattr(highlight, 'from') + to = highlight.to + markdowned += escape_format(snippet.fragment[start_from:from_]) + markdowned += b'**' + markdowned += escape_format(snippet.fragment[from_:to]) + markdowned += b'**' + start_from = to + markdowned += escape_format(snippet.fragment[start_from:]) + markdowned = markdowned.decode() + markdowned = despace_full(re.sub(r'\n+', ' ', markdowned)) + if markdowned[0].islower() or (markdowned[:2] == '**' and markdowned[2].islower()): + markdowned = '...' + markdowned + markdowned = markdowned + '...' + markdowned = f'__{markdowned}__' + return markdowned + + +class TextPart: + def __init__(self, part): + self.part = str(part) + self._bold = False + self._italic = False + self._brackets = False + self._escaped = False + self._clickable = False + self._unbreakable = False + + def escaped(self): + self._escaped = True + return self + + def bold(self): + self._bold = True + return self + + def italic(self): + self._italic = True + return self + + def within_brackets(self): + self._brackets = True + return self + + def clickable(self): + self._clickable = True + return self + + def unbreakable(self): + self._unbreakable = True + return self + + def limits(self, limit, with_dots: bool = False): + if len(self.part) > limit: + if self._unbreakable: + self.part = '' + else: + self.part = self.part[:limit] + if with_dots: + self.part += '...' + + def __add__(self, other): + self.part += str(other) + + def __len__(self): + return len(self.part) + + def __str__(self): + r = self.part + if not self._escaped: + r = escape_format(r) + if self._clickable: + r = f'`{r}`' + if self._brackets: + r = f'({r})' + if self._bold: + r = f'**{r}**' + if self._italic: + r = f'__{r}__' + return r + + +class BaseViewBuilder: + icon = '' + + def __init__(self, document_holder, user_language): + self.document_holder = document_holder + self.user_language = user_language + self.last_limit_part = None + self.last_limit = None + self.parts = [] + self.has_cover = False + + def has_field(self, name): + return self.document_holder.has_field(name) + + def add(self, el, bold=False, italic=False, escaped=False, clickable=False, lower=False, with_brackets=False, unbreakable=False, + eol: Optional[str] = ' '): + if el: + if not isinstance(el, TextPart): + el = TextPart(el if not lower else el.lower()) + if bold: + el.bold() + if italic: + el.italic() + if escaped: + el.escaped() + if clickable: + el.clickable() + if with_brackets: + el.within_brackets() + if unbreakable: + el.unbreakable() + self.parts.append(el) + if eol is not None: + self.parts.append(TextPart(eol)) + return self + + def limits(self, limit=None, with_dots: bool = False): + if limit: + current_length = 0 + for i, part in enumerate(self.parts): + current_length += len(part) + if current_length > limit: + part.limits(limit + len(part) - current_length, with_dots=with_dots) + if len(part) > 0: + self.parts = self.parts[:i + 1] + else: + self.parts = self.parts[:i] + return self + return self + + def limited(self, limit): + self.last_limit_part = len(self.parts) + self.last_limit = limit + return self + + def end_limited(self, with_dots: bool = False): + if self.last_limit is not None: + current_length = 0 + for i, part in enumerate(self.parts[self.last_limit_part:]): + current_length += len(part) + if current_length > self.last_limit: + part.limits(current_length - self.last_limit, with_dots=with_dots) + if len(part) > 0: + self.parts = self.parts[:self.last_limit_part + i + 1] + else: + self.parts = self.parts[:self.last_limit_part + i] + return self + self.last_limit = None + self.last_limit_part = None + return self + + def add_icon(self): + return self.add(self.icon) + + def add_label(self, label_name, bold=True, lower=False): + return self.add(t(label_name, self.user_language) + ':', bold=bold, lower=lower) + + def add_new_line(self, n: int = 1): + return self.add('\n' * n, eol=None) + + def add_formatted_datetime(self): + if self.has_field('issued_at') and self.document_holder.issued_at != -62135596800: + dt = CustomDatetime(dt=np.datetime64(self.document_holder.issued_at, 's')) + try: + ct = datetime.date(dt.year, dt.month, 1) + if datetime.date.today() - datetime.timedelta(days=365) < ct: + self.add(TextPart(f'{dt.year}.{dt.month:02d}').within_brackets()) + else: + self.add(TextPart(str(dt.year)).within_brackets()) + except ValueError: + pass + return self + + def add_downloads_count(self): + return self.add(f'{math.log1p(self.document_holder.downloads_count):.1f}') + + def add_links(self, bot_name): + self.add_label("LINKS") + self.add(" - ".join(self.document_holder.generate_links(bot_name)), escaped=True) + return self + + def add_tags(self, bot_name): + tag_links = self.document_holder.generate_tags_links(bot_name) + if not tag_links: + return self + self.add(tag_links[0], escaped=True, unbreakable=True) + for tag_link in tag_links[1:]: + self.add('- ' + tag_link, escaped=True, unbreakable=True) + return self + + def add_authors(self, et_al=True, first_n_authors=1, on_newline=True): + et_al_suffix = (' et al' if et_al else '') + if self.document_holder.authors: + if on_newline: + self.add_new_line() + if len(self.document_holder.authors) > first_n_authors: + self.add('; '.join(self.document_holder.authors[:first_n_authors]) + et_al_suffix) + elif len(self.document_holder.authors) == 1: + if self.document_holder.authors[0].count(';') >= 1: + comma_authors = list(map(str.strip, self.document_holder.authors[0].split(';'))) + if len(comma_authors) > first_n_authors: + self.add('; '.join(comma_authors[:first_n_authors]) + et_al_suffix) + else: + self.add('; '.join(comma_authors)) + elif self.document_holder.authors[0].count(',') >= 1: + comma_authors = list(map(str.strip, self.document_holder.authors[0].split(','))) + if len(comma_authors) > first_n_authors: + self.add('; '.join(comma_authors[:first_n_authors]) + et_al_suffix) + else: + self.add('; '.join(comma_authors)) + else: + self.add(self.document_holder.authors[0]) + else: + self.add('; '.join(self.document_holder.authors)) + return self + + def add_doi(self, clickable=True, with_brackets=False, with_leading_pipe=False): + if self.document_holder.doi: + if with_leading_pipe: + self.add('|') + return self.add(self.document_holder.doi, clickable=clickable, with_brackets=with_brackets) + + def add_doi_link(self, with_leading_pipe=False, on_newline=False, label=False, text=None, end_newline=False): + if self.document_holder.doi: + if on_newline: + self.add_new_line() + if with_leading_pipe: + self.add('|') + if label: + self.add('DOI:', bold=True) + escaped_doi = escape_format(self.document_holder.doi) + if text is None: + text = escaped_doi + self.add(f'[{text}](https://doi.org/{quote(escaped_doi)})', escaped=True) + if end_newline: + self.add_new_line() + return self + + def add_references_counter(self, bot_name, with_leading_pipe=False): + if self.has_field('referenced_by_count') and self.document_holder.referenced_by_count: + if with_leading_pipe: + self.add('|') + text = f'🔗 {self.document_holder.referenced_by_count}' + if self.document_holder.doi: + try: + link = encode_query_to_deep_link(f'refs:{self.document_holder.doi}', bot_name=bot_name) + text = f'[{text}]({link})' + except TooLongQueryError: + pass + self.add(text, escaped=True) + return self + + def add_short_description(self): + return ( + self.add_icon() + .add_title() + .limits(250, with_dots=True) + .add_locator() + ) + + def add_view(self, bot_name): + return ( + self.add_cover_url() + .add_icon() + .add_title() + .limits(400, with_dots=True) + .add_locator(first_n_authors=5) + .add_new_line(2) + .add_stats() + .add_links(bot_name=bot_name) + .add_new_line(2) + .add_description() + .limits(1500, with_dots=True) + .add_new_line(2) + .add_tags(bot_name=bot_name) + .limits(3000) + ) + + def add_title(self): + raise NotImplementedError() + + def add_description(self): + raise NotImplementedError() + + def add_locator(self, first_n_authors=1, markup=True): + raise NotImplementedError() + + def add_filedata(self, with_leading_pipe=False): + raise NotImplementedError() + + def add_stats(self, end_newline=True): + return self + + def add_cover_url(self): + cover_url = self.document_holder.get_cover_url() + if cover_url: + self.has_cover = True + self.add(f'[​]({cover_url})', escaped=True, unbreakable=True) + return self + + def add_isbns(self, on_newline=False, label=False, end_newline=False): + if self.document_holder.isbns: + if on_newline: + self.add_new_line() + if label: + self.add('ISBN:', bold=True) + self.add(', '.join(self.document_holder.isbns[:2])) + if end_newline: + self.add_new_line() + return self + + def build(self): + text = ''.join(map(str, self.parts)).strip() + text = re.sub('\n\n+', '\n\n', text) + return text + + +class BaseButtonsBuilder: + def __init__(self, document_holder, user_language): + self.document_holder = document_holder + self.user_language = user_language + self.buttons = [[]] + + def add_back_button(self, back_command): + self.buttons[-1].append( + Button.inline( + text='⬅️', + data=back_command + ) + ) + return self + + def add_download_button(self, session_id, position: int = 0): + # ⬇️ is a mark, Find+F over sources before replacing + self.buttons[-1].append( + Button.inline( + text=f'⬇️ GET', + data=self.document_holder.get_download_command(session_id=session_id, position=position), + ) + ) + return self + + def add_remote_download_button(self, bot_name): + # ⬇️ is a mark, Find+F over sources before replacing + self.buttons[-1].append( + Button.url('⬇', self.document_holder.get_deep_id_link(bot_name)) + ) + return self + + def add_close_button(self, session_id): + self.buttons[-1].append(close_button(session_id)) + return self + + def add_new_line(self): + self.buttons.append([]) + return self + + def add_default_layout(self, bot_name, session_id, position: int = 0): + raise NotImplementedError() + + def build(self): + return self.buttons diff --git a/nexus/views/telegram/common.py b/nexus/views/telegram/common.py index dd9c0a0..6066303 100644 --- a/nexus/views/telegram/common.py +++ b/nexus/views/telegram/common.py @@ -8,26 +8,13 @@ from telethon import Button class TooLongQueryError(BaseError): - code = 'too_long_query_error' level = logging.WARNING + code = 'too_long_query_error' class DecodeDeepQueryError(BaseError): - code = 'decode_deep_query_error' level = logging.WARNING - - -def close_button(session_id: str = None): - if session_id: - return Button.inline( - text='✖️', - data=f'/close_{session_id}', - ) - else: - return Button.inline( - text='✖️', - data='/close', - ) + code = 'decode_deep_query_error' def vote_button(language: str, session_id: str, index_alias: str, document_id: int, case: str): @@ -35,7 +22,7 @@ def vote_button(language: str, session_id: str, index_alias: str, document_id: i case = {'broken': 'b', 'ok': 'o'}[case] short_index_alias = {'scimag': 'a', 'scitech': 'b'}[index_alias] return Button.inline( - text=t(label, language=language), + text=t(label, language), data=f'/vote{short_index_alias}_{session_id}_{document_id}_{case}', ) diff --git a/nexus/bot/widgets/document_list_widget.py b/nexus/views/telegram/document_list_widget.py similarity index 53% rename from nexus/bot/widgets/document_list_widget.py rename to nexus/views/telegram/document_list_widget.py index 192708f..a2cf4d4 100644 --- a/nexus/bot/widgets/document_list_widget.py +++ b/nexus/views/telegram/document_list_widget.py @@ -3,33 +3,32 @@ from typing import ( Optional, ) -from idm.api.proto.chat_manager_service_pb2 import Chat as ChatPb -from nexus.bot.application import TelegramApplication -from nexus.models.proto.typed_document_pb2 import \ - TypedDocument as TypedDocumentPb +from idm.api.proto import chat_manager_service_pb2 +from library.telegram.common import close_button from nexus.translations import t -from nexus.views.telegram.common import close_button -from nexus.views.telegram.registry import parse_typed_document_to_view +from nexus.views.telegram.base_holder import BaseHolder from telethon import Button class DocumentListWidget: def __init__( self, - application: TelegramApplication, - chat: ChatPb, - typed_documents: List[TypedDocumentPb], - cmd: str, - has_next: bool, - session_id: str, - message_id: int, - request_id: str, + chat: chat_manager_service_pb2.Chat, + document_holders: List[BaseHolder], + bot_name, + header: Optional[str] = None, + has_next: bool = False, + session_id: Optional[str] = None, + message_id: Optional[int] = None, + request_id: Optional[str] = None, + cmd: str = None, page: int = 0, page_size: int = 5, ): - self.application = application self.chat = chat - self.typed_documents = typed_documents + self.document_holders = document_holders + self.bot_name = bot_name + self.header = header self.cmd = cmd self.has_next = has_next self.session_id = session_id @@ -39,27 +38,27 @@ class DocumentListWidget: self.page_size = page_size async def render(self) -> tuple[str, Optional[list]]: - if not len(self.typed_documents): - return t('COULD_NOT_FIND_ANYTHING', language=self.chat.language), [close_button(self.session_id)] + if not len(self.document_holders): + return t('COULD_NOT_FIND_ANYTHING', self.chat.language), [close_button(self.session_id)] serp_elements = [] - for position, typed_document in enumerate(self.typed_documents): - view = parse_typed_document_to_view(typed_document) + for position, document_holder in enumerate(self.document_holders): serp_elements.append( - view.get_snippet( - language=self.chat.language, - limit=512 + 128, - ) + document_holder + .view_builder(self.chat.language) + .add_short_description() + .add_new_line() + .add_links(bot_name=self.bot_name) + .build() ) - promo = self.application.promotioner.choose_promotion(language=self.chat.language).format( - related_channel=self.application.config['telegram']['related_channel'], - ) - serp_elements.append(promo) serp = '\n\n'.join(serp_elements) + if self.header: + serp = f'**{self.header}**\n\n{serp}' + buttons = [] - if self.has_next or self.page > 0: + if self.cmd and self.message_id and self.session_id and (self.has_next or self.page > 0): buttons = [ Button.inline( text='<<1' if self.page > 1 else ' ', @@ -78,5 +77,4 @@ class DocumentListWidget: ) ] buttons.append(close_button(self.session_id)) - return serp, buttons diff --git a/nexus/views/telegram/progress_bar.py b/nexus/views/telegram/progress_bar.py index fc3bd9c..d2914f6 100644 --- a/nexus/views/telegram/progress_bar.py +++ b/nexus/views/telegram/progress_bar.py @@ -5,10 +5,9 @@ from typing import ( ) from izihawa_utils.exceptions import BaseError +from library.telegram.common import close_button from telethon.errors import MessageIdInvalidError -from .common import close_button - class ProgressBarLostMessageError(BaseError): pass diff --git a/nexus/views/telegram/registry.py b/nexus/views/telegram/registry.py deleted file mode 100644 index 79894b9..0000000 --- a/nexus/views/telegram/registry.py +++ /dev/null @@ -1,22 +0,0 @@ -from typing import Union - -from nexus.models.proto.scimag_pb2 import Scimag as ScimagPb -from nexus.models.proto.scitech_pb2 import Scitech as ScitechPb - -from .scimag import ScimagView -from .scitech import ScitechView - -pb_registry = { - 'scimag': ScimagPb, - 'scitech': ScitechPb, -} - -views_registry = { - 'scimag': ScimagView, - 'scitech': ScitechView, -} - - -def parse_typed_document_to_view(typed_document_pb) -> Union[ScimagView, ScitechView]: - document_pb = getattr(typed_document_pb, typed_document_pb.WhichOneof('document')) - return views_registry[typed_document_pb.WhichOneof('document')](document_pb) diff --git a/nexus/views/telegram/scimag.py b/nexus/views/telegram/scimag.py index d490a4a..ddd7fad 100644 --- a/nexus/views/telegram/scimag.py +++ b/nexus/views/telegram/scimag.py @@ -1,240 +1,146 @@ import math -from typing import ( - List, - Optional, - Tuple, -) -from urllib.parse import quote from izihawa_types.safecast import safe_int -from izihawa_utils.common import filter_none -from nexus.models.proto.scimag_pb2 import Scimag as ScimagPb -from nexus.nlptools.utils import ( - cast_string_to_single_string, - escape_format, -) -from nexus.translations import t -from nexus.views.telegram.common import close_button from telethon import Button -from .base import ( - AuthorMixin, - BaseView, - DoiMixin, - FileMixin, - IssuedAtMixin, +from .base_view_builder import ( + BaseButtonsBuilder, + BaseViewBuilder, + highlight_markdown, +) +from .common import ( + TooLongQueryError, + encode_query_to_deep_link, ) preprints = {'10.1101', '10.21203'} -class ScimagView(BaseView, AuthorMixin, DoiMixin, FileMixin, IssuedAtMixin): +class ScimagButtonsBuilder(BaseButtonsBuilder): + def add_linked_search_button(self, bot_name): + if self.document_holder.referenced_by_count: + try: + self.buttons[-1].append( + Button.url( + text=f'🔗 {self.document_holder.referenced_by_count or ""}', + url=encode_query_to_deep_link(f'refs:{self.document_holder.doi}', bot_name=bot_name), + ) + ) + except TooLongQueryError: + pass + return self + + def add_journal_search(self, bot_name): + try: + issn_query = [f'issn:{issn}' for issn in self.document_holder.issns[:2]] + if issn_query: + issn_query.append('order_by:date') + issn_query = ' '.join(issn_query) + self.buttons[-1].append( + Button.url( + text='📰', + url=encode_query_to_deep_link(issn_query, bot_name=bot_name), + ) + ) + except TooLongQueryError: + pass + return self + + def add_default_layout(self, bot_name, session_id, position: int = 0): + return ( + self.add_download_button(session_id, position) + .add_linked_search_button(bot_name) + .add_journal_search(bot_name) + .add_close_button(session_id) + ) + + +class ScimagViewBuilder(BaseViewBuilder): icon = '🔬' - index_alias = 'scimag' - multihash_ix = 1 + icons = { + 'book': '📚', + 'monograph': '📚', + 'chapter': '🔖', + 'book-chapter': '🔖', + } + multihash_ix = 0 - def __init__(self, document_pb: ScimagPb): - self.document_pb = document_pb + def is_preprint(self): + return self.document_holder.doi.split('/')[0] in preprints - def generate_body(self, language: str, with_referenced_by: bool = False, limit: Optional[int] = None) -> str: - head = self.icon - title = self.get_robust_title() - if title: - head += f' **{title}**' + def add_icon(self): + return self.add(self.icons.get(self.document_holder.type, self.icon)) - doi = f'**DOI:** {self.get_doi_link()}' - - referenced_by = None - if with_referenced_by: - referenced_by = self.get_referenced_by(language=language) - - caption = '\n'.join(filter_none([head, doi, referenced_by, self.get_formatted_locator()])) - - if limit and len(caption) > limit: - caption = '\n'.join(filter_none([head, doi, referenced_by])) - if len(caption) > limit: - subtract = len(self.icon + doi) + 1 - shorten_title = title[:(limit - subtract)] - shorten_head = f'{self.icon} **{shorten_title}**' - caption = '\n'.join(filter_none([shorten_head, doi, referenced_by])) - return caption - - def get_download_command(self, session_id: str, position: int = 0) -> str: - return f'/dla_{session_id}_{self.id}_{position}' - - def get_filename(self) -> str: - limit = 55 - - processed_author = '' - if self.authors: - processed_author = self.authors[0] - - processed_author = cast_string_to_single_string(processed_author.lower()) - processed_title = cast_string_to_single_string((self.title or '').lower()) - - parts = [] - if processed_author: - parts.append(processed_author) - if processed_title: - parts.append(processed_title) - filename = '-'.join(parts) - - chars = [] - size = 0 - hit_limit = False - - for c in filename: - current_size = size + len(c.encode()) - if current_size > limit: - hit_limit = True - break - chars.append(c) - size = current_size - - filename = ''.join(chars) - if hit_limit: - glyph = filename.rfind('-') - if glyph != -1: - filename = filename[:glyph] - - if not filename: - filename = quote(self.doi, safe='')[:limit] - - dt = self.get_issued_datetime() - if dt: - filename = f'{filename}-{dt.year}' - - return f'{filename}.pdf' - - def get_formatted_locator(self) -> str: - parts = [] - if self.authors: - parts.append(self.get_first_authors(first_n_authors=3)) - journal = self.get_robust_journal() - if journal: - parts.extend(['in', journal]) - dt = self.get_formatted_datetime() - if dt: - parts.append(f'({dt})') - if self.get_robust_volume(): - parts.append(self.get_robust_volume()) - if self.get_pages(): - parts.append(self.get_pages()) - - return ' '.join(parts) - - def get_pages(self) -> Optional[str]: - if self.first_page: - if self.last_page: - if self.first_page == self.last_page: - return f'p. {self.first_page}' + def add_pages(self): + if self.document_holder.first_page: + if self.document_holder.last_page: + if self.document_holder.first_page == self.document_holder.last_page: + self.add(f'p. {self.document_holder.first_page}') else: - return f'pp. {self.first_page}-{self.last_page}' + self.add(f'pp. {self.document_holder.first_page}-{self.document_holder.last_page}') else: - return f'p. {self.first_page}' - elif self.last_page: - return f'p. {self.last_page}' + self.add(f'p. {self.document_holder.first_page}') + elif self.document_holder.last_page: + self.add(f'p. {self.document_holder.last_page}') + return self - def get_referenced_by(self, language): - if self.ref_by_count: - return f'**{t("REFERENCED_BY", language=language)}:** {self.ref_by_count}' + def add_container(self, bold=False, italic=False): + if self.document_holder.container_title: + self.add('in') + self.add(self.document_holder.container_title, bold=bold, italic=italic) + return self - def get_snippet( - self, - language: str, - view_command: Optional[str] = None, - limit: Optional[int] = None, - ) -> str: - snippet = self.generate_body(language=language, with_referenced_by=True, limit=limit) - if view_command: - snippet += f'\n{view_command} | {self.get_formatted_filedata()}' - return snippet - - def get_view( - self, - language: str, - session_id: str, - bot_name: str, - position: int = 0, - back_command: Optional[str] = None, - with_buttons: bool = True, - ) -> Tuple[str, Optional[List[List[Button]]]]: - parts = [f'**{self.get_robust_title()}**\n'] - - if self.authors: - parts.append(f'**{t("AUTHORS", language=language)}**: ' - f'{escape_format(self.get_first_authors(first_n_authors=3))}') - journal = self.get_robust_journal() - if journal: - parts.append(f'**{t("JOURNAL", language=language)}**: {journal}') - - dt = self.get_formatted_datetime() - if dt: - parts.append(f'**{t("YEAR", language=language)}**: {dt}') - - if self.downloads_count: - parts.append(f'**NRank**: {math.log1p(self.downloads_count):.1f}') - - parts.append(f'**Links**: {" - ".join(self.generate_links(bot_name))}') - - if self.abstract: - parts.append( - f'\n**{t("ABSTRACT", language=language)}**: {escape_format(self.abstract)}', - ) - - if self.tags: - parts.append(f'\n__{escape_format(", ".join(self.tags))}__') - - buttons = None - if with_buttons: - buttons = [[]] - if back_command: - buttons[-1].append( - Button.inline( - text='⬅️', - data=back_command - ) - ) - - # ⬇️ is a mark, Find+F over sources before replacing - buttons[-1].append( - Button.inline( - text=f'⬇️ {self.get_formatted_filedata()}', - data=self.get_download_command(session_id=session_id, position=position), - ) - ) - if self.ref_by_count: - buttons[-1].append( - Button.switch_inline( - text=f'🔗 {self.ref_by_count or ""}', - query=f'references:"{self.doi}"', - same_peer=True, - ) - ) - buttons[-1].append(close_button(session_id)) - return '\n'.join(parts).strip()[:4096], buttons - - def get_view_command(self, session_id: str, message_id: int, position: int = 0) -> str: - return f'/va_{session_id}_{message_id}_{self.id}_{position}' - - def get_robust_journal(self): - if self.type != 'chapter' and self.type != 'book-chapter': - return escape_format(self.container_title) - - def get_robust_title(self): - title = escape_format(self.title or self.doi) - if self.doi.split('/')[0] in preprints: - title = '`[P]` ' + title - if self.type == 'chapter' or self.type == 'book-chapter': - title += f' in {self.container_title}' - return title - - def get_robust_volume(self) -> str: - if self.volume: - if self.issue: - return f'vol. {self.volume}({self.issue})' + def add_volume(self): + if self.document_holder.volume: + if self.document_holder.issue: + self.add(f'vol. {self.document_holder.volume}({self.document_holder.issue})') else: - if safe_int(self.volume): - return f'vol. {self.volume}' + if safe_int(self.document_holder.volume): + self.add(f'vol. {self.document_holder.volume}') else: - return self.volume + self.add(self.document_holder.volume) + return self + + def add_title(self, bold=True): + self.add(self.document_holder.title or self.document_holder.doi, bold=bold) + return self + + def add_snippet(self, on_newline=True): + snippet = self.document_holder.snippets.get('abstract') + if snippet and snippet.highlights: + if on_newline: + self.add_new_line() + self.add(highlight_markdown(snippet), escaped=True) + return self + + def add_locator(self, first_n_authors=1, markup=True): + return ( + self.add_authors(first_n_authors=first_n_authors) + .add_container(italic=markup) + .add_formatted_datetime() + .add_pages() + ) + + def add_filedata(self, with_leading_pipe=False): + filedata = self.document_holder.get_formatted_filedata() + if filedata: + if with_leading_pipe: + self.add('|') + self.add(filedata) + return self + + def add_description(self): + if self.document_holder.abstract: + self.add(self.document_holder.abstract) + return self + + def add_stats(self, end_newline=True): + if self.document_holder.page_rank: + star_rank = int(round(math.log10(self.document_holder.page_rank + 1) + 2)) * '⭐' + if star_rank: + self.add(f'**Rank**: {star_rank}', escaped=True) + else: + self.add(f'**Rank**: ❔', escaped=True) + if end_newline: + self.add_new_line() + return self diff --git a/nexus/views/telegram/scitech.py b/nexus/views/telegram/scitech.py index 00a9917..912dc13 100644 --- a/nexus/views/telegram/scitech.py +++ b/nexus/views/telegram/scitech.py @@ -1,241 +1,81 @@ -from typing import ( - Iterable, - List, - Optional, - Tuple, -) -from urllib.parse import quote +from typing import Optional -from izihawa_utils.common import ( - filter_none, - is_essential, -) -from nexus.models.proto.scitech_pb2 import Scitech as ScitechPb -from nexus.nlptools.utils import ( - cast_string_to_single_string, - despace, - escape_format, -) -from nexus.translations import t -from nexus.views.telegram.common import close_button -from telethon import Button - -from .base import ( - AuthorMixin, - BaseView, - DoiMixin, - FileMixin, - IssuedAtMixin, +from .base_view_builder import ( + BaseButtonsBuilder, + BaseViewBuilder, + highlight_markdown, ) -class ScitechView(BaseView, AuthorMixin, DoiMixin, FileMixin, IssuedAtMixin): +class ScitechButtonsBuilder(BaseButtonsBuilder): + def add_default_layout(self, bot_name, session_id, position: int = 0): + return ( + self.add_download_button(session_id, position) + .add_close_button(session_id) + ) + + +class ScitechViewBuilder(BaseViewBuilder): icon = '📚' - index_alias = 'scitech' - def __init__(self, document_pb: ScitechPb, duplicates: Optional[Iterable[ScitechPb]] = tuple()): - self.document_pb = document_pb - self.duplicates = [ScitechView( - document_pb=document_pb, - ) for document_pb in duplicates] + def add_edition(self, with_brackets=True, bold=False): + edition = self.document_holder.edition + if edition: + if edition.isdigit(): + if edition[-1] == '1': + edition += 'st edition' + elif edition[-1] == '2': + edition += 'nd edition' + elif edition[-1] == '3': + edition += 'rd edition' + else: + edition += 'th edition' + return self.add(edition, with_brackets=with_brackets, bold=bold) - def generate_body(self, language: str, limit: Optional[int] = None) -> str: - head = self.icon - title = self.get_robust_title() - if title: - head += f' **{title}**' + def add_pages(self): + if self.document_holder.pages: + self.add(f'pp. {self.document_holder.pages}') + return self - doi = None - if self.doi: - doi = f'**DOI:** {self.get_doi_link()}' - - locator = self.get_formatted_locator() - - caption = '\n'.join(filter_none([head, doi, locator], predicate=is_essential)) - if limit and len(caption) > limit: - shorten_title = title[:limit] - shorten_title = shorten_title[:max(32, shorten_title.rfind(' '))] - caption = f'{self.icon} **{shorten_title}**' - - return caption - - def get_cover_url(self): - if self.cu: - return self.cu - if self.libgen_id or self.fiction_id: - if self.libgen_id: - bulk_id = (self.libgen_id - (self.libgen_id % 1000)) - r = f'covers/{bulk_id}/{self.md5}' - elif self.fiction_id: - bulk_id = (self.fiction_id - (self.fiction_id % 1000)) - r = f'fictioncovers/{bulk_id}/{self.md5}' - else: - return None - if self.cu_suf: - r += f'-{self.cu_suf}' - return f'http://gen.lib.rus.ec/{r}.jpg' - - def get_download_command(self, session_id: str, position: int = 0) -> str: - return f'/dlb_{session_id}_{self.id}_{position}' - - def get_extension(self): - return self.extension - - def get_filename(self) -> str: - limit = 55 - - processed_author = cast_string_to_single_string(self.get_first_authors(et_al=False).lower()) - processed_title = cast_string_to_single_string(self.get_robust_title().lower()) - - parts = [] - if processed_author: - parts.append(processed_author) - if processed_title: - parts.append(processed_title) - filename = '-'.join(parts) - - chars = [] - size = 0 - hit_limit = False - - for c in filename: - current_size = size + len(c.encode()) - if current_size > limit: - hit_limit = True - break - chars.append(c) - size = current_size - - filename = ''.join(chars) - if hit_limit: - glyph = filename.rfind('-') - if glyph != -1: - filename = filename[:glyph] - - if not filename: - if self.doi: - filename = quote(self.doi, safe='') - else: - filename = self.md5 - - dt = self.get_issued_datetime() - if dt: - filename = f'{filename}-{dt.year}' - - return f'{filename}.{self.get_extension()}' - - def get_formatted_locator(self) -> str: - parts = [] - if self.authors: - parts.append(self.get_first_authors(first_n_authors=3)) - dt = self.get_issued_datetime() - if dt: - parts.append(f'({dt.year})') - if self.pages: - parts.append(f'pp. {self.pages}') - - return escape_format(' '.join(parts)) or '' - - def get_robust_title(self): - title = self.title or '' - if self.volume: + def add_title(self, bold=True): + title = self.document_holder.title or '' + if self.document_holder.periodical: if title: - title += f' ({self.volume})' + title += f' ({self.document_holder.periodical})' else: - title += self.volume - return escape_format(title) - - def get_snippet( - self, - language: str, - view_command: Optional[str] = None, - limit: Optional[int] = None, - ) -> str: - snippet = self.generate_body(language=language, limit=limit) - if view_command: - snippet += f'\n{view_command} | {self.get_formatted_filedata(show_format=not self.has_duplicates)}' - return snippet - - def get_view( - self, - language: str, - session_id: str, - bot_name: str, - position: int = 0, - back_command: Optional[str] = None, - with_buttons: bool = True, - ) -> Tuple[str, Optional[List[List[Button]]]]: - parts = [f'**{self.get_robust_title()}**\n'] - cover_url = self.get_cover_url() - if cover_url: - # There is an invisible character inside []! - parts[-1] = f'[​]({cover_url})' + parts[-1] - - if self.authors: - parts.append(f'**{t("AUTHORS", language=language)}**: ' - f'{escape_format(self.get_first_authors(first_n_authors=3))}') - dt = self.get_issued_datetime() - if dt: - parts.append(f'**{t("YEAR", language=language)}**: {dt.year}') - if self.edition: - parts.append(f'**{t("EDITION", language=language)}**: ' - f'{escape_format(self.edition)}') - - parts.append(f'**Links**: {" - ".join(self.generate_links(bot_name))}') - - if self.description: - parts.append( - f'\n**{t("DESCRIPTION", language=language)}**:\n' - f'{escape_format(despace(self.description))}', - ) - - if self.tags: - parts.append(f'\n__{escape_format(", ".join(self.tags))}__') - - buttons = None - if with_buttons: - buttons = [[]] - # Plain layout - if not self.duplicates: - if back_command: - buttons[-1].append(Button.inline( - text='⬅️', - data=back_command - )) - buttons[-1].extend([ - Button.inline( - text=f'⬇️ {self.get_formatted_filedata(show_language=False)}', - data=self.get_download_command(session_id=session_id, position=position), - ), - close_button(session_id), - ]) + title += self.document_holder.periodical + elif self.document_holder.volume: + if title: + title += f' ({self.document_holder.volume})' else: - buttons = [[]] - for view in [self] + self.duplicates: - filedata = view.get_formatted_filedata(show_language=False, show_filesize=True) - if len(buttons[-1]) >= 2: - buttons.append([]) - # ⬇️ is a mark, Find+F over sources before replacing - buttons[-1].append( - Button.inline( - text=f'⬇️ {filedata}', - data=view.get_download_command(session_id=session_id, position=position), - ) - ) - if len(buttons[-1]) == 1: - buttons[-1].append(Button.inline( - text=' ', - data='/noop', - )) - buttons.append([]) - if back_command: - buttons[-1].append(Button.inline( - text='⬅️', - data=back_command, - )) - buttons[-1].append(close_button(session_id)) + title += self.document_holder.volume + self.add(title, bold=bold) + self.add_edition(with_brackets=True, bold=bold) + return self - return '\n'.join(parts).strip()[:4096], buttons + def add_snippet(self, on_newline=True): + snippet = self.document_holder.snippets.get('description') + if snippet and snippet.highlights: + if on_newline: + self.add_new_line() + self.add(highlight_markdown(snippet), escaped=True) + return self - def get_view_command(self, session_id: str, message_id: int, position: int = 0) -> str: - return f'/vb_{session_id}_{message_id}_{self.id}_{position}' + def add_locator(self, first_n_authors=1, markup=True): + return ( + self.add_authors(first_n_authors=first_n_authors, on_newline=True) + .add_formatted_datetime() + ) + + def add_filedata(self, with_leading_pipe=False): + filedata = self.document_holder.get_formatted_filedata() + if filedata: + if with_leading_pipe: + self.add('|') + self.add(filedata) + return self + + def add_description(self, limit: Optional[int] = None): + if self.document_holder.description: + self.add(self.document_holder.description) + return self diff --git a/postgres/sql/chats.sql b/postgres/sql/chats.sql new file mode 100644 index 0000000..3be4a95 --- /dev/null +++ b/postgres/sql/chats.sql @@ -0,0 +1,158 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 14.1 (Debian 14.1-1.pgdg110+1) +-- Dumped by pg_dump version 14.1 (Debian 14.1-1.pgdg110+1) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: subscriptions; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.subscriptions ( + id bigint DEFAULT nextval('public.subscriptions_id_seq'::regclass) NOT NULL, + chat_id bigint NOT NULL, + subscription_query text NOT NULL, + schedule text NOT NULL, + is_oneshot boolean DEFAULT false NOT NULL, + is_downloadable boolean DEFAULT false NOT NULL, + created_at integer DEFAULT date_part('epoch'::text, now()) NOT NULL, + updated_at integer DEFAULT date_part('epoch'::text, now()) NOT NULL, + valid_until integer DEFAULT 2147483647 NOT NULL, + next_check_at integer NOT NULL, + subscription_type integer DEFAULT 0 NOT NULL +); + + +ALTER TABLE public.subscriptions OWNER TO postgres; + +-- +-- Name: subscriptions_chat_id_subscription_query_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE UNIQUE INDEX subscriptions_chat_id_subscription_query_idx ON public.subscriptions USING btree (chat_id, subscription_query); + + +-- +-- Name: subscriptions_id_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE UNIQUE INDEX subscriptions_id_idx ON public.subscriptions USING btree (id); + + +-- +-- Name: subscriptions_next_check_at_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX subscriptions_next_check_at_idx ON public.subscriptions USING btree (next_check_at); + + +-- +-- Name: subscriptions_subscription_query_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX subscriptions_subscription_query_idx ON public.subscriptions USING btree (subscription_query); + + +-- +-- Name: subscriptions set_timestamp_on_subscriptions; Type: TRIGGER; Schema: public; Owner: postgres +-- + +CREATE TRIGGER set_timestamp_on_subscriptions BEFORE UPDATE ON public.subscriptions FOR EACH ROW EXECUTE FUNCTION public.trigger_set_updated_at(); + + +-- +-- Name: TABLE subscriptions; Type: ACL; Schema: public; Owner: postgres +-- + +GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.subscriptions TO idm_api; + + +-- +-- PostgreSQL database dump complete +-- + +root@postgres-master-0:/# pg_dump -t 'chats' --schema-only idm +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 14.1 (Debian 14.1-1.pgdg110+1) +-- Dumped by pg_dump version 14.1 (Debian 14.1-1.pgdg110+1) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: chats; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.chats ( + chat_id bigint NOT NULL, + username text NOT NULL, + language text DEFAULT 'en'::text NOT NULL, + is_system_messaging_enabled boolean DEFAULT true NOT NULL, + is_discovery_enabled boolean DEFAULT true NOT NULL, + ban_until integer, + ban_message text, + is_admin boolean DEFAULT false NOT NULL, + created_at integer DEFAULT date_part('epoch'::text, now()) NOT NULL, + updated_at integer DEFAULT date_part('epoch'::text, now()) NOT NULL, + most_popular_tags text[], + is_connectome_enabled boolean DEFAULT false NOT NULL +); + + +ALTER TABLE public.chats OWNER TO postgres; + +-- +-- Name: chats_chat_id_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE UNIQUE INDEX chats_chat_id_idx ON public.chats USING btree (chat_id); + + +-- +-- Name: chats set_timestamp_on_chats; Type: TRIGGER; Schema: public; Owner: postgres +-- + +CREATE TRIGGER set_timestamp_on_chats BEFORE UPDATE ON public.chats FOR EACH ROW EXECUTE FUNCTION public.trigger_set_updated_at(); + + +-- +-- Name: TABLE chats; Type: ACL; Schema: public; Owner: postgres +-- + +GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.chats TO idm_api; + + +-- +-- PostgreSQL database dump complete +-- diff --git a/postgres/sql/scimag.sql b/postgres/sql/scimag.sql index ccd4d8f..111cc40 100644 --- a/postgres/sql/scimag.sql +++ b/postgres/sql/scimag.sql @@ -2,8 +2,8 @@ -- PostgreSQL database dump -- --- Dumped from database version 13.2 (Debian 13.2-1.pgdg100+1) --- Dumped by pg_dump version 13.2 (Debian 13.2-1.pgdg100+1) +-- Dumped from database version 14.1 (Debian 14.1-1.pgdg110+1) +-- Dumped by pg_dump version 14.1 (Debian 14.1-1.pgdg110+1) SET statement_timeout = 0; SET lock_timeout = 0; @@ -21,7 +21,142 @@ SET default_tablespace = ''; SET default_table_access_method = heap; -- --- Name: scimag; Type: TABLE; Schema: public; Owner: - +-- Name: scitech; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.scitech ( + id bigint DEFAULT nextval('public.documents_id_seq'::regclass) NOT NULL, + cu text, + cu_suf character varying(1), + description text, + doi character varying(512), + edition character varying(64), + extension character varying(8), + fiction_id bigint, + filesize bigint, + is_deleted boolean DEFAULT false NOT NULL, + isbns text[], + language text, + libgen_id bigint, + meta_language text, + md5 uuid NOT NULL, + pages integer, + series text, + tags text[], + title text, + updated_at integer DEFAULT date_part('epoch'::text, now()) NOT NULL, + original_id bigint, + volume text, + authors text[], + issued_at bigint, + ipfs_multihashes text[], + created_at integer DEFAULT date_part('epoch'::text, now()) NOT NULL, + periodical text +); + + +ALTER TABLE public.scitech OWNER TO postgres; + +-- +-- Name: scitech_doi_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE UNIQUE INDEX scitech_doi_idx ON public.scitech USING btree (doi); + + +-- +-- Name: scitech_fiction_id_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE UNIQUE INDEX scitech_fiction_id_idx ON public.scitech USING btree (fiction_id); + + +-- +-- Name: scitech_isbn_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX scitech_isbn_idx ON public.scitech USING gin (isbns); + + +-- +-- Name: scitech_libgen_id_doi_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE UNIQUE INDEX scitech_libgen_id_doi_idx ON public.scitech USING btree (libgen_id, doi); + + +-- +-- Name: scitech_libgen_id_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE UNIQUE INDEX scitech_libgen_id_idx ON public.scitech USING btree (libgen_id); + + +-- +-- Name: scitech_md5_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX scitech_md5_idx ON public.scitech USING btree (md5); + + +-- +-- Name: scitech_original_id_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX scitech_original_id_idx ON public.scitech USING btree (original_id); + + +-- +-- Name: scitech_pkey; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE UNIQUE INDEX scitech_pkey ON public.scitech USING btree (id); + + +-- +-- Name: scitech set_timestamp_on_scitech; Type: TRIGGER; Schema: public; Owner: postgres +-- + +CREATE TRIGGER set_timestamp_on_scitech BEFORE UPDATE ON public.scitech FOR EACH ROW EXECUTE FUNCTION public.trigger_set_updated_at(); + + +-- +-- Name: TABLE scitech; Type: ACL; Schema: public; Owner: postgres +-- + +GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.scitech TO nexus_pipe; +GRANT SELECT,UPDATE ON TABLE public.scitech TO nexus_api; + + +-- +-- PostgreSQL database dump complete +-- + +root@postgres-master-0:/# pg_dump -t 'scimag' --schema-only nexus +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 14.1 (Debian 14.1-1.pgdg110+1) +-- Dumped by pg_dump version 14.1 (Debian 14.1-1.pgdg110+1) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: scimag; Type: TABLE; Schema: public; Owner: postgres -- CREATE TABLE public.scimag ( @@ -43,18 +178,24 @@ CREATE TABLE public.scimag ( updated_at integer DEFAULT date_part('epoch'::text, now()) NOT NULL, volume text, embedding bytea, - ref_by_count integer, + referenced_by_count integer, scimag_bulk_id integer, issns text[], authors text[], issued_at bigint, type text, - ipfs_multihashes text[] + ipfs_multihashes text[], + content text, + created_at integer DEFAULT date_part('epoch'::text, now()) NOT NULL, + page_rank real DEFAULT 0, + isbns text[] ); +ALTER TABLE public.scimag OWNER TO postgres; + -- --- Name: scimag scimag_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- Name: scimag scimag_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres -- ALTER TABLE ONLY public.scimag @@ -62,26 +203,34 @@ ALTER TABLE ONLY public.scimag -- --- Name: scimag_doi_idx; Type: INDEX; Schema: public; Owner: - +-- Name: scimag_doi_idx; Type: INDEX; Schema: public; Owner: postgres -- CREATE UNIQUE INDEX scimag_doi_idx ON public.scimag USING btree (doi); -- --- Name: scimag_md5_idx; Type: INDEX; Schema: public; Owner: - +-- Name: scimag_md5_idx; Type: INDEX; Schema: public; Owner: postgres -- CREATE INDEX scimag_md5_idx ON public.scimag USING btree (md5); -- --- Name: scimag set_timestamp_on_scimag; Type: TRIGGER; Schema: public; Owner: - +-- Name: scimag set_timestamp_on_scimag; Type: TRIGGER; Schema: public; Owner: postgres -- CREATE TRIGGER set_timestamp_on_scimag BEFORE UPDATE ON public.scimag FOR EACH ROW EXECUTE FUNCTION public.trigger_set_updated_at(); -- --- PostgreSQL database dump complete +-- Name: TABLE scimag; Type: ACL; Schema: public; Owner: postgres -- + +GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.scimag TO nexus_pipe; +GRANT SELECT,UPDATE ON TABLE public.scimag TO nexus_api; + + +-- +-- PostgreSQL database dump complete +-- \ No newline at end of file diff --git a/postgres/sql/scitech.sql b/postgres/sql/scitech.sql index 6280ab3..193a83b 100644 --- a/postgres/sql/scitech.sql +++ b/postgres/sql/scitech.sql @@ -2,8 +2,8 @@ -- PostgreSQL database dump -- --- Dumped from database version 13.2 (Debian 13.2-1.pgdg100+1) --- Dumped by pg_dump version 13.2 (Debian 13.2-1.pgdg100+1) +-- Dumped from database version 14.1 (Debian 14.1-1.pgdg110+1) +-- Dumped by pg_dump version 14.1 (Debian 14.1-1.pgdg110+1) SET statement_timeout = 0; SET lock_timeout = 0; @@ -21,7 +21,7 @@ SET default_tablespace = ''; SET default_table_access_method = heap; -- --- Name: scitech; Type: TABLE; Schema: public; Owner: - +-- Name: scitech; Type: TABLE; Schema: public; Owner: postgres -- CREATE TABLE public.scitech ( @@ -49,74 +49,85 @@ CREATE TABLE public.scitech ( volume text, authors text[], issued_at bigint, - ipfs_multihashes text[] + ipfs_multihashes text[], + created_at integer DEFAULT date_part('epoch'::text, now()) NOT NULL, + periodical text ); --- --- Name: scitech scitech_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.scitech - ADD CONSTRAINT scitech_pkey PRIMARY KEY (id); - +ALTER TABLE public.scitech OWNER TO postgres; -- --- Name: scitech_doi_idx; Type: INDEX; Schema: public; Owner: - +-- Name: scitech_doi_idx; Type: INDEX; Schema: public; Owner: postgres -- CREATE UNIQUE INDEX scitech_doi_idx ON public.scitech USING btree (doi); -- --- Name: scitech_fiction_id_idx; Type: INDEX; Schema: public; Owner: - +-- Name: scitech_fiction_id_idx; Type: INDEX; Schema: public; Owner: postgres -- CREATE UNIQUE INDEX scitech_fiction_id_idx ON public.scitech USING btree (fiction_id); -- --- Name: scitech_isbn_idx; Type: INDEX; Schema: public; Owner: - +-- Name: scitech_isbn_idx; Type: INDEX; Schema: public; Owner: postgres -- CREATE INDEX scitech_isbn_idx ON public.scitech USING gin (isbns); -- --- Name: scitech_libgen_id_doi_idx; Type: INDEX; Schema: public; Owner: - +-- Name: scitech_libgen_id_doi_idx; Type: INDEX; Schema: public; Owner: postgres -- CREATE UNIQUE INDEX scitech_libgen_id_doi_idx ON public.scitech USING btree (libgen_id, doi); -- --- Name: scitech_libgen_id_idx; Type: INDEX; Schema: public; Owner: - +-- Name: scitech_libgen_id_idx; Type: INDEX; Schema: public; Owner: postgres -- CREATE UNIQUE INDEX scitech_libgen_id_idx ON public.scitech USING btree (libgen_id); -- --- Name: scitech_md5_idx; Type: INDEX; Schema: public; Owner: - +-- Name: scitech_md5_idx; Type: INDEX; Schema: public; Owner: postgres -- CREATE INDEX scitech_md5_idx ON public.scitech USING btree (md5); -- --- Name: scitech_original_id_idx; Type: INDEX; Schema: public; Owner: - +-- Name: scitech_original_id_idx; Type: INDEX; Schema: public; Owner: postgres -- CREATE INDEX scitech_original_id_idx ON public.scitech USING btree (original_id); -- --- Name: scitech set_timestamp_on_scitech; Type: TRIGGER; Schema: public; Owner: - +-- Name: scitech_pkey; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE UNIQUE INDEX scitech_pkey ON public.scitech USING btree (id); + + +-- +-- Name: scitech set_timestamp_on_scitech; Type: TRIGGER; Schema: public; Owner: postgres -- CREATE TRIGGER set_timestamp_on_scitech BEFORE UPDATE ON public.scitech FOR EACH ROW EXECUTE FUNCTION public.trigger_set_updated_at(); -- --- PostgreSQL database dump complete +-- Name: TABLE scitech; Type: ACL; Schema: public; Owner: postgres -- + +GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.scitech TO nexus_pipe; +GRANT SELECT,UPDATE ON TABLE public.scitech TO nexus_api; + + +-- +-- PostgreSQL database dump complete +-- \ No newline at end of file diff --git a/postgres/sql/series.sql b/postgres/sql/series.sql new file mode 100644 index 0000000..5ef4393 --- /dev/null +++ b/postgres/sql/series.sql @@ -0,0 +1,87 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 14.1 (Debian 14.1-1.pgdg110+1) +-- Dumped by pg_dump version 14.1 (Debian 14.1-1.pgdg110+1) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: series; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.series ( + id bigint, + issns text[], + name text +); + + +ALTER TABLE public.series OWNER TO postgres; + +-- +-- Name: series_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.series_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.series_id_seq OWNER TO postgres; + +-- +-- Name: series_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.series_id_seq OWNED BY public.series.id; + + +-- +-- Name: series id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.series ALTER COLUMN id SET DEFAULT nextval('public.series_id_seq'::regclass); + + +-- +-- Name: series_id_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE UNIQUE INDEX series_id_idx ON public.series USING btree (id); + + +-- +-- Name: series_issns_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX series_issns_idx ON public.series USING gin (issns); + + +-- +-- Name: TABLE series; Type: ACL; Schema: public; Owner: postgres +-- + +GRANT SELECT ON TABLE public.series TO nexus_api; + + +-- +-- PostgreSQL database dump complete +-- diff --git a/postgres/sql/sharience.sql b/postgres/sql/sharience.sql index 0874161..c064d79 100644 --- a/postgres/sql/sharience.sql +++ b/postgres/sql/sharience.sql @@ -28,6 +28,7 @@ CREATE TABLE public.sharience ( id bigint DEFAULT nextval('public.documents_id_seq'::regclass) NOT NULL, parent_id bigint NOT NULL, uploader_id bigint NOT NULL, + created_at integer DEFAULT date_part('epoch'::text, now()) NOT NULL, updated_at integer DEFAULT date_part('epoch'::text, now()) NOT NULL, md5 uuid, filesize integer, diff --git a/postgres/sql/subscriptions.sql b/postgres/sql/subscriptions.sql new file mode 100644 index 0000000..721deb7 --- /dev/null +++ b/postgres/sql/subscriptions.sql @@ -0,0 +1,177 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 14.1 (Debian 14.1-1.pgdg110+1) +-- Dumped by pg_dump version 14.1 (Debian 14.1-1.pgdg110+1) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: series; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.series ( + id bigint, + issns text[], + name text +); + + +ALTER TABLE public.series OWNER TO postgres; + +-- +-- Name: series_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE public.series_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.series_id_seq OWNER TO postgres; + +-- +-- Name: series_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE public.series_id_seq OWNED BY public.series.id; + + +-- +-- Name: series id; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.series ALTER COLUMN id SET DEFAULT nextval('public.series_id_seq'::regclass); + + +-- +-- Name: series_id_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE UNIQUE INDEX series_id_idx ON public.series USING btree (id); + + +-- +-- Name: series_issns_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX series_issns_idx ON public.series USING gin (issns); + + +-- +-- Name: TABLE series; Type: ACL; Schema: public; Owner: postgres +-- + +GRANT SELECT ON TABLE public.series TO nexus_api; + + +-- +-- PostgreSQL database dump complete +-- + +root@postgres-master-0:/# pg_dump -t 'subscriptions' --schema-only idm +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 14.1 (Debian 14.1-1.pgdg110+1) +-- Dumped by pg_dump version 14.1 (Debian 14.1-1.pgdg110+1) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: subscriptions; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.subscriptions ( + id bigint DEFAULT nextval('public.subscriptions_id_seq'::regclass) NOT NULL, + chat_id bigint NOT NULL, + subscription_query text NOT NULL, + schedule text NOT NULL, + is_oneshot boolean DEFAULT false NOT NULL, + is_downloadable boolean DEFAULT false NOT NULL, + created_at integer DEFAULT date_part('epoch'::text, now()) NOT NULL, + updated_at integer DEFAULT date_part('epoch'::text, now()) NOT NULL, + valid_until integer DEFAULT 2147483647 NOT NULL, + next_check_at integer NOT NULL, + subscription_type integer DEFAULT 0 NOT NULL +); + + +ALTER TABLE public.subscriptions OWNER TO postgres; + +-- +-- Name: subscriptions_chat_id_subscription_query_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE UNIQUE INDEX subscriptions_chat_id_subscription_query_idx ON public.subscriptions USING btree (chat_id, subscription_query); + + +-- +-- Name: subscriptions_id_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE UNIQUE INDEX subscriptions_id_idx ON public.subscriptions USING btree (id); + + +-- +-- Name: subscriptions_next_check_at_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX subscriptions_next_check_at_idx ON public.subscriptions USING btree (next_check_at); + + +-- +-- Name: subscriptions_subscription_query_idx; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX subscriptions_subscription_query_idx ON public.subscriptions USING btree (subscription_query); + + +-- +-- Name: subscriptions set_timestamp_on_subscriptions; Type: TRIGGER; Schema: public; Owner: postgres +-- + +CREATE TRIGGER set_timestamp_on_subscriptions BEFORE UPDATE ON public.subscriptions FOR EACH ROW EXECUTE FUNCTION public.trigger_set_updated_at(); + + +-- +-- Name: TABLE subscriptions; Type: ACL; Schema: public; Owner: postgres +-- + +GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.subscriptions TO idm_api; + + +-- +-- PostgreSQL database dump complete +-- \ No newline at end of file diff --git a/repository/install-packages.sh b/repository/install-packages.sh index 72eb9d9..d7aa364 100755 --- a/repository/install-packages.sh +++ b/repository/install-packages.sh @@ -8,10 +8,10 @@ if [[ "$OSTYPE" == "linux-gnu" ]]; then wget https://github.com/bazelbuild/bazelisk/releases/download/v1.11.0/bazelisk-linux-amd64 -O /usr/bin/bazel chmod +x /usr/bin/bazel apt-get update - apt-get -y install llvm make openjdk-17-jdk python3.9 python3.9-venv python3.9-dev python-dev \ + apt-get -y install llvm make python3.10 python3.10-venv python3.10-dev python-dev \ libsqlite3-dev nodejs libev-dev libev-perl python3-distutils wireguard yarn elif [[ "$OSTYPE" == "darwin"* ]]; then - required_packages='bazel coreutils ibazel libev libomp llvm protobuf python3.9 sqlite3' + required_packages='bazel coreutils ibazel libev libomp llvm protobuf python3.10 sqlite3' brew tap bazelbuild/tap for required_package in $required_packages; do if brew ls --versions $required_package > /dev/null; then diff --git a/rules/java/BUILD.bazel b/rules/java/BUILD.bazel deleted file mode 100644 index e69de29..0000000 diff --git a/rules/java/artifacts.bzl b/rules/java/artifacts.bzl deleted file mode 100644 index d0042ff..0000000 --- a/rules/java/artifacts.bzl +++ /dev/null @@ -1,26 +0,0 @@ -""" -Java dependencies -""" - -load("@rules_jvm_external//:defs.bzl", "maven_install") - -def maven_fetch_remote_artifacts(): - """ - Fetch maven artifacts - """ - maven_install( - artifacts = [ - "com.fasterxml.jackson.core:jackson-core:2.11.2", - "com.fasterxml.jackson.core:jackson-databind:2.11.2", - "org.apache.pdfbox:pdfbox:2.0.23", - "org.apache.kafka:kafka_2.13:2.6.0", - "org.apache.kafka:kafka-clients:2.6.0", - "org.grobid:grobid-core:0.6.1", - "org.yaml:snakeyaml:1.26", - ], - repositories = [ - "https://maven.google.com", - "https://repo1.maven.org/maven2", - "https://dl.bintray.com/rookies/maven", - ], - ) diff --git a/rules/misc/setup.bzl b/rules/misc/setup.bzl index bcd9b80..559b9f9 100644 --- a/rules/misc/setup.bzl +++ b/rules/misc/setup.bzl @@ -2,7 +2,7 @@ Setup various packages """ -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") def rules_misc_setup_internal(): """ @@ -18,60 +18,14 @@ def rules_misc_setup_internal(): http_archive( name = "com_github_grpc_grpc", - strip_prefix = "grpc-1.39.0", + strip_prefix = "grpc-1.46.3", urls = [ - "https://github.com/grpc/grpc/archive/v1.39.0.tar.gz", + "https://github.com/grpc/grpc/archive/v1.46.3.tar.gz", ], ) http_archive( name = "com_google_protobuf", - strip_prefix = "protobuf-3.17.3", - url = "https://github.com/protocolbuffers/protobuf/archive/v3.17.3.tar.gz", - ) - - http_archive( - name = "ghostscript", - build_file_content = 'exports_files(["gs-952-linux-x86_64"])', - strip_prefix = "ghostscript-9.52-linux-x86_64", - sha256 = "3c235f005d31a0747617d3628b2313396ececda9669dbceba9ebda531b903578", - urls = ["https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs952/ghostscript-9.52-linux-x86_64.tgz"], - ) - - http_archive( - name = "lz4", - sha256 = "0b8bf249fd54a0b974de1a50f0a13ba809a78fd48f90c465c240ee28a9e4784d", - build_file = "@//rules/misc:lz4.BUILD", - strip_prefix = "lz4-1.9.2/lib", - urls = ["https://github.com/lz4/lz4/archive/v1.9.2.zip"], - ) - - http_file( - name = "mc", - downloaded_file_path = "mc", - sha256 = "e011de80e5a5cf23aa54207f4dbe68edd8d39e71783683ca9befc0345c9cf69d", - urls = ["https://dl.min.io/client/mc/release/linux-amd64/archive/mc.RELEASE.2020-05-16T01-44-37Z"], - ) - - http_file( - name = "pdfbox", - downloaded_file_path = "pdfbox.jar", - sha256 = "4485d9e6713f5b9c93824a0eb54e57717d3fd736244734c6276b65e17eab5cae", - urls = ["https://mirror.linux-ia64.org/apache/pdfbox/2.0.23/pdfbox-app-2.0.23.jar"], - ) - - http_archive( - name = "openssl", - sha256 = "9066c68c1aa8e8719af61cb82b88156ab07b3ad2a9ab1f874a8afb324583b1b6", - build_file = "@//rules/misc:openssl.BUILD", - strip_prefix = "openssl-OpenSSL_1_0_2m", - url = "https://github.com/openssl/openssl/archive/OpenSSL_1_0_2m.tar.gz", - ) - - http_archive( - name = "zlib", - sha256 = "629380c90a77b964d896ed37163f5c3a34f6e6d897311f1df2a7016355c45eff", - build_file = "@//rules/misc:zlib.BUILD", - strip_prefix = "zlib-1.2.11", - url = "https://github.com/madler/zlib/archive/v1.2.11.tar.gz", + strip_prefix = "protobuf-3.21.1", + url = "https://github.com/protocolbuffers/protobuf/archive/v3.21.1.tar.gz", ) diff --git a/rules/nodejs/.babelrc b/rules/nodejs/.babelrc deleted file mode 100644 index 3a280ba..0000000 --- a/rules/nodejs/.babelrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "presets": [ - ["env", { - "modules": false, - "targets": { - "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] - } - }], - "stage-2" - ], - "plugins": ["transform-vue-jsx", "transform-runtime"] -} diff --git a/rules/nodejs/BUILD.bazel b/rules/nodejs/BUILD.bazel deleted file mode 100644 index c0b55b7..0000000 --- a/rules/nodejs/BUILD.bazel +++ /dev/null @@ -1,5 +0,0 @@ -exports_files([ - "package.json", - "yarn.lock", - ".babelrc", -]) diff --git a/rules/nodejs/common.bzl b/rules/nodejs/common.bzl deleted file mode 100644 index 36dc3d7..0000000 --- a/rules/nodejs/common.bzl +++ /dev/null @@ -1,42 +0,0 @@ -""" -Common tools for NodeJS -""" - -load("@build_bazel_rules_nodejs//:providers.bzl", "NpmPackageInfo") - -def get_transitive_depsets(data): - """ - It requires files from dependencies - - Args: - data: data - Returns: - Separate depsets for native and NpmPackageInfo deps - """ - depsets = [] - node_modules_depsets = [] - - for d in data: - if NpmPackageInfo in d: - node_modules_depsets.append(d[NpmPackageInfo].sources) - else: - depsets.append(d[DefaultInfo].files) - - return depsets, node_modules_depsets - -def _js_library_impl(ctx): - depsets, node_modules_depsets = get_transitive_depsets(ctx.attr.data) - trans_srcs = depset(ctx.files.srcs, transitive = depsets + node_modules_depsets) - return [ - DefaultInfo( - files = trans_srcs, - ), - ] - -js_library = rule( - implementation = _js_library_impl, - attrs = { - "srcs": attr.label_list(allow_files = True), - "data": attr.label_list(), - }, -) diff --git a/rules/nodejs/package.json b/rules/nodejs/package.json deleted file mode 100644 index 4e95401..0000000 --- a/rules/nodejs/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "hyperboria", - "version": "1.0.0", - "private": true, - "scripts": { - "nuxt": "nuxt" - }, - "dependencies": { - "@babel/eslint-parser": "^7.16.3", - "@grpc/grpc-js": "^1.4.4", - "@types/node": "^16.11.7", - "axios": "^0.24.0", - "bootstrap-vue-3": "^0.0.5", - "dateformat": "^5.0.2", - "eslint": "^8.2.0", - "eslint-config-standard": "^16.0.3", - "eslint-plugin-import": "^2.25.3", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^5.1.1", - "eslint-plugin-vue": "^8.0.3", - "google-protobuf": "^3.19.1", - "grpc-web": "^1.3.0", - "lodash": "^4.17.21", - "nuxt3": "^3.0.0-27277498.850ef69", - "pug": "^3.0.2", - "pug-plain-loader": "^1.1.0", - "sass": "^1.43.4", - "sass-lint": "^1.13.1", - "sass-loader": "^12.3.0", - "ts-protoc-gen": "^0.15.0", - "v8-compile-cache": "^2.3.0", - "vue": "^3.2.21", - "webpack": "^5.64.0" - }, - "devDependencies": { - "@bazel/bazelisk": "latest", - "@bazel/buildifier": "latest", - "@bazel/ibazel": "latest" - }, - "engines": { - "node": "^14" - }, - "browserslist": [ - "> 1%", - "last 2 versions", - "not ie <= 8" - ] -} diff --git a/rules/nodejs/yarn.lock b/rules/nodejs/yarn.lock deleted file mode 100644 index cdda9e0..0000000 --- a/rules/nodejs/yarn.lock +++ /dev/null @@ -1,6964 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" - integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== - dependencies: - "@babel/highlight" "^7.16.0" - -"@babel/compat-data@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.0.tgz#ea269d7f78deb3a7826c39a4048eecda541ebdaa" - integrity sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew== - -"@babel/core@^7.15.5", "@babel/core@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4" - integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.0" - "@babel/helper-compilation-targets" "^7.16.0" - "@babel/helper-module-transforms" "^7.16.0" - "@babel/helpers" "^7.16.0" - "@babel/parser" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@babel/types" "^7.16.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/eslint-parser@^7.16.3": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.16.3.tgz#2a6b1702f3f5aea48e00cea5a5bcc241c437e459" - integrity sha512-iB4ElZT0jAt7PKVaeVulOECdGe6UnmA/O0P9jlF5g5GBOwDVbna8AXhHRu4s27xQf6OkveyA8iTDv1jHdDejgQ== - dependencies: - eslint-scope "^5.1.1" - eslint-visitor-keys "^2.1.0" - semver "^6.3.0" - -"@babel/generator@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2" - integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew== - dependencies: - "@babel/types" "^7.16.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d" - integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-compilation-targets@^7.16.0": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0" - integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA== - dependencies: - "@babel/compat-data" "^7.16.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.17.5" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz#090d4d166b342a03a9fec37ef4fd5aeb9c7c6a4b" - integrity sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-member-expression-to-functions" "^7.16.0" - "@babel/helper-optimise-call-expression" "^7.16.0" - "@babel/helper-replace-supers" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - -"@babel/helper-function-name@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" - integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== - dependencies: - "@babel/helper-get-function-arity" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/helper-get-function-arity@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa" - integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-hoist-variables@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a" - integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-member-expression-to-functions@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz#29287040efd197c77636ef75188e81da8bccd5a4" - integrity sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" - integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-module-transforms@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz#1c82a8dd4cb34577502ebd2909699b194c3e9bb5" - integrity sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA== - dependencies: - "@babel/helper-module-imports" "^7.16.0" - "@babel/helper-replace-supers" "^7.16.0" - "@babel/helper-simple-access" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - "@babel/helper-validator-identifier" "^7.15.7" - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/helper-optimise-call-expression@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338" - integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== - -"@babel/helper-replace-supers@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz#73055e8d3cf9bcba8ddb55cad93fedc860f68f17" - integrity sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.16.0" - "@babel/helper-optimise-call-expression" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/helper-simple-access@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517" - integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-split-export-declaration@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438" - integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/helpers@^7.16.0": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.3.tgz#27fc64f40b996e7074dc73128c3e5c3e7f55c43c" - integrity sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w== - dependencies: - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.3" - "@babel/types" "^7.16.0" - -"@babel/highlight@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" - integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.15.0", "@babel/parser@^7.16.0", "@babel/parser@^7.16.3", "@babel/parser@^7.6.0", "@babel/parser@^7.9.6": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.3.tgz#271bafcb811080905a119222edbc17909c82261d" - integrity sha512-dcNwU1O4sx57ClvLBVFbEgx0UZWfd0JQX5X6fxFRCLHelFBGXFfSz6Y0FAq2PEwUqlqLkdVjVr4VASEOuUnLJw== - -"@babel/plugin-syntax-import-meta@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz#f9624394317365a9a88c82358d3f8471154698f1" - integrity sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz#2feeb13d9334cc582ea9111d3506f773174179bb" - integrity sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-typescript@^7.15.4": - version "7.16.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz#cc0670b2822b0338355bc1b3d2246a42b8166409" - integrity sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-typescript" "^7.16.0" - -"@babel/template@^7.0.0", "@babel/template@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" - integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/parser" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.16.0", "@babel/traverse@^7.16.3": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787" - integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.0" - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-hoist-variables" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - "@babel/parser" "^7.16.3" - "@babel/types" "^7.16.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.6.1", "@babel/types@^7.9.6": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" - integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - to-fast-properties "^2.0.0" - -"@bazel/bazelisk@latest": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.10.1.tgz#46236a43ad58e310c55247f866da0dc6083c3d8b" - integrity sha512-IHszNzBO2UrUy6YtsSAsZtnU6I6qpzXGkWdEvGoMxLgJnDsEnsIYniDCUjvjU1KAP+A03eepmCHlyFcRHMSxRA== - -"@bazel/buildifier@latest": - version "4.2.3" - resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-4.2.3.tgz#2c6e54faa12e31b75051834cf1cfa68c71678262" - integrity sha512-19GqPhxlyh376mJT6kvvNAJbRCjDj4WFjqy+sT2LAMt5THMGSES8+lwde5J1jwpud/mqrNUIRjEzVZR5A/6+BA== - -"@bazel/ibazel@latest": - version "0.15.10" - resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.15.10.tgz#cf0cff1aec6d8e7bb23e1fc618d09fbd39b7a13f" - integrity sha512-0v+OwCQ6fsGFa50r6MXWbUkSGuWOoZ22K4pMSdtWiL5LKFIE4kfmMmtQS+M7/ICNwk2EIYob+NRreyi/DGUz5A== - -"@cloudflare/kv-asset-handler@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.1.3.tgz#3eaaf962b16c48a7189db5d5ac1c4dca4e2ed1a0" - integrity sha512-FNcunDuTmEfQTLRLtA6zz+buIXUHj1soPvSWzzQFBC+n2lsy+CGf/NIrR3SEPCmsVNQj70/Jx2lViCpq+09YpQ== - dependencies: - mime "^2.5.2" - -"@eslint/eslintrc@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.4.tgz#dfe0ff7ba270848d10c5add0715e04964c034b31" - integrity sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.0.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@grpc/grpc-js@^1.4.4": - version "1.4.4" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.4.4.tgz#59336f13d77bc446bbdf2161564a32639288dc5b" - integrity sha512-a6222b7Dl6fIlMgzVl7e+NiRoLiZFbpcwvBH2Oli56Bn7W4/3Ld+86hK4ffPn5rx2DlDidmIcvIJiOQXyhv9gA== - dependencies: - "@grpc/proto-loader" "^0.6.4" - "@types/node" ">=12.12.47" - -"@grpc/proto-loader@^0.6.4": - version "0.6.6" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.6.tgz#d8e51ea808ec5fa54d9defbecbf859336fb2da71" - integrity sha512-cdMaPZ8AiFz6ua6PUbP+LKbhwJbFXnrQ/mlnKGUyzDUZ3wp7vPLksnmLCBX6SHgSmjX7CbNVNLFYD5GmmjO4GQ== - dependencies: - "@types/long" "^4.0.1" - lodash.camelcase "^4.3.0" - long "^4.0.0" - protobufjs "^6.10.0" - yargs "^16.1.1" - -"@humanwhocodes/config-array@^0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.6.0.tgz#b5621fdb3b32309d2d16575456cbc277fa8f021a" - integrity sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A== - dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@mapbox/node-pre-gyp@^1.0.5": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.6.tgz#f859d601a210537e27530f363028cde56e0cf962" - integrity sha512-qK1ECws8UxuPqOA8F5LFD90vyVU33W7N3hGfgsOVfrJaRVc8McC3JClTDHpeSbL9CBrOHly/4GsNPAvIgNZE+g== - dependencies: - detect-libc "^1.0.3" - https-proxy-agent "^5.0.0" - make-dir "^3.1.0" - node-fetch "^2.6.5" - nopt "^5.0.0" - npmlog "^5.0.1" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.11" - -"@netlify/functions@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@netlify/functions/-/functions-0.8.0.tgz#0c0a3d5a8efdc6aa469f75acb9df556a317cff1f" - integrity sha512-Ew4Q2ofSBa5aeVOvrHNNEkfCJNmjTkEIr+WkyveOZrcnKQGH/sTtPqVb6HP51NJHNhczBkd3S3KdXfrCB0q0Ig== - dependencies: - is-promise "^4.0.0" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@nuxt/design@0.1.5", "@nuxt/design@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@nuxt/design/-/design-0.1.5.tgz#8d63a5a8e94c070ca7ef504327577888f43fb0ce" - integrity sha512-s1meTL1zTrgl1Go/Bhy3GdaYGmZqsUY99xo+e4t5AuLY+9pviTfOUzziB7097NomKHUdieb+J8gH1wcsY65B6A== - -"@nuxt/devalue@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@nuxt/devalue/-/devalue-2.0.0.tgz#c7bd7e9a516514e612d5d2e511ffc399e0eac322" - integrity sha512-YBI/6o2EBz02tdEJRBK8xkt3zvOFOWlLBf7WKYGBsSYSRtjjgrqPe2skp6VLLmKx5WbHHDNcW+6oACaurxGzeA== - -"@nuxt/friendly-errors-webpack-plugin@^2.5.2": - version "2.5.2" - resolved "https://registry.yarnpkg.com/@nuxt/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-2.5.2.tgz#982a43ee2da61611f7396439e57038392d3944d5" - integrity sha512-LLc+90lnxVbpKkMqk5z1EWpXoODhc6gRkqqXJCInJwF5xabHAE7biFvbULfvTRmtaTzAaP8IV4HQDLUgeAUTTw== - dependencies: - chalk "^2.3.2" - consola "^2.6.0" - error-stack-parser "^2.0.0" - string-width "^4.2.3" - -"@nuxt/kit@npm:@nuxt/kit-edge@3.0.0-27277498.850ef69": - version "3.0.0-27277498.850ef69" - resolved "https://registry.yarnpkg.com/@nuxt/kit-edge/-/kit-edge-3.0.0-27277498.850ef69.tgz#3c90bb72a18127820c23f3d428ccdee5a60ef549" - integrity sha512-nlRbNf0wZwIuDzUs20AE9O4bE1rcIv3yaA/oYFhqUlXumiEDqHPmiuDAL5Trbe+E3Ut7EmZxgrcwUgQ0zQ8fuQ== - dependencies: - consola "^2.15.3" - create-require "^1.1.1" - defu "^5.0.0" - dotenv "^10.0.0" - globby "^11.0.4" - hash-sum "^2.0.0" - hookable "^5.0.0" - jiti "^1.12.9" - lodash.template "^4.5.0" - mlly "^0.3.13" - pathe "^0.2.0" - pkg-types "^0.3.1" - rc9 "^1.2.0" - scule "^0.2.1" - semver "^7.3.5" - std-env "^3.0.1" - ufo "^0.7.9" - unctx "^1.0.2" - untyped "^0.2.12" - -"@nuxt/nitro@npm:@nuxt/nitro-edge@3.0.0-27277498.850ef69": - version "3.0.0-27277498.850ef69" - resolved "https://registry.yarnpkg.com/@nuxt/nitro-edge/-/nitro-edge-3.0.0-27277498.850ef69.tgz#6301c5737cd60e6849a6076276a85df14634d765" - integrity sha512-1ojLhD8Y0rQuWL43cUC3Nmu8u/Z+oRVoPibFN1nuXqderyJVk0aUdiIy2mZuh4PXTi7lZgOic5luUkwtCIYTEw== - dependencies: - "@cloudflare/kv-asset-handler" "^0.1.3" - "@netlify/functions" "^0.8.0" - "@nuxt/design" "0.1.5" - "@nuxt/devalue" "^2.0.0" - "@nuxt/kit" "npm:@nuxt/kit-edge@3.0.0-27277498.850ef69" - "@rollup/plugin-alias" "^3.1.8" - "@rollup/plugin-commonjs" "^21.0.1" - "@rollup/plugin-inject" "^4.0.3" - "@rollup/plugin-json" "^4.1.0" - "@rollup/plugin-node-resolve" "^13.0.6" - "@rollup/plugin-replace" "^3.0.0" - "@rollup/plugin-virtual" "^2.0.3" - "@rollup/plugin-wasm" "^5.1.2" - "@rollup/pluginutils" "^4.1.1" - "@types/jsdom" "^16.2.13" - "@vercel/nft" "^0.17.0" - archiver "^5.3.0" - chalk "^4.1.2" - chokidar "^3.5.2" - connect "^3.7.0" - consola "^2.15.3" - defu "^5.0.0" - destr "^1.1.0" - dot-prop "^6.0.1" - esbuild "^0.13.13" - etag "^1.8.1" - fs-extra "^10.0.0" - globby "^11.0.4" - gzip-size "^6.0.0" - h3 "^0.3.3" - hasha "^5.2.2" - hookable "^5.0.0" - http-proxy "^1.18.1" - is-primitive "^3.0.1" - jiti "^1.12.9" - listhen "^0.2.5" - mime "^3.0.0" - mlly "^0.3.13" - node-fetch "^3.1.0" - ohmyfetch "^0.4.6" - ora "^6.0.1" - p-debounce "^4.0.0" - pathe "^0.2.0" - pkg-types "^0.3.1" - pretty-bytes "^5.6.0" - rollup "^2.59.0" - rollup-plugin-terser "^7.0.2" - rollup-plugin-visualizer "^5.5.2" - serve-placeholder "^1.2.4" - serve-static "^1.14.1" - std-env "^3.0.1" - table "^6.7.3" - ufo "^0.7.9" - unenv "^0.4.1" - unstorage "^0.3.2" - vue-bundle-renderer "^0.3.2" - vue-server-renderer "^2.6.14" - -"@nuxt/vite-builder@npm:@nuxt/vite-builder-edge@3.0.0-27277498.850ef69": - version "3.0.0-27277498.850ef69" - resolved "https://registry.yarnpkg.com/@nuxt/vite-builder-edge/-/vite-builder-edge-3.0.0-27277498.850ef69.tgz#0b288e4167c0fbfb7bc2365f59153ce43219f2a5" - integrity sha512-UN+2T595ibP4DJElprnBw/5rRZ/pb40wB68flDXeEiq//TKUbgybPTkOjU6zoO8GvPxGBFuEd7h3BQMLpNmMZQ== - dependencies: - "@nuxt/kit" "npm:@nuxt/kit-edge@3.0.0-27277498.850ef69" - "@vitejs/plugin-vue" "^1.9.4" - "@vitejs/plugin-vue-jsx" "^1.2.0" - autoprefixer "^10.4.0" - chokidar "^3.5.2" - consola "^2.15.3" - defu "^5.0.0" - esbuild "^0.13.13" - externality "^0.1.5" - fs-extra "^10.0.0" - magic-string "^0.25.7" - mlly "^0.3.13" - p-debounce "^4.0.0" - pathe "^0.2.0" - postcss-import "^14.0.2" - postcss-import-resolver "^2.0.0" - postcss-url "^10.1.3" - rollup-plugin-visualizer "^5.5.2" - ufo "^0.7.9" - vite "^2.6.14" - -"@nuxt/webpack-builder@npm:@nuxt/webpack-builder-edge@3.0.0-27277498.850ef69": - version "3.0.0-27277498.850ef69" - resolved "https://registry.yarnpkg.com/@nuxt/webpack-builder-edge/-/webpack-builder-edge-3.0.0-27277498.850ef69.tgz#c4880b83dc8b71fa1ece06394ab17b122e2b4978" - integrity sha512-mxQSfqApDojUea11MZWvi1viRGZbKCKFGA2R1ijaWYsrZ2cqrF40r7+KQEakdyo1YWfzenlbrLhO0yqzzLptKA== - dependencies: - "@babel/core" "^7.16.0" - "@nuxt/friendly-errors-webpack-plugin" "^2.5.2" - "@nuxt/kit" "npm:@nuxt/kit-edge@3.0.0-27277498.850ef69" - "@vue/babel-preset-jsx" "^1.2.4" - autoprefixer "^10.4.0" - babel-loader "^8.2.3" - consola "^2.15.3" - css-loader "^6.5.1" - css-minimizer-webpack-plugin "^3.1.3" - cssnano "^5.0.10" - esbuild-loader "^2.16.0" - file-loader "^6.2.0" - fs-extra "^10.0.0" - glob "^7.2.0" - hash-sum "^2.0.0" - lodash-es "^4.17.21" - memfs "^3.3.0" - mini-css-extract-plugin "^2.4.4" - mlly "^0.3.13" - pathe "^0.2.0" - pify "^5.0.0" - postcss "^8.3.11" - postcss-import "^14.0.2" - postcss-import-resolver "^2.0.0" - postcss-loader "^6.2.0" - postcss-url "^10.1.3" - style-resources-loader "^1.4.1" - time-fix-plugin "^2.0.7" - ufo "^0.7.9" - url-loader "^4.1.1" - vue-loader "^16.8.3" - vue-style-loader "^4.1.3" - webpack "^5.63.0" - webpack-bundle-analyzer "^4.5.0" - webpack-dev-middleware "^5.2.1" - webpack-hot-middleware "^2.25.1" - webpack-virtual-modules "^0.4.3" - webpackbar "^5.0.2" - -"@polka/url@^1.0.0-next.20": - version "1.0.0-next.21" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" - integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= - -"@rollup/plugin-alias@^3.1.8": - version "3.1.8" - resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.8.tgz#645fd84659e08d3d1b059408fcdf69c1dd435a6b" - integrity sha512-tf7HeSs/06wO2LPqKNY3Ckbvy0JRe7Jyn98bXnt/gfrxbe+AJucoNJlsEVi9sdgbQtXemjbakCpO/76JVgnHpA== - dependencies: - slash "^3.0.0" - -"@rollup/plugin-commonjs@^21.0.1": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz#1e57c81ae1518e4df0954d681c642e7d94588fee" - integrity sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - commondir "^1.0.1" - estree-walker "^2.0.1" - glob "^7.1.6" - is-reference "^1.2.1" - magic-string "^0.25.7" - resolve "^1.17.0" - -"@rollup/plugin-inject@^4.0.3": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-4.0.3.tgz#6f04ebc14790a8bf892286fe9b8c0eb1ddf4d5ce" - integrity sha512-lzMXmj0LZjd67MI+M8H9dk/oCxR0TYqYAdZ6ZOejWQLSUtud+FUPu4NCMAO8KyWWAalFo8ean7yFHCMvCNsCZw== - dependencies: - "@rollup/pluginutils" "^3.1.0" - estree-walker "^2.0.1" - magic-string "^0.25.7" - -"@rollup/plugin-json@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" - integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== - dependencies: - "@rollup/pluginutils" "^3.0.8" - -"@rollup/plugin-node-resolve@^13.0.6": - version "13.0.6" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz#29629070bb767567be8157f575cfa8f2b8e9ef77" - integrity sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.19.0" - -"@rollup/plugin-replace@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-3.0.0.tgz#3a4c9665d4e7a4ce2c360cf021232784892f3fac" - integrity sha512-3c7JCbMuYXM4PbPWT4+m/4Y6U60SgsnDT/cCyAyUKwFHg7pTSfsSQzIpETha3a3ig6OdOKzZz87D9ZXIK3qsDg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - magic-string "^0.25.7" - -"@rollup/plugin-virtual@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-virtual/-/plugin-virtual-2.0.3.tgz#0afc88d75c1e1378ab290b8e9898d4edb5be0d74" - integrity sha512-pw6ziJcyjZtntQ//bkad9qXaBx665SgEL8C8KI5wO8G5iU5MPxvdWrQyVaAvjojGm9tJoS8M9Z/EEepbqieYmw== - -"@rollup/plugin-wasm@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-wasm/-/plugin-wasm-5.1.2.tgz#5ebd767a14eb7cc98f45aee817e3efbe15c944d8" - integrity sha512-eiOuMHBNY0EGTq3LCebg4IQ6/SOvKjmGetzqKajJWcbDQkrQZvHihZKKnBJYY7NuuvjNqCLdEViYr5aAZms63g== - -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@rollup/pluginutils@^4.1.1": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" - integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== - dependencies: - estree-walker "^2.0.1" - picomatch "^2.2.2" - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - -"@types/eslint-scope@^3.7.0": - version "3.7.1" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e" - integrity sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "7.28.2" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.2.tgz#0ff2947cdd305897c52d5372294e8c76f351db68" - integrity sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^0.0.50": - version "0.0.50" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" - integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/jsdom@^16.2.13": - version "16.2.13" - resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.13.tgz#126c8b7441b159d6234610a48de77b6066f1823f" - integrity sha512-8JQCjdeAidptSsOcRWk2iTm9wCcwn9l+kRG6k5bzUacrnm1ezV4forq0kWjUih/tumAeoG+OspOvQEbbRucBTw== - dependencies: - "@types/node" "*" - "@types/parse5" "*" - "@types/tough-cookie" "*" - -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - -"@types/long@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" - integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== - -"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@^16.11.7": - version "16.11.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.7.tgz#36820945061326978c42a01e56b61cd223dfdc42" - integrity sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/parse5@*": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.2.tgz#99f6b72d82e34cea03a4d8f2ed72114d909c1c61" - integrity sha512-+hQX+WyJAOne7Fh3zF5CxPemILIbuhNcqHHodzK9caYOLnC8pD5efmPleRnw0z++LfKUC/sVNMwk0Gap+B0baA== - -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - -"@types/tough-cookie@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" - integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg== - -"@vercel/nft@^0.17.0": - version "0.17.0" - resolved "https://registry.yarnpkg.com/@vercel/nft/-/nft-0.17.0.tgz#28851fefe42fae7a116dc5e23a0a9da29929a18b" - integrity sha512-dXz4RAODHpEPl1Yfzk1UfVpZfqhY9O80FdI9sF/Hw2bXWj5022U9Z46VpdNYe8pDluSuQv/JUo/ZP4/OcsfDRw== - dependencies: - "@mapbox/node-pre-gyp" "^1.0.5" - acorn "^8.3.0" - acorn-class-fields "^1.0.0" - acorn-private-class-elements "^1.0.0" - acorn-static-class-features "^1.0.0" - bindings "^1.4.0" - estree-walker "2.0.2" - glob "^7.1.3" - graceful-fs "^4.1.15" - micromatch "^4.0.2" - mkdirp "^0.5.1" - node-gyp-build "^4.2.2" - node-pre-gyp "^0.13.0" - resolve-from "^5.0.0" - rollup-pluginutils "^2.8.2" - -"@vitejs/plugin-vue-jsx@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-1.2.0.tgz#a4216bdbb8b12800537d39e3b5711fcf2eb470ef" - integrity sha512-Y4Er2bn8bHNiUziJizcVT1yQKTq6oOJeBrKkxvjo2yKT/RTSK1ZlkP/qnzchxxuBkx0tYG4Aaxbb9xuVnNNDEA== - dependencies: - "@babel/core" "^7.15.5" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-transform-typescript" "^7.15.4" - "@rollup/pluginutils" "^4.1.1" - "@vue/babel-plugin-jsx" "^1.0.7" - hash-sum "^2.0.0" - -"@vitejs/plugin-vue@^1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-1.9.4.tgz#4f48485432cbb986a9fb9d254dc33ce30ddccbfa" - integrity sha512-0CZqaCoChriPTTtGkERy1LGPcYjGFpi2uYRhBPIkqJqUGV5JnJFhQAgh6oH9j5XZHfrRaisX8W0xSpO4T7S78A== - -"@vue/babel-helper-vue-jsx-merge-props@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz#31624a7a505fb14da1d58023725a4c5f270e6a81" - integrity sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA== - -"@vue/babel-helper-vue-transform-on@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz#9b9c691cd06fc855221a2475c3cc831d774bc7dc" - integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== - -"@vue/babel-plugin-jsx@^1.0.7": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz#0c5bac27880d23f89894cd036a37b55ef61ddfc1" - integrity sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - "@vue/babel-helper-vue-transform-on" "^1.0.2" - camelcase "^6.0.0" - html-tags "^3.1.0" - svg-tags "^1.0.0" - -"@vue/babel-plugin-transform-vue-jsx@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz#646046c652c2f0242727f34519d917b064041ed7" - integrity sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1" - html-tags "^2.0.0" - lodash.kebabcase "^4.1.1" - svg-tags "^1.0.0" - -"@vue/babel-preset-jsx@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz#92fea79db6f13b01e80d3a0099e2924bdcbe4e87" - integrity sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w== - dependencies: - "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1" - "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" - "@vue/babel-sugar-composition-api-inject-h" "^1.2.1" - "@vue/babel-sugar-composition-api-render-instance" "^1.2.4" - "@vue/babel-sugar-functional-vue" "^1.2.2" - "@vue/babel-sugar-inject-h" "^1.2.2" - "@vue/babel-sugar-v-model" "^1.2.3" - "@vue/babel-sugar-v-on" "^1.2.3" - -"@vue/babel-sugar-composition-api-inject-h@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz#05d6e0c432710e37582b2be9a6049b689b6f03eb" - integrity sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-composition-api-render-instance@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz#e4cbc6997c344fac271785ad7a29325c51d68d19" - integrity sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-functional-vue@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz#267a9ac8d787c96edbf03ce3f392c49da9bd2658" - integrity sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-inject-h@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz#d738d3c893367ec8491dcbb669b000919293e3aa" - integrity sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-v-model@^1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz#fa1f29ba51ebf0aa1a6c35fa66d539bc459a18f2" - integrity sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1" - "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" - camelcase "^5.0.0" - html-tags "^2.0.0" - svg-tags "^1.0.0" - -"@vue/babel-sugar-v-on@^1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz#342367178586a69f392f04bfba32021d02913ada" - integrity sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" - camelcase "^5.0.0" - -"@vue/compiler-core@3.2.21": - version "3.2.21" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.21.tgz#26566c32b2ad838199d471ef5df620a83846f24e" - integrity sha512-NhhiQZNG71KNq1h5pMW/fAXdTF7lJRaSI7LDm2edhHXVz1ROMICo8SreUmQnSf4Fet0UPBVqJ988eF4+936iDQ== - dependencies: - "@babel/parser" "^7.15.0" - "@vue/shared" "3.2.21" - estree-walker "^2.0.2" - source-map "^0.6.1" - -"@vue/compiler-dom@3.2.21": - version "3.2.21" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.21.tgz#d6f6c85364ef8888f9c4e9122bfba11e78fb398c" - integrity sha512-gsJD3DpYZSYquiA7UIPsMDSlAooYWDvHPq9VRsqzJEk2PZtFvLvHPb4aaMD8Ufd62xzYn32cnnkzsEOJhyGilA== - dependencies: - "@vue/compiler-core" "3.2.21" - "@vue/shared" "3.2.21" - -"@vue/compiler-sfc@3.2.21": - version "3.2.21" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.21.tgz#42639ee49e725afb7d8f1d1940e75dc17a56002c" - integrity sha512-+yDlUSebKpz/ovxM2vLRRx7w/gVfY767pOfYTgbIhAs+ogvIV2BsIt4fpxlThnlCNChJ+yE0ERUNoROv2kEGEQ== - dependencies: - "@babel/parser" "^7.15.0" - "@vue/compiler-core" "3.2.21" - "@vue/compiler-dom" "3.2.21" - "@vue/compiler-ssr" "3.2.21" - "@vue/ref-transform" "3.2.21" - "@vue/shared" "3.2.21" - estree-walker "^2.0.2" - magic-string "^0.25.7" - postcss "^8.1.10" - source-map "^0.6.1" - -"@vue/compiler-ssr@3.2.21": - version "3.2.21" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.21.tgz#37d124f89e8adef9fd56b85775de4b5310a0436e" - integrity sha512-eU+A0iWYy+1zAo2CRIJ0zSVlv1iuGAIbNRCnllSJ31pV1lX3jypJYzGbJlSRAbB7VP6E+tYveVT1Oq8JKewa3g== - dependencies: - "@vue/compiler-dom" "3.2.21" - "@vue/shared" "3.2.21" - -"@vue/devtools-api@^6.0.0-beta.18": - version "6.0.0-beta.20.1" - resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.0.0-beta.20.1.tgz#5b499647e929c35baf2a66a399578f9aa4601142" - integrity sha512-R2rfiRY+kZugzWh9ZyITaovx+jpU4vgivAEAiz80kvh3yviiTU3CBuGuyWpSwGz9/C7TkSWVM/FtQRGlZ16n8Q== - -"@vue/reactivity@3.2.21", "@vue/reactivity@^3.2.21": - version "3.2.21" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.21.tgz#073ad144192ed78a07e151e95a3baa515e4099a2" - integrity sha512-7C57zFm/5E3SSTUhVuYj1InDwuJ+GIVQ/z+H43C9sST85gIThGXVhksl1yWTAadf8Yz4T5lSbqi5Ds8U/ueWcw== - dependencies: - "@vue/shared" "3.2.21" - -"@vue/ref-transform@3.2.21": - version "3.2.21" - resolved "https://registry.yarnpkg.com/@vue/ref-transform/-/ref-transform-3.2.21.tgz#b0c554c9f640c3f005f77e676066aa0faba90984" - integrity sha512-uiEWWBsrGeun9O7dQExYWzXO3rHm/YdtFNXDVqCSoPypzOVxWxdiL+8hHeWzxMB58fVuV2sT80aUtIVyaBVZgQ== - dependencies: - "@babel/parser" "^7.15.0" - "@vue/compiler-core" "3.2.21" - "@vue/shared" "3.2.21" - estree-walker "^2.0.2" - magic-string "^0.25.7" - -"@vue/runtime-core@3.2.21": - version "3.2.21" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.21.tgz#e12dac8c3893b7aebfc37e32066718d8aa686ac5" - integrity sha512-7oOxKaU0D2IunOAMOOHZgJVrHg63xwng8BZx3fbgmakqEIMwHhQcp+5GV1sOg/sWW7R4UhaRDIUCukO2GRVK2Q== - dependencies: - "@vue/reactivity" "3.2.21" - "@vue/shared" "3.2.21" - -"@vue/runtime-dom@3.2.21": - version "3.2.21" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.21.tgz#33dd15bc85281e773177a30dc6931c294bd77aa1" - integrity sha512-apBdriD6QsI4ywbllY8kjr9/0scGuStDuvLbJULPQkFPtHzntd51bP5PQTQVAEIc9kwnTozmj6x6ZdX/cwo7xA== - dependencies: - "@vue/runtime-core" "3.2.21" - "@vue/shared" "3.2.21" - csstype "^2.6.8" - -"@vue/server-renderer@3.2.21": - version "3.2.21" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.21.tgz#887d0a44de76f72313cff2686a24c0315231d634" - integrity sha512-QBgYqVgI7XCSBCqGa4LduV9vpfQFdZBOodFmq5Txk5W/v1KrJ1LoOh2Q0RHiRgtoK/UR9uyvRVcYqOmwHkZNEg== - dependencies: - "@vue/compiler-ssr" "3.2.21" - "@vue/shared" "3.2.21" - -"@vue/shared@3.2.21", "@vue/shared@^3.2.21": - version "3.2.21" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.21.tgz#4cd80c0e62cf65a7adab2449e86b6f0cb33a130b" - integrity sha512-5EQmIPK6gw4UVYUbM959B0uPsJ58+xoMESCZs3N89XyvJ9e+fX4pqEPrOGV8OroIk3SbEvJcC+eYc8BH9JQrHA== - -"@vueuse/head@^0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@vueuse/head/-/head-0.6.0.tgz#5584b1f724327cfce941c42efec9e590f5799329" - integrity sha512-fi7ZjkMpEAUtTT6iR5wgL2HkX1+3zbrmbpcwU//RgJIWEr5b42jk8E9yOheaC2dYAAHzelAllVpX0pDmhcTXuw== - -"@webassemblyjs/ast@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" - integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - -"@webassemblyjs/floating-point-hex-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" - integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== - -"@webassemblyjs/helper-api-error@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" - integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== - -"@webassemblyjs/helper-buffer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" - integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== - -"@webassemblyjs/helper-numbers@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" - integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" - integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== - -"@webassemblyjs/helper-wasm-section@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" - integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - -"@webassemblyjs/ieee754@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" - integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" - integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" - integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== - -"@webassemblyjs/wasm-edit@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" - integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" - -"@webassemblyjs/wasm-gen@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" - integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wasm-opt@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" - integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - -"@webassemblyjs/wasm-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" - integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wast-printer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" - integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -acorn-class-fields@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/acorn-class-fields/-/acorn-class-fields-1.0.0.tgz#b413793e6b3ddfcd17a02f9c7a850f4bbfdc1c7a" - integrity sha512-l+1FokF34AeCXGBHkrXFmml9nOIRI+2yBnBpO5MaVAaTIJ96irWLtcCxX+7hAp6USHFCe+iyyBB4ZhxV807wmA== - dependencies: - acorn-private-class-elements "^1.0.0" - -acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== - -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s= - dependencies: - acorn "^3.0.4" - -acorn-jsx@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-private-class-elements@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/acorn-private-class-elements/-/acorn-private-class-elements-1.0.0.tgz#c5805bf8a46cd065dc9b3513bfebb504c88cd706" - integrity sha512-zYNcZtxKgVCg1brS39BEou86mIao1EV7eeREG+6WMwKbuYTeivRRs6S2XdWnboRde6G9wKh2w+WBydEyJsJ6mg== - -acorn-static-class-features@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/acorn-static-class-features/-/acorn-static-class-features-1.0.0.tgz#ab9d862d5b184007ed509f5a8d031b837694ace2" - integrity sha512-XZJECjbmMOKvMHiNzbiPXuXpLAJfN3dAKtfIYbk1eHiWdsutlek+gS7ND4B8yJ3oqvHo1NxfafnezVmq7NXK0A== - dependencies: - acorn-private-class-elements "^1.0.0" - -acorn-walk@^8.0.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= - -acorn@^5.5.0: - version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" - integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.0.4, acorn@^8.3.0, acorn@^8.4.1, acorn@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" - integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ajv-keywords@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" - integrity sha1-MU3QpLM2j609/NxU7eYXG4htrzw= - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^4.7.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY= - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - -ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.1: - version "8.7.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.7.1.tgz#52be6f1736b076074798124293618f132ad07a7e" - integrity sha512-gPpOObTO1QjbnN1sVMjJcp1TF9nggMfO4MBR5uQl6ZVTOaEPq5i4oq/6R9q2alMMPB3eg53wFv1RuJBLuxf3Hw== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -allowlist@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/allowlist/-/allowlist-0.1.1.tgz#7f337b1e9a292e5aaf59c879933be1172915eaeb" - integrity sha512-l298+rQLx33JiaFBJ/4GJoSc1bou+COScif8asoAZqkX0Wz25jmJc4vqJV7NqCsj3ZuGkeODkNFJg/I4/vo4xg== - -alphanum-sort@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-escapes@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= - -ansi-html-community@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@^3.1.1, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -"aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -arch@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" - integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== - -archiver-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" - integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== - dependencies: - glob "^7.1.4" - graceful-fs "^4.2.0" - lazystream "^1.0.0" - lodash.defaults "^4.2.0" - lodash.difference "^4.5.0" - lodash.flatten "^4.4.0" - lodash.isplainobject "^4.0.6" - lodash.union "^4.6.0" - normalize-path "^3.0.0" - readable-stream "^2.0.0" - -archiver@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.0.tgz#dd3e097624481741df626267564f7dd8640a45ba" - integrity sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg== - dependencies: - archiver-utils "^2.1.0" - async "^3.2.0" - buffer-crc32 "^0.2.1" - readable-stream "^3.6.0" - readdir-glob "^1.0.0" - tar-stream "^2.2.0" - zip-stream "^4.1.0" - -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-includes@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" - integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.flat@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" - integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - -assert-never@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/assert-never/-/assert-never-1.2.1.tgz#11f0e363bf146205fb08193b5c7b90f4d1cf44fe" - integrity sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.2.tgz#2eb7671034bb2194d45d30e31e24ec7e7f9670cd" - integrity sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g== - -autoprefixer@^10.4.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.0.tgz#c3577eb32a1079a440ec253e404eaf1eb21388c8" - integrity sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA== - dependencies: - browserslist "^4.17.5" - caniuse-lite "^1.0.30001272" - fraction.js "^4.1.1" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.1.0" - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -axios@^0.24.0: - version "0.24.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.24.0.tgz#804e6fa1e4b9c5288501dd9dff56a7a0940d20d6" - integrity sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA== - dependencies: - follow-redirects "^1.14.4" - -babel-loader@^8.2.3: - version "8.2.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" - integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== - dependencies: - find-cache-dir "^3.3.1" - loader-utils "^1.4.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" - -babel-walk@3.0.0-canary-5: - version "3.0.0-canary-5" - resolved "https://registry.yarnpkg.com/babel-walk/-/babel-walk-3.0.0-canary-5.tgz#f66ecd7298357aee44955f235a6ef54219104b11" - integrity sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw== - dependencies: - "@babel/types" "^7.9.6" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bl@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-5.0.0.tgz#6928804a41e9da9034868e1c50ca88f21f57aea2" - integrity sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ== - dependencies: - buffer "^6.0.3" - inherits "^2.0.4" - readable-stream "^3.4.0" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -bootstrap-vue-3@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/bootstrap-vue-3/-/bootstrap-vue-3-0.0.5.tgz#de7f885e4187c0b42dd5b1ef44791402f0420121" - integrity sha512-3Bvv8HAt2thZdgjOPxg+a8hhI992joCztKQdf9Hg4XE9OkgbJtUBmZnHhNEUp8B+W0feqc3g9aFL9hq26IVPNA== - dependencies: - bootstrap "^5.1.3" - core-js "^3.6.5" - -bootstrap@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.1.3.tgz#ba081b0c130f810fa70900acbc1c6d3c28fa8f34" - integrity sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.6, browserslist@^4.17.5: - version "4.17.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.6.tgz#c76be33e7786b497f66cad25a73756c8b938985d" - integrity sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw== - dependencies: - caniuse-lite "^1.0.30001274" - electron-to-chromium "^1.3.886" - escalade "^3.1.1" - node-releases "^2.0.1" - picocolors "^1.0.0" - -buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffer@^6.0.2, buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== - -bundle-runner@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/bundle-runner/-/bundle-runner-0.0.1.tgz#d05ff2e3921e2ea3ec810d6b327eeb466ff4483b" - integrity sha512-xevhXw77nJ7wjCRTyo1JYumUNUiZmD0CJEummyLUJbdhub4bZWuplS+Y7nlMq5V9sKJQW+dV/LZR/SlxS5f4LQ== - dependencies: - source-map "^0.7.3" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= - dependencies: - callsites "^0.2.0" - -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001272, caniuse-lite@^1.0.30001274: - version "1.0.30001280" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001280.tgz#066a506046ba4be34cde5f74a08db7a396718fb7" - integrity sha512-kFXwYvHe5rix25uwueBxC569o53J6TpnGu0BEEn+6Lhl2vsnAumRFWEBhDft1fwyo6m1r4i+RqA4+163FpeFcA== - -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.3.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -character-parser@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" - integrity sha1-x84o821LzZdE5f/CxfzeHHMmH8A= - dependencies: - is-regex "^1.0.3" - -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== - -cli-cursor@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= - dependencies: - restore-cursor "^1.0.1" - -cli-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" - integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== - dependencies: - restore-cursor "^4.0.0" - -cli-spinners@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - -clipboardy@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290" - integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== - dependencies: - arch "^2.1.1" - execa "^1.0.0" - is-wsl "^2.1.1" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -cluster-key-slot@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" - integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw== - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-support@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -colord@^2.9.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.1.tgz#c961ea0efeb57c9f0f4834458f26cb9cc4a3f90e" - integrity sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw== - -colorette@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== - -colorette@^2.0.10: - version "2.0.16" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" - integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== - -commander@^2.20.0, commander@^2.8.1: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -compress-commons@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" - integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== - dependencies: - buffer-crc32 "^0.2.13" - crc32-stream "^4.0.2" - normalize-path "^3.0.0" - readable-stream "^3.6.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.4.6: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -connect@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" - -consola@^2.15.3, consola@^2.6.0: - version "2.15.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" - integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== - -console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -constantinople@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-4.0.1.tgz#0def113fa0e4dc8de83331a5cf79c8b325213151" - integrity sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw== - dependencies: - "@babel/parser" "^7.6.0" - "@babel/types" "^7.6.1" - -convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -core-js@^3.6.5: - version "3.19.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.19.1.tgz#f6f173cae23e73a7d88fa23b6e9da329276c6641" - integrity sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -crc-32@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" - integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== - dependencies: - exit-on-epipe "~1.0.1" - printj "~1.1.0" - -crc32-stream@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007" - integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== - dependencies: - crc-32 "^1.2.0" - readable-stream "^3.4.0" - -create-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-color-names@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-1.0.1.tgz#6ff7ee81a823ad46e020fa2fd6ab40a887e2ba67" - integrity sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA== - -css-declaration-sorter@^6.0.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz#e9852e4cf940ba79f509d9425b137d1f94438dc2" - integrity sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA== - dependencies: - timsort "^0.3.0" - -css-loader@^6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.5.1.tgz#0c43d4fbe0d97f699c91e9818cb585759091d1b1" - integrity sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ== - dependencies: - icss-utils "^5.1.0" - postcss "^8.2.15" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.1.0" - semver "^7.3.5" - -css-minimizer-webpack-plugin@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.1.3.tgz#3cfa1c8603f98f0b5e70697b61cbc4857fe1987b" - integrity sha512-x+6kzXprepysouo513zKibWCbWTGIvH9OrEsMRRV8EcJ7vYY/zRg0lR8tCzMHMap+lhNPOrYCdDagjRmfnGGxw== - dependencies: - cssnano "^5.0.6" - jest-worker "^27.0.2" - postcss "^8.3.5" - schema-utils "^3.1.0" - serialize-javascript "^6.0.0" - source-map "^0.6.1" - -css-select@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" - integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== - dependencies: - boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" - -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" - integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.6.tgz#1bdb83be6a6b1fee6dc5e9ec2e61286bcadcc7a6" - integrity sha512-X2nDeNGBXc0486oHjT2vSj+TdeyVsxRvJUxaOH50hOM6vSDLkKd0+59YXpSZRInJ4sNtBOykS4KsPfhdrU/35w== - dependencies: - css-declaration-sorter "^6.0.3" - cssnano-utils "^2.0.1" - postcss-calc "^8.0.0" - postcss-colormin "^5.2.1" - postcss-convert-values "^5.0.2" - postcss-discard-comments "^5.0.1" - postcss-discard-duplicates "^5.0.1" - postcss-discard-empty "^5.0.1" - postcss-discard-overridden "^5.0.1" - postcss-merge-longhand "^5.0.3" - postcss-merge-rules "^5.0.2" - postcss-minify-font-values "^5.0.1" - postcss-minify-gradients "^5.0.3" - postcss-minify-params "^5.0.1" - postcss-minify-selectors "^5.1.0" - postcss-normalize-charset "^5.0.1" - postcss-normalize-display-values "^5.0.1" - postcss-normalize-positions "^5.0.1" - postcss-normalize-repeat-style "^5.0.1" - postcss-normalize-string "^5.0.1" - postcss-normalize-timing-functions "^5.0.1" - postcss-normalize-unicode "^5.0.1" - postcss-normalize-url "^5.0.2" - postcss-normalize-whitespace "^5.0.1" - postcss-ordered-values "^5.0.2" - postcss-reduce-initial "^5.0.1" - postcss-reduce-transforms "^5.0.1" - postcss-svgo "^5.0.3" - postcss-unique-selectors "^5.0.1" - -cssnano-utils@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-2.0.1.tgz#8660aa2b37ed869d2e2f22918196a9a8b6498ce2" - integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ== - -cssnano@^5.0.10, cssnano@^5.0.6: - version "5.0.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.10.tgz#92207eb7c9c6dc08d318050726f9fad0adf7220b" - integrity sha512-YfNhVJJ04imffOpbPbXP2zjIoByf0m8E2c/s/HnvSvjXgzXMfgopVjAEGvxYOjkOpWuRQDg/OZFjO7WW94Ri8w== - dependencies: - cssnano-preset-default "^5.1.6" - is-resolvable "^1.1.0" - lilconfig "^2.0.3" - yaml "^1.10.2" - -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -csstype@^2.6.8: - version "2.6.18" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.18.tgz#980a8b53085f34af313410af064f2bd241784218" - integrity sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ== - -cuint@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" - integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -data-uri-to-buffer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b" - integrity sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA== - -dateformat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-5.0.2.tgz#0f275609b02e3306ff76d6a2067a6ebb98e6114b" - integrity sha512-h9vywpuz+ReixnJTwFx5JLtZpS8eLCbRm8shwwKkCKOZA547N6yoMtD3W91Z6+NFZ8wOaZlcaCcK/w+kELhSVg== - -debug@2.6.9, debug@^2.1.1, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== - dependencies: - ms "2.1.2" - -debug@^3.2.6, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -defu@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/defu/-/defu-2.0.4.tgz#09659a6e87a8fd7178be13bd43e9357ebf6d1c46" - integrity sha512-G9pEH1UUMxShy6syWk01VQSRVs3CDWtlxtZu7A+NyqjxaCA4gSlWAKDBx6QiUEKezqS8+DUlXLI14Fp05Hmpwg== - -defu@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/defu/-/defu-5.0.0.tgz#5768f0d402a555bfc4c267246b20f82ce8b5a10b" - integrity sha512-VHg73EDeRXlu7oYWRmmrNp/nl7QkdXUxkQQKig0Zk8daNmm84AbGoC8Be6/VVLJEKxn12hR0UBmz8O+xQiAPKQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -denque@^1.1.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf" - integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -destr@^1.0.0, destr@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/destr/-/destr-1.1.0.tgz#2da6add6ba71e04fd0abfb1e642d4f6763235095" - integrity sha512-Ev/sqS5AzzDwlpor/5wFCDu0dYMQu/0x2D6XfAsQ0E7uQmamIgYJ6Dppo2T2EOFVkeVYWjc+PCLKaqZZ57qmLg== - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-libc@^1.0.2, detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^1.2.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -doctypes@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" - integrity sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk= - -dom-serializer@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== - -domhandler@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" - integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== - dependencies: - domelementtype "^2.2.0" - -domutils@^2.6.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== - dependencies: - is-obj "^2.0.0" - -dotenv@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== - -duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -electron-to-chromium@^1.3.886: - version "1.3.896" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.896.tgz#4a94efe4870b1687eafd5c378198a49da06e8a1b" - integrity sha512-NcGkBVXePiuUrPLV8IxP43n1EOtdg+dudVjrfVEUd/bOqpQUFZ2diL5PPYzbgEhZFEltdXV3AcyKwGnEQ5lhMA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^4.1.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -enhanced-resolve@^5.8.3: - version "5.8.3" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" - integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -errno@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" - integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== - dependencies: - stackframe "^1.1.1" - -es-abstract@^1.18.5, es-abstract@^1.19.0, es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" - is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-module-lexer@^0.9.0: - version "0.9.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" - integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - -es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-symbol@^3.1.1, es6-symbol@~3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -es6-weak-map@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - -esbuild-android-arm64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.13.tgz#da07b5fb2daf7d83dcd725f7cf58a6758e6e702a" - integrity sha512-T02aneWWguJrF082jZworjU6vm8f4UQ+IH2K3HREtlqoY9voiJUwHLRL6khRlsNLzVglqgqb7a3HfGx7hAADCQ== - -esbuild-darwin-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.13.tgz#e94e9fd3b4b5455a2e675cd084a19a71b6904bbf" - integrity sha512-wkaiGAsN/09X9kDlkxFfbbIgR78SNjMOfUhoel3CqKBDsi9uZhw7HBNHNxTzYUK8X8LAKFpbODgcRB3b/I8gHA== - -esbuild-darwin-arm64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.13.tgz#8c320eafbb3ba2c70d8062128c5b71503e342471" - integrity sha512-b02/nNKGSV85Gw9pUCI5B48AYjk0vFggDeom0S6QMP/cEDtjSh1WVfoIFNAaLA0MHWfue8KBwoGVsN7rBshs4g== - -esbuild-freebsd-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.13.tgz#ce0ca5b8c4c274cfebc9326f9b316834bd9dd151" - integrity sha512-ALgXYNYDzk9YPVk80A+G4vz2D22Gv4j4y25exDBGgqTcwrVQP8rf/rjwUjHoh9apP76oLbUZTmUmvCMuTI1V9A== - -esbuild-freebsd-arm64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.13.tgz#463da17562fdcfdf03b3b94b28497d8d8dcc8f62" - integrity sha512-uFvkCpsZ1yqWQuonw5T1WZ4j59xP/PCvtu6I4pbLejhNo4nwjW6YalqnBvBSORq5/Ifo9S/wsIlVHzkzEwdtlw== - -esbuild-linux-32@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.13.tgz#2035793160da2c4be48a929e5bafb14a31789acc" - integrity sha512-yxR9BBwEPs9acVEwTrEE2JJNHYVuPQC9YGjRfbNqtyfK/vVBQYuw8JaeRFAvFs3pVJdQD0C2BNP4q9d62SCP4w== - -esbuild-linux-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.13.tgz#fbe4802a8168c6d339d0749f977b099449b56f22" - integrity sha512-kzhjlrlJ+6ESRB/n12WTGll94+y+HFeyoWsOrLo/Si0s0f+Vip4b8vlnG0GSiS6JTsWYAtGHReGczFOaETlKIw== - -esbuild-linux-arm64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.13.tgz#f08d98df28d436ed4aad1529615822bb74d4d978" - integrity sha512-KMrEfnVbmmJxT3vfTnPv/AiXpBFbbyExH13BsUGy1HZRPFMi5Gev5gk8kJIZCQSRfNR17aqq8sO5Crm2KpZkng== - -esbuild-linux-arm@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.13.tgz#6f968c3a98b64e30c80b212384192d0cfcb32e7f" - integrity sha512-hXub4pcEds+U1TfvLp1maJ+GHRw7oizvzbGRdUvVDwtITtjq8qpHV5Q5hWNNn6Q+b3b2UxF03JcgnpzCw96nUQ== - -esbuild-linux-mips64le@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.13.tgz#690c78dc4725efe7d06a1431287966fbf7774c7f" - integrity sha512-cJT9O1LYljqnnqlHaS0hdG73t7hHzF3zcN0BPsjvBq+5Ad47VJun+/IG4inPhk8ta0aEDK6LdP+F9299xa483w== - -esbuild-linux-ppc64le@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.13.tgz#7ec9048502de46754567e734aae7aebd2df6df02" - integrity sha512-+rghW8st6/7O6QJqAjVK3eXzKkZqYAw6LgHv7yTMiJ6ASnNvghSeOcIvXFep3W2oaJc35SgSPf21Ugh0o777qQ== - -esbuild-loader@^2.16.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/esbuild-loader/-/esbuild-loader-2.16.0.tgz#a44a57a77ed2810d6b278579271f77d739aa7bc9" - integrity sha512-LCJEwkf+nMJbNmVYNgg/0PaIZDdr5OcHw1qbWAZLkrmBRX+KwHY/yAS6ia98UBtwzk/WhsftUBNB6tfPHgFIxw== - dependencies: - esbuild "^0.13.4" - joycon "^3.0.1" - json5 "^2.2.0" - loader-utils "^2.0.0" - tapable "^2.2.0" - type-fest "^1.4.0" - webpack-sources "^2.2.0" - -esbuild-netbsd-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.13.tgz#439bdaefffa03a8fa84324f5d83d636f548a2de3" - integrity sha512-A/B7rwmzPdzF8c3mht5TukbnNwY5qMJqes09ou0RSzA5/jm7Jwl/8z853ofujTFOLhkNHUf002EAgokzSgEMpQ== - -esbuild-openbsd-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.13.tgz#c9958e5291a00a3090c1ec482d6bcdf2d5b5d107" - integrity sha512-szwtuRA4rXKT3BbwoGpsff6G7nGxdKgUbW9LQo6nm0TVCCjDNDC/LXxT994duIW8Tyq04xZzzZSW7x7ttDiw1w== - -esbuild-sunos-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.13.tgz#ac9ead8287379cd2f6d00bd38c5997fda9c1179e" - integrity sha512-ihyds9O48tVOYF48iaHYUK/boU5zRaLOXFS+OOL3ceD39AyHo46HVmsJLc7A2ez0AxNZCxuhu+P9OxfPfycTYQ== - -esbuild-windows-32@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.13.tgz#a3820fc86631ca594cb7b348514b5cc3f058cfd6" - integrity sha512-h2RTYwpG4ldGVJlbmORObmilzL8EECy8BFiF8trWE1ZPHLpECE9//J3Bi+W3eDUuv/TqUbiNpGrq4t/odbayUw== - -esbuild-windows-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.13.tgz#1da748441f228d75dff474ddb7d584b81887323c" - integrity sha512-oMrgjP4CjONvDHe7IZXHrMk3wX5Lof/IwFEIbwbhgbXGBaN2dke9PkViTiXC3zGJSGpMvATXVplEhlInJ0drHA== - -esbuild-windows-arm64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.13.tgz#06dfa52a6b178a5932a9a6e2fdb240c09e6da30c" - integrity sha512-6fsDfTuTvltYB5k+QPah/x7LrI2+OLAJLE3bWLDiZI6E8wXMQU+wLqtEO/U/RvJgVY1loPs5eMpUBpVajczh1A== - -esbuild@^0.13.13, esbuild@^0.13.2, esbuild@^0.13.4: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.13.tgz#0b5399c20f219f663c8c1048436fb0f59ab17a41" - integrity sha512-Z17A/R6D0b4s3MousytQ/5i7mTCbaF+Ua/yPfoe71vdTv4KBvVAvQ/6ytMngM2DwGJosl8WxaD75NOQl2QF26Q== - optionalDependencies: - esbuild-android-arm64 "0.13.13" - esbuild-darwin-64 "0.13.13" - esbuild-darwin-arm64 "0.13.13" - esbuild-freebsd-64 "0.13.13" - esbuild-freebsd-arm64 "0.13.13" - esbuild-linux-32 "0.13.13" - esbuild-linux-64 "0.13.13" - esbuild-linux-arm "0.13.13" - esbuild-linux-arm64 "0.13.13" - esbuild-linux-mips64le "0.13.13" - esbuild-linux-ppc64le "0.13.13" - esbuild-netbsd-64 "0.13.13" - esbuild-openbsd-64 "0.13.13" - esbuild-sunos-64 "0.13.13" - esbuild-windows-32 "0.13.13" - esbuild-windows-64 "0.13.13" - esbuild-windows-arm64 "0.13.13" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - integrity sha1-4Bl16BJ4GhY6ba392AOY3GTIicM= - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-config-standard@^16.0.3: - version "16.0.3" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516" - integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-module-utils@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c" - integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ== - dependencies: - debug "^3.2.7" - find-up "^2.1.0" - pkg-dir "^2.0.0" - -eslint-plugin-es@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" - integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== - dependencies: - eslint-utils "^2.0.0" - regexpp "^3.0.0" - -eslint-plugin-import@^2.25.3: - version "2.25.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz#a554b5f66e08fb4f6dc99221866e57cfff824766" - integrity sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg== - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.1" - has "^1.0.3" - is-core-module "^2.8.0" - is-glob "^4.0.3" - minimatch "^3.0.4" - object.values "^1.1.5" - resolve "^1.20.0" - tsconfig-paths "^3.11.0" - -eslint-plugin-node@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" - integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== - dependencies: - eslint-plugin-es "^3.0.0" - eslint-utils "^2.0.0" - ignore "^5.1.1" - minimatch "^3.0.4" - resolve "^1.10.1" - semver "^6.1.0" - -eslint-plugin-promise@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.1.1.tgz#9674d11c056d1bafac38e4a3a9060be740988d90" - integrity sha512-XgdcdyNzHfmlQyweOPTxmc7pIsS6dE4MvwhXWMQ2Dxs1XAL2GJDilUsjWen6TWik0aSI+zD/PqocZBblcm9rdA== - -eslint-plugin-vue@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-8.0.3.tgz#791cc4543940319e612ea61a1d779e8c87cf749a" - integrity sha512-Rlhhy5ltzde0sRwSkqHuNePTXLMMaJ5+qsQubM4RYloYsQ8cXlnJT5MDaCzSirkGADipOHtmQXIbbPFAzUrADg== - dependencies: - eslint-utils "^3.0.0" - natural-compare "^1.4.0" - semver "^7.3.5" - vue-eslint-parser "^8.0.1" - -eslint-scope@5.1.1, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-6.0.0.tgz#9cf45b13c5ac8f3d4c50f46a5121f61b3e318978" - integrity sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz#eee4acea891814cda67a7d8812d9647dd0179af2" - integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA== - -eslint@^2.7.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-2.13.1.tgz#e4cc8fa0f009fb829aaae23855a29360be1f6c11" - integrity sha1-5MyPoPAJ+4KaquI4VaKTYL4fbBE= - dependencies: - chalk "^1.1.3" - concat-stream "^1.4.6" - debug "^2.1.1" - doctrine "^1.2.2" - es6-map "^0.1.3" - escope "^3.6.0" - espree "^3.1.6" - estraverse "^4.2.0" - esutils "^2.0.2" - file-entry-cache "^1.1.1" - glob "^7.0.3" - globals "^9.2.0" - ignore "^3.1.2" - imurmurhash "^0.1.4" - inquirer "^0.12.0" - is-my-json-valid "^2.10.0" - is-resolvable "^1.0.0" - js-yaml "^3.5.1" - json-stable-stringify "^1.0.0" - levn "^0.3.0" - lodash "^4.0.0" - mkdirp "^0.5.0" - optionator "^0.8.1" - path-is-absolute "^1.0.0" - path-is-inside "^1.0.1" - pluralize "^1.2.1" - progress "^1.1.8" - require-uncached "^1.0.2" - shelljs "^0.6.0" - strip-json-comments "~1.0.1" - table "^3.7.8" - text-table "~0.2.0" - user-home "^2.0.0" - -eslint@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.2.0.tgz#44d3fb506d0f866a506d97a0fc0e90ee6d06a815" - integrity sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw== - dependencies: - "@eslint/eslintrc" "^1.0.4" - "@humanwhocodes/config-array" "^0.6.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - enquirer "^2.3.5" - escape-string-regexp "^4.0.0" - eslint-scope "^6.0.0" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.0.0" - espree "^9.0.0" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.2.0" - semver "^7.2.1" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^3.1.6: - version "3.5.4" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" - integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A== - dependencies: - acorn "^5.5.0" - acorn-jsx "^3.0.0" - -espree@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.0.0.tgz#e90a2965698228502e771c7a58489b1a9d107090" - integrity sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ== - dependencies: - acorn "^8.5.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.0.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0, esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1, estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-walker@2.0.2, estree-walker@^2.0.1, estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@^1.8.1, etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= - dependencies: - d "1" - es5-ext "~0.10.14" - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= - -exit-on-epipe@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" - integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== - -ext@^1.1.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" - integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== - dependencies: - type "^2.5.0" - -externality@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/externality/-/externality-0.1.5.tgz#07f784dfd782c3d2242166b2337a1e33b54ae3f5" - integrity sha512-Re29ft7X3Pfk7SVVOI5Xo/44XmkBMEqVmkUQd+21j8K/GjPuAyNuNJ5F/4yukubrbe4mEu2nE7OCzuDGewRH1Q== - dependencies: - allowlist "^0.1.1" - enhanced-resolve "^5.8.3" - mlly "^0.3.10" - pathe "^0.2.0" - ufo "^0.7.9" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -fetch-blob@^3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.1.3.tgz#a7dca4855e39d3e3c5a1da62d4ee335c37d26012" - integrity sha512-ax1Y5I9w+9+JiM+wdHkhBoxew+zG4AJ2SvAD1v1szpddUIiPERVGBxrMcB2ZqW0Y3PP8bOWYv2zqQq1Jp2kqUQ== - dependencies: - web-streams-polyfill "^3.0.3" - -figures@^1.3.5: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -file-entry-cache@^1.1.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-1.3.1.tgz#44c61ea607ae4be9c1402f41f44270cbfe334ff8" - integrity sha1-RMYepgeuS+nBQC9B9EJwy/4zT/g= - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-loader@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" - integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -flat-cache@^1.2.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" - integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== - dependencies: - circular-json "^0.3.1" - graceful-fs "^4.1.2" - rimraf "~2.6.2" - write "^0.2.1" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flat@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flatted@^3.1.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" - integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== - -follow-redirects@^1.0.0, follow-redirects@^1.14.4: - version "1.14.5" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.5.tgz#f09a5848981d3c772b5392309778523f8d85c381" - integrity sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA== - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= - -formdata-polyfill@^4.0.10: - version "4.0.10" - resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" - integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== - dependencies: - fetch-blob "^3.1.2" - -fraction.js@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.2.tgz#13e420a92422b6cf244dff8690ed89401029fbe8" - integrity sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -front-matter@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-2.1.2.tgz#f75983b9f2f413be658c93dfd7bd8ce4078f5cdb" - integrity sha1-91mDufL0E75ljJPf172M5AePXNs= - dependencies: - js-yaml "^3.4.6" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" - integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" - integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^3.0.0" - universalify "^0.1.0" - -fs-memo@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fs-memo/-/fs-memo-1.2.0.tgz#a2ec3be606b902077adbb37ec529c5ec5fb2e037" - integrity sha512-YEexkCpL4j03jn5SxaMHqcO6IuWuqm8JFUYhyCep7Ao89JIYmB8xoKhK7zXXJ9cCaNXpyNH5L3QtAmoxjoHW2w== - -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-monkey@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" - integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -gauge@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.1.tgz#4bea07bcde3782f06dced8950e51307aa0f4a346" - integrity sha512-6STz6KdQgxO4S/ko+AbjlFGGdGcknluoqU+79GOFCDqqyYj5OanQf9AjxwN0jCidtT+ziPMmPSt9E4hfQ0CwIQ== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" - has-unicode "^2.0.1" - object-assign "^4.1.1" - signal-exit "^3.0.0" - string-width "^1.0.1 || ^2.0.0" - strip-ansi "^3.0.1 || ^4.0.0" - wide-align "^1.1.2" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -generate-function@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" - integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== - dependencies: - is-property "^1.0.2" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA= - dependencies: - is-property "^1.0.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-port-please@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-2.2.0.tgz#3fabbbe2f9d8e6b7c47e1cddd71fc4c593f1deac" - integrity sha512-1c7Np/cpA7XCB6IrPAdaBaJjlGHTqg4P82h/ZqyBL6dCdwRzZBOFGZO7FL2KaZ2uNvD6v8QilA7LZwMpmIggDQ== - dependencies: - fs-memo "^1.2.0" - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@^7.0.0, glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@~7.1.1: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.6.0, globals@^13.9.0: - version "13.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e" - integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg== - dependencies: - type-fest "^0.20.2" - -globals@^9.2.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - -globby@^11.0.4: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globule@^1.0.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.3.tgz#811919eeac1ab7344e905f2e3be80a13447973c2" - integrity sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg== - dependencies: - glob "~7.1.1" - lodash "~4.17.10" - minimatch "~3.0.2" - -gonzales-pe-sl@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/gonzales-pe-sl/-/gonzales-pe-sl-4.2.3.tgz#6a868bc380645f141feeb042c6f97fcc71b59fe6" - integrity sha1-aoaLw4BkXxQf7rBCxvl/zHG1n+Y= - dependencies: - minimist "1.1.x" - -google-protobuf@^3.15.5, google-protobuf@^3.19.1: - version "3.19.1" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.19.1.tgz#5af5390e8206c446d8f49febaffd4b7f4ac28f41" - integrity sha512-Isv1RlNC+IzZzilcxnlVSf+JvuhxmY7DaxYCBy+zPS9XVuJRtlTTIXR9hnZ1YL1MMusJn/7eSy2swCzZIomQSg== - -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -grpc-web@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/grpc-web/-/grpc-web-1.3.0.tgz#4c36d97e7a7b6102a7df463e7822cd86d4f65ed8" - integrity sha512-nePImtnrnkZLErFq00Sr1H6AqaRrRptOJEhjUnlTB6RiJgs8ULYvRI9cX2hDwMvyYgakmO3H/wThYvS+Ibdreg== - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -h3@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/h3/-/h3-0.3.3.tgz#9c6feb2ddf842ea5448c53a8bc8bc3a686799c21" - integrity sha512-ammvVddtZArv6pnCkl0tEekY8owWPZNZCW4teePYzGwfN2w7kb0wnraLIFnB20mqUU2kCAV5bvI+2mjmGztS3w== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-unicode@^2.0.0, has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-sum@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" - integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= - -hash-sum@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" - integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== - -hasha@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" - integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== - dependencies: - is-stream "^2.0.0" - type-fest "^0.8.0" - -he@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hookable@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/hookable/-/hookable-5.0.0.tgz#bac6f1d4b56e3f590f21cfe3f813731372c0c69f" - integrity sha512-IqoJ8oXCNTUtNfqwbUQvLd+6ebVXk5qqGpSMOe4BS514vd4bEEH+hd9lva48mbbbe9q4eFKmsOViTZkr7ludHg== - -html-entities@^2.1.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" - integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== - -html-tags@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" - integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= - -html-tags@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" - integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-shutdown@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/http-shutdown/-/http-shutdown-1.2.2.tgz#41bc78fc767637c4c95179bc492f312c0ae64c5f" - integrity sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw== - -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - -iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore-walk@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== - dependencies: - minimatch "^3.0.4" - -ignore@^3.1.2: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.9: - version "5.1.9" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb" - integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -inquirer@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" - integrity sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34= - dependencies: - ansi-escapes "^1.1.0" - ansi-regex "^2.0.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - figures "^1.3.5" - lodash "^4.3.0" - readline2 "^1.0.1" - run-async "^0.1.0" - rx-lite "^3.1.2" - string-width "^1.0.1" - strip-ansi "^3.0.0" - through "^2.3.6" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -ioredis@^4.27.9: - version "4.28.0" - resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.28.0.tgz#5a2be3f37ff2075e2332f280eaeb02ab4d9ff0d3" - integrity sha512-I+zkeeWp3XFgPT2CtJKxvaF5FjGBGt4yGYljRjQecdQKteThuAsKqffeF1lgHVlYnuNeozRbPOCDNZ7tDWPeig== - dependencies: - cluster-key-slot "^1.1.0" - debug "^4.3.1" - denque "^1.1.0" - lodash.defaults "^4.2.0" - lodash.flatten "^4.4.0" - lodash.isarguments "^3.1.0" - p-map "^2.1.0" - redis-commands "1.7.0" - redis-errors "^1.2.0" - redis-parser "^3.0.0" - standard-as-callback "^2.1.0" - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-core-module@^2.2.0, is-core-module@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== - dependencies: - has "^1.0.3" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-expression@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-4.0.0.tgz#c33155962abf21d0afd2552514d67d2ec16fd2ab" - integrity sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A== - dependencies: - acorn "^7.1.1" - object-assign "^4.1.1" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-interactive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90" - integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - -is-my-ip-valid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" - integrity sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ== - -is-my-json-valid@^2.10.0: - version "2.20.6" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz#a9d89e56a36493c77bda1440d69ae0dc46a08387" - integrity sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw== - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - is-my-ip-valid "^1.0.0" - jsonpointer "^5.0.0" - xtend "^4.0.0" - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-primitive@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-3.0.1.tgz#98c4db1abff185485a657fc2905052b940524d05" - integrity sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w== - -is-promise@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - -is-promise@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" - integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== - -is-property@^1.0.0, is-property@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ= - -is-reference@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== - dependencies: - "@types/estree" "*" - -is-regex@^1.0.3, is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-resolvable@^1.0.0, is-resolvable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.3, is-typed-array@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79" - integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-abstract "^1.18.5" - foreach "^2.0.5" - has-tostringtag "^1.0.0" - -is-unicode-supported@^1.0.0, is-unicode-supported@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.1.0.tgz#9127b71f9fa82f52ca5c20e982e7bec0ee31ee1e" - integrity sha512-lDcxivp8TJpLG75/DpatAqNzOpDPSpED8XNtrpBHTdQ2InQ1PbW78jhwSxyxhhu+xbVSast2X38bwj8atwoUQA== - -is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== - dependencies: - call-bind "^1.0.0" - -is-wsl@^2.1.1, is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -jest-worker@^26.2.1: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest-worker@^27.0.2, jest-worker@^27.0.6: - version "27.3.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.3.1.tgz#0def7feae5b8042be38479799aeb7b5facac24b2" - integrity sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jiti@^1.12.9: - version "1.12.9" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.12.9.tgz#2ce45b265cfc8dc91ebd70a5204807cf915291bc" - integrity sha512-TdcJywkQtcwLxogc4rSMAi479G2eDPzfW0fLySks7TPhgZZ4s/tM6stnzayIh3gS/db3zExWJyUx4cNWrwAmoQ== - -joycon@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.0.1.tgz#9074c9b08ccf37a6726ff74a18485f85efcaddaf" - integrity sha512-SJcJNBg32dGgxhPtM0wQqxqV0ax9k/9TaUskGDSJkSFSQOEWWvQ3zzWdGQRIUry2j1zA5+ReH13t0Mf3StuVZA== - -js-stringify@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" - integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds= - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.4.6, js-yaml@^3.5.1, js-yaml@^3.5.4: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2, json5@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -jsonc-parser@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" - integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== - -jsonfile@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" - integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - -jsonpointer@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.0.tgz#f802669a524ec4805fa7389eadbc9921d5dc8072" - integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg== - -jstransformer@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3" - integrity sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM= - dependencies: - is-promise "^2.0.0" - promise "^7.0.1" - -klona@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" - integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== - -known-css-properties@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.3.0.tgz#a3d135bbfc60ee8c6eacf2f7e7e6f2d4755e49a4" - integrity sha512-QMQcnKAiQccfQTqtBh/qwquGZ2XK/DXND1jrcN9M8gMMy99Gwla7GQjndVUsEqIaRyP6bsFRuhwRj5poafBGJQ== - -lazystream@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" - integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== - dependencies: - readable-stream "^2.0.5" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lilconfig@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" - integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -listhen@^0.2.4, listhen@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/listhen/-/listhen-0.2.5.tgz#3d1db85c705ef4d4e0224dad34c3d67aefca2749" - integrity sha512-7stTOFjeQHVkDqpPl0AtGdzXNu1XN5sE2Pi4mudeZ597c100OKvUpmPuv3MKemDScIWqmIbeUOeP3PBo0w49XQ== - dependencies: - clipboardy "^2.3.0" - colorette "^1.2.2" - defu "^5.0.0" - get-port-please "^2.1.0" - http-shutdown "^1.2.2" - open "^8.0.5" - selfsigned "^1.10.8" - -loader-runner@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" - integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== - -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -loader-utils@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash-es@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" - integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.capitalize@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9" - integrity sha1-+CbJtOKoUR2E46yinbBeGk87cqk= - -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= - -lodash.difference@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" - integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= - -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= - -lodash.isarguments@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= - -lodash.kebabcase@^4.0.0, lodash.kebabcase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - -lodash.union@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" - integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash@^4.0.0, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.3.0, lodash@~4.17.10: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-5.0.0.tgz#7720d3c6a56c365e1f658916069ba18d941092ca" - integrity sha512-zBsSKauX7sM0kcqrf8VpMRPqcWzU6a/Wi7iEl0QlVSCiIZ4CctaLdfVdiZUn6q2/nenyt392qJqpw9FhNAwqxQ== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^1.0.0" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -magic-string@^0.25.7: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - -make-dir@^3.0.2, make-dir@^3.1.0, make-dir@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -memfs@^3.2.2, memfs@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.3.0.tgz#4da2d1fc40a04b170a56622c7164c6be2c4cbef2" - integrity sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg== - dependencies: - fs-monkey "1.0.3" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -merge@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" - integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== - -micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -mime-db@1.51.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== - -mime-types@^2.1.27, mime-types@^2.1.31: - version "2.1.34" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== - dependencies: - mime-db "1.51.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.3.1, mime@^2.4.6, mime@^2.5.2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -mime@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" - integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== - -mime@~2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mini-css-extract-plugin@^2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.4.tgz#c7e5d2d931dcf100ae50ae949ba757c506b54b0f" - integrity sha512-UJ+aNuFQaQaECu7AamlWOBLj2cJ6XSGU4zNiqXeZ7lZLe5VD0DoSPWFbWArXueo+6FZVbgHzpX9lUIaBIDLuYg== - dependencies: - schema-utils "^3.1.0" - -minimatch@^3.0.4, minimatch@~3.0.2, minimatch@~3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@1.1.x: - version "1.1.3" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" - integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag= - -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minipass@^3.0.0: - version "3.1.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.5.tgz#71f6251b0a33a49c01b3cf97ff77eda030dff732" - integrity sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw== - dependencies: - yallist "^4.0.0" - -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mlly@^0.3.10, mlly@^0.3.13, mlly@^0.3.6: - version "0.3.13" - resolved "https://registry.yarnpkg.com/mlly/-/mlly-0.3.13.tgz#5433261f38ccebba6f72fabda863a4dfc84b16d8" - integrity sha512-EXpbSPqSQLR9NEdB25uoyIYLSUvAqDEI7wUeM1HwXHsPF5Gx7cP7kuby5Mz2LfCPxBrgMnbcyPhcTCJRTQ+uvA== - -mri@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" - integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -murmurhash-es@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/murmurhash-es/-/murmurhash-es-0.1.1.tgz#e4d7943eed19b0c1b66f5bb071fce52c7a052782" - integrity sha512-IfA8KVe9dxv28F9KSJ8EpJP2jgO1br6xInnFaPDjQKosEfpTMAx8v1eGCUzOvcZDstadm3mdP95JILrYs0mNsg== - -mute-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" - integrity sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA= - -nanoid@^3.1.22, nanoid@^3.1.30: - version "3.1.30" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" - integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -needle@^2.2.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" - integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -node-fetch@^2.6.5: - version "2.6.6" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89" - integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA== - dependencies: - whatwg-url "^5.0.0" - -node-fetch@^3.0.0, node-fetch@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.1.0.tgz#714f4922dc270239487654eaeeab86b8206cb52e" - integrity sha512-QU0WbIfMUjd5+MUzQOYhenAazakV7Irh1SGkWCsRzBwvm4fAhzEUaHMJ6QLP7gWT6WO9/oH2zhKMMGMuIrDyKw== - dependencies: - data-uri-to-buffer "^4.0.0" - fetch-blob "^3.1.2" - formdata-polyfill "^4.0.10" - -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -node-gyp-build@^4.2.2: - version "4.3.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" - integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== - -node-pre-gyp@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.13.0.tgz#df9ab7b68dd6498137717838e4f92a33fc9daa42" - integrity sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -node-releases@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" - integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== - -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -npm-bundled@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -npmlog@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== - dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" - -nth-check@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" - integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== - dependencies: - boolbase "^1.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -"nuxi@npm:nuxi-edge@3.0.0-27277498.850ef69": - version "3.0.0-27277498.850ef69" - resolved "https://registry.yarnpkg.com/nuxi-edge/-/nuxi-edge-3.0.0-27277498.850ef69.tgz#9341502a654b83f5d1005ffc50804cc0a6c49ffb" - integrity sha512-8UxtGkJ7DsOIP/o+ci1oTBRxjVbSLSbeQP/9S/NK5Noe+TQWnLUkDdtxTFY4FpQy7UDWxHzvn/KRkK5tq3ot4g== - optionalDependencies: - fsevents "~2.3.2" - -nuxt3@^3.0.0-27277498.850ef69: - version "3.0.0-27277498.850ef69" - resolved "https://registry.yarnpkg.com/nuxt3/-/nuxt3-3.0.0-27277498.850ef69.tgz#73b9e6fa141bc1fab74d179fe829cf883dbb7290" - integrity sha512-SjI89zVFyaonDs5IZed2KHpZJsmILOiSsBoGJ75QkXtXmOyylb7/HDczXgiHQoe15Rz9774anJ79UVuky13Buw== - dependencies: - "@nuxt/design" "^0.1.5" - "@nuxt/kit" "npm:@nuxt/kit-edge@3.0.0-27277498.850ef69" - "@nuxt/nitro" "npm:@nuxt/nitro-edge@3.0.0-27277498.850ef69" - "@nuxt/vite-builder" "npm:@nuxt/vite-builder-edge@3.0.0-27277498.850ef69" - "@nuxt/webpack-builder" "npm:@nuxt/webpack-builder-edge@3.0.0-27277498.850ef69" - "@vue/reactivity" "^3.2.21" - "@vue/shared" "^3.2.21" - "@vueuse/head" "^0.6.0" - chokidar "^3.5.2" - consola "^2.15.3" - defu "^5.0.0" - globby "^11.0.4" - hash-sum "^2.0.0" - hookable "^5.0.0" - ignore "^5.1.9" - mlly "^0.3.13" - murmurhash-es "^0.1.1" - nuxi "npm:nuxi-edge@3.0.0-27277498.850ef69" - ohmyfetch "^0.4.6" - pathe "^0.2.0" - scule "^0.2.1" - ufo "^0.7.9" - unplugin "^0.2.20" - vue "^3.2.21" - vue-router "^4.0.12" - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-inspect@^1.11.0, object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -ohmyfetch@^0.4.5, ohmyfetch@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/ohmyfetch/-/ohmyfetch-0.4.6.tgz#790f561d36eed285bbd1d14b46b99b3aeecb89c1" - integrity sha512-1tICxOs83mBBOFUikYGmtxScRBuqoXDEt/PGkvTc6ZAA/11petRNeK3El+eQFmM2mOBUK0cVMzyEvBKQ+l5Nhg== - dependencies: - destr "^1.1.0" - node-fetch "^3.0.0" - ufo "^0.7.9" - undici "^4.9.5" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^7.4.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - -open@^8.0.5: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -opener@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -ora@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-6.0.1.tgz#68caa9fd6c485a40d6f46c50a3940fa3df99c7f3" - integrity sha512-TDdKkKHdWE6jo/6pIa5U5AWcSVfpNRFJ8sdRJpioGNVPLAzZzHs/N+QhUfF7ZbyoC+rnDuNTKzeDJUbAza9g4g== - dependencies: - bl "^5.0.0" - chalk "^4.1.2" - cli-cursor "^4.0.0" - cli-spinners "^2.6.0" - is-interactive "^2.0.0" - is-unicode-supported "^1.1.0" - log-symbols "^5.0.0" - strip-ansi "^7.0.1" - wcwidth "^1.0.1" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-debounce@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-debounce/-/p-debounce-4.0.0.tgz#348e3f44489baa9435cc7d807f17b3bb2fb16b24" - integrity sha512-4Ispi9I9qYGO4lueiLDhe4q4iK5ERK8reLsuzH6BPaXn53EGaua8H66PXIFGrW897hwjXp+pVLrm/DLxN0RF0A== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pathe@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.2.0.tgz#30fd7bbe0a0d91f0e60bae621f5d19e9e225c339" - integrity sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-types@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-0.3.1.tgz#d7a8b69efb8777a05afc5aabfc259a29a5d6d159" - integrity sha512-BjECNgz/tsyqg0/T4Z/U7WbFQXUT24nfkxPbALcrk/uHVeZf9MrGG4tfvYtu+jsrHCFMseLQ6woQddDEBATw3A== - dependencies: - jsonc-parser "^3.0.0" - mlly "^0.3.6" - pathe "^0.2.0" - -pluralize@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" - integrity sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU= - -postcss-calc@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.0.0.tgz#a05b87aacd132740a5db09462a3612453e5df90a" - integrity sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g== - dependencies: - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-colormin@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.2.1.tgz#6e444a806fd3c578827dbad022762df19334414d" - integrity sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA== - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.1.0" - -postcss-convert-values@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz#879b849dc3677c7d6bc94b6a2c1a3f0808798059" - integrity sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg== - dependencies: - postcss-value-parser "^4.1.0" - -postcss-discard-comments@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz#9eae4b747cf760d31f2447c27f0619d5718901fe" - integrity sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg== - -postcss-discard-duplicates@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz#68f7cc6458fe6bab2e46c9f55ae52869f680e66d" - integrity sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA== - -postcss-discard-empty@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz#ee136c39e27d5d2ed4da0ee5ed02bc8a9f8bf6d8" - integrity sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw== - -postcss-discard-overridden@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz#454b41f707300b98109a75005ca4ab0ff2743ac6" - integrity sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q== - -postcss-import-resolver@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-import-resolver/-/postcss-import-resolver-2.0.0.tgz#95c61ac5489047bd93ff42a9cd405cfe9041e2c0" - integrity sha512-y001XYgGvVwgxyxw9J1a5kqM/vtmIQGzx34g0A0Oy44MFcy/ZboZw1hu/iN3VYFjSTRzbvd7zZJJz0Kh0AGkTw== - dependencies: - enhanced-resolve "^4.1.1" - -postcss-import@^14.0.2: - version "14.0.2" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.0.2.tgz#60eff77e6be92e7b67fe469ec797d9424cae1aa1" - integrity sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g== - dependencies: - postcss-value-parser "^4.0.0" - read-cache "^1.0.0" - resolve "^1.1.7" - -postcss-loader@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.0.tgz#714370a3f567141cf4cadcdf9575f5234d186bc5" - integrity sha512-H9hv447QjQJVDbHj3OUdciyAXY3v5+UDduzEytAlZCVHCpNAAg/mCSwhYYqZr9BiGYhmYspU8QXxZwiHTLn3yA== - dependencies: - cosmiconfig "^7.0.0" - klona "^2.0.4" - semver "^7.3.5" - -postcss-merge-longhand@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.0.3.tgz#42194a5ffbaa5513edbf606ef79c44958564658b" - integrity sha512-kmB+1TjMTj/bPw6MCDUiqSA5e/x4fvLffiAdthra3a0m2/IjTrWsTmD3FdSskzUjEwkj5ZHBDEbv5dOcqD7CMQ== - dependencies: - css-color-names "^1.0.1" - postcss-value-parser "^4.1.0" - stylehacks "^5.0.1" - -postcss-merge-rules@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz#d6e4d65018badbdb7dcc789c4f39b941305d410a" - integrity sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg== - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - cssnano-utils "^2.0.1" - postcss-selector-parser "^6.0.5" - vendors "^1.0.3" - -postcss-minify-font-values@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz#a90cefbfdaa075bd3dbaa1b33588bb4dc268addf" - integrity sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA== - dependencies: - postcss-value-parser "^4.1.0" - -postcss-minify-gradients@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz#f970a11cc71e08e9095e78ec3a6b34b91c19550e" - integrity sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q== - dependencies: - colord "^2.9.1" - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-minify-params@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz#371153ba164b9d8562842fdcd929c98abd9e5b6c" - integrity sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw== - dependencies: - alphanum-sort "^1.0.2" - browserslist "^4.16.0" - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz#4385c845d3979ff160291774523ffa54eafd5a54" - integrity sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og== - dependencies: - alphanum-sort "^1.0.2" - postcss-selector-parser "^6.0.5" - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-normalize-charset@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz#121559d1bebc55ac8d24af37f67bd4da9efd91d0" - integrity sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg== - -postcss-normalize-display-values@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz#62650b965981a955dffee83363453db82f6ad1fd" - integrity sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ== - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-normalize-positions@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz#868f6af1795fdfa86fbbe960dceb47e5f9492fe5" - integrity sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg== - dependencies: - postcss-value-parser "^4.1.0" - -postcss-normalize-repeat-style@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz#cbc0de1383b57f5bb61ddd6a84653b5e8665b2b5" - integrity sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w== - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-normalize-string@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz#d9eafaa4df78c7a3b973ae346ef0e47c554985b0" - integrity sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA== - dependencies: - postcss-value-parser "^4.1.0" - -postcss-normalize-timing-functions@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz#8ee41103b9130429c6cbba736932b75c5e2cb08c" - integrity sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q== - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-normalize-unicode@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz#82d672d648a411814aa5bf3ae565379ccd9f5e37" - integrity sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA== - dependencies: - browserslist "^4.16.0" - postcss-value-parser "^4.1.0" - -postcss-normalize-url@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz#ddcdfb7cede1270740cf3e4dfc6008bd96abc763" - integrity sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ== - dependencies: - is-absolute-url "^3.0.3" - normalize-url "^6.0.1" - postcss-value-parser "^4.1.0" - -postcss-normalize-whitespace@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz#b0b40b5bcac83585ff07ead2daf2dcfbeeef8e9a" - integrity sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA== - dependencies: - postcss-value-parser "^4.1.0" - -postcss-ordered-values@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz#1f351426977be00e0f765b3164ad753dac8ed044" - integrity sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ== - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-reduce-initial@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz#9d6369865b0f6f6f6b165a0ef5dc1a4856c7e946" - integrity sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw== - dependencies: - browserslist "^4.16.0" - caniuse-api "^3.0.0" - -postcss-reduce-transforms@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz#93c12f6a159474aa711d5269923e2383cedcf640" - integrity sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA== - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: - version "6.0.6" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" - integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-svgo@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.0.3.tgz#d945185756e5dfaae07f9edb0d3cae7ff79f9b30" - integrity sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA== - dependencies: - postcss-value-parser "^4.1.0" - svgo "^2.7.0" - -postcss-unique-selectors@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz#3be5c1d7363352eff838bd62b0b07a0abad43bfc" - integrity sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w== - dependencies: - alphanum-sort "^1.0.2" - postcss-selector-parser "^6.0.5" - uniqs "^2.0.0" - -postcss-url@^10.1.3: - version "10.1.3" - resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-10.1.3.tgz#54120cc910309e2475ec05c2cfa8f8a2deafdf1e" - integrity sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw== - dependencies: - make-dir "~3.1.0" - mime "~2.5.2" - minimatch "~3.0.4" - xxhashjs "~0.2.2" - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss@^8.1.10, postcss@^8.2.15, postcss@^8.3.11, postcss@^8.3.5, postcss@^8.3.8: - version "8.3.11" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.11.tgz#c3beca7ea811cd5e1c4a3ec6d2e7599ef1f8f858" - integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA== - dependencies: - nanoid "^3.1.30" - picocolors "^1.0.0" - source-map-js "^0.6.2" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -pretty-bytes@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-time@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" - integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== - -printj@~1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" - integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" - integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74= - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise@^7.0.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - -protobufjs@^6.10.0: - version "6.11.2" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b" - integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" - long "^4.0.0" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -pug-attrs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-3.0.0.tgz#b10451e0348165e31fad1cc23ebddd9dc7347c41" - integrity sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA== - dependencies: - constantinople "^4.0.1" - js-stringify "^1.0.2" - pug-runtime "^3.0.0" - -pug-code-gen@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-3.0.2.tgz#ad190f4943133bf186b60b80de483100e132e2ce" - integrity sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg== - dependencies: - constantinople "^4.0.1" - doctypes "^1.1.0" - js-stringify "^1.0.2" - pug-attrs "^3.0.0" - pug-error "^2.0.0" - pug-runtime "^3.0.0" - void-elements "^3.1.0" - with "^7.0.0" - -pug-error@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-2.0.0.tgz#5c62173cb09c34de2a2ce04f17b8adfec74d8ca5" - integrity sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ== - -pug-filters@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-4.0.0.tgz#d3e49af5ba8472e9b7a66d980e707ce9d2cc9b5e" - integrity sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A== - dependencies: - constantinople "^4.0.1" - jstransformer "1.0.0" - pug-error "^2.0.0" - pug-walk "^2.0.0" - resolve "^1.15.1" - -pug-lexer@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-5.0.1.tgz#ae44628c5bef9b190b665683b288ca9024b8b0d5" - integrity sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w== - dependencies: - character-parser "^2.2.0" - is-expression "^4.0.0" - pug-error "^2.0.0" - -pug-linker@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-4.0.0.tgz#12cbc0594fc5a3e06b9fc59e6f93c146962a7708" - integrity sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw== - dependencies: - pug-error "^2.0.0" - pug-walk "^2.0.0" - -pug-load@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-3.0.0.tgz#9fd9cda52202b08adb11d25681fb9f34bd41b662" - integrity sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ== - dependencies: - object-assign "^4.1.1" - pug-walk "^2.0.0" - -pug-parser@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-6.0.0.tgz#a8fdc035863a95b2c1dc5ebf4ecf80b4e76a1260" - integrity sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw== - dependencies: - pug-error "^2.0.0" - token-stream "1.0.0" - -pug-plain-loader@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pug-plain-loader/-/pug-plain-loader-1.1.0.tgz#59f3b475284871afcd6a18d2ad3318b150fdc533" - integrity sha512-1nYgIJLaahRuHJHhzSPODV44aZfb00bO7kiJiMkke6Hj4SVZftuvx6shZ4BOokk50dJc2RSFqNUBOlus0dniFQ== - dependencies: - loader-utils "^1.1.0" - -pug-runtime@^3.0.0, pug-runtime@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-3.0.1.tgz#f636976204723f35a8c5f6fad6acda2a191b83d7" - integrity sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg== - -pug-strip-comments@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz#f94b07fd6b495523330f490a7f554b4ff876303e" - integrity sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ== - dependencies: - pug-error "^2.0.0" - -pug-walk@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-2.0.0.tgz#417aabc29232bb4499b5b5069a2b2d2a24d5f5fe" - integrity sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ== - -pug@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/pug/-/pug-3.0.2.tgz#f35c7107343454e43bc27ae0ff76c731b78ea535" - integrity sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw== - dependencies: - pug-code-gen "^3.0.2" - pug-filters "^4.0.0" - pug-lexer "^5.0.1" - pug-linker "^4.0.0" - pug-load "^3.0.0" - pug-parser "^6.0.0" - pug-runtime "^3.0.1" - pug-strip-comments "^2.0.0" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -querystring@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" - integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -rc9@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/rc9/-/rc9-1.2.0.tgz#ef098181fdde714efc4c426383d6e46c14b1254a" - integrity sha512-/jknmhG0USFAx5uoKkAKhtG40sONds9RWhFHrP1UzJ3OvVfqFWOypSUpmsQD0fFwAV7YtzHhsn3QNasfAoxgcQ== - dependencies: - defu "^2.0.4" - destr "^1.0.0" - flat "^5.0.0" - -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= - dependencies: - pify "^2.3.0" - -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdir-glob@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.1.tgz#f0e10bb7bf7bfa7e0add8baffdc54c3f7dbee6c4" - integrity sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA== - dependencies: - minimatch "^3.0.4" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -readline2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" - integrity sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - mute-stream "0.0.5" - -redis-commands@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.7.0.tgz#15a6fea2d58281e27b1cd1acfb4b293e278c3a89" - integrity sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ== - -redis-errors@^1.0.0, redis-errors@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" - integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60= - -redis-parser@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" - integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ= - dependencies: - redis-errors "^1.0.0" - -regexpp@^3.0.0, regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-uncached@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve@^1.1.7, resolve@^1.10.1, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.2.0, resolve@^1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - -restore-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" - integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^2.6.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rollup-plugin-terser@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" - integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== - dependencies: - "@babel/code-frame" "^7.10.4" - jest-worker "^26.2.1" - serialize-javascript "^4.0.0" - terser "^5.0.0" - -rollup-plugin-visualizer@^5.5.2: - version "5.5.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.5.2.tgz#ae2130ee5ae4a2d901e764e492b71357cb95eed7" - integrity sha512-sh+P9KhuWTzeStyRA5yNZpoEFGuj5Ph34JLMa9+muhU8CneFf9L0XE4fmAwAojJLWp//uLUEyytBPSCdZEg5AA== - dependencies: - nanoid "^3.1.22" - open "^7.4.2" - source-map "^0.7.3" - yargs "^16.2.0" - -rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^2.57.0, rollup@^2.59.0: - version "2.60.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.60.0.tgz#4ee60ab7bdd0356763f87d7099f413e5460fc193" - integrity sha512-cHdv9GWd58v58rdseC8e8XIaPUo8a9cgZpnCMMDGZFDZKEODOiPPEQFXLriWr/TjXzhPPmG5bkAztPsOARIcGQ== - optionalDependencies: - fsevents "~2.3.2" - -run-async@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" - integrity sha1-yK1KXhEGYeQCp9IbUw4AnyX444k= - dependencies: - once "^1.3.0" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rx-lite@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" - integrity sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI= - -safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sass-lint@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/sass-lint/-/sass-lint-1.13.1.tgz#5fd2b2792e9215272335eb0f0dc607f61e8acc8f" - integrity sha512-DSyah8/MyjzW2BWYmQWekYEKir44BpLqrCFsgs9iaWiVTcwZfwXHF586hh3D1n+/9ihUNMfd8iHAyb9KkGgs7Q== - dependencies: - commander "^2.8.1" - eslint "^2.7.0" - front-matter "2.1.2" - fs-extra "^3.0.1" - glob "^7.0.0" - globule "^1.0.0" - gonzales-pe-sl "^4.2.3" - js-yaml "^3.5.4" - known-css-properties "^0.3.0" - lodash.capitalize "^4.1.0" - lodash.kebabcase "^4.0.0" - merge "^1.2.0" - path-is-absolute "^1.0.0" - util "^0.10.3" - -sass-loader@^12.3.0: - version "12.3.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.3.0.tgz#93278981c189c36a58cbfc37d4b9cef0cdc02871" - integrity sha512-6l9qwhdOb7qSrtOu96QQ81LVl8v6Dp9j1w3akOm0aWHyrTYtagDt5+kS32N4yq4hHk3M+rdqoRMH+lIdqvW6HA== - dependencies: - klona "^2.0.4" - neo-async "^2.6.2" - -sass@^1.43.4: - version "1.43.4" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.43.4.tgz#68c7d6a1b004bef49af0d9caf750e9b252105d1f" - integrity sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg== - dependencies: - chokidar ">=3.0.0 <4.0.0" - -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -schema-utils@^2.6.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" - integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -scule@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/scule/-/scule-0.2.1.tgz#0c1dc847b18e07219ae9a3832f2f83224e2079dc" - integrity sha512-M9gnWtn3J0W+UhJOHmBxBTwv8mZCan5i1Himp60t6vvZcor0wr+IM0URKmIglsWJ7bRujNAVVN77fp+uZaWoKg== - -selfsigned@^1.10.8: - version "1.10.11" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" - integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== - dependencies: - node-forge "^0.10.0" - -semver@^5.3.0, semver@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0, semver@^6.1.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" - integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - -serve-placeholder@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/serve-placeholder/-/serve-placeholder-1.2.4.tgz#513eac9c435272c7fe9a86612c852ae9b1467fd4" - integrity sha512-jWD9cZXLcr4vHTTL5KEPIUBUYyOWN/z6v/tn0l6XxFhi9iqV3Fc5Y1aFeduUyz+cx8sALzGCUczkPfeOlrq9jg== - dependencies: - defu "^5.0.0" - -serve-static@^1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shelljs@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.6.1.tgz#ec6211bed1920442088fe0f70b2837232ed2c8a8" - integrity sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg= - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.5" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f" - integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ== - -sirv@^1.0.7: - version "1.0.18" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.18.tgz#105fab52fb656ce8a2bebbf36b11052005952899" - integrity sha512-f2AOPogZmXgJ9Ma2M22ZEhc1dNtRIzcEkiflMFeVTRq+OViOZMvH1IPMVOwrKaxpSaHioBJiDR0SluRqGa7atA== - dependencies: - "@polka/url" "^1.0.0-next.20" - mime "^2.3.1" - totalist "^1.0.0" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -source-list-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-js@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" - integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== - -source-map-support@~0.5.20: - version "0.5.20" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= - -source-map@^0.5.0: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3, source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stackframe@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" - integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== - -standard-as-callback@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" - integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== - -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -std-env@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.0.1.tgz#bc4cbc0e438610197e34c2d79c3df30b491f5182" - integrity sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw== - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.1 || ^2.0.0", string-width@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -"strip-ansi@^3.0.1 || ^4.0.0", strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" - integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== - dependencies: - ansi-regex "^6.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" - integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E= - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -style-resources-loader@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/style-resources-loader/-/style-resources-loader-1.4.1.tgz#87f520e6c8120a71e756726c1c53a78c544ca7db" - integrity sha512-UaAoQXq20relw6B633z4QZDxDyW7gevTt1e0y3MZtzdZfnvB90UL658czAgNc609Y7Kn5ErdthK9bSVhnykBUA== - dependencies: - glob "^7.1.6" - loader-utils "^2.0.0" - schema-utils "^3.0.0" - -stylehacks@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.0.1.tgz#323ec554198520986806388c7fdaebc38d2c06fb" - integrity sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA== - dependencies: - browserslist "^4.16.0" - postcss-selector-parser "^6.0.4" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -svg-tags@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" - integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= - -svgo@^2.7.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - -table@^3.7.8: - version "3.8.3" - resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" - integrity sha1-K7xULw/amGGnVdOUf+/Ys/UThV8= - dependencies: - ajv "^4.7.0" - ajv-keywords "^1.0.0" - chalk "^1.1.1" - lodash "^4.0.0" - slice-ansi "0.0.4" - string-width "^2.0.0" - -table@^6.7.3: - version "6.7.3" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.3.tgz#255388439715a738391bd2ee4cbca89a4d05a9b7" - integrity sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw== - dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - -tapable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tar-stream@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar@^4: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== - dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" - -tar@^6.1.11: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -terser-webpack-plugin@^5.1.3: - version "5.2.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz#ce65b9880a0c36872555c4874f45bbdb02ee32c9" - integrity sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g== - dependencies: - jest-worker "^27.0.6" - schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - source-map "^0.6.1" - terser "^5.7.2" - -terser@^5.0.0, terser@^5.7.2: - version "5.9.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" - integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.20" - -text-table@^0.2.0, text-table@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -time-fix-plugin@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/time-fix-plugin/-/time-fix-plugin-2.0.7.tgz#4ba70ae2e40cedf34dabe505eda7b71b1b244f50" - integrity sha512-uVFet1LQToeUX0rTcSiYVYVoGuBpc8gP/2jnlUzuHMHe+gux6XLsNzxLUweabMwiUj5ejhoIMsUI55nVSEa/Vw== - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -token-stream@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-1.0.0.tgz#cc200eab2613f4166d27ff9afc7ca56d49df6eb4" - integrity sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ= - -totalist@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" - integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -ts-protoc-gen@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/ts-protoc-gen/-/ts-protoc-gen-0.15.0.tgz#2fec5930b46def7dcc9fa73c060d770b7b076b7b" - integrity sha512-TycnzEyrdVDlATJ3bWFTtra3SCiEP0W0vySXReAuEygXCUr1j2uaVyL0DhzjwuUdQoW5oXPwk6oZWeA0955V+g== - dependencies: - google-protobuf "^3.15.5" - -tsconfig-paths@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz#954c1fe973da6339c78e06b03ce2e48810b65f36" - integrity sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" - strip-bom "^3.0.0" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.8.0: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-fest@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" - integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" - integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -ufo@^0.7.9: - version "0.7.9" - resolved "https://registry.yarnpkg.com/ufo/-/ufo-0.7.9.tgz#0268e3734b413c9ed6f3510201f42372821b875c" - integrity sha512-6t9LrLk3FhqTS+GW3IqlITtfRB5JAVr5MMNjpBECfK827W+Vh5Ilw/LhTcHWrt6b3hkeBvcbjx4Ti7QVFzmcww== - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -unctx@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unctx/-/unctx-1.0.2.tgz#d8d9c83a0965aa277f61058c94548fcee6861e48" - integrity sha512-qxRfnQZWJqkg180JeOCJEvtjj5/7wnWVqkNHln8muY5/z8kMWBFqikFBPwIPCQrZJ+jtaSWkVHJkuHUAXls6zw== - -undici@^4.9.5: - version "4.9.5" - resolved "https://registry.yarnpkg.com/undici/-/undici-4.9.5.tgz#6531b6b2587c2c42d77c0dded83d058a328775f8" - integrity sha512-t59IFVYiMnFThboJL9izqwsDEfSbZDPZ/8iCYBCkEFLy63x9m4YaNt0E+r5+X993syC9M0W/ksusZC9YuAamMg== - -unenv@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/unenv/-/unenv-0.4.1.tgz#a8cf1227112240bd3a64341c5d853fbd463eb488" - integrity sha512-Na9RJ+35eMbUdwyhXA9vZxsUpKwMvaOHkQEhzACL26/W7pa/u1lnJDx0Z00OOuks8yWg4vSKjMmF0FzPZmQRJA== - dependencies: - buffer "^6.0.2" - defu "^5.0.0" - events "^3.2.0" - inherits "^2.0.4" - mime "^2.4.6" - node-fetch "^3.0.0" - process "^0.11.10" - upath "^2.0.1" - util "^0.12.4" - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unplugin@^0.2.20: - version "0.2.20" - resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.2.20.tgz#fd579b8f302459eb1ae3616f71c2ba93e6076187" - integrity sha512-CGnCaTqNjqeixpIlNEkpysxfR2hb4xv21xa4IURXnhYTfCp73UWuG0KcdanuhFJbwO5w+EGK4XaAaqdb/1vWbg== - dependencies: - webpack-virtual-modules "^0.4.3" - -unstorage@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-0.3.2.tgz#fddf995dcfac3269e1289fc193a6a58aa67e5b63" - integrity sha512-I752esvZUGVtUY7qxoYtnOLBKjGKF31eEvK3TObKsuP81SWZ93KyC4EyHF1ATvHpakuo7NU2HLnW5mmYig4dTw== - dependencies: - anymatch "^3.1.1" - chokidar "^3.5.2" - destr "^1.1.0" - h3 "^0.3.3" - ioredis "^4.27.9" - listhen "^0.2.4" - mri "^1.1.6" - ohmyfetch "^0.4.5" - ufo "^0.7.9" - ws "^8.2.1" - -untyped@^0.2.12: - version "0.2.13" - resolved "https://registry.yarnpkg.com/untyped/-/untyped-0.2.13.tgz#31be48c9cf1d81b65d05f762a0332b2b5e9a9cb3" - integrity sha512-dnvCmDKTb+zg504JyQ9h1sWINAyxnP6KgmvUH6s6BjLV+3fvjZTiUklL15VvEqpDjy4Leq/xzlZ+JxskeoM5mg== - -upath@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" - integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -url-loader@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" - integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.27" - schema-utils "^3.0.0" - -user-home@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" - integrity sha1-nHC/2Babwdy/SGBODwS4tJzenp8= - dependencies: - os-homedir "^1.0.0" - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util@^0.10.3: - version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== - dependencies: - inherits "2.0.3" - -util@^0.12.4: - version "0.12.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" - integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - safe-buffer "^5.1.2" - which-typed-array "^1.1.2" - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -v8-compile-cache@^2.0.3, v8-compile-cache@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -vendors@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -vite@^2.6.14: - version "2.6.14" - resolved "https://registry.yarnpkg.com/vite/-/vite-2.6.14.tgz#35c09a15e4df823410819a2a239ab11efb186271" - integrity sha512-2HA9xGyi+EhY2MXo0+A2dRsqsAG3eFNEVIo12olkWhOmc8LfiM+eMdrXf+Ruje9gdXgvSqjLI9freec1RUM5EA== - dependencies: - esbuild "^0.13.2" - postcss "^8.3.8" - resolve "^1.20.0" - rollup "^2.57.0" - optionalDependencies: - fsevents "~2.3.2" - -void-elements@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" - integrity sha1-YU9/v42AHwu18GYfWy9XhXUOTwk= - -vue-bundle-renderer@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/vue-bundle-renderer/-/vue-bundle-renderer-0.3.2.tgz#6b671da04f0685ba33dc55f9f189d21aabcc4ffc" - integrity sha512-KqluDHXysSXVV84hSgYTskd+w9zoYxtaT8ZO4J7KZI3EShpGRjr+yEIQC0/fLicx931h7unsKRgao/kjHaUH3g== - dependencies: - bundle-runner "^0.0.1" - -vue-eslint-parser@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-8.0.1.tgz#25e08b20a414551531f3e19f999902e1ecf45f13" - integrity sha512-lhWjDXJhe3UZw2uu3ztX51SJAPGPey1Tff2RK3TyZURwbuI4vximQLzz4nQfCv8CZq4xx7uIiogHMMoSJPr33A== - dependencies: - debug "^4.3.2" - eslint-scope "^6.0.0" - eslint-visitor-keys "^3.0.0" - espree "^9.0.0" - esquery "^1.4.0" - lodash "^4.17.21" - semver "^7.3.5" - -vue-loader@^16.8.3: - version "16.8.3" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.8.3.tgz#d43e675def5ba9345d6c7f05914c13d861997087" - integrity sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA== - dependencies: - chalk "^4.1.0" - hash-sum "^2.0.0" - loader-utils "^2.0.0" - -vue-router@^4.0.12: - version "4.0.12" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.12.tgz#8dc792cddf5bb1abcc3908f9064136de7e13c460" - integrity sha512-CPXvfqe+mZLB1kBWssssTiWg4EQERyqJZes7USiqfW9B5N2x+nHlnsM1D3b5CaJ6qgCvMmYJnz+G0iWjNCvXrg== - dependencies: - "@vue/devtools-api" "^6.0.0-beta.18" - -vue-server-renderer@^2.6.14: - version "2.6.14" - resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.6.14.tgz#c8bffff152df6b47b858818ef8d524d2fc351654" - integrity sha512-HifYRa/LW7cKywg9gd4ZtvtRuBlstQBao5ZCWlg40fyB4OPoGfEXAzxb0emSLv4pBDOHYx0UjpqvxpiQFEuoLA== - dependencies: - chalk "^1.1.3" - hash-sum "^1.0.2" - he "^1.1.0" - lodash.template "^4.5.0" - lodash.uniq "^4.5.0" - resolve "^1.2.0" - serialize-javascript "^3.1.0" - source-map "0.5.6" - -vue-style-loader@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35" - integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg== - dependencies: - hash-sum "^1.0.2" - loader-utils "^1.0.2" - -vue@^3.2.21: - version "3.2.21" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.21.tgz#55f5665172d95cf97e806b9aad0a375180be23a1" - integrity sha512-jpy7ckXdyclfRzqLjL4mtq81AkzQleE54KjZsJg/9OorNVurAxdlU5XpD49GpjKdnftuffKUvx2C5jDOrgc/zg== - dependencies: - "@vue/compiler-dom" "3.2.21" - "@vue/compiler-sfc" "3.2.21" - "@vue/runtime-dom" "3.2.21" - "@vue/server-renderer" "3.2.21" - "@vue/shared" "3.2.21" - -watchpack@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce" - integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -web-streams-polyfill@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz#a6b74026b38e4885869fb5c589e90b95ccfc7965" - integrity sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - -webpack-bundle-analyzer@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5" - integrity sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ== - dependencies: - acorn "^8.0.4" - acorn-walk "^8.0.0" - chalk "^4.1.0" - commander "^7.2.0" - gzip-size "^6.0.0" - lodash "^4.17.20" - opener "^1.5.2" - sirv "^1.0.7" - ws "^7.3.1" - -webpack-dev-middleware@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz#97c948144349177856a3d2d9c612cc3fee180cf1" - integrity sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ== - dependencies: - colorette "^2.0.10" - memfs "^3.2.2" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^3.1.0" - -webpack-hot-middleware@^2.25.1: - version "2.25.1" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.1.tgz#581f59edf0781743f4ca4c200fd32c9266c6cf7c" - integrity sha512-Koh0KyU/RPYwel/khxbsDz9ibDivmUbrRuKSSQvW42KSDdO4w23WI3SkHpSUKHE76LrFnnM/L7JCrpBwu8AXYw== - dependencies: - ansi-html-community "0.0.8" - html-entities "^2.1.0" - querystring "^0.2.0" - strip-ansi "^6.0.0" - -webpack-sources@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" - integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== - dependencies: - source-list-map "^2.0.1" - source-map "^0.6.1" - -webpack-sources@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.1.tgz#251a7d9720d75ada1469ca07dbb62f3641a05b6d" - integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA== - -webpack-virtual-modules@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz#cd597c6d51d5a5ecb473eea1983a58fa8a17ded9" - integrity sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw== - -webpack@^5.63.0, webpack@^5.64.0: - version "5.64.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.64.0.tgz#db3e12546f755930ccc9e0e21ba660871940c615" - integrity sha512-UclnN24m054HaPC45nmDEosX6yXWD+UGC12YtUs5i356DleAUGMDC9LBAw37xRRfgPKYIdCYjGA7RZ1AA+ZnGg== - dependencies: - "@types/eslint-scope" "^3.7.0" - "@types/estree" "^0.0.50" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.4.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.8.3" - es-module-lexer "^0.9.0" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.4" - json-parse-better-errors "^1.0.2" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" - watchpack "^2.2.0" - webpack-sources "^3.2.0" - -webpackbar@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-5.0.2.tgz#d3dd466211c73852741dfc842b7556dcbc2b0570" - integrity sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ== - dependencies: - chalk "^4.1.0" - consola "^2.15.3" - pretty-time "^1.1.0" - std-env "^3.0.1" - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-typed-array@^1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793" - integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-abstract "^1.18.5" - foreach "^2.0.5" - has-tostringtag "^1.0.0" - is-typed-array "^1.1.7" - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0, wide-align@^1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -with@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/with/-/with-7.0.2.tgz#ccee3ad542d25538a7a7a80aad212b9828495bac" - integrity sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w== - dependencies: - "@babel/parser" "^7.9.6" - "@babel/types" "^7.9.6" - assert-never "^1.2.1" - babel-walk "3.0.0-canary-5" - -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= - dependencies: - mkdirp "^0.5.1" - -ws@^7.3.1: - version "7.5.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" - integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== - -ws@^8.2.1: - version "8.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" - integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== - -xtend@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -xxhashjs@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" - integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== - dependencies: - cuint "^0.2.2" - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.0, yallist@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0, yaml@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs@^16.1.1, yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -zip-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.1.0.tgz#51dd326571544e36aa3f756430b313576dc8fc79" - integrity sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A== - dependencies: - archiver-utils "^2.1.0" - compress-commons "^4.1.0" - readable-stream "^3.6.0" diff --git a/rules/python/BUILD.bazel b/rules/python/BUILD.bazel index 23def8b..d3d4213 100644 --- a/rules/python/BUILD.bazel +++ b/rules/python/BUILD.bazel @@ -1,40 +1,4 @@ -load("@bazel_tools//tools/python:toolchain.bzl", "py_runtime_pair") -load("@rules_python//python:defs.bzl", "py_runtime") - -py_runtime( - name = "python2.7", - files = [], - interpreter_path = select({ - "//:osx": "/usr/local/bin/python2.7", - "//:linux": "/usr/bin/python2.7", - }), - python_version = "PY2", - visibility = ["//visibility:public"], -) - -py_runtime( - name = "python3", - files = [], - interpreter_path = select({ - "//:osx": "/usr/local/bin/python3.9", - "//:linux": "/usr/bin/python3.9", - }), - python_version = "PY3", - visibility = ["//visibility:public"], -) - -py_runtime_pair( - name = "hyperboria_py_runtime_pair", - py2_runtime = ":python2.7", - py3_runtime = ":python3", -) - -toolchain( - name = "py_toolchain", - toolchain = ":hyperboria_py_runtime_pair", - toolchain_type = "@bazel_tools//tools/python:toolchain_type", -) - exports_files([ "requirements.txt", + "requirements-lock.txt", ]) diff --git a/rules/python/requirements-lock.txt b/rules/python/requirements-lock.txt index 82cfaf2..98c8b30 100644 --- a/rules/python/requirements-lock.txt +++ b/rules/python/requirements-lock.txt @@ -7,117 +7,157 @@ aiogrobid==0.1.2 aiogrpcclient==1.1.11 aiodns==3.0.0 aiofiles==0.8.0 +aiogrpcclient==1.1.11 aiohttp==3.8.1 aiohttp-socks==0.7.1 aiokafka==0.7.2 aiokit==1.1.2 aiosignal==1.2.0 +aiosumma==2.8.13 asn1crypto==1.5.1 +async-generator==1.10 async-timeout==4.0.2 -attrs==21.4.0 -backports.zoneinfo==0.2.1 +attrs==22.1.0 base58==2.1.1 -beautifulsoup4==4.10.0 -bjoern==3.2.1 -blis==0.7.7 +beautifulsoup4==4.11.1 +blis==0.7.8 Brotli==1.0.9 -cachetools==5.0.0 -catalogue==2.0.7 +cachetools==5.2.0 +catalogue==2.0.8 cchardet==2.1.7 certbuilder==0.14.2 -certifi==2021.10.8 -cffi==1.15.0 -charset-normalizer==2.0.12 -click==8.0.4 -cryptography==36.0.2 +certifi==2022.6.15 +cffi==1.15.1 +chardet==5.0.0 +charset-normalizer==2.1.0 +click==8.1.3 +coverage==6.4.3 +croniter==1.3.5 +cryptography==37.0.4 +cycler==0.11.0 cymem==2.0.6 -ecdsa==0.17.0 +DAWG-Python==0.7.2 +dateparser==1.1.1 +deprecation==2.1.0 +docopt==0.6.2 +ecdsa==0.18.0 emoji==1.7.0 -en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.2.0/en_core_web_sm-3.2.0-py3-none-any.whl +en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.3.0/en_core_web_sm-3.3.0-py3-none-any.whl entrypoints==0.4 +fasttext==0.9.2 fire==0.4.0 -flake8==4.0.1 -Flask==2.0.3 -Flask-SQLAlchemy==2.5.1 -Flask-WTF==1.0.0 -frozenlist==1.3.0 +flake8==5.0.4 +fonttools==4.35.0 +frozenlist==1.3.1 greenlet==1.1.2 -grpcio==1.44.0 +grpcio==1.47.0 +h11==0.13.0 idna==3.3 +iniconfig==1.1.1 isort==5.10.1 -itsdangerous==2.1.2 +izihawa-nlptools==1.1.7 izihawa-types==0.1.3 -izihawa-utils==1.0.2 -Jinja2==3.1.1 +izihawa-utils==1.0.7 +Jinja2==3.1.2 joblib==1.1.0 +jq==1.2.2 kafka-python==2.0.2 +kiwisolver==1.4.4 langcodes==3.3.0 lemminflect==0.2.2 lightgbm==3.3.2 -lru-dict==1.1.7 -lxml==4.8.0 +lru-dict==1.1.8 +lxml==4.9.1 MarkupSafe==2.1.1 -mccabe==0.6.1 +matplotlib==3.5.3 +mccabe==0.7.0 multidict==6.0.2 -murmurhash==1.0.6 -numpy==1.22.3 -orjson==3.6.7 +murmurhash==1.0.7 +nltk==3.7 +numpy==1.23.1 +orjson==3.7.11 oscrypto==1.3.0 +outcome==1.2.0 packaging==21.3 +pandas==1.4.3 passlib==1.7.4 pathspec==0.9.0 -pathy==0.6.1 -pip==22.0.4 +pathy==0.6.2 +pikepdf==5.4.2 +Pillow==9.2.0 +pip==22.1.2 +pluggy==1.0.0 ply==3.11 preshed==3.0.6 -prometheus-client==0.13.1 -protobuf==3.19.4 -psycopg==3.0.10 -psycopg-binary==3.0.10 +prometheus-client==0.14.1 +protobuf==4.21.4 +psycopg==3.0.16 +psycopg-binary==3.0.16 psycopg-pool==3.1.1 +py==1.11.0 pyaes==1.6.1 pyasn1==0.4.8 -pycares==4.1.2 -pycld3==0.22 -pycodestyle==2.8.0 +pybind11==2.10.0 +pycares==4.2.1 +pycodestyle==2.9.1 pycparser==2.21 +pycryptodome==3.15.0 pydantic==1.8.2 -pyflakes==2.4.0 -PyJWT==2.3.0 -pyparsing==3.0.7 +pyflakes==2.5.0 +PyJWT==2.4.0 +pymorphy2==0.9.1 +pymorphy2-dicts-ru==2.4.417127.4579844 +pyOpenSSL==22.0.0 +pyparsing==3.0.9 +PyPDF2==2.10.0 PyPika==0.48.9 +PySocks==1.7.1 +pytest==7.1.2 +python-dateutil==2.8.2 python-socks==2.0.3 pytimeparse==1.1.8 +pytz==2022.1 +pytz-deprecation-shim==0.1.0.post0 PyYAML==6.0 recordclass==0.17.2 -requests==2.27.1 -rsa==4.8 -scikit-learn==1.0.2 -scipy==1.8.0 -setuptools==61.2.0 +regex==2022.3.2 +requests==2.28.1 +rsa==4.9 +scikit-learn==1.1.2 +scipy==1.9.0 +seaborn==0.11.2 +selenium==4.3.0 +setuptools==63.4.2 six==1.16.0 smart-open==5.2.1 -soupsieve==2.3.1 -spacy==3.2.3 +sniffio==1.2.0 +sortedcontainers==2.4.0 +soupsieve==2.3.2.post1 +spacy==3.3.1 spacy-legacy==3.0.9 -spacy-loggers==1.0.1 -SQLAlchemy==1.4.32 +spacy-loggers==1.0.3 +SQLAlchemy==1.4.39 sqlparse==0.4.2 -srsly==2.4.2 +srsly==2.4.4 Telethon==1.24.0 tenacity==8.0.1 termcolor==1.1.0 -thinc==8.0.15 +textblob==0.17.1 +thinc==8.0.17 threadpoolctl==3.1.0 -tqdm==4.63.1 -typer==0.4.0 -typing_extensions==4.1.1 -urllib3==1.26.9 +tomli==2.0.1 +tqdm==4.64.0 +trio==0.21.0 +trio-websocket==0.9.2 +typer==0.4.2 +typing_extensions==4.3.0 +tzdata==2022.2 +tzlocal==4.2 +urllib3==1.26.11 uvloop==0.16.0 -wasabi==0.9.0 -Werkzeug==2.0.3 +wasabi==0.10.1 wheel==0.37.1 -WTForms==3.0.1 -WTForms-JSON==0.3.4 -yamllint==1.26.3 -yarl==1.7.2 +wsproto==1.1.0 +www-authenticate==0.9.2 +yamllint==1.27.1 +yarl==1.8.1 diff --git a/rules/python/requirements.txt b/rules/python/requirements.txt index a9b05b8..4935167 100644 --- a/rules/python/requirements.txt +++ b/rules/python/requirements.txt @@ -10,23 +10,25 @@ aiofiles aiohttp aiohttp_socks aiokafka -aiokit -backports_zoneinfo +aiosumma base58 beautifulsoup4 -bjoern brotli cachetools cchardet certbuilder +chardet +coverage +croniter cryptography -emoji +dateparser +ecdsa +emoji==1.7.0 entrypoints -https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.2.0/en_core_web_sm-3.2.0-py3-none-any.whl +https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.3.0/en_core_web_sm-3.3.0-py3-none-any.whl +fasttext fire flake8 -flask_sqlalchemy -flask_wtf grpcio isort izihawa-utils @@ -34,32 +36,42 @@ izihawa-types jinja2 lemminflect lightgbm +jq lru_dict lxml numpy orjson +pandas passlib pathspec +pikepdf ply prometheus_client protobuf psycopg psycopg_binary psycopg_pool +pycryptodome pypika -pycld3 pyflakes pyjwt +pymorphy2 +pypdf2 +pytest +python-dateutil python_socks pytimeparse pyyaml recordclass +seaborn +selenium setuptools spacy sqlalchemy telethon tenacity +textblob uvloop wheel -wtforms_json +www-authenticate yamllint \ No newline at end of file diff --git a/rules/rust/BUILD.bazel b/rules/rust/BUILD.bazel deleted file mode 100644 index 9978e6b..0000000 --- a/rules/rust/BUILD.bazel +++ /dev/null @@ -1,15 +0,0 @@ -""" -@generated -cargo-raze generated Bazel file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# Export file for Stardoc support -exports_files( - [ - "crates.bzl", - "rustfmt.toml", - ], - visibility = ["//visibility:public"], -) diff --git a/rules/rust/Cargo.lock b/rules/rust/Cargo.lock deleted file mode 100644 index ad5bde6..0000000 --- a/rules/rust/Cargo.lock +++ /dev/null @@ -1,2458 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "ahash" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" - -[[package]] -name = "ahash" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" -dependencies = [ - "getrandom", - "once_cell", - "version_check", -] - -[[package]] -name = "aho-corasick" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" -dependencies = [ - "memchr", -] - -[[package]] -name = "alloc-no-stdlib" -version = "2.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ef4730490ad1c4eae5c4325b2a95f521d023e5c885853ff7aca0a6a1631db3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "697ed7edc0f1711de49ce108c541623a0af97c6c60b2f6e2b65229847ac843c2" -dependencies = [ - "alloc-no-stdlib", -] - -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - -[[package]] -name = "anyhow" -version = "1.0.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27" - -[[package]] -name = "async-stream" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e" -dependencies = [ - "async-stream-impl", - "futures-core", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "async-trait" -version = "0.1.52" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "base64" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitpacking" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8c7d2ac73c167c06af4a5f37e6e59d84148d57ccbe4480b76f0273eefea82d7" -dependencies = [ - "crunchy", -] - -[[package]] -name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding", - "byte-tools", - "byteorder", - "generic-array", -] - -[[package]] -name = "block-padding" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -dependencies = [ - "byte-tools", -] - -[[package]] -name = "brotli" -version = "3.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f838e47a451d5a8fa552371f80024dd6ace9b7acdf25c4c3d0f9bc6816fb1c39" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[package]] -name = "bumpalo" -version = "3.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" - -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "bytes" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" - -[[package]] -name = "cc" -version = "1.0.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" - -[[package]] -name = "census" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5927edd8345aef08578bcbb4aea7314f340d80c7f4931f99fbeb40b99d8f5060" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" -dependencies = [ - "libc", - "num-integer", - "num-traits", - "time 0.1.44", - "winapi", -] - -[[package]] -name = "clap" -version = "3.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c93436c21e4698bacadf42917db28b23017027a4deccb35dbe47a7e7840123" -dependencies = [ - "atty", - "bitflags", - "indexmap", - "lazy_static", - "os_str_bytes", - "strsim", - "termcolor", - "textwrap", -] - -[[package]] -name = "colored" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" -dependencies = [ - "atty", - "lazy_static", - "winapi", -] - -[[package]] -name = "combine" -version = "4.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b727aacc797f9fc28e355d21f34709ac4fc9adecfe470ad07b8f4464f53062" -dependencies = [ - "memchr", -] - -[[package]] -name = "config" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54ad70579325f1a38ea4c13412b82241c5900700a69785d73e2736bd65a33f86" -dependencies = [ - "async-trait", - "json5", - "lazy_static", - "nom", - "pathdiff", - "ron", - "rust-ini", - "serde", - "serde_json", - "toml", - "yaml-rust", -] - -[[package]] -name = "crc32fast" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae5588f6b3c3cb05239e90bd110f257254aecd01e4635400391aeae07497845" -dependencies = [ - "cfg-if", - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-epoch", - "crossbeam-queue", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" -dependencies = [ - "cfg-if", - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" -dependencies = [ - "autocfg", - "cfg-if", - "crossbeam-utils", - "lazy_static", - "memoffset", - "scopeguard", -] - -[[package]] -name = "crossbeam-queue" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f25d8400f4a7a5778f0e4e52384a48cbd9b5c495d110786187fc750075277a2" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" -dependencies = [ - "cfg-if", - "lazy_static", -] - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "ctor" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f877be4f7c9f246b183111634f75baa039715e3f46ce860677d3b19a69fb229c" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "dashmap" -version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" -dependencies = [ - "cfg-if", - "num_cpus", -] - -[[package]] -name = "diff" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e25ea47919b1560c4e3b7fe0aaab9becf5b84a10325ddf7db0f0ba5e1026499" - -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array", -] - -[[package]] -name = "dlv-list" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68df3f2b690c1b86e65ef7830956aededf3cb0a16f898f79b9a6f421a7b6211b" -dependencies = [ - "rand", -] - -[[package]] -name = "downcast-rs" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" - -[[package]] -name = "either" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" - -[[package]] -name = "fail" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3245a0ca564e7f3c797d20d833a6870f57a728ac967d5225b3ffdef4465011" -dependencies = [ - "lazy_static", - "log", - "rand", -] - -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - -[[package]] -name = "fastdivide" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25c7df09945d65ea8d70b3321547ed414bbc540aad5bac6883d021b970f35b04" - -[[package]] -name = "fastfield_codecs" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e8bfa31546b4ace05092c9db8d251d7bbc298a384875a08c945a473de4f1f" -dependencies = [ - "tantivy-bitpacker", - "tantivy-common 0.1.0", -] - -[[package]] -name = "fastrand" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" -dependencies = [ - "instant", -] - -[[package]] -name = "fixedbitset" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053e" - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "fs2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "futures" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" - -[[package]] -name = "futures-executor" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", - "num_cpus", -] - -[[package]] -name = "futures-io" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" - -[[package]] -name = "futures-macro" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" - -[[package]] -name = "futures-task" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" - -[[package]] -name = "futures-util" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" -dependencies = [ - "typenum", -] - -[[package]] -name = "getrandom" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", -] - -[[package]] -name = "h2" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62eeb471aa3e3c9197aa4bfeabfe02982f6dc96f750486c0bb0009ac58b26d2b" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util 0.6.9", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" -dependencies = [ - "ahash 0.4.7", -] - -[[package]] -name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" -dependencies = [ - "ahash 0.7.6", -] - -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "htmlescape" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163" - -[[package]] -name = "http" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "http-range-header" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" - -[[package]] -name = "httparse" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" - -[[package]] -name = "httpdate" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" - -[[package]] -name = "hyper" -version = "0.14.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043f0e083e9901b6cc658a77d1eb86f4fc650bbb977a4337dd63192826aa85dd" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-timeout" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" -dependencies = [ - "hyper", - "pin-project-lite", - "tokio", - "tokio-io-timeout", -] - -[[package]] -name = "hyperboria" -version = "0.0.0" -dependencies = [ - "clap", - "colored", - "config", - "crossbeam-channel", - "futures", - "futures-util", - "hyper", - "lazy_static", - "num_cpus", - "opentelemetry", - "opentelemetry-prometheus", - "parking_lot 0.12.0", - "prometheus", - "prost", - "prost-types", - "rand", - "rdkafka", - "serde", - "serde_derive", - "serde_yaml", - "signal-hook", - "tantivy", - "tantivy-fst", - "textwrap", - "thiserror", - "tokio", - "tonic", - "tonic-build", - "tower", - "tower-http", - "tracing", - "tracing-appender", - "tracing-futures", - "tracing-subscriber", -] - -[[package]] -name = "indexmap" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" -dependencies = [ - "autocfg", - "hashbrown 0.11.2", -] - -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "itertools" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" - -[[package]] -name = "js-sys" -version = "0.3.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "json5" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" -dependencies = [ - "pest", - "pest_derive", - "serde", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "levenshtein_automata" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25" - -[[package]] -name = "libc" -version = "0.2.121" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f" - -[[package]] -name = "libz-sys" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f35facd4a5673cb5a48822be2be1d4236c1c99cb4113cab7061ac720d5bf859" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "linked-hash-map" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" - -[[package]] -name = "lock_api" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "lru" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb87f3080f6d1d69e8c564c0fcfde1d7aa8cc451ce40cae89479111f03bc0eb" -dependencies = [ - "hashbrown 0.11.2", -] - -[[package]] -name = "lz4_flex" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42c51df9d8d4842336c835df1d85ed447c4813baa237d033d95128bf5552ad8a" -dependencies = [ - "twox-hash", -] - -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata", -] - -[[package]] -name = "measure_time" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f07966480d8562b3622f51df0b4e3fe6ea7ddb3b48b19b0f44ef863c455bdf9" -dependencies = [ - "log", -] - -[[package]] -name = "memchr" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" - -[[package]] -name = "memmap2" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057a3db23999c867821a7a59feb06a578fcb03685e983dff90daf9e7d24ac08f" -dependencies = [ - "libc", -] - -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "mio" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" -dependencies = [ - "libc", - "log", - "miow", - "ntapi", - "wasi 0.11.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi", -] - -[[package]] -name = "multimap" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" - -[[package]] -name = "murmurhash32" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d736ff882f0e85fe9689fb23db229616c4c00aee2b3ac282f666d8f20eb25d4a" -dependencies = [ - "byteorder", -] - -[[package]] -name = "nom" -version = "7.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "ntapi" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" -dependencies = [ - "winapi", -] - -[[package]] -name = "num-integer" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_enum" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "num_threads" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aba1801fb138d8e85e11d0fc70baf4fe1cdfffda7c6cd34a854905df588e5ed0" -dependencies = [ - "libc", -] - -[[package]] -name = "once_cell" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" - -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" - -[[package]] -name = "opentelemetry" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" -dependencies = [ - "async-trait", - "crossbeam-channel", - "dashmap", - "fnv", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand", - "thiserror", -] - -[[package]] -name = "opentelemetry-prometheus" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9328977e479cebe12ce0d3fcecdaea4721d234895a9440c5b5dfd113f0594ac6" -dependencies = [ - "opentelemetry", - "prometheus", - "protobuf", -] - -[[package]] -name = "ordered-multimap" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c672c7ad9ec066e428c00eb917124a06f08db19e2584de982cc34b1f4c12485" -dependencies = [ - "dlv-list", - "hashbrown 0.9.1", -] - -[[package]] -name = "os_str_bytes" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" -dependencies = [ - "memchr", -] - -[[package]] -name = "output_vt100" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66" -dependencies = [ - "winapi", -] - -[[package]] -name = "ownedbytes" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfa208b217a39411d78b85427792e4c1bc40508acbcefd2836e765f44a5c99e" -dependencies = [ - "stable_deref_trait", -] - -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.5", -] - -[[package]] -name = "parking_lot" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" -dependencies = [ - "lock_api", - "parking_lot_core 0.9.1", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall", - "smallvec", - "winapi", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-sys", -] - -[[package]] -name = "pathdiff" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" - -[[package]] -name = "percent-encoding" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" - -[[package]] -name = "pest" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" -dependencies = [ - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pest_meta" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d" -dependencies = [ - "maplit", - "pest", - "sha-1", -] - -[[package]] -name = "petgraph" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "pin-project" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" - -[[package]] -name = "ppv-lite86" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" - -[[package]] -name = "pretty_assertions" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c038cb5319b9c704bf9c227c261d275bfec0ad438118a2787ce47944fb228b" -dependencies = [ - "ansi_term", - "ctor", - "diff", - "output_vt100", -] - -[[package]] -name = "proc-macro-crate" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" -dependencies = [ - "thiserror", - "toml", -] - -[[package]] -name = "proc-macro2" -version = "1.0.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "prometheus" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f64969ffd5dd8f39bd57a68ac53c163a095ed9d0fb707146da1b27025a3504" -dependencies = [ - "cfg-if", - "fnv", - "lazy_static", - "memchr", - "parking_lot 0.11.2", - "protobuf", - "thiserror", -] - -[[package]] -name = "prost" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" -dependencies = [ - "bytes", - "prost-derive", -] - -[[package]] -name = "prost-build" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" -dependencies = [ - "bytes", - "heck", - "itertools", - "lazy_static", - "log", - "multimap", - "petgraph", - "prost", - "prost-types", - "regex", - "tempfile", - "which", -] - -[[package]] -name = "prost-derive" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" -dependencies = [ - "anyhow", - "itertools", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "prost-types" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" -dependencies = [ - "bytes", - "prost", -] - -[[package]] -name = "protobuf" -version = "2.27.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf7e6d18738ecd0902d30d1ad232c9125985a3422929b16c65517b38adc14f96" - -[[package]] -name = "quote" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4af2ec4714533fcdf07e886f17025ace8b997b9ce51204ee69b6da831c3da57" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rayon" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" -dependencies = [ - "autocfg", - "crossbeam-deque", - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "lazy_static", - "num_cpus", -] - -[[package]] -name = "rdkafka" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de127f294f2dba488ed46760b129d5ecbeabbd337ccbf3739cb29d50db2161c" -dependencies = [ - "futures", - "libc", - "log", - "rdkafka-sys", - "serde", - "serde_derive", - "serde_json", - "slab", - "tokio", -] - -[[package]] -name = "rdkafka-sys" -version = "4.2.0+1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e542c6863b04ce0fa0c5719bc6b7b348cf8dd21af1bb03c9db5f9805b2a6473" -dependencies = [ - "libc", - "libz-sys", - "num_enum", - "pkg-config", -] - -[[package]] -name = "redox_syscall" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c" -dependencies = [ - "bitflags", -] - -[[package]] -name = "regex" -version = "1.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.6.25", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.25", -] - -[[package]] -name = "regex-syntax" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e931c58b93d86f080c734bfd2bce7dd0079ae2331235818133c8be7f422e20e" - -[[package]] -name = "regex-syntax" -version = "0.6.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" - -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi", -] - -[[package]] -name = "ron" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b861ecaade43ac97886a512b360d01d66be9f41f3c61088b42cedf92e03d678" -dependencies = [ - "base64", - "bitflags", - "serde", -] - -[[package]] -name = "rust-ini" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63471c4aa97a1cf8332a5f97709a79a4234698de6a1f5087faf66f2dae810e22" -dependencies = [ - "cfg-if", - "ordered-multimap", -] - -[[package]] -name = "rust-stemmers" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "ryu" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "serde" -version = "1.0.136" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.136" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_yaml" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a521f2940385c165a24ee286aa8599633d162077a54bdcae2a6fd5a7bfa7a0" -dependencies = [ - "indexmap", - "ryu", - "serde", - "yaml-rust", -] - -[[package]] -name = "sha-1" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" -dependencies = [ - "block-buffer", - "digest", - "fake-simd", - "opaque-debug", -] - -[[package]] -name = "sharded-slab" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "signal-hook" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "647c97df271007dcea485bb74ffdb57f2e683f1306c854f468a0c244badabf2d" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" -dependencies = [ - "libc", -] - -[[package]] -name = "slab" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" - -[[package]] -name = "smallvec" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" - -[[package]] -name = "smawk" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043" - -[[package]] -name = "socket2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "syn" -version = "1.0.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea297be220d52398dcc07ce15a209fce436d361735ac1db700cab3b6cdfb9f54" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "tantivy" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "264c2549892aa83975386a924ef8d0b8e909674c837d37ea58b4bd8739495c6e" -dependencies = [ - "async-trait", - "base64", - "bitpacking", - "brotli", - "byteorder", - "census", - "chrono", - "crc32fast", - "crossbeam", - "downcast-rs", - "fail", - "fastdivide", - "fastfield_codecs", - "fnv", - "fs2", - "futures", - "htmlescape", - "itertools", - "levenshtein_automata", - "log", - "lru", - "lz4_flex", - "measure_time", - "memmap2", - "murmurhash32", - "num_cpus", - "once_cell", - "ownedbytes", - "pretty_assertions", - "rayon", - "regex", - "rust-stemmers", - "serde", - "serde_json", - "smallvec", - "stable_deref_trait", - "tantivy-bitpacker", - "tantivy-common 0.2.0", - "tantivy-fst", - "tantivy-query-grammar", - "tempfile", - "thiserror", - "uuid", - "winapi", -] - -[[package]] -name = "tantivy-bitpacker" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d10a5ed75437a4f6bbbba67601cd5adab8d71f5188b677055381f0f36064f2" - -[[package]] -name = "tantivy-common" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760e44073e328f4ea3f38660da9ba2598a19ad5ad4149cfb89ad89b4d5ee88d9" -dependencies = [ - "byteorder", -] - -[[package]] -name = "tantivy-common" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2078cd12c7e46eb2cd66ec813eac8472e0f9dfe816f26159effceffd2dbe4793" -dependencies = [ - "byteorder", - "ownedbytes", -] - -[[package]] -name = "tantivy-fst" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb20cdc0d83e9184560bdde9cd60142dbb4af2e0f770e88fce45770495224205" -dependencies = [ - "byteorder", - "regex-syntax 0.4.2", - "utf8-ranges", -] - -[[package]] -name = "tantivy-query-grammar" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "466e0218472a9b276a73e38b2571ac02f9a1b270b4481c9cd8cc23a63d1307e9" -dependencies = [ - "combine", -] - -[[package]] -name = "tempfile" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" -dependencies = [ - "cfg-if", - "fastrand", - "libc", - "redox_syscall", - "remove_dir_all", - "winapi", -] - -[[package]] -name = "termcolor" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "textwrap" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" -dependencies = [ - "smawk", - "unicode-linebreak", - "unicode-width", -] - -[[package]] -name = "thiserror" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thread_local" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" -dependencies = [ - "once_cell", -] - -[[package]] -name = "time" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "time" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004cbc98f30fa233c61a38bc77e96a9106e65c88f2d3bef182ae952027e5753d" -dependencies = [ - "itoa", - "libc", - "num_threads", -] - -[[package]] -name = "tokio" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" -dependencies = [ - "bytes", - "libc", - "memchr", - "mio", - "num_cpus", - "once_cell", - "parking_lot 0.12.0", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "winapi", -] - -[[package]] -name = "tokio-io-timeout" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" -dependencies = [ - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-macros" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio-stream" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64910e1b9c1901aaf5375561e35b9c057d95ff41a44ede043a03e09279eabaf1" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" -dependencies = [ - "serde", -] - -[[package]] -name = "tonic" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff08f4649d10a70ffa3522ca559031285d8e421d727ac85c60825761818f5d0a" -dependencies = [ - "async-stream", - "async-trait", - "base64", - "bytes", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-timeout", - "percent-encoding", - "pin-project", - "prost", - "prost-derive", - "tokio", - "tokio-stream", - "tokio-util 0.6.9", - "tower", - "tower-layer", - "tower-service", - "tracing", - "tracing-futures", -] - -[[package]] -name = "tonic-build" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9403f1bafde247186684b230dc6f38b5cd514584e8bec1dd32514be4745fa757" -dependencies = [ - "proc-macro2", - "prost-build", - "quote", - "syn", -] - -[[package]] -name = "tower" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a89fd63ad6adf737582df5db40d286574513c69a11dac5214dc3b5603d6713e" -dependencies = [ - "futures-core", - "futures-util", - "indexmap", - "pin-project", - "pin-project-lite", - "rand", - "slab", - "tokio", - "tokio-util 0.7.0", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-http" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aba3f3efabf7fb41fae8534fc20a817013dd1c12cb45441efb6c82e6556b4cd8" -dependencies = [ - "bitflags", - "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-range-header", - "pin-project-lite", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-layer" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "343bc9466d3fe6b0f960ef45960509f84480bf4fd96f92901afe7ff3df9d3a62" - -[[package]] -name = "tower-service" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" - -[[package]] -name = "tracing" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1bdf54a7c28a2bbf701e1d2233f6c77f473486b94bee4f9678da5a148dca7f" -dependencies = [ - "cfg-if", - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-appender" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d48f71a791638519505cefafe162606f706c25592e4bde4d97600c0195312e" -dependencies = [ - "crossbeam-channel", - "time 0.3.7", - "tracing-subscriber", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tracing-core" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa31669fa42c09c34d94d8165dd2012e8ff3c66aca50f3bb226b68f216f2706c" -dependencies = [ - "lazy_static", - "valuable", -] - -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] - -[[package]] -name = "tracing-log" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-serde" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" -dependencies = [ - "serde", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e0ab7bdc962035a87fba73f3acca9b8a8d0034c2e6f60b84aeaaddddc155dce" -dependencies = [ - "ansi_term", - "lazy_static", - "matchers", - "regex", - "serde", - "serde_json", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", - "tracing-serde", -] - -[[package]] -name = "try-lock" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" - -[[package]] -name = "twox-hash" -version = "1.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee73e6e4924fe940354b8d4d98cad5231175d615cd855b758adc658c0aac6a0" -dependencies = [ - "cfg-if", - "static_assertions", -] - -[[package]] -name = "typenum" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" - -[[package]] -name = "ucd-trie" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" - -[[package]] -name = "unicode-linebreak" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a52dcaab0c48d931f7cc8ef826fa51690a08e1ea55117ef26f89864f532383f" -dependencies = [ - "regex", -] - -[[package]] -name = "unicode-segmentation" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" - -[[package]] -name = "unicode-width" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" - -[[package]] -name = "unicode-xid" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" - -[[package]] -name = "utf8-ranges" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ae116fef2b7fea257ed6440d3cfcff7f190865f170cdad00bb6465bf18ecba" - -[[package]] -name = "uuid" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom", - "serde", -] - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "want" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" -dependencies = [ - "log", - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" -dependencies = [ - "bumpalo", - "lazy_static", - "log", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" - -[[package]] -name = "which" -version = "4.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae" -dependencies = [ - "either", - "lazy_static", - "libc", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-sys" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6" -dependencies = [ - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_msvc" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" - -[[package]] -name = "windows_i686_gnu" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" - -[[package]] -name = "windows_i686_msvc" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" - -[[package]] -name = "yaml-rust" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" -dependencies = [ - "linked-hash-map", -] diff --git a/rules/rust/Cargo.raze.lock b/rules/rust/Cargo.raze.lock deleted file mode 100644 index 2f5971d..0000000 --- a/rules/rust/Cargo.raze.lock +++ /dev/null @@ -1,2454 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -[[package]] -name = "ahash" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" - -[[package]] -name = "ahash" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" -dependencies = [ - "getrandom", - "once_cell", - "version_check", -] - -[[package]] -name = "aho-corasick" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" -dependencies = [ - "memchr", -] - -[[package]] -name = "alloc-no-stdlib" -version = "2.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ef4730490ad1c4eae5c4325b2a95f521d023e5c885853ff7aca0a6a1631db3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "697ed7edc0f1711de49ce108c541623a0af97c6c60b2f6e2b65229847ac843c2" -dependencies = [ - "alloc-no-stdlib", -] - -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - -[[package]] -name = "anyhow" -version = "1.0.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27" - -[[package]] -name = "async-stream" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e" -dependencies = [ - "async-stream-impl", - "futures-core", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "async-trait" -version = "0.1.52" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "base64" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitpacking" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8c7d2ac73c167c06af4a5f37e6e59d84148d57ccbe4480b76f0273eefea82d7" -dependencies = [ - "crunchy", -] - -[[package]] -name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding", - "byte-tools", - "byteorder", - "generic-array", -] - -[[package]] -name = "block-padding" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -dependencies = [ - "byte-tools", -] - -[[package]] -name = "brotli" -version = "3.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f838e47a451d5a8fa552371f80024dd6ace9b7acdf25c4c3d0f9bc6816fb1c39" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[package]] -name = "bumpalo" -version = "3.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" - -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "bytes" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" - -[[package]] -name = "cc" -version = "1.0.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" - -[[package]] -name = "census" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5927edd8345aef08578bcbb4aea7314f340d80c7f4931f99fbeb40b99d8f5060" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" -dependencies = [ - "libc", - "num-integer", - "num-traits", - "time 0.1.44", - "winapi", -] - -[[package]] -name = "clap" -version = "3.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c93436c21e4698bacadf42917db28b23017027a4deccb35dbe47a7e7840123" -dependencies = [ - "atty", - "bitflags", - "indexmap", - "lazy_static", - "os_str_bytes", - "strsim", - "termcolor", - "textwrap", -] - -[[package]] -name = "colored" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" -dependencies = [ - "atty", - "lazy_static", - "winapi", -] - -[[package]] -name = "combine" -version = "4.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b727aacc797f9fc28e355d21f34709ac4fc9adecfe470ad07b8f4464f53062" -dependencies = [ - "memchr", -] - -[[package]] -name = "config" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54ad70579325f1a38ea4c13412b82241c5900700a69785d73e2736bd65a33f86" -dependencies = [ - "async-trait", - "json5", - "lazy_static", - "nom", - "pathdiff", - "ron", - "rust-ini", - "serde", - "serde_json", - "toml", - "yaml-rust", -] - -[[package]] -name = "crc32fast" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae5588f6b3c3cb05239e90bd110f257254aecd01e4635400391aeae07497845" -dependencies = [ - "cfg-if", - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-epoch", - "crossbeam-queue", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" -dependencies = [ - "cfg-if", - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" -dependencies = [ - "autocfg", - "cfg-if", - "crossbeam-utils", - "lazy_static", - "memoffset", - "scopeguard", -] - -[[package]] -name = "crossbeam-queue" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f25d8400f4a7a5778f0e4e52384a48cbd9b5c495d110786187fc750075277a2" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" -dependencies = [ - "cfg-if", - "lazy_static", -] - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "ctor" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f877be4f7c9f246b183111634f75baa039715e3f46ce860677d3b19a69fb229c" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "dashmap" -version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" -dependencies = [ - "cfg-if", - "num_cpus", -] - -[[package]] -name = "diff" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e25ea47919b1560c4e3b7fe0aaab9becf5b84a10325ddf7db0f0ba5e1026499" - -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array", -] - -[[package]] -name = "dlv-list" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68df3f2b690c1b86e65ef7830956aededf3cb0a16f898f79b9a6f421a7b6211b" -dependencies = [ - "rand", -] - -[[package]] -name = "downcast-rs" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" - -[[package]] -name = "either" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" - -[[package]] -name = "fail" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3245a0ca564e7f3c797d20d833a6870f57a728ac967d5225b3ffdef4465011" -dependencies = [ - "lazy_static", - "log", - "rand", -] - -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - -[[package]] -name = "fastdivide" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25c7df09945d65ea8d70b3321547ed414bbc540aad5bac6883d021b970f35b04" - -[[package]] -name = "fastfield_codecs" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e8bfa31546b4ace05092c9db8d251d7bbc298a384875a08c945a473de4f1f" -dependencies = [ - "tantivy-bitpacker", - "tantivy-common 0.1.0", -] - -[[package]] -name = "fastrand" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" -dependencies = [ - "instant", -] - -[[package]] -name = "fixedbitset" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053e" - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "fs2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "futures" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" - -[[package]] -name = "futures-executor" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", - "num_cpus", -] - -[[package]] -name = "futures-io" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" - -[[package]] -name = "futures-macro" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" - -[[package]] -name = "futures-task" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" - -[[package]] -name = "futures-util" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" -dependencies = [ - "typenum", -] - -[[package]] -name = "getrandom" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", -] - -[[package]] -name = "h2" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62eeb471aa3e3c9197aa4bfeabfe02982f6dc96f750486c0bb0009ac58b26d2b" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util 0.6.9", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" -dependencies = [ - "ahash 0.4.7", -] - -[[package]] -name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" -dependencies = [ - "ahash 0.7.6", -] - -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "htmlescape" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163" - -[[package]] -name = "http" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "http-range-header" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" - -[[package]] -name = "httparse" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" - -[[package]] -name = "httpdate" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" - -[[package]] -name = "hyper" -version = "0.14.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043f0e083e9901b6cc658a77d1eb86f4fc650bbb977a4337dd63192826aa85dd" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-timeout" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" -dependencies = [ - "hyper", - "pin-project-lite", - "tokio", - "tokio-io-timeout", -] - -[[package]] -name = "hyperboria" -version = "0.0.0" -dependencies = [ - "clap", - "colored", - "config", - "futures", - "futures-util", - "hyper", - "lazy_static", - "opentelemetry", - "opentelemetry-prometheus", - "parking_lot 0.12.0", - "prometheus", - "prost", - "prost-types", - "rand", - "rdkafka", - "serde", - "serde_derive", - "serde_yaml", - "signal-hook", - "tantivy", - "tantivy-fst", - "textwrap", - "thiserror", - "tokio", - "tonic", - "tonic-build", - "tower", - "tower-http", - "tracing", - "tracing-appender", - "tracing-futures", - "tracing-subscriber", -] - -[[package]] -name = "indexmap" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" -dependencies = [ - "autocfg", - "hashbrown 0.11.2", -] - -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "itertools" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" - -[[package]] -name = "js-sys" -version = "0.3.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "json5" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" -dependencies = [ - "pest", - "pest_derive", - "serde", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "levenshtein_automata" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25" - -[[package]] -name = "libc" -version = "0.2.121" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f" - -[[package]] -name = "libz-sys" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f35facd4a5673cb5a48822be2be1d4236c1c99cb4113cab7061ac720d5bf859" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "linked-hash-map" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" - -[[package]] -name = "lock_api" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "lru" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb87f3080f6d1d69e8c564c0fcfde1d7aa8cc451ce40cae89479111f03bc0eb" -dependencies = [ - "hashbrown 0.11.2", -] - -[[package]] -name = "lz4_flex" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42c51df9d8d4842336c835df1d85ed447c4813baa237d033d95128bf5552ad8a" -dependencies = [ - "twox-hash", -] - -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata", -] - -[[package]] -name = "measure_time" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f07966480d8562b3622f51df0b4e3fe6ea7ddb3b48b19b0f44ef863c455bdf9" -dependencies = [ - "log", -] - -[[package]] -name = "memchr" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" - -[[package]] -name = "memmap2" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057a3db23999c867821a7a59feb06a578fcb03685e983dff90daf9e7d24ac08f" -dependencies = [ - "libc", -] - -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "mio" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" -dependencies = [ - "libc", - "log", - "miow", - "ntapi", - "wasi 0.11.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi", -] - -[[package]] -name = "multimap" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" - -[[package]] -name = "murmurhash32" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d736ff882f0e85fe9689fb23db229616c4c00aee2b3ac282f666d8f20eb25d4a" -dependencies = [ - "byteorder", -] - -[[package]] -name = "nom" -version = "7.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "ntapi" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" -dependencies = [ - "winapi", -] - -[[package]] -name = "num-integer" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_enum" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "num_threads" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aba1801fb138d8e85e11d0fc70baf4fe1cdfffda7c6cd34a854905df588e5ed0" -dependencies = [ - "libc", -] - -[[package]] -name = "once_cell" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" - -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" - -[[package]] -name = "opentelemetry" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" -dependencies = [ - "async-trait", - "crossbeam-channel", - "dashmap", - "fnv", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand", - "thiserror", -] - -[[package]] -name = "opentelemetry-prometheus" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9328977e479cebe12ce0d3fcecdaea4721d234895a9440c5b5dfd113f0594ac6" -dependencies = [ - "opentelemetry", - "prometheus", - "protobuf", -] - -[[package]] -name = "ordered-multimap" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c672c7ad9ec066e428c00eb917124a06f08db19e2584de982cc34b1f4c12485" -dependencies = [ - "dlv-list", - "hashbrown 0.9.1", -] - -[[package]] -name = "os_str_bytes" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" -dependencies = [ - "memchr", -] - -[[package]] -name = "output_vt100" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66" -dependencies = [ - "winapi", -] - -[[package]] -name = "ownedbytes" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfa208b217a39411d78b85427792e4c1bc40508acbcefd2836e765f44a5c99e" -dependencies = [ - "stable_deref_trait", -] - -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.5", -] - -[[package]] -name = "parking_lot" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" -dependencies = [ - "lock_api", - "parking_lot_core 0.9.1", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall", - "smallvec", - "winapi", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-sys", -] - -[[package]] -name = "pathdiff" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" - -[[package]] -name = "percent-encoding" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" - -[[package]] -name = "pest" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" -dependencies = [ - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pest_meta" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d" -dependencies = [ - "maplit", - "pest", - "sha-1", -] - -[[package]] -name = "petgraph" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "pin-project" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" - -[[package]] -name = "ppv-lite86" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" - -[[package]] -name = "pretty_assertions" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c038cb5319b9c704bf9c227c261d275bfec0ad438118a2787ce47944fb228b" -dependencies = [ - "ansi_term", - "ctor", - "diff", - "output_vt100", -] - -[[package]] -name = "proc-macro-crate" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" -dependencies = [ - "thiserror", - "toml", -] - -[[package]] -name = "proc-macro2" -version = "1.0.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "prometheus" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f64969ffd5dd8f39bd57a68ac53c163a095ed9d0fb707146da1b27025a3504" -dependencies = [ - "cfg-if", - "fnv", - "lazy_static", - "memchr", - "parking_lot 0.11.2", - "protobuf", - "thiserror", -] - -[[package]] -name = "prost" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" -dependencies = [ - "bytes", - "prost-derive", -] - -[[package]] -name = "prost-build" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" -dependencies = [ - "bytes", - "heck", - "itertools", - "lazy_static", - "log", - "multimap", - "petgraph", - "prost", - "prost-types", - "regex", - "tempfile", - "which", -] - -[[package]] -name = "prost-derive" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" -dependencies = [ - "anyhow", - "itertools", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "prost-types" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" -dependencies = [ - "bytes", - "prost", -] - -[[package]] -name = "protobuf" -version = "2.27.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf7e6d18738ecd0902d30d1ad232c9125985a3422929b16c65517b38adc14f96" - -[[package]] -name = "quote" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4af2ec4714533fcdf07e886f17025ace8b997b9ce51204ee69b6da831c3da57" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rayon" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" -dependencies = [ - "autocfg", - "crossbeam-deque", - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "lazy_static", - "num_cpus", -] - -[[package]] -name = "rdkafka" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de127f294f2dba488ed46760b129d5ecbeabbd337ccbf3739cb29d50db2161c" -dependencies = [ - "futures", - "libc", - "log", - "rdkafka-sys", - "serde", - "serde_derive", - "serde_json", - "slab", - "tokio", -] - -[[package]] -name = "rdkafka-sys" -version = "4.2.0+1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e542c6863b04ce0fa0c5719bc6b7b348cf8dd21af1bb03c9db5f9805b2a6473" -dependencies = [ - "libc", - "libz-sys", - "num_enum", - "pkg-config", -] - -[[package]] -name = "redox_syscall" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c" -dependencies = [ - "bitflags", -] - -[[package]] -name = "regex" -version = "1.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.6.25", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.25", -] - -[[package]] -name = "regex-syntax" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e931c58b93d86f080c734bfd2bce7dd0079ae2331235818133c8be7f422e20e" - -[[package]] -name = "regex-syntax" -version = "0.6.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" - -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi", -] - -[[package]] -name = "ron" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b861ecaade43ac97886a512b360d01d66be9f41f3c61088b42cedf92e03d678" -dependencies = [ - "base64", - "bitflags", - "serde", -] - -[[package]] -name = "rust-ini" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63471c4aa97a1cf8332a5f97709a79a4234698de6a1f5087faf66f2dae810e22" -dependencies = [ - "cfg-if", - "ordered-multimap", -] - -[[package]] -name = "rust-stemmers" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54" -dependencies = [ - "serde", - "serde_derive", -] - -[[package]] -name = "ryu" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "serde" -version = "1.0.136" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.136" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_yaml" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a521f2940385c165a24ee286aa8599633d162077a54bdcae2a6fd5a7bfa7a0" -dependencies = [ - "indexmap", - "ryu", - "serde", - "yaml-rust", -] - -[[package]] -name = "sha-1" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" -dependencies = [ - "block-buffer", - "digest", - "fake-simd", - "opaque-debug", -] - -[[package]] -name = "sharded-slab" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "signal-hook" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "647c97df271007dcea485bb74ffdb57f2e683f1306c854f468a0c244badabf2d" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" -dependencies = [ - "libc", -] - -[[package]] -name = "slab" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" - -[[package]] -name = "smallvec" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" - -[[package]] -name = "smawk" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043" - -[[package]] -name = "socket2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "syn" -version = "1.0.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea297be220d52398dcc07ce15a209fce436d361735ac1db700cab3b6cdfb9f54" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "tantivy" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "264c2549892aa83975386a924ef8d0b8e909674c837d37ea58b4bd8739495c6e" -dependencies = [ - "async-trait", - "base64", - "bitpacking", - "brotli", - "byteorder", - "census", - "chrono", - "crc32fast", - "crossbeam", - "downcast-rs", - "fail", - "fastdivide", - "fastfield_codecs", - "fnv", - "fs2", - "futures", - "htmlescape", - "itertools", - "levenshtein_automata", - "log", - "lru", - "lz4_flex", - "measure_time", - "memmap2", - "murmurhash32", - "num_cpus", - "once_cell", - "ownedbytes", - "pretty_assertions", - "rayon", - "regex", - "rust-stemmers", - "serde", - "serde_json", - "smallvec", - "stable_deref_trait", - "tantivy-bitpacker", - "tantivy-common 0.2.0", - "tantivy-fst", - "tantivy-query-grammar", - "tempfile", - "thiserror", - "uuid", - "winapi", -] - -[[package]] -name = "tantivy-bitpacker" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d10a5ed75437a4f6bbbba67601cd5adab8d71f5188b677055381f0f36064f2" - -[[package]] -name = "tantivy-common" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760e44073e328f4ea3f38660da9ba2598a19ad5ad4149cfb89ad89b4d5ee88d9" -dependencies = [ - "byteorder", -] - -[[package]] -name = "tantivy-common" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2078cd12c7e46eb2cd66ec813eac8472e0f9dfe816f26159effceffd2dbe4793" -dependencies = [ - "byteorder", - "ownedbytes", -] - -[[package]] -name = "tantivy-fst" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb20cdc0d83e9184560bdde9cd60142dbb4af2e0f770e88fce45770495224205" -dependencies = [ - "byteorder", - "regex-syntax 0.4.2", - "utf8-ranges", -] - -[[package]] -name = "tantivy-query-grammar" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "466e0218472a9b276a73e38b2571ac02f9a1b270b4481c9cd8cc23a63d1307e9" -dependencies = [ - "combine", -] - -[[package]] -name = "tempfile" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" -dependencies = [ - "cfg-if", - "fastrand", - "libc", - "redox_syscall", - "remove_dir_all", - "winapi", -] - -[[package]] -name = "termcolor" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "textwrap" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" -dependencies = [ - "smawk", - "unicode-linebreak", - "unicode-width", -] - -[[package]] -name = "thiserror" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thread_local" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" -dependencies = [ - "once_cell", -] - -[[package]] -name = "time" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "time" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004cbc98f30fa233c61a38bc77e96a9106e65c88f2d3bef182ae952027e5753d" -dependencies = [ - "itoa", - "libc", - "num_threads", -] - -[[package]] -name = "tokio" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" -dependencies = [ - "bytes", - "libc", - "memchr", - "mio", - "num_cpus", - "once_cell", - "parking_lot 0.12.0", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "winapi", -] - -[[package]] -name = "tokio-io-timeout" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" -dependencies = [ - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-macros" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio-stream" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64910e1b9c1901aaf5375561e35b9c057d95ff41a44ede043a03e09279eabaf1" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" -dependencies = [ - "serde", -] - -[[package]] -name = "tonic" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff08f4649d10a70ffa3522ca559031285d8e421d727ac85c60825761818f5d0a" -dependencies = [ - "async-stream", - "async-trait", - "base64", - "bytes", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-timeout", - "percent-encoding", - "pin-project", - "prost", - "prost-derive", - "tokio", - "tokio-stream", - "tokio-util 0.6.9", - "tower", - "tower-layer", - "tower-service", - "tracing", - "tracing-futures", -] - -[[package]] -name = "tonic-build" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9403f1bafde247186684b230dc6f38b5cd514584e8bec1dd32514be4745fa757" -dependencies = [ - "proc-macro2", - "prost-build", - "quote", - "syn", -] - -[[package]] -name = "tower" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a89fd63ad6adf737582df5db40d286574513c69a11dac5214dc3b5603d6713e" -dependencies = [ - "futures-core", - "futures-util", - "indexmap", - "pin-project", - "pin-project-lite", - "rand", - "slab", - "tokio", - "tokio-util 0.7.0", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-http" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aba3f3efabf7fb41fae8534fc20a817013dd1c12cb45441efb6c82e6556b4cd8" -dependencies = [ - "bitflags", - "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-range-header", - "pin-project-lite", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-layer" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "343bc9466d3fe6b0f960ef45960509f84480bf4fd96f92901afe7ff3df9d3a62" - -[[package]] -name = "tower-service" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" - -[[package]] -name = "tracing" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1bdf54a7c28a2bbf701e1d2233f6c77f473486b94bee4f9678da5a148dca7f" -dependencies = [ - "cfg-if", - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-appender" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d48f71a791638519505cefafe162606f706c25592e4bde4d97600c0195312e" -dependencies = [ - "crossbeam-channel", - "time 0.3.7", - "tracing-subscriber", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tracing-core" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa31669fa42c09c34d94d8165dd2012e8ff3c66aca50f3bb226b68f216f2706c" -dependencies = [ - "lazy_static", - "valuable", -] - -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] - -[[package]] -name = "tracing-log" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-serde" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" -dependencies = [ - "serde", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e0ab7bdc962035a87fba73f3acca9b8a8d0034c2e6f60b84aeaaddddc155dce" -dependencies = [ - "ansi_term", - "lazy_static", - "matchers", - "regex", - "serde", - "serde_json", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", - "tracing-serde", -] - -[[package]] -name = "try-lock" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" - -[[package]] -name = "twox-hash" -version = "1.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee73e6e4924fe940354b8d4d98cad5231175d615cd855b758adc658c0aac6a0" -dependencies = [ - "cfg-if", - "static_assertions", -] - -[[package]] -name = "typenum" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" - -[[package]] -name = "ucd-trie" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" - -[[package]] -name = "unicode-linebreak" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a52dcaab0c48d931f7cc8ef826fa51690a08e1ea55117ef26f89864f532383f" -dependencies = [ - "regex", -] - -[[package]] -name = "unicode-segmentation" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" - -[[package]] -name = "unicode-width" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" - -[[package]] -name = "unicode-xid" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" - -[[package]] -name = "utf8-ranges" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ae116fef2b7fea257ed6440d3cfcff7f190865f170cdad00bb6465bf18ecba" - -[[package]] -name = "uuid" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom", - "serde", -] - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "want" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" -dependencies = [ - "log", - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" -dependencies = [ - "bumpalo", - "lazy_static", - "log", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" - -[[package]] -name = "which" -version = "4.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae" -dependencies = [ - "either", - "lazy_static", - "libc", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-sys" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6" -dependencies = [ - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_msvc" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" - -[[package]] -name = "windows_i686_gnu" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" - -[[package]] -name = "windows_i686_msvc" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" - -[[package]] -name = "yaml-rust" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" -dependencies = [ - "linked-hash-map", -] diff --git a/rules/rust/Cargo.toml b/rules/rust/Cargo.toml deleted file mode 100644 index b16a6a2..0000000 --- a/rules/rust/Cargo.toml +++ /dev/null @@ -1,60 +0,0 @@ -[package] -edition = "2018" -name = "hyperboria" -version = "0.0.0" - -# Mandatory (or Cargo tooling is unhappy) -[lib] -path = "bin/main.rs" - -[build-dependencies] -tonic-build = { version = "0.6.2", default-features = false, features = ["prost", "transport"] } - -[dependencies] -clap = { version = "3.1.6", features = ["cargo"] } -colored = "2.0.0" -config = "0.12.0" -crossbeam-channel = "0.5.4" -futures = "0.3.21" -futures-util = "0.3.21" -hyper = "0.14.17" -lazy_static = "1.4.0" -num_cpus = "1.13.1" -opentelemetry = "0.17.0" -opentelemetry-prometheus = "0.10.0" -parking_lot = { version = "0.12.0", features = ["send_guard"] } -prometheus = "0.13.0" -prost = "0.9.0" -prost-types = "0.9.0" -rand = "0.8.5" -rdkafka = "0.28.0" -serde = { version = "1.0.136", features = ["derive"] } -serde_derive = "1.0.136" -serde_yaml = "0.8.23" -signal-hook = "0.3.13" -tantivy = { version = "0.17.0", features = ["brotli-compression"] } -tantivy-fst = "0.3.0" -textwrap = "0.15.0" -thiserror = "1.0.30" -tokio = { version = "1.17.0", features = ["full", "time"] } -tonic = "0.6.2" -tower = "0.4.12" -tower-http = { version = "0.2.5", features = ["set-header", "trace"] } -tracing = "0.1.32" -tracing-appender = "0.2.2" -tracing-futures = "0.2.5" -tracing-subscriber = { version = "0.3.9", features = ["env-filter", "json"] } - -[workspace.metadata.raze] -default_gen_buildrs = true -genmode = "Remote" -package_aliases_dir = "cargo" -rust_rules_workspace_name = "rules_rust" -targets = [ - "x86_64-apple-darwin", - "x86_64-unknown-linux-gnu", -] -workspace_path = "//rules/rust" - -[package.metadata.raze.crates.json5.'*'] -data_attr = "glob([\"**/*.pest\"])" \ No newline at end of file diff --git a/rules/rust/README.md b/rules/rust/README.md deleted file mode 100644 index 7d742ae..0000000 --- a/rules/rust/README.md +++ /dev/null @@ -1,3 +0,0 @@ -cargo install cargo-raze - -cargo raze \ No newline at end of file diff --git a/rules/rust/cargo/BUILD.bazel b/rules/rust/cargo/BUILD.bazel deleted file mode 100644 index 978b4d4..0000000 --- a/rules/rust/cargo/BUILD.bazel +++ /dev/null @@ -1,327 +0,0 @@ -""" -@generated -cargo-raze generated Bazel file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -package(default_visibility = ["//visibility:public"]) - -licenses([ - "notice", # See individual crates for specific licenses -]) - -# Aliased targets -alias( - name = "clap", - actual = "@raze__clap__3_1_6//:clap", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "colored", - actual = "@raze__colored__2_0_0//:colored", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "config", - actual = "@raze__config__0_12_0//:config", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "crossbeam_channel", - actual = "@raze__crossbeam_channel__0_5_4//:crossbeam_channel", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "futures", - actual = "@raze__futures__0_3_21//:futures", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "futures_util", - actual = "@raze__futures_util__0_3_21//:futures_util", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "hyper", - actual = "@raze__hyper__0_14_17//:hyper", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "lazy_static", - actual = "@raze__lazy_static__1_4_0//:lazy_static", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "num_cpus", - actual = "@raze__num_cpus__1_13_1//:num_cpus", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "opentelemetry", - actual = "@raze__opentelemetry__0_17_0//:opentelemetry", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "opentelemetry_prometheus", - actual = "@raze__opentelemetry_prometheus__0_10_0//:opentelemetry_prometheus", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "parking_lot", - actual = "@raze__parking_lot__0_12_0//:parking_lot", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "prometheus", - actual = "@raze__prometheus__0_13_0//:prometheus", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "prost", - actual = "@raze__prost__0_9_0//:prost", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "prost_types", - actual = "@raze__prost_types__0_9_0//:prost_types", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "rand", - actual = "@raze__rand__0_8_5//:rand", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "rdkafka", - actual = "@raze__rdkafka__0_28_0//:rdkafka", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "serde", - actual = "@raze__serde__1_0_136//:serde", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "serde_derive", - actual = "@raze__serde_derive__1_0_136//:serde_derive", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "serde_yaml", - actual = "@raze__serde_yaml__0_8_23//:serde_yaml", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "signal_hook", - actual = "@raze__signal_hook__0_3_13//:signal_hook", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "tantivy", - actual = "@raze__tantivy__0_17_0//:tantivy", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "tantivy_fst", - actual = "@raze__tantivy_fst__0_3_0//:tantivy_fst", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "textwrap", - actual = "@raze__textwrap__0_15_0//:textwrap", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "thiserror", - actual = "@raze__thiserror__1_0_30//:thiserror", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "tokio", - actual = "@raze__tokio__1_17_0//:tokio", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "tonic", - actual = "@raze__tonic__0_6_2//:tonic", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "tonic_build", - actual = "@raze__tonic_build__0_6_2//:tonic_build", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "tower", - actual = "@raze__tower__0_4_12//:tower", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "tower_http", - actual = "@raze__tower_http__0_2_5//:tower_http", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "tracing", - actual = "@raze__tracing__0_1_32//:tracing", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "tracing_appender", - actual = "@raze__tracing_appender__0_2_2//:tracing_appender", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "tracing_futures", - actual = "@raze__tracing_futures__0_2_5//:tracing_futures", - tags = [ - "cargo-raze", - "manual", - ], -) - -alias( - name = "tracing_subscriber", - actual = "@raze__tracing_subscriber__0_3_9//:tracing_subscriber", - tags = [ - "cargo-raze", - "manual", - ], -) - -# Export file for Stardoc support -exports_files( - [ - "crates.bzl", - ], - visibility = ["//visibility:public"], -) diff --git a/rules/rust/crates.bzl b/rules/rust/crates.bzl deleted file mode 100644 index 47af832..0000000 --- a/rules/rust/crates.bzl +++ /dev/null @@ -1,2502 +0,0 @@ -""" -@generated -cargo-raze generated Bazel file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -load("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository") # buildifier: disable=load -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # buildifier: disable=load -load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") # buildifier: disable=load - -def raze_fetch_remote_crates(): - """This function defines a collection of repos and should be called in a WORKSPACE file""" - maybe( - http_archive, - name = "raze__ahash__0_4_7", - url = "https://crates.io/api/v1/crates/ahash/0.4.7/download", - type = "tar.gz", - sha256 = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e", - strip_prefix = "ahash-0.4.7", - build_file = Label("//rules/rust/remote:BUILD.ahash-0.4.7.bazel"), - ) - - maybe( - http_archive, - name = "raze__ahash__0_7_6", - url = "https://crates.io/api/v1/crates/ahash/0.7.6/download", - type = "tar.gz", - sha256 = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47", - strip_prefix = "ahash-0.7.6", - build_file = Label("//rules/rust/remote:BUILD.ahash-0.7.6.bazel"), - ) - - maybe( - http_archive, - name = "raze__aho_corasick__0_7_18", - url = "https://crates.io/api/v1/crates/aho-corasick/0.7.18/download", - type = "tar.gz", - sha256 = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f", - strip_prefix = "aho-corasick-0.7.18", - build_file = Label("//rules/rust/remote:BUILD.aho-corasick-0.7.18.bazel"), - ) - - maybe( - http_archive, - name = "raze__alloc_no_stdlib__2_0_3", - url = "https://crates.io/api/v1/crates/alloc-no-stdlib/2.0.3/download", - type = "tar.gz", - sha256 = "35ef4730490ad1c4eae5c4325b2a95f521d023e5c885853ff7aca0a6a1631db3", - strip_prefix = "alloc-no-stdlib-2.0.3", - build_file = Label("//rules/rust/remote:BUILD.alloc-no-stdlib-2.0.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__alloc_stdlib__0_2_1", - url = "https://crates.io/api/v1/crates/alloc-stdlib/0.2.1/download", - type = "tar.gz", - sha256 = "697ed7edc0f1711de49ce108c541623a0af97c6c60b2f6e2b65229847ac843c2", - strip_prefix = "alloc-stdlib-0.2.1", - build_file = Label("//rules/rust/remote:BUILD.alloc-stdlib-0.2.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__ansi_term__0_12_1", - url = "https://crates.io/api/v1/crates/ansi_term/0.12.1/download", - type = "tar.gz", - sha256 = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2", - strip_prefix = "ansi_term-0.12.1", - build_file = Label("//rules/rust/remote:BUILD.ansi_term-0.12.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__anyhow__1_0_56", - url = "https://crates.io/api/v1/crates/anyhow/1.0.56/download", - type = "tar.gz", - sha256 = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27", - strip_prefix = "anyhow-1.0.56", - build_file = Label("//rules/rust/remote:BUILD.anyhow-1.0.56.bazel"), - ) - - maybe( - http_archive, - name = "raze__async_stream__0_3_3", - url = "https://crates.io/api/v1/crates/async-stream/0.3.3/download", - type = "tar.gz", - sha256 = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e", - strip_prefix = "async-stream-0.3.3", - build_file = Label("//rules/rust/remote:BUILD.async-stream-0.3.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__async_stream_impl__0_3_3", - url = "https://crates.io/api/v1/crates/async-stream-impl/0.3.3/download", - type = "tar.gz", - sha256 = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27", - strip_prefix = "async-stream-impl-0.3.3", - build_file = Label("//rules/rust/remote:BUILD.async-stream-impl-0.3.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__async_trait__0_1_52", - url = "https://crates.io/api/v1/crates/async-trait/0.1.52/download", - type = "tar.gz", - sha256 = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3", - strip_prefix = "async-trait-0.1.52", - build_file = Label("//rules/rust/remote:BUILD.async-trait-0.1.52.bazel"), - ) - - maybe( - http_archive, - name = "raze__atty__0_2_14", - url = "https://crates.io/api/v1/crates/atty/0.2.14/download", - type = "tar.gz", - sha256 = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8", - strip_prefix = "atty-0.2.14", - build_file = Label("//rules/rust/remote:BUILD.atty-0.2.14.bazel"), - ) - - maybe( - http_archive, - name = "raze__autocfg__1_1_0", - url = "https://crates.io/api/v1/crates/autocfg/1.1.0/download", - type = "tar.gz", - sha256 = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa", - strip_prefix = "autocfg-1.1.0", - build_file = Label("//rules/rust/remote:BUILD.autocfg-1.1.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__base64__0_13_0", - url = "https://crates.io/api/v1/crates/base64/0.13.0/download", - type = "tar.gz", - sha256 = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd", - strip_prefix = "base64-0.13.0", - build_file = Label("//rules/rust/remote:BUILD.base64-0.13.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__bitflags__1_3_2", - url = "https://crates.io/api/v1/crates/bitflags/1.3.2/download", - type = "tar.gz", - sha256 = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a", - strip_prefix = "bitflags-1.3.2", - build_file = Label("//rules/rust/remote:BUILD.bitflags-1.3.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__bitpacking__0_8_4", - url = "https://crates.io/api/v1/crates/bitpacking/0.8.4/download", - type = "tar.gz", - sha256 = "a8c7d2ac73c167c06af4a5f37e6e59d84148d57ccbe4480b76f0273eefea82d7", - strip_prefix = "bitpacking-0.8.4", - build_file = Label("//rules/rust/remote:BUILD.bitpacking-0.8.4.bazel"), - ) - - maybe( - http_archive, - name = "raze__block_buffer__0_7_3", - url = "https://crates.io/api/v1/crates/block-buffer/0.7.3/download", - type = "tar.gz", - sha256 = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b", - strip_prefix = "block-buffer-0.7.3", - build_file = Label("//rules/rust/remote:BUILD.block-buffer-0.7.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__block_padding__0_1_5", - url = "https://crates.io/api/v1/crates/block-padding/0.1.5/download", - type = "tar.gz", - sha256 = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5", - strip_prefix = "block-padding-0.1.5", - build_file = Label("//rules/rust/remote:BUILD.block-padding-0.1.5.bazel"), - ) - - maybe( - http_archive, - name = "raze__brotli__3_3_3", - url = "https://crates.io/api/v1/crates/brotli/3.3.3/download", - type = "tar.gz", - sha256 = "f838e47a451d5a8fa552371f80024dd6ace9b7acdf25c4c3d0f9bc6816fb1c39", - strip_prefix = "brotli-3.3.3", - build_file = Label("//rules/rust/remote:BUILD.brotli-3.3.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__brotli_decompressor__2_3_2", - url = "https://crates.io/api/v1/crates/brotli-decompressor/2.3.2/download", - type = "tar.gz", - sha256 = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80", - strip_prefix = "brotli-decompressor-2.3.2", - build_file = Label("//rules/rust/remote:BUILD.brotli-decompressor-2.3.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__bumpalo__3_9_1", - url = "https://crates.io/api/v1/crates/bumpalo/3.9.1/download", - type = "tar.gz", - sha256 = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899", - strip_prefix = "bumpalo-3.9.1", - build_file = Label("//rules/rust/remote:BUILD.bumpalo-3.9.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__byte_tools__0_3_1", - url = "https://crates.io/api/v1/crates/byte-tools/0.3.1/download", - type = "tar.gz", - sha256 = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7", - strip_prefix = "byte-tools-0.3.1", - build_file = Label("//rules/rust/remote:BUILD.byte-tools-0.3.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__byteorder__1_4_3", - url = "https://crates.io/api/v1/crates/byteorder/1.4.3/download", - type = "tar.gz", - sha256 = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610", - strip_prefix = "byteorder-1.4.3", - build_file = Label("//rules/rust/remote:BUILD.byteorder-1.4.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__bytes__1_1_0", - url = "https://crates.io/api/v1/crates/bytes/1.1.0/download", - type = "tar.gz", - sha256 = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8", - strip_prefix = "bytes-1.1.0", - build_file = Label("//rules/rust/remote:BUILD.bytes-1.1.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__cc__1_0_73", - url = "https://crates.io/api/v1/crates/cc/1.0.73/download", - type = "tar.gz", - sha256 = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11", - strip_prefix = "cc-1.0.73", - build_file = Label("//rules/rust/remote:BUILD.cc-1.0.73.bazel"), - ) - - maybe( - http_archive, - name = "raze__census__0_4_0", - url = "https://crates.io/api/v1/crates/census/0.4.0/download", - type = "tar.gz", - sha256 = "5927edd8345aef08578bcbb4aea7314f340d80c7f4931f99fbeb40b99d8f5060", - strip_prefix = "census-0.4.0", - build_file = Label("//rules/rust/remote:BUILD.census-0.4.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__cfg_if__1_0_0", - url = "https://crates.io/api/v1/crates/cfg-if/1.0.0/download", - type = "tar.gz", - sha256 = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd", - strip_prefix = "cfg-if-1.0.0", - build_file = Label("//rules/rust/remote:BUILD.cfg-if-1.0.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__chrono__0_4_19", - url = "https://crates.io/api/v1/crates/chrono/0.4.19/download", - type = "tar.gz", - sha256 = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73", - strip_prefix = "chrono-0.4.19", - build_file = Label("//rules/rust/remote:BUILD.chrono-0.4.19.bazel"), - ) - - maybe( - http_archive, - name = "raze__clap__3_1_6", - url = "https://crates.io/api/v1/crates/clap/3.1.6/download", - type = "tar.gz", - sha256 = "d8c93436c21e4698bacadf42917db28b23017027a4deccb35dbe47a7e7840123", - strip_prefix = "clap-3.1.6", - build_file = Label("//rules/rust/remote:BUILD.clap-3.1.6.bazel"), - ) - - maybe( - http_archive, - name = "raze__colored__2_0_0", - url = "https://crates.io/api/v1/crates/colored/2.0.0/download", - type = "tar.gz", - sha256 = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd", - strip_prefix = "colored-2.0.0", - build_file = Label("//rules/rust/remote:BUILD.colored-2.0.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__combine__4_6_3", - url = "https://crates.io/api/v1/crates/combine/4.6.3/download", - type = "tar.gz", - sha256 = "50b727aacc797f9fc28e355d21f34709ac4fc9adecfe470ad07b8f4464f53062", - strip_prefix = "combine-4.6.3", - build_file = Label("//rules/rust/remote:BUILD.combine-4.6.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__config__0_12_0", - url = "https://crates.io/api/v1/crates/config/0.12.0/download", - type = "tar.gz", - sha256 = "54ad70579325f1a38ea4c13412b82241c5900700a69785d73e2736bd65a33f86", - strip_prefix = "config-0.12.0", - build_file = Label("//rules/rust/remote:BUILD.config-0.12.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__crc32fast__1_3_2", - url = "https://crates.io/api/v1/crates/crc32fast/1.3.2/download", - type = "tar.gz", - sha256 = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d", - strip_prefix = "crc32fast-1.3.2", - build_file = Label("//rules/rust/remote:BUILD.crc32fast-1.3.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__crossbeam__0_8_1", - url = "https://crates.io/api/v1/crates/crossbeam/0.8.1/download", - type = "tar.gz", - sha256 = "4ae5588f6b3c3cb05239e90bd110f257254aecd01e4635400391aeae07497845", - strip_prefix = "crossbeam-0.8.1", - build_file = Label("//rules/rust/remote:BUILD.crossbeam-0.8.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__crossbeam_channel__0_5_4", - url = "https://crates.io/api/v1/crates/crossbeam-channel/0.5.4/download", - type = "tar.gz", - sha256 = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53", - strip_prefix = "crossbeam-channel-0.5.4", - build_file = Label("//rules/rust/remote:BUILD.crossbeam-channel-0.5.4.bazel"), - ) - - maybe( - http_archive, - name = "raze__crossbeam_deque__0_8_1", - url = "https://crates.io/api/v1/crates/crossbeam-deque/0.8.1/download", - type = "tar.gz", - sha256 = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e", - strip_prefix = "crossbeam-deque-0.8.1", - build_file = Label("//rules/rust/remote:BUILD.crossbeam-deque-0.8.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__crossbeam_epoch__0_9_8", - url = "https://crates.io/api/v1/crates/crossbeam-epoch/0.9.8/download", - type = "tar.gz", - sha256 = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c", - strip_prefix = "crossbeam-epoch-0.9.8", - build_file = Label("//rules/rust/remote:BUILD.crossbeam-epoch-0.9.8.bazel"), - ) - - maybe( - http_archive, - name = "raze__crossbeam_queue__0_3_5", - url = "https://crates.io/api/v1/crates/crossbeam-queue/0.3.5/download", - type = "tar.gz", - sha256 = "1f25d8400f4a7a5778f0e4e52384a48cbd9b5c495d110786187fc750075277a2", - strip_prefix = "crossbeam-queue-0.3.5", - build_file = Label("//rules/rust/remote:BUILD.crossbeam-queue-0.3.5.bazel"), - ) - - maybe( - http_archive, - name = "raze__crossbeam_utils__0_8_8", - url = "https://crates.io/api/v1/crates/crossbeam-utils/0.8.8/download", - type = "tar.gz", - sha256 = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38", - strip_prefix = "crossbeam-utils-0.8.8", - build_file = Label("//rules/rust/remote:BUILD.crossbeam-utils-0.8.8.bazel"), - ) - - maybe( - http_archive, - name = "raze__crunchy__0_2_2", - url = "https://crates.io/api/v1/crates/crunchy/0.2.2/download", - type = "tar.gz", - sha256 = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7", - strip_prefix = "crunchy-0.2.2", - build_file = Label("//rules/rust/remote:BUILD.crunchy-0.2.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__ctor__0_1_22", - url = "https://crates.io/api/v1/crates/ctor/0.1.22/download", - type = "tar.gz", - sha256 = "f877be4f7c9f246b183111634f75baa039715e3f46ce860677d3b19a69fb229c", - strip_prefix = "ctor-0.1.22", - build_file = Label("//rules/rust/remote:BUILD.ctor-0.1.22.bazel"), - ) - - maybe( - http_archive, - name = "raze__dashmap__4_0_2", - url = "https://crates.io/api/v1/crates/dashmap/4.0.2/download", - type = "tar.gz", - sha256 = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c", - strip_prefix = "dashmap-4.0.2", - build_file = Label("//rules/rust/remote:BUILD.dashmap-4.0.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__diff__0_1_12", - url = "https://crates.io/api/v1/crates/diff/0.1.12/download", - type = "tar.gz", - sha256 = "0e25ea47919b1560c4e3b7fe0aaab9becf5b84a10325ddf7db0f0ba5e1026499", - strip_prefix = "diff-0.1.12", - build_file = Label("//rules/rust/remote:BUILD.diff-0.1.12.bazel"), - ) - - maybe( - http_archive, - name = "raze__digest__0_8_1", - url = "https://crates.io/api/v1/crates/digest/0.8.1/download", - type = "tar.gz", - sha256 = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5", - strip_prefix = "digest-0.8.1", - build_file = Label("//rules/rust/remote:BUILD.digest-0.8.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__dlv_list__0_2_3", - url = "https://crates.io/api/v1/crates/dlv-list/0.2.3/download", - type = "tar.gz", - sha256 = "68df3f2b690c1b86e65ef7830956aededf3cb0a16f898f79b9a6f421a7b6211b", - strip_prefix = "dlv-list-0.2.3", - build_file = Label("//rules/rust/remote:BUILD.dlv-list-0.2.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__downcast_rs__1_2_0", - url = "https://crates.io/api/v1/crates/downcast-rs/1.2.0/download", - type = "tar.gz", - sha256 = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650", - strip_prefix = "downcast-rs-1.2.0", - build_file = Label("//rules/rust/remote:BUILD.downcast-rs-1.2.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__either__1_6_1", - url = "https://crates.io/api/v1/crates/either/1.6.1/download", - type = "tar.gz", - sha256 = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457", - strip_prefix = "either-1.6.1", - build_file = Label("//rules/rust/remote:BUILD.either-1.6.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__fail__0_5_0", - url = "https://crates.io/api/v1/crates/fail/0.5.0/download", - type = "tar.gz", - sha256 = "ec3245a0ca564e7f3c797d20d833a6870f57a728ac967d5225b3ffdef4465011", - strip_prefix = "fail-0.5.0", - build_file = Label("//rules/rust/remote:BUILD.fail-0.5.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__fake_simd__0_1_2", - url = "https://crates.io/api/v1/crates/fake-simd/0.1.2/download", - type = "tar.gz", - sha256 = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed", - strip_prefix = "fake-simd-0.1.2", - build_file = Label("//rules/rust/remote:BUILD.fake-simd-0.1.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__fastdivide__0_4_0", - url = "https://crates.io/api/v1/crates/fastdivide/0.4.0/download", - type = "tar.gz", - sha256 = "25c7df09945d65ea8d70b3321547ed414bbc540aad5bac6883d021b970f35b04", - strip_prefix = "fastdivide-0.4.0", - build_file = Label("//rules/rust/remote:BUILD.fastdivide-0.4.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__fastfield_codecs__0_1_0", - url = "https://crates.io/api/v1/crates/fastfield_codecs/0.1.0/download", - type = "tar.gz", - sha256 = "bb0e8bfa31546b4ace05092c9db8d251d7bbc298a384875a08c945a473de4f1f", - strip_prefix = "fastfield_codecs-0.1.0", - build_file = Label("//rules/rust/remote:BUILD.fastfield_codecs-0.1.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__fastrand__1_7_0", - url = "https://crates.io/api/v1/crates/fastrand/1.7.0/download", - type = "tar.gz", - sha256 = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf", - strip_prefix = "fastrand-1.7.0", - build_file = Label("//rules/rust/remote:BUILD.fastrand-1.7.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__fixedbitset__0_4_1", - url = "https://crates.io/api/v1/crates/fixedbitset/0.4.1/download", - type = "tar.gz", - sha256 = "279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053e", - strip_prefix = "fixedbitset-0.4.1", - build_file = Label("//rules/rust/remote:BUILD.fixedbitset-0.4.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__fnv__1_0_7", - url = "https://crates.io/api/v1/crates/fnv/1.0.7/download", - type = "tar.gz", - sha256 = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1", - strip_prefix = "fnv-1.0.7", - build_file = Label("//rules/rust/remote:BUILD.fnv-1.0.7.bazel"), - ) - - maybe( - http_archive, - name = "raze__fs2__0_4_3", - url = "https://crates.io/api/v1/crates/fs2/0.4.3/download", - type = "tar.gz", - sha256 = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213", - strip_prefix = "fs2-0.4.3", - build_file = Label("//rules/rust/remote:BUILD.fs2-0.4.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__futures__0_3_21", - url = "https://crates.io/api/v1/crates/futures/0.3.21/download", - type = "tar.gz", - sha256 = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e", - strip_prefix = "futures-0.3.21", - build_file = Label("//rules/rust/remote:BUILD.futures-0.3.21.bazel"), - ) - - maybe( - http_archive, - name = "raze__futures_channel__0_3_21", - url = "https://crates.io/api/v1/crates/futures-channel/0.3.21/download", - type = "tar.gz", - sha256 = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010", - strip_prefix = "futures-channel-0.3.21", - build_file = Label("//rules/rust/remote:BUILD.futures-channel-0.3.21.bazel"), - ) - - maybe( - http_archive, - name = "raze__futures_core__0_3_21", - url = "https://crates.io/api/v1/crates/futures-core/0.3.21/download", - type = "tar.gz", - sha256 = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3", - strip_prefix = "futures-core-0.3.21", - build_file = Label("//rules/rust/remote:BUILD.futures-core-0.3.21.bazel"), - ) - - maybe( - http_archive, - name = "raze__futures_executor__0_3_21", - url = "https://crates.io/api/v1/crates/futures-executor/0.3.21/download", - type = "tar.gz", - sha256 = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6", - strip_prefix = "futures-executor-0.3.21", - build_file = Label("//rules/rust/remote:BUILD.futures-executor-0.3.21.bazel"), - ) - - maybe( - http_archive, - name = "raze__futures_io__0_3_21", - url = "https://crates.io/api/v1/crates/futures-io/0.3.21/download", - type = "tar.gz", - sha256 = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b", - strip_prefix = "futures-io-0.3.21", - build_file = Label("//rules/rust/remote:BUILD.futures-io-0.3.21.bazel"), - ) - - maybe( - http_archive, - name = "raze__futures_macro__0_3_21", - url = "https://crates.io/api/v1/crates/futures-macro/0.3.21/download", - type = "tar.gz", - sha256 = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512", - strip_prefix = "futures-macro-0.3.21", - build_file = Label("//rules/rust/remote:BUILD.futures-macro-0.3.21.bazel"), - ) - - maybe( - http_archive, - name = "raze__futures_sink__0_3_21", - url = "https://crates.io/api/v1/crates/futures-sink/0.3.21/download", - type = "tar.gz", - sha256 = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868", - strip_prefix = "futures-sink-0.3.21", - build_file = Label("//rules/rust/remote:BUILD.futures-sink-0.3.21.bazel"), - ) - - maybe( - http_archive, - name = "raze__futures_task__0_3_21", - url = "https://crates.io/api/v1/crates/futures-task/0.3.21/download", - type = "tar.gz", - sha256 = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a", - strip_prefix = "futures-task-0.3.21", - build_file = Label("//rules/rust/remote:BUILD.futures-task-0.3.21.bazel"), - ) - - maybe( - http_archive, - name = "raze__futures_util__0_3_21", - url = "https://crates.io/api/v1/crates/futures-util/0.3.21/download", - type = "tar.gz", - sha256 = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a", - strip_prefix = "futures-util-0.3.21", - build_file = Label("//rules/rust/remote:BUILD.futures-util-0.3.21.bazel"), - ) - - maybe( - http_archive, - name = "raze__generic_array__0_12_4", - url = "https://crates.io/api/v1/crates/generic-array/0.12.4/download", - type = "tar.gz", - sha256 = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd", - strip_prefix = "generic-array-0.12.4", - build_file = Label("//rules/rust/remote:BUILD.generic-array-0.12.4.bazel"), - ) - - maybe( - http_archive, - name = "raze__getrandom__0_2_5", - url = "https://crates.io/api/v1/crates/getrandom/0.2.5/download", - type = "tar.gz", - sha256 = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77", - strip_prefix = "getrandom-0.2.5", - build_file = Label("//rules/rust/remote:BUILD.getrandom-0.2.5.bazel"), - ) - - maybe( - http_archive, - name = "raze__h2__0_3_12", - url = "https://crates.io/api/v1/crates/h2/0.3.12/download", - type = "tar.gz", - sha256 = "62eeb471aa3e3c9197aa4bfeabfe02982f6dc96f750486c0bb0009ac58b26d2b", - strip_prefix = "h2-0.3.12", - build_file = Label("//rules/rust/remote:BUILD.h2-0.3.12.bazel"), - ) - - maybe( - http_archive, - name = "raze__hashbrown__0_11_2", - url = "https://crates.io/api/v1/crates/hashbrown/0.11.2/download", - type = "tar.gz", - sha256 = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e", - strip_prefix = "hashbrown-0.11.2", - build_file = Label("//rules/rust/remote:BUILD.hashbrown-0.11.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__hashbrown__0_9_1", - url = "https://crates.io/api/v1/crates/hashbrown/0.9.1/download", - type = "tar.gz", - sha256 = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04", - strip_prefix = "hashbrown-0.9.1", - build_file = Label("//rules/rust/remote:BUILD.hashbrown-0.9.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__heck__0_3_3", - url = "https://crates.io/api/v1/crates/heck/0.3.3/download", - type = "tar.gz", - sha256 = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c", - strip_prefix = "heck-0.3.3", - build_file = Label("//rules/rust/remote:BUILD.heck-0.3.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__hermit_abi__0_1_19", - url = "https://crates.io/api/v1/crates/hermit-abi/0.1.19/download", - type = "tar.gz", - sha256 = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33", - strip_prefix = "hermit-abi-0.1.19", - build_file = Label("//rules/rust/remote:BUILD.hermit-abi-0.1.19.bazel"), - ) - - maybe( - http_archive, - name = "raze__htmlescape__0_3_1", - url = "https://crates.io/api/v1/crates/htmlescape/0.3.1/download", - type = "tar.gz", - sha256 = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163", - strip_prefix = "htmlescape-0.3.1", - build_file = Label("//rules/rust/remote:BUILD.htmlescape-0.3.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__http__0_2_6", - url = "https://crates.io/api/v1/crates/http/0.2.6/download", - type = "tar.gz", - sha256 = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03", - strip_prefix = "http-0.2.6", - build_file = Label("//rules/rust/remote:BUILD.http-0.2.6.bazel"), - ) - - maybe( - http_archive, - name = "raze__http_body__0_4_4", - url = "https://crates.io/api/v1/crates/http-body/0.4.4/download", - type = "tar.gz", - sha256 = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6", - strip_prefix = "http-body-0.4.4", - build_file = Label("//rules/rust/remote:BUILD.http-body-0.4.4.bazel"), - ) - - maybe( - http_archive, - name = "raze__http_range_header__0_3_0", - url = "https://crates.io/api/v1/crates/http-range-header/0.3.0/download", - type = "tar.gz", - sha256 = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29", - strip_prefix = "http-range-header-0.3.0", - build_file = Label("//rules/rust/remote:BUILD.http-range-header-0.3.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__httparse__1_6_0", - url = "https://crates.io/api/v1/crates/httparse/1.6.0/download", - type = "tar.gz", - sha256 = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4", - strip_prefix = "httparse-1.6.0", - build_file = Label("//rules/rust/remote:BUILD.httparse-1.6.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__httpdate__1_0_2", - url = "https://crates.io/api/v1/crates/httpdate/1.0.2/download", - type = "tar.gz", - sha256 = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421", - strip_prefix = "httpdate-1.0.2", - build_file = Label("//rules/rust/remote:BUILD.httpdate-1.0.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__hyper__0_14_17", - url = "https://crates.io/api/v1/crates/hyper/0.14.17/download", - type = "tar.gz", - sha256 = "043f0e083e9901b6cc658a77d1eb86f4fc650bbb977a4337dd63192826aa85dd", - strip_prefix = "hyper-0.14.17", - build_file = Label("//rules/rust/remote:BUILD.hyper-0.14.17.bazel"), - ) - - maybe( - http_archive, - name = "raze__hyper_timeout__0_4_1", - url = "https://crates.io/api/v1/crates/hyper-timeout/0.4.1/download", - type = "tar.gz", - sha256 = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1", - strip_prefix = "hyper-timeout-0.4.1", - build_file = Label("//rules/rust/remote:BUILD.hyper-timeout-0.4.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__indexmap__1_8_0", - url = "https://crates.io/api/v1/crates/indexmap/1.8.0/download", - type = "tar.gz", - sha256 = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223", - strip_prefix = "indexmap-1.8.0", - build_file = Label("//rules/rust/remote:BUILD.indexmap-1.8.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__instant__0_1_12", - url = "https://crates.io/api/v1/crates/instant/0.1.12/download", - type = "tar.gz", - sha256 = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c", - strip_prefix = "instant-0.1.12", - build_file = Label("//rules/rust/remote:BUILD.instant-0.1.12.bazel"), - ) - - maybe( - http_archive, - name = "raze__itertools__0_10_3", - url = "https://crates.io/api/v1/crates/itertools/0.10.3/download", - type = "tar.gz", - sha256 = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3", - strip_prefix = "itertools-0.10.3", - build_file = Label("//rules/rust/remote:BUILD.itertools-0.10.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__itoa__1_0_1", - url = "https://crates.io/api/v1/crates/itoa/1.0.1/download", - type = "tar.gz", - sha256 = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35", - strip_prefix = "itoa-1.0.1", - build_file = Label("//rules/rust/remote:BUILD.itoa-1.0.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__js_sys__0_3_56", - url = "https://crates.io/api/v1/crates/js-sys/0.3.56/download", - type = "tar.gz", - sha256 = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04", - strip_prefix = "js-sys-0.3.56", - build_file = Label("//rules/rust/remote:BUILD.js-sys-0.3.56.bazel"), - ) - - maybe( - http_archive, - name = "raze__json5__0_4_1", - url = "https://crates.io/api/v1/crates/json5/0.4.1/download", - type = "tar.gz", - sha256 = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1", - strip_prefix = "json5-0.4.1", - build_file = Label("//rules/rust/remote:BUILD.json5-0.4.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__lazy_static__1_4_0", - url = "https://crates.io/api/v1/crates/lazy_static/1.4.0/download", - type = "tar.gz", - sha256 = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646", - strip_prefix = "lazy_static-1.4.0", - build_file = Label("//rules/rust/remote:BUILD.lazy_static-1.4.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__levenshtein_automata__0_2_1", - url = "https://crates.io/api/v1/crates/levenshtein_automata/0.2.1/download", - type = "tar.gz", - sha256 = "0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25", - strip_prefix = "levenshtein_automata-0.2.1", - build_file = Label("//rules/rust/remote:BUILD.levenshtein_automata-0.2.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__libc__0_2_121", - url = "https://crates.io/api/v1/crates/libc/0.2.121/download", - type = "tar.gz", - sha256 = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f", - strip_prefix = "libc-0.2.121", - build_file = Label("//rules/rust/remote:BUILD.libc-0.2.121.bazel"), - ) - - maybe( - http_archive, - name = "raze__libz_sys__1_1_5", - url = "https://crates.io/api/v1/crates/libz-sys/1.1.5/download", - type = "tar.gz", - sha256 = "6f35facd4a5673cb5a48822be2be1d4236c1c99cb4113cab7061ac720d5bf859", - strip_prefix = "libz-sys-1.1.5", - build_file = Label("//rules/rust/remote:BUILD.libz-sys-1.1.5.bazel"), - ) - - maybe( - http_archive, - name = "raze__linked_hash_map__0_5_4", - url = "https://crates.io/api/v1/crates/linked-hash-map/0.5.4/download", - type = "tar.gz", - sha256 = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3", - strip_prefix = "linked-hash-map-0.5.4", - build_file = Label("//rules/rust/remote:BUILD.linked-hash-map-0.5.4.bazel"), - ) - - maybe( - http_archive, - name = "raze__lock_api__0_4_6", - url = "https://crates.io/api/v1/crates/lock_api/0.4.6/download", - type = "tar.gz", - sha256 = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b", - strip_prefix = "lock_api-0.4.6", - build_file = Label("//rules/rust/remote:BUILD.lock_api-0.4.6.bazel"), - ) - - maybe( - http_archive, - name = "raze__log__0_4_14", - url = "https://crates.io/api/v1/crates/log/0.4.14/download", - type = "tar.gz", - sha256 = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710", - strip_prefix = "log-0.4.14", - build_file = Label("//rules/rust/remote:BUILD.log-0.4.14.bazel"), - ) - - maybe( - http_archive, - name = "raze__lru__0_7_3", - url = "https://crates.io/api/v1/crates/lru/0.7.3/download", - type = "tar.gz", - sha256 = "fcb87f3080f6d1d69e8c564c0fcfde1d7aa8cc451ce40cae89479111f03bc0eb", - strip_prefix = "lru-0.7.3", - build_file = Label("//rules/rust/remote:BUILD.lru-0.7.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__lz4_flex__0_9_2", - url = "https://crates.io/api/v1/crates/lz4_flex/0.9.2/download", - type = "tar.gz", - sha256 = "42c51df9d8d4842336c835df1d85ed447c4813baa237d033d95128bf5552ad8a", - strip_prefix = "lz4_flex-0.9.2", - build_file = Label("//rules/rust/remote:BUILD.lz4_flex-0.9.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__maplit__1_0_2", - url = "https://crates.io/api/v1/crates/maplit/1.0.2/download", - type = "tar.gz", - sha256 = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d", - strip_prefix = "maplit-1.0.2", - build_file = Label("//rules/rust/remote:BUILD.maplit-1.0.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__matchers__0_1_0", - url = "https://crates.io/api/v1/crates/matchers/0.1.0/download", - type = "tar.gz", - sha256 = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558", - strip_prefix = "matchers-0.1.0", - build_file = Label("//rules/rust/remote:BUILD.matchers-0.1.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__measure_time__0_8_0", - url = "https://crates.io/api/v1/crates/measure_time/0.8.0/download", - type = "tar.gz", - sha256 = "5f07966480d8562b3622f51df0b4e3fe6ea7ddb3b48b19b0f44ef863c455bdf9", - strip_prefix = "measure_time-0.8.0", - build_file = Label("//rules/rust/remote:BUILD.measure_time-0.8.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__memchr__2_4_1", - url = "https://crates.io/api/v1/crates/memchr/2.4.1/download", - type = "tar.gz", - sha256 = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a", - strip_prefix = "memchr-2.4.1", - build_file = Label("//rules/rust/remote:BUILD.memchr-2.4.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__memmap2__0_5_3", - url = "https://crates.io/api/v1/crates/memmap2/0.5.3/download", - type = "tar.gz", - sha256 = "057a3db23999c867821a7a59feb06a578fcb03685e983dff90daf9e7d24ac08f", - strip_prefix = "memmap2-0.5.3", - build_file = Label("//rules/rust/remote:BUILD.memmap2-0.5.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__memoffset__0_6_5", - url = "https://crates.io/api/v1/crates/memoffset/0.6.5/download", - type = "tar.gz", - sha256 = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce", - strip_prefix = "memoffset-0.6.5", - build_file = Label("//rules/rust/remote:BUILD.memoffset-0.6.5.bazel"), - ) - - maybe( - http_archive, - name = "raze__minimal_lexical__0_2_1", - url = "https://crates.io/api/v1/crates/minimal-lexical/0.2.1/download", - type = "tar.gz", - sha256 = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a", - strip_prefix = "minimal-lexical-0.2.1", - build_file = Label("//rules/rust/remote:BUILD.minimal-lexical-0.2.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__mio__0_8_2", - url = "https://crates.io/api/v1/crates/mio/0.8.2/download", - type = "tar.gz", - sha256 = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9", - strip_prefix = "mio-0.8.2", - build_file = Label("//rules/rust/remote:BUILD.mio-0.8.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__miow__0_3_7", - url = "https://crates.io/api/v1/crates/miow/0.3.7/download", - type = "tar.gz", - sha256 = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21", - strip_prefix = "miow-0.3.7", - build_file = Label("//rules/rust/remote:BUILD.miow-0.3.7.bazel"), - ) - - maybe( - http_archive, - name = "raze__multimap__0_8_3", - url = "https://crates.io/api/v1/crates/multimap/0.8.3/download", - type = "tar.gz", - sha256 = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a", - strip_prefix = "multimap-0.8.3", - build_file = Label("//rules/rust/remote:BUILD.multimap-0.8.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__murmurhash32__0_2_0", - url = "https://crates.io/api/v1/crates/murmurhash32/0.2.0/download", - type = "tar.gz", - sha256 = "d736ff882f0e85fe9689fb23db229616c4c00aee2b3ac282f666d8f20eb25d4a", - strip_prefix = "murmurhash32-0.2.0", - build_file = Label("//rules/rust/remote:BUILD.murmurhash32-0.2.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__nom__7_1_1", - url = "https://crates.io/api/v1/crates/nom/7.1.1/download", - type = "tar.gz", - sha256 = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36", - strip_prefix = "nom-7.1.1", - build_file = Label("//rules/rust/remote:BUILD.nom-7.1.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__ntapi__0_3_7", - url = "https://crates.io/api/v1/crates/ntapi/0.3.7/download", - type = "tar.gz", - sha256 = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f", - strip_prefix = "ntapi-0.3.7", - build_file = Label("//rules/rust/remote:BUILD.ntapi-0.3.7.bazel"), - ) - - maybe( - http_archive, - name = "raze__num_integer__0_1_44", - url = "https://crates.io/api/v1/crates/num-integer/0.1.44/download", - type = "tar.gz", - sha256 = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db", - strip_prefix = "num-integer-0.1.44", - build_file = Label("//rules/rust/remote:BUILD.num-integer-0.1.44.bazel"), - ) - - maybe( - http_archive, - name = "raze__num_traits__0_2_14", - url = "https://crates.io/api/v1/crates/num-traits/0.2.14/download", - type = "tar.gz", - sha256 = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290", - strip_prefix = "num-traits-0.2.14", - build_file = Label("//rules/rust/remote:BUILD.num-traits-0.2.14.bazel"), - ) - - maybe( - http_archive, - name = "raze__num_cpus__1_13_1", - url = "https://crates.io/api/v1/crates/num_cpus/1.13.1/download", - type = "tar.gz", - sha256 = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1", - strip_prefix = "num_cpus-1.13.1", - build_file = Label("//rules/rust/remote:BUILD.num_cpus-1.13.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__num_enum__0_5_7", - url = "https://crates.io/api/v1/crates/num_enum/0.5.7/download", - type = "tar.gz", - sha256 = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9", - strip_prefix = "num_enum-0.5.7", - build_file = Label("//rules/rust/remote:BUILD.num_enum-0.5.7.bazel"), - ) - - maybe( - http_archive, - name = "raze__num_enum_derive__0_5_7", - url = "https://crates.io/api/v1/crates/num_enum_derive/0.5.7/download", - type = "tar.gz", - sha256 = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce", - strip_prefix = "num_enum_derive-0.5.7", - build_file = Label("//rules/rust/remote:BUILD.num_enum_derive-0.5.7.bazel"), - ) - - maybe( - http_archive, - name = "raze__num_threads__0_1_5", - url = "https://crates.io/api/v1/crates/num_threads/0.1.5/download", - type = "tar.gz", - sha256 = "aba1801fb138d8e85e11d0fc70baf4fe1cdfffda7c6cd34a854905df588e5ed0", - strip_prefix = "num_threads-0.1.5", - build_file = Label("//rules/rust/remote:BUILD.num_threads-0.1.5.bazel"), - ) - - maybe( - http_archive, - name = "raze__once_cell__1_10_0", - url = "https://crates.io/api/v1/crates/once_cell/1.10.0/download", - type = "tar.gz", - sha256 = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9", - strip_prefix = "once_cell-1.10.0", - build_file = Label("//rules/rust/remote:BUILD.once_cell-1.10.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__opaque_debug__0_2_3", - url = "https://crates.io/api/v1/crates/opaque-debug/0.2.3/download", - type = "tar.gz", - sha256 = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c", - strip_prefix = "opaque-debug-0.2.3", - build_file = Label("//rules/rust/remote:BUILD.opaque-debug-0.2.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__opentelemetry__0_17_0", - url = "https://crates.io/api/v1/crates/opentelemetry/0.17.0/download", - type = "tar.gz", - sha256 = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8", - strip_prefix = "opentelemetry-0.17.0", - build_file = Label("//rules/rust/remote:BUILD.opentelemetry-0.17.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__opentelemetry_prometheus__0_10_0", - url = "https://crates.io/api/v1/crates/opentelemetry-prometheus/0.10.0/download", - type = "tar.gz", - sha256 = "9328977e479cebe12ce0d3fcecdaea4721d234895a9440c5b5dfd113f0594ac6", - strip_prefix = "opentelemetry-prometheus-0.10.0", - build_file = Label("//rules/rust/remote:BUILD.opentelemetry-prometheus-0.10.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__ordered_multimap__0_3_1", - url = "https://crates.io/api/v1/crates/ordered-multimap/0.3.1/download", - type = "tar.gz", - sha256 = "1c672c7ad9ec066e428c00eb917124a06f08db19e2584de982cc34b1f4c12485", - strip_prefix = "ordered-multimap-0.3.1", - build_file = Label("//rules/rust/remote:BUILD.ordered-multimap-0.3.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__os_str_bytes__6_0_0", - url = "https://crates.io/api/v1/crates/os_str_bytes/6.0.0/download", - type = "tar.gz", - sha256 = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64", - strip_prefix = "os_str_bytes-6.0.0", - build_file = Label("//rules/rust/remote:BUILD.os_str_bytes-6.0.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__output_vt100__0_1_3", - url = "https://crates.io/api/v1/crates/output_vt100/0.1.3/download", - type = "tar.gz", - sha256 = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66", - strip_prefix = "output_vt100-0.1.3", - build_file = Label("//rules/rust/remote:BUILD.output_vt100-0.1.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__ownedbytes__0_2_0", - url = "https://crates.io/api/v1/crates/ownedbytes/0.2.0/download", - type = "tar.gz", - sha256 = "0bfa208b217a39411d78b85427792e4c1bc40508acbcefd2836e765f44a5c99e", - strip_prefix = "ownedbytes-0.2.0", - build_file = Label("//rules/rust/remote:BUILD.ownedbytes-0.2.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__parking_lot__0_11_2", - url = "https://crates.io/api/v1/crates/parking_lot/0.11.2/download", - type = "tar.gz", - sha256 = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99", - strip_prefix = "parking_lot-0.11.2", - build_file = Label("//rules/rust/remote:BUILD.parking_lot-0.11.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__parking_lot__0_12_0", - url = "https://crates.io/api/v1/crates/parking_lot/0.12.0/download", - type = "tar.gz", - sha256 = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58", - strip_prefix = "parking_lot-0.12.0", - build_file = Label("//rules/rust/remote:BUILD.parking_lot-0.12.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__parking_lot_core__0_8_5", - url = "https://crates.io/api/v1/crates/parking_lot_core/0.8.5/download", - type = "tar.gz", - sha256 = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216", - strip_prefix = "parking_lot_core-0.8.5", - build_file = Label("//rules/rust/remote:BUILD.parking_lot_core-0.8.5.bazel"), - ) - - maybe( - http_archive, - name = "raze__parking_lot_core__0_9_1", - url = "https://crates.io/api/v1/crates/parking_lot_core/0.9.1/download", - type = "tar.gz", - sha256 = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954", - strip_prefix = "parking_lot_core-0.9.1", - build_file = Label("//rules/rust/remote:BUILD.parking_lot_core-0.9.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__pathdiff__0_2_1", - url = "https://crates.io/api/v1/crates/pathdiff/0.2.1/download", - type = "tar.gz", - sha256 = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd", - strip_prefix = "pathdiff-0.2.1", - build_file = Label("//rules/rust/remote:BUILD.pathdiff-0.2.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__percent_encoding__2_1_0", - url = "https://crates.io/api/v1/crates/percent-encoding/2.1.0/download", - type = "tar.gz", - sha256 = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e", - strip_prefix = "percent-encoding-2.1.0", - build_file = Label("//rules/rust/remote:BUILD.percent-encoding-2.1.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__pest__2_1_3", - url = "https://crates.io/api/v1/crates/pest/2.1.3/download", - type = "tar.gz", - sha256 = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53", - strip_prefix = "pest-2.1.3", - build_file = Label("//rules/rust/remote:BUILD.pest-2.1.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__pest_derive__2_1_0", - url = "https://crates.io/api/v1/crates/pest_derive/2.1.0/download", - type = "tar.gz", - sha256 = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0", - strip_prefix = "pest_derive-2.1.0", - build_file = Label("//rules/rust/remote:BUILD.pest_derive-2.1.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__pest_generator__2_1_3", - url = "https://crates.io/api/v1/crates/pest_generator/2.1.3/download", - type = "tar.gz", - sha256 = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55", - strip_prefix = "pest_generator-2.1.3", - build_file = Label("//rules/rust/remote:BUILD.pest_generator-2.1.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__pest_meta__2_1_3", - url = "https://crates.io/api/v1/crates/pest_meta/2.1.3/download", - type = "tar.gz", - sha256 = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d", - strip_prefix = "pest_meta-2.1.3", - build_file = Label("//rules/rust/remote:BUILD.pest_meta-2.1.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__petgraph__0_6_0", - url = "https://crates.io/api/v1/crates/petgraph/0.6.0/download", - type = "tar.gz", - sha256 = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f", - strip_prefix = "petgraph-0.6.0", - build_file = Label("//rules/rust/remote:BUILD.petgraph-0.6.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__pin_project__1_0_10", - url = "https://crates.io/api/v1/crates/pin-project/1.0.10/download", - type = "tar.gz", - sha256 = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e", - strip_prefix = "pin-project-1.0.10", - build_file = Label("//rules/rust/remote:BUILD.pin-project-1.0.10.bazel"), - ) - - maybe( - http_archive, - name = "raze__pin_project_internal__1_0_10", - url = "https://crates.io/api/v1/crates/pin-project-internal/1.0.10/download", - type = "tar.gz", - sha256 = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb", - strip_prefix = "pin-project-internal-1.0.10", - build_file = Label("//rules/rust/remote:BUILD.pin-project-internal-1.0.10.bazel"), - ) - - maybe( - http_archive, - name = "raze__pin_project_lite__0_2_8", - url = "https://crates.io/api/v1/crates/pin-project-lite/0.2.8/download", - type = "tar.gz", - sha256 = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c", - strip_prefix = "pin-project-lite-0.2.8", - build_file = Label("//rules/rust/remote:BUILD.pin-project-lite-0.2.8.bazel"), - ) - - maybe( - http_archive, - name = "raze__pin_utils__0_1_0", - url = "https://crates.io/api/v1/crates/pin-utils/0.1.0/download", - type = "tar.gz", - sha256 = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184", - strip_prefix = "pin-utils-0.1.0", - build_file = Label("//rules/rust/remote:BUILD.pin-utils-0.1.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__pkg_config__0_3_24", - url = "https://crates.io/api/v1/crates/pkg-config/0.3.24/download", - type = "tar.gz", - sha256 = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe", - strip_prefix = "pkg-config-0.3.24", - build_file = Label("//rules/rust/remote:BUILD.pkg-config-0.3.24.bazel"), - ) - - maybe( - http_archive, - name = "raze__ppv_lite86__0_2_16", - url = "https://crates.io/api/v1/crates/ppv-lite86/0.2.16/download", - type = "tar.gz", - sha256 = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872", - strip_prefix = "ppv-lite86-0.2.16", - build_file = Label("//rules/rust/remote:BUILD.ppv-lite86-0.2.16.bazel"), - ) - - maybe( - http_archive, - name = "raze__pretty_assertions__1_2_0", - url = "https://crates.io/api/v1/crates/pretty_assertions/1.2.0/download", - type = "tar.gz", - sha256 = "57c038cb5319b9c704bf9c227c261d275bfec0ad438118a2787ce47944fb228b", - strip_prefix = "pretty_assertions-1.2.0", - build_file = Label("//rules/rust/remote:BUILD.pretty_assertions-1.2.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__proc_macro_crate__1_1_3", - url = "https://crates.io/api/v1/crates/proc-macro-crate/1.1.3/download", - type = "tar.gz", - sha256 = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a", - strip_prefix = "proc-macro-crate-1.1.3", - build_file = Label("//rules/rust/remote:BUILD.proc-macro-crate-1.1.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__proc_macro2__1_0_36", - url = "https://crates.io/api/v1/crates/proc-macro2/1.0.36/download", - type = "tar.gz", - sha256 = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029", - strip_prefix = "proc-macro2-1.0.36", - build_file = Label("//rules/rust/remote:BUILD.proc-macro2-1.0.36.bazel"), - ) - - maybe( - http_archive, - name = "raze__prometheus__0_13_0", - url = "https://crates.io/api/v1/crates/prometheus/0.13.0/download", - type = "tar.gz", - sha256 = "b7f64969ffd5dd8f39bd57a68ac53c163a095ed9d0fb707146da1b27025a3504", - strip_prefix = "prometheus-0.13.0", - build_file = Label("//rules/rust/remote:BUILD.prometheus-0.13.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__prost__0_9_0", - url = "https://crates.io/api/v1/crates/prost/0.9.0/download", - type = "tar.gz", - sha256 = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001", - strip_prefix = "prost-0.9.0", - build_file = Label("//rules/rust/remote:BUILD.prost-0.9.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__prost_build__0_9_0", - url = "https://crates.io/api/v1/crates/prost-build/0.9.0/download", - type = "tar.gz", - sha256 = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5", - strip_prefix = "prost-build-0.9.0", - build_file = Label("//rules/rust/remote:BUILD.prost-build-0.9.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__prost_derive__0_9_0", - url = "https://crates.io/api/v1/crates/prost-derive/0.9.0/download", - type = "tar.gz", - sha256 = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe", - strip_prefix = "prost-derive-0.9.0", - build_file = Label("//rules/rust/remote:BUILD.prost-derive-0.9.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__prost_types__0_9_0", - url = "https://crates.io/api/v1/crates/prost-types/0.9.0/download", - type = "tar.gz", - sha256 = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a", - strip_prefix = "prost-types-0.9.0", - build_file = Label("//rules/rust/remote:BUILD.prost-types-0.9.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__protobuf__2_27_1", - url = "https://crates.io/api/v1/crates/protobuf/2.27.1/download", - type = "tar.gz", - sha256 = "cf7e6d18738ecd0902d30d1ad232c9125985a3422929b16c65517b38adc14f96", - strip_prefix = "protobuf-2.27.1", - build_file = Label("//rules/rust/remote:BUILD.protobuf-2.27.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__quote__1_0_16", - url = "https://crates.io/api/v1/crates/quote/1.0.16/download", - type = "tar.gz", - sha256 = "b4af2ec4714533fcdf07e886f17025ace8b997b9ce51204ee69b6da831c3da57", - strip_prefix = "quote-1.0.16", - build_file = Label("//rules/rust/remote:BUILD.quote-1.0.16.bazel"), - ) - - maybe( - http_archive, - name = "raze__rand__0_8_5", - url = "https://crates.io/api/v1/crates/rand/0.8.5/download", - type = "tar.gz", - sha256 = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404", - strip_prefix = "rand-0.8.5", - build_file = Label("//rules/rust/remote:BUILD.rand-0.8.5.bazel"), - ) - - maybe( - http_archive, - name = "raze__rand_chacha__0_3_1", - url = "https://crates.io/api/v1/crates/rand_chacha/0.3.1/download", - type = "tar.gz", - sha256 = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88", - strip_prefix = "rand_chacha-0.3.1", - build_file = Label("//rules/rust/remote:BUILD.rand_chacha-0.3.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__rand_core__0_6_3", - url = "https://crates.io/api/v1/crates/rand_core/0.6.3/download", - type = "tar.gz", - sha256 = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7", - strip_prefix = "rand_core-0.6.3", - build_file = Label("//rules/rust/remote:BUILD.rand_core-0.6.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__rayon__1_5_1", - url = "https://crates.io/api/v1/crates/rayon/1.5.1/download", - type = "tar.gz", - sha256 = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90", - strip_prefix = "rayon-1.5.1", - build_file = Label("//rules/rust/remote:BUILD.rayon-1.5.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__rayon_core__1_9_1", - url = "https://crates.io/api/v1/crates/rayon-core/1.9.1/download", - type = "tar.gz", - sha256 = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e", - strip_prefix = "rayon-core-1.9.1", - build_file = Label("//rules/rust/remote:BUILD.rayon-core-1.9.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__rdkafka__0_28_0", - url = "https://crates.io/api/v1/crates/rdkafka/0.28.0/download", - type = "tar.gz", - sha256 = "1de127f294f2dba488ed46760b129d5ecbeabbd337ccbf3739cb29d50db2161c", - strip_prefix = "rdkafka-0.28.0", - build_file = Label("//rules/rust/remote:BUILD.rdkafka-0.28.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__rdkafka_sys__4_2_0_1_8_2", - url = "https://crates.io/api/v1/crates/rdkafka-sys/4.2.0+1.8.2/download", - type = "tar.gz", - sha256 = "9e542c6863b04ce0fa0c5719bc6b7b348cf8dd21af1bb03c9db5f9805b2a6473", - strip_prefix = "rdkafka-sys-4.2.0+1.8.2", - build_file = Label("//rules/rust/remote:BUILD.rdkafka-sys-4.2.0+1.8.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__redox_syscall__0_2_11", - url = "https://crates.io/api/v1/crates/redox_syscall/0.2.11/download", - type = "tar.gz", - sha256 = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c", - strip_prefix = "redox_syscall-0.2.11", - build_file = Label("//rules/rust/remote:BUILD.redox_syscall-0.2.11.bazel"), - ) - - maybe( - http_archive, - name = "raze__regex__1_5_5", - url = "https://crates.io/api/v1/crates/regex/1.5.5/download", - type = "tar.gz", - sha256 = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286", - strip_prefix = "regex-1.5.5", - build_file = Label("//rules/rust/remote:BUILD.regex-1.5.5.bazel"), - ) - - maybe( - http_archive, - name = "raze__regex_automata__0_1_10", - url = "https://crates.io/api/v1/crates/regex-automata/0.1.10/download", - type = "tar.gz", - sha256 = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132", - strip_prefix = "regex-automata-0.1.10", - build_file = Label("//rules/rust/remote:BUILD.regex-automata-0.1.10.bazel"), - ) - - maybe( - http_archive, - name = "raze__regex_syntax__0_4_2", - url = "https://crates.io/api/v1/crates/regex-syntax/0.4.2/download", - type = "tar.gz", - sha256 = "8e931c58b93d86f080c734bfd2bce7dd0079ae2331235818133c8be7f422e20e", - strip_prefix = "regex-syntax-0.4.2", - build_file = Label("//rules/rust/remote:BUILD.regex-syntax-0.4.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__regex_syntax__0_6_25", - url = "https://crates.io/api/v1/crates/regex-syntax/0.6.25/download", - type = "tar.gz", - sha256 = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b", - strip_prefix = "regex-syntax-0.6.25", - build_file = Label("//rules/rust/remote:BUILD.regex-syntax-0.6.25.bazel"), - ) - - maybe( - http_archive, - name = "raze__remove_dir_all__0_5_3", - url = "https://crates.io/api/v1/crates/remove_dir_all/0.5.3/download", - type = "tar.gz", - sha256 = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7", - strip_prefix = "remove_dir_all-0.5.3", - build_file = Label("//rules/rust/remote:BUILD.remove_dir_all-0.5.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__ron__0_7_0", - url = "https://crates.io/api/v1/crates/ron/0.7.0/download", - type = "tar.gz", - sha256 = "1b861ecaade43ac97886a512b360d01d66be9f41f3c61088b42cedf92e03d678", - strip_prefix = "ron-0.7.0", - build_file = Label("//rules/rust/remote:BUILD.ron-0.7.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__rust_ini__0_17_0", - url = "https://crates.io/api/v1/crates/rust-ini/0.17.0/download", - type = "tar.gz", - sha256 = "63471c4aa97a1cf8332a5f97709a79a4234698de6a1f5087faf66f2dae810e22", - strip_prefix = "rust-ini-0.17.0", - build_file = Label("//rules/rust/remote:BUILD.rust-ini-0.17.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__rust_stemmers__1_2_0", - url = "https://crates.io/api/v1/crates/rust-stemmers/1.2.0/download", - type = "tar.gz", - sha256 = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54", - strip_prefix = "rust-stemmers-1.2.0", - build_file = Label("//rules/rust/remote:BUILD.rust-stemmers-1.2.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__ryu__1_0_9", - url = "https://crates.io/api/v1/crates/ryu/1.0.9/download", - type = "tar.gz", - sha256 = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f", - strip_prefix = "ryu-1.0.9", - build_file = Label("//rules/rust/remote:BUILD.ryu-1.0.9.bazel"), - ) - - maybe( - http_archive, - name = "raze__scopeguard__1_1_0", - url = "https://crates.io/api/v1/crates/scopeguard/1.1.0/download", - type = "tar.gz", - sha256 = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd", - strip_prefix = "scopeguard-1.1.0", - build_file = Label("//rules/rust/remote:BUILD.scopeguard-1.1.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__serde__1_0_136", - url = "https://crates.io/api/v1/crates/serde/1.0.136/download", - type = "tar.gz", - sha256 = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789", - strip_prefix = "serde-1.0.136", - build_file = Label("//rules/rust/remote:BUILD.serde-1.0.136.bazel"), - ) - - maybe( - http_archive, - name = "raze__serde_derive__1_0_136", - url = "https://crates.io/api/v1/crates/serde_derive/1.0.136/download", - type = "tar.gz", - sha256 = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9", - strip_prefix = "serde_derive-1.0.136", - build_file = Label("//rules/rust/remote:BUILD.serde_derive-1.0.136.bazel"), - ) - - maybe( - http_archive, - name = "raze__serde_json__1_0_79", - url = "https://crates.io/api/v1/crates/serde_json/1.0.79/download", - type = "tar.gz", - sha256 = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95", - strip_prefix = "serde_json-1.0.79", - build_file = Label("//rules/rust/remote:BUILD.serde_json-1.0.79.bazel"), - ) - - maybe( - http_archive, - name = "raze__serde_yaml__0_8_23", - url = "https://crates.io/api/v1/crates/serde_yaml/0.8.23/download", - type = "tar.gz", - sha256 = "a4a521f2940385c165a24ee286aa8599633d162077a54bdcae2a6fd5a7bfa7a0", - strip_prefix = "serde_yaml-0.8.23", - build_file = Label("//rules/rust/remote:BUILD.serde_yaml-0.8.23.bazel"), - ) - - maybe( - http_archive, - name = "raze__sha_1__0_8_2", - url = "https://crates.io/api/v1/crates/sha-1/0.8.2/download", - type = "tar.gz", - sha256 = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df", - strip_prefix = "sha-1-0.8.2", - build_file = Label("//rules/rust/remote:BUILD.sha-1-0.8.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__sharded_slab__0_1_4", - url = "https://crates.io/api/v1/crates/sharded-slab/0.1.4/download", - type = "tar.gz", - sha256 = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31", - strip_prefix = "sharded-slab-0.1.4", - build_file = Label("//rules/rust/remote:BUILD.sharded-slab-0.1.4.bazel"), - ) - - maybe( - http_archive, - name = "raze__signal_hook__0_3_13", - url = "https://crates.io/api/v1/crates/signal-hook/0.3.13/download", - type = "tar.gz", - sha256 = "647c97df271007dcea485bb74ffdb57f2e683f1306c854f468a0c244badabf2d", - strip_prefix = "signal-hook-0.3.13", - build_file = Label("//rules/rust/remote:BUILD.signal-hook-0.3.13.bazel"), - ) - - maybe( - http_archive, - name = "raze__signal_hook_registry__1_4_0", - url = "https://crates.io/api/v1/crates/signal-hook-registry/1.4.0/download", - type = "tar.gz", - sha256 = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0", - strip_prefix = "signal-hook-registry-1.4.0", - build_file = Label("//rules/rust/remote:BUILD.signal-hook-registry-1.4.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__slab__0_4_5", - url = "https://crates.io/api/v1/crates/slab/0.4.5/download", - type = "tar.gz", - sha256 = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5", - strip_prefix = "slab-0.4.5", - build_file = Label("//rules/rust/remote:BUILD.slab-0.4.5.bazel"), - ) - - maybe( - http_archive, - name = "raze__smallvec__1_8_0", - url = "https://crates.io/api/v1/crates/smallvec/1.8.0/download", - type = "tar.gz", - sha256 = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83", - strip_prefix = "smallvec-1.8.0", - build_file = Label("//rules/rust/remote:BUILD.smallvec-1.8.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__smawk__0_3_1", - url = "https://crates.io/api/v1/crates/smawk/0.3.1/download", - type = "tar.gz", - sha256 = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043", - strip_prefix = "smawk-0.3.1", - build_file = Label("//rules/rust/remote:BUILD.smawk-0.3.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__socket2__0_4_4", - url = "https://crates.io/api/v1/crates/socket2/0.4.4/download", - type = "tar.gz", - sha256 = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0", - strip_prefix = "socket2-0.4.4", - build_file = Label("//rules/rust/remote:BUILD.socket2-0.4.4.bazel"), - ) - - maybe( - http_archive, - name = "raze__stable_deref_trait__1_2_0", - url = "https://crates.io/api/v1/crates/stable_deref_trait/1.2.0/download", - type = "tar.gz", - sha256 = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3", - strip_prefix = "stable_deref_trait-1.2.0", - build_file = Label("//rules/rust/remote:BUILD.stable_deref_trait-1.2.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__static_assertions__1_1_0", - url = "https://crates.io/api/v1/crates/static_assertions/1.1.0/download", - type = "tar.gz", - sha256 = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f", - strip_prefix = "static_assertions-1.1.0", - build_file = Label("//rules/rust/remote:BUILD.static_assertions-1.1.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__strsim__0_10_0", - url = "https://crates.io/api/v1/crates/strsim/0.10.0/download", - type = "tar.gz", - sha256 = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623", - strip_prefix = "strsim-0.10.0", - build_file = Label("//rules/rust/remote:BUILD.strsim-0.10.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__syn__1_0_89", - url = "https://crates.io/api/v1/crates/syn/1.0.89/download", - type = "tar.gz", - sha256 = "ea297be220d52398dcc07ce15a209fce436d361735ac1db700cab3b6cdfb9f54", - strip_prefix = "syn-1.0.89", - build_file = Label("//rules/rust/remote:BUILD.syn-1.0.89.bazel"), - ) - - maybe( - http_archive, - name = "raze__tantivy__0_17_0", - url = "https://crates.io/api/v1/crates/tantivy/0.17.0/download", - type = "tar.gz", - sha256 = "264c2549892aa83975386a924ef8d0b8e909674c837d37ea58b4bd8739495c6e", - strip_prefix = "tantivy-0.17.0", - build_file = Label("//rules/rust/remote:BUILD.tantivy-0.17.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__tantivy_bitpacker__0_1_1", - url = "https://crates.io/api/v1/crates/tantivy-bitpacker/0.1.1/download", - type = "tar.gz", - sha256 = "66d10a5ed75437a4f6bbbba67601cd5adab8d71f5188b677055381f0f36064f2", - strip_prefix = "tantivy-bitpacker-0.1.1", - build_file = Label("//rules/rust/remote:BUILD.tantivy-bitpacker-0.1.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__tantivy_common__0_1_0", - url = "https://crates.io/api/v1/crates/tantivy-common/0.1.0/download", - type = "tar.gz", - sha256 = "760e44073e328f4ea3f38660da9ba2598a19ad5ad4149cfb89ad89b4d5ee88d9", - strip_prefix = "tantivy-common-0.1.0", - build_file = Label("//rules/rust/remote:BUILD.tantivy-common-0.1.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__tantivy_common__0_2_0", - url = "https://crates.io/api/v1/crates/tantivy-common/0.2.0/download", - type = "tar.gz", - sha256 = "2078cd12c7e46eb2cd66ec813eac8472e0f9dfe816f26159effceffd2dbe4793", - strip_prefix = "tantivy-common-0.2.0", - build_file = Label("//rules/rust/remote:BUILD.tantivy-common-0.2.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__tantivy_fst__0_3_0", - url = "https://crates.io/api/v1/crates/tantivy-fst/0.3.0/download", - type = "tar.gz", - sha256 = "cb20cdc0d83e9184560bdde9cd60142dbb4af2e0f770e88fce45770495224205", - strip_prefix = "tantivy-fst-0.3.0", - build_file = Label("//rules/rust/remote:BUILD.tantivy-fst-0.3.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__tantivy_query_grammar__0_15_0", - url = "https://crates.io/api/v1/crates/tantivy-query-grammar/0.15.0/download", - type = "tar.gz", - sha256 = "466e0218472a9b276a73e38b2571ac02f9a1b270b4481c9cd8cc23a63d1307e9", - strip_prefix = "tantivy-query-grammar-0.15.0", - build_file = Label("//rules/rust/remote:BUILD.tantivy-query-grammar-0.15.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__tempfile__3_3_0", - url = "https://crates.io/api/v1/crates/tempfile/3.3.0/download", - type = "tar.gz", - sha256 = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4", - strip_prefix = "tempfile-3.3.0", - build_file = Label("//rules/rust/remote:BUILD.tempfile-3.3.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__termcolor__1_1_3", - url = "https://crates.io/api/v1/crates/termcolor/1.1.3/download", - type = "tar.gz", - sha256 = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755", - strip_prefix = "termcolor-1.1.3", - build_file = Label("//rules/rust/remote:BUILD.termcolor-1.1.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__textwrap__0_15_0", - url = "https://crates.io/api/v1/crates/textwrap/0.15.0/download", - type = "tar.gz", - sha256 = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb", - strip_prefix = "textwrap-0.15.0", - build_file = Label("//rules/rust/remote:BUILD.textwrap-0.15.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__thiserror__1_0_30", - url = "https://crates.io/api/v1/crates/thiserror/1.0.30/download", - type = "tar.gz", - sha256 = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417", - strip_prefix = "thiserror-1.0.30", - build_file = Label("//rules/rust/remote:BUILD.thiserror-1.0.30.bazel"), - ) - - maybe( - http_archive, - name = "raze__thiserror_impl__1_0_30", - url = "https://crates.io/api/v1/crates/thiserror-impl/1.0.30/download", - type = "tar.gz", - sha256 = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b", - strip_prefix = "thiserror-impl-1.0.30", - build_file = Label("//rules/rust/remote:BUILD.thiserror-impl-1.0.30.bazel"), - ) - - maybe( - http_archive, - name = "raze__thread_local__1_1_4", - url = "https://crates.io/api/v1/crates/thread_local/1.1.4/download", - type = "tar.gz", - sha256 = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180", - strip_prefix = "thread_local-1.1.4", - build_file = Label("//rules/rust/remote:BUILD.thread_local-1.1.4.bazel"), - ) - - maybe( - http_archive, - name = "raze__time__0_1_44", - url = "https://crates.io/api/v1/crates/time/0.1.44/download", - type = "tar.gz", - sha256 = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255", - strip_prefix = "time-0.1.44", - build_file = Label("//rules/rust/remote:BUILD.time-0.1.44.bazel"), - ) - - maybe( - http_archive, - name = "raze__time__0_3_7", - url = "https://crates.io/api/v1/crates/time/0.3.7/download", - type = "tar.gz", - sha256 = "004cbc98f30fa233c61a38bc77e96a9106e65c88f2d3bef182ae952027e5753d", - strip_prefix = "time-0.3.7", - build_file = Label("//rules/rust/remote:BUILD.time-0.3.7.bazel"), - ) - - maybe( - http_archive, - name = "raze__tokio__1_17_0", - url = "https://crates.io/api/v1/crates/tokio/1.17.0/download", - type = "tar.gz", - sha256 = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee", - strip_prefix = "tokio-1.17.0", - build_file = Label("//rules/rust/remote:BUILD.tokio-1.17.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__tokio_io_timeout__1_2_0", - url = "https://crates.io/api/v1/crates/tokio-io-timeout/1.2.0/download", - type = "tar.gz", - sha256 = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf", - strip_prefix = "tokio-io-timeout-1.2.0", - build_file = Label("//rules/rust/remote:BUILD.tokio-io-timeout-1.2.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__tokio_macros__1_7_0", - url = "https://crates.io/api/v1/crates/tokio-macros/1.7.0/download", - type = "tar.gz", - sha256 = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7", - strip_prefix = "tokio-macros-1.7.0", - build_file = Label("//rules/rust/remote:BUILD.tokio-macros-1.7.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__tokio_stream__0_1_8", - url = "https://crates.io/api/v1/crates/tokio-stream/0.1.8/download", - type = "tar.gz", - sha256 = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3", - strip_prefix = "tokio-stream-0.1.8", - build_file = Label("//rules/rust/remote:BUILD.tokio-stream-0.1.8.bazel"), - ) - - maybe( - http_archive, - name = "raze__tokio_util__0_6_9", - url = "https://crates.io/api/v1/crates/tokio-util/0.6.9/download", - type = "tar.gz", - sha256 = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0", - strip_prefix = "tokio-util-0.6.9", - build_file = Label("//rules/rust/remote:BUILD.tokio-util-0.6.9.bazel"), - ) - - maybe( - http_archive, - name = "raze__tokio_util__0_7_0", - url = "https://crates.io/api/v1/crates/tokio-util/0.7.0/download", - type = "tar.gz", - sha256 = "64910e1b9c1901aaf5375561e35b9c057d95ff41a44ede043a03e09279eabaf1", - strip_prefix = "tokio-util-0.7.0", - build_file = Label("//rules/rust/remote:BUILD.tokio-util-0.7.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__toml__0_5_8", - url = "https://crates.io/api/v1/crates/toml/0.5.8/download", - type = "tar.gz", - sha256 = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa", - strip_prefix = "toml-0.5.8", - build_file = Label("//rules/rust/remote:BUILD.toml-0.5.8.bazel"), - ) - - maybe( - http_archive, - name = "raze__tonic__0_6_2", - url = "https://crates.io/api/v1/crates/tonic/0.6.2/download", - type = "tar.gz", - sha256 = "ff08f4649d10a70ffa3522ca559031285d8e421d727ac85c60825761818f5d0a", - strip_prefix = "tonic-0.6.2", - build_file = Label("//rules/rust/remote:BUILD.tonic-0.6.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__tonic_build__0_6_2", - url = "https://crates.io/api/v1/crates/tonic-build/0.6.2/download", - type = "tar.gz", - sha256 = "9403f1bafde247186684b230dc6f38b5cd514584e8bec1dd32514be4745fa757", - strip_prefix = "tonic-build-0.6.2", - build_file = Label("//rules/rust/remote:BUILD.tonic-build-0.6.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__tower__0_4_12", - url = "https://crates.io/api/v1/crates/tower/0.4.12/download", - type = "tar.gz", - sha256 = "9a89fd63ad6adf737582df5db40d286574513c69a11dac5214dc3b5603d6713e", - strip_prefix = "tower-0.4.12", - build_file = Label("//rules/rust/remote:BUILD.tower-0.4.12.bazel"), - ) - - maybe( - http_archive, - name = "raze__tower_http__0_2_5", - url = "https://crates.io/api/v1/crates/tower-http/0.2.5/download", - type = "tar.gz", - sha256 = "aba3f3efabf7fb41fae8534fc20a817013dd1c12cb45441efb6c82e6556b4cd8", - strip_prefix = "tower-http-0.2.5", - build_file = Label("//rules/rust/remote:BUILD.tower-http-0.2.5.bazel"), - ) - - maybe( - http_archive, - name = "raze__tower_layer__0_3_1", - url = "https://crates.io/api/v1/crates/tower-layer/0.3.1/download", - type = "tar.gz", - sha256 = "343bc9466d3fe6b0f960ef45960509f84480bf4fd96f92901afe7ff3df9d3a62", - strip_prefix = "tower-layer-0.3.1", - build_file = Label("//rules/rust/remote:BUILD.tower-layer-0.3.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__tower_service__0_3_1", - url = "https://crates.io/api/v1/crates/tower-service/0.3.1/download", - type = "tar.gz", - sha256 = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6", - strip_prefix = "tower-service-0.3.1", - build_file = Label("//rules/rust/remote:BUILD.tower-service-0.3.1.bazel"), - ) - - maybe( - http_archive, - name = "raze__tracing__0_1_32", - url = "https://crates.io/api/v1/crates/tracing/0.1.32/download", - type = "tar.gz", - sha256 = "4a1bdf54a7c28a2bbf701e1d2233f6c77f473486b94bee4f9678da5a148dca7f", - strip_prefix = "tracing-0.1.32", - build_file = Label("//rules/rust/remote:BUILD.tracing-0.1.32.bazel"), - ) - - maybe( - http_archive, - name = "raze__tracing_appender__0_2_2", - url = "https://crates.io/api/v1/crates/tracing-appender/0.2.2/download", - type = "tar.gz", - sha256 = "09d48f71a791638519505cefafe162606f706c25592e4bde4d97600c0195312e", - strip_prefix = "tracing-appender-0.2.2", - build_file = Label("//rules/rust/remote:BUILD.tracing-appender-0.2.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__tracing_attributes__0_1_20", - url = "https://crates.io/api/v1/crates/tracing-attributes/0.1.20/download", - type = "tar.gz", - sha256 = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b", - strip_prefix = "tracing-attributes-0.1.20", - build_file = Label("//rules/rust/remote:BUILD.tracing-attributes-0.1.20.bazel"), - ) - - maybe( - http_archive, - name = "raze__tracing_core__0_1_23", - url = "https://crates.io/api/v1/crates/tracing-core/0.1.23/download", - type = "tar.gz", - sha256 = "aa31669fa42c09c34d94d8165dd2012e8ff3c66aca50f3bb226b68f216f2706c", - strip_prefix = "tracing-core-0.1.23", - build_file = Label("//rules/rust/remote:BUILD.tracing-core-0.1.23.bazel"), - ) - - maybe( - http_archive, - name = "raze__tracing_futures__0_2_5", - url = "https://crates.io/api/v1/crates/tracing-futures/0.2.5/download", - type = "tar.gz", - sha256 = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2", - strip_prefix = "tracing-futures-0.2.5", - build_file = Label("//rules/rust/remote:BUILD.tracing-futures-0.2.5.bazel"), - ) - - maybe( - http_archive, - name = "raze__tracing_log__0_1_2", - url = "https://crates.io/api/v1/crates/tracing-log/0.1.2/download", - type = "tar.gz", - sha256 = "a6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3", - strip_prefix = "tracing-log-0.1.2", - build_file = Label("//rules/rust/remote:BUILD.tracing-log-0.1.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__tracing_serde__0_1_3", - url = "https://crates.io/api/v1/crates/tracing-serde/0.1.3/download", - type = "tar.gz", - sha256 = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1", - strip_prefix = "tracing-serde-0.1.3", - build_file = Label("//rules/rust/remote:BUILD.tracing-serde-0.1.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__tracing_subscriber__0_3_9", - url = "https://crates.io/api/v1/crates/tracing-subscriber/0.3.9/download", - type = "tar.gz", - sha256 = "9e0ab7bdc962035a87fba73f3acca9b8a8d0034c2e6f60b84aeaaddddc155dce", - strip_prefix = "tracing-subscriber-0.3.9", - build_file = Label("//rules/rust/remote:BUILD.tracing-subscriber-0.3.9.bazel"), - ) - - maybe( - http_archive, - name = "raze__try_lock__0_2_3", - url = "https://crates.io/api/v1/crates/try-lock/0.2.3/download", - type = "tar.gz", - sha256 = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642", - strip_prefix = "try-lock-0.2.3", - build_file = Label("//rules/rust/remote:BUILD.try-lock-0.2.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__twox_hash__1_6_2", - url = "https://crates.io/api/v1/crates/twox-hash/1.6.2/download", - type = "tar.gz", - sha256 = "4ee73e6e4924fe940354b8d4d98cad5231175d615cd855b758adc658c0aac6a0", - strip_prefix = "twox-hash-1.6.2", - build_file = Label("//rules/rust/remote:BUILD.twox-hash-1.6.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__typenum__1_15_0", - url = "https://crates.io/api/v1/crates/typenum/1.15.0/download", - type = "tar.gz", - sha256 = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987", - strip_prefix = "typenum-1.15.0", - build_file = Label("//rules/rust/remote:BUILD.typenum-1.15.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__ucd_trie__0_1_3", - url = "https://crates.io/api/v1/crates/ucd-trie/0.1.3/download", - type = "tar.gz", - sha256 = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c", - strip_prefix = "ucd-trie-0.1.3", - build_file = Label("//rules/rust/remote:BUILD.ucd-trie-0.1.3.bazel"), - ) - - maybe( - http_archive, - name = "raze__unicode_linebreak__0_1_2", - url = "https://crates.io/api/v1/crates/unicode-linebreak/0.1.2/download", - type = "tar.gz", - sha256 = "3a52dcaab0c48d931f7cc8ef826fa51690a08e1ea55117ef26f89864f532383f", - strip_prefix = "unicode-linebreak-0.1.2", - build_file = Label("//rules/rust/remote:BUILD.unicode-linebreak-0.1.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__unicode_segmentation__1_9_0", - url = "https://crates.io/api/v1/crates/unicode-segmentation/1.9.0/download", - type = "tar.gz", - sha256 = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99", - strip_prefix = "unicode-segmentation-1.9.0", - build_file = Label("//rules/rust/remote:BUILD.unicode-segmentation-1.9.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__unicode_width__0_1_9", - url = "https://crates.io/api/v1/crates/unicode-width/0.1.9/download", - type = "tar.gz", - sha256 = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973", - strip_prefix = "unicode-width-0.1.9", - build_file = Label("//rules/rust/remote:BUILD.unicode-width-0.1.9.bazel"), - ) - - maybe( - http_archive, - name = "raze__unicode_xid__0_2_2", - url = "https://crates.io/api/v1/crates/unicode-xid/0.2.2/download", - type = "tar.gz", - sha256 = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3", - strip_prefix = "unicode-xid-0.2.2", - build_file = Label("//rules/rust/remote:BUILD.unicode-xid-0.2.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__utf8_ranges__1_0_4", - url = "https://crates.io/api/v1/crates/utf8-ranges/1.0.4/download", - type = "tar.gz", - sha256 = "b4ae116fef2b7fea257ed6440d3cfcff7f190865f170cdad00bb6465bf18ecba", - strip_prefix = "utf8-ranges-1.0.4", - build_file = Label("//rules/rust/remote:BUILD.utf8-ranges-1.0.4.bazel"), - ) - - maybe( - http_archive, - name = "raze__uuid__0_8_2", - url = "https://crates.io/api/v1/crates/uuid/0.8.2/download", - type = "tar.gz", - sha256 = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7", - strip_prefix = "uuid-0.8.2", - build_file = Label("//rules/rust/remote:BUILD.uuid-0.8.2.bazel"), - ) - - maybe( - http_archive, - name = "raze__valuable__0_1_0", - url = "https://crates.io/api/v1/crates/valuable/0.1.0/download", - type = "tar.gz", - sha256 = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d", - strip_prefix = "valuable-0.1.0", - build_file = Label("//rules/rust/remote:BUILD.valuable-0.1.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__vcpkg__0_2_15", - url = "https://crates.io/api/v1/crates/vcpkg/0.2.15/download", - type = "tar.gz", - sha256 = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426", - strip_prefix = "vcpkg-0.2.15", - build_file = Label("//rules/rust/remote:BUILD.vcpkg-0.2.15.bazel"), - ) - - maybe( - http_archive, - name = "raze__version_check__0_9_4", - url = "https://crates.io/api/v1/crates/version_check/0.9.4/download", - type = "tar.gz", - sha256 = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f", - strip_prefix = "version_check-0.9.4", - build_file = Label("//rules/rust/remote:BUILD.version_check-0.9.4.bazel"), - ) - - maybe( - http_archive, - name = "raze__want__0_3_0", - url = "https://crates.io/api/v1/crates/want/0.3.0/download", - type = "tar.gz", - sha256 = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0", - strip_prefix = "want-0.3.0", - build_file = Label("//rules/rust/remote:BUILD.want-0.3.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__wasi__0_10_0_wasi_snapshot_preview1", - url = "https://crates.io/api/v1/crates/wasi/0.10.0+wasi-snapshot-preview1/download", - type = "tar.gz", - sha256 = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f", - strip_prefix = "wasi-0.10.0+wasi-snapshot-preview1", - build_file = Label("//rules/rust/remote:BUILD.wasi-0.10.0+wasi-snapshot-preview1.bazel"), - ) - - maybe( - http_archive, - name = "raze__wasi__0_11_0_wasi_snapshot_preview1", - url = "https://crates.io/api/v1/crates/wasi/0.11.0+wasi-snapshot-preview1/download", - type = "tar.gz", - sha256 = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423", - strip_prefix = "wasi-0.11.0+wasi-snapshot-preview1", - build_file = Label("//rules/rust/remote:BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel"), - ) - - maybe( - http_archive, - name = "raze__wasm_bindgen__0_2_79", - url = "https://crates.io/api/v1/crates/wasm-bindgen/0.2.79/download", - type = "tar.gz", - sha256 = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06", - strip_prefix = "wasm-bindgen-0.2.79", - build_file = Label("//rules/rust/remote:BUILD.wasm-bindgen-0.2.79.bazel"), - ) - - maybe( - http_archive, - name = "raze__wasm_bindgen_backend__0_2_79", - url = "https://crates.io/api/v1/crates/wasm-bindgen-backend/0.2.79/download", - type = "tar.gz", - sha256 = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca", - strip_prefix = "wasm-bindgen-backend-0.2.79", - build_file = Label("//rules/rust/remote:BUILD.wasm-bindgen-backend-0.2.79.bazel"), - ) - - maybe( - http_archive, - name = "raze__wasm_bindgen_macro__0_2_79", - url = "https://crates.io/api/v1/crates/wasm-bindgen-macro/0.2.79/download", - type = "tar.gz", - sha256 = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01", - strip_prefix = "wasm-bindgen-macro-0.2.79", - build_file = Label("//rules/rust/remote:BUILD.wasm-bindgen-macro-0.2.79.bazel"), - ) - - maybe( - http_archive, - name = "raze__wasm_bindgen_macro_support__0_2_79", - url = "https://crates.io/api/v1/crates/wasm-bindgen-macro-support/0.2.79/download", - type = "tar.gz", - sha256 = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc", - strip_prefix = "wasm-bindgen-macro-support-0.2.79", - build_file = Label("//rules/rust/remote:BUILD.wasm-bindgen-macro-support-0.2.79.bazel"), - ) - - maybe( - http_archive, - name = "raze__wasm_bindgen_shared__0_2_79", - url = "https://crates.io/api/v1/crates/wasm-bindgen-shared/0.2.79/download", - type = "tar.gz", - sha256 = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2", - strip_prefix = "wasm-bindgen-shared-0.2.79", - build_file = Label("//rules/rust/remote:BUILD.wasm-bindgen-shared-0.2.79.bazel"), - ) - - maybe( - http_archive, - name = "raze__which__4_2_5", - url = "https://crates.io/api/v1/crates/which/4.2.5/download", - type = "tar.gz", - sha256 = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae", - strip_prefix = "which-4.2.5", - build_file = Label("//rules/rust/remote:BUILD.which-4.2.5.bazel"), - ) - - maybe( - http_archive, - name = "raze__winapi__0_3_9", - url = "https://crates.io/api/v1/crates/winapi/0.3.9/download", - type = "tar.gz", - sha256 = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419", - strip_prefix = "winapi-0.3.9", - build_file = Label("//rules/rust/remote:BUILD.winapi-0.3.9.bazel"), - ) - - maybe( - http_archive, - name = "raze__winapi_i686_pc_windows_gnu__0_4_0", - url = "https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download", - type = "tar.gz", - sha256 = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6", - strip_prefix = "winapi-i686-pc-windows-gnu-0.4.0", - build_file = Label("//rules/rust/remote:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__winapi_util__0_1_5", - url = "https://crates.io/api/v1/crates/winapi-util/0.1.5/download", - type = "tar.gz", - sha256 = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178", - strip_prefix = "winapi-util-0.1.5", - build_file = Label("//rules/rust/remote:BUILD.winapi-util-0.1.5.bazel"), - ) - - maybe( - http_archive, - name = "raze__winapi_x86_64_pc_windows_gnu__0_4_0", - url = "https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download", - type = "tar.gz", - sha256 = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f", - strip_prefix = "winapi-x86_64-pc-windows-gnu-0.4.0", - build_file = Label("//rules/rust/remote:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__windows_sys__0_32_0", - url = "https://crates.io/api/v1/crates/windows-sys/0.32.0/download", - type = "tar.gz", - sha256 = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6", - strip_prefix = "windows-sys-0.32.0", - build_file = Label("//rules/rust/remote:BUILD.windows-sys-0.32.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__windows_aarch64_msvc__0_32_0", - url = "https://crates.io/api/v1/crates/windows_aarch64_msvc/0.32.0/download", - type = "tar.gz", - sha256 = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5", - strip_prefix = "windows_aarch64_msvc-0.32.0", - build_file = Label("//rules/rust/remote:BUILD.windows_aarch64_msvc-0.32.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__windows_i686_gnu__0_32_0", - url = "https://crates.io/api/v1/crates/windows_i686_gnu/0.32.0/download", - type = "tar.gz", - sha256 = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615", - strip_prefix = "windows_i686_gnu-0.32.0", - build_file = Label("//rules/rust/remote:BUILD.windows_i686_gnu-0.32.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__windows_i686_msvc__0_32_0", - url = "https://crates.io/api/v1/crates/windows_i686_msvc/0.32.0/download", - type = "tar.gz", - sha256 = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172", - strip_prefix = "windows_i686_msvc-0.32.0", - build_file = Label("//rules/rust/remote:BUILD.windows_i686_msvc-0.32.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__windows_x86_64_gnu__0_32_0", - url = "https://crates.io/api/v1/crates/windows_x86_64_gnu/0.32.0/download", - type = "tar.gz", - sha256 = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc", - strip_prefix = "windows_x86_64_gnu-0.32.0", - build_file = Label("//rules/rust/remote:BUILD.windows_x86_64_gnu-0.32.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__windows_x86_64_msvc__0_32_0", - url = "https://crates.io/api/v1/crates/windows_x86_64_msvc/0.32.0/download", - type = "tar.gz", - sha256 = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316", - strip_prefix = "windows_x86_64_msvc-0.32.0", - build_file = Label("//rules/rust/remote:BUILD.windows_x86_64_msvc-0.32.0.bazel"), - ) - - maybe( - http_archive, - name = "raze__yaml_rust__0_4_5", - url = "https://crates.io/api/v1/crates/yaml-rust/0.4.5/download", - type = "tar.gz", - sha256 = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85", - strip_prefix = "yaml-rust-0.4.5", - build_file = Label("//rules/rust/remote:BUILD.yaml-rust-0.4.5.bazel"), - ) diff --git a/rules/rust/remote/BUILD.ahash-0.4.7.bazel b/rules/rust/remote/BUILD.ahash-0.4.7.bazel deleted file mode 100644 index b6524f9..0000000 --- a/rules/rust/remote/BUILD.ahash-0.4.7.bazel +++ /dev/null @@ -1,64 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "ahash" with type "bench" omitted - -# Unsupported target "map" with type "bench" omitted - -rust_library( - name = "ahash", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=ahash", - "manual", - ], - version = "0.4.7", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "bench" with type "test" omitted - -# Unsupported target "map_tests" with type "test" omitted - -# Unsupported target "nopanic" with type "test" omitted diff --git a/rules/rust/remote/BUILD.ahash-0.7.6.bazel b/rules/rust/remote/BUILD.ahash-0.7.6.bazel deleted file mode 100644 index 62b097a..0000000 --- a/rules/rust/remote/BUILD.ahash-0.7.6.bazel +++ /dev/null @@ -1,131 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "ahash_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.7.6", - visibility = ["//visibility:private"], - deps = [ - "@raze__version_check__0_9_4//:version_check", - ] + selects.with_or({ - # cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi")) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - ], - "//conditions:default": [], - }) + selects.with_or({ - # cfg(not(all(target_arch = "arm", target_os = "none"))) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - ], - "//conditions:default": [], - }), -) - -# Unsupported target "ahash" with type "bench" omitted - -# Unsupported target "map" with type "bench" omitted - -rust_library( - name = "ahash", - srcs = glob(["**/*.rs"]), - aliases = { - }, - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=ahash", - "manual", - ], - version = "0.7.6", - # buildifier: leave-alone - deps = [ - ":ahash_build_script", - ] + selects.with_or({ - # cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi")) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__getrandom__0_2_5//:getrandom", - ], - "//conditions:default": [], - }) + selects.with_or({ - # cfg(not(all(target_arch = "arm", target_os = "none"))) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__once_cell__1_10_0//:once_cell", - ], - "//conditions:default": [], - }), -) - -# Unsupported target "bench" with type "test" omitted - -# Unsupported target "map_tests" with type "test" omitted - -# Unsupported target "nopanic" with type "test" omitted diff --git a/rules/rust/remote/BUILD.aho-corasick-0.7.18.bazel b/rules/rust/remote/BUILD.aho-corasick-0.7.18.bazel deleted file mode 100644 index 44e5062..0000000 --- a/rules/rust/remote/BUILD.aho-corasick-0.7.18.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "unencumbered", # Unlicense from expression "Unlicense OR MIT" -]) - -# Generated Targets - -rust_library( - name = "aho_corasick", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=aho_corasick", - "manual", - ], - version = "0.7.18", - # buildifier: leave-alone - deps = [ - "@raze__memchr__2_4_1//:memchr", - ], -) diff --git a/rules/rust/remote/BUILD.alloc-no-stdlib-2.0.3.bazel b/rules/rust/remote/BUILD.alloc-no-stdlib-2.0.3.bazel deleted file mode 100644 index 7cd49ee..0000000 --- a/rules/rust/remote/BUILD.alloc-no-stdlib-2.0.3.bazel +++ /dev/null @@ -1,81 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # BSD-3-Clause from expression "BSD-3-Clause" -]) - -# Generated Targets - -rust_binary( - # Prefix bin name to disambiguate from (probable) collision with lib name - # N.B.: The exact form of this is subject to change. - name = "cargo_bin_example", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/bin/example.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=example", - "manual", - ], - version = "2.0.3", - # buildifier: leave-alone - deps = [ - ":alloc_no_stdlib", - ], -) - -rust_library( - name = "alloc_no_stdlib", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=alloc-no-stdlib", - "manual", - ], - version = "2.0.3", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "lib" with type "test" omitted diff --git a/rules/rust/remote/BUILD.alloc-stdlib-0.2.1.bazel b/rules/rust/remote/BUILD.alloc-stdlib-0.2.1.bazel deleted file mode 100644 index f421471..0000000 --- a/rules/rust/remote/BUILD.alloc-stdlib-0.2.1.bazel +++ /dev/null @@ -1,83 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # BSD-3-Clause from expression "BSD-3-Clause" -]) - -# Generated Targets - -rust_binary( - # Prefix bin name to disambiguate from (probable) collision with lib name - # N.B.: The exact form of this is subject to change. - name = "cargo_bin_example", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/bin/example.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=example", - "manual", - ], - version = "0.2.1", - # buildifier: leave-alone - deps = [ - ":alloc_stdlib", - "@raze__alloc_no_stdlib__2_0_3//:alloc_no_stdlib", - ], -) - -rust_library( - name = "alloc_stdlib", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=alloc-stdlib", - "manual", - ], - version = "0.2.1", - # buildifier: leave-alone - deps = [ - "@raze__alloc_no_stdlib__2_0_3//:alloc_no_stdlib", - ], -) - -# Unsupported target "lib" with type "test" omitted diff --git a/rules/rust/remote/BUILD.ansi_term-0.12.1.bazel b/rules/rust/remote/BUILD.ansi_term-0.12.1.bazel deleted file mode 100644 index a3d5a90..0000000 --- a/rules/rust/remote/BUILD.ansi_term-0.12.1.bazel +++ /dev/null @@ -1,60 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "256_colours" with type "example" omitted - -# Unsupported target "basic_colours" with type "example" omitted - -# Unsupported target "rgb_colours" with type "example" omitted - -rust_library( - name = "ansi_term", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=ansi_term", - "manual", - ], - version = "0.12.1", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.anyhow-1.0.56.bazel b/rules/rust/remote/BUILD.anyhow-1.0.56.bazel deleted file mode 100644 index 16f4019..0000000 --- a/rules/rust/remote/BUILD.anyhow-1.0.56.bazel +++ /dev/null @@ -1,116 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "anyhow_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "1.0.56", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "anyhow", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=anyhow", - "manual", - ], - version = "1.0.56", - # buildifier: leave-alone - deps = [ - ":anyhow_build_script", - ], -) - -# Unsupported target "compiletest" with type "test" omitted - -# Unsupported target "test_autotrait" with type "test" omitted - -# Unsupported target "test_backtrace" with type "test" omitted - -# Unsupported target "test_boxed" with type "test" omitted - -# Unsupported target "test_chain" with type "test" omitted - -# Unsupported target "test_context" with type "test" omitted - -# Unsupported target "test_convert" with type "test" omitted - -# Unsupported target "test_downcast" with type "test" omitted - -# Unsupported target "test_ensure" with type "test" omitted - -# Unsupported target "test_ffi" with type "test" omitted - -# Unsupported target "test_fmt" with type "test" omitted - -# Unsupported target "test_macros" with type "test" omitted - -# Unsupported target "test_repr" with type "test" omitted - -# Unsupported target "test_source" with type "test" omitted diff --git a/rules/rust/remote/BUILD.async-stream-0.3.3.bazel b/rules/rust/remote/BUILD.async-stream-0.3.3.bazel deleted file mode 100644 index d83765c..0000000 --- a/rules/rust/remote/BUILD.async-stream-0.3.3.bazel +++ /dev/null @@ -1,66 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "tcp_accept" with type "example" omitted - -rust_library( - name = "async_stream", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - proc_macro_deps = [ - "@raze__async_stream_impl__0_3_3//:async_stream_impl", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=async-stream", - "manual", - ], - version = "0.3.3", - # buildifier: leave-alone - deps = [ - "@raze__futures_core__0_3_21//:futures_core", - ], -) - -# Unsupported target "for_await" with type "test" omitted - -# Unsupported target "stream" with type "test" omitted - -# Unsupported target "try_stream" with type "test" omitted diff --git a/rules/rust/remote/BUILD.async-stream-impl-0.3.3.bazel b/rules/rust/remote/BUILD.async-stream-impl-0.3.3.bazel deleted file mode 100644 index 8983c06..0000000 --- a/rules/rust/remote/BUILD.async-stream-impl-0.3.3.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_proc_macro( - name = "async_stream_impl", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=async-stream-impl", - "manual", - ], - version = "0.3.3", - # buildifier: leave-alone - deps = [ - "@raze__proc_macro2__1_0_36//:proc_macro2", - "@raze__quote__1_0_16//:quote", - "@raze__syn__1_0_89//:syn", - ], -) diff --git a/rules/rust/remote/BUILD.async-trait-0.1.52.bazel b/rules/rust/remote/BUILD.async-trait-0.1.52.bazel deleted file mode 100644 index b6fdb2c..0000000 --- a/rules/rust/remote/BUILD.async-trait-0.1.52.bazel +++ /dev/null @@ -1,91 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "async_trait_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.1.52", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_proc_macro( - name = "async_trait", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=async-trait", - "manual", - ], - version = "0.1.52", - # buildifier: leave-alone - deps = [ - ":async_trait_build_script", - "@raze__proc_macro2__1_0_36//:proc_macro2", - "@raze__quote__1_0_16//:quote", - "@raze__syn__1_0_89//:syn", - ], -) - -# Unsupported target "compiletest" with type "test" omitted - -# Unsupported target "test" with type "test" omitted diff --git a/rules/rust/remote/BUILD.atty-0.2.14.bazel b/rules/rust/remote/BUILD.atty-0.2.14.bazel deleted file mode 100644 index 99f2432..0000000 --- a/rules/rust/remote/BUILD.atty-0.2.14.bazel +++ /dev/null @@ -1,67 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "atty" with type "example" omitted - -rust_library( - name = "atty", - srcs = glob(["**/*.rs"]), - aliases = { - }, - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=atty", - "manual", - ], - version = "0.2.14", - # buildifier: leave-alone - deps = [ - ] + selects.with_or({ - # cfg(unix) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__libc__0_2_121//:libc", - ], - "//conditions:default": [], - }), -) diff --git a/rules/rust/remote/BUILD.autocfg-1.1.0.bazel b/rules/rust/remote/BUILD.autocfg-1.1.0.bazel deleted file mode 100644 index 9cdb4ac..0000000 --- a/rules/rust/remote/BUILD.autocfg-1.1.0.bazel +++ /dev/null @@ -1,64 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -# Unsupported target "integers" with type "example" omitted - -# Unsupported target "paths" with type "example" omitted - -# Unsupported target "traits" with type "example" omitted - -# Unsupported target "versions" with type "example" omitted - -rust_library( - name = "autocfg", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=autocfg", - "manual", - ], - version = "1.1.0", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "rustflags" with type "test" omitted diff --git a/rules/rust/remote/BUILD.base64-0.13.0.bazel b/rules/rust/remote/BUILD.base64-0.13.0.bazel deleted file mode 100644 index 27550b7..0000000 --- a/rules/rust/remote/BUILD.base64-0.13.0.bazel +++ /dev/null @@ -1,70 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "benchmarks" with type "bench" omitted - -# Unsupported target "base64" with type "example" omitted - -# Unsupported target "make_tables" with type "example" omitted - -rust_library( - name = "base64", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=base64", - "manual", - ], - version = "0.13.0", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "decode" with type "test" omitted - -# Unsupported target "encode" with type "test" omitted - -# Unsupported target "helpers" with type "test" omitted - -# Unsupported target "tests" with type "test" omitted diff --git a/rules/rust/remote/BUILD.bazel b/rules/rust/remote/BUILD.bazel deleted file mode 100644 index e69de29..0000000 diff --git a/rules/rust/remote/BUILD.bitflags-1.3.2.bazel b/rules/rust/remote/BUILD.bitflags-1.3.2.bazel deleted file mode 100644 index 802e633..0000000 --- a/rules/rust/remote/BUILD.bitflags-1.3.2.bazel +++ /dev/null @@ -1,59 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "bitflags", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=bitflags", - "manual", - ], - version = "1.3.2", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "basic" with type "test" omitted - -# Unsupported target "compile" with type "test" omitted diff --git a/rules/rust/remote/BUILD.bitpacking-0.8.4.bazel b/rules/rust/remote/BUILD.bitpacking-0.8.4.bazel deleted file mode 100644 index 37bd86f..0000000 --- a/rules/rust/remote/BUILD.bitpacking-0.8.4.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "bitpacking_bench" with type "bench" omitted - -rust_library( - name = "bitpacking", - srcs = glob(["**/*.rs"]), - crate_features = [ - "bitpacker4x", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=bitpacking", - "manual", - ], - version = "0.8.4", - # buildifier: leave-alone - deps = [ - "@raze__crunchy__0_2_2//:crunchy", - ], -) diff --git a/rules/rust/remote/BUILD.block-buffer-0.7.3.bazel b/rules/rust/remote/BUILD.block-buffer-0.7.3.bazel deleted file mode 100644 index 459aa26..0000000 --- a/rules/rust/remote/BUILD.block-buffer-0.7.3.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "block_buffer", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=block-buffer", - "manual", - ], - version = "0.7.3", - # buildifier: leave-alone - deps = [ - "@raze__block_padding__0_1_5//:block_padding", - "@raze__byte_tools__0_3_1//:byte_tools", - "@raze__byteorder__1_4_3//:byteorder", - "@raze__generic_array__0_12_4//:generic_array", - ], -) diff --git a/rules/rust/remote/BUILD.block-padding-0.1.5.bazel b/rules/rust/remote/BUILD.block-padding-0.1.5.bazel deleted file mode 100644 index 833dc07..0000000 --- a/rules/rust/remote/BUILD.block-padding-0.1.5.bazel +++ /dev/null @@ -1,55 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "block_padding", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=block-padding", - "manual", - ], - version = "0.1.5", - # buildifier: leave-alone - deps = [ - "@raze__byte_tools__0_3_1//:byte_tools", - ], -) diff --git a/rules/rust/remote/BUILD.brotli-3.3.3.bazel b/rules/rust/remote/BUILD.brotli-3.3.3.bazel deleted file mode 100644 index bc8dbfb..0000000 --- a/rules/rust/remote/BUILD.brotli-3.3.3.bazel +++ /dev/null @@ -1,129 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # BSD-3-Clause from expression "BSD-3-Clause OR MIT" -]) - -# Generated Targets - -rust_binary( - # Prefix bin name to disambiguate from (probable) collision with lib name - # N.B.: The exact form of this is subject to change. - name = "cargo_bin_brotli", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc-stdlib", - "default", - "ffi-api", - "std", - ], - crate_root = "src/bin/brotli.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=brotli", - "manual", - ], - version = "3.3.3", - # buildifier: leave-alone - deps = [ - ":brotli", - "@raze__alloc_no_stdlib__2_0_3//:alloc_no_stdlib", - "@raze__alloc_stdlib__0_2_1//:alloc_stdlib", - "@raze__brotli_decompressor__2_3_2//:brotli_decompressor", - ], -) - -rust_binary( - # Prefix bin name to disambiguate from (probable) collision with lib name - # N.B.: The exact form of this is subject to change. - name = "cargo_bin_catbrotli", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc-stdlib", - "default", - "ffi-api", - "std", - ], - crate_root = "src/bin/catbrotli.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=catbrotli", - "manual", - ], - version = "3.3.3", - # buildifier: leave-alone - deps = [ - ":brotli", - "@raze__alloc_no_stdlib__2_0_3//:alloc_no_stdlib", - "@raze__alloc_stdlib__0_2_1//:alloc_stdlib", - "@raze__brotli_decompressor__2_3_2//:brotli_decompressor", - ], -) - -# Unsupported target "compress" with type "example" omitted - -# Unsupported target "decompress" with type "example" omitted - -rust_library( - name = "brotli", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc-stdlib", - "default", - "ffi-api", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=brotli", - "manual", - ], - version = "3.3.3", - # buildifier: leave-alone - deps = [ - "@raze__alloc_no_stdlib__2_0_3//:alloc_no_stdlib", - "@raze__alloc_stdlib__0_2_1//:alloc_stdlib", - "@raze__brotli_decompressor__2_3_2//:brotli_decompressor", - ], -) diff --git a/rules/rust/remote/BUILD.brotli-decompressor-2.3.2.bazel b/rules/rust/remote/BUILD.brotli-decompressor-2.3.2.bazel deleted file mode 100644 index 96636ba..0000000 --- a/rules/rust/remote/BUILD.brotli-decompressor-2.3.2.bazel +++ /dev/null @@ -1,89 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # BSD-3-Clause from expression "BSD-3-Clause OR MIT" -]) - -# Generated Targets - -rust_binary( - # Prefix bin name to disambiguate from (probable) collision with lib name - # N.B.: The exact form of this is subject to change. - name = "cargo_bin_brotli_decompressor", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc-stdlib", - "std", - ], - crate_root = "src/bin/brotli-decompressor.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=brotli-decompressor", - "manual", - ], - version = "2.3.2", - # buildifier: leave-alone - deps = [ - ":brotli_decompressor", - "@raze__alloc_no_stdlib__2_0_3//:alloc_no_stdlib", - "@raze__alloc_stdlib__0_2_1//:alloc_stdlib", - ], -) - -# Unsupported target "decompress" with type "example" omitted - -rust_library( - name = "brotli_decompressor", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc-stdlib", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=brotli-decompressor", - "manual", - ], - version = "2.3.2", - # buildifier: leave-alone - deps = [ - "@raze__alloc_no_stdlib__2_0_3//:alloc_no_stdlib", - "@raze__alloc_stdlib__0_2_1//:alloc_stdlib", - ], -) diff --git a/rules/rust/remote/BUILD.bumpalo-3.9.1.bazel b/rules/rust/remote/BUILD.bumpalo-3.9.1.bazel deleted file mode 100644 index 4ddccc5..0000000 --- a/rules/rust/remote/BUILD.bumpalo-3.9.1.bazel +++ /dev/null @@ -1,59 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "benches" with type "bench" omitted - -rust_library( - name = "bumpalo", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=bumpalo", - "manual", - ], - version = "3.9.1", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "try_alloc" with type "test" omitted diff --git a/rules/rust/remote/BUILD.byte-tools-0.3.1.bazel b/rules/rust/remote/BUILD.byte-tools-0.3.1.bazel deleted file mode 100644 index f07e046..0000000 --- a/rules/rust/remote/BUILD.byte-tools-0.3.1.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "byte_tools", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=byte-tools", - "manual", - ], - version = "0.3.1", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.byteorder-1.4.3.bazel b/rules/rust/remote/BUILD.byteorder-1.4.3.bazel deleted file mode 100644 index 560fca6..0000000 --- a/rules/rust/remote/BUILD.byteorder-1.4.3.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "unencumbered", # Unlicense from expression "Unlicense OR MIT" -]) - -# Generated Targets - -# Unsupported target "bench" with type "bench" omitted - -rust_library( - name = "byteorder", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=byteorder", - "manual", - ], - version = "1.4.3", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.bytes-1.1.0.bazel b/rules/rust/remote/BUILD.bytes-1.1.0.bazel deleted file mode 100644 index 093327e..0000000 --- a/rules/rust/remote/BUILD.bytes-1.1.0.bazel +++ /dev/null @@ -1,84 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "buf" with type "bench" omitted - -# Unsupported target "bytes" with type "bench" omitted - -# Unsupported target "bytes_mut" with type "bench" omitted - -rust_library( - name = "bytes", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=bytes", - "manual", - ], - version = "1.1.0", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "test_buf" with type "test" omitted - -# Unsupported target "test_buf_mut" with type "test" omitted - -# Unsupported target "test_bytes" with type "test" omitted - -# Unsupported target "test_bytes_odd_alloc" with type "test" omitted - -# Unsupported target "test_bytes_vec_alloc" with type "test" omitted - -# Unsupported target "test_chain" with type "test" omitted - -# Unsupported target "test_debug" with type "test" omitted - -# Unsupported target "test_iter" with type "test" omitted - -# Unsupported target "test_reader" with type "test" omitted - -# Unsupported target "test_serde" with type "test" omitted - -# Unsupported target "test_take" with type "test" omitted diff --git a/rules/rust/remote/BUILD.cc-1.0.73.bazel b/rules/rust/remote/BUILD.cc-1.0.73.bazel deleted file mode 100644 index 14fd75b..0000000 --- a/rules/rust/remote/BUILD.cc-1.0.73.bazel +++ /dev/null @@ -1,87 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_binary( - # Prefix bin name to disambiguate from (probable) collision with lib name - # N.B.: The exact form of this is subject to change. - name = "cargo_bin_gcc_shim", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/bin/gcc-shim.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=gcc-shim", - "manual", - ], - version = "1.0.73", - # buildifier: leave-alone - deps = [ - ":cc", - ], -) - -rust_library( - name = "cc", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=cc", - "manual", - ], - version = "1.0.73", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "cc_env" with type "test" omitted - -# Unsupported target "cflags" with type "test" omitted - -# Unsupported target "cxxflags" with type "test" omitted - -# Unsupported target "test" with type "test" omitted diff --git a/rules/rust/remote/BUILD.census-0.4.0.bazel b/rules/rust/remote/BUILD.census-0.4.0.bazel deleted file mode 100644 index c335d5e..0000000 --- a/rules/rust/remote/BUILD.census-0.4.0.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "census", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=census", - "manual", - ], - version = "0.4.0", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.cfg-if-1.0.0.bazel b/rules/rust/remote/BUILD.cfg-if-1.0.0.bazel deleted file mode 100644 index 2e4ca44..0000000 --- a/rules/rust/remote/BUILD.cfg-if-1.0.0.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "cfg_if", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=cfg-if", - "manual", - ], - version = "1.0.0", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "xcrate" with type "test" omitted diff --git a/rules/rust/remote/BUILD.chrono-0.4.19.bazel b/rules/rust/remote/BUILD.chrono-0.4.19.bazel deleted file mode 100644 index bc73a2e..0000000 --- a/rules/rust/remote/BUILD.chrono-0.4.19.bazel +++ /dev/null @@ -1,71 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "chrono" with type "bench" omitted - -# Unsupported target "serde" with type "bench" omitted - -rust_library( - name = "chrono", - srcs = glob(["**/*.rs"]), - crate_features = [ - "clock", - "default", - "libc", - "oldtime", - "std", - "time", - "winapi", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=chrono", - "manual", - ], - version = "0.4.19", - # buildifier: leave-alone - deps = [ - "@raze__libc__0_2_121//:libc", - "@raze__num_integer__0_1_44//:num_integer", - "@raze__num_traits__0_2_14//:num_traits", - "@raze__time__0_1_44//:time", - ], -) - -# Unsupported target "wasm" with type "test" omitted diff --git a/rules/rust/remote/BUILD.clap-3.1.6.bazel b/rules/rust/remote/BUILD.clap-3.1.6.bazel deleted file mode 100644 index dcf2014..0000000 --- a/rules/rust/remote/BUILD.clap-3.1.6.bazel +++ /dev/null @@ -1,175 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "01_default" with type "bench" omitted - -# Unsupported target "02_simple" with type "bench" omitted - -# Unsupported target "03_complex" with type "bench" omitted - -# Unsupported target "04_new_help" with type "bench" omitted - -# Unsupported target "05_ripgrep" with type "bench" omitted - -# Unsupported target "06_rustup" with type "bench" omitted - -# Unsupported target "01_quick" with type "example" omitted - -# Unsupported target "01_quick_derive" with type "example" omitted - -# Unsupported target "02_app_settings" with type "example" omitted - -# Unsupported target "02_app_settings_derive" with type "example" omitted - -# Unsupported target "02_apps" with type "example" omitted - -# Unsupported target "02_apps_derive" with type "example" omitted - -# Unsupported target "02_crate" with type "example" omitted - -# Unsupported target "02_crate_derive" with type "example" omitted - -# Unsupported target "03_01_flag_bool" with type "example" omitted - -# Unsupported target "03_01_flag_bool_derive" with type "example" omitted - -# Unsupported target "03_01_flag_count" with type "example" omitted - -# Unsupported target "03_01_flag_count_derive" with type "example" omitted - -# Unsupported target "03_02_option" with type "example" omitted - -# Unsupported target "03_02_option_derive" with type "example" omitted - -# Unsupported target "03_03_positional" with type "example" omitted - -# Unsupported target "03_03_positional_derive" with type "example" omitted - -# Unsupported target "03_04_subcommands" with type "example" omitted - -# Unsupported target "03_04_subcommands_alt_derive" with type "example" omitted - -# Unsupported target "03_04_subcommands_derive" with type "example" omitted - -# Unsupported target "03_05_default_values" with type "example" omitted - -# Unsupported target "03_05_default_values_derive" with type "example" omitted - -# Unsupported target "04_01_enum" with type "example" omitted - -# Unsupported target "04_01_enum_derive" with type "example" omitted - -# Unsupported target "04_01_possible" with type "example" omitted - -# Unsupported target "04_02_parse" with type "example" omitted - -# Unsupported target "04_02_parse_derive" with type "example" omitted - -# Unsupported target "04_02_validate" with type "example" omitted - -# Unsupported target "04_02_validate_derive" with type "example" omitted - -# Unsupported target "04_03_relations" with type "example" omitted - -# Unsupported target "04_03_relations_derive" with type "example" omitted - -# Unsupported target "04_04_custom" with type "example" omitted - -# Unsupported target "04_04_custom_derive" with type "example" omitted - -# Unsupported target "05_01_assert" with type "example" omitted - -# Unsupported target "05_01_assert_derive" with type "example" omitted - -# Unsupported target "busybox" with type "example" omitted - -# Unsupported target "cargo-example" with type "example" omitted - -# Unsupported target "cargo-example-derive" with type "example" omitted - -# Unsupported target "custom-bool" with type "example" omitted - -# Unsupported target "demo" with type "example" omitted - -# Unsupported target "escaped-positional" with type "example" omitted - -# Unsupported target "escaped-positional-derive" with type "example" omitted - -# Unsupported target "git" with type "example" omitted - -# Unsupported target "git-derive" with type "example" omitted - -# Unsupported target "hostname" with type "example" omitted - -# Unsupported target "keyvalue-derive" with type "example" omitted - -# Unsupported target "pacman" with type "example" omitted - -rust_library( - name = "clap", - srcs = glob(["**/*.rs"]), - crate_features = [ - "atty", - "cargo", - "color", - "default", - "lazy_static", - "std", - "strsim", - "suggestions", - "termcolor", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=clap", - "manual", - ], - version = "3.1.6", - # buildifier: leave-alone - deps = [ - "@raze__atty__0_2_14//:atty", - "@raze__bitflags__1_3_2//:bitflags", - "@raze__indexmap__1_8_0//:indexmap", - "@raze__lazy_static__1_4_0//:lazy_static", - "@raze__os_str_bytes__6_0_0//:os_str_bytes", - "@raze__strsim__0_10_0//:strsim", - "@raze__termcolor__1_1_3//:termcolor", - "@raze__textwrap__0_15_0//:textwrap", - ], -) diff --git a/rules/rust/remote/BUILD.colored-2.0.0.bazel b/rules/rust/remote/BUILD.colored-2.0.0.bazel deleted file mode 100644 index 724d34b..0000000 --- a/rules/rust/remote/BUILD.colored-2.0.0.bazel +++ /dev/null @@ -1,66 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "reciprocal", # MPL-2.0 from expression "MPL-2.0" -]) - -# Generated Targets - -# Unsupported target "control" with type "example" omitted - -# Unsupported target "dynamic_colors" with type "example" omitted - -# Unsupported target "most_simple" with type "example" omitted - -# Unsupported target "nested_colors" with type "example" omitted - -rust_library( - name = "colored", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=colored", - "manual", - ], - version = "2.0.0", - # buildifier: leave-alone - deps = [ - "@raze__atty__0_2_14//:atty", - "@raze__lazy_static__1_4_0//:lazy_static", - ], -) - -# Unsupported target "ansi_term_compat" with type "test" omitted diff --git a/rules/rust/remote/BUILD.combine-4.6.3.bazel b/rules/rust/remote/BUILD.combine-4.6.3.bazel deleted file mode 100644 index 9a9261a..0000000 --- a/rules/rust/remote/BUILD.combine-4.6.3.bazel +++ /dev/null @@ -1,79 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "http" with type "bench" omitted - -# Unsupported target "json" with type "bench" omitted - -# Unsupported target "mp4" with type "bench" omitted - -# Unsupported target "async" with type "example" omitted - -# Unsupported target "date" with type "example" omitted - -# Unsupported target "ini" with type "example" omitted - -# Unsupported target "number" with type "example" omitted - -# Unsupported target "readme" with type "example" omitted - -rust_library( - name = "combine", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=combine", - "manual", - ], - version = "4.6.3", - # buildifier: leave-alone - deps = [ - "@raze__memchr__2_4_1//:memchr", - ], -) - -# Unsupported target "async" with type "test" omitted - -# Unsupported target "buffered_stream" with type "test" omitted - -# Unsupported target "parser" with type "test" omitted - -# Unsupported target "parser_macro" with type "test" omitted diff --git a/rules/rust/remote/BUILD.config-0.12.0.bazel b/rules/rust/remote/BUILD.config-0.12.0.bazel deleted file mode 100644 index 6765dac..0000000 --- a/rules/rust/remote/BUILD.config-0.12.0.bazel +++ /dev/null @@ -1,133 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "async_source" with type "example" omitted - -# Unsupported target "custom_format" with type "example" omitted - -# Unsupported target "glob" with type "example" omitted - -# Unsupported target "global" with type "example" omitted - -# Unsupported target "hierarchical-env" with type "example" omitted - -# Unsupported target "simple" with type "example" omitted - -# Unsupported target "watch" with type "example" omitted - -rust_library( - name = "config", - srcs = glob(["**/*.rs"]), - aliases = { - "@raze__json5__0_4_1//:json5": "json5_rs", - }, - crate_features = [ - "default", - "ini", - "json", - "json5", - "json5_rs", - "ron", - "rust-ini", - "serde_json", - "toml", - "yaml", - "yaml-rust", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - proc_macro_deps = [ - "@raze__async_trait__0_1_52//:async_trait", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=config", - "manual", - ], - version = "0.12.0", - # buildifier: leave-alone - deps = [ - "@raze__json5__0_4_1//:json5", - "@raze__lazy_static__1_4_0//:lazy_static", - "@raze__nom__7_1_1//:nom", - "@raze__pathdiff__0_2_1//:pathdiff", - "@raze__ron__0_7_0//:ron", - "@raze__rust_ini__0_17_0//:rust_ini", - "@raze__serde__1_0_136//:serde", - "@raze__serde_json__1_0_79//:serde_json", - "@raze__toml__0_5_8//:toml", - "@raze__yaml_rust__0_4_5//:yaml_rust", - ], -) - -# Unsupported target "async_builder" with type "test" omitted - -# Unsupported target "datetime" with type "test" omitted - -# Unsupported target "defaults" with type "test" omitted - -# Unsupported target "empty" with type "test" omitted - -# Unsupported target "env" with type "test" omitted - -# Unsupported target "errors" with type "test" omitted - -# Unsupported target "file" with type "test" omitted - -# Unsupported target "file_ini" with type "test" omitted - -# Unsupported target "file_json" with type "test" omitted - -# Unsupported target "file_json5" with type "test" omitted - -# Unsupported target "file_ron" with type "test" omitted - -# Unsupported target "file_toml" with type "test" omitted - -# Unsupported target "file_yaml" with type "test" omitted - -# Unsupported target "get" with type "test" omitted - -# Unsupported target "integer_range" with type "test" omitted - -# Unsupported target "legacy_tests" with type "test" omitted - -# Unsupported target "merge" with type "test" omitted - -# Unsupported target "set" with type "test" omitted - -# Unsupported target "weird_keys" with type "test" omitted diff --git a/rules/rust/remote/BUILD.crc32fast-1.3.2.bazel b/rules/rust/remote/BUILD.crc32fast-1.3.2.bazel deleted file mode 100644 index e7838c8..0000000 --- a/rules/rust/remote/BUILD.crc32fast-1.3.2.bazel +++ /dev/null @@ -1,91 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "crc32fast_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "1.3.2", - visibility = ["//visibility:private"], - deps = [ - ], -) - -# Unsupported target "bench" with type "bench" omitted - -rust_library( - name = "crc32fast", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=crc32fast", - "manual", - ], - version = "1.3.2", - # buildifier: leave-alone - deps = [ - ":crc32fast_build_script", - "@raze__cfg_if__1_0_0//:cfg_if", - ], -) diff --git a/rules/rust/remote/BUILD.crossbeam-0.8.1.bazel b/rules/rust/remote/BUILD.crossbeam-0.8.1.bazel deleted file mode 100644 index f37193e..0000000 --- a/rules/rust/remote/BUILD.crossbeam-0.8.1.bazel +++ /dev/null @@ -1,69 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "crossbeam", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc", - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-epoch", - "crossbeam-queue", - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=crossbeam", - "manual", - ], - version = "0.8.1", - # buildifier: leave-alone - deps = [ - "@raze__cfg_if__1_0_0//:cfg_if", - "@raze__crossbeam_channel__0_5_4//:crossbeam_channel", - "@raze__crossbeam_deque__0_8_1//:crossbeam_deque", - "@raze__crossbeam_epoch__0_9_8//:crossbeam_epoch", - "@raze__crossbeam_queue__0_3_5//:crossbeam_queue", - "@raze__crossbeam_utils__0_8_8//:crossbeam_utils", - ], -) - -# Unsupported target "subcrates" with type "test" omitted diff --git a/rules/rust/remote/BUILD.crossbeam-channel-0.5.4.bazel b/rules/rust/remote/BUILD.crossbeam-channel-0.5.4.bazel deleted file mode 100644 index cb9d207..0000000 --- a/rules/rust/remote/BUILD.crossbeam-channel-0.5.4.bazel +++ /dev/null @@ -1,95 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "crossbeam" with type "bench" omitted - -# Unsupported target "fibonacci" with type "example" omitted - -# Unsupported target "matching" with type "example" omitted - -# Unsupported target "stopwatch" with type "example" omitted - -rust_library( - name = "crossbeam_channel", - srcs = glob(["**/*.rs"]), - crate_features = [ - "crossbeam-utils", - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=crossbeam-channel", - "manual", - ], - version = "0.5.4", - # buildifier: leave-alone - deps = [ - "@raze__cfg_if__1_0_0//:cfg_if", - "@raze__crossbeam_utils__0_8_8//:crossbeam_utils", - ], -) - -# Unsupported target "after" with type "test" omitted - -# Unsupported target "array" with type "test" omitted - -# Unsupported target "golang" with type "test" omitted - -# Unsupported target "iter" with type "test" omitted - -# Unsupported target "list" with type "test" omitted - -# Unsupported target "mpsc" with type "test" omitted - -# Unsupported target "never" with type "test" omitted - -# Unsupported target "ready" with type "test" omitted - -# Unsupported target "same_channel" with type "test" omitted - -# Unsupported target "select" with type "test" omitted - -# Unsupported target "select_macro" with type "test" omitted - -# Unsupported target "thread_locals" with type "test" omitted - -# Unsupported target "tick" with type "test" omitted - -# Unsupported target "zero" with type "test" omitted diff --git a/rules/rust/remote/BUILD.crossbeam-deque-0.8.1.bazel b/rules/rust/remote/BUILD.crossbeam-deque-0.8.1.bazel deleted file mode 100644 index bec86d3..0000000 --- a/rules/rust/remote/BUILD.crossbeam-deque-0.8.1.bazel +++ /dev/null @@ -1,69 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "crossbeam_deque", - srcs = glob(["**/*.rs"]), - crate_features = [ - "crossbeam-epoch", - "crossbeam-utils", - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=crossbeam-deque", - "manual", - ], - version = "0.8.1", - # buildifier: leave-alone - deps = [ - "@raze__cfg_if__1_0_0//:cfg_if", - "@raze__crossbeam_epoch__0_9_8//:crossbeam_epoch", - "@raze__crossbeam_utils__0_8_8//:crossbeam_utils", - ], -) - -# Unsupported target "fifo" with type "test" omitted - -# Unsupported target "injector" with type "test" omitted - -# Unsupported target "lifo" with type "test" omitted - -# Unsupported target "steal" with type "test" omitted diff --git a/rules/rust/remote/BUILD.crossbeam-epoch-0.9.8.bazel b/rules/rust/remote/BUILD.crossbeam-epoch-0.9.8.bazel deleted file mode 100644 index 895d459..0000000 --- a/rules/rust/remote/BUILD.crossbeam-epoch-0.9.8.bazel +++ /dev/null @@ -1,106 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "crossbeam_epoch_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "alloc", - "lazy_static", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.9.8", - visibility = ["//visibility:private"], - deps = [ - "@raze__autocfg__1_1_0//:autocfg", - ], -) - -# Unsupported target "defer" with type "bench" omitted - -# Unsupported target "flush" with type "bench" omitted - -# Unsupported target "pin" with type "bench" omitted - -# Unsupported target "sanitize" with type "example" omitted - -rust_library( - name = "crossbeam_epoch", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc", - "lazy_static", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=crossbeam-epoch", - "manual", - ], - version = "0.9.8", - # buildifier: leave-alone - deps = [ - ":crossbeam_epoch_build_script", - "@raze__cfg_if__1_0_0//:cfg_if", - "@raze__crossbeam_utils__0_8_8//:crossbeam_utils", - "@raze__lazy_static__1_4_0//:lazy_static", - "@raze__memoffset__0_6_5//:memoffset", - "@raze__scopeguard__1_1_0//:scopeguard", - ], -) - -# Unsupported target "loom" with type "test" omitted diff --git a/rules/rust/remote/BUILD.crossbeam-queue-0.3.5.bazel b/rules/rust/remote/BUILD.crossbeam-queue-0.3.5.bazel deleted file mode 100644 index 8c979af..0000000 --- a/rules/rust/remote/BUILD.crossbeam-queue-0.3.5.bazel +++ /dev/null @@ -1,94 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "crossbeam_queue_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "alloc", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.3.5", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "crossbeam_queue", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=crossbeam-queue", - "manual", - ], - version = "0.3.5", - # buildifier: leave-alone - deps = [ - ":crossbeam_queue_build_script", - "@raze__cfg_if__1_0_0//:cfg_if", - "@raze__crossbeam_utils__0_8_8//:crossbeam_utils", - ], -) - -# Unsupported target "array_queue" with type "test" omitted - -# Unsupported target "seg_queue" with type "test" omitted diff --git a/rules/rust/remote/BUILD.crossbeam-utils-0.8.8.bazel b/rules/rust/remote/BUILD.crossbeam-utils-0.8.8.bazel deleted file mode 100644 index 6e63e94..0000000 --- a/rules/rust/remote/BUILD.crossbeam-utils-0.8.8.bazel +++ /dev/null @@ -1,106 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "crossbeam_utils_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - "lazy_static", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.8.8", - visibility = ["//visibility:private"], - deps = [ - ], -) - -# Unsupported target "atomic_cell" with type "bench" omitted - -rust_library( - name = "crossbeam_utils", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "lazy_static", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=crossbeam-utils", - "manual", - ], - version = "0.8.8", - # buildifier: leave-alone - deps = [ - ":crossbeam_utils_build_script", - "@raze__cfg_if__1_0_0//:cfg_if", - "@raze__lazy_static__1_4_0//:lazy_static", - ], -) - -# Unsupported target "atomic_cell" with type "test" omitted - -# Unsupported target "cache_padded" with type "test" omitted - -# Unsupported target "parker" with type "test" omitted - -# Unsupported target "sharded_lock" with type "test" omitted - -# Unsupported target "thread" with type "test" omitted - -# Unsupported target "wait_group" with type "test" omitted diff --git a/rules/rust/remote/BUILD.crunchy-0.2.2.bazel b/rules/rust/remote/BUILD.crunchy-0.2.2.bazel deleted file mode 100644 index 6fe907b..0000000 --- a/rules/rust/remote/BUILD.crunchy-0.2.2.bazel +++ /dev/null @@ -1,88 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "crunchy_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - "limit_128", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.2.2", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "crunchy", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "limit_128", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=crunchy", - "manual", - ], - version = "0.2.2", - # buildifier: leave-alone - deps = [ - ":crunchy_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.ctor-0.1.22.bazel b/rules/rust/remote/BUILD.ctor-0.1.22.bazel deleted file mode 100644 index e6d6824..0000000 --- a/rules/rust/remote/BUILD.ctor-0.1.22.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -# Unsupported target "example" with type "example" omitted - -rust_proc_macro( - name = "ctor", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=ctor", - "manual", - ], - version = "0.1.22", - # buildifier: leave-alone - deps = [ - "@raze__quote__1_0_16//:quote", - "@raze__syn__1_0_89//:syn", - ], -) diff --git a/rules/rust/remote/BUILD.dashmap-4.0.2.bazel b/rules/rust/remote/BUILD.dashmap-4.0.2.bazel deleted file mode 100644 index 72ad1b2..0000000 --- a/rules/rust/remote/BUILD.dashmap-4.0.2.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "dashmap", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=dashmap", - "manual", - ], - version = "4.0.2", - # buildifier: leave-alone - deps = [ - "@raze__cfg_if__1_0_0//:cfg_if", - "@raze__num_cpus__1_13_1//:num_cpus", - ], -) diff --git a/rules/rust/remote/BUILD.diff-0.1.12.bazel b/rules/rust/remote/BUILD.diff-0.1.12.bazel deleted file mode 100644 index 2a6f634..0000000 --- a/rules/rust/remote/BUILD.diff-0.1.12.bazel +++ /dev/null @@ -1,60 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "benches" with type "bench" omitted - -# Unsupported target "simple" with type "example" omitted - -rust_library( - name = "diff", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=diff", - "manual", - ], - version = "0.1.12", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "tests" with type "test" omitted diff --git a/rules/rust/remote/BUILD.digest-0.8.1.bazel b/rules/rust/remote/BUILD.digest-0.8.1.bazel deleted file mode 100644 index 9c3d2d0..0000000 --- a/rules/rust/remote/BUILD.digest-0.8.1.bazel +++ /dev/null @@ -1,55 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "digest", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=digest", - "manual", - ], - version = "0.8.1", - # buildifier: leave-alone - deps = [ - "@raze__generic_array__0_12_4//:generic_array", - ], -) diff --git a/rules/rust/remote/BUILD.dlv-list-0.2.3.bazel b/rules/rust/remote/BUILD.dlv-list-0.2.3.bazel deleted file mode 100644 index 51ce2c4..0000000 --- a/rules/rust/remote/BUILD.dlv-list-0.2.3.bazel +++ /dev/null @@ -1,55 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "dlv_list", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=dlv-list", - "manual", - ], - version = "0.2.3", - # buildifier: leave-alone - deps = [ - "@raze__rand__0_8_5//:rand", - ], -) diff --git a/rules/rust/remote/BUILD.downcast-rs-1.2.0.bazel b/rules/rust/remote/BUILD.downcast-rs-1.2.0.bazel deleted file mode 100644 index e8d289e..0000000 --- a/rules/rust/remote/BUILD.downcast-rs-1.2.0.bazel +++ /dev/null @@ -1,60 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "downcast_rs", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=downcast-rs", - "manual", - ], - version = "1.2.0", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "import_via_macro_use" with type "test" omitted - -# Unsupported target "use_via_namespace" with type "test" omitted diff --git a/rules/rust/remote/BUILD.either-1.6.1.bazel b/rules/rust/remote/BUILD.either-1.6.1.bazel deleted file mode 100644 index 069fd09..0000000 --- a/rules/rust/remote/BUILD.either-1.6.1.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "either", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "use_std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=either", - "manual", - ], - version = "1.6.1", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.fail-0.5.0.bazel b/rules/rust/remote/BUILD.fail-0.5.0.bazel deleted file mode 100644 index e7e8c84..0000000 --- a/rules/rust/remote/BUILD.fail-0.5.0.bazel +++ /dev/null @@ -1,59 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "fail", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=fail", - "manual", - ], - version = "0.5.0", - # buildifier: leave-alone - deps = [ - "@raze__lazy_static__1_4_0//:lazy_static", - "@raze__log__0_4_14//:log", - "@raze__rand__0_8_5//:rand", - ], -) - -# Unsupported target "tests" with type "test" omitted diff --git a/rules/rust/remote/BUILD.fake-simd-0.1.2.bazel b/rules/rust/remote/BUILD.fake-simd-0.1.2.bazel deleted file mode 100644 index 438101c..0000000 --- a/rules/rust/remote/BUILD.fake-simd-0.1.2.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "fake_simd", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=fake-simd", - "manual", - ], - version = "0.1.2", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.fastdivide-0.4.0.bazel b/rules/rust/remote/BUILD.fastdivide-0.4.0.bazel deleted file mode 100644 index 8bd3a61..0000000 --- a/rules/rust/remote/BUILD.fastdivide-0.4.0.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "restricted", # zlib-acknowledgement from expression "zlib-acknowledgement" -]) - -# Generated Targets - -# Unsupported target "bench-divide" with type "bench" omitted - -rust_library( - name = "fastdivide", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=fastdivide", - "manual", - ], - version = "0.4.0", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.fastfield_codecs-0.1.0.bazel b/rules/rust/remote/BUILD.fastfield_codecs-0.1.0.bazel deleted file mode 100644 index daf6273..0000000 --- a/rules/rust/remote/BUILD.fastfield_codecs-0.1.0.bazel +++ /dev/null @@ -1,91 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "bench" with type "bench" omitted - -rust_binary( - # Prefix bin name to disambiguate from (probable) collision with lib name - # N.B.: The exact form of this is subject to change. - name = "cargo_bin_fastfield_codecs", - srcs = glob(["**/*.rs"]), - aliases = { - "@raze__tantivy_common__0_1_0//:tantivy_common": "common", - }, - crate_features = [ - ], - crate_root = "src/main.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=fastfield_codecs", - "manual", - ], - version = "0.1.0", - # buildifier: leave-alone - deps = [ - ":fastfield_codecs", - "@raze__tantivy_bitpacker__0_1_1//:tantivy_bitpacker", - "@raze__tantivy_common__0_1_0//:tantivy_common", - ], -) - -rust_library( - name = "fastfield_codecs", - srcs = glob(["**/*.rs"]), - aliases = { - "@raze__tantivy_common__0_1_0//:tantivy_common": "common", - }, - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=fastfield_codecs", - "manual", - ], - version = "0.1.0", - # buildifier: leave-alone - deps = [ - "@raze__tantivy_bitpacker__0_1_1//:tantivy_bitpacker", - "@raze__tantivy_common__0_1_0//:tantivy_common", - ], -) diff --git a/rules/rust/remote/BUILD.fastrand-1.7.0.bazel b/rules/rust/remote/BUILD.fastrand-1.7.0.bazel deleted file mode 100644 index 22d3826..0000000 --- a/rules/rust/remote/BUILD.fastrand-1.7.0.bazel +++ /dev/null @@ -1,60 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -# Unsupported target "bench" with type "bench" omitted - -rust_library( - name = "fastrand", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=fastrand", - "manual", - ], - version = "1.7.0", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "char" with type "test" omitted - -# Unsupported target "smoke" with type "test" omitted diff --git a/rules/rust/remote/BUILD.fixedbitset-0.4.1.bazel b/rules/rust/remote/BUILD.fixedbitset-0.4.1.bazel deleted file mode 100644 index 69d426c..0000000 --- a/rules/rust/remote/BUILD.fixedbitset-0.4.1.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "benches" with type "bench" omitted - -rust_library( - name = "fixedbitset", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=fixedbitset", - "manual", - ], - version = "0.4.1", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.fnv-1.0.7.bazel b/rules/rust/remote/BUILD.fnv-1.0.7.bazel deleted file mode 100644 index bf50f44..0000000 --- a/rules/rust/remote/BUILD.fnv-1.0.7.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -rust_library( - name = "fnv", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=fnv", - "manual", - ], - version = "1.0.7", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.fs2-0.4.3.bazel b/rules/rust/remote/BUILD.fs2-0.4.3.bazel deleted file mode 100644 index 1d1bffa..0000000 --- a/rules/rust/remote/BUILD.fs2-0.4.3.bazel +++ /dev/null @@ -1,65 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "fs2", - srcs = glob(["**/*.rs"]), - aliases = { - }, - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=fs2", - "manual", - ], - version = "0.4.3", - # buildifier: leave-alone - deps = [ - ] + selects.with_or({ - # cfg(unix) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__libc__0_2_121//:libc", - ], - "//conditions:default": [], - }), -) diff --git a/rules/rust/remote/BUILD.futures-0.3.21.bazel b/rules/rust/remote/BUILD.futures-0.3.21.bazel deleted file mode 100644 index 6b0a670..0000000 --- a/rules/rust/remote/BUILD.futures-0.3.21.bazel +++ /dev/null @@ -1,178 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "futures", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc", - "async-await", - "default", - "executor", - "futures-executor", - "std", - "thread-pool", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=futures", - "manual", - ], - version = "0.3.21", - # buildifier: leave-alone - deps = [ - "@raze__futures_channel__0_3_21//:futures_channel", - "@raze__futures_core__0_3_21//:futures_core", - "@raze__futures_executor__0_3_21//:futures_executor", - "@raze__futures_io__0_3_21//:futures_io", - "@raze__futures_sink__0_3_21//:futures_sink", - "@raze__futures_task__0_3_21//:futures_task", - "@raze__futures_util__0_3_21//:futures_util", - ], -) - -# Unsupported target "_require_features" with type "test" omitted - -# Unsupported target "async_await_macros" with type "test" omitted - -# Unsupported target "auto_traits" with type "test" omitted - -# Unsupported target "compat" with type "test" omitted - -# Unsupported target "eager_drop" with type "test" omitted - -# Unsupported target "eventual" with type "test" omitted - -# Unsupported target "future_abortable" with type "test" omitted - -# Unsupported target "future_basic_combinators" with type "test" omitted - -# Unsupported target "future_fuse" with type "test" omitted - -# Unsupported target "future_inspect" with type "test" omitted - -# Unsupported target "future_join_all" with type "test" omitted - -# Unsupported target "future_obj" with type "test" omitted - -# Unsupported target "future_select_all" with type "test" omitted - -# Unsupported target "future_select_ok" with type "test" omitted - -# Unsupported target "future_shared" with type "test" omitted - -# Unsupported target "future_try_flatten_stream" with type "test" omitted - -# Unsupported target "future_try_join_all" with type "test" omitted - -# Unsupported target "io_buf_reader" with type "test" omitted - -# Unsupported target "io_buf_writer" with type "test" omitted - -# Unsupported target "io_cursor" with type "test" omitted - -# Unsupported target "io_line_writer" with type "test" omitted - -# Unsupported target "io_lines" with type "test" omitted - -# Unsupported target "io_read" with type "test" omitted - -# Unsupported target "io_read_exact" with type "test" omitted - -# Unsupported target "io_read_line" with type "test" omitted - -# Unsupported target "io_read_to_end" with type "test" omitted - -# Unsupported target "io_read_to_string" with type "test" omitted - -# Unsupported target "io_read_until" with type "test" omitted - -# Unsupported target "io_window" with type "test" omitted - -# Unsupported target "io_write" with type "test" omitted - -# Unsupported target "lock_mutex" with type "test" omitted - -# Unsupported target "macro_comma_support" with type "test" omitted - -# Unsupported target "object_safety" with type "test" omitted - -# Unsupported target "oneshot" with type "test" omitted - -# Unsupported target "ready_queue" with type "test" omitted - -# Unsupported target "recurse" with type "test" omitted - -# Unsupported target "sink" with type "test" omitted - -# Unsupported target "sink_fanout" with type "test" omitted - -# Unsupported target "stream" with type "test" omitted - -# Unsupported target "stream_abortable" with type "test" omitted - -# Unsupported target "stream_buffer_unordered" with type "test" omitted - -# Unsupported target "stream_catch_unwind" with type "test" omitted - -# Unsupported target "stream_futures_ordered" with type "test" omitted - -# Unsupported target "stream_futures_unordered" with type "test" omitted - -# Unsupported target "stream_into_async_read" with type "test" omitted - -# Unsupported target "stream_peekable" with type "test" omitted - -# Unsupported target "stream_select_all" with type "test" omitted - -# Unsupported target "stream_select_next_some" with type "test" omitted - -# Unsupported target "stream_split" with type "test" omitted - -# Unsupported target "stream_try_stream" with type "test" omitted - -# Unsupported target "stream_unfold" with type "test" omitted - -# Unsupported target "task_arc_wake" with type "test" omitted - -# Unsupported target "task_atomic_waker" with type "test" omitted - -# Unsupported target "test_macro" with type "test" omitted - -# Unsupported target "try_join" with type "test" omitted diff --git a/rules/rust/remote/BUILD.futures-channel-0.3.21.bazel b/rules/rust/remote/BUILD.futures-channel-0.3.21.bazel deleted file mode 100644 index 0e99a03..0000000 --- a/rules/rust/remote/BUILD.futures-channel-0.3.21.bazel +++ /dev/null @@ -1,106 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "futures_channel_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "alloc", - "default", - "futures-sink", - "sink", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.3.21", - visibility = ["//visibility:private"], - deps = [ - ], -) - -# Unsupported target "sync_mpsc" with type "bench" omitted - -rust_library( - name = "futures_channel", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc", - "default", - "futures-sink", - "sink", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=futures-channel", - "manual", - ], - version = "0.3.21", - # buildifier: leave-alone - deps = [ - ":futures_channel_build_script", - "@raze__futures_core__0_3_21//:futures_core", - "@raze__futures_sink__0_3_21//:futures_sink", - ], -) - -# Unsupported target "channel" with type "test" omitted - -# Unsupported target "mpsc" with type "test" omitted - -# Unsupported target "mpsc-close" with type "test" omitted - -# Unsupported target "oneshot" with type "test" omitted diff --git a/rules/rust/remote/BUILD.futures-core-0.3.21.bazel b/rules/rust/remote/BUILD.futures-core-0.3.21.bazel deleted file mode 100644 index f466473..0000000 --- a/rules/rust/remote/BUILD.futures-core-0.3.21.bazel +++ /dev/null @@ -1,90 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "futures_core_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "alloc", - "default", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.3.21", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "futures_core", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc", - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=futures-core", - "manual", - ], - version = "0.3.21", - # buildifier: leave-alone - deps = [ - ":futures_core_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.futures-executor-0.3.21.bazel b/rules/rust/remote/BUILD.futures-executor-0.3.21.bazel deleted file mode 100644 index 659fd44..0000000 --- a/rules/rust/remote/BUILD.futures-executor-0.3.21.bazel +++ /dev/null @@ -1,66 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "thread_notify" with type "bench" omitted - -rust_library( - name = "futures_executor", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "num_cpus", - "std", - "thread-pool", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=futures-executor", - "manual", - ], - version = "0.3.21", - # buildifier: leave-alone - deps = [ - "@raze__futures_core__0_3_21//:futures_core", - "@raze__futures_task__0_3_21//:futures_task", - "@raze__futures_util__0_3_21//:futures_util", - "@raze__num_cpus__1_13_1//:num_cpus", - ], -) - -# Unsupported target "local_pool" with type "test" omitted diff --git a/rules/rust/remote/BUILD.futures-io-0.3.21.bazel b/rules/rust/remote/BUILD.futures-io-0.3.21.bazel deleted file mode 100644 index d6b9f9d..0000000 --- a/rules/rust/remote/BUILD.futures-io-0.3.21.bazel +++ /dev/null @@ -1,55 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "futures_io", - srcs = glob(["**/*.rs"]), - crate_features = [ - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=futures-io", - "manual", - ], - version = "0.3.21", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.futures-macro-0.3.21.bazel b/rules/rust/remote/BUILD.futures-macro-0.3.21.bazel deleted file mode 100644 index d505242..0000000 --- a/rules/rust/remote/BUILD.futures-macro-0.3.21.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_proc_macro( - name = "futures_macro", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=futures-macro", - "manual", - ], - version = "0.3.21", - # buildifier: leave-alone - deps = [ - "@raze__proc_macro2__1_0_36//:proc_macro2", - "@raze__quote__1_0_16//:quote", - "@raze__syn__1_0_89//:syn", - ], -) diff --git a/rules/rust/remote/BUILD.futures-sink-0.3.21.bazel b/rules/rust/remote/BUILD.futures-sink-0.3.21.bazel deleted file mode 100644 index 2633225..0000000 --- a/rules/rust/remote/BUILD.futures-sink-0.3.21.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "futures_sink", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc", - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=futures-sink", - "manual", - ], - version = "0.3.21", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.futures-task-0.3.21.bazel b/rules/rust/remote/BUILD.futures-task-0.3.21.bazel deleted file mode 100644 index bb1d1c0..0000000 --- a/rules/rust/remote/BUILD.futures-task-0.3.21.bazel +++ /dev/null @@ -1,88 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "futures_task_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "alloc", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.3.21", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "futures_task", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=futures-task", - "manual", - ], - version = "0.3.21", - # buildifier: leave-alone - deps = [ - ":futures_task_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.futures-util-0.3.21.bazel b/rules/rust/remote/BUILD.futures-util-0.3.21.bazel deleted file mode 100644 index cea43d7..0000000 --- a/rules/rust/remote/BUILD.futures-util-0.3.21.bazel +++ /dev/null @@ -1,128 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "futures_util_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "alloc", - "async-await", - "async-await-macro", - "channel", - "default", - "futures-channel", - "futures-io", - "futures-macro", - "futures-sink", - "io", - "memchr", - "sink", - "slab", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.3.21", - visibility = ["//visibility:private"], - deps = [ - ], -) - -# Unsupported target "flatten_unordered" with type "bench" omitted - -# Unsupported target "futures_unordered" with type "bench" omitted - -rust_library( - name = "futures_util", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc", - "async-await", - "async-await-macro", - "channel", - "default", - "futures-channel", - "futures-io", - "futures-macro", - "futures-sink", - "io", - "memchr", - "sink", - "slab", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - proc_macro_deps = [ - "@raze__futures_macro__0_3_21//:futures_macro", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=futures-util", - "manual", - ], - version = "0.3.21", - # buildifier: leave-alone - deps = [ - ":futures_util_build_script", - "@raze__futures_channel__0_3_21//:futures_channel", - "@raze__futures_core__0_3_21//:futures_core", - "@raze__futures_io__0_3_21//:futures_io", - "@raze__futures_sink__0_3_21//:futures_sink", - "@raze__futures_task__0_3_21//:futures_task", - "@raze__memchr__2_4_1//:memchr", - "@raze__pin_project_lite__0_2_8//:pin_project_lite", - "@raze__pin_utils__0_1_0//:pin_utils", - "@raze__slab__0_4_5//:slab", - ], -) diff --git a/rules/rust/remote/BUILD.generic-array-0.12.4.bazel b/rules/rust/remote/BUILD.generic-array-0.12.4.bazel deleted file mode 100644 index 68a2e6a..0000000 --- a/rules/rust/remote/BUILD.generic-array-0.12.4.bazel +++ /dev/null @@ -1,67 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "generic_array", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=generic_array", - "manual", - ], - version = "0.12.4", - # buildifier: leave-alone - deps = [ - "@raze__typenum__1_15_0//:typenum", - ], -) - -# Unsupported target "arr" with type "test" omitted - -# Unsupported target "generics" with type "test" omitted - -# Unsupported target "hex" with type "test" omitted - -# Unsupported target "import_name" with type "test" omitted - -# Unsupported target "iter" with type "test" omitted - -# Unsupported target "mod" with type "test" omitted diff --git a/rules/rust/remote/BUILD.getrandom-0.2.5.bazel b/rules/rust/remote/BUILD.getrandom-0.2.5.bazel deleted file mode 100644 index 7177e80..0000000 --- a/rules/rust/remote/BUILD.getrandom-0.2.5.bazel +++ /dev/null @@ -1,75 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "mod" with type "bench" omitted - -rust_library( - name = "getrandom", - srcs = glob(["**/*.rs"]), - aliases = { - }, - crate_features = [ - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=getrandom", - "manual", - ], - version = "0.2.5", - # buildifier: leave-alone - deps = [ - "@raze__cfg_if__1_0_0//:cfg_if", - ] + selects.with_or({ - # cfg(unix) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__libc__0_2_121//:libc", - ], - "//conditions:default": [], - }), -) - -# Unsupported target "custom" with type "test" omitted - -# Unsupported target "normal" with type "test" omitted - -# Unsupported target "rdrand" with type "test" omitted diff --git a/rules/rust/remote/BUILD.h2-0.3.12.bazel b/rules/rust/remote/BUILD.h2-0.3.12.bazel deleted file mode 100644 index 8cddc60..0000000 --- a/rules/rust/remote/BUILD.h2-0.3.12.bazel +++ /dev/null @@ -1,71 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "akamai" with type "example" omitted - -# Unsupported target "client" with type "example" omitted - -# Unsupported target "server" with type "example" omitted - -rust_library( - name = "h2", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=h2", - "manual", - ], - version = "0.3.12", - # buildifier: leave-alone - deps = [ - "@raze__bytes__1_1_0//:bytes", - "@raze__fnv__1_0_7//:fnv", - "@raze__futures_core__0_3_21//:futures_core", - "@raze__futures_sink__0_3_21//:futures_sink", - "@raze__futures_util__0_3_21//:futures_util", - "@raze__http__0_2_6//:http", - "@raze__indexmap__1_8_0//:indexmap", - "@raze__slab__0_4_5//:slab", - "@raze__tokio__1_17_0//:tokio", - "@raze__tokio_util__0_6_9//:tokio_util", - "@raze__tracing__0_1_32//:tracing", - ], -) diff --git a/rules/rust/remote/BUILD.hashbrown-0.11.2.bazel b/rules/rust/remote/BUILD.hashbrown-0.11.2.bazel deleted file mode 100644 index 65c5be1..0000000 --- a/rules/rust/remote/BUILD.hashbrown-0.11.2.bazel +++ /dev/null @@ -1,69 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -# Unsupported target "bench" with type "bench" omitted - -rust_library( - name = "hashbrown", - srcs = glob(["**/*.rs"]), - crate_features = [ - "ahash", - "default", - "inline-more", - "raw", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=hashbrown", - "manual", - ], - version = "0.11.2", - # buildifier: leave-alone - deps = [ - "@raze__ahash__0_7_6//:ahash", - ], -) - -# Unsupported target "hasher" with type "test" omitted - -# Unsupported target "rayon" with type "test" omitted - -# Unsupported target "serde" with type "test" omitted - -# Unsupported target "set" with type "test" omitted diff --git a/rules/rust/remote/BUILD.hashbrown-0.9.1.bazel b/rules/rust/remote/BUILD.hashbrown-0.9.1.bazel deleted file mode 100644 index 2f8c886..0000000 --- a/rules/rust/remote/BUILD.hashbrown-0.9.1.bazel +++ /dev/null @@ -1,68 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -# Unsupported target "bench" with type "bench" omitted - -rust_library( - name = "hashbrown", - srcs = glob(["**/*.rs"]), - crate_features = [ - "ahash", - "default", - "inline-more", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=hashbrown", - "manual", - ], - version = "0.9.1", - # buildifier: leave-alone - deps = [ - "@raze__ahash__0_4_7//:ahash", - ], -) - -# Unsupported target "hasher" with type "test" omitted - -# Unsupported target "rayon" with type "test" omitted - -# Unsupported target "serde" with type "test" omitted - -# Unsupported target "set" with type "test" omitted diff --git a/rules/rust/remote/BUILD.heck-0.3.3.bazel b/rules/rust/remote/BUILD.heck-0.3.3.bazel deleted file mode 100644 index 93d3151..0000000 --- a/rules/rust/remote/BUILD.heck-0.3.3.bazel +++ /dev/null @@ -1,55 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "heck", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=heck", - "manual", - ], - version = "0.3.3", - # buildifier: leave-alone - deps = [ - "@raze__unicode_segmentation__1_9_0//:unicode_segmentation", - ], -) diff --git a/rules/rust/remote/BUILD.hermit-abi-0.1.19.bazel b/rules/rust/remote/BUILD.hermit-abi-0.1.19.bazel deleted file mode 100644 index 53a9482..0000000 --- a/rules/rust/remote/BUILD.hermit-abi-0.1.19.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "hermit_abi", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=hermit-abi", - "manual", - ], - version = "0.1.19", - # buildifier: leave-alone - deps = [ - "@raze__libc__0_2_121//:libc", - ], -) diff --git a/rules/rust/remote/BUILD.htmlescape-0.3.1.bazel b/rules/rust/remote/BUILD.htmlescape-0.3.1.bazel deleted file mode 100644 index 28d2b15..0000000 --- a/rules/rust/remote/BUILD.htmlescape-0.3.1.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR (MIT OR MPL-2.0)" -]) - -# Generated Targets - -# Unsupported target "bench" with type "bench" omitted - -rust_library( - name = "htmlescape", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=htmlescape", - "manual", - ], - version = "0.3.1", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "test" with type "test" omitted diff --git a/rules/rust/remote/BUILD.http-0.2.6.bazel b/rules/rust/remote/BUILD.http-0.2.6.bazel deleted file mode 100644 index 4813086..0000000 --- a/rules/rust/remote/BUILD.http-0.2.6.bazel +++ /dev/null @@ -1,73 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "header_map" with type "bench" omitted - -# Unsupported target "header_name" with type "bench" omitted - -# Unsupported target "header_value" with type "bench" omitted - -# Unsupported target "method" with type "bench" omitted - -# Unsupported target "uri" with type "bench" omitted - -rust_library( - name = "http", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=http", - "manual", - ], - version = "0.2.6", - # buildifier: leave-alone - deps = [ - "@raze__bytes__1_1_0//:bytes", - "@raze__fnv__1_0_7//:fnv", - "@raze__itoa__1_0_1//:itoa", - ], -) - -# Unsupported target "header_map" with type "test" omitted - -# Unsupported target "header_map_fuzz" with type "test" omitted - -# Unsupported target "status_code" with type "test" omitted diff --git a/rules/rust/remote/BUILD.http-body-0.4.4.bazel b/rules/rust/remote/BUILD.http-body-0.4.4.bazel deleted file mode 100644 index 2096ab0..0000000 --- a/rules/rust/remote/BUILD.http-body-0.4.4.bazel +++ /dev/null @@ -1,59 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "http_body", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=http-body", - "manual", - ], - version = "0.4.4", - # buildifier: leave-alone - deps = [ - "@raze__bytes__1_1_0//:bytes", - "@raze__http__0_2_6//:http", - "@raze__pin_project_lite__0_2_8//:pin_project_lite", - ], -) - -# Unsupported target "is_end_stream" with type "test" omitted diff --git a/rules/rust/remote/BUILD.http-range-header-0.3.0.bazel b/rules/rust/remote/BUILD.http-range-header-0.3.0.bazel deleted file mode 100644 index 96758af..0000000 --- a/rules/rust/remote/BUILD.http-range-header-0.3.0.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "benchmark" with type "bench" omitted - -rust_library( - name = "http_range_header", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=http-range-header", - "manual", - ], - version = "0.3.0", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.httparse-1.6.0.bazel b/rules/rust/remote/BUILD.httparse-1.6.0.bazel deleted file mode 100644 index 81c1274..0000000 --- a/rules/rust/remote/BUILD.httparse-1.6.0.bazel +++ /dev/null @@ -1,92 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "httparse_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "1.6.0", - visibility = ["//visibility:private"], - deps = [ - ], -) - -# Unsupported target "parse" with type "bench" omitted - -rust_library( - name = "httparse", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=httparse", - "manual", - ], - version = "1.6.0", - # buildifier: leave-alone - deps = [ - ":httparse_build_script", - ], -) - -# Unsupported target "uri" with type "test" omitted diff --git a/rules/rust/remote/BUILD.httpdate-1.0.2.bazel b/rules/rust/remote/BUILD.httpdate-1.0.2.bazel deleted file mode 100644 index 1df72d9..0000000 --- a/rules/rust/remote/BUILD.httpdate-1.0.2.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "benchmarks" with type "bench" omitted - -rust_library( - name = "httpdate", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=httpdate", - "manual", - ], - version = "1.0.2", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.hyper-0.14.17.bazel b/rules/rust/remote/BUILD.hyper-0.14.17.bazel deleted file mode 100644 index 72e9906..0000000 --- a/rules/rust/remote/BUILD.hyper-0.14.17.bazel +++ /dev/null @@ -1,133 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "body" with type "bench" omitted - -# Unsupported target "connect" with type "bench" omitted - -# Unsupported target "end_to_end" with type "bench" omitted - -# Unsupported target "pipeline" with type "bench" omitted - -# Unsupported target "server" with type "bench" omitted - -# Unsupported target "hyper" with type "cdylib" omitted - -# Unsupported target "client" with type "example" omitted - -# Unsupported target "client_json" with type "example" omitted - -# Unsupported target "echo" with type "example" omitted - -# Unsupported target "gateway" with type "example" omitted - -# Unsupported target "hello" with type "example" omitted - -# Unsupported target "http_proxy" with type "example" omitted - -# Unsupported target "multi_server" with type "example" omitted - -# Unsupported target "params" with type "example" omitted - -# Unsupported target "send_file" with type "example" omitted - -# Unsupported target "service_struct_impl" with type "example" omitted - -# Unsupported target "single_threaded" with type "example" omitted - -# Unsupported target "state" with type "example" omitted - -# Unsupported target "tower_client" with type "example" omitted - -# Unsupported target "tower_server" with type "example" omitted - -# Unsupported target "upgrades" with type "example" omitted - -# Unsupported target "web_api" with type "example" omitted - -rust_library( - name = "hyper", - srcs = glob(["**/*.rs"]), - crate_features = [ - "client", - "default", - "full", - "h2", - "http1", - "http2", - "runtime", - "server", - "socket2", - "stream", - "tcp", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=hyper", - "manual", - ], - version = "0.14.17", - # buildifier: leave-alone - deps = [ - "@raze__bytes__1_1_0//:bytes", - "@raze__futures_channel__0_3_21//:futures_channel", - "@raze__futures_core__0_3_21//:futures_core", - "@raze__futures_util__0_3_21//:futures_util", - "@raze__h2__0_3_12//:h2", - "@raze__http__0_2_6//:http", - "@raze__http_body__0_4_4//:http_body", - "@raze__httparse__1_6_0//:httparse", - "@raze__httpdate__1_0_2//:httpdate", - "@raze__itoa__1_0_1//:itoa", - "@raze__pin_project_lite__0_2_8//:pin_project_lite", - "@raze__socket2__0_4_4//:socket2", - "@raze__tokio__1_17_0//:tokio", - "@raze__tower_service__0_3_1//:tower_service", - "@raze__tracing__0_1_32//:tracing", - "@raze__want__0_3_0//:want", - ], -) - -# Unsupported target "hyper" with type "staticlib" omitted - -# Unsupported target "client" with type "test" omitted - -# Unsupported target "integration" with type "test" omitted - -# Unsupported target "server" with type "test" omitted diff --git a/rules/rust/remote/BUILD.hyper-timeout-0.4.1.bazel b/rules/rust/remote/BUILD.hyper-timeout-0.4.1.bazel deleted file mode 100644 index d7976af..0000000 --- a/rules/rust/remote/BUILD.hyper-timeout-0.4.1.bazel +++ /dev/null @@ -1,60 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "client" with type "example" omitted - -rust_library( - name = "hyper_timeout", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=hyper-timeout", - "manual", - ], - version = "0.4.1", - # buildifier: leave-alone - deps = [ - "@raze__hyper__0_14_17//:hyper", - "@raze__pin_project_lite__0_2_8//:pin_project_lite", - "@raze__tokio__1_17_0//:tokio", - "@raze__tokio_io_timeout__1_2_0//:tokio_io_timeout", - ], -) diff --git a/rules/rust/remote/BUILD.indexmap-1.8.0.bazel b/rules/rust/remote/BUILD.indexmap-1.8.0.bazel deleted file mode 100644 index 0756c62..0000000 --- a/rules/rust/remote/BUILD.indexmap-1.8.0.bazel +++ /dev/null @@ -1,100 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "indexmap_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "1.8.0", - visibility = ["//visibility:private"], - deps = [ - "@raze__autocfg__1_1_0//:autocfg", - ], -) - -# Unsupported target "bench" with type "bench" omitted - -# Unsupported target "faststring" with type "bench" omitted - -rust_library( - name = "indexmap", - srcs = glob(["**/*.rs"]), - crate_features = [ - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=indexmap", - "manual", - ], - version = "1.8.0", - # buildifier: leave-alone - deps = [ - ":indexmap_build_script", - "@raze__hashbrown__0_11_2//:hashbrown", - ], -) - -# Unsupported target "equivalent_trait" with type "test" omitted - -# Unsupported target "macros_full_path" with type "test" omitted - -# Unsupported target "quick" with type "test" omitted - -# Unsupported target "tests" with type "test" omitted diff --git a/rules/rust/remote/BUILD.instant-0.1.12.bazel b/rules/rust/remote/BUILD.instant-0.1.12.bazel deleted file mode 100644 index 4c94fe7..0000000 --- a/rules/rust/remote/BUILD.instant-0.1.12.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # BSD-3-Clause from expression "BSD-3-Clause" -]) - -# Generated Targets - -rust_library( - name = "instant", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=instant", - "manual", - ], - version = "0.1.12", - # buildifier: leave-alone - deps = [ - "@raze__cfg_if__1_0_0//:cfg_if", - ], -) - -# Unsupported target "wasm" with type "test" omitted diff --git a/rules/rust/remote/BUILD.itertools-0.10.3.bazel b/rules/rust/remote/BUILD.itertools-0.10.3.bazel deleted file mode 100644 index 1c61118..0000000 --- a/rules/rust/remote/BUILD.itertools-0.10.3.bazel +++ /dev/null @@ -1,98 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "bench1" with type "bench" omitted - -# Unsupported target "combinations" with type "bench" omitted - -# Unsupported target "combinations_with_replacement" with type "bench" omitted - -# Unsupported target "fold_specialization" with type "bench" omitted - -# Unsupported target "powerset" with type "bench" omitted - -# Unsupported target "tree_fold1" with type "bench" omitted - -# Unsupported target "tuple_combinations" with type "bench" omitted - -# Unsupported target "tuples" with type "bench" omitted - -# Unsupported target "iris" with type "example" omitted - -rust_library( - name = "itertools", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "use_alloc", - "use_std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=itertools", - "manual", - ], - version = "0.10.3", - # buildifier: leave-alone - deps = [ - "@raze__either__1_6_1//:either", - ], -) - -# Unsupported target "adaptors_no_collect" with type "test" omitted - -# Unsupported target "flatten_ok" with type "test" omitted - -# Unsupported target "macros_hygiene" with type "test" omitted - -# Unsupported target "merge_join" with type "test" omitted - -# Unsupported target "peeking_take_while" with type "test" omitted - -# Unsupported target "quick" with type "test" omitted - -# Unsupported target "specializations" with type "test" omitted - -# Unsupported target "test_core" with type "test" omitted - -# Unsupported target "test_std" with type "test" omitted - -# Unsupported target "tuples" with type "test" omitted - -# Unsupported target "zip" with type "test" omitted diff --git a/rules/rust/remote/BUILD.itoa-1.0.1.bazel b/rules/rust/remote/BUILD.itoa-1.0.1.bazel deleted file mode 100644 index 9957491..0000000 --- a/rules/rust/remote/BUILD.itoa-1.0.1.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "bench" with type "bench" omitted - -rust_library( - name = "itoa", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=itoa", - "manual", - ], - version = "1.0.1", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "test" with type "test" omitted diff --git a/rules/rust/remote/BUILD.js-sys-0.3.56.bazel b/rules/rust/remote/BUILD.js-sys-0.3.56.bazel deleted file mode 100644 index 4a1317e..0000000 --- a/rules/rust/remote/BUILD.js-sys-0.3.56.bazel +++ /dev/null @@ -1,59 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "js_sys", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=js-sys", - "manual", - ], - version = "0.3.56", - # buildifier: leave-alone - deps = [ - "@raze__wasm_bindgen__0_2_79//:wasm_bindgen", - ], -) - -# Unsupported target "headless" with type "test" omitted - -# Unsupported target "wasm" with type "test" omitted diff --git a/rules/rust/remote/BUILD.json5-0.4.1.bazel b/rules/rust/remote/BUILD.json5-0.4.1.bazel deleted file mode 100644 index 372892d..0000000 --- a/rules/rust/remote/BUILD.json5-0.4.1.bazel +++ /dev/null @@ -1,71 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # ISC from expression "ISC" -]) - -# Generated Targets - -rust_library( - name = "json5", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [] + glob(["**/*.pest"]), - edition = "2018", - proc_macro_deps = [ - "@raze__pest_derive__2_1_0//:pest_derive", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=json5", - "manual", - ], - version = "0.4.1", - # buildifier: leave-alone - deps = [ - "@raze__pest__2_1_3//:pest", - "@raze__serde__1_0_136//:serde", - ], -) - -# Unsupported target "adapted_from_js_reference" with type "test" omitted - -# Unsupported target "common" with type "test" omitted - -# Unsupported target "de" with type "test" omitted - -# Unsupported target "examples" with type "test" omitted - -# Unsupported target "json5_dot_org_example" with type "test" omitted - -# Unsupported target "ser" with type "test" omitted diff --git a/rules/rust/remote/BUILD.lazy_static-1.4.0.bazel b/rules/rust/remote/BUILD.lazy_static-1.4.0.bazel deleted file mode 100644 index eaada7f..0000000 --- a/rules/rust/remote/BUILD.lazy_static-1.4.0.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "lazy_static", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=lazy_static", - "manual", - ], - version = "1.4.0", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "no_std" with type "test" omitted - -# Unsupported target "test" with type "test" omitted diff --git a/rules/rust/remote/BUILD.levenshtein_automata-0.2.1.bazel b/rules/rust/remote/BUILD.levenshtein_automata-0.2.1.bazel deleted file mode 100644 index a79d33b..0000000 --- a/rules/rust/remote/BUILD.levenshtein_automata-0.2.1.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "levenshtein_automata", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=levenshtein_automata", - "manual", - ], - version = "0.2.1", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.libc-0.2.121.bazel b/rules/rust/remote/BUILD.libc-0.2.121.bazel deleted file mode 100644 index e870a67..0000000 --- a/rules/rust/remote/BUILD.libc-0.2.121.bazel +++ /dev/null @@ -1,90 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "libc_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.2.121", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "libc", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=libc", - "manual", - ], - version = "0.2.121", - # buildifier: leave-alone - deps = [ - ":libc_build_script", - ], -) - -# Unsupported target "const_fn" with type "test" omitted diff --git a/rules/rust/remote/BUILD.libz-sys-1.1.5.bazel b/rules/rust/remote/BUILD.libz-sys-1.1.5.bazel deleted file mode 100644 index e04e8a1..0000000 --- a/rules/rust/remote/BUILD.libz-sys-1.1.5.bazel +++ /dev/null @@ -1,94 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "libz_sys_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - "libc", - "stock-zlib", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2015", - links = "z", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "1.1.5", - visibility = ["//visibility:private"], - deps = [ - "@raze__cc__1_0_73//:cc", - "@raze__pkg_config__0_3_24//:pkg_config", - ], -) - -rust_library( - name = "libz_sys", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "libc", - "stock-zlib", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=libz-sys", - "manual", - ], - version = "1.1.5", - # buildifier: leave-alone - deps = [ - ":libz_sys_build_script", - "@raze__libc__0_2_121//:libc", - ], -) diff --git a/rules/rust/remote/BUILD.linked-hash-map-0.5.4.bazel b/rules/rust/remote/BUILD.linked-hash-map-0.5.4.bazel deleted file mode 100644 index f529fd3..0000000 --- a/rules/rust/remote/BUILD.linked-hash-map-0.5.4.bazel +++ /dev/null @@ -1,60 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "linked_hash_map", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=linked-hash-map", - "manual", - ], - version = "0.5.4", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "heapsize" with type "test" omitted - -# Unsupported target "serde" with type "test" omitted - -# Unsupported target "test" with type "test" omitted diff --git a/rules/rust/remote/BUILD.lock_api-0.4.6.bazel b/rules/rust/remote/BUILD.lock_api-0.4.6.bazel deleted file mode 100644 index a43bd29..0000000 --- a/rules/rust/remote/BUILD.lock_api-0.4.6.bazel +++ /dev/null @@ -1,55 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -rust_library( - name = "lock_api", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=lock_api", - "manual", - ], - version = "0.4.6", - # buildifier: leave-alone - deps = [ - "@raze__scopeguard__1_1_0//:scopeguard", - ], -) diff --git a/rules/rust/remote/BUILD.log-0.4.14.bazel b/rules/rust/remote/BUILD.log-0.4.14.bazel deleted file mode 100644 index 9279fee..0000000 --- a/rules/rust/remote/BUILD.log-0.4.14.bazel +++ /dev/null @@ -1,93 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "log_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.4.14", - visibility = ["//visibility:private"], - deps = [ - ], -) - -# Unsupported target "value" with type "bench" omitted - -rust_library( - name = "log", - srcs = glob(["**/*.rs"]), - crate_features = [ - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=log", - "manual", - ], - version = "0.4.14", - # buildifier: leave-alone - deps = [ - ":log_build_script", - "@raze__cfg_if__1_0_0//:cfg_if", - ], -) - -# Unsupported target "filters" with type "test" omitted - -# Unsupported target "macros" with type "test" omitted diff --git a/rules/rust/remote/BUILD.lru-0.7.3.bazel b/rules/rust/remote/BUILD.lru-0.7.3.bazel deleted file mode 100644 index df97a37..0000000 --- a/rules/rust/remote/BUILD.lru-0.7.3.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "lru", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "hashbrown", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=lru", - "manual", - ], - version = "0.7.3", - # buildifier: leave-alone - deps = [ - "@raze__hashbrown__0_11_2//:hashbrown", - ], -) diff --git a/rules/rust/remote/BUILD.lz4_flex-0.9.2.bazel b/rules/rust/remote/BUILD.lz4_flex-0.9.2.bazel deleted file mode 100644 index f4881ff..0000000 --- a/rules/rust/remote/BUILD.lz4_flex-0.9.2.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "crit_bench" with type "bench" omitted - -rust_library( - name = "lz4_flex", - srcs = glob(["**/*.rs"]), - crate_features = [ - "checked-decode", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=lz4_flex", - "manual", - ], - version = "0.9.2", - # buildifier: leave-alone - deps = [ - "@raze__twox_hash__1_6_2//:twox_hash", - ], -) diff --git a/rules/rust/remote/BUILD.maplit-1.0.2.bazel b/rules/rust/remote/BUILD.maplit-1.0.2.bazel deleted file mode 100644 index 23e39c7..0000000 --- a/rules/rust/remote/BUILD.maplit-1.0.2.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "maplit", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=maplit", - "manual", - ], - version = "1.0.2", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "tests" with type "test" omitted diff --git a/rules/rust/remote/BUILD.matchers-0.1.0.bazel b/rules/rust/remote/BUILD.matchers-0.1.0.bazel deleted file mode 100644 index 87ee8cf..0000000 --- a/rules/rust/remote/BUILD.matchers-0.1.0.bazel +++ /dev/null @@ -1,55 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "matchers", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=matchers", - "manual", - ], - version = "0.1.0", - # buildifier: leave-alone - deps = [ - "@raze__regex_automata__0_1_10//:regex_automata", - ], -) diff --git a/rules/rust/remote/BUILD.measure_time-0.8.0.bazel b/rules/rust/remote/BUILD.measure_time-0.8.0.bazel deleted file mode 100644 index 4912e22..0000000 --- a/rules/rust/remote/BUILD.measure_time-0.8.0.bazel +++ /dev/null @@ -1,55 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "unencumbered", # Unlicense from expression "Unlicense" -]) - -# Generated Targets - -rust_library( - name = "measure_time", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=measure_time", - "manual", - ], - version = "0.8.0", - # buildifier: leave-alone - deps = [ - "@raze__log__0_4_14//:log", - ], -) diff --git a/rules/rust/remote/BUILD.memchr-2.4.1.bazel b/rules/rust/remote/BUILD.memchr-2.4.1.bazel deleted file mode 100644 index 477e3e6..0000000 --- a/rules/rust/remote/BUILD.memchr-2.4.1.bazel +++ /dev/null @@ -1,88 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "unencumbered", # Unlicense from expression "Unlicense OR MIT" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "memchr_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "2.4.1", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "memchr", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=memchr", - "manual", - ], - version = "2.4.1", - # buildifier: leave-alone - deps = [ - ":memchr_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.memmap2-0.5.3.bazel b/rules/rust/remote/BUILD.memmap2-0.5.3.bazel deleted file mode 100644 index 421955a..0000000 --- a/rules/rust/remote/BUILD.memmap2-0.5.3.bazel +++ /dev/null @@ -1,67 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "cat" with type "example" omitted - -rust_library( - name = "memmap2", - srcs = glob(["**/*.rs"]), - aliases = { - }, - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=memmap2", - "manual", - ], - version = "0.5.3", - # buildifier: leave-alone - deps = [ - ] + selects.with_or({ - # cfg(unix) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__libc__0_2_121//:libc", - ], - "//conditions:default": [], - }), -) diff --git a/rules/rust/remote/BUILD.memoffset-0.6.5.bazel b/rules/rust/remote/BUILD.memoffset-0.6.5.bazel deleted file mode 100644 index 17ad3dc..0000000 --- a/rules/rust/remote/BUILD.memoffset-0.6.5.bazel +++ /dev/null @@ -1,87 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "memoffset_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.6.5", - visibility = ["//visibility:private"], - deps = [ - "@raze__autocfg__1_1_0//:autocfg", - ], -) - -rust_library( - name = "memoffset", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=memoffset", - "manual", - ], - version = "0.6.5", - # buildifier: leave-alone - deps = [ - ":memoffset_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.minimal-lexical-0.2.1.bazel b/rules/rust/remote/BUILD.minimal-lexical-0.2.1.bazel deleted file mode 100644 index efe7cf2..0000000 --- a/rules/rust/remote/BUILD.minimal-lexical-0.2.1.bazel +++ /dev/null @@ -1,79 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "minimal_lexical", - srcs = glob(["**/*.rs"]), - crate_features = [ - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=minimal-lexical", - "manual", - ], - version = "0.2.1", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "bellerophon" with type "test" omitted - -# Unsupported target "bellerophon_tests" with type "test" omitted - -# Unsupported target "integration_tests" with type "test" omitted - -# Unsupported target "lemire_tests" with type "test" omitted - -# Unsupported target "libm_tests" with type "test" omitted - -# Unsupported target "mask_tests" with type "test" omitted - -# Unsupported target "number_tests" with type "test" omitted - -# Unsupported target "parse_tests" with type "test" omitted - -# Unsupported target "rounding_tests" with type "test" omitted - -# Unsupported target "slow_tests" with type "test" omitted - -# Unsupported target "stackvec" with type "test" omitted - -# Unsupported target "vec_tests" with type "test" omitted diff --git a/rules/rust/remote/BUILD.mio-0.8.2.bazel b/rules/rust/remote/BUILD.mio-0.8.2.bazel deleted file mode 100644 index f206d89..0000000 --- a/rules/rust/remote/BUILD.mio-0.8.2.bazel +++ /dev/null @@ -1,76 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "tcp_listenfd_server" with type "example" omitted - -# Unsupported target "tcp_server" with type "example" omitted - -# Unsupported target "udp_server" with type "example" omitted - -rust_library( - name = "mio", - srcs = glob(["**/*.rs"]), - aliases = { - }, - crate_features = [ - "default", - "net", - "os-ext", - "os-poll", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=mio", - "manual", - ], - version = "0.8.2", - # buildifier: leave-alone - deps = [ - "@raze__log__0_4_14//:log", - ] + selects.with_or({ - # cfg(unix) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__libc__0_2_121//:libc", - ], - "//conditions:default": [], - }), -) diff --git a/rules/rust/remote/BUILD.miow-0.3.7.bazel b/rules/rust/remote/BUILD.miow-0.3.7.bazel deleted file mode 100644 index 944e013..0000000 --- a/rules/rust/remote/BUILD.miow-0.3.7.bazel +++ /dev/null @@ -1,55 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "miow", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=miow", - "manual", - ], - version = "0.3.7", - # buildifier: leave-alone - deps = [ - "@raze__winapi__0_3_9//:winapi", - ], -) diff --git a/rules/rust/remote/BUILD.multimap-0.8.3.bazel b/rules/rust/remote/BUILD.multimap-0.8.3.bazel deleted file mode 100644 index a954a6d..0000000 --- a/rules/rust/remote/BUILD.multimap-0.8.3.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "multimap", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=multimap", - "manual", - ], - version = "0.8.3", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.murmurhash32-0.2.0.bazel b/rules/rust/remote/BUILD.murmurhash32-0.2.0.bazel deleted file mode 100644 index 2292873..0000000 --- a/rules/rust/remote/BUILD.murmurhash32-0.2.0.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "murmurhash32_bench" with type "bench" omitted - -rust_library( - name = "murmurhash32", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=murmurhash32", - "manual", - ], - version = "0.2.0", - # buildifier: leave-alone - deps = [ - "@raze__byteorder__1_4_3//:byteorder", - ], -) diff --git a/rules/rust/remote/BUILD.nom-7.1.1.bazel b/rules/rust/remote/BUILD.nom-7.1.1.bazel deleted file mode 100644 index 6c3aa8e..0000000 --- a/rules/rust/remote/BUILD.nom-7.1.1.bazel +++ /dev/null @@ -1,97 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "iterator" with type "example" omitted - -# Unsupported target "json" with type "example" omitted - -# Unsupported target "s_expression" with type "example" omitted - -# Unsupported target "string" with type "example" omitted - -rust_library( - name = "nom", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc", - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=nom", - "manual", - ], - version = "7.1.1", - # buildifier: leave-alone - deps = [ - "@raze__memchr__2_4_1//:memchr", - "@raze__minimal_lexical__0_2_1//:minimal_lexical", - ], -) - -# Unsupported target "arithmetic" with type "test" omitted - -# Unsupported target "arithmetic_ast" with type "test" omitted - -# Unsupported target "css" with type "test" omitted - -# Unsupported target "custom_errors" with type "test" omitted - -# Unsupported target "escaped" with type "test" omitted - -# Unsupported target "float" with type "test" omitted - -# Unsupported target "fnmut" with type "test" omitted - -# Unsupported target "ini" with type "test" omitted - -# Unsupported target "ini_str" with type "test" omitted - -# Unsupported target "issues" with type "test" omitted - -# Unsupported target "json" with type "test" omitted - -# Unsupported target "mp4" with type "test" omitted - -# Unsupported target "multiline" with type "test" omitted - -# Unsupported target "overflow" with type "test" omitted - -# Unsupported target "reborrow_fold" with type "test" omitted diff --git a/rules/rust/remote/BUILD.ntapi-0.3.7.bazel b/rules/rust/remote/BUILD.ntapi-0.3.7.bazel deleted file mode 100644 index 7e836f2..0000000 --- a/rules/rust/remote/BUILD.ntapi-0.3.7.bazel +++ /dev/null @@ -1,89 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "ntapi_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - "user", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.3.7", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "ntapi", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "user", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=ntapi", - "manual", - ], - version = "0.3.7", - # buildifier: leave-alone - deps = [ - ":ntapi_build_script", - "@raze__winapi__0_3_9//:winapi", - ], -) diff --git a/rules/rust/remote/BUILD.num-integer-0.1.44.bazel b/rules/rust/remote/BUILD.num-integer-0.1.44.bazel deleted file mode 100644 index c01b9c5..0000000 --- a/rules/rust/remote/BUILD.num-integer-0.1.44.bazel +++ /dev/null @@ -1,96 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "num_integer_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.1.44", - visibility = ["//visibility:private"], - deps = [ - "@raze__autocfg__1_1_0//:autocfg", - ], -) - -# Unsupported target "average" with type "bench" omitted - -# Unsupported target "gcd" with type "bench" omitted - -# Unsupported target "roots" with type "bench" omitted - -rust_library( - name = "num_integer", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=num-integer", - "manual", - ], - version = "0.1.44", - # buildifier: leave-alone - deps = [ - ":num_integer_build_script", - "@raze__num_traits__0_2_14//:num_traits", - ], -) - -# Unsupported target "average" with type "test" omitted - -# Unsupported target "roots" with type "test" omitted diff --git a/rules/rust/remote/BUILD.num-traits-0.2.14.bazel b/rules/rust/remote/BUILD.num-traits-0.2.14.bazel deleted file mode 100644 index a2a1885..0000000 --- a/rules/rust/remote/BUILD.num-traits-0.2.14.bazel +++ /dev/null @@ -1,87 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "num_traits_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.2.14", - visibility = ["//visibility:private"], - deps = [ - "@raze__autocfg__1_1_0//:autocfg", - ], -) - -rust_library( - name = "num_traits", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=num-traits", - "manual", - ], - version = "0.2.14", - # buildifier: leave-alone - deps = [ - ":num_traits_build_script", - ], -) - -# Unsupported target "cast" with type "test" omitted diff --git a/rules/rust/remote/BUILD.num_cpus-1.13.1.bazel b/rules/rust/remote/BUILD.num_cpus-1.13.1.bazel deleted file mode 100644 index 8072c09..0000000 --- a/rules/rust/remote/BUILD.num_cpus-1.13.1.bazel +++ /dev/null @@ -1,67 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "values" with type "example" omitted - -rust_library( - name = "num_cpus", - srcs = glob(["**/*.rs"]), - aliases = { - }, - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=num_cpus", - "manual", - ], - version = "1.13.1", - # buildifier: leave-alone - deps = [ - ] + selects.with_or({ - # cfg(not(windows)) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__libc__0_2_121//:libc", - ], - "//conditions:default": [], - }), -) diff --git a/rules/rust/remote/BUILD.num_enum-0.5.7.bazel b/rules/rust/remote/BUILD.num_enum-0.5.7.bazel deleted file mode 100644 index 43c718e..0000000 --- a/rules/rust/remote/BUILD.num_enum-0.5.7.bazel +++ /dev/null @@ -1,73 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # BSD-3-Clause from expression "BSD-3-Clause OR (MIT OR Apache-2.0)" -]) - -# Generated Targets - -rust_library( - name = "num_enum", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - proc_macro_deps = [ - "@raze__num_enum_derive__0_5_7//:num_enum_derive", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=num_enum", - "manual", - ], - version = "0.5.7", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "default" with type "test" omitted - -# Unsupported target "from_primitive" with type "test" omitted - -# Unsupported target "into_primitive" with type "test" omitted - -# Unsupported target "renamed_num_enum" with type "test" omitted - -# Unsupported target "try_build" with type "test" omitted - -# Unsupported target "try_from_primitive" with type "test" omitted - -# Unsupported target "unsafe_from_primitive" with type "test" omitted diff --git a/rules/rust/remote/BUILD.num_enum_derive-0.5.7.bazel b/rules/rust/remote/BUILD.num_enum_derive-0.5.7.bazel deleted file mode 100644 index ec38bc0..0000000 --- a/rules/rust/remote/BUILD.num_enum_derive-0.5.7.bazel +++ /dev/null @@ -1,60 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # BSD-3-Clause from expression "BSD-3-Clause OR (MIT OR Apache-2.0)" -]) - -# Generated Targets - -rust_proc_macro( - name = "num_enum_derive", - srcs = glob(["**/*.rs"]), - crate_features = [ - "proc-macro-crate", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=num_enum_derive", - "manual", - ], - version = "0.5.7", - # buildifier: leave-alone - deps = [ - "@raze__proc_macro2__1_0_36//:proc_macro2", - "@raze__proc_macro_crate__1_1_3//:proc_macro_crate", - "@raze__quote__1_0_16//:quote", - "@raze__syn__1_0_89//:syn", - ], -) diff --git a/rules/rust/remote/BUILD.num_threads-0.1.5.bazel b/rules/rust/remote/BUILD.num_threads-0.1.5.bazel deleted file mode 100644 index 88bdbbe..0000000 --- a/rules/rust/remote/BUILD.num_threads-0.1.5.bazel +++ /dev/null @@ -1,64 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "num_threads", - srcs = glob(["**/*.rs"]), - aliases = { - }, - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=num_threads", - "manual", - ], - version = "0.1.5", - # buildifier: leave-alone - deps = [ - ] + selects.with_or({ - # cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd")) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - ): [ - "@raze__libc__0_2_121//:libc", - ], - "//conditions:default": [], - }), -) diff --git a/rules/rust/remote/BUILD.once_cell-1.10.0.bazel b/rules/rust/remote/BUILD.once_cell-1.10.0.bazel deleted file mode 100644 index 1c93fe9..0000000 --- a/rules/rust/remote/BUILD.once_cell-1.10.0.bazel +++ /dev/null @@ -1,74 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "bench" with type "example" omitted - -# Unsupported target "bench_acquire" with type "example" omitted - -# Unsupported target "bench_vs_lazy_static" with type "example" omitted - -# Unsupported target "lazy_static" with type "example" omitted - -# Unsupported target "reentrant_init_deadlocks" with type "example" omitted - -# Unsupported target "regex" with type "example" omitted - -# Unsupported target "test_synchronization" with type "example" omitted - -rust_library( - name = "once_cell", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc", - "default", - "race", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=once_cell", - "manual", - ], - version = "1.10.0", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "it" with type "test" omitted diff --git a/rules/rust/remote/BUILD.opaque-debug-0.2.3.bazel b/rules/rust/remote/BUILD.opaque-debug-0.2.3.bazel deleted file mode 100644 index d33f701..0000000 --- a/rules/rust/remote/BUILD.opaque-debug-0.2.3.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "opaque_debug", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=opaque-debug", - "manual", - ], - version = "0.2.3", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.opentelemetry-0.17.0.bazel b/rules/rust/remote/BUILD.opentelemetry-0.17.0.bazel deleted file mode 100644 index 28bdcd8..0000000 --- a/rules/rust/remote/BUILD.opentelemetry-0.17.0.bazel +++ /dev/null @@ -1,86 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "batch_span_processor" with type "bench" omitted - -# Unsupported target "ddsketch" with type "bench" omitted - -# Unsupported target "metric" with type "bench" omitted - -# Unsupported target "trace" with type "bench" omitted - -rust_library( - name = "opentelemetry", - srcs = glob(["**/*.rs"]), - crate_features = [ - "async-trait", - "crossbeam-channel", - "dashmap", - "default", - "fnv", - "metrics", - "percent-encoding", - "pin-project", - "rand", - "trace", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - proc_macro_deps = [ - "@raze__async_trait__0_1_52//:async_trait", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=opentelemetry", - "manual", - ], - version = "0.17.0", - # buildifier: leave-alone - deps = [ - "@raze__crossbeam_channel__0_5_4//:crossbeam_channel", - "@raze__dashmap__4_0_2//:dashmap", - "@raze__fnv__1_0_7//:fnv", - "@raze__futures_channel__0_3_21//:futures_channel", - "@raze__futures_executor__0_3_21//:futures_executor", - "@raze__futures_util__0_3_21//:futures_util", - "@raze__lazy_static__1_4_0//:lazy_static", - "@raze__percent_encoding__2_1_0//:percent_encoding", - "@raze__pin_project__1_0_10//:pin_project", - "@raze__rand__0_8_5//:rand", - "@raze__thiserror__1_0_30//:thiserror", - ], -) diff --git a/rules/rust/remote/BUILD.opentelemetry-prometheus-0.10.0.bazel b/rules/rust/remote/BUILD.opentelemetry-prometheus-0.10.0.bazel deleted file mode 100644 index 37ba38f..0000000 --- a/rules/rust/remote/BUILD.opentelemetry-prometheus-0.10.0.bazel +++ /dev/null @@ -1,59 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "opentelemetry_prometheus", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=opentelemetry-prometheus", - "manual", - ], - version = "0.10.0", - # buildifier: leave-alone - deps = [ - "@raze__opentelemetry__0_17_0//:opentelemetry", - "@raze__prometheus__0_13_0//:prometheus", - "@raze__protobuf__2_27_1//:protobuf", - ], -) - -# Unsupported target "integration_test" with type "test" omitted diff --git a/rules/rust/remote/BUILD.ordered-multimap-0.3.1.bazel b/rules/rust/remote/BUILD.ordered-multimap-0.3.1.bazel deleted file mode 100644 index b13d54f..0000000 --- a/rules/rust/remote/BUILD.ordered-multimap-0.3.1.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "ordered_multimap", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=ordered-multimap", - "manual", - ], - version = "0.3.1", - # buildifier: leave-alone - deps = [ - "@raze__dlv_list__0_2_3//:dlv_list", - "@raze__hashbrown__0_9_1//:hashbrown", - ], -) diff --git a/rules/rust/remote/BUILD.os_str_bytes-6.0.0.bazel b/rules/rust/remote/BUILD.os_str_bytes-6.0.0.bazel deleted file mode 100644 index 6c1f7fa..0000000 --- a/rules/rust/remote/BUILD.os_str_bytes-6.0.0.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "os_str_bytes", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "memchr", - "raw_os_str", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=os_str_bytes", - "manual", - ], - version = "6.0.0", - # buildifier: leave-alone - deps = [ - "@raze__memchr__2_4_1//:memchr", - ], -) diff --git a/rules/rust/remote/BUILD.output_vt100-0.1.3.bazel b/rules/rust/remote/BUILD.output_vt100-0.1.3.bazel deleted file mode 100644 index 9a94658..0000000 --- a/rules/rust/remote/BUILD.output_vt100-0.1.3.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "red-hello" with type "example" omitted - -rust_library( - name = "output_vt100", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=output_vt100", - "manual", - ], - version = "0.1.3", - # buildifier: leave-alone - deps = [ - "@raze__winapi__0_3_9//:winapi", - ], -) diff --git a/rules/rust/remote/BUILD.ownedbytes-0.2.0.bazel b/rules/rust/remote/BUILD.ownedbytes-0.2.0.bazel deleted file mode 100644 index c74f449..0000000 --- a/rules/rust/remote/BUILD.ownedbytes-0.2.0.bazel +++ /dev/null @@ -1,55 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "ownedbytes", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=ownedbytes", - "manual", - ], - version = "0.2.0", - # buildifier: leave-alone - deps = [ - "@raze__stable_deref_trait__1_2_0//:stable_deref_trait", - ], -) diff --git a/rules/rust/remote/BUILD.parking_lot-0.11.2.bazel b/rules/rust/remote/BUILD.parking_lot-0.11.2.bazel deleted file mode 100644 index 2265168..0000000 --- a/rules/rust/remote/BUILD.parking_lot-0.11.2.bazel +++ /dev/null @@ -1,60 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -rust_library( - name = "parking_lot", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=parking_lot", - "manual", - ], - version = "0.11.2", - # buildifier: leave-alone - deps = [ - "@raze__instant__0_1_12//:instant", - "@raze__lock_api__0_4_6//:lock_api", - "@raze__parking_lot_core__0_8_5//:parking_lot_core", - ], -) - -# Unsupported target "issue_203" with type "test" omitted diff --git a/rules/rust/remote/BUILD.parking_lot-0.12.0.bazel b/rules/rust/remote/BUILD.parking_lot-0.12.0.bazel deleted file mode 100644 index 543d42c..0000000 --- a/rules/rust/remote/BUILD.parking_lot-0.12.0.bazel +++ /dev/null @@ -1,60 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -rust_library( - name = "parking_lot", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "send_guard", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=parking_lot", - "manual", - ], - version = "0.12.0", - # buildifier: leave-alone - deps = [ - "@raze__lock_api__0_4_6//:lock_api", - "@raze__parking_lot_core__0_9_1//:parking_lot_core", - ], -) - -# Unsupported target "issue_203" with type "test" omitted diff --git a/rules/rust/remote/BUILD.parking_lot_core-0.8.5.bazel b/rules/rust/remote/BUILD.parking_lot_core-0.8.5.bazel deleted file mode 100644 index 62cf039..0000000 --- a/rules/rust/remote/BUILD.parking_lot_core-0.8.5.bazel +++ /dev/null @@ -1,106 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "parking_lot_core_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.8.5", - visibility = ["//visibility:private"], - deps = [ - ] + selects.with_or({ - # cfg(unix) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - ], - "//conditions:default": [], - }), -) - -rust_library( - name = "parking_lot_core", - srcs = glob(["**/*.rs"]), - aliases = { - }, - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=parking_lot_core", - "manual", - ], - version = "0.8.5", - # buildifier: leave-alone - deps = [ - ":parking_lot_core_build_script", - "@raze__cfg_if__1_0_0//:cfg_if", - "@raze__instant__0_1_12//:instant", - "@raze__smallvec__1_8_0//:smallvec", - ] + selects.with_or({ - # cfg(unix) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__libc__0_2_121//:libc", - ], - "//conditions:default": [], - }), -) diff --git a/rules/rust/remote/BUILD.parking_lot_core-0.9.1.bazel b/rules/rust/remote/BUILD.parking_lot_core-0.9.1.bazel deleted file mode 100644 index c3b1a1d..0000000 --- a/rules/rust/remote/BUILD.parking_lot_core-0.9.1.bazel +++ /dev/null @@ -1,105 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "parking_lot_core_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.9.1", - visibility = ["//visibility:private"], - deps = [ - ] + selects.with_or({ - # cfg(unix) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - ], - "//conditions:default": [], - }), -) - -rust_library( - name = "parking_lot_core", - srcs = glob(["**/*.rs"]), - aliases = { - }, - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=parking_lot_core", - "manual", - ], - version = "0.9.1", - # buildifier: leave-alone - deps = [ - ":parking_lot_core_build_script", - "@raze__cfg_if__1_0_0//:cfg_if", - "@raze__smallvec__1_8_0//:smallvec", - ] + selects.with_or({ - # cfg(unix) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__libc__0_2_121//:libc", - ], - "//conditions:default": [], - }), -) diff --git a/rules/rust/remote/BUILD.pathdiff-0.2.1.bazel b/rules/rust/remote/BUILD.pathdiff-0.2.1.bazel deleted file mode 100644 index f50adbe..0000000 --- a/rules/rust/remote/BUILD.pathdiff-0.2.1.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "pathdiff", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=pathdiff", - "manual", - ], - version = "0.2.1", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.percent-encoding-2.1.0.bazel b/rules/rust/remote/BUILD.percent-encoding-2.1.0.bazel deleted file mode 100644 index 3a343f2..0000000 --- a/rules/rust/remote/BUILD.percent-encoding-2.1.0.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "percent_encoding", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=percent-encoding", - "manual", - ], - version = "2.1.0", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.pest-2.1.3.bazel b/rules/rust/remote/BUILD.pest-2.1.3.bazel deleted file mode 100644 index a12e962..0000000 --- a/rules/rust/remote/BUILD.pest-2.1.3.bazel +++ /dev/null @@ -1,61 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "parens" with type "example" omitted - -rust_library( - name = "pest", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=pest", - "manual", - ], - version = "2.1.3", - # buildifier: leave-alone - deps = [ - "@raze__ucd_trie__0_1_3//:ucd_trie", - ], -) - -# Unsupported target "calculator" with type "test" omitted - -# Unsupported target "json" with type "test" omitted diff --git a/rules/rust/remote/BUILD.pest_derive-2.1.0.bazel b/rules/rust/remote/BUILD.pest_derive-2.1.0.bazel deleted file mode 100644 index 192aebb..0000000 --- a/rules/rust/remote/BUILD.pest_derive-2.1.0.bazel +++ /dev/null @@ -1,64 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_proc_macro( - name = "pest_derive", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=pest_derive", - "manual", - ], - version = "2.1.0", - # buildifier: leave-alone - deps = [ - "@raze__pest__2_1_3//:pest", - "@raze__pest_generator__2_1_3//:pest_generator", - ], -) - -# Unsupported target "grammar" with type "test" omitted - -# Unsupported target "grammar_inline" with type "test" omitted - -# Unsupported target "lists" with type "test" omitted - -# Unsupported target "reporting" with type "test" omitted diff --git a/rules/rust/remote/BUILD.pest_generator-2.1.3.bazel b/rules/rust/remote/BUILD.pest_generator-2.1.3.bazel deleted file mode 100644 index f629267..0000000 --- a/rules/rust/remote/BUILD.pest_generator-2.1.3.bazel +++ /dev/null @@ -1,59 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "pest_generator", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=pest_generator", - "manual", - ], - version = "2.1.3", - # buildifier: leave-alone - deps = [ - "@raze__pest__2_1_3//:pest", - "@raze__pest_meta__2_1_3//:pest_meta", - "@raze__proc_macro2__1_0_36//:proc_macro2", - "@raze__quote__1_0_16//:quote", - "@raze__syn__1_0_89//:syn", - ], -) diff --git a/rules/rust/remote/BUILD.pest_meta-2.1.3.bazel b/rules/rust/remote/BUILD.pest_meta-2.1.3.bazel deleted file mode 100644 index d6d5bde..0000000 --- a/rules/rust/remote/BUILD.pest_meta-2.1.3.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "pest_meta", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=pest_meta", - "manual", - ], - version = "2.1.3", - # buildifier: leave-alone - deps = [ - "@raze__maplit__1_0_2//:maplit", - "@raze__pest__2_1_3//:pest", - ], -) diff --git a/rules/rust/remote/BUILD.petgraph-0.6.0.bazel b/rules/rust/remote/BUILD.petgraph-0.6.0.bazel deleted file mode 100644 index 11fbf2e..0000000 --- a/rules/rust/remote/BUILD.petgraph-0.6.0.bazel +++ /dev/null @@ -1,102 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "bellman_ford" with type "bench" omitted - -# Unsupported target "dijkstra" with type "bench" omitted - -# Unsupported target "feedback_arc_set" with type "bench" omitted - -# Unsupported target "floyd_warshall" with type "bench" omitted - -# Unsupported target "iso" with type "bench" omitted - -# Unsupported target "k_shortest_path" with type "bench" omitted - -# Unsupported target "matching" with type "bench" omitted - -# Unsupported target "matrix_graph" with type "bench" omitted - -# Unsupported target "ograph" with type "bench" omitted - -# Unsupported target "serialize" with type "bench" omitted - -# Unsupported target "stable_graph" with type "bench" omitted - -# Unsupported target "unionfind" with type "bench" omitted - -rust_library( - name = "petgraph", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=petgraph", - "manual", - ], - version = "0.6.0", - # buildifier: leave-alone - deps = [ - "@raze__fixedbitset__0_4_1//:fixedbitset", - "@raze__indexmap__1_8_0//:indexmap", - ], -) - -# Unsupported target "floyd_warshall" with type "test" omitted - -# Unsupported target "graph" with type "test" omitted - -# Unsupported target "graphmap" with type "test" omitted - -# Unsupported target "iso" with type "test" omitted - -# Unsupported target "k_shortest_path" with type "test" omitted - -# Unsupported target "list" with type "test" omitted - -# Unsupported target "matching" with type "test" omitted - -# Unsupported target "operator" with type "test" omitted - -# Unsupported target "quickcheck" with type "test" omitted - -# Unsupported target "stable_graph" with type "test" omitted - -# Unsupported target "unionfind" with type "test" omitted diff --git a/rules/rust/remote/BUILD.pin-project-1.0.10.bazel b/rules/rust/remote/BUILD.pin-project-1.0.10.bazel deleted file mode 100644 index d1c772b..0000000 --- a/rules/rust/remote/BUILD.pin-project-1.0.10.bazel +++ /dev/null @@ -1,101 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -# Unsupported target "enum-default" with type "example" omitted - -# Unsupported target "enum-default-expanded" with type "example" omitted - -# Unsupported target "not_unpin" with type "example" omitted - -# Unsupported target "not_unpin-expanded" with type "example" omitted - -# Unsupported target "pinned_drop" with type "example" omitted - -# Unsupported target "pinned_drop-expanded" with type "example" omitted - -# Unsupported target "project_replace" with type "example" omitted - -# Unsupported target "project_replace-expanded" with type "example" omitted - -# Unsupported target "struct-default" with type "example" omitted - -# Unsupported target "struct-default-expanded" with type "example" omitted - -# Unsupported target "unsafe_unpin" with type "example" omitted - -# Unsupported target "unsafe_unpin-expanded" with type "example" omitted - -rust_library( - name = "pin_project", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - proc_macro_deps = [ - "@raze__pin_project_internal__1_0_10//:pin_project_internal", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=pin-project", - "manual", - ], - version = "1.0.10", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "cfg" with type "test" omitted - -# Unsupported target "compiletest" with type "test" omitted - -# Unsupported target "drop_order" with type "test" omitted - -# Unsupported target "expandtest" with type "test" omitted - -# Unsupported target "lint" with type "test" omitted - -# Unsupported target "pin_project" with type "test" omitted - -# Unsupported target "pinned_drop" with type "test" omitted - -# Unsupported target "proper_unpin" with type "test" omitted - -# Unsupported target "repr_packed" with type "test" omitted - -# Unsupported target "unsafe_unpin" with type "test" omitted diff --git a/rules/rust/remote/BUILD.pin-project-internal-1.0.10.bazel b/rules/rust/remote/BUILD.pin-project-internal-1.0.10.bazel deleted file mode 100644 index e679b79..0000000 --- a/rules/rust/remote/BUILD.pin-project-internal-1.0.10.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -rust_proc_macro( - name = "pin_project_internal", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=pin-project-internal", - "manual", - ], - version = "1.0.10", - # buildifier: leave-alone - deps = [ - "@raze__proc_macro2__1_0_36//:proc_macro2", - "@raze__quote__1_0_16//:quote", - "@raze__syn__1_0_89//:syn", - ], -) diff --git a/rules/rust/remote/BUILD.pin-project-lite-0.2.8.bazel b/rules/rust/remote/BUILD.pin-project-lite-0.2.8.bazel deleted file mode 100644 index 3b4f072..0000000 --- a/rules/rust/remote/BUILD.pin-project-lite-0.2.8.bazel +++ /dev/null @@ -1,66 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -rust_library( - name = "pin_project_lite", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=pin-project-lite", - "manual", - ], - version = "0.2.8", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "compiletest" with type "test" omitted - -# Unsupported target "drop_order" with type "test" omitted - -# Unsupported target "expandtest" with type "test" omitted - -# Unsupported target "lint" with type "test" omitted - -# Unsupported target "proper_unpin" with type "test" omitted - -# Unsupported target "test" with type "test" omitted diff --git a/rules/rust/remote/BUILD.pin-utils-0.1.0.bazel b/rules/rust/remote/BUILD.pin-utils-0.1.0.bazel deleted file mode 100644 index d543483..0000000 --- a/rules/rust/remote/BUILD.pin-utils-0.1.0.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "pin_utils", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=pin-utils", - "manual", - ], - version = "0.1.0", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "projection" with type "test" omitted - -# Unsupported target "stack_pin" with type "test" omitted diff --git a/rules/rust/remote/BUILD.pkg-config-0.3.24.bazel b/rules/rust/remote/BUILD.pkg-config-0.3.24.bazel deleted file mode 100644 index 90e175c..0000000 --- a/rules/rust/remote/BUILD.pkg-config-0.3.24.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "pkg_config", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=pkg-config", - "manual", - ], - version = "0.3.24", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "test" with type "test" omitted diff --git a/rules/rust/remote/BUILD.ppv-lite86-0.2.16.bazel b/rules/rust/remote/BUILD.ppv-lite86-0.2.16.bazel deleted file mode 100644 index 705d523..0000000 --- a/rules/rust/remote/BUILD.ppv-lite86-0.2.16.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "ppv_lite86", - srcs = glob(["**/*.rs"]), - crate_features = [ - "simd", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=ppv-lite86", - "manual", - ], - version = "0.2.16", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.pretty_assertions-1.2.0.bazel b/rules/rust/remote/BUILD.pretty_assertions-1.2.0.bazel deleted file mode 100644 index ab5e1b9..0000000 --- a/rules/rust/remote/BUILD.pretty_assertions-1.2.0.bazel +++ /dev/null @@ -1,64 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "pretty_assertion" with type "example" omitted - -# Unsupported target "standard_assertion" with type "example" omitted - -rust_library( - name = "pretty_assertions", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=pretty_assertions", - "manual", - ], - version = "1.2.0", - # buildifier: leave-alone - deps = [ - "@raze__ansi_term__0_12_1//:ansi_term", - "@raze__diff__0_1_12//:diff", - ], -) - -# Unsupported target "macros" with type "test" omitted diff --git a/rules/rust/remote/BUILD.proc-macro-crate-1.1.3.bazel b/rules/rust/remote/BUILD.proc-macro-crate-1.1.3.bazel deleted file mode 100644 index 235bf36..0000000 --- a/rules/rust/remote/BUILD.proc-macro-crate-1.1.3.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -rust_library( - name = "proc_macro_crate", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=proc-macro-crate", - "manual", - ], - version = "1.1.3", - # buildifier: leave-alone - deps = [ - "@raze__thiserror__1_0_30//:thiserror", - "@raze__toml__0_5_8//:toml", - ], -) diff --git a/rules/rust/remote/BUILD.proc-macro2-1.0.36.bazel b/rules/rust/remote/BUILD.proc-macro2-1.0.36.bazel deleted file mode 100644 index 49beab7..0000000 --- a/rules/rust/remote/BUILD.proc-macro2-1.0.36.bazel +++ /dev/null @@ -1,99 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "proc_macro2_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - "proc-macro", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "1.0.36", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "proc_macro2", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "proc-macro", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=proc-macro2", - "manual", - ], - version = "1.0.36", - # buildifier: leave-alone - deps = [ - ":proc_macro2_build_script", - "@raze__unicode_xid__0_2_2//:unicode_xid", - ], -) - -# Unsupported target "comments" with type "test" omitted - -# Unsupported target "features" with type "test" omitted - -# Unsupported target "marker" with type "test" omitted - -# Unsupported target "test" with type "test" omitted - -# Unsupported target "test_fmt" with type "test" omitted diff --git a/rules/rust/remote/BUILD.prometheus-0.13.0.bazel b/rules/rust/remote/BUILD.prometheus-0.13.0.bazel deleted file mode 100644 index 679f670..0000000 --- a/rules/rust/remote/BUILD.prometheus-0.13.0.bazel +++ /dev/null @@ -1,121 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "prometheus_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - "protobuf", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.13.0", - visibility = ["//visibility:private"], - deps = [ - ], -) - -# Unsupported target "atomic" with type "bench" omitted - -# Unsupported target "counter" with type "bench" omitted - -# Unsupported target "desc" with type "bench" omitted - -# Unsupported target "gauge" with type "bench" omitted - -# Unsupported target "histogram" with type "bench" omitted - -# Unsupported target "text_encoder" with type "bench" omitted - -# Unsupported target "example_custom_registry" with type "example" omitted - -# Unsupported target "example_edition_2018" with type "example" omitted - -# Unsupported target "example_embed" with type "example" omitted - -# Unsupported target "example_hyper" with type "example" omitted - -# Unsupported target "example_int_metrics" with type "example" omitted - -# Unsupported target "example_process_collector" with type "example" omitted - -# Unsupported target "example_push" with type "example" omitted - -rust_library( - name = "prometheus", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "protobuf", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=prometheus", - "manual", - ], - version = "0.13.0", - # buildifier: leave-alone - deps = [ - ":prometheus_build_script", - "@raze__cfg_if__1_0_0//:cfg_if", - "@raze__fnv__1_0_7//:fnv", - "@raze__lazy_static__1_4_0//:lazy_static", - "@raze__memchr__2_4_1//:memchr", - "@raze__parking_lot__0_11_2//:parking_lot", - "@raze__protobuf__2_27_1//:protobuf", - "@raze__thiserror__1_0_30//:thiserror", - ], -) diff --git a/rules/rust/remote/BUILD.prost-0.9.0.bazel b/rules/rust/remote/BUILD.prost-0.9.0.bazel deleted file mode 100644 index b9ed0d9..0000000 --- a/rules/rust/remote/BUILD.prost-0.9.0.bazel +++ /dev/null @@ -1,63 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "varint" with type "bench" omitted - -rust_library( - name = "prost", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "prost-derive", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - proc_macro_deps = [ - "@raze__prost_derive__0_9_0//:prost_derive", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=prost", - "manual", - ], - version = "0.9.0", - # buildifier: leave-alone - deps = [ - "@raze__bytes__1_1_0//:bytes", - ], -) diff --git a/rules/rust/remote/BUILD.prost-build-0.9.0.bazel b/rules/rust/remote/BUILD.prost-build-0.9.0.bazel deleted file mode 100644 index 1e78546..0000000 --- a/rules/rust/remote/BUILD.prost-build-0.9.0.bazel +++ /dev/null @@ -1,96 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "prost_build_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.9.0", - visibility = ["//visibility:private"], - deps = [ - "@raze__which__4_2_5//:which", - ], -) - -rust_library( - name = "prost_build", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=prost-build", - "manual", - ], - version = "0.9.0", - # buildifier: leave-alone - deps = [ - ":prost_build_build_script", - "@raze__bytes__1_1_0//:bytes", - "@raze__heck__0_3_3//:heck", - "@raze__itertools__0_10_3//:itertools", - "@raze__lazy_static__1_4_0//:lazy_static", - "@raze__log__0_4_14//:log", - "@raze__multimap__0_8_3//:multimap", - "@raze__petgraph__0_6_0//:petgraph", - "@raze__prost__0_9_0//:prost", - "@raze__prost_types__0_9_0//:prost_types", - "@raze__regex__1_5_5//:regex", - "@raze__tempfile__3_3_0//:tempfile", - ], -) diff --git a/rules/rust/remote/BUILD.prost-derive-0.9.0.bazel b/rules/rust/remote/BUILD.prost-derive-0.9.0.bazel deleted file mode 100644 index e7acf26..0000000 --- a/rules/rust/remote/BUILD.prost-derive-0.9.0.bazel +++ /dev/null @@ -1,59 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0" -]) - -# Generated Targets - -rust_proc_macro( - name = "prost_derive", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=prost-derive", - "manual", - ], - version = "0.9.0", - # buildifier: leave-alone - deps = [ - "@raze__anyhow__1_0_56//:anyhow", - "@raze__itertools__0_10_3//:itertools", - "@raze__proc_macro2__1_0_36//:proc_macro2", - "@raze__quote__1_0_16//:quote", - "@raze__syn__1_0_89//:syn", - ], -) diff --git a/rules/rust/remote/BUILD.prost-types-0.9.0.bazel b/rules/rust/remote/BUILD.prost-types-0.9.0.bazel deleted file mode 100644 index 8e6f572..0000000 --- a/rules/rust/remote/BUILD.prost-types-0.9.0.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "prost_types", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=prost-types", - "manual", - ], - version = "0.9.0", - # buildifier: leave-alone - deps = [ - "@raze__bytes__1_1_0//:bytes", - "@raze__prost__0_9_0//:prost", - ], -) diff --git a/rules/rust/remote/BUILD.protobuf-2.27.1.bazel b/rules/rust/remote/BUILD.protobuf-2.27.1.bazel deleted file mode 100644 index 9e14645..0000000 --- a/rules/rust/remote/BUILD.protobuf-2.27.1.bazel +++ /dev/null @@ -1,88 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "protobuf_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "2.27.1", - visibility = ["//visibility:private"], - deps = [ - ], -) - -# Unsupported target "coded_input_stream" with type "bench" omitted - -# Unsupported target "coded_output_stream" with type "bench" omitted - -rust_library( - name = "protobuf", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=protobuf", - "manual", - ], - version = "2.27.1", - # buildifier: leave-alone - deps = [ - ":protobuf_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.quote-1.0.16.bazel b/rules/rust/remote/BUILD.quote-1.0.16.bazel deleted file mode 100644 index 87fedfd..0000000 --- a/rules/rust/remote/BUILD.quote-1.0.16.bazel +++ /dev/null @@ -1,61 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "quote", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "proc-macro", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=quote", - "manual", - ], - version = "1.0.16", - # buildifier: leave-alone - deps = [ - "@raze__proc_macro2__1_0_36//:proc_macro2", - ], -) - -# Unsupported target "compiletest" with type "test" omitted - -# Unsupported target "test" with type "test" omitted diff --git a/rules/rust/remote/BUILD.rand-0.8.5.bazel b/rules/rust/remote/BUILD.rand-0.8.5.bazel deleted file mode 100644 index d5d8f67..0000000 --- a/rules/rust/remote/BUILD.rand-0.8.5.bazel +++ /dev/null @@ -1,75 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "rand", - srcs = glob(["**/*.rs"]), - aliases = { - }, - crate_features = [ - "alloc", - "default", - "getrandom", - "libc", - "rand_chacha", - "small_rng", - "std", - "std_rng", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=rand", - "manual", - ], - version = "0.8.5", - # buildifier: leave-alone - deps = [ - "@raze__rand_chacha__0_3_1//:rand_chacha", - "@raze__rand_core__0_6_3//:rand_core", - ] + selects.with_or({ - # cfg(unix) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__libc__0_2_121//:libc", - ], - "//conditions:default": [], - }), -) diff --git a/rules/rust/remote/BUILD.rand_chacha-0.3.1.bazel b/rules/rust/remote/BUILD.rand_chacha-0.3.1.bazel deleted file mode 100644 index 0b9a9de..0000000 --- a/rules/rust/remote/BUILD.rand_chacha-0.3.1.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "rand_chacha", - srcs = glob(["**/*.rs"]), - crate_features = [ - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=rand_chacha", - "manual", - ], - version = "0.3.1", - # buildifier: leave-alone - deps = [ - "@raze__ppv_lite86__0_2_16//:ppv_lite86", - "@raze__rand_core__0_6_3//:rand_core", - ], -) diff --git a/rules/rust/remote/BUILD.rand_core-0.6.3.bazel b/rules/rust/remote/BUILD.rand_core-0.6.3.bazel deleted file mode 100644 index 5c39a6a..0000000 --- a/rules/rust/remote/BUILD.rand_core-0.6.3.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "rand_core", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc", - "getrandom", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=rand_core", - "manual", - ], - version = "0.6.3", - # buildifier: leave-alone - deps = [ - "@raze__getrandom__0_2_5//:getrandom", - ], -) diff --git a/rules/rust/remote/BUILD.rayon-1.5.1.bazel b/rules/rust/remote/BUILD.rayon-1.5.1.bazel deleted file mode 100644 index af5294c..0000000 --- a/rules/rust/remote/BUILD.rayon-1.5.1.bazel +++ /dev/null @@ -1,118 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "rayon_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "1.5.1", - visibility = ["//visibility:private"], - deps = [ - "@raze__autocfg__1_1_0//:autocfg", - ], -) - -# Unsupported target "cpu_monitor" with type "example" omitted - -rust_library( - name = "rayon", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=rayon", - "manual", - ], - version = "1.5.1", - # buildifier: leave-alone - deps = [ - ":rayon_build_script", - "@raze__crossbeam_deque__0_8_1//:crossbeam_deque", - "@raze__either__1_6_1//:either", - "@raze__rayon_core__1_9_1//:rayon_core", - ], -) - -# Unsupported target "chars" with type "test" omitted - -# Unsupported target "clones" with type "test" omitted - -# Unsupported target "collect" with type "test" omitted - -# Unsupported target "cross-pool" with type "test" omitted - -# Unsupported target "debug" with type "test" omitted - -# Unsupported target "intersperse" with type "test" omitted - -# Unsupported target "issue671" with type "test" omitted - -# Unsupported target "issue671-unzip" with type "test" omitted - -# Unsupported target "iter_panic" with type "test" omitted - -# Unsupported target "named-threads" with type "test" omitted - -# Unsupported target "octillion" with type "test" omitted - -# Unsupported target "producer_split_at" with type "test" omitted - -# Unsupported target "sort-panic-safe" with type "test" omitted - -# Unsupported target "str" with type "test" omitted diff --git a/rules/rust/remote/BUILD.rayon-core-1.9.1.bazel b/rules/rust/remote/BUILD.rayon-core-1.9.1.bazel deleted file mode 100644 index 3540c1f..0000000 --- a/rules/rust/remote/BUILD.rayon-core-1.9.1.bazel +++ /dev/null @@ -1,102 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "rayon_core_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - links = "rayon-core", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "1.9.1", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "rayon_core", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=rayon-core", - "manual", - ], - version = "1.9.1", - # buildifier: leave-alone - deps = [ - ":rayon_core_build_script", - "@raze__crossbeam_channel__0_5_4//:crossbeam_channel", - "@raze__crossbeam_deque__0_8_1//:crossbeam_deque", - "@raze__crossbeam_utils__0_8_8//:crossbeam_utils", - "@raze__lazy_static__1_4_0//:lazy_static", - "@raze__num_cpus__1_13_1//:num_cpus", - ], -) - -# Unsupported target "double_init_fail" with type "test" omitted - -# Unsupported target "init_zero_threads" with type "test" omitted - -# Unsupported target "scope_join" with type "test" omitted - -# Unsupported target "scoped_threadpool" with type "test" omitted - -# Unsupported target "simple_panic" with type "test" omitted - -# Unsupported target "stack_overflow_crash" with type "test" omitted diff --git a/rules/rust/remote/BUILD.rdkafka-0.28.0.bazel b/rules/rust/remote/BUILD.rdkafka-0.28.0.bazel deleted file mode 100644 index ef3e1ff..0000000 --- a/rules/rust/remote/BUILD.rdkafka-0.28.0.bazel +++ /dev/null @@ -1,102 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "asynchronous_processing" with type "example" omitted - -# Unsupported target "at_least_once" with type "example" omitted - -# Unsupported target "example_utils" with type "example" omitted - -# Unsupported target "metadata" with type "example" omitted - -# Unsupported target "roundtrip" with type "example" omitted - -# Unsupported target "runtime_async_std" with type "example" omitted - -# Unsupported target "runtime_smol" with type "example" omitted - -# Unsupported target "simple_consumer" with type "example" omitted - -# Unsupported target "simple_producer" with type "example" omitted - -rust_library( - name = "rdkafka", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "libz", - "tokio", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - proc_macro_deps = [ - "@raze__serde_derive__1_0_136//:serde_derive", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=rdkafka", - "manual", - ], - version = "0.28.0", - # buildifier: leave-alone - deps = [ - "@raze__futures__0_3_21//:futures", - "@raze__libc__0_2_121//:libc", - "@raze__log__0_4_14//:log", - "@raze__rdkafka_sys__4_2_0_1_8_2//:rdkafka_sys", - "@raze__serde__1_0_136//:serde", - "@raze__serde_json__1_0_79//:serde_json", - "@raze__slab__0_4_5//:slab", - "@raze__tokio__1_17_0//:tokio", - ], -) - -# Unsupported target "test_admin" with type "test" omitted - -# Unsupported target "test_high_consumers" with type "test" omitted - -# Unsupported target "test_high_producers" with type "test" omitted - -# Unsupported target "test_low_consumers" with type "test" omitted - -# Unsupported target "test_low_producers" with type "test" omitted - -# Unsupported target "test_metadata" with type "test" omitted - -# Unsupported target "test_transactions" with type "test" omitted - -# Unsupported target "utils" with type "test" omitted diff --git a/rules/rust/remote/BUILD.rdkafka-sys-4.2.0+1.8.2.bazel b/rules/rust/remote/BUILD.rdkafka-sys-4.2.0+1.8.2.bazel deleted file mode 100644 index 125039c..0000000 --- a/rules/rust/remote/BUILD.rdkafka-sys-4.2.0+1.8.2.bazel +++ /dev/null @@ -1,97 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "rdkafka_sys_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - "CARGO_MAKEFLAGS": "", - }, - crate_features = [ - "libz", - "libz-sys", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - links = "rdkafka", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "4.2.0+1.8.2", - visibility = ["//visibility:private"], - deps = [ - "@raze__libz_sys__1_1_5//:libz_sys", - "@raze__pkg_config__0_3_24//:pkg_config", - ], -) - -rust_library( - name = "rdkafka_sys", - srcs = glob(["**/*.rs"]), - crate_features = [ - "libz", - "libz-sys", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=rdkafka_sys", - "manual", - ], - version = "4.2.0+1.8.2", - # buildifier: leave-alone - deps = [ - ":rdkafka_sys_build_script", - "@raze__libc__0_2_121//:libc", - "@raze__libz_sys__1_1_5//:libz_sys", - "@raze__num_enum__0_5_7//:num_enum", - ], -) - -# Unsupported target "version_check" with type "test" omitted diff --git a/rules/rust/remote/BUILD.redox_syscall-0.2.11.bazel b/rules/rust/remote/BUILD.redox_syscall-0.2.11.bazel deleted file mode 100644 index 33ec48b..0000000 --- a/rules/rust/remote/BUILD.redox_syscall-0.2.11.bazel +++ /dev/null @@ -1,64 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -alias( - name = "redox_syscall", - actual = ":syscall", - tags = [ - "cargo-raze", - "manual", - ], -) - -rust_library( - name = "syscall", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=syscall", - "manual", - ], - version = "0.2.11", - # buildifier: leave-alone - deps = [ - "@raze__bitflags__1_3_2//:bitflags", - ], -) diff --git a/rules/rust/remote/BUILD.regex-1.5.5.bazel b/rules/rust/remote/BUILD.regex-1.5.5.bazel deleted file mode 100644 index ad06752..0000000 --- a/rules/rust/remote/BUILD.regex-1.5.5.bazel +++ /dev/null @@ -1,104 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "shootout-regex-dna" with type "example" omitted - -# Unsupported target "shootout-regex-dna-bytes" with type "example" omitted - -# Unsupported target "shootout-regex-dna-cheat" with type "example" omitted - -# Unsupported target "shootout-regex-dna-replace" with type "example" omitted - -# Unsupported target "shootout-regex-dna-single" with type "example" omitted - -# Unsupported target "shootout-regex-dna-single-cheat" with type "example" omitted - -rust_library( - name = "regex", - srcs = glob(["**/*.rs"]), - crate_features = [ - "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", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=regex", - "manual", - ], - version = "1.5.5", - # buildifier: leave-alone - deps = [ - "@raze__aho_corasick__0_7_18//:aho_corasick", - "@raze__memchr__2_4_1//:memchr", - "@raze__regex_syntax__0_6_25//:regex_syntax", - ], -) - -# Unsupported target "backtrack" with type "test" omitted - -# Unsupported target "backtrack-bytes" with type "test" omitted - -# Unsupported target "backtrack-utf8bytes" with type "test" omitted - -# Unsupported target "crates-regex" with type "test" omitted - -# Unsupported target "default" with type "test" omitted - -# Unsupported target "default-bytes" with type "test" omitted - -# Unsupported target "nfa" with type "test" omitted - -# Unsupported target "nfa-bytes" with type "test" omitted - -# Unsupported target "nfa-utf8bytes" with type "test" omitted diff --git a/rules/rust/remote/BUILD.regex-automata-0.1.10.bazel b/rules/rust/remote/BUILD.regex-automata-0.1.10.bazel deleted file mode 100644 index b71f85a..0000000 --- a/rules/rust/remote/BUILD.regex-automata-0.1.10.bazel +++ /dev/null @@ -1,60 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "unencumbered", # Unlicense from expression "Unlicense OR MIT" -]) - -# Generated Targets - -rust_library( - name = "regex_automata", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "regex-syntax", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=regex-automata", - "manual", - ], - version = "0.1.10", - # buildifier: leave-alone - deps = [ - "@raze__regex_syntax__0_6_25//:regex_syntax", - ], -) - -# Unsupported target "default" with type "test" omitted diff --git a/rules/rust/remote/BUILD.regex-syntax-0.4.2.bazel b/rules/rust/remote/BUILD.regex-syntax-0.4.2.bazel deleted file mode 100644 index ef47c2c..0000000 --- a/rules/rust/remote/BUILD.regex-syntax-0.4.2.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "regex_syntax", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=regex-syntax", - "manual", - ], - version = "0.4.2", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.regex-syntax-0.6.25.bazel b/rules/rust/remote/BUILD.regex-syntax-0.6.25.bazel deleted file mode 100644 index 03d0277..0000000 --- a/rules/rust/remote/BUILD.regex-syntax-0.6.25.bazel +++ /dev/null @@ -1,65 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "bench" with type "bench" omitted - -rust_library( - name = "regex_syntax", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "unicode", - "unicode-age", - "unicode-bool", - "unicode-case", - "unicode-gencat", - "unicode-perl", - "unicode-script", - "unicode-segment", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=regex-syntax", - "manual", - ], - version = "0.6.25", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.remove_dir_all-0.5.3.bazel b/rules/rust/remote/BUILD.remove_dir_all-0.5.3.bazel deleted file mode 100644 index 33b036d..0000000 --- a/rules/rust/remote/BUILD.remove_dir_all-0.5.3.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "remove_dir_all", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=remove_dir_all", - "manual", - ], - version = "0.5.3", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.ron-0.7.0.bazel b/rules/rust/remote/BUILD.ron-0.7.0.bazel deleted file mode 100644 index 7bb6911..0000000 --- a/rules/rust/remote/BUILD.ron-0.7.0.bazel +++ /dev/null @@ -1,109 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "decode" with type "example" omitted - -# Unsupported target "decode_file" with type "example" omitted - -# Unsupported target "encode" with type "example" omitted - -# Unsupported target "transcode" with type "example" omitted - -rust_library( - name = "ron", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=ron", - "manual", - ], - version = "0.7.0", - # buildifier: leave-alone - deps = [ - "@raze__base64__0_13_0//:base64", - "@raze__bitflags__1_3_2//:bitflags", - "@raze__serde__1_0_136//:serde", - ], -) - -# Unsupported target "117_untagged_tuple_variant" with type "test" omitted - -# Unsupported target "123_enum_representation" with type "test" omitted - -# Unsupported target "129_indexmap" with type "test" omitted - -# Unsupported target "147_empty_sets_serialisation" with type "test" omitted - -# Unsupported target "240_array_pretty" with type "test" omitted - -# Unsupported target "250_variant_newtypes" with type "test" omitted - -# Unsupported target "322_escape_idents" with type "test" omitted - -# Unsupported target "big_struct" with type "test" omitted - -# Unsupported target "borrowed_str" with type "test" omitted - -# Unsupported target "comments" with type "test" omitted - -# Unsupported target "depth_limit" with type "test" omitted - -# Unsupported target "escape" with type "test" omitted - -# Unsupported target "extensions" with type "test" omitted - -# Unsupported target "floats" with type "test" omitted - -# Unsupported target "large_number" with type "test" omitted - -# Unsupported target "min_max" with type "test" omitted - -# Unsupported target "numbers" with type "test" omitted - -# Unsupported target "preserve_sequence" with type "test" omitted - -# Unsupported target "roundtrip" with type "test" omitted - -# Unsupported target "struct_integers" with type "test" omitted - -# Unsupported target "unicode" with type "test" omitted - -# Unsupported target "value" with type "test" omitted diff --git a/rules/rust/remote/BUILD.rust-ini-0.17.0.bazel b/rules/rust/remote/BUILD.rust-ini-0.17.0.bazel deleted file mode 100644 index 15cbea8..0000000 --- a/rules/rust/remote/BUILD.rust-ini-0.17.0.bazel +++ /dev/null @@ -1,68 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "test" with type "example" omitted - -alias( - name = "rust_ini", - actual = ":ini", - tags = [ - "cargo-raze", - "manual", - ], -) - -rust_library( - name = "ini", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=ini", - "manual", - ], - version = "0.17.0", - # buildifier: leave-alone - deps = [ - "@raze__cfg_if__1_0_0//:cfg_if", - "@raze__ordered_multimap__0_3_1//:ordered_multimap", - ], -) diff --git a/rules/rust/remote/BUILD.rust-stemmers-1.2.0.bazel b/rules/rust/remote/BUILD.rust-stemmers-1.2.0.bazel deleted file mode 100644 index 105b967..0000000 --- a/rules/rust/remote/BUILD.rust-stemmers-1.2.0.bazel +++ /dev/null @@ -1,60 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR BSD-3-Clause" -]) - -# Generated Targets - -# Unsupported target "stem-file" with type "example" omitted - -rust_library( - name = "rust_stemmers", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - proc_macro_deps = [ - "@raze__serde_derive__1_0_136//:serde_derive", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=rust-stemmers", - "manual", - ], - version = "1.2.0", - # buildifier: leave-alone - deps = [ - "@raze__serde__1_0_136//:serde", - ], -) diff --git a/rules/rust/remote/BUILD.ryu-1.0.9.bazel b/rules/rust/remote/BUILD.ryu-1.0.9.bazel deleted file mode 100644 index ac1a2f2..0000000 --- a/rules/rust/remote/BUILD.ryu-1.0.9.bazel +++ /dev/null @@ -1,72 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR BSL-1.0" -]) - -# Generated Targets - -# Unsupported target "bench" with type "bench" omitted - -# Unsupported target "upstream_benchmark" with type "example" omitted - -rust_library( - name = "ryu", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=ryu", - "manual", - ], - version = "1.0.9", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "common_test" with type "test" omitted - -# Unsupported target "d2s_table_test" with type "test" omitted - -# Unsupported target "d2s_test" with type "test" omitted - -# Unsupported target "exhaustive" with type "test" omitted - -# Unsupported target "f2s_test" with type "test" omitted - -# Unsupported target "s2d_test" with type "test" omitted - -# Unsupported target "s2f_test" with type "test" omitted diff --git a/rules/rust/remote/BUILD.scopeguard-1.1.0.bazel b/rules/rust/remote/BUILD.scopeguard-1.1.0.bazel deleted file mode 100644 index 7b6fb6f..0000000 --- a/rules/rust/remote/BUILD.scopeguard-1.1.0.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "readme" with type "example" omitted - -rust_library( - name = "scopeguard", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=scopeguard", - "manual", - ], - version = "1.1.0", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.serde-1.0.136.bazel b/rules/rust/remote/BUILD.serde-1.0.136.bazel deleted file mode 100644 index 25988f4..0000000 --- a/rules/rust/remote/BUILD.serde-1.0.136.bazel +++ /dev/null @@ -1,95 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "serde_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - "derive", - "serde_derive", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "1.0.136", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "serde", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "derive", - "serde_derive", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - proc_macro_deps = [ - "@raze__serde_derive__1_0_136//:serde_derive", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=serde", - "manual", - ], - version = "1.0.136", - # buildifier: leave-alone - deps = [ - ":serde_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.serde_derive-1.0.136.bazel b/rules/rust/remote/BUILD.serde_derive-1.0.136.bazel deleted file mode 100644 index 7d43aa6..0000000 --- a/rules/rust/remote/BUILD.serde_derive-1.0.136.bazel +++ /dev/null @@ -1,89 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "serde_derive_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "1.0.136", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_proc_macro( - name = "serde_derive", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=serde_derive", - "manual", - ], - version = "1.0.136", - # buildifier: leave-alone - deps = [ - ":serde_derive_build_script", - "@raze__proc_macro2__1_0_36//:proc_macro2", - "@raze__quote__1_0_16//:quote", - "@raze__syn__1_0_89//:syn", - ], -) diff --git a/rules/rust/remote/BUILD.serde_json-1.0.79.bazel b/rules/rust/remote/BUILD.serde_json-1.0.79.bazel deleted file mode 100644 index 00fde93..0000000 --- a/rules/rust/remote/BUILD.serde_json-1.0.79.bazel +++ /dev/null @@ -1,105 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "serde_json_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "1.0.79", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "serde_json", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=serde_json", - "manual", - ], - version = "1.0.79", - # buildifier: leave-alone - deps = [ - ":serde_json_build_script", - "@raze__itoa__1_0_1//:itoa", - "@raze__ryu__1_0_9//:ryu", - "@raze__serde__1_0_136//:serde", - ], -) - -# Unsupported target "compiletest" with type "test" omitted - -# Unsupported target "debug" with type "test" omitted - -# Unsupported target "lexical" with type "test" omitted - -# Unsupported target "map" with type "test" omitted - -# Unsupported target "regression" with type "test" omitted - -# Unsupported target "stream" with type "test" omitted - -# Unsupported target "test" with type "test" omitted diff --git a/rules/rust/remote/BUILD.serde_yaml-0.8.23.bazel b/rules/rust/remote/BUILD.serde_yaml-0.8.23.bazel deleted file mode 100644 index a5734c7..0000000 --- a/rules/rust/remote/BUILD.serde_yaml-0.8.23.bazel +++ /dev/null @@ -1,66 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "serde_yaml", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=serde_yaml", - "manual", - ], - version = "0.8.23", - # buildifier: leave-alone - deps = [ - "@raze__indexmap__1_8_0//:indexmap", - "@raze__ryu__1_0_9//:ryu", - "@raze__serde__1_0_136//:serde", - "@raze__yaml_rust__0_4_5//:yaml_rust", - ], -) - -# Unsupported target "test_de" with type "test" omitted - -# Unsupported target "test_error" with type "test" omitted - -# Unsupported target "test_serde" with type "test" omitted - -# Unsupported target "test_value" with type "test" omitted diff --git a/rules/rust/remote/BUILD.sha-1-0.8.2.bazel b/rules/rust/remote/BUILD.sha-1-0.8.2.bazel deleted file mode 100644 index 274388f..0000000 --- a/rules/rust/remote/BUILD.sha-1-0.8.2.bazel +++ /dev/null @@ -1,73 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "lib" with type "bench" omitted - -# Unsupported target "sha1sum" with type "example" omitted - -alias( - name = "sha_1", - actual = ":sha1", - tags = [ - "cargo-raze", - "manual", - ], -) - -rust_library( - name = "sha1", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=sha1", - "manual", - ], - version = "0.8.2", - # buildifier: leave-alone - deps = [ - "@raze__block_buffer__0_7_3//:block_buffer", - "@raze__digest__0_8_1//:digest", - "@raze__fake_simd__0_1_2//:fake_simd", - "@raze__opaque_debug__0_2_3//:opaque_debug", - ], -) - -# Unsupported target "lib" with type "test" omitted diff --git a/rules/rust/remote/BUILD.sharded-slab-0.1.4.bazel b/rules/rust/remote/BUILD.sharded-slab-0.1.4.bazel deleted file mode 100644 index cf98516..0000000 --- a/rules/rust/remote/BUILD.sharded-slab-0.1.4.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "bench" with type "bench" omitted - -rust_library( - name = "sharded_slab", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=sharded-slab", - "manual", - ], - version = "0.1.4", - # buildifier: leave-alone - deps = [ - "@raze__lazy_static__1_4_0//:lazy_static", - ], -) diff --git a/rules/rust/remote/BUILD.signal-hook-0.3.13.bazel b/rules/rust/remote/BUILD.signal-hook-0.3.13.bazel deleted file mode 100644 index 6bedb83..0000000 --- a/rules/rust/remote/BUILD.signal-hook-0.3.13.bazel +++ /dev/null @@ -1,100 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "signal_hook_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "channel", - "default", - "iterator", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.3.13", - visibility = ["//visibility:private"], - deps = [ - ], -) - -# Unsupported target "print" with type "example" omitted - -rust_library( - name = "signal_hook", - srcs = glob(["**/*.rs"]), - crate_features = [ - "channel", - "default", - "iterator", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=signal-hook", - "manual", - ], - version = "0.3.13", - # buildifier: leave-alone - deps = [ - ":signal_hook_build_script", - "@raze__libc__0_2_121//:libc", - "@raze__signal_hook_registry__1_4_0//:signal_hook_registry", - ], -) - -# Unsupported target "default" with type "test" omitted - -# Unsupported target "iterator" with type "test" omitted - -# Unsupported target "shutdown" with type "test" omitted diff --git a/rules/rust/remote/BUILD.signal-hook-registry-1.4.0.bazel b/rules/rust/remote/BUILD.signal-hook-registry-1.4.0.bazel deleted file mode 100644 index 6b02cc6..0000000 --- a/rules/rust/remote/BUILD.signal-hook-registry-1.4.0.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -rust_library( - name = "signal_hook_registry", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=signal-hook-registry", - "manual", - ], - version = "1.4.0", - # buildifier: leave-alone - deps = [ - "@raze__libc__0_2_121//:libc", - ], -) - -# Unsupported target "unregister_signal" with type "test" omitted diff --git a/rules/rust/remote/BUILD.slab-0.4.5.bazel b/rules/rust/remote/BUILD.slab-0.4.5.bazel deleted file mode 100644 index ef48f21..0000000 --- a/rules/rust/remote/BUILD.slab-0.4.5.bazel +++ /dev/null @@ -1,60 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "slab", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=slab", - "manual", - ], - version = "0.4.5", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "serde" with type "test" omitted - -# Unsupported target "slab" with type "test" omitted diff --git a/rules/rust/remote/BUILD.smallvec-1.8.0.bazel b/rules/rust/remote/BUILD.smallvec-1.8.0.bazel deleted file mode 100644 index 28ad0b8..0000000 --- a/rules/rust/remote/BUILD.smallvec-1.8.0.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "bench" with type "bench" omitted - -rust_library( - name = "smallvec", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=smallvec", - "manual", - ], - version = "1.8.0", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "macro" with type "test" omitted diff --git a/rules/rust/remote/BUILD.smawk-0.3.1.bazel b/rules/rust/remote/BUILD.smawk-0.3.1.bazel deleted file mode 100644 index c687a8c..0000000 --- a/rules/rust/remote/BUILD.smawk-0.3.1.bazel +++ /dev/null @@ -1,62 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "smawk", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=smawk", - "manual", - ], - version = "0.3.1", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "agreement" with type "test" omitted - -# Unsupported target "complexity" with type "test" omitted - -# Unsupported target "monge" with type "test" omitted - -# Unsupported target "version-numbers" with type "test" omitted diff --git a/rules/rust/remote/BUILD.socket2-0.4.4.bazel b/rules/rust/remote/BUILD.socket2-0.4.4.bazel deleted file mode 100644 index 4aaa933..0000000 --- a/rules/rust/remote/BUILD.socket2-0.4.4.bazel +++ /dev/null @@ -1,66 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "socket2", - srcs = glob(["**/*.rs"]), - aliases = { - }, - crate_features = [ - "all", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=socket2", - "manual", - ], - version = "0.4.4", - # buildifier: leave-alone - deps = [ - ] + selects.with_or({ - # cfg(unix) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__libc__0_2_121//:libc", - ], - "//conditions:default": [], - }), -) diff --git a/rules/rust/remote/BUILD.stable_deref_trait-1.2.0.bazel b/rules/rust/remote/BUILD.stable_deref_trait-1.2.0.bazel deleted file mode 100644 index 012d4a3..0000000 --- a/rules/rust/remote/BUILD.stable_deref_trait-1.2.0.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "stable_deref_trait", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc", - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=stable_deref_trait", - "manual", - ], - version = "1.2.0", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.static_assertions-1.1.0.bazel b/rules/rust/remote/BUILD.static_assertions-1.1.0.bazel deleted file mode 100644 index 75598c2..0000000 --- a/rules/rust/remote/BUILD.static_assertions-1.1.0.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "static_assertions", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=static_assertions", - "manual", - ], - version = "1.1.0", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.strsim-0.10.0.bazel b/rules/rust/remote/BUILD.strsim-0.10.0.bazel deleted file mode 100644 index 858b016..0000000 --- a/rules/rust/remote/BUILD.strsim-0.10.0.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "benches" with type "bench" omitted - -rust_library( - name = "strsim", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=strsim", - "manual", - ], - version = "0.10.0", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "lib" with type "test" omitted diff --git a/rules/rust/remote/BUILD.syn-1.0.89.bazel b/rules/rust/remote/BUILD.syn-1.0.89.bazel deleted file mode 100644 index 16cc40f..0000000 --- a/rules/rust/remote/BUILD.syn-1.0.89.bazel +++ /dev/null @@ -1,167 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "syn_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "clone-impls", - "default", - "derive", - "extra-traits", - "full", - "parsing", - "printing", - "proc-macro", - "quote", - "visit", - "visit-mut", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "1.0.89", - visibility = ["//visibility:private"], - deps = [ - ], -) - -# Unsupported target "file" with type "bench" omitted - -# Unsupported target "rust" with type "bench" omitted - -rust_library( - name = "syn", - srcs = glob(["**/*.rs"]), - crate_features = [ - "clone-impls", - "default", - "derive", - "extra-traits", - "full", - "parsing", - "printing", - "proc-macro", - "quote", - "visit", - "visit-mut", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=syn", - "manual", - ], - version = "1.0.89", - # buildifier: leave-alone - deps = [ - ":syn_build_script", - "@raze__proc_macro2__1_0_36//:proc_macro2", - "@raze__quote__1_0_16//:quote", - "@raze__unicode_xid__0_2_2//:unicode_xid", - ], -) - -# Unsupported target "regression" with type "test" omitted - -# Unsupported target "test_asyncness" with type "test" omitted - -# Unsupported target "test_attribute" with type "test" omitted - -# Unsupported target "test_derive_input" with type "test" omitted - -# Unsupported target "test_expr" with type "test" omitted - -# Unsupported target "test_generics" with type "test" omitted - -# Unsupported target "test_grouping" with type "test" omitted - -# Unsupported target "test_ident" with type "test" omitted - -# Unsupported target "test_item" with type "test" omitted - -# Unsupported target "test_iterators" with type "test" omitted - -# Unsupported target "test_lit" with type "test" omitted - -# Unsupported target "test_meta" with type "test" omitted - -# Unsupported target "test_parse_buffer" with type "test" omitted - -# Unsupported target "test_parse_stream" with type "test" omitted - -# Unsupported target "test_pat" with type "test" omitted - -# Unsupported target "test_path" with type "test" omitted - -# Unsupported target "test_precedence" with type "test" omitted - -# Unsupported target "test_receiver" with type "test" omitted - -# Unsupported target "test_round_trip" with type "test" omitted - -# Unsupported target "test_shebang" with type "test" omitted - -# Unsupported target "test_should_parse" with type "test" omitted - -# Unsupported target "test_size" with type "test" omitted - -# Unsupported target "test_stmt" with type "test" omitted - -# Unsupported target "test_token_trees" with type "test" omitted - -# Unsupported target "test_ty" with type "test" omitted - -# Unsupported target "test_visibility" with type "test" omitted - -# Unsupported target "zzz_stable" with type "test" omitted diff --git a/rules/rust/remote/BUILD.tantivy-0.17.0.bazel b/rules/rust/remote/BUILD.tantivy-0.17.0.bazel deleted file mode 100644 index 39ef90a..0000000 --- a/rules/rust/remote/BUILD.tantivy-0.17.0.bazel +++ /dev/null @@ -1,151 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "analyzer" with type "bench" omitted - -# Unsupported target "index-bench" with type "bench" omitted - -# Unsupported target "aggregation" with type "example" omitted - -# Unsupported target "basic_search" with type "example" omitted - -# Unsupported target "custom_collector" with type "example" omitted - -# Unsupported target "custom_tokenizer" with type "example" omitted - -# Unsupported target "deleting_updating_documents" with type "example" omitted - -# Unsupported target "faceted_search" with type "example" omitted - -# Unsupported target "faceted_search_with_tweaked_score" with type "example" omitted - -# Unsupported target "integer_range_search" with type "example" omitted - -# Unsupported target "iterating_docs_and_positions" with type "example" omitted - -# Unsupported target "json_field" with type "example" omitted - -# Unsupported target "multiple_producer" with type "example" omitted - -# Unsupported target "pre_tokenized_text" with type "example" omitted - -# Unsupported target "snippet" with type "example" omitted - -# Unsupported target "stop_words" with type "example" omitted - -# Unsupported target "warmer" with type "example" omitted - -# Unsupported target "working_with_json" with type "example" omitted - -rust_library( - name = "tantivy", - srcs = glob(["**/*.rs"]), - aliases = { - "@raze__tantivy_common__0_2_0//:tantivy_common": "common", - }, - crate_features = [ - "brotli", - "brotli-compression", - "default", - "fs2", - "lz4-compression", - "lz4_flex", - "memmap2", - "mmap", - "tempfile", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - proc_macro_deps = [ - "@raze__async_trait__0_1_52//:async_trait", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tantivy", - "manual", - ], - version = "0.17.0", - # buildifier: leave-alone - deps = [ - "@raze__base64__0_13_0//:base64", - "@raze__bitpacking__0_8_4//:bitpacking", - "@raze__brotli__3_3_3//:brotli", - "@raze__byteorder__1_4_3//:byteorder", - "@raze__census__0_4_0//:census", - "@raze__chrono__0_4_19//:chrono", - "@raze__crc32fast__1_3_2//:crc32fast", - "@raze__crossbeam__0_8_1//:crossbeam", - "@raze__downcast_rs__1_2_0//:downcast_rs", - "@raze__fail__0_5_0//:fail", - "@raze__fastdivide__0_4_0//:fastdivide", - "@raze__fastfield_codecs__0_1_0//:fastfield_codecs", - "@raze__fnv__1_0_7//:fnv", - "@raze__fs2__0_4_3//:fs2", - "@raze__futures__0_3_21//:futures", - "@raze__htmlescape__0_3_1//:htmlescape", - "@raze__itertools__0_10_3//:itertools", - "@raze__levenshtein_automata__0_2_1//:levenshtein_automata", - "@raze__log__0_4_14//:log", - "@raze__lru__0_7_3//:lru", - "@raze__lz4_flex__0_9_2//:lz4_flex", - "@raze__measure_time__0_8_0//:measure_time", - "@raze__memmap2__0_5_3//:memmap2", - "@raze__murmurhash32__0_2_0//:murmurhash32", - "@raze__num_cpus__1_13_1//:num_cpus", - "@raze__once_cell__1_10_0//:once_cell", - "@raze__ownedbytes__0_2_0//:ownedbytes", - "@raze__pretty_assertions__1_2_0//:pretty_assertions", - "@raze__rayon__1_5_1//:rayon", - "@raze__regex__1_5_5//:regex", - "@raze__rust_stemmers__1_2_0//:rust_stemmers", - "@raze__serde__1_0_136//:serde", - "@raze__serde_json__1_0_79//:serde_json", - "@raze__smallvec__1_8_0//:smallvec", - "@raze__stable_deref_trait__1_2_0//:stable_deref_trait", - "@raze__tantivy_bitpacker__0_1_1//:tantivy_bitpacker", - "@raze__tantivy_common__0_2_0//:tantivy_common", - "@raze__tantivy_fst__0_3_0//:tantivy_fst", - "@raze__tantivy_query_grammar__0_15_0//:tantivy_query_grammar", - "@raze__tempfile__3_3_0//:tempfile", - "@raze__thiserror__1_0_30//:thiserror", - "@raze__uuid__0_8_2//:uuid", - ], -) - -# Unsupported target "failpoints" with type "test" omitted - -# Unsupported target "mod" with type "test" omitted diff --git a/rules/rust/remote/BUILD.tantivy-bitpacker-0.1.1.bazel b/rules/rust/remote/BUILD.tantivy-bitpacker-0.1.1.bazel deleted file mode 100644 index ac362c9..0000000 --- a/rules/rust/remote/BUILD.tantivy-bitpacker-0.1.1.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "bench" with type "bench" omitted - -rust_library( - name = "tantivy_bitpacker", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tantivy-bitpacker", - "manual", - ], - version = "0.1.1", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.tantivy-common-0.1.0.bazel b/rules/rust/remote/BUILD.tantivy-common-0.1.0.bazel deleted file mode 100644 index c54b685..0000000 --- a/rules/rust/remote/BUILD.tantivy-common-0.1.0.bazel +++ /dev/null @@ -1,55 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tantivy_common", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tantivy-common", - "manual", - ], - version = "0.1.0", - # buildifier: leave-alone - deps = [ - "@raze__byteorder__1_4_3//:byteorder", - ], -) diff --git a/rules/rust/remote/BUILD.tantivy-common-0.2.0.bazel b/rules/rust/remote/BUILD.tantivy-common-0.2.0.bazel deleted file mode 100644 index a780097..0000000 --- a/rules/rust/remote/BUILD.tantivy-common-0.2.0.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tantivy_common", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tantivy-common", - "manual", - ], - version = "0.2.0", - # buildifier: leave-alone - deps = [ - "@raze__byteorder__1_4_3//:byteorder", - "@raze__ownedbytes__0_2_0//:ownedbytes", - ], -) diff --git a/rules/rust/remote/BUILD.tantivy-fst-0.3.0.bazel b/rules/rust/remote/BUILD.tantivy-fst-0.3.0.bazel deleted file mode 100644 index f43c192..0000000 --- a/rules/rust/remote/BUILD.tantivy-fst-0.3.0.bazel +++ /dev/null @@ -1,61 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "unencumbered", # Unlicense from expression "Unlicense OR MIT" -]) - -# Generated Targets - -# Unsupported target "build" with type "bench" omitted - -# Unsupported target "search" with type "bench" omitted - -rust_library( - name = "tantivy_fst", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tantivy-fst", - "manual", - ], - version = "0.3.0", - # buildifier: leave-alone - deps = [ - "@raze__byteorder__1_4_3//:byteorder", - "@raze__regex_syntax__0_4_2//:regex_syntax", - "@raze__utf8_ranges__1_0_4//:utf8_ranges", - ], -) diff --git a/rules/rust/remote/BUILD.tantivy-query-grammar-0.15.0.bazel b/rules/rust/remote/BUILD.tantivy-query-grammar-0.15.0.bazel deleted file mode 100644 index 48add78..0000000 --- a/rules/rust/remote/BUILD.tantivy-query-grammar-0.15.0.bazel +++ /dev/null @@ -1,55 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tantivy_query_grammar", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tantivy-query-grammar", - "manual", - ], - version = "0.15.0", - # buildifier: leave-alone - deps = [ - "@raze__combine__4_6_3//:combine", - ], -) diff --git a/rules/rust/remote/BUILD.tempfile-3.3.0.bazel b/rules/rust/remote/BUILD.tempfile-3.3.0.bazel deleted file mode 100644 index 0fcb477..0000000 --- a/rules/rust/remote/BUILD.tempfile-3.3.0.bazel +++ /dev/null @@ -1,76 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "tempfile", - srcs = glob(["**/*.rs"]), - aliases = { - }, - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tempfile", - "manual", - ], - version = "3.3.0", - # buildifier: leave-alone - deps = [ - "@raze__cfg_if__1_0_0//:cfg_if", - "@raze__fastrand__1_7_0//:fastrand", - "@raze__remove_dir_all__0_5_3//:remove_dir_all", - ] + selects.with_or({ - # cfg(any(unix, target_os = "wasi")) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__libc__0_2_121//:libc", - ], - "//conditions:default": [], - }), -) - -# Unsupported target "namedtempfile" with type "test" omitted - -# Unsupported target "spooled" with type "test" omitted - -# Unsupported target "tempdir" with type "test" omitted - -# Unsupported target "tempfile" with type "test" omitted diff --git a/rules/rust/remote/BUILD.termcolor-1.1.3.bazel b/rules/rust/remote/BUILD.termcolor-1.1.3.bazel deleted file mode 100644 index e826410..0000000 --- a/rules/rust/remote/BUILD.termcolor-1.1.3.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "unencumbered", # Unlicense from expression "Unlicense OR MIT" -]) - -# Generated Targets - -rust_library( - name = "termcolor", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=termcolor", - "manual", - ], - version = "1.1.3", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.textwrap-0.15.0.bazel b/rules/rust/remote/BUILD.textwrap-0.15.0.bazel deleted file mode 100644 index 8a9907e..0000000 --- a/rules/rust/remote/BUILD.textwrap-0.15.0.bazel +++ /dev/null @@ -1,73 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "indent" with type "bench" omitted - -# Unsupported target "linear" with type "bench" omitted - -# Unsupported target "hyphenation" with type "example" omitted - -# Unsupported target "termwidth" with type "example" omitted - -rust_library( - name = "textwrap", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "smawk", - "unicode-linebreak", - "unicode-width", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=textwrap", - "manual", - ], - version = "0.15.0", - # buildifier: leave-alone - deps = [ - "@raze__smawk__0_3_1//:smawk", - "@raze__unicode_linebreak__0_1_2//:unicode_linebreak", - "@raze__unicode_width__0_1_9//:unicode_width", - ], -) - -# Unsupported target "indent" with type "test" omitted - -# Unsupported target "version-numbers" with type "test" omitted diff --git a/rules/rust/remote/BUILD.thiserror-1.0.30.bazel b/rules/rust/remote/BUILD.thiserror-1.0.30.bazel deleted file mode 100644 index 5de2dba..0000000 --- a/rules/rust/remote/BUILD.thiserror-1.0.30.bazel +++ /dev/null @@ -1,81 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "thiserror", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - proc_macro_deps = [ - "@raze__thiserror_impl__1_0_30//:thiserror_impl", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=thiserror", - "manual", - ], - version = "1.0.30", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "compiletest" with type "test" omitted - -# Unsupported target "test_backtrace" with type "test" omitted - -# Unsupported target "test_display" with type "test" omitted - -# Unsupported target "test_error" with type "test" omitted - -# Unsupported target "test_expr" with type "test" omitted - -# Unsupported target "test_from" with type "test" omitted - -# Unsupported target "test_generics" with type "test" omitted - -# Unsupported target "test_lints" with type "test" omitted - -# Unsupported target "test_option" with type "test" omitted - -# Unsupported target "test_path" with type "test" omitted - -# Unsupported target "test_source" with type "test" omitted - -# Unsupported target "test_transparent" with type "test" omitted diff --git a/rules/rust/remote/BUILD.thiserror-impl-1.0.30.bazel b/rules/rust/remote/BUILD.thiserror-impl-1.0.30.bazel deleted file mode 100644 index f732df8..0000000 --- a/rules/rust/remote/BUILD.thiserror-impl-1.0.30.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_proc_macro( - name = "thiserror_impl", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=thiserror-impl", - "manual", - ], - version = "1.0.30", - # buildifier: leave-alone - deps = [ - "@raze__proc_macro2__1_0_36//:proc_macro2", - "@raze__quote__1_0_16//:quote", - "@raze__syn__1_0_89//:syn", - ], -) diff --git a/rules/rust/remote/BUILD.thread_local-1.1.4.bazel b/rules/rust/remote/BUILD.thread_local-1.1.4.bazel deleted file mode 100644 index e18c0ed..0000000 --- a/rules/rust/remote/BUILD.thread_local-1.1.4.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -# Unsupported target "thread_local" with type "bench" omitted - -rust_library( - name = "thread_local", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=thread_local", - "manual", - ], - version = "1.1.4", - # buildifier: leave-alone - deps = [ - "@raze__once_cell__1_10_0//:once_cell", - ], -) diff --git a/rules/rust/remote/BUILD.time-0.1.44.bazel b/rules/rust/remote/BUILD.time-0.1.44.bazel deleted file mode 100644 index ee4d416..0000000 --- a/rules/rust/remote/BUILD.time-0.1.44.bazel +++ /dev/null @@ -1,55 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "time", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=time", - "manual", - ], - version = "0.1.44", - # buildifier: leave-alone - deps = [ - "@raze__libc__0_2_121//:libc", - ], -) diff --git a/rules/rust/remote/BUILD.time-0.3.7.bazel b/rules/rust/remote/BUILD.time-0.3.7.bazel deleted file mode 100644 index 25fd43c..0000000 --- a/rules/rust/remote/BUILD.time-0.3.7.bazel +++ /dev/null @@ -1,73 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "benchmarks" with type "bench" omitted - -rust_library( - name = "time", - srcs = glob(["**/*.rs"]), - aliases = { - }, - crate_features = [ - "alloc", - "formatting", - "itoa", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=time", - "manual", - ], - version = "0.3.7", - # buildifier: leave-alone - deps = [ - "@raze__itoa__1_0_1//:itoa", - ] + selects.with_or({ - # cfg(target_family = "unix") - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__libc__0_2_121//:libc", - "@raze__num_threads__0_1_5//:num_threads", - ], - "//conditions:default": [], - }), -) diff --git a/rules/rust/remote/BUILD.tokio-1.17.0.bazel b/rules/rust/remote/BUILD.tokio-1.17.0.bazel deleted file mode 100644 index 81276a6..0000000 --- a/rules/rust/remote/BUILD.tokio-1.17.0.bazel +++ /dev/null @@ -1,315 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tokio", - srcs = glob(["**/*.rs"]), - aliases = { - }, - crate_features = [ - "bytes", - "default", - "fs", - "full", - "io-std", - "io-util", - "libc", - "macros", - "memchr", - "mio", - "net", - "num_cpus", - "once_cell", - "parking_lot", - "process", - "rt", - "rt-multi-thread", - "signal", - "signal-hook-registry", - "socket2", - "sync", - "time", - "tokio-macros", - "winapi", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - proc_macro_deps = [ - "@raze__tokio_macros__1_7_0//:tokio_macros", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tokio", - "manual", - ], - version = "1.17.0", - # buildifier: leave-alone - deps = [ - "@raze__bytes__1_1_0//:bytes", - "@raze__memchr__2_4_1//:memchr", - "@raze__mio__0_8_2//:mio", - "@raze__num_cpus__1_13_1//:num_cpus", - "@raze__once_cell__1_10_0//:once_cell", - "@raze__parking_lot__0_12_0//:parking_lot", - "@raze__pin_project_lite__0_2_8//:pin_project_lite", - "@raze__socket2__0_4_4//:socket2", - ] + selects.with_or({ - # cfg(unix) - ( - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__libc__0_2_121//:libc", - "@raze__signal_hook_registry__1_4_0//:signal_hook_registry", - ], - "//conditions:default": [], - }), -) - -# Unsupported target "_require_full" with type "test" omitted - -# Unsupported target "async_send_sync" with type "test" omitted - -# Unsupported target "buffered" with type "test" omitted - -# Unsupported target "fs" with type "test" omitted - -# Unsupported target "fs_copy" with type "test" omitted - -# Unsupported target "fs_dir" with type "test" omitted - -# Unsupported target "fs_file" with type "test" omitted - -# Unsupported target "fs_link" with type "test" omitted - -# Unsupported target "io_async_fd" with type "test" omitted - -# Unsupported target "io_async_read" with type "test" omitted - -# Unsupported target "io_buf_reader" with type "test" omitted - -# Unsupported target "io_buf_writer" with type "test" omitted - -# Unsupported target "io_chain" with type "test" omitted - -# Unsupported target "io_copy" with type "test" omitted - -# Unsupported target "io_copy_bidirectional" with type "test" omitted - -# Unsupported target "io_driver" with type "test" omitted - -# Unsupported target "io_driver_drop" with type "test" omitted - -# Unsupported target "io_fill_buf" with type "test" omitted - -# Unsupported target "io_lines" with type "test" omitted - -# Unsupported target "io_mem_stream" with type "test" omitted - -# Unsupported target "io_poll_aio" with type "test" omitted - -# Unsupported target "io_read" with type "test" omitted - -# Unsupported target "io_read_buf" with type "test" omitted - -# Unsupported target "io_read_exact" with type "test" omitted - -# Unsupported target "io_read_line" with type "test" omitted - -# Unsupported target "io_read_to_end" with type "test" omitted - -# Unsupported target "io_read_to_string" with type "test" omitted - -# Unsupported target "io_read_until" with type "test" omitted - -# Unsupported target "io_split" with type "test" omitted - -# Unsupported target "io_take" with type "test" omitted - -# Unsupported target "io_util_empty" with type "test" omitted - -# Unsupported target "io_write" with type "test" omitted - -# Unsupported target "io_write_all" with type "test" omitted - -# Unsupported target "io_write_all_buf" with type "test" omitted - -# Unsupported target "io_write_buf" with type "test" omitted - -# Unsupported target "io_write_int" with type "test" omitted - -# Unsupported target "join_handle_panic" with type "test" omitted - -# Unsupported target "macros_join" with type "test" omitted - -# Unsupported target "macros_pin" with type "test" omitted - -# Unsupported target "macros_select" with type "test" omitted - -# Unsupported target "macros_test" with type "test" omitted - -# Unsupported target "macros_try_join" with type "test" omitted - -# Unsupported target "named_pipe" with type "test" omitted - -# Unsupported target "net_bind_resource" with type "test" omitted - -# Unsupported target "net_lookup_host" with type "test" omitted - -# Unsupported target "no_rt" with type "test" omitted - -# Unsupported target "process_arg0" with type "test" omitted - -# Unsupported target "process_issue_2174" with type "test" omitted - -# Unsupported target "process_issue_42" with type "test" omitted - -# Unsupported target "process_kill_on_drop" with type "test" omitted - -# Unsupported target "process_raw_handle" with type "test" omitted - -# Unsupported target "process_smoke" with type "test" omitted - -# Unsupported target "rt_basic" with type "test" omitted - -# Unsupported target "rt_common" with type "test" omitted - -# Unsupported target "rt_handle_block_on" with type "test" omitted - -# Unsupported target "rt_metrics" with type "test" omitted - -# Unsupported target "rt_threaded" with type "test" omitted - -# Unsupported target "signal_ctrl_c" with type "test" omitted - -# Unsupported target "signal_drop_recv" with type "test" omitted - -# Unsupported target "signal_drop_rt" with type "test" omitted - -# Unsupported target "signal_drop_signal" with type "test" omitted - -# Unsupported target "signal_multi_rt" with type "test" omitted - -# Unsupported target "signal_no_rt" with type "test" omitted - -# Unsupported target "signal_notify_both" with type "test" omitted - -# Unsupported target "signal_twice" with type "test" omitted - -# Unsupported target "signal_usr1" with type "test" omitted - -# Unsupported target "sync_barrier" with type "test" omitted - -# Unsupported target "sync_broadcast" with type "test" omitted - -# Unsupported target "sync_errors" with type "test" omitted - -# Unsupported target "sync_mpsc" with type "test" omitted - -# Unsupported target "sync_mutex" with type "test" omitted - -# Unsupported target "sync_mutex_owned" with type "test" omitted - -# Unsupported target "sync_notify" with type "test" omitted - -# Unsupported target "sync_once_cell" with type "test" omitted - -# Unsupported target "sync_oneshot" with type "test" omitted - -# Unsupported target "sync_rwlock" with type "test" omitted - -# Unsupported target "sync_semaphore" with type "test" omitted - -# Unsupported target "sync_semaphore_owned" with type "test" omitted - -# Unsupported target "sync_watch" with type "test" omitted - -# Unsupported target "task_abort" with type "test" omitted - -# Unsupported target "task_blocking" with type "test" omitted - -# Unsupported target "task_builder" with type "test" omitted - -# Unsupported target "task_join_set" with type "test" omitted - -# Unsupported target "task_local" with type "test" omitted - -# Unsupported target "task_local_set" with type "test" omitted - -# Unsupported target "tcp_accept" with type "test" omitted - -# Unsupported target "tcp_connect" with type "test" omitted - -# Unsupported target "tcp_echo" with type "test" omitted - -# Unsupported target "tcp_into_split" with type "test" omitted - -# Unsupported target "tcp_into_std" with type "test" omitted - -# Unsupported target "tcp_peek" with type "test" omitted - -# Unsupported target "tcp_shutdown" with type "test" omitted - -# Unsupported target "tcp_socket" with type "test" omitted - -# Unsupported target "tcp_split" with type "test" omitted - -# Unsupported target "tcp_stream" with type "test" omitted - -# Unsupported target "test_clock" with type "test" omitted - -# Unsupported target "time_interval" with type "test" omitted - -# Unsupported target "time_pause" with type "test" omitted - -# Unsupported target "time_rt" with type "test" omitted - -# Unsupported target "time_sleep" with type "test" omitted - -# Unsupported target "time_timeout" with type "test" omitted - -# Unsupported target "udp" with type "test" omitted - -# Unsupported target "uds_cred" with type "test" omitted - -# Unsupported target "uds_datagram" with type "test" omitted - -# Unsupported target "uds_split" with type "test" omitted - -# Unsupported target "uds_stream" with type "test" omitted - -# Unsupported target "unwindsafe" with type "test" omitted diff --git a/rules/rust/remote/BUILD.tokio-io-timeout-1.2.0.bazel b/rules/rust/remote/BUILD.tokio-io-timeout-1.2.0.bazel deleted file mode 100644 index c9a615e..0000000 --- a/rules/rust/remote/BUILD.tokio-io-timeout-1.2.0.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "tokio_io_timeout", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tokio-io-timeout", - "manual", - ], - version = "1.2.0", - # buildifier: leave-alone - deps = [ - "@raze__pin_project_lite__0_2_8//:pin_project_lite", - "@raze__tokio__1_17_0//:tokio", - ], -) diff --git a/rules/rust/remote/BUILD.tokio-macros-1.7.0.bazel b/rules/rust/remote/BUILD.tokio-macros-1.7.0.bazel deleted file mode 100644 index 1144fe3..0000000 --- a/rules/rust/remote/BUILD.tokio-macros-1.7.0.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_proc_macro( - name = "tokio_macros", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tokio-macros", - "manual", - ], - version = "1.7.0", - # buildifier: leave-alone - deps = [ - "@raze__proc_macro2__1_0_36//:proc_macro2", - "@raze__quote__1_0_16//:quote", - "@raze__syn__1_0_89//:syn", - ], -) diff --git a/rules/rust/remote/BUILD.tokio-stream-0.1.8.bazel b/rules/rust/remote/BUILD.tokio-stream-0.1.8.bazel deleted file mode 100644 index 834d6a8..0000000 --- a/rules/rust/remote/BUILD.tokio-stream-0.1.8.bazel +++ /dev/null @@ -1,85 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tokio_stream", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "time", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tokio-stream", - "manual", - ], - version = "0.1.8", - # buildifier: leave-alone - deps = [ - "@raze__futures_core__0_3_21//:futures_core", - "@raze__pin_project_lite__0_2_8//:pin_project_lite", - "@raze__tokio__1_17_0//:tokio", - ], -) - -# Unsupported target "async_send_sync" with type "test" omitted - -# Unsupported target "stream_chain" with type "test" omitted - -# Unsupported target "stream_collect" with type "test" omitted - -# Unsupported target "stream_empty" with type "test" omitted - -# Unsupported target "stream_fuse" with type "test" omitted - -# Unsupported target "stream_iter" with type "test" omitted - -# Unsupported target "stream_merge" with type "test" omitted - -# Unsupported target "stream_once" with type "test" omitted - -# Unsupported target "stream_pending" with type "test" omitted - -# Unsupported target "stream_stream_map" with type "test" omitted - -# Unsupported target "stream_timeout" with type "test" omitted - -# Unsupported target "time_throttle" with type "test" omitted - -# Unsupported target "watch" with type "test" omitted diff --git a/rules/rust/remote/BUILD.tokio-util-0.6.9.bazel b/rules/rust/remote/BUILD.tokio-util-0.6.9.bazel deleted file mode 100644 index 96ee671..0000000 --- a/rules/rust/remote/BUILD.tokio-util-0.6.9.bazel +++ /dev/null @@ -1,96 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tokio_util", - srcs = glob(["**/*.rs"]), - crate_features = [ - "codec", - "default", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tokio-util", - "manual", - ], - version = "0.6.9", - # buildifier: leave-alone - deps = [ - "@raze__bytes__1_1_0//:bytes", - "@raze__futures_core__0_3_21//:futures_core", - "@raze__futures_sink__0_3_21//:futures_sink", - "@raze__log__0_4_14//:log", - "@raze__pin_project_lite__0_2_8//:pin_project_lite", - "@raze__tokio__1_17_0//:tokio", - ], -) - -# Unsupported target "_require_full" with type "test" omitted - -# Unsupported target "codecs" with type "test" omitted - -# Unsupported target "context" with type "test" omitted - -# Unsupported target "framed" with type "test" omitted - -# Unsupported target "framed_read" with type "test" omitted - -# Unsupported target "framed_stream" with type "test" omitted - -# Unsupported target "framed_write" with type "test" omitted - -# Unsupported target "io_reader_stream" with type "test" omitted - -# Unsupported target "io_stream_reader" with type "test" omitted - -# Unsupported target "io_sync_bridge" with type "test" omitted - -# Unsupported target "length_delimited" with type "test" omitted - -# Unsupported target "mpsc" with type "test" omitted - -# Unsupported target "poll_semaphore" with type "test" omitted - -# Unsupported target "reusable_box" with type "test" omitted - -# Unsupported target "sync_cancellation_token" with type "test" omitted - -# Unsupported target "time_delay_queue" with type "test" omitted - -# Unsupported target "udp" with type "test" omitted diff --git a/rules/rust/remote/BUILD.tokio-util-0.7.0.bazel b/rules/rust/remote/BUILD.tokio-util-0.7.0.bazel deleted file mode 100644 index a36f869..0000000 --- a/rules/rust/remote/BUILD.tokio-util-0.7.0.bazel +++ /dev/null @@ -1,96 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tokio_util", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tokio-util", - "manual", - ], - version = "0.7.0", - # buildifier: leave-alone - deps = [ - "@raze__bytes__1_1_0//:bytes", - "@raze__futures_core__0_3_21//:futures_core", - "@raze__futures_sink__0_3_21//:futures_sink", - "@raze__log__0_4_14//:log", - "@raze__pin_project_lite__0_2_8//:pin_project_lite", - "@raze__tokio__1_17_0//:tokio", - ], -) - -# Unsupported target "_require_full" with type "test" omitted - -# Unsupported target "codecs" with type "test" omitted - -# Unsupported target "context" with type "test" omitted - -# Unsupported target "framed" with type "test" omitted - -# Unsupported target "framed_read" with type "test" omitted - -# Unsupported target "framed_stream" with type "test" omitted - -# Unsupported target "framed_write" with type "test" omitted - -# Unsupported target "io_reader_stream" with type "test" omitted - -# Unsupported target "io_stream_reader" with type "test" omitted - -# Unsupported target "io_sync_bridge" with type "test" omitted - -# Unsupported target "length_delimited" with type "test" omitted - -# Unsupported target "mpsc" with type "test" omitted - -# Unsupported target "poll_semaphore" with type "test" omitted - -# Unsupported target "reusable_box" with type "test" omitted - -# Unsupported target "spawn_pinned" with type "test" omitted - -# Unsupported target "sync_cancellation_token" with type "test" omitted - -# Unsupported target "time_delay_queue" with type "test" omitted - -# Unsupported target "udp" with type "test" omitted diff --git a/rules/rust/remote/BUILD.toml-0.5.8.bazel b/rules/rust/remote/BUILD.toml-0.5.8.bazel deleted file mode 100644 index 0d8db55..0000000 --- a/rules/rust/remote/BUILD.toml-0.5.8.bazel +++ /dev/null @@ -1,64 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "decode" with type "example" omitted - -# Unsupported target "enum_external" with type "example" omitted - -# Unsupported target "toml2json" with type "example" omitted - -rust_library( - name = "toml", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=toml", - "manual", - ], - version = "0.5.8", - # buildifier: leave-alone - deps = [ - "@raze__serde__1_0_136//:serde", - ], -) - -# Unsupported target "enum_external_deserialize" with type "test" omitted diff --git a/rules/rust/remote/BUILD.tonic-0.6.2.bazel b/rules/rust/remote/BUILD.tonic-0.6.2.bazel deleted file mode 100644 index ec0b576..0000000 --- a/rules/rust/remote/BUILD.tonic-0.6.2.bazel +++ /dev/null @@ -1,97 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "decode" with type "bench" omitted - -rust_library( - name = "tonic", - srcs = glob(["**/*.rs"]), - aliases = { - "@raze__prost__0_9_0//:prost": "prost1", - }, - crate_features = [ - "async-trait", - "codegen", - "default", - "h2", - "hyper", - "hyper-timeout", - "prost", - "prost-derive", - "prost1", - "tokio", - "tower", - "tracing-futures", - "transport", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - proc_macro_deps = [ - "@raze__async_trait__0_1_52//:async_trait", - "@raze__prost_derive__0_9_0//:prost_derive", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tonic", - "manual", - ], - version = "0.6.2", - # buildifier: leave-alone - deps = [ - "@raze__async_stream__0_3_3//:async_stream", - "@raze__base64__0_13_0//:base64", - "@raze__bytes__1_1_0//:bytes", - "@raze__futures_core__0_3_21//:futures_core", - "@raze__futures_util__0_3_21//:futures_util", - "@raze__h2__0_3_12//:h2", - "@raze__http__0_2_6//:http", - "@raze__http_body__0_4_4//:http_body", - "@raze__hyper__0_14_17//:hyper", - "@raze__hyper_timeout__0_4_1//:hyper_timeout", - "@raze__percent_encoding__2_1_0//:percent_encoding", - "@raze__pin_project__1_0_10//:pin_project", - "@raze__prost__0_9_0//:prost", - "@raze__tokio__1_17_0//:tokio", - "@raze__tokio_stream__0_1_8//:tokio_stream", - "@raze__tokio_util__0_6_9//:tokio_util", - "@raze__tower__0_4_12//:tower", - "@raze__tower_layer__0_3_1//:tower_layer", - "@raze__tower_service__0_3_1//:tower_service", - "@raze__tracing__0_1_32//:tracing", - "@raze__tracing_futures__0_2_5//:tracing_futures", - ], -) diff --git a/rules/rust/remote/BUILD.tonic-build-0.6.2.bazel b/rules/rust/remote/BUILD.tonic-build-0.6.2.bazel deleted file mode 100644 index 7476058..0000000 --- a/rules/rust/remote/BUILD.tonic-build-0.6.2.bazel +++ /dev/null @@ -1,61 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tonic_build", - srcs = glob(["**/*.rs"]), - crate_features = [ - "prost", - "prost-build", - "transport", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tonic-build", - "manual", - ], - version = "0.6.2", - # buildifier: leave-alone - deps = [ - "@raze__proc_macro2__1_0_36//:proc_macro2", - "@raze__prost_build__0_9_0//:prost_build", - "@raze__quote__1_0_16//:quote", - "@raze__syn__1_0_89//:syn", - ], -) diff --git a/rules/rust/remote/BUILD.tower-0.4.12.bazel b/rules/rust/remote/BUILD.tower-0.4.12.bazel deleted file mode 100644 index 3a916ea..0000000 --- a/rules/rust/remote/BUILD.tower-0.4.12.bazel +++ /dev/null @@ -1,114 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "tower-balance" with type "example" omitted - -rust_library( - name = "tower", - srcs = glob(["**/*.rs"]), - crate_features = [ - "__common", - "balance", - "buffer", - "default", - "discover", - "futures-core", - "futures-util", - "indexmap", - "limit", - "load", - "log", - "make", - "pin-project", - "pin-project-lite", - "rand", - "ready-cache", - "slab", - "timeout", - "tokio", - "tokio-util", - "tracing", - "util", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tower", - "manual", - ], - version = "0.4.12", - # buildifier: leave-alone - deps = [ - "@raze__futures_core__0_3_21//:futures_core", - "@raze__futures_util__0_3_21//:futures_util", - "@raze__indexmap__1_8_0//:indexmap", - "@raze__pin_project__1_0_10//:pin_project", - "@raze__pin_project_lite__0_2_8//:pin_project_lite", - "@raze__rand__0_8_5//:rand", - "@raze__slab__0_4_5//:slab", - "@raze__tokio__1_17_0//:tokio", - "@raze__tokio_util__0_7_0//:tokio_util", - "@raze__tower_layer__0_3_1//:tower_layer", - "@raze__tower_service__0_3_1//:tower_service", - "@raze__tracing__0_1_32//:tracing", - ], -) - -# Unsupported target "balance" with type "test" omitted - -# Unsupported target "buffer" with type "test" omitted - -# Unsupported target "builder" with type "test" omitted - -# Unsupported target "hedge" with type "test" omitted - -# Unsupported target "limit" with type "test" omitted - -# Unsupported target "load_shed" with type "test" omitted - -# Unsupported target "ready_cache" with type "test" omitted - -# Unsupported target "retry" with type "test" omitted - -# Unsupported target "spawn_ready" with type "test" omitted - -# Unsupported target "steer" with type "test" omitted - -# Unsupported target "support" with type "test" omitted - -# Unsupported target "util" with type "test" omitted diff --git a/rules/rust/remote/BUILD.tower-http-0.2.5.bazel b/rules/rust/remote/BUILD.tower-http-0.2.5.bazel deleted file mode 100644 index 9cd25a6..0000000 --- a/rules/rust/remote/BUILD.tower-http-0.2.5.bazel +++ /dev/null @@ -1,69 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tower_http", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "set-header", - "trace", - "tracing", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tower-http", - "manual", - ], - version = "0.2.5", - # buildifier: leave-alone - deps = [ - "@raze__bitflags__1_3_2//:bitflags", - "@raze__bytes__1_1_0//:bytes", - "@raze__futures_core__0_3_21//:futures_core", - "@raze__futures_util__0_3_21//:futures_util", - "@raze__http__0_2_6//:http", - "@raze__http_body__0_4_4//:http_body", - "@raze__http_range_header__0_3_0//:http_range_header", - "@raze__pin_project_lite__0_2_8//:pin_project_lite", - "@raze__tower_layer__0_3_1//:tower_layer", - "@raze__tower_service__0_3_1//:tower_service", - "@raze__tracing__0_1_32//:tracing", - ], -) diff --git a/rules/rust/remote/BUILD.tower-layer-0.3.1.bazel b/rules/rust/remote/BUILD.tower-layer-0.3.1.bazel deleted file mode 100644 index fde07d8..0000000 --- a/rules/rust/remote/BUILD.tower-layer-0.3.1.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tower_layer", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tower-layer", - "manual", - ], - version = "0.3.1", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.tower-service-0.3.1.bazel b/rules/rust/remote/BUILD.tower-service-0.3.1.bazel deleted file mode 100644 index 56b4558..0000000 --- a/rules/rust/remote/BUILD.tower-service-0.3.1.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tower_service", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tower-service", - "manual", - ], - version = "0.3.1", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.tracing-0.1.32.bazel b/rules/rust/remote/BUILD.tracing-0.1.32.bazel deleted file mode 100644 index 7e347b4..0000000 --- a/rules/rust/remote/BUILD.tracing-0.1.32.bazel +++ /dev/null @@ -1,100 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "global_subscriber" with type "bench" omitted - -# Unsupported target "no_subscriber" with type "bench" omitted - -# Unsupported target "subscriber" with type "bench" omitted - -rust_library( - name = "tracing", - srcs = glob(["**/*.rs"]), - crate_features = [ - "attributes", - "default", - "log", - "std", - "tracing-attributes", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - proc_macro_deps = [ - "@raze__tracing_attributes__0_1_20//:tracing_attributes", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tracing", - "manual", - ], - version = "0.1.32", - # buildifier: leave-alone - deps = [ - "@raze__cfg_if__1_0_0//:cfg_if", - "@raze__log__0_4_14//:log", - "@raze__pin_project_lite__0_2_8//:pin_project_lite", - "@raze__tracing_core__0_1_23//:tracing_core", - ], -) - -# Unsupported target "enabled" with type "test" omitted - -# Unsupported target "event" with type "test" omitted - -# Unsupported target "filter_caching_is_lexically_scoped" with type "test" omitted - -# Unsupported target "filters_are_not_reevaluated_for_the_same_span" with type "test" omitted - -# Unsupported target "filters_are_reevaluated_for_different_call_sites" with type "test" omitted - -# Unsupported target "filters_dont_leak" with type "test" omitted - -# Unsupported target "macro_imports" with type "test" omitted - -# Unsupported target "macros" with type "test" omitted - -# Unsupported target "macros_incompatible_concat" with type "test" omitted - -# Unsupported target "macros_redefined_core" with type "test" omitted - -# Unsupported target "max_level_hint" with type "test" omitted - -# Unsupported target "multiple_max_level_hints" with type "test" omitted - -# Unsupported target "span" with type "test" omitted - -# Unsupported target "subscriber" with type "test" omitted diff --git a/rules/rust/remote/BUILD.tracing-appender-0.2.2.bazel b/rules/rust/remote/BUILD.tracing-appender-0.2.2.bazel deleted file mode 100644 index c5fb95e..0000000 --- a/rules/rust/remote/BUILD.tracing-appender-0.2.2.bazel +++ /dev/null @@ -1,57 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tracing_appender", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tracing-appender", - "manual", - ], - version = "0.2.2", - # buildifier: leave-alone - deps = [ - "@raze__crossbeam_channel__0_5_4//:crossbeam_channel", - "@raze__time__0_3_7//:time", - "@raze__tracing_subscriber__0_3_9//:tracing_subscriber", - ], -) diff --git a/rules/rust/remote/BUILD.tracing-attributes-0.1.20.bazel b/rules/rust/remote/BUILD.tracing-attributes-0.1.20.bazel deleted file mode 100644 index c711fb0..0000000 --- a/rules/rust/remote/BUILD.tracing-attributes-0.1.20.bazel +++ /dev/null @@ -1,77 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_proc_macro( - name = "tracing_attributes", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tracing-attributes", - "manual", - ], - version = "0.1.20", - # buildifier: leave-alone - deps = [ - "@raze__proc_macro2__1_0_36//:proc_macro2", - "@raze__quote__1_0_16//:quote", - "@raze__syn__1_0_89//:syn", - ], -) - -# Unsupported target "async_fn" with type "test" omitted - -# Unsupported target "destructuring" with type "test" omitted - -# Unsupported target "err" with type "test" omitted - -# Unsupported target "fields" with type "test" omitted - -# Unsupported target "instrument" with type "test" omitted - -# Unsupported target "levels" with type "test" omitted - -# Unsupported target "names" with type "test" omitted - -# Unsupported target "ret" with type "test" omitted - -# Unsupported target "support" with type "test" omitted - -# Unsupported target "targets" with type "test" omitted diff --git a/rules/rust/remote/BUILD.tracing-core-0.1.23.bazel b/rules/rust/remote/BUILD.tracing-core-0.1.23.bazel deleted file mode 100644 index 0278eab..0000000 --- a/rules/rust/remote/BUILD.tracing-core-0.1.23.bazel +++ /dev/null @@ -1,65 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tracing_core", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "lazy_static", - "std", - "valuable", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tracing-core", - "manual", - ], - version = "0.1.23", - # buildifier: leave-alone - deps = [ - "@raze__lazy_static__1_4_0//:lazy_static", - ], -) - -# Unsupported target "dispatch" with type "test" omitted - -# Unsupported target "global_dispatch" with type "test" omitted - -# Unsupported target "macros" with type "test" omitted diff --git a/rules/rust/remote/BUILD.tracing-futures-0.2.5.bazel b/rules/rust/remote/BUILD.tracing-futures-0.2.5.bazel deleted file mode 100644 index c87d991..0000000 --- a/rules/rust/remote/BUILD.tracing-futures-0.2.5.bazel +++ /dev/null @@ -1,64 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tracing_futures", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "pin-project", - "std", - "std-future", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tracing-futures", - "manual", - ], - version = "0.2.5", - # buildifier: leave-alone - deps = [ - "@raze__pin_project__1_0_10//:pin_project", - "@raze__tracing__0_1_32//:tracing", - ], -) - -# Unsupported target "std_future" with type "test" omitted - -# Unsupported target "support" with type "test" omitted diff --git a/rules/rust/remote/BUILD.tracing-log-0.1.2.bazel b/rules/rust/remote/BUILD.tracing-log-0.1.2.bazel deleted file mode 100644 index a19a4f9..0000000 --- a/rules/rust/remote/BUILD.tracing-log-0.1.2.bazel +++ /dev/null @@ -1,63 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tracing_log", - srcs = glob(["**/*.rs"]), - crate_features = [ - "log-tracer", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tracing-log", - "manual", - ], - version = "0.1.2", - # buildifier: leave-alone - deps = [ - "@raze__lazy_static__1_4_0//:lazy_static", - "@raze__log__0_4_14//:log", - "@raze__tracing_core__0_1_23//:tracing_core", - ], -) - -# Unsupported target "log_tracer" with type "test" omitted - -# Unsupported target "reexport_log_crate" with type "test" omitted diff --git a/rules/rust/remote/BUILD.tracing-serde-0.1.3.bazel b/rules/rust/remote/BUILD.tracing-serde-0.1.3.bazel deleted file mode 100644 index a6b0cf2..0000000 --- a/rules/rust/remote/BUILD.tracing-serde-0.1.3.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "tracing_serde", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tracing-serde", - "manual", - ], - version = "0.1.3", - # buildifier: leave-alone - deps = [ - "@raze__serde__1_0_136//:serde", - "@raze__tracing_core__0_1_23//:tracing_core", - ], -) diff --git a/rules/rust/remote/BUILD.tracing-subscriber-0.3.9.bazel b/rules/rust/remote/BUILD.tracing-subscriber-0.3.9.bazel deleted file mode 100644 index fbf6309..0000000 --- a/rules/rust/remote/BUILD.tracing-subscriber-0.3.9.bazel +++ /dev/null @@ -1,129 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "enter" with type "bench" omitted - -# Unsupported target "filter" with type "bench" omitted - -# Unsupported target "filter_log" with type "bench" omitted - -# Unsupported target "fmt" with type "bench" omitted - -rust_library( - name = "tracing_subscriber", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc", - "ansi", - "ansi_term", - "default", - "env-filter", - "fmt", - "json", - "lazy_static", - "matchers", - "regex", - "registry", - "serde", - "serde_json", - "sharded-slab", - "smallvec", - "std", - "thread_local", - "tracing", - "tracing-log", - "tracing-serde", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=tracing-subscriber", - "manual", - ], - version = "0.3.9", - # buildifier: leave-alone - deps = [ - "@raze__ansi_term__0_12_1//:ansi_term", - "@raze__lazy_static__1_4_0//:lazy_static", - "@raze__matchers__0_1_0//:matchers", - "@raze__regex__1_5_5//:regex", - "@raze__serde__1_0_136//:serde", - "@raze__serde_json__1_0_79//:serde_json", - "@raze__sharded_slab__0_1_4//:sharded_slab", - "@raze__smallvec__1_8_0//:smallvec", - "@raze__thread_local__1_1_4//:thread_local", - "@raze__tracing__0_1_32//:tracing", - "@raze__tracing_core__0_1_23//:tracing_core", - "@raze__tracing_log__0_1_2//:tracing_log", - "@raze__tracing_serde__0_1_3//:tracing_serde", - ], -) - -# Unsupported target "cached_layer_filters_dont_break_other_layers" with type "test" omitted - -# Unsupported target "duplicate_spans" with type "test" omitted - -# Unsupported target "field_filter" with type "test" omitted - -# Unsupported target "filter" with type "test" omitted - -# Unsupported target "filter_log" with type "test" omitted - -# Unsupported target "fmt_max_level_hint" with type "test" omitted - -# Unsupported target "hinted_layer_filters_dont_break_other_layers" with type "test" omitted - -# Unsupported target "layer_filter_interests_are_cached" with type "test" omitted - -# Unsupported target "layer_filters" with type "test" omitted - -# Unsupported target "multiple_layer_filter_interests_cached" with type "test" omitted - -# Unsupported target "registry_max_level_hint" with type "test" omitted - -# Unsupported target "registry_with_subscriber" with type "test" omitted - -# Unsupported target "reload" with type "test" omitted - -# Unsupported target "same_len_filters" with type "test" omitted - -# Unsupported target "support" with type "test" omitted - -# Unsupported target "unhinted_layer_filters_dont_break_other_layers" with type "test" omitted - -# Unsupported target "utils" with type "test" omitted diff --git a/rules/rust/remote/BUILD.try-lock-0.2.3.bazel b/rules/rust/remote/BUILD.try-lock-0.2.3.bazel deleted file mode 100644 index feb2041..0000000 --- a/rules/rust/remote/BUILD.try-lock-0.2.3.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "try_lock", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=try-lock", - "manual", - ], - version = "0.2.3", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.twox-hash-1.6.2.bazel b/rules/rust/remote/BUILD.twox-hash-1.6.2.bazel deleted file mode 100644 index d7017d3..0000000 --- a/rules/rust/remote/BUILD.twox-hash-1.6.2.bazel +++ /dev/null @@ -1,83 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_binary( - # Prefix bin name to disambiguate from (probable) collision with lib name - # N.B.: The exact form of this is subject to change. - name = "cargo_bin_hash_file", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/bin/hash_file.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=hash_file", - "manual", - ], - version = "1.6.2", - # buildifier: leave-alone - deps = [ - ":twox_hash", - "@raze__cfg_if__1_0_0//:cfg_if", - "@raze__static_assertions__1_1_0//:static_assertions", - ], -) - -rust_library( - name = "twox_hash", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=twox-hash", - "manual", - ], - version = "1.6.2", - # buildifier: leave-alone - deps = [ - "@raze__cfg_if__1_0_0//:cfg_if", - "@raze__static_assertions__1_1_0//:static_assertions", - ], -) diff --git a/rules/rust/remote/BUILD.typenum-1.15.0.bazel b/rules/rust/remote/BUILD.typenum-1.15.0.bazel deleted file mode 100644 index 52a71b1..0000000 --- a/rules/rust/remote/BUILD.typenum-1.15.0.bazel +++ /dev/null @@ -1,86 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "typenum_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build/main.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "1.15.0", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "typenum", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=typenum", - "manual", - ], - version = "1.15.0", - # buildifier: leave-alone - deps = [ - ":typenum_build_script", - ], -) - -# Unsupported target "test" with type "test" omitted diff --git a/rules/rust/remote/BUILD.ucd-trie-0.1.3.bazel b/rules/rust/remote/BUILD.ucd-trie-0.1.3.bazel deleted file mode 100644 index 0444ec2..0000000 --- a/rules/rust/remote/BUILD.ucd-trie-0.1.3.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "bench" with type "bench" omitted - -rust_library( - name = "ucd_trie", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=ucd-trie", - "manual", - ], - version = "0.1.3", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.unicode-linebreak-0.1.2.bazel b/rules/rust/remote/BUILD.unicode-linebreak-0.1.2.bazel deleted file mode 100644 index 2fff714..0000000 --- a/rules/rust/remote/BUILD.unicode-linebreak-0.1.2.bazel +++ /dev/null @@ -1,85 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "unicode_linebreak_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.1.2", - visibility = ["//visibility:private"], - deps = [ - "@raze__regex__1_5_5//:regex", - ], -) - -rust_library( - name = "unicode_linebreak", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=unicode-linebreak", - "manual", - ], - version = "0.1.2", - # buildifier: leave-alone - deps = [ - ":unicode_linebreak_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.unicode-segmentation-1.9.0.bazel b/rules/rust/remote/BUILD.unicode-segmentation-1.9.0.bazel deleted file mode 100644 index bdfd9fa..0000000 --- a/rules/rust/remote/BUILD.unicode-segmentation-1.9.0.bazel +++ /dev/null @@ -1,60 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "graphemes" with type "bench" omitted - -# Unsupported target "unicode_words" with type "bench" omitted - -# Unsupported target "word_bounds" with type "bench" omitted - -rust_library( - name = "unicode_segmentation", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=unicode-segmentation", - "manual", - ], - version = "1.9.0", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.unicode-width-0.1.9.bazel b/rules/rust/remote/BUILD.unicode-width-0.1.9.bazel deleted file mode 100644 index e9a387c..0000000 --- a/rules/rust/remote/BUILD.unicode-width-0.1.9.bazel +++ /dev/null @@ -1,55 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "unicode_width", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=unicode-width", - "manual", - ], - version = "0.1.9", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.unicode-xid-0.2.2.bazel b/rules/rust/remote/BUILD.unicode-xid-0.2.2.bazel deleted file mode 100644 index b27458b..0000000 --- a/rules/rust/remote/BUILD.unicode-xid-0.2.2.bazel +++ /dev/null @@ -1,59 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "xid" with type "bench" omitted - -rust_library( - name = "unicode_xid", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=unicode-xid", - "manual", - ], - version = "0.2.2", - # buildifier: leave-alone - deps = [ - ], -) - -# Unsupported target "exhaustive_tests" with type "test" omitted diff --git a/rules/rust/remote/BUILD.utf8-ranges-1.0.4.bazel b/rules/rust/remote/BUILD.utf8-ranges-1.0.4.bazel deleted file mode 100644 index 70e27f4..0000000 --- a/rules/rust/remote/BUILD.utf8-ranges-1.0.4.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "unencumbered", # Unlicense from expression "Unlicense OR MIT" -]) - -# Generated Targets - -# Unsupported target "bench" with type "bench" omitted - -rust_library( - name = "utf8_ranges", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=utf8-ranges", - "manual", - ], - version = "1.0.4", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.uuid-0.8.2.bazel b/rules/rust/remote/BUILD.uuid-0.8.2.bazel deleted file mode 100644 index 9f91119..0000000 --- a/rules/rust/remote/BUILD.uuid-0.8.2.bazel +++ /dev/null @@ -1,71 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR MIT" -]) - -# Generated Targets - -# Unsupported target "format_str" with type "bench" omitted - -# Unsupported target "invalid_parse_str" with type "bench" omitted - -# Unsupported target "mod" with type "bench" omitted - -# Unsupported target "serde_support" with type "bench" omitted - -# Unsupported target "valid_parse_str" with type "bench" omitted - -rust_library( - name = "uuid", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "getrandom", - "serde", - "std", - "v4", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=uuid", - "manual", - ], - version = "0.8.2", - # buildifier: leave-alone - deps = [ - "@raze__getrandom__0_2_5//:getrandom", - "@raze__serde__1_0_136//:serde", - ], -) diff --git a/rules/rust/remote/BUILD.valuable-0.1.0.bazel b/rules/rust/remote/BUILD.valuable-0.1.0.bazel deleted file mode 100644 index c9f2129..0000000 --- a/rules/rust/remote/BUILD.valuable-0.1.0.bazel +++ /dev/null @@ -1,96 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "valuable_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "alloc", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.1.0", - visibility = ["//visibility:private"], - deps = [ - ], -) - -# Unsupported target "structable" with type "bench" omitted - -# Unsupported target "derive" with type "example" omitted - -# Unsupported target "hello_world" with type "example" omitted - -# Unsupported target "print" with type "example" omitted - -rust_library( - name = "valuable", - srcs = glob(["**/*.rs"]), - crate_features = [ - "alloc", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=valuable", - "manual", - ], - version = "0.1.0", - # buildifier: leave-alone - deps = [ - ":valuable_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.vcpkg-0.2.15.bazel b/rules/rust/remote/BUILD.vcpkg-0.2.15.bazel deleted file mode 100644 index 796c0ab..0000000 --- a/rules/rust/remote/BUILD.vcpkg-0.2.15.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "vcpkg", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=vcpkg", - "manual", - ], - version = "0.2.15", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.version_check-0.9.4.bazel b/rules/rust/remote/BUILD.version_check-0.9.4.bazel deleted file mode 100644 index 155a7ce..0000000 --- a/rules/rust/remote/BUILD.version_check-0.9.4.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "version_check", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=version_check", - "manual", - ], - version = "0.9.4", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.want-0.3.0.bazel b/rules/rust/remote/BUILD.want-0.3.0.bazel deleted file mode 100644 index e9da0c6..0000000 --- a/rules/rust/remote/BUILD.want-0.3.0.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -# Unsupported target "throughput" with type "bench" omitted - -rust_library( - name = "want", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=want", - "manual", - ], - version = "0.3.0", - # buildifier: leave-alone - deps = [ - "@raze__log__0_4_14//:log", - "@raze__try_lock__0_2_3//:try_lock", - ], -) diff --git a/rules/rust/remote/BUILD.wasi-0.10.0+wasi-snapshot-preview1.bazel b/rules/rust/remote/BUILD.wasi-0.10.0+wasi-snapshot-preview1.bazel deleted file mode 100644 index 15e025e..0000000 --- a/rules/rust/remote/BUILD.wasi-0.10.0+wasi-snapshot-preview1.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR (Apache-2.0 OR MIT)" -]) - -# Generated Targets - -rust_library( - name = "wasi", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=wasi", - "manual", - ], - version = "0.10.0+wasi-snapshot-preview1", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel b/rules/rust/remote/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel deleted file mode 100644 index 22f769b..0000000 --- a/rules/rust/remote/BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel +++ /dev/null @@ -1,56 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # Apache-2.0 from expression "Apache-2.0 OR (Apache-2.0 OR MIT)" -]) - -# Generated Targets - -rust_library( - name = "wasi", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=wasi", - "manual", - ], - version = "0.11.0+wasi-snapshot-preview1", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.wasm-bindgen-0.2.79.bazel b/rules/rust/remote/BUILD.wasm-bindgen-0.2.79.bazel deleted file mode 100644 index 392d7f2..0000000 --- a/rules/rust/remote/BUILD.wasm-bindgen-0.2.79.bazel +++ /dev/null @@ -1,106 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "wasm_bindgen_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "default", - "spans", - "std", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.2.79", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "wasm_bindgen", - srcs = glob(["**/*.rs"]), - crate_features = [ - "default", - "spans", - "std", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - proc_macro_deps = [ - "@raze__wasm_bindgen_macro__0_2_79//:wasm_bindgen_macro", - ], - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=wasm-bindgen", - "manual", - ], - version = "0.2.79", - # buildifier: leave-alone - deps = [ - ":wasm_bindgen_build_script", - "@raze__cfg_if__1_0_0//:cfg_if", - ], -) - -# Unsupported target "headless" with type "test" omitted - -# Unsupported target "must_use" with type "test" omitted - -# Unsupported target "non_wasm" with type "test" omitted - -# Unsupported target "std-crate-no-std-dep" with type "test" omitted - -# Unsupported target "unwrap_throw" with type "test" omitted - -# Unsupported target "wasm" with type "test" omitted diff --git a/rules/rust/remote/BUILD.wasm-bindgen-backend-0.2.79.bazel b/rules/rust/remote/BUILD.wasm-bindgen-backend-0.2.79.bazel deleted file mode 100644 index 5695c37..0000000 --- a/rules/rust/remote/BUILD.wasm-bindgen-backend-0.2.79.bazel +++ /dev/null @@ -1,62 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "wasm_bindgen_backend", - srcs = glob(["**/*.rs"]), - crate_features = [ - "spans", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=wasm-bindgen-backend", - "manual", - ], - version = "0.2.79", - # buildifier: leave-alone - deps = [ - "@raze__bumpalo__3_9_1//:bumpalo", - "@raze__lazy_static__1_4_0//:lazy_static", - "@raze__log__0_4_14//:log", - "@raze__proc_macro2__1_0_36//:proc_macro2", - "@raze__quote__1_0_16//:quote", - "@raze__syn__1_0_89//:syn", - "@raze__wasm_bindgen_shared__0_2_79//:wasm_bindgen_shared", - ], -) diff --git a/rules/rust/remote/BUILD.wasm-bindgen-macro-0.2.79.bazel b/rules/rust/remote/BUILD.wasm-bindgen-macro-0.2.79.bazel deleted file mode 100644 index f558fc5..0000000 --- a/rules/rust/remote/BUILD.wasm-bindgen-macro-0.2.79.bazel +++ /dev/null @@ -1,59 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_proc_macro( - name = "wasm_bindgen_macro", - srcs = glob(["**/*.rs"]), - crate_features = [ - "spans", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=wasm-bindgen-macro", - "manual", - ], - version = "0.2.79", - # buildifier: leave-alone - deps = [ - "@raze__quote__1_0_16//:quote", - "@raze__wasm_bindgen_macro_support__0_2_79//:wasm_bindgen_macro_support", - ], -) - -# Unsupported target "ui" with type "test" omitted diff --git a/rules/rust/remote/BUILD.wasm-bindgen-macro-support-0.2.79.bazel b/rules/rust/remote/BUILD.wasm-bindgen-macro-support-0.2.79.bazel deleted file mode 100644 index 57163f7..0000000 --- a/rules/rust/remote/BUILD.wasm-bindgen-macro-support-0.2.79.bazel +++ /dev/null @@ -1,60 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "wasm_bindgen_macro_support", - srcs = glob(["**/*.rs"]), - crate_features = [ - "spans", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=wasm-bindgen-macro-support", - "manual", - ], - version = "0.2.79", - # buildifier: leave-alone - deps = [ - "@raze__proc_macro2__1_0_36//:proc_macro2", - "@raze__quote__1_0_16//:quote", - "@raze__syn__1_0_89//:syn", - "@raze__wasm_bindgen_backend__0_2_79//:wasm_bindgen_backend", - "@raze__wasm_bindgen_shared__0_2_79//:wasm_bindgen_shared", - ], -) diff --git a/rules/rust/remote/BUILD.wasm-bindgen-shared-0.2.79.bazel b/rules/rust/remote/BUILD.wasm-bindgen-shared-0.2.79.bazel deleted file mode 100644 index 242c11b..0000000 --- a/rules/rust/remote/BUILD.wasm-bindgen-shared-0.2.79.bazel +++ /dev/null @@ -1,85 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "wasm_bindgen_shared_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - links = "wasm_bindgen", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.2.79", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "wasm_bindgen_shared", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=wasm-bindgen-shared", - "manual", - ], - version = "0.2.79", - # buildifier: leave-alone - deps = [ - ":wasm_bindgen_shared_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.which-4.2.5.bazel b/rules/rust/remote/BUILD.which-4.2.5.bazel deleted file mode 100644 index 9feee76..0000000 --- a/rules/rust/remote/BUILD.which-4.2.5.bazel +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT" -]) - -# Generated Targets - -rust_library( - name = "which", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=which", - "manual", - ], - version = "4.2.5", - # buildifier: leave-alone - deps = [ - "@raze__either__1_6_1//:either", - "@raze__libc__0_2_121//:libc", - ], -) - -# Unsupported target "basic" with type "test" omitted diff --git a/rules/rust/remote/BUILD.winapi-0.3.9.bazel b/rules/rust/remote/BUILD.winapi-0.3.9.bazel deleted file mode 100644 index 360f818..0000000 --- a/rules/rust/remote/BUILD.winapi-0.3.9.bazel +++ /dev/null @@ -1,154 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "winapi_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - "cfg", - "consoleapi", - "errhandlingapi", - "evntrace", - "fileapi", - "handleapi", - "in6addr", - "inaddr", - "ioapiset", - "minwinbase", - "minwindef", - "mswsock", - "namedpipeapi", - "ntdef", - "ntsecapi", - "ntstatus", - "processenv", - "processthreadsapi", - "profileapi", - "std", - "synchapi", - "sysinfoapi", - "threadpoollegacyapiset", - "timezoneapi", - "winbase", - "wincon", - "windef", - "winerror", - "winioctl", - "winnt", - "winsock2", - "winuser", - "ws2def", - "ws2ipdef", - "ws2tcpip", - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.3.9", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "winapi", - srcs = glob(["**/*.rs"]), - crate_features = [ - "cfg", - "consoleapi", - "errhandlingapi", - "evntrace", - "fileapi", - "handleapi", - "in6addr", - "inaddr", - "ioapiset", - "minwinbase", - "minwindef", - "mswsock", - "namedpipeapi", - "ntdef", - "ntsecapi", - "ntstatus", - "processenv", - "processthreadsapi", - "profileapi", - "std", - "synchapi", - "sysinfoapi", - "threadpoollegacyapiset", - "timezoneapi", - "winbase", - "wincon", - "windef", - "winerror", - "winioctl", - "winnt", - "winsock2", - "winuser", - "ws2def", - "ws2ipdef", - "ws2tcpip", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=winapi", - "manual", - ], - version = "0.3.9", - # buildifier: leave-alone - deps = [ - ":winapi_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel b/rules/rust/remote/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel deleted file mode 100644 index c682e0e..0000000 --- a/rules/rust/remote/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel +++ /dev/null @@ -1,84 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "winapi_i686_pc_windows_gnu_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.4.0", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "winapi_i686_pc_windows_gnu", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=winapi-i686-pc-windows-gnu", - "manual", - ], - version = "0.4.0", - # buildifier: leave-alone - deps = [ - ":winapi_i686_pc_windows_gnu_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.winapi-util-0.1.5.bazel b/rules/rust/remote/BUILD.winapi-util-0.1.5.bazel deleted file mode 100644 index b3f338a..0000000 --- a/rules/rust/remote/BUILD.winapi-util-0.1.5.bazel +++ /dev/null @@ -1,54 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "unencumbered", # Unlicense from expression "Unlicense OR MIT" -]) - -# Generated Targets - -rust_library( - name = "winapi_util", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=winapi-util", - "manual", - ], - version = "0.1.5", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel b/rules/rust/remote/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel deleted file mode 100644 index 17a01b7..0000000 --- a/rules/rust/remote/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel +++ /dev/null @@ -1,84 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "winapi_x86_64_pc_windows_gnu_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.4.0", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "winapi_x86_64_pc_windows_gnu", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2015", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=winapi-x86_64-pc-windows-gnu", - "manual", - ], - version = "0.4.0", - # buildifier: leave-alone - deps = [ - ":winapi_x86_64_pc_windows_gnu_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.windows-sys-0.32.0.bazel b/rules/rust/remote/BUILD.windows-sys-0.32.0.bazel deleted file mode 100644 index b42a6a5..0000000 --- a/rules/rust/remote/BUILD.windows-sys-0.32.0.bazel +++ /dev/null @@ -1,61 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -rust_library( - name = "windows_sys", - srcs = glob(["**/*.rs"]), - crate_features = [ - "Win32", - "Win32_Foundation", - "Win32_System", - "Win32_System_LibraryLoader", - "Win32_System_SystemServices", - "Win32_System_WindowsProgramming", - "default", - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=windows-sys", - "manual", - ], - version = "0.32.0", - # buildifier: leave-alone - deps = [ - ], -) diff --git a/rules/rust/remote/BUILD.windows_aarch64_msvc-0.32.0.bazel b/rules/rust/remote/BUILD.windows_aarch64_msvc-0.32.0.bazel deleted file mode 100644 index dd5f203..0000000 --- a/rules/rust/remote/BUILD.windows_aarch64_msvc-0.32.0.bazel +++ /dev/null @@ -1,84 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "windows_aarch64_msvc_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.32.0", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "windows_aarch64_msvc", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=windows_aarch64_msvc", - "manual", - ], - version = "0.32.0", - # buildifier: leave-alone - deps = [ - ":windows_aarch64_msvc_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.windows_i686_gnu-0.32.0.bazel b/rules/rust/remote/BUILD.windows_i686_gnu-0.32.0.bazel deleted file mode 100644 index c73c3e8..0000000 --- a/rules/rust/remote/BUILD.windows_i686_gnu-0.32.0.bazel +++ /dev/null @@ -1,84 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "windows_i686_gnu_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.32.0", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "windows_i686_gnu", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=windows_i686_gnu", - "manual", - ], - version = "0.32.0", - # buildifier: leave-alone - deps = [ - ":windows_i686_gnu_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.windows_i686_msvc-0.32.0.bazel b/rules/rust/remote/BUILD.windows_i686_msvc-0.32.0.bazel deleted file mode 100644 index 0e92eaa..0000000 --- a/rules/rust/remote/BUILD.windows_i686_msvc-0.32.0.bazel +++ /dev/null @@ -1,84 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "windows_i686_msvc_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.32.0", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "windows_i686_msvc", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=windows_i686_msvc", - "manual", - ], - version = "0.32.0", - # buildifier: leave-alone - deps = [ - ":windows_i686_msvc_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.windows_x86_64_gnu-0.32.0.bazel b/rules/rust/remote/BUILD.windows_x86_64_gnu-0.32.0.bazel deleted file mode 100644 index 45013e5..0000000 --- a/rules/rust/remote/BUILD.windows_x86_64_gnu-0.32.0.bazel +++ /dev/null @@ -1,84 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "windows_x86_64_gnu_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.32.0", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "windows_x86_64_gnu", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=windows_x86_64_gnu", - "manual", - ], - version = "0.32.0", - # buildifier: leave-alone - deps = [ - ":windows_x86_64_gnu_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.windows_x86_64_msvc-0.32.0.bazel b/rules/rust/remote/BUILD.windows_x86_64_msvc-0.32.0.bazel deleted file mode 100644 index 233b51a..0000000 --- a/rules/rust/remote/BUILD.windows_x86_64_msvc-0.32.0.bazel +++ /dev/null @@ -1,84 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "windows_x86_64_msvc_build_script", - srcs = glob(["**/*.rs"]), - build_script_env = { - }, - crate_features = [ - ], - crate_root = "build.rs", - data = glob(["**"]), - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.32.0", - visibility = ["//visibility:private"], - deps = [ - ], -) - -rust_library( - name = "windows_x86_64_msvc", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=windows_x86_64_msvc", - "manual", - ], - version = "0.32.0", - # buildifier: leave-alone - deps = [ - ":windows_x86_64_msvc_build_script", - ], -) diff --git a/rules/rust/remote/BUILD.yaml-rust-0.4.5.bazel b/rules/rust/remote/BUILD.yaml-rust-0.4.5.bazel deleted file mode 100644 index a1734e5..0000000 --- a/rules/rust/remote/BUILD.yaml-rust-0.4.5.bazel +++ /dev/null @@ -1,63 +0,0 @@ -""" -@generated -cargo-raze crate build file. - -DO NOT EDIT! Replaced on runs of cargo-raze -""" - -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# buildifier: disable=load -load( - "@rules_rust//rust:defs.bzl", - "rust_binary", - "rust_library", - "rust_proc_macro", - "rust_test", -) - -package(default_visibility = [ - # Public for visibility by "@raze__crate__version//" targets. - # - # Prefer access through "//rules/rust", which limits external - # visibility to explicit Cargo.toml dependencies. - "//visibility:public", -]) - -licenses([ - "notice", # MIT from expression "MIT OR Apache-2.0" -]) - -# Generated Targets - -# Unsupported target "dump_yaml" with type "example" omitted - -rust_library( - name = "yaml_rust", - srcs = glob(["**/*.rs"]), - crate_features = [ - ], - crate_root = "src/lib.rs", - data = [], - edition = "2018", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "crate-name=yaml-rust", - "manual", - ], - version = "0.4.5", - # buildifier: leave-alone - deps = [ - "@raze__linked_hash_map__0_5_4//:linked_hash_map", - ], -) - -# Unsupported target "quickcheck" with type "test" omitted - -# Unsupported target "spec_test" with type "test" omitted - -# Unsupported target "test_round_trip" with type "test" omitted diff --git a/rules/rust/rustfmt.toml b/rules/rust/rustfmt.toml deleted file mode 100644 index cd016f6..0000000 --- a/rules/rust/rustfmt.toml +++ /dev/null @@ -1 +0,0 @@ -max_width = 180 From 51ae1fc5d971d2f9ede1107c785b17e1269ed1cc Mon Sep 17 00:00:00 2001 From: the-superpirate Date: Fri, 2 Sep 2022 19:10:05 +0300 Subject: [PATCH 2/5] - [nexus] Use non-vendored version of nlptools - [nexus] Remove protos GitOrigin-RevId: 1bc308a6c3056b2509952e4b53122f4fd1a9960d --- nexus/bot/handlers/seed.py | 2 +- nexus/hub/services/mutual_aid_service.py | 2 +- nexus/meta_api/proto/documents_service_pb2.py | 79 ---------- .../proto/documents_service_pb2_grpc.py | 135 ------------------ nexus/meta_api/proto/search_service_pb2.py | 59 -------- .../meta_api/proto/search_service_pb2_grpc.py | 67 --------- nexus/views/telegram/base_view_builder.py | 8 +- 7 files changed, 6 insertions(+), 346 deletions(-) delete mode 100644 nexus/meta_api/proto/documents_service_pb2.py delete mode 100644 nexus/meta_api/proto/documents_service_pb2_grpc.py delete mode 100644 nexus/meta_api/proto/search_service_pb2.py delete mode 100644 nexus/meta_api/proto/search_service_pb2_grpc.py diff --git a/nexus/bot/handlers/seed.py b/nexus/bot/handlers/seed.py index 0c5eb60..e1a5494 100644 --- a/nexus/bot/handlers/seed.py +++ b/nexus/bot/handlers/seed.py @@ -1,11 +1,11 @@ import io import re +from izihawa_nlptools.utils import cast_string_to_single_string from library.telegram.base import RequestContext from library.telegram.common import close_button from library.telegram.utils import safe_execution from nexus.translations import t -from nlptools.izihawa_nlptools.utils import cast_string_to_single_string from telethon import events from telethon.tl.types import DocumentAttributeFilename diff --git a/nexus/hub/services/mutual_aid_service.py b/nexus/hub/services/mutual_aid_service.py index 0713a4c..761d460 100644 --- a/nexus/hub/services/mutual_aid_service.py +++ b/nexus/hub/services/mutual_aid_service.py @@ -8,9 +8,9 @@ from datetime import ( ) from aiokit import AioThing +from izihawa_nlptools.regex import DOI_REGEX from library.telegram.utils import safe_execution from nexus.views.telegram.scimag import ScimagViewBuilder -from nlptools.izihawa_nlptools.regex import DOI_REGEX class MutualAidService(AioThing): diff --git a/nexus/meta_api/proto/documents_service_pb2.py b/nexus/meta_api/proto/documents_service_pb2.py deleted file mode 100644 index 0d05535..0000000 --- a/nexus/meta_api/proto/documents_service_pb2.py +++ /dev/null @@ -1,79 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: nexus/meta_api/proto/documents_service.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from nexus.models.proto import \ - typed_document_pb2 as nexus_dot_models_dot_proto_dot_typed__document__pb2 - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n,nexus/meta_api/proto/documents_service.proto\x12\x14nexus.meta_api.proto\x1a\'nexus/models/proto/typed_document.proto\"`\n\x0bRollRequest\x12\x1f\n\x0bindex_alias\x18\x01 \x01(\tR\nindexAlias\x12\x14\n\x05query\x18\x02 \x01(\tR\x05query\x12\x1a\n\x08language\x18\x03 \x01(\tR\x08language\"X\n\x0cRollResponse\x12H\n\x0etyped_document\x18\x01 \x01(\x0b\x32!.nexus.models.proto.TypedDocumentR\rtypedDocument\"b\n\x10TopMissedRequest\x12\x12\n\x04page\x18\x01 \x01(\rR\x04page\x12\x1b\n\tpage_size\x18\x02 \x01(\rR\x08pageSize\x12\x1d\n\ndoi_prefix\x18\x03 \x01(\tR\tdoiPrefix\"z\n\x11TopMissedResponse\x12J\n\x0ftyped_documents\x18\x01 \x03(\x0b\x32!.nexus.models.proto.TypedDocumentR\x0etypedDocuments\x12\x19\n\x08has_next\x18\x02 \x01(\x08R\x07hasNext\"\x88\x01\n\x14TypedDocumentRequest\x12\x1f\n\x0bindex_alias\x18\x01 \x01(\tR\nindexAlias\x12\x1f\n\x0b\x64ocument_id\x18\x02 \x01(\x04R\ndocumentId\x12\x1a\n\x08position\x18\x03 \x01(\rR\x08position\x12\x12\n\x04mode\x18\x04 \x01(\tR\x04mode2\x95\x02\n\tDocuments\x12V\n\x03get\x12*.nexus.meta_api.proto.TypedDocumentRequest\x1a!.nexus.models.proto.TypedDocument\"\x00\x12O\n\x04roll\x12!.nexus.meta_api.proto.RollRequest\x1a\".nexus.meta_api.proto.RollResponse\"\x00\x12_\n\ntop_missed\x12&.nexus.meta_api.proto.TopMissedRequest\x1a\'.nexus.meta_api.proto.TopMissedResponse\"\x00\x62\x06proto3') - - - -_ROLLREQUEST = DESCRIPTOR.message_types_by_name['RollRequest'] -_ROLLRESPONSE = DESCRIPTOR.message_types_by_name['RollResponse'] -_TOPMISSEDREQUEST = DESCRIPTOR.message_types_by_name['TopMissedRequest'] -_TOPMISSEDRESPONSE = DESCRIPTOR.message_types_by_name['TopMissedResponse'] -_TYPEDDOCUMENTREQUEST = DESCRIPTOR.message_types_by_name['TypedDocumentRequest'] -RollRequest = _reflection.GeneratedProtocolMessageType('RollRequest', (_message.Message,), { - 'DESCRIPTOR' : _ROLLREQUEST, - '__module__' : 'nexus.meta_api.proto.documents_service_pb2' - # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.RollRequest) - }) -_sym_db.RegisterMessage(RollRequest) - -RollResponse = _reflection.GeneratedProtocolMessageType('RollResponse', (_message.Message,), { - 'DESCRIPTOR' : _ROLLRESPONSE, - '__module__' : 'nexus.meta_api.proto.documents_service_pb2' - # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.RollResponse) - }) -_sym_db.RegisterMessage(RollResponse) - -TopMissedRequest = _reflection.GeneratedProtocolMessageType('TopMissedRequest', (_message.Message,), { - 'DESCRIPTOR' : _TOPMISSEDREQUEST, - '__module__' : 'nexus.meta_api.proto.documents_service_pb2' - # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.TopMissedRequest) - }) -_sym_db.RegisterMessage(TopMissedRequest) - -TopMissedResponse = _reflection.GeneratedProtocolMessageType('TopMissedResponse', (_message.Message,), { - 'DESCRIPTOR' : _TOPMISSEDRESPONSE, - '__module__' : 'nexus.meta_api.proto.documents_service_pb2' - # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.TopMissedResponse) - }) -_sym_db.RegisterMessage(TopMissedResponse) - -TypedDocumentRequest = _reflection.GeneratedProtocolMessageType('TypedDocumentRequest', (_message.Message,), { - 'DESCRIPTOR' : _TYPEDDOCUMENTREQUEST, - '__module__' : 'nexus.meta_api.proto.documents_service_pb2' - # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.TypedDocumentRequest) - }) -_sym_db.RegisterMessage(TypedDocumentRequest) - -_DOCUMENTS = DESCRIPTOR.services_by_name['Documents'] -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - _ROLLREQUEST._serialized_start=111 - _ROLLREQUEST._serialized_end=207 - _ROLLRESPONSE._serialized_start=209 - _ROLLRESPONSE._serialized_end=297 - _TOPMISSEDREQUEST._serialized_start=299 - _TOPMISSEDREQUEST._serialized_end=397 - _TOPMISSEDRESPONSE._serialized_start=399 - _TOPMISSEDRESPONSE._serialized_end=521 - _TYPEDDOCUMENTREQUEST._serialized_start=524 - _TYPEDDOCUMENTREQUEST._serialized_end=660 - _DOCUMENTS._serialized_start=663 - _DOCUMENTS._serialized_end=940 -# @@protoc_insertion_point(module_scope) diff --git a/nexus/meta_api/proto/documents_service_pb2_grpc.py b/nexus/meta_api/proto/documents_service_pb2_grpc.py deleted file mode 100644 index 8935f94..0000000 --- a/nexus/meta_api/proto/documents_service_pb2_grpc.py +++ /dev/null @@ -1,135 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -"""Client and server classes corresponding to protobuf-defined services.""" -import grpc -from nexus.meta_api.proto import \ - documents_service_pb2 as \ - nexus_dot_meta__api_dot_proto_dot_documents__service__pb2 -from nexus.models.proto import \ - typed_document_pb2 as nexus_dot_models_dot_proto_dot_typed__document__pb2 - - -class DocumentsStub(object): - """Missing associated documentation comment in .proto file.""" - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.get = channel.unary_unary( - '/nexus.meta_api.proto.Documents/get', - request_serializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TypedDocumentRequest.SerializeToString, - response_deserializer=nexus_dot_models_dot_proto_dot_typed__document__pb2.TypedDocument.FromString, - ) - self.roll = channel.unary_unary( - '/nexus.meta_api.proto.Documents/roll', - request_serializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.RollRequest.SerializeToString, - response_deserializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.RollResponse.FromString, - ) - self.top_missed = channel.unary_unary( - '/nexus.meta_api.proto.Documents/top_missed', - request_serializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TopMissedRequest.SerializeToString, - response_deserializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TopMissedResponse.FromString, - ) - - -class DocumentsServicer(object): - """Missing associated documentation comment in .proto file.""" - - def get(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def roll(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def top_missed(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_DocumentsServicer_to_server(servicer, server): - rpc_method_handlers = { - 'get': grpc.unary_unary_rpc_method_handler( - servicer.get, - request_deserializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TypedDocumentRequest.FromString, - response_serializer=nexus_dot_models_dot_proto_dot_typed__document__pb2.TypedDocument.SerializeToString, - ), - 'roll': grpc.unary_unary_rpc_method_handler( - servicer.roll, - request_deserializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.RollRequest.FromString, - response_serializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.RollResponse.SerializeToString, - ), - 'top_missed': grpc.unary_unary_rpc_method_handler( - servicer.top_missed, - request_deserializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TopMissedRequest.FromString, - response_serializer=nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TopMissedResponse.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'nexus.meta_api.proto.Documents', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - - - # This class is part of an EXPERIMENTAL API. -class Documents(object): - """Missing associated documentation comment in .proto file.""" - - @staticmethod - def get(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/nexus.meta_api.proto.Documents/get', - nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TypedDocumentRequest.SerializeToString, - nexus_dot_models_dot_proto_dot_typed__document__pb2.TypedDocument.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def roll(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/nexus.meta_api.proto.Documents/roll', - nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.RollRequest.SerializeToString, - nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.RollResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) - - @staticmethod - def top_missed(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/nexus.meta_api.proto.Documents/top_missed', - nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TopMissedRequest.SerializeToString, - nexus_dot_meta__api_dot_proto_dot_documents__service__pb2.TopMissedResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/nexus/meta_api/proto/search_service_pb2.py b/nexus/meta_api/proto/search_service_pb2.py deleted file mode 100644 index 0259016..0000000 --- a/nexus/meta_api/proto/search_service_pb2.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: nexus/meta_api/proto/search_service.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from nexus.models.proto import \ - typed_document_pb2 as nexus_dot_models_dot_proto_dot_typed__document__pb2 - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)nexus/meta_api/proto/search_service.proto\x12\x14nexus.meta_api.proto\x1a\'nexus/models/proto/typed_document.proto\"\x8c\x01\n\x0eScoredDocument\x12H\n\x0etyped_document\x18\x01 \x01(\x0b\x32!.nexus.models.proto.TypedDocumentR\rtypedDocument\x12\x14\n\x05score\x18\x02 \x01(\x01R\x05score\x12\x1a\n\x08position\x18\x03 \x01(\rR\x08position\"\xc1\x01\n\rSearchRequest\x12#\n\rindex_aliases\x18\x01 \x03(\tR\x0cindexAliases\x12\x14\n\x05query\x18\x02 \x01(\tR\x05query\x12\x12\n\x04page\x18\x03 \x01(\rR\x04page\x12\x1b\n\tpage_size\x18\x04 \x01(\rR\x08pageSize\x12\x1a\n\x08language\x18\x05 \x01(\tR\x08language\x12(\n\x10with_user_intent\x18\x06 \x01(\x08R\x0ewithUserIntent\"\x92\x01\n\x0eSearchResponse\x12O\n\x10scored_documents\x18\x01 \x03(\x0b\x32$.nexus.meta_api.proto.ScoredDocumentR\x0fscoredDocuments\x12\x19\n\x08has_next\x18\x02 \x01(\x08R\x07hasNext\x12\x14\n\x05\x63ount\x18\x03 \x01(\rR\x05\x63ount2_\n\x06Search\x12U\n\x06search\x12#.nexus.meta_api.proto.SearchRequest\x1a$.nexus.meta_api.proto.SearchResponse\"\x00\x62\x06proto3') - - - -_SCOREDDOCUMENT = DESCRIPTOR.message_types_by_name['ScoredDocument'] -_SEARCHREQUEST = DESCRIPTOR.message_types_by_name['SearchRequest'] -_SEARCHRESPONSE = DESCRIPTOR.message_types_by_name['SearchResponse'] -ScoredDocument = _reflection.GeneratedProtocolMessageType('ScoredDocument', (_message.Message,), { - 'DESCRIPTOR' : _SCOREDDOCUMENT, - '__module__' : 'nexus.meta_api.proto.search_service_pb2' - # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.ScoredDocument) - }) -_sym_db.RegisterMessage(ScoredDocument) - -SearchRequest = _reflection.GeneratedProtocolMessageType('SearchRequest', (_message.Message,), { - 'DESCRIPTOR' : _SEARCHREQUEST, - '__module__' : 'nexus.meta_api.proto.search_service_pb2' - # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.SearchRequest) - }) -_sym_db.RegisterMessage(SearchRequest) - -SearchResponse = _reflection.GeneratedProtocolMessageType('SearchResponse', (_message.Message,), { - 'DESCRIPTOR' : _SEARCHRESPONSE, - '__module__' : 'nexus.meta_api.proto.search_service_pb2' - # @@protoc_insertion_point(class_scope:nexus.meta_api.proto.SearchResponse) - }) -_sym_db.RegisterMessage(SearchResponse) - -_SEARCH = DESCRIPTOR.services_by_name['Search'] -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - _SCOREDDOCUMENT._serialized_start=109 - _SCOREDDOCUMENT._serialized_end=249 - _SEARCHREQUEST._serialized_start=252 - _SEARCHREQUEST._serialized_end=445 - _SEARCHRESPONSE._serialized_start=448 - _SEARCHRESPONSE._serialized_end=594 - _SEARCH._serialized_start=596 - _SEARCH._serialized_end=691 -# @@protoc_insertion_point(module_scope) diff --git a/nexus/meta_api/proto/search_service_pb2_grpc.py b/nexus/meta_api/proto/search_service_pb2_grpc.py deleted file mode 100644 index 5aa394a..0000000 --- a/nexus/meta_api/proto/search_service_pb2_grpc.py +++ /dev/null @@ -1,67 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -"""Client and server classes corresponding to protobuf-defined services.""" -import grpc -from nexus.meta_api.proto import \ - search_service_pb2 as \ - nexus_dot_meta__api_dot_proto_dot_search__service__pb2 - - -class SearchStub(object): - """Missing associated documentation comment in .proto file.""" - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.search = channel.unary_unary( - '/nexus.meta_api.proto.Search/search', - request_serializer=nexus_dot_meta__api_dot_proto_dot_search__service__pb2.SearchRequest.SerializeToString, - response_deserializer=nexus_dot_meta__api_dot_proto_dot_search__service__pb2.SearchResponse.FromString, - ) - - -class SearchServicer(object): - """Missing associated documentation comment in .proto file.""" - - def search(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_SearchServicer_to_server(servicer, server): - rpc_method_handlers = { - 'search': grpc.unary_unary_rpc_method_handler( - servicer.search, - request_deserializer=nexus_dot_meta__api_dot_proto_dot_search__service__pb2.SearchRequest.FromString, - response_serializer=nexus_dot_meta__api_dot_proto_dot_search__service__pb2.SearchResponse.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'nexus.meta_api.proto.Search', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - - - # This class is part of an EXPERIMENTAL API. -class Search(object): - """Missing associated documentation comment in .proto file.""" - - @staticmethod - def search(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/nexus.meta_api.proto.Search/search', - nexus_dot_meta__api_dot_proto_dot_search__service__pb2.SearchRequest.SerializeToString, - nexus_dot_meta__api_dot_proto_dot_search__service__pb2.SearchResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/nexus/views/telegram/base_view_builder.py b/nexus/views/telegram/base_view_builder.py index 6f01134..1ffe62e 100644 --- a/nexus/views/telegram/base_view_builder.py +++ b/nexus/views/telegram/base_view_builder.py @@ -5,13 +5,13 @@ from typing import Optional from urllib.parse import quote import numpy as np -from izihawa_types.datetime import CustomDatetime -from library.telegram.common import close_button -from nexus.translations import t -from nlptools.izihawa_nlptools.utils import ( +from izihawa_nlptools.utils import ( despace_full, escape_format, ) +from izihawa_types.datetime import CustomDatetime +from library.telegram.common import close_button +from nexus.translations import t from telethon import Button from .common import ( From 7c1bb06b1b227a14b4bdb43ba67e26fb5226d3f2 Mon Sep 17 00:00:00 2001 From: the-superpirate Date: Tue, 6 Sep 2022 19:33:57 +0300 Subject: [PATCH 3/5] - [nexus] Development GitOrigin-RevId: ccfd55db266862ed70f1299aaf62500765b03cc4 --- library/telegram/base.py | 2 + .../bot => library/telegram}/promotioner.py | 18 +- library/telegram/utils.py | 13 +- nexus/actions/crossref_api.py | 6 + nexus/bot/BUILD.bazel | 2 + nexus/bot/application.py | 12 +- nexus/bot/configs/__init__.py | 1 - nexus/bot/configs/promotions.yaml | 36 ---- nexus/bot/handlers/close.py | 4 +- nexus/bot/handlers/download.py | 15 +- nexus/bot/handlers/profile.py | 3 +- nexus/bot/handlers/roll.py | 7 +- nexus/bot/handlers/search.py | 9 +- nexus/bot/handlers/submit.py | 16 +- nexus/bot/handlers/view.py | 5 +- nexus/bot/widgets/search_widget.py | 5 +- nexus/hub/aioclient/aioclient.py | 4 +- nexus/hub/configs/pylon.yaml | 11 ++ nexus/hub/proto/submitter_service.proto | 2 +- nexus/hub/services/base.py | 44 ++++- nexus/hub/services/delivery.py | 22 ++- nexus/hub/services/submitter.py | 173 +++++++----------- nexus/meta_api/main.py | 26 ++- nexus/meta_api/services/base.py | 13 -- nexus/meta_api/services/documents.py | 13 -- nexus/meta_api/services/search.py | 26 ++- nexus/pipe/configs/base.yaml | 2 +- nexus/pipe/consumers/__init__.py | 8 +- nexus/pipe/consumers/base.py | 58 +----- .../consumers/cross_references_consumer.py | 9 +- .../consumers/document_operations_consumer.py | 5 - nexus/pylon/client.py | 5 +- nexus/pylon/configs/pylon.yaml | 1 + nexus/pylon/drivers/base.py | 2 +- nexus/pylon/drivers/browser.py | 1 - nexus/pylon/matcher.py | 1 + nexus/pylon/resolvers/doi_org_request.py | 20 ++ nexus/pylon/source.py | 6 +- nexus/translations/translations.yaml | 4 +- nexus/views/telegram/document_list_widget.py | 6 + nexus/views/telegram/progress_bar.py | 4 +- rules/python/requirements-lock.txt | 2 +- 42 files changed, 300 insertions(+), 322 deletions(-) rename {nexus/bot => library/telegram}/promotioner.py (61%) delete mode 100644 nexus/bot/configs/promotions.yaml diff --git a/library/telegram/base.py b/library/telegram/base.py index 28a7fb2..d87f8b5 100644 --- a/library/telegram/base.py +++ b/library/telegram/base.py @@ -39,6 +39,7 @@ class BaseTelegramClient(AioThing): bot_token: Optional[str] = None, mtproxy: Optional[dict] = None, flood_sleep_threshold: int = 60, + catch_up: bool = False, ): super().__init__() if not app_id or not app_hash: @@ -50,6 +51,7 @@ class BaseTelegramClient(AioThing): self._get_session(database), app_id, app_hash, + catch_up=catch_up, flood_sleep_threshold=flood_sleep_threshold, **self._get_proxy(mtproxy=mtproxy), ) diff --git a/nexus/bot/promotioner.py b/library/telegram/promotioner.py similarity index 61% rename from nexus/bot/promotioner.py rename to library/telegram/promotioner.py index b6e4aab..e53bcc5 100644 --- a/nexus/bot/promotioner.py +++ b/library/telegram/promotioner.py @@ -5,9 +5,17 @@ class Promotioner: """ Promotioner is used to select promotion randomly based on weights of every promotion. """ - def __init__(self, promotions: list[dict], default_promotion_index: int = 0): + def __init__( + self, + promotions: list[dict], + default_promotion_index: int = 0, + promotion_vars: dict = None, + ): self.promotions = promotions self.default_promotion_index = default_promotion_index + if not promotion_vars: + promotion_vars = {} + self.promotion_vars = promotion_vars self.partial_sums: list = [self.promotions[0]['weight']] for promotion in self.promotions[1:]: self.partial_sums.append(promotion['weight'] + self.partial_sums[-1]) @@ -18,11 +26,11 @@ class Promotioner: if partial_sum <= pivot: continue if language in promotion['texts']: - return promotion['texts'][language] + return promotion['texts'][language].format(**self.promotion_vars) elif promotion.get('local', False): default_promotion = self.promotions[self.default_promotion_index] if language in default_promotion['texts']: - return default_promotion['texts'][language] - return default_promotion['texts']['en'] + return default_promotion['texts'][language].format(**self.promotion_vars) + return default_promotion['texts']['en'].format(**self.promotion_vars) else: - return promotion['texts']['en'] + return promotion['texts']['en'].format(**self.promotion_vars) diff --git a/library/telegram/utils.py b/library/telegram/utils.py index 008714b..ddc49c1 100644 --- a/library/telegram/utils.py +++ b/library/telegram/utils.py @@ -19,6 +19,7 @@ async def safe_execution( error_log=error_log, on_fail: Optional[Callable[[], Awaitable]] = None, level=logging.WARNING, + is_logging_enabled: bool = True ): try: try: @@ -34,13 +35,17 @@ async def safe_execution( errors.MessageIdInvalidError, errors.ChatAdminRequiredError, ) as e: - error_log(e, level=level) + if is_logging_enabled: + error_log(e, level=level) + traceback.print_exc() except Exception as e: - error_log(e, level=level) - traceback.print_exc() + if is_logging_enabled: + error_log(e, level=level) + traceback.print_exc() if on_fail: await on_fail() except events.StopPropagation: raise except Exception as e: - error_log(e, level=level) + if is_logging_enabled: + error_log(e, level=level) diff --git a/nexus/actions/crossref_api.py b/nexus/actions/crossref_api.py index 25d7be0..cfef142 100644 --- a/nexus/actions/crossref_api.py +++ b/nexus/actions/crossref_api.py @@ -76,6 +76,11 @@ def clean_issns(issns): return cleaned_issns +def clean_isbns(isbns): + if isbns: + return isbns + + def extract_title(title, subtitle): return ': '.join(filter(lambda x: bool(x), [title.strip(), subtitle.strip()])) @@ -90,6 +95,7 @@ class ToScimagPbAction(BaseAction): doi=item['DOI'], issue=item.get('issue'), issns=clean_issns(item.get('ISSN')), + isbns=clean_isbns(item.get('ISBN')), language=item.get('language'), referenced_by_count=item.get('is-referenced-by-count'), references=extract_references(item.get('reference')), diff --git a/nexus/bot/BUILD.bazel b/nexus/bot/BUILD.bazel index 94285c7..10f7aad 100644 --- a/nexus/bot/BUILD.bazel +++ b/nexus/bot/BUILD.bazel @@ -42,6 +42,8 @@ py3_image( "//nexus/hub/aioclient", "//nexus/meta_api/aioclient", "//nexus/models/proto:proto_py", + "//nexus/promotions", + "//nexus/translations", "//nexus/views/telegram", requirement("izihawa_nlptools"), requirement("izihawa_utils"), diff --git a/nexus/bot/application.py b/nexus/bot/application.py index 25d665f..7b815db 100644 --- a/nexus/bot/application.py +++ b/nexus/bot/application.py @@ -2,10 +2,11 @@ from aiokit import AioRootThing from idm.api.aioclient import IdmApiGrpcClient from izihawa_utils.importlib import import_object from library.telegram.base import BaseTelegramClient -from nexus.bot.promotioner import Promotioner +from library.telegram.promotioner import Promotioner from nexus.bot.user_manager import UserManager from nexus.hub.aioclient import HubGrpcClient from nexus.meta_api.aioclient import MetaApiGrpcClient +from nexus.promotions import get_promotions class TelegramApplication(AioRootThing): @@ -18,6 +19,7 @@ class TelegramApplication(AioRootThing): bot_token=self.config['telegram']['bot_token'], database=self.config['telegram'].get('database'), mtproxy=self.config['telegram'].get('mtproxy'), + catch_up=self.config['telegram'].get('catch_up', False) ) self.hub_client = HubGrpcClient(endpoint=self.config['hub']['endpoint']) self.starts.append(self.hub_client) @@ -28,7 +30,13 @@ class TelegramApplication(AioRootThing): self.meta_api_client = MetaApiGrpcClient(endpoint=self.config['meta_api']['endpoint']) self.starts.append(self.meta_api_client) - self.promotioner = Promotioner(promotions=self.config['promotions']) + self.promotioner = Promotioner( + promotions=get_promotions(), + promotion_vars=dict( + related_channel=self.config['telegram']['related_channel'], + twitter_contact_url=self.config['twitter']['contact_url'], + ) + ) self.user_manager = UserManager() self._handlers = [] diff --git a/nexus/bot/configs/__init__.py b/nexus/bot/configs/__init__.py index 4a7ab92..a954719 100644 --- a/nexus/bot/configs/__init__.py +++ b/nexus/bot/configs/__init__.py @@ -7,7 +7,6 @@ def get_config(): 'nexus/bot/configs/base.yaml', 'nexus/bot/configs/%s.yaml?' % env.type, 'nexus/bot/configs/logging.yaml', - 'nexus/bot/configs/promotions.yaml', ], env_prefix='NEXUS_BOT') diff --git a/nexus/bot/configs/promotions.yaml b/nexus/bot/configs/promotions.yaml deleted file mode 100644 index 233962a..0000000 --- a/nexus/bot/configs/promotions.yaml +++ /dev/null @@ -1,36 +0,0 @@ ---- - -promotions: - - texts: - en: 💬 The victory of humanity is inevitable - weight: 1 - - texts: - en: 💬 Shall build Standard Template Construct - weight: 1 - - texts: - en: 💬 Gaining knowledge is the only purpose of life - weight: 1 - - texts: - en: 💬 Knowledge cannot belong - weight: 1 - - texts: - en: 💬 Obey the path of discovery - weight: 1 - - texts: - en: 💬 Research is the only and ultimate goal - weight: 1 - - texts: - en: ✋ Have a subscription to paid articles? [Help researchers!](https://t.me/nexus_aaron) - ru: ✋ Есть доступ к платным статьям? [Помоги ученым!](https://t.me/nexus_aaron) - weight: 25 - - texts: - en: ✋ Help us, become a seeder of books. Learn how in /seed - ru: ✋ Сохрани наследие, раздавай книги нуждающимся. Узнай как в /seed - weight: 25 - - texts: - en: ⤴️ Stay tuned with us at @{related_channel} and [Twitter]({twitter_contact_url}) - es: ⤴️ Mantente en contacto con nosotros en @{related_channel} y [Twitter]({twitter_contact_url}) - it: ⤴️ Resta aggiornato con noi su @{related_channel} e [Twitter]({twitter_contact_url}) - pb: ⤴️ Fique ligado conosco em @{related_channel} e [Twitter]({twitter_contact_url}) - ru: ⤴️ Оставайся на связи с нами на @{related_channel} и в [Twitter]({twitter_contact_url}) - weight: 25 diff --git a/nexus/bot/handlers/close.py b/nexus/bot/handlers/close.py index caf6f5a..815f260 100644 --- a/nexus/bot/handlers/close.py +++ b/nexus/bot/handlers/close.py @@ -2,6 +2,7 @@ import asyncio import time from library.telegram.base import RequestContext +from library.telegram.utils import safe_execution from nexus.translations import t from telethon import events @@ -36,5 +37,6 @@ class CloseHandler(BaseCallbackQueryHandler): target_events.append(reply_message.delete()) target_events.append(message.delete()) else: - target_events.append(event.answer(t('DELETION_FORBIDDEN_DUE_TO_AGE'))) + async with safe_execution(is_logging_enabled=False): + await event.answer(t('DELETION_FORBIDDEN_DUE_TO_AGE')) await asyncio.gather(*target_events) diff --git a/nexus/bot/handlers/download.py b/nexus/bot/handlers/download.py index c0e66e9..4de2ac0 100644 --- a/nexus/bot/handlers/download.py +++ b/nexus/bot/handlers/download.py @@ -1,4 +1,5 @@ from library.telegram.base import RequestContext +from library.telegram.utils import safe_execution from nexus.hub.proto.delivery_service_pb2 import \ StartDeliveryResponse as StartDeliveryResponsePb from nexus.translations import t @@ -45,14 +46,16 @@ class DownloadHandler(BaseCallbackQueryHandler): bot_name=request_context.bot_name, ) if start_delivery_response_pb.status == StartDeliveryResponsePb.Status.ALREADY_DOWNLOADING: - await event.answer( - f'{t("ALREADY_DOWNLOADING", request_context.chat.language)}', - ) + async with safe_execution(is_logging_enabled=False): + await event.answer( + f'{t("ALREADY_DOWNLOADING", request_context.chat.language)}', + ) await remove_button(event, '⬇️', and_empty_too=True) elif start_delivery_response_pb.status == StartDeliveryResponsePb.Status.TOO_MANY_DOWNLOADS: - await event.answer( - f'{t("TOO_MANY_DOWNLOADS", request_context.chat.language)}', - ) + async with safe_execution(is_logging_enabled=False): + await event.answer( + f'{t("TOO_MANY_DOWNLOADS", request_context.chat.language)}', + ) else: await remove_button(event, '⬇️', and_empty_too=True) self.application.user_manager.last_widget[request_context.chat.chat_id] = None diff --git a/nexus/bot/handlers/profile.py b/nexus/bot/handlers/profile.py index 661a7cc..1cf92be 100644 --- a/nexus/bot/handlers/profile.py +++ b/nexus/bot/handlers/profile.py @@ -61,7 +61,7 @@ class ProfileHandler(BaseHandler): target_events.append(profile_reply_message.reply(rendered_widget, buttons=buttons, link_preview=False)) else: target_events.append(event.reply(rendered_widget, buttons=buttons, link_preview=False)) - return asyncio.gather(*target_events) + return await asyncio.gather(*target_events) class DigestHandler(BaseHandler): @@ -114,6 +114,7 @@ class DigestHandler(BaseHandler): document_holders=document_holders, bot_name=bot_name, header='✨ Nexus Discovery ✨', + promotioner=self.application.promotioner, ) view, buttons = await document_list_widget.render() diff --git a/nexus/bot/handlers/roll.py b/nexus/bot/handlers/roll.py index 5981a63..5f375e3 100644 --- a/nexus/bot/handlers/roll.py +++ b/nexus/bot/handlers/roll.py @@ -39,10 +39,7 @@ class RollHandler(BaseHandler): if random_documents: holder = BaseHolder.create_from_document(random_documents[0]) - promo = self.application.promotioner.choose_promotion(language).format( - related_channel=self.application.config['telegram']['related_channel'], - twitter_contact_url=self.application.config['twitter']['contact_url'], - ) + promo = self.application.promotioner.choose_promotion(language) view = holder.view_builder(language).add_view(bot_name=bot_name).add_new_line(2).add(promo, escaped=True).build() buttons_builder = holder.buttons_builder(language) @@ -54,5 +51,5 @@ class RollHandler(BaseHandler): request_context.statbox(action='show', duration=time.time() - start_time) await event.respond(view, buttons=buttons_builder.build()) - async with safe_execution(error_log=request_context.error_log, level=logging.DEBUG): + async with safe_execution(is_logging_enabled=False): await event.delete() diff --git a/nexus/bot/handlers/search.py b/nexus/bot/handlers/search.py index 2099631..50ce5cf 100644 --- a/nexus/bot/handlers/search.py +++ b/nexus/bot/handlers/search.py @@ -210,6 +210,7 @@ class SearchEditHandler(BaseSearchHandler): if request_context.is_group_mode() and not search_prefix: return + if request_context.is_personal_mode() and search_prefix: query = event.raw_text @@ -288,7 +289,7 @@ class SearchPagingHandler(BaseCallbackQueryHandler): ) serp, buttons = await search_widget.render(message_id=message_id) - return await asyncio.gather( - event.answer(), - message.edit(serp, buttons=buttons, link_preview=False) - ) + + await message.edit(serp, buttons=buttons, link_preview=False) + async with safe_execution(is_logging_enabled=False): + await event.answer() diff --git a/nexus/bot/handlers/submit.py b/nexus/bot/handlers/submit.py index 34d5706..0a9188c 100644 --- a/nexus/bot/handlers/submit.py +++ b/nexus/bot/handlers/submit.py @@ -47,13 +47,13 @@ class SubmitHandler(BaseHandler): reply_to = reply_message.id doi_hint = self.get_doi_hint(message=message, reply_message=reply_message) - doi_hint_priority = '⚡' in message.raw_text + skip_analysis = '⚡️' in message.raw_text user_id = message.sender_id request_context.statbox( action='analyzed', mode='submit', doi_hint=doi_hint, - doi_hint_priority=doi_hint_priority, + skip_analysis=skip_analysis, reply_to=reply_to, ) @@ -71,12 +71,12 @@ class SubmitHandler(BaseHandler): request_id=request_context.request_id, session_id=session_id, doi_hint=doi_hint, - doi_hint_priority=doi_hint_priority, + skip_analysis=skip_analysis, uploader_id=user_id, ) case 'application/zip': - try: - if request_context.is_personal_mode(): + if request_context.is_personal_mode(): + try: file_data = await self.application.telegram_client.download_document( document=event.document, file=bytes, @@ -105,10 +105,8 @@ class SubmitHandler(BaseHandler): session_id=session_id, uploader_id=user_id, ) - else: - await event.reply(t('ZIP_FILES_ARE_NOT_SUPPORTED_IN_GROUP_MODE', request_context.chat.language)) - finally: - return await event.delete() + finally: + return await event.delete() case _: request_context.statbox(action='unknown_file_format') request_context.error_log(UnknownFileFormatError(format=event.document.mime_type)) diff --git a/nexus/bot/handlers/view.py b/nexus/bot/handlers/view.py index b36557a..d562091 100644 --- a/nexus/bot/handlers/view.py +++ b/nexus/bot/handlers/view.py @@ -85,10 +85,7 @@ class ViewHandler(BaseHandler): holder = BaseHolder.create(typed_document_pb=typed_document_pb) back_command = await self.compose_back_command(session_id=session_id, message_id=message_id, page=page) - promo = self.application.promotioner.choose_promotion(language).format( - related_channel=self.application.config['telegram']['related_channel'], - twitter_contact_url=self.application.config['twitter']['contact_url'], - ) + promo = self.application.promotioner.choose_promotion(language) view_builder = holder.view_builder(language).add_view( bot_name=self.application.config['telegram']['bot_name'] ).add_new_line(2).add(promo, escaped=True) diff --git a/nexus/bot/widgets/search_widget.py b/nexus/bot/widgets/search_widget.py index c3fc7ad..8d2c284 100644 --- a/nexus/bot/widgets/search_widget.py +++ b/nexus/bot/widgets/search_widget.py @@ -154,10 +154,7 @@ class SearchWidget(BaseSearchWidget): ) promotion_language = self.query_language or self.chat.language - promo = self.application.promotioner.choose_promotion(promotion_language).format( - related_channel=self.application.config['telegram']['related_channel'], - twitter_contact_url=self.application.config['twitter']['contact_url'], - ) + promo = self.application.promotioner.choose_promotion(promotion_language) serp = f'{serp}\n\n{promo}\n' buttons = None diff --git a/nexus/hub/aioclient/aioclient.py b/nexus/hub/aioclient/aioclient.py index 17b0e8f..8985ddb 100644 --- a/nexus/hub/aioclient/aioclient.py +++ b/nexus/hub/aioclient/aioclient.py @@ -58,7 +58,7 @@ class HubGrpcClient(BaseGrpcClient): bot_name: str, reply_to: Optional[int] = None, doi_hint: Optional[str] = None, - doi_hint_priority: bool = False, + skip_analysis: bool = False, request_id: Optional[str] = None, session_id: Optional[str] = None, uploader_id: Optional[int] = None @@ -68,7 +68,7 @@ class HubGrpcClient(BaseGrpcClient): bot_name=bot_name, reply_to=reply_to, doi_hint=doi_hint, - doi_hint_priority=doi_hint_priority, + skip_analysis=skip_analysis, uploader_id=uploader_id, ) if isinstance(file, submitter_service_pb2.PlainFile): diff --git a/nexus/hub/configs/pylon.yaml b/nexus/hub/configs/pylon.yaml index 9ec777b..5091ed1 100644 --- a/nexus/hub/configs/pylon.yaml +++ b/nexus/hub/configs/pylon.yaml @@ -4,6 +4,7 @@ pylon: - [cambridge] - [edinburg] - [southampton] + default_resolver_proxy_list: ~ downloads_directory: /downloads proxies: - address: clash.default.svc.cluster.example.com:7890 @@ -15,6 +16,9 @@ pylon: - address: clash.default.svc.cluster.example.com:8090 name: southampton tags: ['southampton'] + - address: socks5://clash.default.svc.cluster.example.com:7991 + name: socks5 + tags: ['socks5'] sources: # LibGen.rocks - driver: @@ -331,6 +335,13 @@ pylon: args: format_string: 'https://journals.physiology.org/doi/pdf/{doi}?download=true' class: nexus.pylon.resolvers.TemplateResolver + # www.ahajournals.org + - matcher: + doi: ^10.1161/.*$ + resolver: + args: + format_string: 'https://www.ahajournals.org/doi/pdf/{doi}?download=true' + class: nexus.pylon.resolvers.TemplateResolver # ajp.psychiatryonline.org - matcher: doi: ^10.1176/.*$ diff --git a/nexus/hub/proto/submitter_service.proto b/nexus/hub/proto/submitter_service.proto index 4c20e4d..7457a9d 100644 --- a/nexus/hub/proto/submitter_service.proto +++ b/nexus/hub/proto/submitter_service.proto @@ -23,7 +23,7 @@ message SubmitRequest { string bot_name = 4; optional int64 reply_to = 5; optional string doi_hint = 6; - bool doi_hint_priority = 7; + bool skip_analysis = 7; int64 uploader_id = 8; } message SubmitResponse { } diff --git a/nexus/hub/services/base.py b/nexus/hub/services/base.py index c94a748..0ff6939 100644 --- a/nexus/hub/services/base.py +++ b/nexus/hub/services/base.py @@ -1,5 +1,6 @@ import asyncio +from aiobaseclient.exceptions import BadRequestError from library.aiogrpctools.base import BaseService from library.telegram.common import close_button from nexus.views.telegram.common import vote_button @@ -16,8 +17,39 @@ def is_group_or_channel(chat_id: int): return chat_id < 0 +class ProcessedDocument: + def __init__(self, processed_document): + self.processed_document = processed_document + + @staticmethod + async def setup(file_data, grobid_client, request_context): + try: + processed_document = await grobid_client.process_fulltext_document(pdf_file=file_data) + except BadRequestError as e: + request_context.statbox(action='unparsable_document') + request_context.error_log(e) + processed_document = {} + return ProcessedDocument(processed_document) + + @property + def doi(self): + return self.processed_document.get('doi') + + @property + def title(self): + return self.processed_document.get('title') + + @property + def abstract(self): + return self.processed_document.get('abstract') + + @property + def body(self): + return self.processed_document.get('body') + + class BaseHubService(BaseService): - async def item_found(self, bot_name, doi): + async def found_item(self, bot_name, doi): if mutual_aid_service := self.application.mutual_aid_services.get(bot_name): await mutual_aid_service.delete_request(doi) await self.application.idm_client.reschedule_subscriptions( @@ -36,13 +68,13 @@ class BaseHubService(BaseService): ) )) - def set_fields_from_processed(self, document_pb, processed_document): + def set_fields_from_processed(self, document_pb, processed_document: ProcessedDocument): new_fields = [] - if processed_document.get('abstract') and not document_pb.abstract: - document_pb.abstract = processed_document['abstract'] + if processed_document.abstract and not document_pb.abstract: + document_pb.abstract = processed_document.abstract new_fields.append('abstract') - if processed_document.get('body') and not document_pb.content: - document_pb.content = processed_document['body'] + if processed_document.body and not document_pb.content: + document_pb.content = processed_document.body new_fields.append('content') return new_fields diff --git a/nexus/hub/services/delivery.py b/nexus/hub/services/delivery.py index e817398..91f0519 100644 --- a/nexus/hub/services/delivery.py +++ b/nexus/hub/services/delivery.py @@ -46,6 +46,7 @@ from pypika import ( from .base import ( BaseHubService, + ProcessedDocument, is_group_or_channel, ) @@ -76,6 +77,7 @@ class DeliveryService(delivery_service_pb2_grpc.DeliveryServicer, BaseHubService proxies=pylon_config['proxies'], source_configs=pylon_config['sources'], default_driver_proxy_list=pylon_config['default_driver_proxy_list'], + default_resolver_proxy_list=pylon_config['default_resolver_proxy_list'], downloads_directory=pylon_config['downloads_directory'], ) self.should_parse_with_grobid = should_parse_with_grobid @@ -216,11 +218,12 @@ class DownloadTask: error_log=request_context.error_log, on_fail=_on_fail, ): + filename = document_holder.get_filename() progress_bar_download = ProgressBar( telegram_client=self.application.telegram_clients[request_context.bot_name], request_context=request_context, banner=t("LOOKING_AT", request_context.chat.language), - header=f'⬇️ {document_holder.get_filename()}', + header=f'⬇️ {filename}', tail_text=t('TRANSMITTED_FROM', request_context.chat.language), throttle_secs=throttle_secs, ) @@ -239,6 +242,10 @@ class DownloadTask: ) if not document_holder.md5 and document_holder.get_extension() == 'pdf': try: + await progress_bar_download.send_message( + t("PROCESSING_PAPER", request_context.chat.language).format(filename=filename), + ignore_last_call=True + ) file = clean_metadata(file, doi=document_holder.doi) request_context.statbox( action='cleaned', @@ -251,7 +258,7 @@ class DownloadTask: request_context=request_context, message=progress_bar_download.message, banner=t("LOOKING_AT", request_context.chat.language), - header=f'⬇️ {document_holder.get_filename()}', + header=f'⬇️ {filename}', tail_text=t('UPLOADED_TO_TELEGRAM', request_context.chat.language), throttle_secs=throttle_secs ) @@ -264,7 +271,7 @@ class DownloadTask: voting=not is_group_or_channel(self.request_context.chat.chat_id), ) if self.document_holder.doi: - await self.delivery_service.item_found( + await self.delivery_service.found_item( bot_name=request_context.bot_name, doi=self.document_holder.doi, ) @@ -277,6 +284,7 @@ class DownloadTask: document_holder=document_holder, telegram_file_id=uploaded_message.file.id, file=file, + request_context=request_context, )) else: request_context.statbox( @@ -425,7 +433,7 @@ class DownloadTask: self.task.cancel() await self.task - async def store_new_data(self, bot_name, document_holder, telegram_file_id, file): + async def store_new_data(self, bot_name, document_holder, telegram_file_id, file, request_context): document_pb = document_holder.document_pb new_fields = [] if self.delivery_service.should_store_hashes: @@ -448,7 +456,11 @@ class DownloadTask: and document_holder.index_alias == 'scimag' ): try: - processed_document = await self.application.grobid_client.process_fulltext_document(pdf_file=file) + processed_document = await ProcessedDocument.setup( + file, + grobid_client=self.application.grobid_client, + request_context=request_context, + ) new_fields += self.delivery_service.set_fields_from_processed(document_pb, processed_document) except BadRequestError as e: self.request_context.statbox(action='unparsable_document') diff --git a/nexus/hub/services/submitter.py b/nexus/hub/services/submitter.py index d45c94a..56d7830 100644 --- a/nexus/hub/services/submitter.py +++ b/nexus/hub/services/submitter.py @@ -34,7 +34,10 @@ from nexus.views.telegram.base_holder import ScimagHolder from telethon.errors import ChatAdminRequiredError from telethon.extensions import BinaryReader -from .base import BaseHubService +from .base import ( + BaseHubService, + ProcessedDocument, +) async def operation_log(document_operation_pb): @@ -87,22 +90,48 @@ class PlainFile: def fuzzy_compare(a, b): - if a is None or b is None: - return False a = re.sub(r'[^a-z\d]', '', a.lower()) b = re.sub(r'[^a-z\d]', '', b.lower()) return SequenceMatcher(None, a, b).ratio() > 0.9 -async def delayed_task(task, seconds): - await asyncio.sleep(seconds) - await task - - class SubmitterService(submitter_service_pb2_grpc.SubmitterServicer, BaseHubService): async def start(self): submitter_service_pb2_grpc.add_SubmitterServicer_to_server(self, self.application.server) + def wrap_request_file(self, request, request_context): + match str(request.WhichOneof('file')): + case 'plain': + return PlainFile(request.plain) + case 'telegram': + return TelegramFile(self.application.telegram_clients[request_context.bot_name], request.telegram) + case _: + raise RuntimeError(f"Unknown file type {request.WhichOneof('file')}") + + async def retrieve_metadata(self, doi, title, session_id, request_context): + if doi: + meta_search_response = await self.application.meta_api_client.meta_search( + index_aliases=['scimag', ], + query=doi, + collectors=[{'top_docs': {'limit': 1}}], + session_id=session_id, + request_id=request_context.request_id, + user_id=str(request_context.chat.chat_id), + query_tags=['submitter'], + ) + scored_documents = meta_search_response.collector_outputs[0].top_docs.scored_documents + if len(scored_documents) == 1: + scimag_pb = scimag_pb2.Scimag(**json.loads(scored_documents[0].document)) + if title is not None and not fuzzy_compare(scimag_pb.title, title): + request_context.statbox( + action='mismatched_title', + doi=doi, + processed_title=title, + title=scimag_pb.title, + ) + return None + return scimag_pb + @aiogrpc_request_wrapper(log=False) async def submit( self, @@ -125,17 +154,10 @@ class SubmitterService(submitter_service_pb2_grpc.SubmitterServicer, BaseHubServ ) buttons = None if request_context.is_group_mode() else [close_button()] + wrapped_file = self.wrap_request_file(request, request_context) - match str(request.WhichOneof('file')): - case 'plain': - file = PlainFile(request.plain) - case 'telegram': - file = TelegramFile(self.application.telegram_clients[request_context.bot_name], request.telegram) - case _: - raise RuntimeError(f"Unknown file type {request.WhichOneof('file')}") - - if file.size > 30 * 1024 * 1024: - request_context.error_log(FileTooBigError(size=file.size)) + if wrapped_file.size > 300 * 1024 * 1024: + request_context.error_log(FileTooBigError(size=wrapped_file.size)) request_context.statbox(action='file_too_big') async with safe_execution(error_log=request_context.error_log): await self.application.telegram_clients[request_context.bot_name].send_message( @@ -149,109 +171,59 @@ class SubmitterService(submitter_service_pb2_grpc.SubmitterServicer, BaseHubServ try: processing_message = await self.application.telegram_clients[request_context.bot_name].send_message( request_context.chat.chat_id, - t("PROCESSING_PAPER", request_context.chat.language).format(filename=file.filename), + t("PROCESSING_PAPER", request_context.chat.language).format(filename=wrapped_file.filename), reply_to=request.reply_to, ) except ChatAdminRequiredError: return submitter_service_pb2.SubmitResponse() try: - file_data = await file.read() - processed_document = None - pdf_doi = None - pdf_title = None - try: - processed_document = await self.application.grobid_client.process_fulltext_document(pdf_file=file_data) - pdf_doi = processed_document.get('doi') - pdf_title = processed_document.get('title') - request_context.add_default_fields(pdf_doi=pdf_doi) - except BadRequestError as e: - request_context.statbox(action='unparsable_document') - request_context.error_log(e) - if not request.doi_hint: - await self.application.telegram_clients[request_context.bot_name].send_message( - request_context.chat.chat_id, - t('UNPARSABLE_DOCUMENT_ERROR', request_context.chat.language).format( - filename=file.filename, - ), - buttons=buttons, - reply_to=request.reply_to, - ) - return submitter_service_pb2.SubmitResponse() + file_data = await wrapped_file.read() + if not request.skip_analysis: + processed_document = await ProcessedDocument.setup( + file_data, + grobid_client=self.application.grobid_client, + request_context=request_context, + ) + else: + processed_document = ProcessedDocument({}) - if request.doi_hint and pdf_doi != request.doi_hint: - request_context.statbox(action='mismatched_doi', doi_hint_priority=request.doi_hint_priority) - if request.doi_hint_priority: - pdf_doi = request.doi_hint - - if not pdf_doi and not request.doi_hint: + if not processed_document.doi and not request.doi_hint: request_context.statbox(action='unparsable_doi') request_context.error_log(UnparsableDoiError()) await self.application.telegram_clients[request_context.bot_name].send_message( request_context.chat.chat_id, t('UNPARSABLE_DOI_ERROR', request_context.chat.language).format( - filename=file.filename, + filename=wrapped_file.filename, ), buttons=buttons, reply_to=request.reply_to, ) return submitter_service_pb2.SubmitResponse() - scimag_pb = None - - if pdf_doi: - meta_search_response = await self.application.meta_api_client.meta_search( - index_aliases=['scimag',], - query=pdf_doi, - collectors=[{'top_docs': {'limit': 1}}], - session_id=session_id, - request_id=request_context.request_id, - user_id=str(request_context.chat.chat_id), - query_tags=['submitter'], - ) - scored_documents = meta_search_response.collector_outputs[0].top_docs.scored_documents - if len(scored_documents) == 1: - scimag_pb = scimag_pb2.Scimag(**json.loads(scored_documents[0].document)) - if not fuzzy_compare(scimag_pb.title, pdf_title): - request_context.statbox( - action='mismatched_title', - doi=pdf_doi, - pdf_title=pdf_title, - title=scimag_pb.title, - ) - scimag_pb = None - + scimag_pb = await self.retrieve_metadata( + processed_document.doi, + processed_document.title, + session_id=session_id, + request_context=request_context, + ) if not scimag_pb and request.doi_hint: - meta_search_response = await self.application.meta_api_client.meta_search( - index_aliases=['scimag', ], - query=request.doi_hint, - collectors=[{'top_docs': {'limit': 1}}], + scimag_pb = await self.retrieve_metadata( + request.doi_hint, + processed_document.title, session_id=session_id, - request_id=request_context.request_id, - user_id=str(request_context.chat.chat_id), - query_tags=['submitter'], + request_context=request_context, ) - scored_documents = meta_search_response.collector_outputs[0].top_docs.scored_documents - if len(scored_documents) == 1: - scimag_pb = scimag_pb2.Scimag(**json.loads(scored_documents[0].document)) - if not fuzzy_compare(scimag_pb.title, pdf_title): - request_context.statbox( - action='mismatched_title', - doi=request.doi_hint, - pdf_title=pdf_title, - title=scimag_pb.title, - ) - # ToDo: add trust mechanics if not scimag_pb: request_context.statbox(action='unavailable_metadata') - request_context.error_log(UnavailableMetadataError(doi=pdf_doi)) + request_context.error_log(UnavailableMetadataError(doi=processed_document.doi)) await self.application.telegram_clients[request_context.bot_name].send_message( request_context.chat.chat_id, t( 'UNAVAILABLE_METADATA_ERROR', language=request_context.chat.language - ).format(doi=pdf_doi or request.doi_hint), + ).format(doi=processed_document.doi or request.doi_hint), buttons=buttons, reply_to=request.reply_to, ) @@ -260,10 +232,7 @@ class SubmitterService(submitter_service_pb2_grpc.SubmitterServicer, BaseHubServ request_context.add_default_fields(doi=scimag_pb.doi, document_id=scimag_pb.id) try: file_data = clean_metadata(file_data, doi=scimag_pb.doi) - request_context.statbox( - action='cleaned', - len=len(file_data), - ) + request_context.statbox(action='cleaned', len=len(file_data)) except ValueError as e: request_context.error_log(e) uploaded_message = await self.send_file( @@ -276,13 +245,13 @@ class SubmitterService(submitter_service_pb2_grpc.SubmitterServicer, BaseHubServ if processed_document: sharience_pb = sharience_pb2.Sharience( - abstract=processed_document.get('abstract', ''), - content=processed_document.get('body', ''), + abstract=processed_document.abstract or '', + content=processed_document.body or '', parent_id=scimag_pb.id, uploader_id=request.uploader_id or request_context.chat.chat_id, updated_at=int(time.time()), md5=hashlib.md5(file_data).hexdigest(), - filesize=file.size, + filesize=wrapped_file.size, ipfs_multihashes=await self.get_ipfs_hashes(file=file_data), ) update_sharience_pb = operation_pb2.DocumentOperation( @@ -313,13 +282,13 @@ class SubmitterService(submitter_service_pb2_grpc.SubmitterServicer, BaseHubServ await operation_log(store_telegram_file_id_operation_pb) request_context.statbox(action='successfully_stored') - if file.message_id: + if wrapped_file.message_id: async with safe_execution(error_log=request_context.error_log, level=logging.DEBUG): await self.application.telegram_clients[request_context.bot_name].delete_messages( request_context.chat.chat_id, - file.message_id, + wrapped_file.message_id, ) - await self.item_found(bot_name=request_context.bot_name, doi=scimag_pb.doi) + await self.found_item(bot_name=request_context.bot_name, doi=scimag_pb.doi) finally: await processing_message.delete() return submitter_service_pb2.SubmitResponse() diff --git a/nexus/meta_api/main.py b/nexus/meta_api/main.py index a40f28f..d2b6351 100644 --- a/nexus/meta_api/main.py +++ b/nexus/meta_api/main.py @@ -45,7 +45,7 @@ from nexus.meta_api.word_transformers import ( ) -def create_query_transformer(valid_fields, invalid_fields): +def create_query_transformer(valid_fields, invalid_fields, order_by_valid_fields): return QueryProcessor( tree_transformers=[ OrderByTreeTransformer( @@ -55,14 +55,7 @@ def create_query_transformer(valid_fields, invalid_fields): 'pr': 'page_rank', 'refc': 'referenced_by_count', }, - valid_fields=frozenset([ - 'id', - 'referenced_by_count', - 'issued_at', - 'page_rank', - 'pages', - 'updated_at' - ]) + valid_fields=frozenset(order_by_valid_fields) ), FieldTreeTransformer( field_aliases={ @@ -135,20 +128,35 @@ class GrpcServer(AioGrpcServer): 'doi', 'ipfs_multihashes', 'issns', 'isbns', 'issued_at', 'language', 'original_id', 'page_rank', 'referenced_by_count', 'references', 'tags', 'title', 'year', } + order_by_scimag_fields = { + 'id', + 'referenced_by_count', + 'issued_at', + 'page_rank', + 'updated_at' + } scitech_fields = { 'id', 'authors', 'doi', 'description', 'extension', 'ipfs_multihashes', 'isbns', 'issued_at', 'language', 'original_id', 'pages', 'tags', 'title', 'updated_at', 'year', } + order_by_scitech_fields = { + 'id', + 'issued_at', + 'pages', + 'updated_at' + } self.query_transformers = { 'scimag': create_query_transformer( valid_fields=scimag_fields, invalid_fields=scitech_fields.difference(scimag_fields), + order_by_valid_fields=order_by_scimag_fields, ), 'scitech': create_query_transformer( valid_fields=scitech_fields, invalid_fields=scimag_fields.difference(scitech_fields), + order_by_valid_fields=order_by_scitech_fields, ) } self.summa_client = SummaClient( diff --git a/nexus/meta_api/services/base.py b/nexus/meta_api/services/base.py index c4f507a..5cd2650 100644 --- a/nexus/meta_api/services/base.py +++ b/nexus/meta_api/services/base.py @@ -31,7 +31,6 @@ class BaseService(LibraryBaseService): new_scored_documents = [] for scored_document in scored_documents: document = json.loads(scored_document.document) - document = self.enrich_document_with_stat_provider(document) new_scored_documents.append(nexus_meta_api_search_service_pb.ScoredDocument( typed_document=typed_document_pb2.TypedDocument( **{scored_document.index_alias: self.pb_registry[scored_document.index_alias](**document)}, @@ -46,7 +45,6 @@ class BaseService(LibraryBaseService): new_scored_documents = [] for position, document in enumerate(documents): document = json.loads(document) - document = self.enrich_document_with_stat_provider(document) new_scored_documents.append(nexus_meta_api_search_service_pb.ScoredDocument( typed_document=TypedDocumentPb( **{index_alias: self.pb_registry[index_alias](**document)}, @@ -55,14 +53,3 @@ class BaseService(LibraryBaseService): score=1.0, )) return new_scored_documents - - def enrich_document_with_stat_provider(self, document): - if self.stat_provider: - original_id = ( - document.get('original_id') - or document['id'] - ) - download_stats = self.stat_provider.get_download_stats(original_id) - if download_stats and download_stats.downloads_count: - document['downloads_count'] = download_stats.downloads_count - return document diff --git a/nexus/meta_api/services/documents.py b/nexus/meta_api/services/documents.py index c731247..4561f3d 100644 --- a/nexus/meta_api/services/documents.py +++ b/nexus/meta_api/services/documents.py @@ -57,19 +57,6 @@ class DocumentsService(DocumentsServicer, BaseService): document_pb = getattr(typed_document_pb, typed_document_pb.WhichOneof('document')) - if hasattr(document_pb, 'original_id') and document_pb.original_id: - original_document_pb = await self.get_document( - index_alias=request.index_alias, - document_id=document_pb.original_id, - context=context, - request_id=metadata['request-id'], - session_id=metadata['session-id'], - ) - for to_remove in ('doi', 'fiction_id', 'filesize', 'libgen_id',): - original_document_pb.ClearField(to_remove) - original_document_pb.MergeFrom(document_pb) - document_pb = original_document_pb - logging.getLogger('query').info({ 'action': 'get', 'cache_hit': False, diff --git a/nexus/meta_api/services/search.py b/nexus/meta_api/services/search.py index 01eee7b..7f5a93f 100644 --- a/nexus/meta_api/services/search.py +++ b/nexus/meta_api/services/search.py @@ -270,6 +270,10 @@ class SearchService(SearchServicer, BaseService): @aiogrpc_request_wrapper(log=False) async def search(self, request, context, metadata): preprocessed_query = await self.process_query(query=request.query, languages=request.language, context=context) + logging.getLogger('debug').info({ + 'action': 'preprocess_query', + 'preprocessed_query': str(preprocessed_query), + }) index_aliases = self.resolve_index_aliases( request_index_aliases=request.index_aliases, processed_query=preprocessed_query, @@ -280,19 +284,27 @@ class SearchService(SearchServicer, BaseService): right_offset = left_offset + page_size search_requests = [] + processed_queries = {} for index_alias in index_aliases: - processed_query = self.query_transformers[index_alias].apply_tree_transformers(preprocessed_query) + processed_queries[index_alias] = self.query_transformers[index_alias].apply_tree_transformers(preprocessed_query) + logging.getLogger('debug').info({ + 'action': 'process_query', + 'index_alias': index_alias, + 'processed_query': str(processed_queries[index_alias]), + 'order_by': processed_queries[index_alias].context.order_by, + 'has_invalid_fields': processed_queries[index_alias].context.has_invalid_fields, + }) search_requests.append( SearchRequest( index_alias=index_alias, - query=processed_query.to_summa_query(), + query=processed_queries[index_alias].to_summa_query(), collectors=[ search_service_pb2.Collector( top_docs=search_service_pb2.TopDocsCollector( limit=50, - scorer=self.scorer(processed_query, index_alias), + scorer=self.scorer(processed_queries[index_alias], index_alias), snippets=self.snippets[index_alias], - explain=processed_query.context.explain, + explain=processed_queries[index_alias].context.explain, ) ), search_service_pb2.Collector(count=search_service_pb2.CountCollector()) @@ -322,9 +334,9 @@ class SearchService(SearchServicer, BaseService): meta_search_response.collector_outputs[0].top_docs.scored_documents, ) has_next = len(new_scored_documents) > right_offset - if 'scimag' in index_aliases: + if 'scimag' in processed_queries: await self.check_if_need_new_documents_by_dois( - requested_dois=processed_query.context.dois, + requested_dois=processed_queries['scimag'].context.dois, scored_documents=new_scored_documents, should_request=attempt.retry_state.attempt_number == 1 ) @@ -333,7 +345,7 @@ class SearchService(SearchServicer, BaseService): scored_documents=new_scored_documents[left_offset:right_offset], has_next=has_next, count=meta_search_response.collector_outputs[1].count.count, - query_language=processed_query.context.query_language, + query_language=preprocessed_query.context.query_language, ) return search_response_pb diff --git a/nexus/pipe/configs/base.yaml b/nexus/pipe/configs/base.yaml index 7900787..0b24d04 100644 --- a/nexus/pipe/configs/base.yaml +++ b/nexus/pipe/configs/base.yaml @@ -6,7 +6,7 @@ pipe: kafka-0.example.net schema: - consumers: - - class: nexus.pipe.consumers.CrossReferencesBulkConsumer + - class: nexus.pipe.consumers.CrossReferencesConsumer topics: - name: cross_references workers: 4 diff --git a/nexus/pipe/consumers/__init__.py b/nexus/pipe/consumers/__init__.py index 25a1bd6..7fd6652 100644 --- a/nexus/pipe/consumers/__init__.py +++ b/nexus/pipe/consumers/__init__.py @@ -1,17 +1,11 @@ -from .cross_references_consumer import ( - CrossReferencesBulkConsumer, - CrossReferencesConsumer, -) +from .cross_references_consumer import CrossReferencesConsumer from .document_operations_consumer import ( - DocumentOperationsBulkConsumer, DocumentOperationsConsumer, DocumentOperationsJsonConsumer, ) __all__ = [ - 'CrossReferencesBulkConsumer', 'CrossReferencesConsumer', 'DocumentOperationsConsumer', - 'DocumentOperationsBulkConsumer', 'DocumentOperationsJsonConsumer', ] diff --git a/nexus/pipe/consumers/base.py b/nexus/pipe/consumers/base.py index e711074..b19319d 100644 --- a/nexus/pipe/consumers/base.py +++ b/nexus/pipe/consumers/base.py @@ -66,9 +66,10 @@ class BaseConsumer(AioRootThing): except (ConflictError, InterruptProcessing) as e: logging.getLogger('statbox').info(e) except (asyncio.CancelledError, ConsumerStoppedError): - pass + return finally: await consumer.stop() + asyncio.create_task(self.stop()) async def start(self): logging.getLogger('statbox').info({ @@ -87,8 +88,10 @@ class BaseConsumer(AioRootThing): async def stop(self): if self.consumer_task: - self.consumer_task.cancel() - await self.consumer_task + consumer_task = self.consumer_task + self.consumer_task = None + consumer_task.cancel() + await consumer_task class BasePbConsumer(BaseConsumer): @@ -108,52 +111,3 @@ class BaseJsonConsumer(BaseConsumer): message = json.loads(msg.value) ParseDict(message, pb, ignore_unknown_fields=True) return pb - - -class BaseBulkConsumer(BaseConsumer): - auto_commit = False - bulk_size = 20 - timeout = 1 - - async def consume(self, consumer): - try: - while self.started: - try: - result = await consumer.getmany(timeout_ms=self.timeout * 1000, max_records=self.bulk_size) - except (ConsumerStoppedError, asyncio.CancelledError): - break - collector = [] - for tp, messages in result.items(): - if messages: - for message in messages: - preprocessed_msg = self.preprocess(message) - if preprocessed_msg: - collector.append(preprocessed_msg) - for processor in self.processors: - filtered = filter(processor.filter, collector) - try: - await processor.process_bulk(filtered) - except InterruptProcessing as e: - logging.getLogger('statbox').info(e) - try: - await consumer.commit() - except CommitFailedError as e: - error_log(e) - continue - finally: - await consumer.stop() - - async def start(self): - logging.getLogger('statbox').info({ - 'action': 'start', - 'group_id': self.group_id, - 'topic_names': self.topic_names, - }) - consumer = self.create_consumer() - await consumer.start() - logging.getLogger('statbox').info({ - 'action': 'started', - 'group_id': self.group_id, - 'topic_names': self.topic_names, - }) - self.consumer_task = asyncio.create_task(self.consume(consumer)) diff --git a/nexus/pipe/consumers/cross_references_consumer.py b/nexus/pipe/consumers/cross_references_consumer.py index d745b03..91ddcf5 100644 --- a/nexus/pipe/consumers/cross_references_consumer.py +++ b/nexus/pipe/consumers/cross_references_consumer.py @@ -1,15 +1,8 @@ from nexus.models.proto.operation_pb2 import \ CrossReferenceOperation as CrossReferenceOperationPb -from .base import ( - BaseBulkConsumer, - BasePbConsumer, -) +from .base import BasePbConsumer class CrossReferencesConsumer(BasePbConsumer): pb_class = CrossReferenceOperationPb - - -class CrossReferencesBulkConsumer(BaseBulkConsumer, CrossReferencesConsumer): - pass diff --git a/nexus/pipe/consumers/document_operations_consumer.py b/nexus/pipe/consumers/document_operations_consumer.py index 05a9169..492a99e 100644 --- a/nexus/pipe/consumers/document_operations_consumer.py +++ b/nexus/pipe/consumers/document_operations_consumer.py @@ -2,7 +2,6 @@ from nexus.models.proto.operation_pb2 import \ DocumentOperation as DocumentOperationPb from .base import ( - BaseBulkConsumer, BaseJsonConsumer, BasePbConsumer, ) @@ -14,7 +13,3 @@ class DocumentOperationsConsumer(BasePbConsumer): class DocumentOperationsJsonConsumer(BaseJsonConsumer): pb_class = DocumentOperationPb - - -class DocumentOperationsBulkConsumer(BaseBulkConsumer, DocumentOperationsConsumer): - pass diff --git a/nexus/pylon/client.py b/nexus/pylon/client.py index df46d2d..9d3fbab 100644 --- a/nexus/pylon/client.py +++ b/nexus/pylon/client.py @@ -22,12 +22,14 @@ class PylonClient(AioThing): source_configs: Optional[List], proxies: Optional[List[str]] = None, downloads_directory: Optional[str] = None, - default_driver_proxy_list: [Optional[List]] = None + default_driver_proxy_list: [Optional[List]] = None, + default_resolver_proxy_list: [Optional[List]] = None, ): super().__init__() self.proxy_manager = ProxyManager(proxies) self.downloads_directory = downloads_directory self.default_driver_proxy_list = default_driver_proxy_list + self.default_resolver_proxy_list = default_resolver_proxy_list self.sources = [] for source_config in source_configs: source = Source.from_config( @@ -35,6 +37,7 @@ class PylonClient(AioThing): source_config=source_config, downloads_directory=downloads_directory, default_driver_proxy_list=default_driver_proxy_list, + default_resolver_proxy_list=default_resolver_proxy_list, ) self.sources.append(source) self.starts.append(source) diff --git a/nexus/pylon/configs/pylon.yaml b/nexus/pylon/configs/pylon.yaml index a455776..ed96b83 100644 --- a/nexus/pylon/configs/pylon.yaml +++ b/nexus/pylon/configs/pylon.yaml @@ -138,6 +138,7 @@ pylon: resolver: args: format_string: 'https://www.sciencedirect.com/science/article/pii/{selected}/pdfft?isDTMRedir=true&download=true' + resolve_timeout: 25.0 selector: '(.resource.primary.URL | split("/"))[-1]' timeout: 40.0 class: nexus.pylon.resolvers.DoiOrgRequestResolver diff --git a/nexus/pylon/drivers/base.py b/nexus/pylon/drivers/base.py index d59863c..96fde80 100644 --- a/nexus/pylon/drivers/base.py +++ b/nexus/pylon/drivers/base.py @@ -26,7 +26,7 @@ class BaseDriver(NetworkAgent): validator_cls = validator['class'] validator_cls = import_object(validator_cls) - self.validator = validator_cls or BaseValidator + self.validator = validator_cls self.downloads_directory = downloads_directory def __str__(self): diff --git a/nexus/pylon/drivers/browser.py b/nexus/pylon/drivers/browser.py index 8f86458..8d4ad25 100644 --- a/nexus/pylon/drivers/browser.py +++ b/nexus/pylon/drivers/browser.py @@ -3,7 +3,6 @@ import json import logging import os.path import shutil -import sys import time from pathlib import Path from typing import ( diff --git a/nexus/pylon/matcher.py b/nexus/pylon/matcher.py index 9797fa4..45cf385 100644 --- a/nexus/pylon/matcher.py +++ b/nexus/pylon/matcher.py @@ -1,4 +1,5 @@ import re +import sys class Matcher: diff --git a/nexus/pylon/resolvers/doi_org_request.py b/nexus/pylon/resolvers/doi_org_request.py index e0c2b81..24f5d94 100644 --- a/nexus/pylon/resolvers/doi_org_request.py +++ b/nexus/pylon/resolvers/doi_org_request.py @@ -11,6 +11,11 @@ import jq from nexus.pylon.prepared_request import PreparedRequest from nexus.pylon.proxy_manager import ProxyManager from nexus.pylon.resolvers.base import BaseResolver +from tenacity import ( + retry, + stop_after_attempt, + wait_random, +) class DoiOrgRequestResolver(BaseResolver): @@ -24,6 +29,7 @@ class DoiOrgRequestResolver(BaseResolver): proxy_manager: Optional[ProxyManager] = None, ): super().__init__(proxy_list=proxy_list, proxy_manager=proxy_manager) + self.text_selector = selector self.selector = jq.compile(selector) self.format_string = format_string self.timeout = timeout @@ -32,6 +38,11 @@ class DoiOrgRequestResolver(BaseResolver): def __str__(self): return f'{self.__class__.__name__}(selector = {self.selector}, format_string = {self.format_string})' + @retry( + reraise=True, + wait=wait_random(min=1, max=3), + stop=stop_after_attempt(4), + ) async def resolve_through_doi_org(self, params): async with self.get_session() as session: doi_url = f'https://doi.org/{params["doi"]}' @@ -51,6 +62,7 @@ class DoiOrgRequestResolver(BaseResolver): logging.getLogger('error').error({ 'action': 'error', 'mode': 'pylon', + 'params': params, 'error': str(e) }) return @@ -60,3 +72,11 @@ class DoiOrgRequestResolver(BaseResolver): url=self.format_string.format(selected=selected), timeout=self.timeout, ) + else: + logging.getLogger('debug').error({ + 'action': 'missed_selector', + 'mode': 'pylon', + 'params': params, + 'selector': self.text_selector, + 'format_string': self.format_string, + }) diff --git a/nexus/pylon/source.py b/nexus/pylon/source.py index 24efe4a..3a6be68 100644 --- a/nexus/pylon/source.py +++ b/nexus/pylon/source.py @@ -33,13 +33,17 @@ class Source(AioThing): source_config, downloads_directory: str, default_driver_proxy_list: List, + default_resolver_proxy_list: List, ) -> 'Source': matcher = Matcher(source_config['matcher']) resolver_cls = import_object( source_config.get('resolver', {}).get('class', 'nexus.pylon.resolvers.TemplateResolver') ) - resolver_args = dict(proxy_manager=proxy_manager) + resolver_args = dict( + proxy_manager=proxy_manager, + proxy_list=default_resolver_proxy_list, + ) resolver_args.update(**source_config.get('resolver', {}).get('args', {})) resolver = resolver_cls(**resolver_args) diff --git a/nexus/translations/translations.yaml b/nexus/translations/translations.yaml index 45bc5e8..593a53a 100644 --- a/nexus/translations/translations.yaml +++ b/nexus/translations/translations.yaml @@ -4,7 +4,7 @@ en: ABOUT_US: | **About us** - Among the most impactful inventions of humanity such as the wheel, semiconductors or the wing were the invention of writing and advent of mass printing. Uwe of printing press made possible wide spread of ideas and knowledge. This burst increased the number of educated people and in its turn people started the Age of Enlightenment and shaped modern civilization. + Among the most impactful inventions of humanity such as the wheel, semiconductors or the wing were the invention of writing and advent of mass printing. Use of printing press made possible wide spread of ideas and knowledge. This burst increased the number of educated people and in its turn people started the Age of Enlightenment and shaped modern civilization. Why printing provoked such dramatic changes in society? Sane beings and knowledge live in a natural symbiosis: knowledge are fruiting and growing while circulated among people and people do the same. We may even note that complexity of human civilization, its achievements and technological progress during all its history have been correlated with the amount of accumulated knowledge and possibility to share and navigate through it. @@ -14,7 +14,7 @@ en: However, there is one remaining issue: knowledge is usurped by large publishers, corporations such as Elsevier, Springer, Wiley, T&F etc. Held by copyright, the knowledge remains out of reach for many researchers and for many enterprises that could launch the new Age of Enlightenment. Knowledge is not just usurped, an entire system has been built which is putting in chains researchers, academia and readers: - - Large publishers promote and lobby approaches that encourage evaluation of researchers using the number of published articles in journals having high-impact. Everybody knows who owns journals of high "impact" + - Large publishers promote and lobby approaches that encourage evaluation of researchers using the number of published articles in journals having high-impact - Publishers make authors to pay for publishing tax-funded researches, then readers to pay for access to published tax-funded researches, while peer-reviewing is done for free by other researchers and this activity is considered as "honorable" in academia - Publishers such as Elsevier repeatedly carried and carry campaigns against open access diff --git a/nexus/views/telegram/document_list_widget.py b/nexus/views/telegram/document_list_widget.py index a2cf4d4..d2f2e70 100644 --- a/nexus/views/telegram/document_list_widget.py +++ b/nexus/views/telegram/document_list_widget.py @@ -17,6 +17,7 @@ class DocumentListWidget: document_holders: List[BaseHolder], bot_name, header: Optional[str] = None, + promotioner=None, has_next: bool = False, session_id: Optional[str] = None, message_id: Optional[int] = None, @@ -29,6 +30,7 @@ class DocumentListWidget: self.document_holders = document_holders self.bot_name = bot_name self.header = header + self.promotioner = promotioner self.cmd = cmd self.has_next = has_next self.session_id = session_id @@ -57,6 +59,10 @@ class DocumentListWidget: if self.header: serp = f'**{self.header}**\n\n{serp}' + promotion_language = self.chat.language + promo = self.promotioner.choose_promotion(promotion_language) + serp = f'{serp}\n\n{promo}\n' + buttons = [] if self.cmd and self.message_id and self.session_id and (self.has_next or self.page > 0): buttons = [ diff --git a/nexus/views/telegram/progress_bar.py b/nexus/views/telegram/progress_bar.py index d2914f6..5d1bb6c 100644 --- a/nexus/views/telegram/progress_bar.py +++ b/nexus/views/telegram/progress_bar.py @@ -100,9 +100,9 @@ class ProgressBar: async def show_banner(self): return await self.send_message(await self.render_banner(), ignore_last_call=True) - async def callback(self, done, total): + async def callback(self, done, total, ignore_last_call=False): self._set_progress(done, total) - return await self.send_message(await self.render_progress()) + return await self.send_message(await self.render_progress(), ignore_last_call=ignore_last_call) class ThrottlerWrapper: diff --git a/rules/python/requirements-lock.txt b/rules/python/requirements-lock.txt index 98c8b30..4308082 100644 --- a/rules/python/requirements-lock.txt +++ b/rules/python/requirements-lock.txt @@ -139,7 +139,7 @@ spacy-loggers==1.0.3 SQLAlchemy==1.4.39 sqlparse==0.4.2 srsly==2.4.4 -Telethon==1.24.0 +Telethon==1.25.0 tenacity==8.0.1 termcolor==1.1.0 textblob==0.17.1 From 52d3985ec54cf0bf7d2ed7e967af84afbac4a684 Mon Sep 17 00:00:00 2001 From: the-superpirate Date: Tue, 6 Sep 2022 20:15:34 +0300 Subject: [PATCH 4/5] - [promotions] Export GitOrigin-RevId: 9450124ab0308c005508e24418e3c1753ea2fdba --- nexus/bot/application.py | 3 ++- nexus/bot/configs/base.yaml | 3 ++- nexus/promotions/BUILD.bazel | 15 +++++++++++++ nexus/promotions/__init__.py | 8 +++++++ nexus/promotions/promotions.yaml | 36 ++++++++++++++++++++++++++++++++ 5 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 nexus/promotions/BUILD.bazel create mode 100644 nexus/promotions/__init__.py create mode 100644 nexus/promotions/promotions.yaml diff --git a/nexus/bot/application.py b/nexus/bot/application.py index 7b815db..1b472e5 100644 --- a/nexus/bot/application.py +++ b/nexus/bot/application.py @@ -33,8 +33,9 @@ class TelegramApplication(AioRootThing): self.promotioner = Promotioner( promotions=get_promotions(), promotion_vars=dict( - related_channel=self.config['telegram']['related_channel'], + mutual_aid_group=self.config['telegram']['mutual_aid_group'], twitter_contact_url=self.config['twitter']['contact_url'], + related_channel=self.config['telegram']['related_channel'], ) ) self.user_manager = UserManager() diff --git a/nexus/bot/configs/base.yaml b/nexus/bot/configs/base.yaml index 285476f..4336080 100644 --- a/nexus/bot/configs/base.yaml +++ b/nexus/bot/configs/base.yaml @@ -100,7 +100,8 @@ telegram: - nexus.bot.handlers.search.SearchEditHandler - nexus.bot.handlers.search.SearchPagingHandler - nexus.bot.handlers.search.InlineSearchHandler + mutual_aid_group: nexus_aaron # Channel that will be shown in /help, /howtohelp and in promotions - related_channel: 'nexus_search' + related_channel: nexus_search twitter: contact_url: https://twitter.com/the_superpirate diff --git a/nexus/promotions/BUILD.bazel b/nexus/promotions/BUILD.bazel new file mode 100644 index 0000000..57f4422 --- /dev/null +++ b/nexus/promotions/BUILD.bazel @@ -0,0 +1,15 @@ +load("@rules_python//python:defs.bzl", "py_library") + +py_library( + name = "promotions", + srcs = glob( + ["**/*.py"], + exclude = ["tests/**"], + ), + data = ["promotions.yaml"], + srcs_version = "PY3", + visibility = ["//visibility:public"], + deps = [ + "//library/configurator", + ], +) diff --git a/nexus/promotions/__init__.py b/nexus/promotions/__init__.py new file mode 100644 index 0000000..4bd76b0 --- /dev/null +++ b/nexus/promotions/__init__.py @@ -0,0 +1,8 @@ +from library.configurator import Configurator + + +def get_promotions(): + return Configurator(['nexus/promotions/promotions.yaml'])['promotions'] + + +promotions = get_promotions() diff --git a/nexus/promotions/promotions.yaml b/nexus/promotions/promotions.yaml new file mode 100644 index 0000000..0c8b20b --- /dev/null +++ b/nexus/promotions/promotions.yaml @@ -0,0 +1,36 @@ +--- + +promotions: + - texts: + en: 💬 The victory of humanity is inevitable + weight: 1 + - texts: + en: 💬 Shall build Standard Template Construct + weight: 1 + - texts: + en: 💬 Gaining knowledge is the only purpose of life + weight: 1 + - texts: + en: 💬 Knowledge cannot belong + weight: 1 + - texts: + en: 💬 Obey the path of discovery + weight: 1 + - texts: + en: 💬 Research is the only and ultimate goal + weight: 1 + - texts: + en: ✋ Have a subscription to paid articles? [Help researchers!](https://t.me/{mutual_aid_group}) + ru: ✋ Есть доступ к платным статьям? [Помоги ученым!](https://t.me/{mutual_aid_group}) + weight: 25 + - texts: + en: ✋ Help us, become a seeder of books. Learn how in /seed + ru: ✋ Сохрани наследие, раздавай книги нуждающимся. Узнай как в /seed + weight: 25 + - texts: + en: ⤴️ Stay tuned with us at @{related_channel} and [Twitter]({twitter_contact_url}) + es: ⤴️ Mantente en contacto con nosotros en @{related_channel} y [Twitter]({twitter_contact_url}) + it: ⤴️ Resta aggiornato con noi su @{related_channel} e [Twitter]({twitter_contact_url}) + pb: ⤴️ Fique ligado conosco em @{related_channel} e [Twitter]({twitter_contact_url}) + ru: ⤴️ Оставайся на связи с нами на @{related_channel} и в [Twitter]({twitter_contact_url}) + weight: 25 From 1c8ff8c566c7d95769a8d749543e1c55a906714d Mon Sep 17 00:00:00 2001 From: the-superpirate Date: Tue, 6 Sep 2022 20:17:59 +0300 Subject: [PATCH 5/5] - [promotions] Export GitOrigin-RevId: 62be510265ff1927146b28686c287cafbc8bb28a --- nexus/bot/BUILD.bazel | 1 - 1 file changed, 1 deletion(-) diff --git a/nexus/bot/BUILD.bazel b/nexus/bot/BUILD.bazel index 10f7aad..b8666ac 100644 --- a/nexus/bot/BUILD.bazel +++ b/nexus/bot/BUILD.bazel @@ -16,7 +16,6 @@ py3_image( data = [ "configs/base.yaml", "configs/logging.yaml", - "configs/promotions.yaml", ], main = "main.py", srcs_version = "PY3ONLY",